/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@linusborg/vue-simple-portal/dist/index.esm.js": /*!*********************************************************************!*\ !*** ./node_modules/@linusborg/vue-simple-portal/dist/index.esm.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Portal: () => (/* binding */ Portal), /* harmony export */ config: () => (/* binding */ config), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ setSelector: () => (/* binding */ setSelector) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var nanoid_non_secure__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! nanoid/non-secure */ "./node_modules/nanoid/non-secure/index.js"); /** * vue-simple-portal * version: 0.1.5, * (c) Thorsten Lünborg, 2021 - present * LICENCE: Apache-2.0 * http://github.com/linusborg/vue-simple-portal */ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var config = { selector: "vue-portal-target-".concat((0,nanoid_non_secure__WEBPACK_IMPORTED_MODULE_0__.nanoid)()) }; var setSelector = function setSelector(selector) { return config.selector = selector; }; var isBrowser = typeof window !== 'undefined' && (typeof document === "undefined" ? "undefined" : _typeof(document)) !== undefined; var TargetContainer = vue__WEBPACK_IMPORTED_MODULE_1__["default"].extend({ // as an abstract component, it doesn't appear in // the $parent chain of components. // which means the next parent of any component rendered inside of this oen // will be the parent from which is was sent // @ts-expect-error abstract: true, name: 'PortalOutlet', props: ['nodes', 'tag'], data: function data(vm) { return { updatedNodes: vm.nodes }; }, render: function render(h) { var nodes = this.updatedNodes && this.updatedNodes(); if (!nodes) return h(); return nodes.length === 1 && !nodes[0].text ? nodes : h(this.tag || 'DIV', nodes); }, destroyed: function destroyed() { var el = this.$el; el && el.parentNode.removeChild(el); } }); var Portal = vue__WEBPACK_IMPORTED_MODULE_1__["default"].extend({ name: 'VueSimplePortal', props: { disabled: { type: Boolean }, prepend: { type: Boolean }, selector: { type: String, default: function _default() { return "#".concat(config.selector); } }, tag: { type: String, default: 'DIV' } }, render: function render(h) { if (this.disabled) { var nodes = this.$scopedSlots && this.$scopedSlots.default(); if (!nodes) return h(); return nodes.length < 2 && !nodes[0].text ? nodes : h(this.tag, nodes); } return h(); }, created: function created() { if (!this.getTargetEl()) { this.insertTargetEl(); } }, updated: function updated() { var _this = this; // We only update the target container component // if the scoped slot function is a fresh one // The new slot syntax (since Vue 2.6) can cache unchanged slot functions // and we want to respect that here. this.$nextTick(function () { if (!_this.disabled && _this.slotFn !== _this.$scopedSlots.default) { _this.container.updatedNodes = _this.$scopedSlots.default; } _this.slotFn = _this.$scopedSlots.default; }); }, beforeDestroy: function beforeDestroy() { this.unmount(); }, watch: { disabled: { immediate: true, handler: function handler(disabled) { disabled ? this.unmount() : this.$nextTick(this.mount); } } }, methods: { // This returns the element into which the content should be mounted. getTargetEl: function getTargetEl() { if (!isBrowser) return; return document.querySelector(this.selector); }, insertTargetEl: function insertTargetEl() { if (!isBrowser) return; var parent = document.querySelector('body'); var child = document.createElement(this.tag); child.id = this.selector.substring(1); parent.appendChild(child); }, mount: function mount() { if (!isBrowser) return; var targetEl = this.getTargetEl(); var el = document.createElement('DIV'); if (this.prepend && targetEl.firstChild) { targetEl.insertBefore(el, targetEl.firstChild); } else { targetEl.appendChild(el); } this.container = new TargetContainer({ el: el, parent: this, propsData: { tag: this.tag, nodes: this.$scopedSlots.default } }); }, unmount: function unmount() { if (this.container) { this.container.$destroy(); delete this.container; } } } }); function install(_Vue) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; _Vue.component(options.name || 'portal', Portal); if (options.defaultSelector) { setSelector(options.defaultSelector); } } if (typeof window !== 'undefined' && window.Vue && window.Vue === vue__WEBPACK_IMPORTED_MODULE_1__["default"]) { // plugin was inlcuded directly in a browser vue__WEBPACK_IMPORTED_MODULE_1__["default"].use(install); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (install); /***/ }), /***/ "./node_modules/@mapbox/hast-util-table-cell-style/index.js": /*!******************************************************************!*\ !*** ./node_modules/@mapbox/hast-util-table-cell-style/index.js ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var visit = __webpack_require__(/*! unist-util-visit */ "./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit/index.js"); var hasOwnProperty = Object.prototype.hasOwnProperty; var hastCssPropertyMap = { align: 'text-align', valign: 'vertical-align', height: 'height', width: 'width', }; module.exports = function tableCellStyle(node) { visit(node, 'element', visitor); return node; }; function visitor(node) { if (node.tagName !== 'tr' && node.tagName !== 'td' && node.tagName !== 'th') { return; } var hastName; var cssName; for (hastName in hastCssPropertyMap) { if ( !hasOwnProperty.call(hastCssPropertyMap, hastName) || node.properties[hastName] === undefined ) { continue; } cssName = hastCssPropertyMap[hastName]; appendStyle(node, cssName, node.properties[hastName]); delete node.properties[hastName]; } } function appendStyle(node, property, value) { var prevStyle = (node.properties.style || '').trim(); if (prevStyle && !/;\s*/.test(prevStyle)) { prevStyle += ';'; } if (prevStyle) { prevStyle += ' '; } var nextStyle = prevStyle + property + ': ' + value + ';'; node.properties.style = nextStyle; } /***/ }), /***/ "./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-is/convert.js": /*!***********************************************************************************************!*\ !*** ./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-is/convert.js ***! \***********************************************************************************************/ /***/ ((module) => { "use strict"; module.exports = convert function convert(test) { if (typeof test === 'string') { return typeFactory(test) } if (test === null || test === undefined) { return ok } if (typeof test === 'object') { return ('length' in test ? anyFactory : matchesFactory)(test) } if (typeof test === 'function') { return test } throw new Error('Expected function, string, or object as test') } function convertAll(tests) { var results = [] var length = tests.length var index = -1 while (++index < length) { results[index] = convert(tests[index]) } return results } // Utility assert each property in `test` is represented in `node`, and each // values are strictly equal. function matchesFactory(test) { return matches function matches(node) { var key for (key in test) { if (node[key] !== test[key]) { return false } } return true } } function anyFactory(tests) { var checks = convertAll(tests) var length = checks.length return matches function matches() { var index = -1 while (++index < length) { if (checks[index].apply(this, arguments)) { return true } } return false } } // Utility to convert a string into a function which checks a given node’s type // for said string. function typeFactory(test) { return type function type(node) { return Boolean(node && node.type === test) } } // Utility to return true. function ok() { return true } /***/ }), /***/ "./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit-parents/index.js": /*!********************************************************************************************************!*\ !*** ./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit-parents/index.js ***! \********************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; module.exports = visitParents var convert = __webpack_require__(/*! unist-util-is/convert */ "./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-is/convert.js") var CONTINUE = true var SKIP = 'skip' var EXIT = false visitParents.CONTINUE = CONTINUE visitParents.SKIP = SKIP visitParents.EXIT = EXIT function visitParents(tree, test, visitor, reverse) { var is if (typeof test === 'function' && typeof visitor !== 'function') { reverse = visitor visitor = test test = null } is = convert(test) one(tree, null, []) // Visit a single node. function one(node, index, parents) { var result = [] var subresult if (!test || is(node, index, parents[parents.length - 1] || null)) { result = toResult(visitor(node, parents)) if (result[0] === EXIT) { return result } } if (node.children && result[0] !== SKIP) { subresult = toResult(all(node.children, parents.concat(node))) return subresult[0] === EXIT ? subresult : result } return result } // Visit children in `parent`. function all(children, parents) { var min = -1 var step = reverse ? -1 : 1 var index = (reverse ? children.length : min) + step var result while (index > min && index < children.length) { result = one(children[index], index, parents) if (result[0] === EXIT) { return result } index = typeof result[1] === 'number' ? result[1] : index + step } } } function toResult(value) { if (value !== null && typeof value === 'object' && 'length' in value) { return value } if (typeof value === 'number') { return [CONTINUE, value] } return [value] } /***/ }), /***/ "./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit/index.js": /*!************************************************************************************************!*\ !*** ./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit/index.js ***! \************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; module.exports = visit var visitParents = __webpack_require__(/*! unist-util-visit-parents */ "./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit-parents/index.js") var CONTINUE = visitParents.CONTINUE var SKIP = visitParents.SKIP var EXIT = visitParents.EXIT visit.CONTINUE = CONTINUE visit.SKIP = SKIP visit.EXIT = EXIT function visit(tree, test, visitor, reverse) { if (typeof test === 'function' && typeof visitor !== 'function') { reverse = visitor visitor = test test = null } visitParents(tree, test, overload, reverse) function overload(node, parents) { var parent = parents[parents.length - 1] var index = parent ? parent.children.indexOf(node) : null return visitor(node, index, parent) } } /***/ }), /***/ "./node_modules/@nextcloud/auth/dist/index.js": /*!****************************************************!*\ !*** ./node_modules/@nextcloud/auth/dist/index.js ***! \****************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var eventBus = __webpack_require__(/*! @nextcloud/event-bus */ "./node_modules/@nextcloud/event-bus/dist/index.cjs"); var token = undefined; var observers = []; /** * Get current request token * * @return {string|null} Current request token or null if not set */ function getRequestToken() { if (token === undefined) { // Only on first load, try to get token from document var tokenElement = document === null || document === void 0 ? void 0 : document.getElementsByTagName('head')[0]; token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null; } return token; } /** * Add an observer which is called when the CSRF token changes * * @param observer The observer */ function onRequestTokenUpdate(observer) { observers.push(observer); } // Listen to server event and keep token in sync eventBus.subscribe('csrf-token-update', function (e) { token = e.token; observers.forEach(function (observer) { try { observer(e.token); } catch (e) { console.error('error updating CSRF token observer', e); } }); }); var getAttribute = function (el, attribute) { if (el) { return el.getAttribute(attribute); } return null; }; var currentUser = undefined; function getCurrentUser() { if (currentUser !== undefined) { return currentUser; } var head = document === null || document === void 0 ? void 0 : document.getElementsByTagName('head')[0]; if (!head) { return null; } // No user logged in so cache and return null var uid = getAttribute(head, 'data-user'); if (uid === null) { currentUser = null; return currentUser; } currentUser = { uid: uid, displayName: getAttribute(head, 'data-user-displayname'), isAdmin: !!window._oc_isadmin, }; return currentUser; } exports.getCurrentUser = getCurrentUser; exports.getRequestToken = getRequestToken; exports.onRequestTokenUpdate = onRequestTokenUpdate; //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@nextcloud/axios/node_modules/@nextcloud/router/dist/index.js": /*!************************************************************************************!*\ !*** ./node_modules/@nextcloud/axios/node_modules/@nextcloud/router/dist/index.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.generateUrl = exports.generateRemoteUrl = exports.generateOcsUrl = exports.generateFilePath = void 0; exports.getAppRootUrl = getAppRootUrl; exports.getRootUrl = getRootUrl; exports.linkTo = exports.imagePath = void 0; __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); /** * Get an url with webroot to a file in an app * * @param {string} app the id of the app the file belongs to * @param {string} file the file path relative to the app folder * @return {string} URL with webroot to a file */ const linkTo = (app, file) => generateFilePath(app, '', file); /** * Creates a relative url for remote use * * @param {string} service id * @return {string} the url */ exports.linkTo = linkTo; const linkToRemoteBase = service => getRootUrl() + '/remote.php/' + service; /** * @brief Creates an absolute url for remote use * @param {string} service id * @return {string} the url */ const generateRemoteUrl = service => window.location.protocol + '//' + window.location.host + linkToRemoteBase(service); /** * Get the base path for the given OCS API service * * @param {string} url OCS API service url * @param {object} params parameters to be replaced into the service url * @param {UrlOptions} options options for the parameter replacement * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true) * @param {Number} options.ocsVersion OCS version to use (defaults to 2) * @return {string} Absolute path for the OCS URL */ exports.generateRemoteUrl = generateRemoteUrl; const generateOcsUrl = (url, params, options) => { const allOptions = Object.assign({ ocsVersion: 2 }, options || {}); const version = allOptions.ocsVersion === 1 ? 1 : 2; return window.location.protocol + '//' + window.location.host + getRootUrl() + '/ocs/v' + version + '.php' + _generateUrlPath(url, params, options); }; exports.generateOcsUrl = generateOcsUrl; /** * Generate a url path, which can contain parameters * * Parameters will be URL encoded automatically * * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token * @param {object} params parameters to be replaced into the address * @param {UrlOptions} options options for the parameter replacement * @return {string} Path part for the given URL */ const _generateUrlPath = (url, params, options) => { const allOptions = Object.assign({ escape: true }, options || {}); const _build = function (text, vars) { vars = vars || {}; return text.replace(/{([^{}]*)}/g, function (a, b) { var r = vars[b]; if (allOptions.escape) { return typeof r === 'string' || typeof r === 'number' ? encodeURIComponent(r.toString()) : encodeURIComponent(a); } else { return typeof r === 'string' || typeof r === 'number' ? r.toString() : a; } }); }; if (url.charAt(0) !== '/') { url = '/' + url; } return _build(url, params || {}); }; /** * Generate the url with webroot for the given relative url, which can contain parameters * * Parameters will be URL encoded automatically * * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token * @param {object} params parameters to be replaced into the url * @param {UrlOptions} options options for the parameter replacement * @param {boolean} options.noRewrite True if you want to force index.php being added * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true) * @return {string} URL with webroot for the given relative URL */ const generateUrl = (url, params, options) => { var _window; const allOptions = Object.assign({ noRewrite: false }, options || {}); if (((_window = window) === null || _window === void 0 || (_window = _window.OC) === null || _window === void 0 || (_window = _window.config) === null || _window === void 0 ? void 0 : _window.modRewriteWorking) === true && !allOptions.noRewrite) { return getRootUrl() + _generateUrlPath(url, params, options); } return getRootUrl() + '/index.php' + _generateUrlPath(url, params, options); }; /** * Get the path with webroot to an image file * if no extension is given for the image, it will automatically decide * between .png and .svg based on what the browser supports * * @param {string} app the app id to which the image belongs * @param {string} file the name of the image file * @return {string} */ exports.generateUrl = generateUrl; const imagePath = (app, file) => { if (file.indexOf('.') === -1) { //if no extension is given, use svg return generateFilePath(app, 'img', file + '.svg'); } return generateFilePath(app, 'img', file); }; /** * Get the url with webroot for a file in an app * * @param {string} app the id of the app * @param {string} type the type of the file to link to (e.g. css,img,ajax.template) * @param {string} file the filename * @return {string} URL with webroot for a file in an app */ exports.imagePath = imagePath; const generateFilePath = (app, type, file) => { var _window2; const isCore = ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.OC) === null || _window2 === void 0 || (_window2 = _window2.coreApps) === null || _window2 === void 0 ? void 0 : _window2.indexOf(app)) !== -1; let link = getRootUrl(); if (file.substring(file.length - 3) === 'php' && !isCore) { link += '/index.php/apps/' + app; if (file !== 'index.php') { link += '/'; if (type) { link += encodeURI(type + '/'); } link += file; } } else if (file.substring(file.length - 3) !== 'php' && !isCore) { link = getAppRootUrl(app); if (type) { link += '/' + type + '/'; } if (link.substring(link.length - 1) !== '/') { link += '/'; } link += file; } else { if ((app === 'settings' || app === 'core' || app === 'search') && type === 'ajax') { link += '/index.php/'; } else { link += '/'; } if (!isCore) { link += 'apps/'; } if (app !== '') { app += '/'; link += app; } if (type) { link += type + '/'; } link += file; } return link; }; /** * Return the web root path where this Nextcloud instance * is accessible, with a leading slash. * For example "/nextcloud". * * @return {string} web root path */ exports.generateFilePath = generateFilePath; function getRootUrl() { let webroot = window._oc_webroot; if (typeof webroot === 'undefined') { webroot = location.pathname; const pos = webroot.indexOf('/index.php/'); if (pos !== -1) { webroot = webroot.substr(0, pos); } else { webroot = webroot.substr(0, webroot.lastIndexOf('/')); } } return webroot; } /** * Return the web root path for a given app * @param {string} app The ID of the app */ function getAppRootUrl(app) { var _window$_oc_appswebro, _webroots$app; const webroots = (_window$_oc_appswebro = window._oc_appswebroots) !== null && _window$_oc_appswebro !== void 0 ? _window$_oc_appswebro : {}; return (_webroots$app = webroots[app]) !== null && _webroots$app !== void 0 ? _webroots$app : ''; } //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@nextcloud/capabilities/dist/index.js": /*!************************************************************!*\ !*** ./node_modules/@nextcloud/capabilities/dist/index.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getCapabilities = getCapabilities; var _initialState = __webpack_require__(/*! @nextcloud/initial-state */ "./node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state/dist/index.js"); function getCapabilities() { try { return (0, _initialState.loadState)('core', 'capabilities'); } catch (error) { console.debug('Could not find capabilities initial state fall back to _oc_capabilities'); if (!('_oc_capabilities' in window)) { return {}; } return window['_oc_capabilities']; } } //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state/dist/index.js": /*!**************************************************************************************************!*\ !*** ./node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state/dist/index.js ***! \**************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.loadState = loadState; __webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); /** * @param app app ID, e.g. "mail" * @param key name of the property * @param fallback optional parameter to use as default value * @throws if the key can't be found */ function loadState(app, key, fallback) { var elem = document.querySelector("#initial-state-".concat(app, "-").concat(key)); if (elem === null) { if (fallback !== undefined) { return fallback; } throw new Error("Could not find initial state ".concat(key, " of ").concat(app)); } try { return JSON.parse(atob(elem.value)); } catch (e) { throw new Error("Could not parse initial state ".concat(key, " of ").concat(app)); } } //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@nextcloud/cdav-library/dist/dist.js": /*!***********************************************************!*\ !*** ./node_modules/@nextcloud/cdav-library/dist/dist.js ***! \***********************************************************/ /***/ ((module) => { /*! For license information please see dist.js.LICENSE.txt */ !function(e,t){ true?module.exports=t():0}(self,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{debug:()=>R,default:()=>ne,namespaces:()=>r});var r={};e.r(r),e.d(r,{APPLE:()=>c,CALENDARSERVER:()=>u,DAV:()=>a,IETF_CALDAV:()=>n,IETF_CARDDAV:()=>i,NEXTCLOUD:()=>o,NS_MAP:()=>d,OWNCLOUD:()=>l,SABREDAV:()=>p,resolve:()=>h});class s{constructor(){this._parser={},this._registerDefaultParsers()}canParse(e){return Object.prototype.hasOwnProperty.call(this._parser,e)}parse(e,t,r){const s=`{${t.namespaceURI}}${t.localName}`;if(!this.canParse(s))throw new Error(`Unable to parse unknown property "${s}"`);return this._parser[s](e,t,r)}registerParser(e,t){this._parser[e]=t}unregisterParser(e){delete this._parser[e]}_registerDefaultParsers(){this.registerParser("{DAV:}displayname",s.text),this.registerParser("{DAV:}creationdate",s.text),this.registerParser("{DAV:}getcontentlength",s.decInt),this.registerParser("{DAV:}getcontenttype",s.text),this.registerParser("{DAV:}getcontentlanguage",s.text),this.registerParser("{DAV:}getlastmodified",s.rfc1123Date),this.registerParser("{DAV:}getetag",s.text),this.registerParser("{DAV:}resourcetype",s.resourceType),this.registerParser("{DAV:}inherited-acl-set",s.hrefs),this.registerParser("{DAV:}group",s.href),this.registerParser("{DAV:}owner",s.href),this.registerParser("{DAV:}current-user-privilege-set",s.privileges),this.registerParser("{DAV:}principal-collection-set",s.hrefs),this.registerParser("{DAV:}principal-URL",s.href),this.registerParser("{DAV:}alternate-URI-set",s.hrefs),this.registerParser("{DAV:}group-member-set",s.hrefs),this.registerParser("{DAV:}group-membership",s.hrefs),this.registerParser("{DAV:}current-user-principal",s.currentUserPrincipal),this.registerParser("{DAV:}sync-token",s.text),this.registerParser("{urn:ietf:params:xml:ns:carddav}address-data",s.text),this.registerParser("{urn:ietf:params:xml:ns:carddav}addressbook-description",s.text),this.registerParser("{urn:ietf:params:xml:ns:carddav}supported-address-data",s.addressDataTypes),this.registerParser("{urn:ietf:params:xml:ns:carddav}max-resource-size",s.decInt),this.registerParser("{urn:ietf:params:xml:ns:carddav}addressbook-home-set",s.hrefs),this.registerParser("{urn:ietf:params:xml:ns:carddav}principal-address",s.href),this.registerParser("{urn:ietf:params:xml:ns:carddav}supported-collation-set",s.supportedCardDAVCollations),this.registerParser("{urn:ietf:params:xml:ns:caldav}calendar-data",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}calendar-home-set",s.hrefs),this.registerParser("{urn:ietf:params:xml:ns:caldav}calendar-description",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}calendar-timezone",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set",s.calendarComps),this.registerParser("{urn:ietf:params:xml:ns:caldav}supported-calendar-data",s.calendarDatas),this.registerParser("{urn:ietf:params:xml:ns:caldav}max-resource-size",s.decInt),this.registerParser("{urn:ietf:params:xml:ns:caldav}min-date-time",s.iCalendarTimestamp),this.registerParser("{urn:ietf:params:xml:ns:caldav}max-date-time",s.iCalendarTimestamp),this.registerParser("{urn:ietf:params:xml:ns:caldav}max-instances",s.decInt),this.registerParser("{urn:ietf:params:xml:ns:caldav}max-attendees-per-instance",s.decInt),this.registerParser("{urn:ietf:params:xml:ns:caldav}supported-collation-set",s.supportedCalDAVCollations),this.registerParser("{urn:ietf:params:xml:ns:caldav}schedule-outbox-URL",s.href),this.registerParser("{urn:ietf:params:xml:ns:caldav}schedule-inbox-URL",s.href),this.registerParser("{urn:ietf:params:xml:ns:caldav}calendar-user-address-set",s.hrefs),this.registerParser("{urn:ietf:params:xml:ns:caldav}calendar-user-type",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp",s.scheduleCalendarTransp),this.registerParser("{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL",s.href),this.registerParser("{urn:ietf:params:xml:ns:caldav}schedule-tag",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}timezone-service-set",s.hrefs),this.registerParser("{urn:ietf:params:xml:ns:caldav}calendar-timezone-id",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}calendar-availability",s.text),this.registerParser("{http://apple.com/ns/ical/}calendar-order",s.decInt),this.registerParser("{http://apple.com/ns/ical/}calendar-color",s.color),this.registerParser("{http://calendarserver.org/ns/}source",s.href),this.registerParser("{urn:ietf:params:xml:ns:caldav}default-alarm-vevent-datetime",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}default-alarm-vevent-date",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}default-alarm-vtodo-datetime",s.text),this.registerParser("{urn:ietf:params:xml:ns:caldav}default-alarm-vtodo-date",s.text),this.registerParser("{http://calendarserver.org/ns/}getctag",s.text),this.registerParser("{http://calendarserver.org/ns/}calendar-proxy-read-for",s.hrefs),this.registerParser("{http://calendarserver.org/ns/}calendar-proxy-write-for",s.hrefs),this.registerParser("{http://calendarserver.org/ns/}allowed-sharing-modes",s.allowedSharingModes),this.registerParser("{http://calendarserver.org/ns/}shared-url",s.href),this.registerParser("{http://sabredav.org/ns}owner-principal",s.href),this.registerParser("{http://sabredav.org/ns}read-only",s.bool),this.registerParser("{http://calendarserver.org/ns/}pre-publish-url",s.href),this.registerParser("{http://calendarserver.org/ns/}publish-url",s.href),this.registerParser("{http://owncloud.org/ns}invite",s.ocInvite),this.registerParser("{http://owncloud.org/ns}calendar-enabled",s.bool),this.registerParser("{http://owncloud.org/ns}enabled",s.bool),this.registerParser("{http://owncloud.org/ns}read-only",s.bool),this.registerParser("{http://nextcloud.com/ns}owner-displayname",s.text),this.registerParser("{http://nextcloud.com/ns}deleted-at",s.iso8601DateTime),this.registerParser("{http://nextcloud.com/ns}calendar-uri",s.text),this.registerParser("{http://nextcloud.com/ns}has-photo",s.bool),this.registerParser("{http://nextcloud.com/ns}trash-bin-retention-duration",s.decInt),this.registerParser("{http://nextcloud.com/ns}language",s.text),this.registerParser("{http://nextcloud.com/ns}room-type",s.text),this.registerParser("{http://nextcloud.com/ns}room-seating-capacity",s.decInt),this.registerParser("{http://nextcloud.com/ns}room-building-address",s.text),this.registerParser("{http://nextcloud.com/ns}room-building-story",s.text),this.registerParser("{http://nextcloud.com/ns}room-building-room-number",s.text),this.registerParser("{http://nextcloud.com/ns}room-features",s.text),this.registerParser("{http://sabredav.org/ns}email-address",s.text)}static text(e,t,r){return e.evaluate("string(.)",t,r,XPathResult.ANY_TYPE,null).stringValue}static bool(e,t,r){return"1"===s.text(e,t,r)}static decInt(e,t,r){return parseInt(s.text(e,t,r),10)}static rfc1123Date(e,t,r){const a=s.text(e,t,r);return new Date(a)}static iso8601DateTime(e,t,r){const a=s.text(e,t,r);return new Date(a)}static iCalendarTimestamp(e,t,r){const a=s.text(e,t,r),n=parseInt(a.slice(0,4),10),i=parseInt(a.slice(4,6),10)-1,l=parseInt(a.slice(6,8),10),o=parseInt(a.slice(9,11),10),c=parseInt(a.slice(11,13),10),u=parseInt(a.slice(13,15),10),p=new Date;return p.setUTCFullYear(n,i,l),p.setUTCHours(o,c,u,0),p}static resourceType(e,t,r){const s=[],a=e.evaluate("*",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());){const t=e.evaluate("namespace-uri(.)",n,r,XPathResult.ANY_TYPE,null).stringValue,a=e.evaluate("local-name(.)",n,r,XPathResult.ANY_TYPE,null).stringValue;s.push(`{${t}}${a}`)}return s}static href(e,t,r){return e.evaluate("string(d:href)",t,r,XPathResult.ANY_TYPE,null).stringValue}static hrefs(e,t,r){const s=[],a=e.evaluate("d:href",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());)s.push(e.evaluate("string(.)",n,r,XPathResult.ANY_TYPE,null).stringValue);return s}static privileges(e,t,r){const s=[],a=e.evaluate("d:privilege/*",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());){const t=e.evaluate("namespace-uri(.)",n,r,XPathResult.ANY_TYPE,null).stringValue,a=e.evaluate("local-name(.)",n,r,XPathResult.ANY_TYPE,null).stringValue;s.push(`{${t}}${a}`)}return s}static currentUserPrincipal(e,t,r){return 0!==e.evaluate("count(d:unauthenticated)",t,r,XPathResult.ANY_TYPE,null).numberValue?{type:"unauthenticated",href:null}:{type:"href",href:s.href(...arguments)}}static addressDataTypes(e,t,r){const s=[],a=e.evaluate("cr:address-data-type",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());)s.push({"content-type":e.evaluate("string(@content-type)",n,r,XPathResult.ANY_TYPE,null).stringValue,version:e.evaluate("string(@version)",n,r,XPathResult.ANY_TYPE,null).stringValue});return s}static supportedCardDAVCollations(e,t,r){const s=[],a=e.evaluate("cr:supported-collation",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());)s.push(e.evaluate("string(.)",n,r,XPathResult.ANY_TYPE,null).stringValue);return s}static supportedCalDAVCollations(e,t,r){const s=[],a=e.evaluate("cl:supported-collation",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());)s.push(e.evaluate("string(.)",n,r,XPathResult.ANY_TYPE,null).stringValue);return s}static calendarComps(e,t,r){const s=[],a=e.evaluate("cl:comp",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());)s.push(e.evaluate("string(@name)",n,r,XPathResult.ANY_TYPE,null).stringValue);return s}static calendarDatas(e,t,r){const s=[],a=e.evaluate("cl:calendar-data",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());)s.push({"content-type":e.evaluate("string(@content-type)",n,r,XPathResult.ANY_TYPE,null).stringValue,version:e.evaluate("string(@version)",n,r,XPathResult.ANY_TYPE,null).stringValue});return s}static scheduleCalendarTransp(e,t,r){const s=e.evaluate("cl:opaque | cl:transparent",t,r,XPathResult.ANY_TYPE,null).iterateNext();if(s)return e.evaluate("local-name(.)",s,r,XPathResult.ANY_TYPE,null).stringValue}static color(e,t,r){const a=s.text(e,t,r);return 9===a.length?a.slice(0,7):a}static allowedSharingModes(e,t,r){const s=[],a=e.evaluate("cs:can-be-shared | cs:can-be-published",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());){const t=e.evaluate("namespace-uri(.)",n,r,XPathResult.ANY_TYPE,null).stringValue,a=e.evaluate("local-name(.)",n,r,XPathResult.ANY_TYPE,null).stringValue;s.push(`{${t}}${a}`)}return s}static ocInvite(e,t,r){const a=[],n=e.evaluate("oc:user",t,r,XPathResult.ANY_TYPE,null);let i;for(;null!==(i=n.iterateNext());)a.push({href:s.href(e,i,r),"common-name":e.evaluate("string(oc:common-name)",i,r,XPathResult.ANY_TYPE,null).stringValue,"invite-accepted":1===e.evaluate("count(oc:invite-accepted)",i,r,XPathResult.ANY_TYPE,null).numberValue,access:s.ocAccess(e,i,r)});return a}static ocAccess(e,t,r){const s=[],a=e.evaluate("oc:access/*",t,r,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());){const t=e.evaluate("namespace-uri(.)",n,r,XPathResult.ANY_TYPE,null).stringValue,a=e.evaluate("local-name(.)",n,r,XPathResult.ANY_TYPE,null).stringValue;s.push(`{${t}}${a}`)}return s}}const a="DAV:",n="urn:ietf:params:xml:ns:caldav",i="urn:ietf:params:xml:ns:carddav",l="http://owncloud.org/ns",o="http://nextcloud.com/ns",c="http://apple.com/ns/ical/",u="http://calendarserver.org/ns/",p="http://sabredav.org/ns",d={d:a,cl:n,cr:i,oc:l,nc:o,aapl:c,cs:u,sd:p};function h(e){return d[e]||null}const m=new XMLSerializer;let g={};function y(){if(0===arguments.length)return[{},null];const e={name:arguments[0],children:[]};let t=e.children;return Array.prototype.slice.call(arguments,1).forEach((function(e){const r={name:e,children:[]};t.push(r),t=r.children})),[e,t]}function f(e){if("object"!=typeof(e=e||{})||!Object.prototype.hasOwnProperty.call(e,"name"))return"";const t=document.implementation.createDocument("","",null);return P(t,t,e),m.serializeToString(t)}function P(e,t,r){const[s,a]=r.name,n=e.createElementNS(s,function(e,t){return Object.prototype.hasOwnProperty.call(g,e)||(g[e]="x"+Object.keys(g).length),g[e]+":"+t}(s,a));r.attributes=r.attributes||[],r.attributes.forEach((e=>{if(2===e.length){const[t,r]=e;n.setAttribute(t,r)}else{const[t,r,s]=e;n.setAttributeNS(t,r,s)}})),r.value?n.textContent=r.value:r.children&&r.children.forEach((t=>{P(e,n,t)})),t.appendChild(n)}class v extends Error{constructor(e){super(),Object.assign(this,e)}}class _ extends v{}class b extends v{}class x extends v{}class A extends x{}class w extends x{}class D{constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>new XMLHttpRequest;this.baseUrl=e,this.parser=t,this.xhrProvider=r}async get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("GET",e,t,r,s,a)}async patch(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("PATCH",e,t,r,s,a)}async post(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("POST",e,t,r,s,a)}async put(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("PUT",e,t,r,s,a)}async delete(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("DELETE",e,t,r,s,a)}async copy(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:()=>null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:()=>null;return a.Destination=t,a.Depth=r,a.Overwrite=s?"T":"F",this.request("COPY",e,a,n,i,l)}async move(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:()=>null,i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:()=>null;return s.Destination=t,s.Depth="Infinity",s.Overwrite=r?"T":"F",this.request("MOVE",e,s,a,n,i)}async lock(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("LOCK",e,t,r,s,a)}async unlock(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("UNLOCK",e,t,r,s,a)}async propFind(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:()=>null;s.Depth=r;const[l,o]=y([a,"propfind"],[a,"prop"]);o.push(...t.map((e=>({name:e}))));const c=f(l);return this.request("PROPFIND",e,s,c,n,i)}async propPatch(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("PROPPATCH",e,t,r,s,a)}async mkCol(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("MKCOL",e,t,r,s,a)}async report(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;return this.request("REPORT",e,t,r,s,a)}async request(e,t,r,s){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:()=>null;const i=this.xhrProvider(),l=Object.assign({},{Depth:"0","Content-Type":"application/xml; charset=utf-8"},r);i.open(e,this.absoluteUrl(t),!0);for(const e in l)i.setRequestHeader(e,l[e]);return a(i),null==s?i.send():i.send(s),new Promise(((t,r)=>{i.onreadystatechange=()=>{if(4!==i.readyState)return;n(i);let s=i.response;if(!C(i.status))return i.status>=400&&i.status<500?void r(new w({body:s,status:i.status,xhr:i})):i.status>=500&&i.status<600?void r(new A({body:s,status:i.status,xhr:i})):void r(new x({body:s,status:i.status,xhr:i}));207===i.status&&(s=this._parseMultiStatusResponse(s),0===parseInt(l.Depth,10)&&"PROPFIND"===e&&(s=s[Object.keys(s)[0]])),t({body:s,status:i.status,xhr:i})},i.onerror=()=>r(new b({body:null,status:-1,xhr:i})),i.onabort=()=>r(new _({body:null,status:-1,xhr:i}))}))}filename(e){let t=this.pathname(e);"/"===t.slice(-1)&&(t=t.slice(0,-1));const r=t.lastIndexOf("/");return t.slice(r)}pathname(e){return new URL(e,this.baseUrl).pathname}absoluteUrl(e){return new URL(e,this.baseUrl).href}_parseMultiStatusResponse(e){const t={},r=(new DOMParser).parseFromString(e,"application/xml"),s=r.evaluate("/d:multistatus/d:response",r,h,XPathResult.ANY_TYPE,null);let a;for(;null!==(a=s.iterateNext());){const e=r.evaluate("string(d:href)",a,h,XPathResult.ANY_TYPE,null).stringValue,s={},i=r.evaluate("d:propstat",a,h,XPathResult.ANY_TYPE,null);let l;for(;null!==(l=i.iterateNext());){if(!C((n=r.evaluate("string(d:status)",l,h,XPathResult.ANY_TYPE,null).stringValue,parseInt(n.split(" ")[1],10))))continue;const e=r.evaluate("d:prop/*",l,h,XPathResult.ANY_TYPE,null);let t;for(;null!==(t=e.iterateNext());)this.parser.canParse(`{${t.namespaceURI}}${t.localName}`)&&(s[`{${t.namespaceURI}}${t.localName}`]=this.parser.parse(r,t,h))}t[e]=s}var n;return t}}function C(e){return e>=200&&e<300}function F(e,t){return""!==(e=e||"")&&(e+="-"),""!==(t=t||"")&&(t="."+t),e+"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16).toUpperCase()}))+t}class T{constructor(){this._eventListeners={}}addEventListener(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this._eventListeners[e]=this._eventListeners[e]||[],this._eventListeners[e].push({listener:t,options:r})}removeEventListener(e,t){if(!this._eventListeners[e])return;const r=this._eventListeners[e].findIndex((e=>{let{listener:r}=e;return r===t}));-1!==r&&this._eventListeners[e].splice(r,1)}dispatchEvent(e,t){if(!this._eventListeners[e])return;const r=[],s=[];this._eventListeners[e].forEach((e=>{let{listener:t,options:a}=e;a&&a.once?s.push(t):r.push(t)})),s.forEach((r=>{this.removeEventListener(e,r),r(t)})),r.forEach((e=>{e(t)}))}}function R(e){return function(){if(R.enabled){for(var t=arguments.length,r=new Array(t),s=0;s{let[r,s]=e;"{DAV:}displayname"===r&&t.push({name:[a,"displayname"],value:s})})),t}R.enabled=!1;const V=R("DavObject");class L extends T{constructor(e,t,r,s){let n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];super(),Object.assign(this,{_parent:e,_request:t,_url:r,_props:s,_isPartial:n,_isDirty:!1}),this._exposeProperty("etag",a,"getetag",!0),this._exposeProperty("contenttype",a,"getcontenttype"),Object.defineProperty(this,"url",{get:()=>this._url})}async fetchCompleteData(){if(!(arguments.length>0&&void 0!==arguments[0]&&arguments[0]||this.isPartial()))return;const e=await this._request.propFind(this._url,this.constructor.getPropFindList(),0);this._props=e.body,this._isDirty=!1,this._isPartial=!1}async copy(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(V(`copying ${this.url} from ${this._parent.url} to ${e.url}`),this._parent===e)throw new Error("Copying an object to the collection it's already part of is not supported");if(!this._parent.isSameCollectionTypeAs(e))throw new Error("Copying an object to a collection of a different type is not supported");if(!e.isWriteable())throw new Error("Can not copy object into read-only destination collection");const s=this.url.split("/").splice(-1,1)[0],a=e.url+s;return await this._request.copy(this.url,a,0,t,r),e.find(s)}async move(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(V(`moving ${this.url} from ${this._parent.url} to ${e.url}`),this._parent===e)throw new Error("Moving an object to the collection it's already part of is not supported");if(!this._parent.isSameCollectionTypeAs(e))throw new Error("Moving an object to a collection of a different type is not supported");if(!e.isWriteable())throw new Error("Can not move object into read-only destination collection");const s=this.url.split("/").splice(-1,1)[0],a=e.url+s;await this._request.move(this.url,a,t,r),this._parent=e,this._url=a}async update(){if(this.isPartial()||!this.isDirty()||!this.data)return;const e={};return this.contenttype&&(e["Content-Type"]=`${this.contenttype}; charset=utf-8`),this.etag&&(e["If-Match"]=this.etag),this._request.put(this.url,e,this.data).then((e=>{this._isDirty=!1,this._props["{DAV:}getetag"]=e.xhr.getResponseHeader("etag")})).catch((e=>{throw this._isDirty=!0,e instanceof w&&412===e.status&&(this._isPartial=!0),e}))}async delete(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._request.delete(this.url,e)}isPartial(){return this._isPartial}isDirty(){return this._isDirty}_exposeProperty(e,t,r){arguments.length>3&&void 0!==arguments[3]&&arguments[3]?Object.defineProperty(this,e,{get:()=>this._props[`{${t}}${r}`],set:e=>{this._isDirty=!0,this._props[`{${t}}${r}`]=e}}):Object.defineProperty(this,e,{get:()=>this._props[`{${t}}${r}`]})}static getPropFindList(){return[[a,"getcontenttype"],[a,"getetag"],[a,"resourcetype"]]}}const N=R("DavCollection");class q extends T{constructor(e,t,r,s){super(),"/"!==r.slice(-1)&&(r+="/"),Object.assign(this,{_parent:e,_request:t,_url:r,_props:s,_collectionFactoryMapper:{},_objectFactoryMapper:{},_updatedProperties:[],_childrenNames:[],_propFindList:[],_propSetFactory:[]}),this._registerPropSetFactory(E),this._exposeProperty("displayname",a,"displayname",!0),this._exposeProperty("owner",a,"owner"),this._exposeProperty("resourcetype",a,"resourcetype"),this._exposeProperty("syncToken",a,"sync-token"),this._exposeProperty("currentUserPrivilegeSet",a,"current-user-privilege-set"),Object.defineProperty(this,"url",{get:()=>this._url}),this._propFindList.push(...L.getPropFindList()),this._propFindList.push(...q.getPropFindList())}async findAll(){const e=await this._request.propFind(this._url,this._propFindList,1);return this._handleMultiStatusResponse(e,!1)}async findAllByFilter(e){return(await this.findAll()).filter(e)}async find(e){const t=await this._request.propFind(this._url+e,this._propFindList,0);return t.body={[this._url+e]:t.body},this._handleMultiStatusResponse(t,!1)[0]}async createCollection(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;N("creating a collection"),t||(t=[{name:[a,"resourcetype"],children:[{name:[a,"collection"]}]}]);const[r,s]=y([a,"mkcol"],[a,"set"],[a,"prop"]);s.push(...t);const n=this._getAvailableNameFromToken(e),i=f(r);return await this._request.mkCol(this.url+n,{},i),this.find(n+"/")}async createObject(e,t,r){return N("creating an object"),await this._request.put(this.url+e,t,r),this.find(e)}async update(){if(0===this._updatedProperties.length)return;const e={};this._updatedProperties.forEach((t=>{e[t]=this._props[t]}));const t=this._propSetFactory.reduce(((t,r)=>[...t,...r(e)]),[]),[r,s]=y([a,"propertyupdate"],[a,"set"],[a,"prop"]);s.push(...t);const n=f(r);await this._request.propPatch(this._url,{},n)}async delete(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};await this._request.delete(this._url,e)}isReadable(){return this.currentUserPrivilegeSet.includes("{DAV:}read")}isWriteable(){return this.currentUserPrivilegeSet.includes("{DAV:}write")}isSameCollectionTypeAs(e){const t=this.resourcetype,r=e.resourcetype,s=t.find((e=>-1===r.indexOf(e))),a=r.find((e=>-1===t.indexOf(e)));return void 0===s&&void 0===a}_registerCollectionFactory(e,t){this._collectionFactoryMapper[e]=t,"function"==typeof t.getPropFindList&&this._propFindList.push(...t.getPropFindList())}_registerObjectFactory(e,t){this._objectFactoryMapper[e]=t,"function"==typeof t.getPropFindList&&this._propFindList.push(...t.getPropFindList())}_registerPropSetFactory(e){this._propSetFactory.push(e)}_exposeProperty(e,t,r){arguments.length>3&&void 0!==arguments[3]&&arguments[3]?Object.defineProperty(this,e,{get:()=>this._props[`{${t}}${r}`],set:e=>{this._props[`{${t}}${r}`]=e,-1===this._updatedProperties.indexOf(`{${t}}${r}`)&&this._updatedProperties.push(`{${t}}${r}`)}}):Object.defineProperty(this,e,{get:()=>this._props[`{${t}}${r}`]})}_getAvailableNameFromToken(e){return function(e,t){let r=(e=e||"").toString().toLowerCase().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"");if(""===r&&(r="-"),t(r))return r;if(-1===r.indexOf("-")&&(r+="-1",t(r)))return r;do{const e=r.lastIndexOf("-"),t=r.slice(0,e);let s=r.slice(e+1);s.match(/^\d+$/)?(s=parseInt(s),s++,r=t+"-"+s):r+="-1"}while(!1===t(r));return r}(e,(e=>-1===this._childrenNames.indexOf(this._url+e)&&-1===this._childrenNames.indexOf(this._url+e+"/")))}async _updatePropsFromServer(){const e=await this._request.propFind(this.url,this.constructor.getPropFindList());this._props=e.body}_handleMultiStatusResponse(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=[],s=[];return Object.entries(e.body).forEach((e=>{let[n,i]=e;if(n===this._url||n+"/"===this.url)return;r.push(n);const l=this._request.pathname(n);if(i["{DAV:}resourcetype"]&&0!==i["{DAV:}resourcetype"].length||!i["{DAV:}getcontenttype"]){N(`${n} was identified as a collection`);const e=i["{DAV:}resourcetype"].find((e=>e!==`{${a}}collection`));if(!e)return N(`Collection-type of ${n} was not specified, treating as generic collection`),void s.push(new q(this,this._request,l,i));if(!this._collectionFactoryMapper[e])return N(`No constructor for collection-type ${e} (${n}) registered, treating as generic collection`),void s.push(new q(this,this._request,l,i));s.push(new this._collectionFactoryMapper[e](this,this._request,l,i))}else{N(`${n} was identified as a file`);const e=i["{DAV:}getcontenttype"].split(";")[0];if(!this._objectFactoryMapper[e])return N(`No constructor for content-type ${e} (${n}) registered, treating as generic object`),void s.push(new L(this,this._request,l,i));s.push(new this._objectFactoryMapper[e](this,this._request,l,i,t))}})),this._childrenNames.push(...r),s}static getPropFindList(){return[[a,"displayname"],[a,"owner"],[a,"resourcetype"],[a,"sync-token"],[a,"current-user-privilege-set"]]}}const Y=R("DavCollectionPublishable"),O=R("DavCollectionShareable");function S(e){return class extends e{constructor(){super(...arguments),super._exposeProperty("shares",l,"invite"),super._exposeProperty("allowedSharingModes",u,"allowed-sharing-modes")}async share(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";O(`Sharing ${this.url} with ${e}`);const[s,n]=y([l,"share"],[l,"set"]);n.push({name:[a,"href"],value:e}),t&&n.push({name:[l,"read-write"]}),""!==r&&n.push({name:[l,"summary"],value:r});const i=f(s);return this._request.post(this._url,{"Content-Type":"application/xml; charset=utf-8"},i).then((()=>{const r=this.shares.findIndex((t=>t.href===e));-1===r?this.shares.push({href:e,access:[t?"{http://owncloud.org/ns}read-write":"{http://owncloud.org/ns}read"],"common-name":null,"invite-accepted":!0}):this.shares[r].access=[t?"{http://owncloud.org/ns}read-write":"{http://owncloud.org/ns}read"]}))}async unshare(e){O(`Unsharing ${this.url} with ${e}`);const[t,r]=y([l,"share"],[l,"remove"]);r.push({name:[a,"href"],value:e});const s=f(t);return this._request.post(this._url,{"Content-Type":"application/xml; charset=utf-8"},s).then((()=>{const t=this.shares.findIndex((t=>t.href===e));-1!==t&&this.shares.splice(t,1)}))}isShareable(){return!!Array.isArray(this.allowedSharingModes)&&this.allowedSharingModes.includes(`{${u}}can-be-shared`)}isPublishable(){return!!Array.isArray(this.allowedSharingModes)&&this.allowedSharingModes.includes(`{${u}}can-be-published`)}static getPropFindList(){return super.getPropFindList().concat([[l,"invite"],[u,"allowed-sharing-modes"]])}}}class U extends L{constructor(){super(...arguments),super._exposeProperty("data",n,"calendar-data",!0)}static getPropFindList(){return super.getPropFindList().concat([[n,"calendar-data"]])}}function $(e){const t=[];return Object.entries(e).forEach((e=>{let[r,s]=e;switch(r){case"{http://apple.com/ns/ical/}calendar-order":t.push({name:[c,"calendar-order"],value:s.toString()});break;case"{http://apple.com/ns/ical/}calendar-color":t.push({name:[c,"calendar-color"],value:s});break;case"{http://calendarserver.org/ns/}source":t.push({name:[u,"source"],children:[{name:[a,"href"],value:s}]});break;case"{urn:ietf:params:xml:ns:caldav}calendar-description":t.push({name:[n,"calendar-description"],value:s});break;case"{urn:ietf:params:xml:ns:caldav}calendar-timezone":t.push({name:[n,"calendar-timezone"],value:s});break;case"{http://owncloud.org/ns}calendar-enabled":t.push({name:[l,"calendar-enabled"],value:s?"1":"0"})}})),t}const j=R("Calendar");class k extends(function(e){return class extends e{constructor(){super(...arguments),super._exposeProperty("publishURL",u,"publish-url")}async publish(){Y(`Publishing ${this.url}`);const[e]=y([u,"publish-calendar"]),t=f(e);await this._request.post(this._url,{"Content-Type":"application/xml; charset=utf-8"},t),await this._updatePropsFromServer()}async unpublish(){Y(`Unpublishing ${this.url}`);const[e]=y([u,"unpublish-calendar"]),t=f(e);await this._request.post(this._url,{"Content-Type":"application/xml; charset=utf-8"},t),delete this._props["{http://calendarserver.org/ns/}publish-url"]}static getPropFindList(){return super.getPropFindList().concat([[u,"publish-url"]])}}}(S(q))){constructor(){super(...arguments),super._registerObjectFactory("text/calendar",U),super._registerPropSetFactory($),super._exposeProperty("color",c,"calendar-color",!0),super._exposeProperty("enabled",l,"calendar-enabled",!0),super._exposeProperty("order",c,"calendar-order",!0),super._exposeProperty("timezone",n,"calendar-timezone",!0),super._exposeProperty("components",n,"supported-calendar-component-set")}async findAllVObjects(){return super.findAllByFilter((e=>e instanceof U))}async findByType(e){return this.calendarQuery([{name:[n,"comp-filter"],attributes:[["name","VCALENDAR"]],children:[{name:[n,"comp-filter"],attributes:[["name",e]]}]}])}async findByTypeInTimeRange(e,t,r){return this.calendarQuery([{name:[n,"comp-filter"],attributes:[["name","VCALENDAR"]],children:[{name:[n,"comp-filter"],attributes:[["name",e]],children:[{name:[n,"time-range"],attributes:[["start",k._getICalendarDateTimeFromDateObject(t)],["end",k._getICalendarDateTimeFromDateObject(r)]]}]}]}])}async createVObject(e){const t=F("","ics");return super.createObject(t,{"Content-Type":"text/calendar; charset=utf-8"},e)}async calendarQuery(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;j("sending an calendar-query request");const[s]=y([n,"calendar-query"]);t?s.children.push({name:[a,"prop"],children:t}):s.children.push({name:[a,"prop"],children:this._propFindList.map((e=>({name:e})))}),e&&s.children.push({name:[n,"filter"],children:e}),r&&s.children.push({name:[n,"timezone"],value:r});const i=f(s),l=await this._request.report(this.url,{Depth:"1"},i);return super._handleMultiStatusResponse(l,k._isRetrievalPartial(t))}async calendarMultiget(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;if(j("sending an calendar-multiget request"),0===e.length)return[];const[r]=y([n,"calendar-multiget"]);t?r.children.push({name:[a,"prop"],children:t}):r.children.push({name:[a,"prop"],children:this._propFindList.map((e=>({name:e})))}),e.forEach((e=>{r.children.push({name:[a,"href"],value:e})}));const s=f(r),i=await this._request.report(this.url,{Depth:"1"},s);return super._handleMultiStatusResponse(i,k._isRetrievalPartial(t))}async freeBusyQuery(e,t){}static getPropFindList(){return super.getPropFindList().concat([[c,"calendar-order"],[c,"calendar-color"],[u,"getctag"],[n,"calendar-description"],[n,"calendar-timezone"],[n,"supported-calendar-component-set"],[n,"supported-calendar-data"],[n,"max-resource-size"],[n,"min-date-time"],[n,"max-date-time"],[n,"max-instances"],[n,"max-attendees-per-instance"],[n,"supported-collation-set"],[n,"calendar-free-busy-set"],[n,"schedule-calendar-transp"],[n,"schedule-default-calendar-URL"],[l,"calendar-enabled"],[o,"owner-displayname"],[o,"trash-bin-retention-duration"],[o,"deleted-at"]])}static _isRetrievalPartial(e){if(!e)return!1;const t=e.find((e=>e.name[0]===n&&"calendar-data"===e.name[1]));return!!t&&!!t.children}static _getICalendarDateTimeFromDateObject(e){return[e.getUTCFullYear(),("0"+(e.getUTCMonth()+1)).slice(-2),("0"+e.getUTCDate()).slice(-2),"T",("0"+e.getUTCHours()).slice(-2),("0"+e.getUTCMinutes()).slice(-2),("0"+e.getUTCSeconds()).slice(-2),"Z"].join("")}}class I extends k{constructor(){super(...arguments),super._exposeProperty("source",u,"source",!0),super._exposeProperty("refreshRate",c,"refreshrate",!0),super._exposeProperty("stripTodos",u,"subscribed-strip-todos",!0),super._exposeProperty("stripAlarms",u,"subscribed-strip-alarms",!0),super._exposeProperty("stripAttachments",u,"subscribed-strip-attachments",!0)}static getPropFindList(){return super.getPropFindList().concat([[u,"source"],[c,"refreshrate"],[u,"subscribed-strip-todos"],[u,"subscribed-strip-alarms"],[u,"subscribed-strip-attachments"]])}}function M(e){const t=[];return Object.entries(e).forEach((e=>{let[r,s]=e;"{urn:ietf:params:xml:ns:caldav}calendar-availability"===r&&t.push({name:[n,"calendar-availability"],value:s.toString()})})),t}class X extends k{constructor(){super(...arguments),super._registerPropSetFactory(M),super._exposeProperty("availability",n,"calendar-availability",!0)}static getPropFindList(){return super.getPropFindList().concat([[n,"calendar-availability"]])}}class B extends q{async freeBusyRequest(e){const t={},r=await this._request.post(this.url,{"Content-Type":'text/calendar; charset="utf-8"'},e),s=(new DOMParser).parseFromString(r.body,"application/xml"),a=s.evaluate("/cl:schedule-response/cl:response",s,h,XPathResult.ANY_TYPE,null);let n;for(;null!==(n=a.iterateNext());){const e=s.evaluate("string(cl:recipient/d:href)",n,h,XPathResult.ANY_TYPE,null).stringValue,r=s.evaluate("string(cl:request-status)",n,h,XPathResult.ANY_TYPE,null).stringValue,a=s.evaluate("string(cl:calendar-data)",n,h,XPathResult.ANY_TYPE,null).stringValue,i=/^2.\d(;.+)?$/.test(r);t[e]={calendarData:a,status:r,success:i}}return t}}class H extends q{constructor(){super(...arguments),super._registerObjectFactory("text/calendar",U),super._exposeProperty("retentionDuration",o,"trash-bin-retention-duration")}async findDeletedObjects(){const[e]=y([n,"calendar-query"]);e.children.push({name:[a,"prop"],children:U.getPropFindList().map((e=>({name:e}))).concat([{name:[o,"calendar-uri"]},{name:[o,"deleted-at"]}])}),e.children.push({name:[n,"filter"],children:[{name:[n,"comp-filter"],attributes:[["name","VCALENDAR"]],children:[{name:[n,"comp-filter"],attributes:[["name","VEVENT"]],children:[]}]}]});const t=f(e),r=await this._request.report(this._url+"objects",{Depth:"1"},t);return super._handleMultiStatusResponse(r)}async restore(e){await this._request.move(e,this._url+"restore/file")}}class z extends k{}const W=R("CalendarHome");class G extends q{constructor(){super(...arguments),super._registerCollectionFactory("{"+n+"}calendar",k),super._registerCollectionFactory("{"+o+"}deleted-calendar",z),super._registerCollectionFactory("{"+u+"}subscribed",I),super._registerCollectionFactory("{"+n+"}schedule-inbox",X),super._registerCollectionFactory("{"+n+"}schedule-outbox",B),super._registerCollectionFactory("{"+o+"}trash-bin",H)}async findAllCalDAVCollections(){return super.findAllByFilter((e=>e instanceof k||e instanceof H||e instanceof I||e instanceof X||e instanceof B||e instanceof z))}async findAllCalDAVCollectionsGrouped(){const e=await super.findAll();return{calendars:e.filter((e=>!(!(e instanceof k)||e instanceof X||e instanceof I||e instanceof z))),deletedCalendars:e.filter((e=>e instanceof z)),trashBins:e.filter((e=>e instanceof H)),subscriptions:e.filter((e=>e instanceof I)),scheduleInboxes:e.filter((e=>e instanceof X)),scheduleOutboxes:e.filter((e=>e instanceof B))}}async findAllCalendars(){return super.findAllByFilter((e=>!(!(e instanceof k)||e instanceof X||e instanceof I||e instanceof z)))}async findAllDeletedCalendars(){return super.findAllByFilter((e=>e instanceof z))}async findAllSubscriptions(){return super.findAllByFilter((e=>e instanceof I))}async findAllScheduleInboxes(){return super.findAllByFilter((e=>e instanceof X))}async findAllScheduleOutboxes(){return super.findAllByFilter((e=>e instanceof B))}async createCalendarCollection(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;W("creating a calendar collection");const o=[{name:[a,"resourcetype"],children:[{name:[a,"collection"]},{name:[n,"calendar"]}]},{name:[a,"displayname"],value:e},{name:[c,"calendar-color"],value:t},{name:[l,"calendar-enabled"],value:"1"}];i&&o.push({name:[n,"calendar-timezone"],value:i}),r&&o.push({name:[n,"supported-calendar-component-set"],children:r.map((e=>({name:[n,"comp"],attributes:[["name",e]]})))}),s&&o.push({name:[c,"calendar-order"],value:s});const u=super._getAvailableNameFromToken(e);return super.createCollection(u,o)}async createSubscribedCollection(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;W("creating a subscribed collection");const n=[{name:[a,"resourcetype"],children:[{name:[a,"collection"]},{name:[u,"subscribed"]}]},{name:[a,"displayname"],value:e},{name:[c,"calendar-color"],value:t},{name:[l,"calendar-enabled"],value:"1"},{name:[u,"source"],children:[{name:[a,"href"],value:r}]}];s&&n.push({name:[c,"calendar-order"],value:s});const i=super._getAvailableNameFromToken(e);return super.createCollection(i,n)}async search(){}async enableBirthdayCalendar(){const[e]=y([o,"enable-birthday-calendar"]),t=f(e);await this._request.post(this.url,{},t)}}function Q(e){const t=[];return Object.entries(e).forEach((e=>{let[r,s]=e;switch(r){case"{urn:ietf:params:xml:ns:carddav}addressbook-description":t.push({name:[i,"addressbook-description"],value:s});break;case"{http://owncloud.org/ns}enabled":t.push({name:[l,"enabled"],value:s?"1":"0"})}})),t}class K extends L{constructor(){super(...arguments),super._exposeProperty("data",i,"address-data",!0),super._exposeProperty("hasphoto",o,"has-photo",!1)}static getPropFindList(){return super.getPropFindList().concat([[i,"address-data"]])}}const Z=R("AddressBook");class J extends(S(q)){constructor(){super(...arguments),super._registerObjectFactory("text/vcard",K),super._registerPropSetFactory(Q),super._exposeProperty("description",i,"addressbook-description",!0),super._exposeProperty("enabled",l,"enabled",!0),super._exposeProperty("readOnly",l,"read-only")}findAllVCards(){return super.findAllByFilter((e=>e instanceof K))}async findAllAndFilterBySimpleProperties(e){const t=[];return e.forEach((e=>{t.push({name:[i,"prop"],attributes:[["name",e]]})})),this.addressbookQuery(null,[{name:[a,"getetag"]},{name:[a,"getcontenttype"]},{name:[a,"resourcetype"]},{name:[i,"address-data"],children:t},{name:[o,"has-photo"]}])}async createVCard(e){Z("creating VCard object");const t=F("","vcf");return super.createObject(t,{"Content-Type":"text/vcard; charset=utf-8"},e)}async addressbookQuery(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"anyof";Z("sending an addressbook-query request");const[n]=y([i,"addressbook-query"]);t?n.children.push({name:[a,"prop"],children:t}):n.children.push({name:[a,"prop"],children:this._propFindList.map((e=>({name:e})))}),e&&n.children.push({name:[i,"filter"],attributes:[["test",s]],children:e}),r&&n.children.push({name:[i,"limit"],children:[{name:[i,"nresults"],value:r}]});const l=f(n),o=await this._request.report(this.url,{Depth:"1"},l);return super._handleMultiStatusResponse(o,J._isRetrievalPartial(t))}async addressbookMultiget(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;if(Z("sending an addressbook-multiget request"),0===e.length)return[];const r=this._buildMultiGetBody(e,t),s=await this._request.report(this.url,{Depth:"1"},r);return super._handleMultiStatusResponse(s,J._isRetrievalPartial(t))}async addressbookMultigetExport(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;if(Z("sending an addressbook-multiget request and request download"),0===e.length)return"";const r=this._buildMultiGetBody(e,t);return this._request.report(this.url+"?export",{Depth:"1"},r)}_buildMultiGetBody(e,t){const[r]=y([i,"addressbook-multiget"]);return t?r.children.push({name:[a,"prop"],children:t}):r.children.push({name:[a,"prop"],children:this._propFindList.map((e=>({name:e})))}),e.forEach((e=>{r.children.push({name:[a,"href"],value:e})})),f(r)}static getPropFindList(){return super.getPropFindList().concat([[i,"addressbook-description"],[i,"supported-address-data"],[i,"max-resource-size"],[u,"getctag"],[l,"enabled"],[l,"read-only"]])}static _isRetrievalPartial(e){if(!e)return!1;const t=e.find((e=>e.name[0]===i&&"address-data"===e.name[1]));return!!t&&!!t.children}}const ee=R("AddressBookHome");class te extends q{constructor(){super(...arguments),super._registerCollectionFactory("{"+i+"}addressbook",J)}async findAllAddressBooks(){return super.findAllByFilter((e=>e instanceof J))}async createAddressBookCollection(e){ee("creating an addressbook collection");const t=[{name:[a,"resourcetype"],children:[{name:[a,"collection"]},{name:[i,"addressbook"]}]},{name:[a,"displayname"],value:e}],r=super._getAvailableNameFromToken(e);return super.createCollection(r,t)}}function re(e){const t=[];return Object.entries(e).forEach((e=>{let[r,s]=e;"{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL"===r&&t.push({name:[n,"schedule-default-calendar-URL"],children:[{name:["DAV:","href"],value:s}]})})),t}class se extends L{constructor(){super(...arguments),Object.assign(this,{_updatedProperties:[],_propSetFactory:[]}),this._registerPropSetFactory(re),this._exposeProperty("displayname",a,"displayname"),this._exposeProperty("calendarUserType",n,"calendar-user-type"),this._exposeProperty("calendarUserAddressSet",n,"calendar-user-address-set"),this._exposeProperty("principalUrl",a,"principal-URL"),this._exposeProperty("email",p,"email-address"),this._exposeProperty("language",o,"language"),this._exposeProperty("calendarHomes",n,"calendar-home-set"),this._exposeProperty("scheduleInbox",n,"schedule-inbox-URL"),this._exposeProperty("scheduleOutbox",n,"schedule-outbox-URL"),this._exposeProperty("scheduleDefaultCalendarUrl",n,"schedule-default-calendar-URL",!0),this._exposeProperty("addressBookHomes",i,"addressbook-home-set"),this._exposeProperty("roomType",o,"room-type"),this._exposeProperty("roomSeatingCapacity",o,"room-seating-capacity"),this._exposeProperty("roomBuildingAddress",o,"room-building-address"),this._exposeProperty("roomBuildingStory",o,"room-building-story"),this._exposeProperty("roomBuildingRoomNumber",o,"room-building-room-number"),this._exposeProperty("roomFeatures",o,"room-features"),Object.defineProperties(this,{principalScheme:{get:()=>{const e=this._request.pathname(this._request.baseUrl);let t=this.url.slice(e.length);return"/"===t.slice(-1)&&(t=t.slice(0,-1)),"principal:"+t}},userId:{get:()=>"INDIVIDUAL"!==this.calendarUserType?null:this.url.split("/").splice(-2,2)[this.url.endsWith("/")?0:1]},groupId:{get:()=>"GROUP"!==this.calendarUserType?null:this.url.split("/").splice(-2,2)[this.url.endsWith("/")?0:1]},resourceId:{get:()=>"RESOURCE"!==this.calendarUserType?null:this.url.split("/").splice(-2,2)[this.url.endsWith("/")?0:1]},roomId:{get:()=>"ROOM"!==this.calendarUserType?null:this.url.split("/").splice(-2,2)[this.url.endsWith("/")?0:1]},roomAddress:{get:()=>[this.roomBuildingRoomNumber,this.roomBuildingStory,this.roomBuildingAddress].filter((e=>!!e)).join(", ")}})}_exposeProperty(e,t,r){arguments.length>3&&void 0!==arguments[3]&&arguments[3]?Object.defineProperty(this,e,{get:()=>this._props[`{${t}}${r}`],set:e=>{this._props[`{${t}}${r}`]=e,-1===this._updatedProperties.indexOf(`{${t}}${r}`)&&this._updatedProperties.push(`{${t}}${r}`)}}):Object.defineProperty(this,e,{get:()=>this._props[`{${t}}${r}`]})}_registerPropSetFactory(e){this._propSetFactory.push(e)}static getPropFindList(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=[[a,"displayname"],[n,"calendar-user-type"],[n,"calendar-user-address-set"],[a,"principal-URL"],[a,"alternate-URI-set"],[p,"email-address"],[o,"language"]];return e.enableCalDAV&&t.push([n,"calendar-home-set"],[n,"schedule-inbox-URL"],[n,"schedule-outbox-URL"],[n,"schedule-default-calendar-URL"],[o,"resource-type"],[o,"resource-vehicle-type"],[o,"resource-vehicle-make"],[o,"resource-vehicle-model"],[o,"resource-vehicle-is-electric"],[o,"resource-vehicle-range"],[o,"resource-vehicle-seating-capacity"],[o,"resource-contact-person"],[o,"resource-contact-person-vcard"],[o,"room-type"],[o,"room-seating-capacity"],[o,"room-building-address"],[o,"room-building-story"],[o,"room-building-room-number"],[o,"room-features"]),e.enableCardDAV&&t.push([i,"addressbook-home-set"]),t}async update(){if(0===this._updatedProperties.length)return;const e={};this._updatedProperties.forEach((t=>{e[t]=this._props[t]}));const t=this._propSetFactory.reduce(((t,r)=>[...t,...r(e)]),[]),[r,s]=y([a,"propertyupdate"],[a,"set"],[a,"prop"]);s.push(...t);const n=f(r);await this._request.propPatch(this._url,{},n)}}const ae=R("index.js");class ne{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.rootUrl=null,"/"!==e.rootUrl.slice(-1)&&(e.rootUrl+="/"),Object.assign(this,e),this.advertisedFeatures=[],this.currentUserPrincipal=null,this.principalCollections=[],this.calendarHomes=[],this.publicCalendarHome=null,this.addressBookHomes=[],this.parser=new s,this._isConnected=!1,this._request=new D(this.rootUrl,this.parser,t)}async connect(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{enableCalDAV:!1,enableCardDAV:!1};if(this._isConnected)return this;if(!this.rootUrl)throw new Error("No rootUrl configured");const t=await this._discoverPrincipalUri();ae(`PrincipalURL: ${t}`);const r=se.getPropFindList(e);(e.enableCalDAV||e.enableCardDAV)&&r.push([a,"principal-collection-set"],[a,"supported-report-set"]);const s=await this._request.propFind(t,r);return this.currentUserPrincipal=new se(null,this._request,t,s.body),this._extractAdvertisedDavFeatures(s.xhr),this._extractAddressBookHomes(s.body),this._extractCalendarHomes(s.body),this._extractPrincipalCollectionSets(s.body),this._createPublicCalendarHome(),this._isConnected=!0,this}async principalPropertySearchByDisplayname(e){return this.principalPropertySearch([{name:[a,"displayname"]}],e)}async principalPropertySearchByDisplaynameOrEmail(e){return this.principalPropertySearch([{name:[a,"displayname"]},{name:[p,"email-address"]}],e,"anyof")}async principalPropertySearchByAddress(e){return this.principalPropertySearch([{name:[o,"room-building-address"]}],e)}async principalPropertySearchByAddressAndStory(e,t){const[r]=y([a,"principal-property-search"]);r.children.push({name:[a,"property-search"],children:[{name:[a,"prop"],children:[{name:[o,"room-building-address"]}]},{name:[a,"match"],value:e}]}),r.children.push({name:[a,"property-search"],children:[{name:[a,"prop"],children:[{name:[o,"room-building-story"]}]},{name:[a,"match"],value:t}]}),r.children.push({name:[a,"prop"],children:se.getPropFindList({enableCalDAV:!0}).map((e=>({name:e})))}),r.children.push({name:[a,"apply-to-principal-collection-set"]});const s=f(r);return this._request.report(this.rootUrl,{Depth:0},s).then((e=>{const t=[];return Object.entries(e.body).forEach((e=>{let[r,s]=e;const a=this._request.pathname(r);t.push(new se(null,this._request,a,s))})),t}))}async advancedPrincipalPropertySearch(e){const[t]=y([a,"principal-property-search"]);t.attributes=[["test","allof"]];const{displayName:r,capacity:s,features:n,roomType:i}=e;if(r&&t.children.push({name:[a,"property-search"],children:[{name:[a,"prop"],children:[{name:[a,"displayname"]}]},{name:[a,"match"],value:r}]}),s&&t.children.push({name:[a,"property-search"],children:[{name:[a,"prop"],children:[{name:[o,"room-seating-capacity"]}]},{name:[a,"match"],value:s}]}),n&&n.length>0&&t.children.push({name:[a,"property-search"],children:[{name:[a,"prop"],children:[{name:[o,"room-features"]}]},{name:[a,"match"],value:n.join(",")}]}),i&&t.children.push({name:[a,"property-search"],children:[{name:[a,"prop"],children:[{name:[o,"room-type"]}]},{name:[a,"match"],value:i}]}),0===t.children.length)return[];t.children.push({name:[a,"prop"],children:se.getPropFindList({enableCalDAV:!0}).map((e=>({name:e})))}),t.children.push({name:[a,"apply-to-principal-collection-set"]});const l=f(t),c=await this._request.report(this.rootUrl,{Depth:0},l);return Object.entries(c.body).map((e=>{let[t,r]=e;const s=this._request.pathname(t);return new se(null,this._request,s,r)}))}async principalPropertySearch(e,t,r){const[s,n]=y([a,"principal-property-search"],[a,"property-search"]);r&&(s.attributes=[["test",r]]),n.push({name:[a,"prop"],children:e},{name:[a,"match"],value:t}),s.children.push({name:[a,"prop"],children:se.getPropFindList({enableCalDAV:!0}).map((e=>({name:e})))}),s.children.push({name:[a,"apply-to-principal-collection-set"]});const i=f(s);return this._request.report(this.rootUrl,{Depth:0},i).then((e=>{const t=[];return Object.entries(e.body).forEach((e=>{let[r,s]=e;const a=this._request.pathname(r);t.push(new se(null,this._request,a,s))})),t}))}async findPrincipal(e){return this._request.propFind(e,se.getPropFindList()).then((t=>{let{body:r}=t;return new se(null,this._request,e,r)})).catch((e=>{console.debug(e)}))}async _discoverPrincipalUri(){const e=await this._request.propFind(this.rootUrl,[[a,"current-user-principal"]],0);if(!e.body["{DAV:}current-user-principal"])throw new Error("Error retrieving current user principal");if("unauthenticated"===e.body["{DAV:}current-user-principal"].type)throw new Error("Current user is not authenticated");return this._request.pathname(e.body["{DAV:}current-user-principal"].href)}async _extractCalendarHomes(e){const t=e[`{${n}}calendar-home-set`];t&&(this.calendarHomes=t.map((t=>{const r=this._request.pathname(t);return new G(this,this._request,r,e)})))}async _extractAddressBookHomes(e){const t=e[`{${i}}addressbook-home-set`];t&&(this.addressBookHomes=t.map((t=>{const r=this._request.pathname(t);return new te(this,this._request,r,e)})))}_extractPrincipalCollectionSets(e){const t=e[`{${a}}principal-collection-set`];this.principalCollections=t.map((e=>this._request.pathname(e)))}_extractAdvertisedDavFeatures(e){const t=e.getResponseHeader("DAV");this.advertisedFeatures.push(...t.split(",").map((e=>e.trim())))}_createPublicCalendarHome(){const e=this._request.pathname(this.rootUrl)+"public-calendars/";this.publicCalendarHome=new G(this,this._request,e,{})}}return t})())); //# sourceMappingURL=dist.js.map /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js": /*!*********************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js ***! \*********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const debug = __webpack_require__(/*! ../internal/debug */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js") const { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(/*! ../internal/constants */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js") const { safeRe: re, t } = __webpack_require__(/*! ../internal/re */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js") const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js") const { compareIdentifiers } = __webpack_require__(/*! ../internal/identifiers */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js") class SemVer { constructor (version, options) { options = parseOptions(options) if (version instanceof SemVer) { if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) { return version } else { version = version.version } } else if (typeof version !== 'string') { throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`) } if (version.length > MAX_LENGTH) { throw new TypeError( `version is longer than ${MAX_LENGTH} characters` ) } debug('SemVer', version, options) this.options = options this.loose = !!options.loose // this isn't actually relevant for versions, but keep it so that we // don't run into trouble passing this.options around. this.includePrerelease = !!options.includePrerelease const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) if (!m) { throw new TypeError(`Invalid Version: ${version}`) } this.raw = version // these are actually numbers this.major = +m[1] this.minor = +m[2] this.patch = +m[3] if (this.major > MAX_SAFE_INTEGER || this.major < 0) { throw new TypeError('Invalid major version') } if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { throw new TypeError('Invalid minor version') } if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { throw new TypeError('Invalid patch version') } // numberify any prerelease numeric ids if (!m[4]) { this.prerelease = [] } else { this.prerelease = m[4].split('.').map((id) => { if (/^[0-9]+$/.test(id)) { const num = +id if (num >= 0 && num < MAX_SAFE_INTEGER) { return num } } return id }) } this.build = m[5] ? m[5].split('.') : [] this.format() } format () { this.version = `${this.major}.${this.minor}.${this.patch}` if (this.prerelease.length) { this.version += `-${this.prerelease.join('.')}` } return this.version } toString () { return this.version } compare (other) { debug('SemVer.compare', this.version, this.options, other) if (!(other instanceof SemVer)) { if (typeof other === 'string' && other === this.version) { return 0 } other = new SemVer(other, this.options) } if (other.version === this.version) { return 0 } return this.compareMain(other) || this.comparePre(other) } compareMain (other) { if (!(other instanceof SemVer)) { other = new SemVer(other, this.options) } return ( compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch) ) } comparePre (other) { if (!(other instanceof SemVer)) { other = new SemVer(other, this.options) } // NOT having a prerelease is > having one if (this.prerelease.length && !other.prerelease.length) { return -1 } else if (!this.prerelease.length && other.prerelease.length) { return 1 } else if (!this.prerelease.length && !other.prerelease.length) { return 0 } let i = 0 do { const a = this.prerelease[i] const b = other.prerelease[i] debug('prerelease compare', i, a, b) if (a === undefined && b === undefined) { return 0 } else if (b === undefined) { return 1 } else if (a === undefined) { return -1 } else if (a === b) { continue } else { return compareIdentifiers(a, b) } } while (++i) } compareBuild (other) { if (!(other instanceof SemVer)) { other = new SemVer(other, this.options) } let i = 0 do { const a = this.build[i] const b = other.build[i] debug('prerelease compare', i, a, b) if (a === undefined && b === undefined) { return 0 } else if (b === undefined) { return 1 } else if (a === undefined) { return -1 } else if (a === b) { continue } else { return compareIdentifiers(a, b) } } while (++i) } // preminor will bump the version up to the next minor release, and immediately // down to pre-release. premajor and prepatch work the same way. inc (release, identifier, identifierBase) { switch (release) { case 'premajor': this.prerelease.length = 0 this.patch = 0 this.minor = 0 this.major++ this.inc('pre', identifier, identifierBase) break case 'preminor': this.prerelease.length = 0 this.patch = 0 this.minor++ this.inc('pre', identifier, identifierBase) break case 'prepatch': // If this is already a prerelease, it will bump to the next version // drop any prereleases that might already exist, since they are not // relevant at this point. this.prerelease.length = 0 this.inc('patch', identifier, identifierBase) this.inc('pre', identifier, identifierBase) break // If the input is a non-prerelease version, this acts the same as // prepatch. case 'prerelease': if (this.prerelease.length === 0) { this.inc('patch', identifier, identifierBase) } this.inc('pre', identifier, identifierBase) break case 'major': // If this is a pre-major version, bump up to the same major version. // Otherwise increment major. // 1.0.0-5 bumps to 1.0.0 // 1.1.0 bumps to 2.0.0 if ( this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0 ) { this.major++ } this.minor = 0 this.patch = 0 this.prerelease = [] break case 'minor': // If this is a pre-minor version, bump up to the same minor version. // Otherwise increment minor. // 1.2.0-5 bumps to 1.2.0 // 1.2.1 bumps to 1.3.0 if (this.patch !== 0 || this.prerelease.length === 0) { this.minor++ } this.patch = 0 this.prerelease = [] break case 'patch': // If this is not a pre-release version, it will increment the patch. // If it is a pre-release it will bump up to the same patch version. // 1.2.0-5 patches to 1.2.0 // 1.2.0 patches to 1.2.1 if (this.prerelease.length === 0) { this.patch++ } this.prerelease = [] break // This probably shouldn't be used publicly. // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. case 'pre': { const base = Number(identifierBase) ? 1 : 0 if (!identifier && identifierBase === false) { throw new Error('invalid increment argument: identifier is empty') } if (this.prerelease.length === 0) { this.prerelease = [base] } else { let i = this.prerelease.length while (--i >= 0) { if (typeof this.prerelease[i] === 'number') { this.prerelease[i]++ i = -2 } } if (i === -1) { // didn't increment anything if (identifier === this.prerelease.join('.') && identifierBase === false) { throw new Error('invalid increment argument: identifier already exists') } this.prerelease.push(base) } } if (identifier) { // 1.2.0-beta.1 bumps to 1.2.0-beta.2, // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 let prerelease = [identifier, base] if (identifierBase === false) { prerelease = [identifier] } if (compareIdentifiers(this.prerelease[0], identifier) === 0) { if (isNaN(this.prerelease[1])) { this.prerelease = prerelease } } else { this.prerelease = prerelease } } break } default: throw new Error(`invalid increment argument: ${release}`) } this.raw = this.format() if (this.build.length) { this.raw += `+${this.build.join('.')}` } return this } } module.exports = SemVer /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js": /*!**********************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js ***! \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js") const major = (a, loose) => new SemVer(a, loose).major module.exports = major /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js": /*!**********************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js ***! \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js") const parse = (version, options, throwErrors = false) => { if (version instanceof SemVer) { return version } try { return new SemVer(version, options) } catch (er) { if (!throwErrors) { return null } throw er } } module.exports = parse /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js": /*!**********************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js ***! \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const parse = __webpack_require__(/*! ./parse */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js") const valid = (version, options) => { const v = parse(version, options) return v ? v.version : null } module.exports = valid /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js": /*!*************************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js ***! \*************************************************************************************/ /***/ ((module) => { // Note: this is the semver.org version of the spec that it implements // Not necessarily the package version of this code. const SEMVER_SPEC_VERSION = '2.0.0' const MAX_LENGTH = 256 const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ 9007199254740991 // Max safe segment length for coercion. const MAX_SAFE_COMPONENT_LENGTH = 16 // Max safe length for a build identifier. The max length minus 6 characters for // the shortest version with a build 0.0.0+BUILD. const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 const RELEASE_TYPES = [ 'major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease', ] module.exports = { MAX_LENGTH, MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_SAFE_INTEGER, RELEASE_TYPES, SEMVER_SPEC_VERSION, FLAG_INCLUDE_PRERELEASE: 0b001, FLAG_LOOSE: 0b010, } /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js": /*!*********************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js ***! \*********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* provided dependency */ var process = __webpack_require__(/*! ./node_modules/process/browser.js */ "./node_modules/process/browser.js"); const debug = ( typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ) ? (...args) => console.error('SEMVER', ...args) : () => {} module.exports = debug /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js": /*!***************************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js ***! \***************************************************************************************/ /***/ ((module) => { const numeric = /^[0-9]+$/ const compareIdentifiers = (a, b) => { const anum = numeric.test(a) const bnum = numeric.test(b) if (anum && bnum) { a = +a b = +b } return a === b ? 0 : (anum && !bnum) ? -1 : (bnum && !anum) ? 1 : a < b ? -1 : 1 } const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) module.exports = { compareIdentifiers, rcompareIdentifiers, } /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js": /*!*****************************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js ***! \*****************************************************************************************/ /***/ ((module) => { // parse out just the options we care about const looseOption = Object.freeze({ loose: true }) const emptyOpts = Object.freeze({ }) const parseOptions = options => { if (!options) { return emptyOpts } if (typeof options !== 'object') { return looseOption } return options } module.exports = parseOptions /***/ }), /***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js": /*!******************************************************************************!*\ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js ***! \******************************************************************************/ /***/ ((module, exports, __webpack_require__) => { const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH, } = __webpack_require__(/*! ./constants */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js") const debug = __webpack_require__(/*! ./debug */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js") exports = module.exports = {} // The actual regexps go on exports.re const re = exports.re = [] const safeRe = exports.safeRe = [] const src = exports.src = [] const t = exports.t = {} let R = 0 const LETTERDASHNUMBER = '[a-zA-Z0-9-]' // Replace some greedy regex tokens to prevent regex dos issues. These regex are // used internally via the safeRe object since all inputs in this library get // normalized first to trim and collapse all extra whitespace. The original // regexes are exported for userland consumption and lower level usage. A // future breaking change could export the safer regex only with a note that // all input should have extra whitespace removed. const safeRegexReplacements = [ ['\\s', 1], ['\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], ] const makeSafeRegex = (value) => { for (const [token, max] of safeRegexReplacements) { value = value .split(`${token}*`).join(`${token}{0,${max}}`) .split(`${token}+`).join(`${token}{1,${max}}`) } return value } const createToken = (name, value, isGlobal) => { const safe = makeSafeRegex(value) const index = R++ debug(name, index, value) t[name] = index src[index] = value re[index] = new RegExp(value, isGlobal ? 'g' : undefined) safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined) } // The following Regular Expressions can be used for tokenizing, // validating, and parsing SemVer version strings. // ## Numeric Identifier // A single `0`, or a non-zero digit followed by zero or more digits. createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') createToken('NUMERICIDENTIFIERLOOSE', '\\d+') // ## Non-numeric Identifier // Zero or more digits, followed by a letter or hyphen, and then zero or // more letters, digits, or hyphens. createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`) // ## Main Version // Three dot-separated numeric identifiers. createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + `(${src[t.NUMERICIDENTIFIER]})\\.` + `(${src[t.NUMERICIDENTIFIER]})`) createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + `(${src[t.NUMERICIDENTIFIERLOOSE]})`) // ## Pre-release Version Identifier // A numeric identifier, or a non-numeric identifier. createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] }|${src[t.NONNUMERICIDENTIFIER]})`) createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] }|${src[t.NONNUMERICIDENTIFIER]})`) // ## Pre-release Version // Hyphen, followed by one or more dot-separated pre-release version // identifiers. createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] }(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] }(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) // ## Build Metadata Identifier // Any combination of digits, letters, or hyphens. createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`) // ## Build Metadata // Plus sign, followed by one or more period-separated build metadata // identifiers. createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] }(?:\\.${src[t.BUILDIDENTIFIER]})*))`) // ## Full Version String // A main version, followed optionally by a pre-release version and // build metadata. // Note that the only major, minor, patch, and pre-release sections of // the version string are capturing groups. The build metadata is not a // capturing group, because it should not ever be used in version // comparison. createToken('FULLPLAIN', `v?${src[t.MAINVERSION] }${src[t.PRERELEASE]}?${ src[t.BUILD]}?`) createToken('FULL', `^${src[t.FULLPLAIN]}$`) // like full, but allows v1.2.3 and =1.2.3, which people do sometimes. // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty // common in the npm registry. createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] }${src[t.PRERELEASELOOSE]}?${ src[t.BUILD]}?`) createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) createToken('GTLT', '((?:<|>)?=?)') // Something like "2.*" or "1.2.x". // Note that "x.x" is a valid xRange identifer, meaning "any version" // Only the first item is strictly required. createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + `(?:${src[t.PRERELEASE]})?${ src[t.BUILD]}?` + `)?)?`) createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + `(?:${src[t.PRERELEASELOOSE]})?${ src[t.BUILD]}?` + `)?)?`) createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) // Coercion. // Extract anything that could conceivably be a part of a valid semver createToken('COERCEPLAIN', `${'(^|[^\\d])' + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`) createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`) createToken('COERCEFULL', src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?` + `(?:${src[t.BUILD]})?` + `(?:$|[^\\d])`) createToken('COERCERTL', src[t.COERCE], true) createToken('COERCERTLFULL', src[t.COERCEFULL], true) // Tilde ranges. // Meaning is "reasonably at or greater than" createToken('LONETILDE', '(?:~>?)') createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) exports.tildeTrimReplace = '$1~' createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) // Caret ranges. // Meaning is "at least and backwards compatible with" createToken('LONECARET', '(?:\\^)') createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) exports.caretTrimReplace = '$1^' createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) // A simple gt/lt/eq thing, or just "" to indicate "any version" createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) // An expression to strip any whitespace between the gtlt and the thing // it modifies, so that `> 1.2.3` ==> `>1.2.3` createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] }\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) exports.comparatorTrimReplace = '$1$2$3' // Something like `1.2.3 - 1.2.4` // Note that these all use the loose form, because they'll be // checked against either the strict or loose comparator form // later. createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + `\\s+-\\s+` + `(${src[t.XRANGEPLAIN]})` + `\\s*$`) createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + `\\s+-\\s+` + `(${src[t.XRANGEPLAINLOOSE]})` + `\\s*$`) // Star ranges basically just allow anything at all. createToken('STAR', '(<|>)?=?\\s*\\*') // >=0.0.0 is like a star createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') /***/ }), /***/ "./node_modules/@nextcloud/l10n/node_modules/@nextcloud/router/dist/index.js": /*!***********************************************************************************!*\ !*** ./node_modules/@nextcloud/l10n/node_modules/@nextcloud/router/dist/index.js ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.generateUrl = exports.generateRemoteUrl = exports.generateOcsUrl = exports.generateFilePath = void 0; exports.getAppRootUrl = getAppRootUrl; exports.getRootUrl = getRootUrl; exports.linkTo = exports.imagePath = void 0; __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); /** * Get an url with webroot to a file in an app * * @param {string} app the id of the app the file belongs to * @param {string} file the file path relative to the app folder * @return {string} URL with webroot to a file */ const linkTo = (app, file) => generateFilePath(app, '', file); /** * Creates a relative url for remote use * * @param {string} service id * @return {string} the url */ exports.linkTo = linkTo; const linkToRemoteBase = service => getRootUrl() + '/remote.php/' + service; /** * @brief Creates an absolute url for remote use * @param {string} service id * @return {string} the url */ const generateRemoteUrl = service => window.location.protocol + '//' + window.location.host + linkToRemoteBase(service); /** * Get the base path for the given OCS API service * * @param {string} url OCS API service url * @param {object} params parameters to be replaced into the service url * @param {UrlOptions} options options for the parameter replacement * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true) * @param {Number} options.ocsVersion OCS version to use (defaults to 2) * @return {string} Absolute path for the OCS URL */ exports.generateRemoteUrl = generateRemoteUrl; const generateOcsUrl = (url, params, options) => { const allOptions = Object.assign({ ocsVersion: 2 }, options || {}); const version = allOptions.ocsVersion === 1 ? 1 : 2; return window.location.protocol + '//' + window.location.host + getRootUrl() + '/ocs/v' + version + '.php' + _generateUrlPath(url, params, options); }; exports.generateOcsUrl = generateOcsUrl; /** * Generate a url path, which can contain parameters * * Parameters will be URL encoded automatically * * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token * @param {object} params parameters to be replaced into the address * @param {UrlOptions} options options for the parameter replacement * @return {string} Path part for the given URL */ const _generateUrlPath = (url, params, options) => { const allOptions = Object.assign({ escape: true }, options || {}); const _build = function (text, vars) { vars = vars || {}; return text.replace(/{([^{}]*)}/g, function (a, b) { var r = vars[b]; if (allOptions.escape) { return typeof r === 'string' || typeof r === 'number' ? encodeURIComponent(r.toString()) : encodeURIComponent(a); } else { return typeof r === 'string' || typeof r === 'number' ? r.toString() : a; } }); }; if (url.charAt(0) !== '/') { url = '/' + url; } return _build(url, params || {}); }; /** * Generate the url with webroot for the given relative url, which can contain parameters * * Parameters will be URL encoded automatically * * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token * @param {object} params parameters to be replaced into the url * @param {UrlOptions} options options for the parameter replacement * @param {boolean} options.noRewrite True if you want to force index.php being added * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true) * @return {string} URL with webroot for the given relative URL */ const generateUrl = (url, params, options) => { var _window; const allOptions = Object.assign({ noRewrite: false }, options || {}); if (((_window = window) === null || _window === void 0 || (_window = _window.OC) === null || _window === void 0 || (_window = _window.config) === null || _window === void 0 ? void 0 : _window.modRewriteWorking) === true && !allOptions.noRewrite) { return getRootUrl() + _generateUrlPath(url, params, options); } return getRootUrl() + '/index.php' + _generateUrlPath(url, params, options); }; /** * Get the path with webroot to an image file * if no extension is given for the image, it will automatically decide * between .png and .svg based on what the browser supports * * @param {string} app the app id to which the image belongs * @param {string} file the name of the image file * @return {string} */ exports.generateUrl = generateUrl; const imagePath = (app, file) => { if (file.indexOf('.') === -1) { //if no extension is given, use svg return generateFilePath(app, 'img', file + '.svg'); } return generateFilePath(app, 'img', file); }; /** * Get the url with webroot for a file in an app * * @param {string} app the id of the app * @param {string} type the type of the file to link to (e.g. css,img,ajax.template) * @param {string} file the filename * @return {string} URL with webroot for a file in an app */ exports.imagePath = imagePath; const generateFilePath = (app, type, file) => { var _window2; const isCore = ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.OC) === null || _window2 === void 0 || (_window2 = _window2.coreApps) === null || _window2 === void 0 ? void 0 : _window2.indexOf(app)) !== -1; let link = getRootUrl(); if (file.substring(file.length - 3) === 'php' && !isCore) { link += '/index.php/apps/' + app; if (file !== 'index.php') { link += '/'; if (type) { link += encodeURI(type + '/'); } link += file; } } else if (file.substring(file.length - 3) !== 'php' && !isCore) { link = getAppRootUrl(app); if (type) { link += '/' + type + '/'; } if (link.substring(link.length - 1) !== '/') { link += '/'; } link += file; } else { if ((app === 'settings' || app === 'core' || app === 'search') && type === 'ajax') { link += '/index.php/'; } else { link += '/'; } if (!isCore) { link += 'apps/'; } if (app !== '') { app += '/'; link += app; } if (type) { link += type + '/'; } link += file; } return link; }; /** * Return the web root path where this Nextcloud instance * is accessible, with a leading slash. * For example "/nextcloud". * * @return {string} web root path */ exports.generateFilePath = generateFilePath; function getRootUrl() { let webroot = window._oc_webroot; if (typeof webroot === 'undefined') { webroot = location.pathname; const pos = webroot.indexOf('/index.php/'); if (pos !== -1) { webroot = webroot.substr(0, pos); } else { webroot = webroot.substr(0, webroot.lastIndexOf('/')); } } return webroot; } /** * Return the web root path for a given app * @param {string} app The ID of the app */ function getAppRootUrl(app) { var _window$_oc_appswebro, _webroots$app; const webroots = (_window$_oc_appswebro = window._oc_appswebroots) !== null && _window$_oc_appswebro !== void 0 ? _window$_oc_appswebro : {}; return (_webroots$app = webroots[app]) !== null && _webroots$app !== void 0 ? _webroots$app : ''; } //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@nextcloud/logger/dist/ConsoleLogger.js": /*!**************************************************************!*\ !*** ./node_modules/@nextcloud/logger/dist/ConsoleLogger.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js"); __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js"); __webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); __webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js"); __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.ConsoleLogger = void 0; exports.buildConsoleLogger = buildConsoleLogger; __webpack_require__(/*! core-js/modules/es.object.assign.js */ "./node_modules/core-js/modules/es.object.assign.js"); __webpack_require__(/*! core-js/modules/es.symbol.to-primitive.js */ "./node_modules/core-js/modules/es.symbol.to-primitive.js"); __webpack_require__(/*! core-js/modules/es.date.to-primitive.js */ "./node_modules/core-js/modules/es.date.to-primitive.js"); __webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); __webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js"); __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); __webpack_require__(/*! core-js/modules/es.number.constructor.js */ "./node_modules/core-js/modules/es.number.constructor.js"); var _contracts = __webpack_require__(/*! ./contracts */ "./node_modules/@nextcloud/logger/dist/contracts.js"); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } var ConsoleLogger = /*#__PURE__*/function () { function ConsoleLogger(context) { _classCallCheck(this, ConsoleLogger); _defineProperty(this, "context", void 0); this.context = context || {}; } _createClass(ConsoleLogger, [{ key: "formatMessage", value: function formatMessage(message, level, context) { var msg = '[' + _contracts.LogLevel[level].toUpperCase() + '] '; if (context && context.app) { msg += context.app + ': '; } if (typeof message === 'string') return msg + message; // basic error formatting msg += "Unexpected ".concat(message.name); if (message.message) msg += " \"".concat(message.message, "\""); // only add stack trace when debugging if (level === _contracts.LogLevel.Debug && message.stack) msg += "\n\nStack trace:\n".concat(message.stack); return msg; } }, { key: "log", value: function log(level, message, context) { var _this$context, _this$context2; // Skip if level is configured and this is below the level if (typeof ((_this$context = this.context) === null || _this$context === void 0 ? void 0 : _this$context.level) === 'number' && level < ((_this$context2 = this.context) === null || _this$context2 === void 0 ? void 0 : _this$context2.level)) { return; } // Add error object to context if (_typeof(message) === 'object' && (context === null || context === void 0 ? void 0 : context.error) === undefined) { context.error = message; } switch (level) { case _contracts.LogLevel.Debug: console.debug(this.formatMessage(message, _contracts.LogLevel.Debug, context), context); break; case _contracts.LogLevel.Info: console.info(this.formatMessage(message, _contracts.LogLevel.Info, context), context); break; case _contracts.LogLevel.Warn: console.warn(this.formatMessage(message, _contracts.LogLevel.Warn, context), context); break; case _contracts.LogLevel.Error: console.error(this.formatMessage(message, _contracts.LogLevel.Error, context), context); break; case _contracts.LogLevel.Fatal: default: console.error(this.formatMessage(message, _contracts.LogLevel.Fatal, context), context); break; } } }, { key: "debug", value: function debug(message, context) { this.log(_contracts.LogLevel.Debug, message, Object.assign({}, this.context, context)); } }, { key: "info", value: function info(message, context) { this.log(_contracts.LogLevel.Info, message, Object.assign({}, this.context, context)); } }, { key: "warn", value: function warn(message, context) { this.log(_contracts.LogLevel.Warn, message, Object.assign({}, this.context, context)); } }, { key: "error", value: function error(message, context) { this.log(_contracts.LogLevel.Error, message, Object.assign({}, this.context, context)); } }, { key: "fatal", value: function fatal(message, context) { this.log(_contracts.LogLevel.Fatal, message, Object.assign({}, this.context, context)); } }]); return ConsoleLogger; }(); /** * Create a new console logger * * @param context Optional global context which should be included for all logging messages */ exports.ConsoleLogger = ConsoleLogger; function buildConsoleLogger(context) { return new ConsoleLogger(context); } //# sourceMappingURL=ConsoleLogger.js.map /***/ }), /***/ "./node_modules/@nextcloud/logger/dist/LoggerBuilder.js": /*!**************************************************************!*\ !*** ./node_modules/@nextcloud/logger/dist/LoggerBuilder.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js"); __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js"); __webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); __webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js"); __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LoggerBuilder = void 0; __webpack_require__(/*! core-js/modules/es.symbol.to-primitive.js */ "./node_modules/core-js/modules/es.symbol.to-primitive.js"); __webpack_require__(/*! core-js/modules/es.date.to-primitive.js */ "./node_modules/core-js/modules/es.date.to-primitive.js"); __webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); __webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js"); __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); __webpack_require__(/*! core-js/modules/es.number.constructor.js */ "./node_modules/core-js/modules/es.number.constructor.js"); var _auth = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.js"); var _contracts = __webpack_require__(/*! ./contracts */ "./node_modules/@nextcloud/logger/dist/contracts.js"); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /** * @notExported */ var LoggerBuilder = /*#__PURE__*/function () { function LoggerBuilder(factory) { _classCallCheck(this, LoggerBuilder); _defineProperty(this, "context", void 0); _defineProperty(this, "factory", void 0); this.context = {}; this.factory = factory; } /** * Set the app name within the logging context * * @param appId App name */ _createClass(LoggerBuilder, [{ key: "setApp", value: function setApp(appId) { this.context.app = appId; return this; } /** * Set the logging level within the logging context * * @param level Logging level */ }, { key: "setLogLevel", value: function setLogLevel(level) { this.context.level = level; return this; } /* eslint-disable jsdoc/no-undefined-types */ /** * Set the user id within the logging context * @param uid User ID * @see {@link detectUser} */ /* eslint-enable jsdoc/no-undefined-types */ }, { key: "setUid", value: function setUid(uid) { this.context.uid = uid; return this; } /** * Detect the currently logged in user and set the user id within the logging context */ }, { key: "detectUser", value: function detectUser() { var user = (0, _auth.getCurrentUser)(); if (user !== null) { this.context.uid = user.uid; } return this; } /** * Detect and use logging level configured in nextcloud config */ }, { key: "detectLogLevel", value: function detectLogLevel() { // eslint-disable-next-line @typescript-eslint/no-this-alias var self = this; // Use arrow function to prevent undefined `this` within event handler var onLoaded = function onLoaded() { if (document.readyState === 'complete' || document.readyState === 'interactive') { var _window$_oc_config$lo, _window$_oc_config; // Up to, including, nextcloud 24 the loglevel was not exposed self.context.level = (_window$_oc_config$lo = (_window$_oc_config = window._oc_config) === null || _window$_oc_config === void 0 ? void 0 : _window$_oc_config.loglevel) !== null && _window$_oc_config$lo !== void 0 ? _window$_oc_config$lo : _contracts.LogLevel.Warn; // Override loglevel if we are in debug mode if (window._oc_debug) { self.context.level = _contracts.LogLevel.Debug; } document.removeEventListener('readystatechange', onLoaded); } else { document.addEventListener('readystatechange', onLoaded); } }; onLoaded(); return this; } /** Build a logger using the logging context and factory */ }, { key: "build", value: function build() { if (this.context.level === undefined) { // No logging level set manually, use the configured one this.detectLogLevel(); } return this.factory(this.context); } }]); return LoggerBuilder; }(); exports.LoggerBuilder = LoggerBuilder; //# sourceMappingURL=LoggerBuilder.js.map /***/ }), /***/ "./node_modules/@nextcloud/logger/dist/contracts.js": /*!**********************************************************!*\ !*** ./node_modules/@nextcloud/logger/dist/contracts.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LogLevel = void 0; var LogLevel = /*#__PURE__*/function (LogLevel) { LogLevel[LogLevel["Debug"] = 0] = "Debug"; LogLevel[LogLevel["Info"] = 1] = "Info"; LogLevel[LogLevel["Warn"] = 2] = "Warn"; LogLevel[LogLevel["Error"] = 3] = "Error"; LogLevel[LogLevel["Fatal"] = 4] = "Fatal"; return LogLevel; }({}); exports.LogLevel = LogLevel; //# sourceMappingURL=contracts.js.map /***/ }), /***/ "./node_modules/@nextcloud/logger/dist/index.js": /*!******************************************************!*\ !*** ./node_modules/@nextcloud/logger/dist/index.js ***! \******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "LogLevel", ({ enumerable: true, get: function get() { return _contracts.LogLevel; } })); exports.getLogger = getLogger; exports.getLoggerBuilder = getLoggerBuilder; var _ConsoleLogger = __webpack_require__(/*! ./ConsoleLogger */ "./node_modules/@nextcloud/logger/dist/ConsoleLogger.js"); var _LoggerBuilder = __webpack_require__(/*! ./LoggerBuilder */ "./node_modules/@nextcloud/logger/dist/LoggerBuilder.js"); var _contracts = __webpack_require__(/*! ./contracts */ "./node_modules/@nextcloud/logger/dist/contracts.js"); /** * Build a customized logger instance */ function getLoggerBuilder() { return new _LoggerBuilder.LoggerBuilder(_ConsoleLogger.buildConsoleLogger); } /** * Get a default logger instance without any configuration */ function getLogger() { return getLoggerBuilder().build(); } //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@nextcloud/vue-select/dist/vue-select.js": /*!***************************************************************!*\ !*** ./node_modules/@nextcloud/vue-select/dist/vue-select.js ***! \***************************************************************/ /***/ (function(module) { !function(e,t){ true?module.exports=t():0}("undefined"!=typeof self?self:this,(function(){return(()=>{var e={646:e=>{e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t{e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},860:e=>{e.exports=function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}},206:e=>{e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}},319:(e,t,n)=>{var o=n(646),i=n(860),s=n(206);e.exports=function(e){return o(e)||i(e)||s()}},8:e=>{function t(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?e.exports=t=function(e){return typeof e}:e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(n)}e.exports=t}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var s=t[o]={exports:{}};return e[o](s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.r(o),n.d(o,{VueSelect:()=>m,default:()=>_,mixins:()=>O});var e=n(319),t=n.n(e),i=n(8),s=n.n(i),r=n(713),a=n.n(r);const l={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer:function(){this.autoscroll&&this.maybeAdjustScroll()},open:function(e){var t=this;this.autoscroll&&e&&this.$nextTick((function(){return t.maybeAdjustScroll()}))}},methods:{maybeAdjustScroll:function(){var e,t=(null===(e=this.$refs.dropdownMenu)||void 0===e?void 0:e.children[this.typeAheadPointer])||!1;if(t){var n=this.getDropdownViewport(),o=t.getBoundingClientRect(),i=o.top,s=o.bottom,r=o.height;if(in.bottom)return this.$refs.dropdownMenu.scrollTop=t.offsetTop-(n.height-r)}},getDropdownViewport:function(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},c={data:function(){return{typeAheadPointer:-1}},watch:{filteredOptions:function(){if(this.resetFocusOnOptionsChange)for(var e=0;e=0;e--)if(this.selectable(this.filteredOptions[e])){this.typeAheadPointer=e;break}},typeAheadDown:function(){for(var e=this.typeAheadPointer+1;e0&&void 0!==arguments[0]?arguments[0]:null;return this.mutableLoading=null==e?!this.mutableLoading:e}}};function p(e,t,n,o,i,s,r,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),o&&(c.functional=!0),s&&(c._scopeId="data-v-"+s),r?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=l):i&&(l=a?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}const d={Deselect:p({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"}},[t("path",{attrs:{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"}})])}),[],!1,null,null,null).exports,OpenIndicator:p({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"}},[t("path",{attrs:{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"}})])}),[],!1,null,null,null).exports},h={inserted:function(e,t,n){var o=n.context;if(o.appendToBody){document.body.appendChild(e);var i=o.$refs.toggle.getBoundingClientRect(),s=i.height,r=i.top,a=i.left,l=i.width,c=window.scrollX||window.pageXOffset,u=window.scrollY||window.pageYOffset;e.unbindPosition=o.calculatePosition(e,o,{width:l+"px",left:c+a+"px",top:u+r+s+"px"})}},unbind:function(e,t,n){n.context.appendToBody&&(e.unbindPosition&&"function"==typeof e.unbindPosition&&e.unbindPosition(),e.parentNode&&e.parentNode.removeChild(e))}};const f=function(e){var t={};return Object.keys(e).sort().forEach((function(n){t[n]=e[n]})),JSON.stringify(t)};var y=0;const b=function(){return++y};function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function v(e){for(var t=1;t-1}},filter:{type:Function,default:function(e,t){var n=this;return e.filter((function(e){var o=n.getOptionLabel(e);return"number"==typeof o&&(o=o.toString()),n.filterBy(e,o,t)}))}},createOption:{type:Function,default:function(e){return"object"===s()(this.optionList[0])?a()({},this.label,e):e}},resetFocusOnOptionsChange:{type:Boolean,default:!0},resetOnOptionsChange:{default:!1,validator:function(e){return["function","boolean"].includes(s()(e))}},clearSearchOnBlur:{type:Function,default:function(e){var t=e.clearSearchOnSelect,n=e.multiple;return t&&!n}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:function(){return[13]}},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:function(e,t){return e}},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default:function(e,t,n){var o=n.width,i=n.top,s=n.left;e.style.top=i,e.style.left=s,e.style.width=o}},dropdownShouldOpen:{type:Function,default:function(e){var t=e.noDrop,n=e.open,o=e.mutableLoading;return!t&&(n&&!o)}},keyboardFocusBorder:{type:Boolean,default:!1},uid:{type:[String,Number],default:function(){return b()}}},data:function(){return{search:"",open:!1,isComposing:!1,isKeyboardNavigation:!1,pushedTags:[],_value:[]}},computed:{isTrackingValues:function(){return void 0===this.value||this.$options.propsData.hasOwnProperty("reduce")},selectedValue:function(){var e=this.value;return this.isTrackingValues&&(e=this.$data._value),null!=e&&""!==e?[].concat(e):[]},optionList:function(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl:function(){return this.$scopedSlots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope:function(){var e=this,t={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:v({id:this.inputId,disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,role:"combobox","aria-autocomplete":"list","aria-label":this.ariaLabelCombobox,"aria-controls":"vs".concat(this.uid,"__listbox"),"aria-owns":"vs".concat(this.uid,"__listbox"),"aria-expanded":this.dropdownOpen.toString(),ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":"vs".concat(this.uid,"__option-").concat(this.typeAheadPointer)}:{}),events:{compositionstart:function(){return e.isComposing=!0},compositionend:function(){return e.isComposing=!1},keydown:this.onSearchKeyDown,keypress:this.onSearchKeyPress,blur:this.onSearchBlur,focus:this.onSearchFocus,input:function(t){return e.search=t.target.value}}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:t,listFooter:t,header:v({},t,{deselect:this.deselect}),footer:v({},t,{deselect:this.deselect})}},childComponents:function(){return v({},d,{},this.components)},stateClasses:function(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching:function(){return!!this.search},dropdownOpen:function(){return this.dropdownShouldOpen(this)},searchPlaceholder:function(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions:function(){var e=this,t=function(t){return null!==e.limit?t.slice(0,e.limit):t},n=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return t(n);var o=this.search.length?this.filter(n,this.search,this):n;if(this.taggable&&this.search.length){var i=this.createOption(this.search);this.optionExists(i)||o.unshift(i)}return t(o)},isValueEmpty:function(){return 0===this.selectedValue.length},showClearButton:function(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options:function(e,t){var n=this;!this.taggable&&("function"==typeof n.resetOnOptionsChange?n.resetOnOptionsChange(e,t,n.selectedValue):n.resetOnOptionsChange)&&this.clearSelection(),this.value&&this.isTrackingValues&&this.setInternalValueFromOptions(this.value)},value:{immediate:!0,handler:function(e){this.isTrackingValues&&this.setInternalValueFromOptions(e)}},multiple:function(){this.clearSelection()},open:function(e){this.$emit(e?"open":"close")},search:function(e){e.length&&(this.open=!0)}},created:function(){this.mutableLoading=this.loading,this.$on("option:created",this.pushTag)},methods:{setInternalValueFromOptions:function(e){var t=this;Array.isArray(e)?this.$data._value=e.map((function(e){return t.findOptionFromReducedValue(e)})):this.$data._value=this.findOptionFromReducedValue(e)},select:function(e){this.$emit("option:selecting",e),this.isOptionSelected(e)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(e):(this.taggable&&!this.optionExists(e)&&this.$emit("option:created",e),this.multiple&&(e=this.selectedValue.concat(e)),this.updateValue(e),this.$emit("option:selected",e)),this.onAfterSelect(e)},deselect:function(e){var t=this;this.$emit("option:deselecting",e),this.updateValue(this.selectedValue.filter((function(n){return!t.optionComparator(n,e)}))),this.$emit("option:deselected",e)},keyboardDeselect:function(e,t){var n,o;this.deselect(e);var i=null===(n=this.$refs.deselectButtons)||void 0===n?void 0:n[t+1],s=null===(o=this.$refs.deselectButtons)||void 0===o?void 0:o[t-1],r=null!=i?i:s;r?r.focus():this.searchEl.focus()},clearSelection:function(){this.updateValue(this.multiple?[]:null),this.searchEl.focus()},onAfterSelect:function(e){var t=this;this.closeOnSelect&&(this.open=!this.open),this.clearSearchOnSelect&&(this.search=""),this.noDrop&&this.multiple&&this.$nextTick((function(){return t.$refs.search.focus()}))},updateValue:function(e){var t=this;void 0===this.value&&(this.$data._value=e),null!==e&&(e=Array.isArray(e)?e.map((function(e){return t.reduce(e)})):this.reduce(e)),this.$emit("input",e)},toggleDropdown:function(e){var n=e.target!==this.searchEl;n&&e.preventDefault();var o=[].concat(t()(this.$refs.deselectButtons||[]),t()([this.$refs.clearButton]||0));void 0===this.searchEl||o.filter(Boolean).some((function(t){return t.contains(e.target)||t===e.target}))?e.preventDefault():this.open&&n?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected:function(e){var t=this;return this.selectedValue.some((function(n){return t.optionComparator(n,e)}))},isOptionDeselectable:function(e){return this.isOptionSelected(e)&&this.deselectFromDropdown},hasKeyboardFocusBorder:function(e){return!(!this.keyboardFocusBorder||!this.isKeyboardNavigation)&&e===this.typeAheadPointer},optionComparator:function(e,t){return this.getOptionKey(e)===this.getOptionKey(t)},findOptionFromReducedValue:function(e){var n=this,o=[].concat(t()(this.options),t()(this.pushedTags)).filter((function(t){return JSON.stringify(n.reduce(t))===JSON.stringify(e)}));return 1===o.length?o[0]:o.find((function(e){return n.optionComparator(e,n.$data._value)}))||e},closeSearchOptions:function(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue:function(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){var e=null;this.multiple&&(e=t()(this.selectedValue.slice(0,this.selectedValue.length-1))),this.updateValue(e)}},optionExists:function(e){var t=this;return this.optionList.some((function(n){return t.optionComparator(n,e)}))},optionAriaSelected:function(e){return this.selectable(e)?String(this.isOptionSelected(e)):null},normalizeOptionForSlot:function(e){return"object"===s()(e)?e:a()({},this.label,e)},pushTag:function(e){this.pushedTags.push(e)},onEscape:function(){this.search.length?this.search="":this.open=!1},onSearchBlur:function(){if(!this.mousedown||this.searching){var e=this.clearSearchOnSelect,t=this.multiple;return this.clearSearchOnBlur({clearSearchOnSelect:e,multiple:t})&&(this.search=""),void this.closeSearchOptions()}this.mousedown=!1,0!==this.search.length||0!==this.options.length||this.closeSearchOptions()},onSearchFocus:function(){this.open=!0,this.$emit("search:focus")},onMousedown:function(){this.mousedown=!0},onMouseUp:function(){this.mousedown=!1},onMouseMove:function(e,t){this.isKeyboardNavigation=!1,this.selectable(e)&&(this.typeAheadPointer=t)},onSearchKeyDown:function(e){var t=this,n=function(e){if(e.preventDefault(),t.open)return!t.isComposing&&t.typeAheadSelect();t.open=!0},o={8:function(e){return t.maybeDeleteValue()},9:function(e){return t.onTab()},27:function(e){return t.onEscape()},38:function(e){if(e.preventDefault(),t.isKeyboardNavigation=!0,t.open)return t.typeAheadUp();t.open=!0},40:function(e){if(e.preventDefault(),t.isKeyboardNavigation=!0,t.open)return t.typeAheadDown();t.open=!0}};this.selectOnKeyCodes.forEach((function(e){return o[e]=n}));var i=this.mapKeydown(o,this);if("function"==typeof i[e.keyCode])return i[e.keyCode](e)},onSearchKeyPress:function(e){this.open||32!==e.keyCode||(e.preventDefault(),this.open=!0)}}},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"v-select",class:e.stateClasses,attrs:{id:"v-select-"+e.uid,dir:e.dir}},[e._t("header",null,null,e.scope.header),e._v(" "),n("div",{ref:"toggle",staticClass:"vs__dropdown-toggle"},[n("div",{ref:"selectedOptions",staticClass:"vs__selected-options",on:{mousedown:e.toggleDropdown}},[e._l(e.selectedValue,(function(t,o){return e._t("selected-option-container",[n("span",{key:e.getOptionKey(t),staticClass:"vs__selected"},[e._t("selected-option",[e._v("\n "+e._s(e.getOptionLabel(t))+"\n ")],null,e.normalizeOptionForSlot(t)),e._v(" "),e.multiple?n("button",{ref:"deselectButtons",refInFor:!0,staticClass:"vs__deselect",attrs:{disabled:e.disabled,type:"button",title:e.ariaLabelDeselectOption(e.getOptionLabel(t)),"aria-label":e.ariaLabelDeselectOption(e.getOptionLabel(t))},on:{mousedown:function(n){return n.stopPropagation(),e.deselect(t)},keydown:function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:e.keyboardDeselect(t,o)}}},[n(e.childComponents.Deselect,{tag:"component"})],1):e._e()],2)],{option:e.normalizeOptionForSlot(t),deselect:e.deselect,multiple:e.multiple,disabled:e.disabled})})),e._v(" "),e._t("search",[n("input",e._g(e._b({staticClass:"vs__search"},"input",e.scope.search.attributes,!1),e.scope.search.events))],null,e.scope.search)],2),e._v(" "),n("div",{ref:"actions",staticClass:"vs__actions"},[n("button",{directives:[{name:"show",rawName:"v-show",value:e.showClearButton,expression:"showClearButton"}],ref:"clearButton",staticClass:"vs__clear",attrs:{disabled:e.disabled,type:"button",title:e.ariaLabelClearSelected,"aria-label":e.ariaLabelClearSelected},on:{click:e.clearSelection}},[n(e.childComponents.Deselect,{tag:"component"})],1),e._v(" "),e.noDrop?e._e():n("button",{ref:"openIndicatorButton",staticClass:"vs__open-indicator-button",attrs:{type:"button",tabindex:"-1","aria-labelledby":"vs"+e.uid+"__listbox","aria-controls":"vs"+e.uid+"__listbox","aria-expanded":e.dropdownOpen.toString()},on:{mousedown:e.toggleDropdown}},[e._t("open-indicator",[n(e.childComponents.OpenIndicator,e._b({tag:"component"},"component",e.scope.openIndicator.attributes,!1))],null,e.scope.openIndicator)],2),e._v(" "),e._t("spinner",[n("div",{directives:[{name:"show",rawName:"v-show",value:e.mutableLoading,expression:"mutableLoading"}],staticClass:"vs__spinner"},[e._v("Loading...")])],null,e.scope.spinner)],2)]),e._v(" "),n("transition",{attrs:{name:e.transition}},[e.dropdownOpen?n("ul",{directives:[{name:"append-to-body",rawName:"v-append-to-body"}],key:"vs"+e.uid+"__listbox",ref:"dropdownMenu",staticClass:"vs__dropdown-menu",attrs:{id:"vs"+e.uid+"__listbox",role:"listbox","aria-label":e.ariaLabelListbox,"aria-multiselectable":e.multiple,tabindex:"-1"},on:{mousedown:function(t){return t.preventDefault(),e.onMousedown(t)},mouseup:e.onMouseUp}},[e._t("list-header",null,null,e.scope.listHeader),e._v(" "),e._l(e.filteredOptions,(function(t,o){return n("li",{key:e.getOptionKey(t),staticClass:"vs__dropdown-option",class:{"vs__dropdown-option--deselect":e.isOptionDeselectable(t)&&o===e.typeAheadPointer,"vs__dropdown-option--selected":e.isOptionSelected(t),"vs__dropdown-option--highlight":o===e.typeAheadPointer,"vs__dropdown-option--kb-focus":e.hasKeyboardFocusBorder(o),"vs__dropdown-option--disabled":!e.selectable(t)},attrs:{id:"vs"+e.uid+"__option-"+o,role:"option","aria-selected":e.optionAriaSelected(t)},on:{mousemove:function(n){return e.onMouseMove(t,o)},click:function(n){n.preventDefault(),n.stopPropagation(),e.selectable(t)&&e.select(t)}}},[e._t("option",[e._v("\n "+e._s(e.getOptionLabel(t))+"\n ")],null,e.normalizeOptionForSlot(t))],2)})),e._v(" "),0===e.filteredOptions.length?n("li",{staticClass:"vs__no-options"},[e._t("no-options",[e._v("\n Sorry, no matching options.\n ")],null,e.scope.noOptions)],2):e._e(),e._v(" "),e._t("list-footer",null,null,e.scope.listFooter)],2):n("ul",{staticStyle:{display:"none",visibility:"hidden"},attrs:{id:"vs"+e.uid+"__listbox",role:"listbox","aria-label":e.ariaLabelListbox}})]),e._v(" "),e._t("footer",null,null,e.scope.footer)],2)}),[],!1,null,null,null).exports,O={ajax:u,pointer:c,pointerScroll:l},_=m})(),o})()})); //# sourceMappingURL=vue-select.js.map /***/ }), /***/ "./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/index.js": /*!*******************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/index.js ***! \*******************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.clearAll = clearAll; exports.clearNonPersistent = clearNonPersistent; exports.getBuilder = getBuilder; var _storagebuilder = _interopRequireDefault(__webpack_require__(/*! ./storagebuilder */ "./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/storagebuilder.js")); var _scopedstorage = _interopRequireDefault(__webpack_require__(/*! ./scopedstorage */ "./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/scopedstorage.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getBuilder(appId) { return new _storagebuilder.default(appId); } function clearStorage(storage, pred) { Object.keys(storage).filter(k => pred ? pred(k) : true).map(storage.removeItem.bind(storage)); } function clearAll() { const storages = [window.sessionStorage, window.localStorage]; storages.map(s => clearStorage(s)); } function clearNonPersistent() { const storages = [window.sessionStorage, window.localStorage]; storages.map(s => clearStorage(s, k => !k.startsWith(_scopedstorage.default.GLOBAL_SCOPE_PERSISTENT))); } //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/scopedstorage.js": /*!***************************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/scopedstorage.js ***! \***************************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } class ScopedStorage { constructor(scope, wrapped, persistent) { _defineProperty(this, "scope", void 0); _defineProperty(this, "wrapped", void 0); this.scope = `${persistent ? ScopedStorage.GLOBAL_SCOPE_PERSISTENT : ScopedStorage.GLOBAL_SCOPE_VOLATILE}_${btoa(scope)}_`; this.wrapped = wrapped; } scopeKey(key) { return `${this.scope}${key}`; } setItem(key, value) { this.wrapped.setItem(this.scopeKey(key), value); } getItem(key) { return this.wrapped.getItem(this.scopeKey(key)); } removeItem(key) { this.wrapped.removeItem(this.scopeKey(key)); } clear() { Object.keys(this.wrapped).filter(key => key.startsWith(this.scope)).map(this.wrapped.removeItem.bind(this.wrapped)); } } exports["default"] = ScopedStorage; _defineProperty(ScopedStorage, "GLOBAL_SCOPE_VOLATILE", 'nextcloud_vol'); _defineProperty(ScopedStorage, "GLOBAL_SCOPE_PERSISTENT", 'nextcloud_per'); //# sourceMappingURL=scopedstorage.js.map /***/ }), /***/ "./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/storagebuilder.js": /*!****************************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/storagebuilder.js ***! \****************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _scopedstorage = _interopRequireDefault(__webpack_require__(/*! ./scopedstorage */ "./node_modules/@nextcloud/vue/node_modules/@nextcloud/browser-storage/dist/scopedstorage.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } class StorageBuilder { constructor(appId) { _defineProperty(this, "appId", void 0); _defineProperty(this, "persisted", false); _defineProperty(this, "clearedOnLogout", false); this.appId = appId; } persist() { let persist = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; this.persisted = persist; return this; } clearOnLogout() { let clear = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; this.clearedOnLogout = clear; return this; } build() { return new _scopedstorage.default(this.appId, this.persisted ? window.localStorage : window.sessionStorage, !this.clearedOnLogout); } } exports["default"] = StorageBuilder; //# sourceMappingURL=storagebuilder.js.map /***/ }), /***/ "./node_modules/@vue/devtools-api/lib/esm/const.js": /*!*********************************************************!*\ !*** ./node_modules/@vue/devtools-api/lib/esm/const.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ HOOK_PLUGIN_SETTINGS_SET: () => (/* binding */ HOOK_PLUGIN_SETTINGS_SET), /* harmony export */ HOOK_SETUP: () => (/* binding */ HOOK_SETUP) /* harmony export */ }); const HOOK_SETUP = 'devtools-plugin:setup'; const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'; /***/ }), /***/ "./node_modules/@vue/devtools-api/lib/esm/env.js": /*!*******************************************************!*\ !*** ./node_modules/@vue/devtools-api/lib/esm/env.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDevtoolsGlobalHook: () => (/* binding */ getDevtoolsGlobalHook), /* harmony export */ getTarget: () => (/* binding */ getTarget), /* harmony export */ isProxyAvailable: () => (/* binding */ isProxyAvailable) /* harmony export */ }); function getDevtoolsGlobalHook() { return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; } function getTarget() { // @ts-expect-error navigator and windows are not available in all environments return (typeof navigator !== 'undefined' && typeof window !== 'undefined') ? window : typeof globalThis !== 'undefined' ? globalThis : {}; } const isProxyAvailable = typeof Proxy === 'function'; /***/ }), /***/ "./node_modules/@vue/devtools-api/lib/esm/index.js": /*!*********************************************************!*\ !*** ./node_modules/@vue/devtools-api/lib/esm/index.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ isPerformanceSupported: () => (/* reexport safe */ _time_js__WEBPACK_IMPORTED_MODULE_0__.isPerformanceSupported), /* harmony export */ now: () => (/* reexport safe */ _time_js__WEBPACK_IMPORTED_MODULE_0__.now), /* harmony export */ setupDevtoolsPlugin: () => (/* binding */ setupDevtoolsPlugin) /* harmony export */ }); /* harmony import */ var _env_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./env.js */ "./node_modules/@vue/devtools-api/lib/esm/env.js"); /* harmony import */ var _const_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./const.js */ "./node_modules/@vue/devtools-api/lib/esm/const.js"); /* harmony import */ var _proxy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./proxy.js */ "./node_modules/@vue/devtools-api/lib/esm/proxy.js"); /* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./time.js */ "./node_modules/@vue/devtools-api/lib/esm/time.js"); function setupDevtoolsPlugin(pluginDescriptor, setupFn) { const descriptor = pluginDescriptor; const target = (0,_env_js__WEBPACK_IMPORTED_MODULE_1__.getTarget)(); const hook = (0,_env_js__WEBPACK_IMPORTED_MODULE_1__.getDevtoolsGlobalHook)(); const enableProxy = _env_js__WEBPACK_IMPORTED_MODULE_1__.isProxyAvailable && descriptor.enableEarlyProxy; if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { hook.emit(_const_js__WEBPACK_IMPORTED_MODULE_2__.HOOK_SETUP, pluginDescriptor, setupFn); } else { const proxy = enableProxy ? new _proxy_js__WEBPACK_IMPORTED_MODULE_3__.ApiProxy(descriptor, hook) : null; const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; list.push({ pluginDescriptor: descriptor, setupFn, proxy, }); if (proxy) { setupFn(proxy.proxiedTarget); } } } /***/ }), /***/ "./node_modules/@vue/devtools-api/lib/esm/proxy.js": /*!*********************************************************!*\ !*** ./node_modules/@vue/devtools-api/lib/esm/proxy.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ApiProxy: () => (/* binding */ ApiProxy) /* harmony export */ }); /* harmony import */ var _const_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./const.js */ "./node_modules/@vue/devtools-api/lib/esm/const.js"); /* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./time.js */ "./node_modules/@vue/devtools-api/lib/esm/time.js"); class ApiProxy { constructor(plugin, hook) { this.target = null; this.targetQueue = []; this.onQueue = []; this.plugin = plugin; this.hook = hook; const defaultSettings = {}; if (plugin.settings) { for (const id in plugin.settings) { const item = plugin.settings[id]; defaultSettings[id] = item.defaultValue; } } const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; let currentSettings = Object.assign({}, defaultSettings); try { const raw = localStorage.getItem(localSettingsSaveId); const data = JSON.parse(raw); Object.assign(currentSettings, data); } catch (e) { // noop } this.fallbacks = { getSettings() { return currentSettings; }, setSettings(value) { try { localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); } catch (e) { // noop } currentSettings = value; }, now() { return (0,_time_js__WEBPACK_IMPORTED_MODULE_0__.now)(); }, }; if (hook) { hook.on(_const_js__WEBPACK_IMPORTED_MODULE_1__.HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { if (pluginId === this.plugin.id) { this.fallbacks.setSettings(value); } }); } this.proxiedOn = new Proxy({}, { get: (_target, prop) => { if (this.target) { return this.target.on[prop]; } else { return (...args) => { this.onQueue.push({ method: prop, args, }); }; } }, }); this.proxiedTarget = new Proxy({}, { get: (_target, prop) => { if (this.target) { return this.target[prop]; } else if (prop === 'on') { return this.proxiedOn; } else if (Object.keys(this.fallbacks).includes(prop)) { return (...args) => { this.targetQueue.push({ method: prop, args, resolve: () => { }, }); return this.fallbacks[prop](...args); }; } else { return (...args) => { return new Promise((resolve) => { this.targetQueue.push({ method: prop, args, resolve, }); }); }; } }, }); } async setRealTarget(target) { this.target = target; for (const item of this.onQueue) { this.target.on[item.method](...item.args); } for (const item of this.targetQueue) { item.resolve(await this.target[item.method](...item.args)); } } } /***/ }), /***/ "./node_modules/@vue/devtools-api/lib/esm/time.js": /*!********************************************************!*\ !*** ./node_modules/@vue/devtools-api/lib/esm/time.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ isPerformanceSupported: () => (/* binding */ isPerformanceSupported), /* harmony export */ now: () => (/* binding */ now) /* harmony export */ }); let supported; let perf; function isPerformanceSupported() { var _a; if (supported !== undefined) { return supported; } if (typeof window !== 'undefined' && window.performance) { supported = true; perf = window.performance; } else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { supported = true; perf = globalThis.perf_hooks.performance; } else { supported = false; } return supported; } function now() { return isPerformanceSupported() ? perf.now() : Date.now(); } /***/ }), /***/ "./node_modules/autosize/dist/autosize.esm.js": /*!****************************************************!*\ !*** ./node_modules/autosize/dist/autosize.esm.js ***! \****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); var e=new Map;function t(t){var o=e.get(t);o&&o.destroy()}function o(t){var o=e.get(t);o&&o.update()}var r=null;"undefined"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,o){return t&&Array.prototype.forEach.call(t.length?t:[t],function(t){return function(t){if(t&&t.nodeName&&"TEXTAREA"===t.nodeName&&!e.has(t)){var o,r=null,n=window.getComputedStyle(t),i=(o=t.value,function(){a({testForHeightReduction:""===o||!t.value.startsWith(o),restoreTextAlign:null}),o=t.value}),l=function(o){t.removeEventListener("autosize:destroy",l),t.removeEventListener("autosize:update",s),t.removeEventListener("input",i),window.removeEventListener("resize",s),Object.keys(o).forEach(function(e){return t.style[e]=o[e]}),e.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",l),t.addEventListener("autosize:update",s),t.addEventListener("input",i),window.addEventListener("resize",s),t.style.overflowX="hidden",t.style.wordWrap="break-word",e.set(t,{destroy:l,update:s}),s()}function a(e){var o,i,l=e.restoreTextAlign,s=void 0===l?null:l,d=e.testForHeightReduction,u=void 0===d||d,c=n.overflowY;if(0!==t.scrollHeight&&("vertical"===n.resize?t.style.resize="none":"both"===n.resize&&(t.style.resize="horizontal"),u&&(o=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0],o=e[1];t.style.scrollBehavior="auto",t.scrollTop=o,t.style.scrollBehavior=null})}}(t),t.style.height=""),i="content-box"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),"none"!==n.maxHeight&&i>parseFloat(n.maxHeight)?("hidden"===n.overflowY&&(t.style.overflow="scroll"),i=parseFloat(n.maxHeight)):"hidden"!==n.overflowY&&(t.style.overflow="hidden"),t.style.height=i+"px",s&&(t.style.textAlign=s),o&&o(),r!==i&&(t.dispatchEvent(new Event("autosize:resized",{bubbles:!0})),r=i),c!==n.overflow&&!s)){var v=n.textAlign;"hidden"===n.overflow&&(t.style.textAlign="start"===v?"end":"start"),a({restoreTextAlign:v,testForHeightReduction:!0})}}function s(){a({testForHeightReduction:!0,restoreTextAlign:null})}}(t)}),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r;/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (n); /***/ }), /***/ "./node_modules/axios/index.js": /*!*************************************!*\ !*** ./node_modules/axios/index.js ***! \*************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js"); /***/ }), /***/ "./node_modules/axios/lib/adapters/xhr.js": /*!************************************************!*\ !*** ./node_modules/axios/lib/adapters/xhr.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js"); var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js"); var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js"); var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js"); var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js"); var transitionalDefaults = __webpack_require__(/*! ../defaults/transitional */ "./node_modules/axios/lib/defaults/transitional.js"); var AxiosError = __webpack_require__(/*! ../core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); var CanceledError = __webpack_require__(/*! ../cancel/CanceledError */ "./node_modules/axios/lib/cancel/CanceledError.js"); var parseProtocol = __webpack_require__(/*! ../helpers/parseProtocol */ "./node_modules/axios/lib/helpers/parseProtocol.js"); module.exports = function xhrAdapter(config) { return new Promise(function dispatchXhrRequest(resolve, reject) { var requestData = config.data; var requestHeaders = config.headers; var responseType = config.responseType; var onCanceled; function done() { if (config.cancelToken) { config.cancelToken.unsubscribe(onCanceled); } if (config.signal) { config.signal.removeEventListener('abort', onCanceled); } } if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) { delete requestHeaders['Content-Type']; // Let the browser set it } var request = new XMLHttpRequest(); // HTTP basic authentication if (config.auth) { var username = config.auth.username || ''; var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); } var fullPath = buildFullPath(config.baseURL, config.url); request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); // Set the request timeout in MS request.timeout = config.timeout; function onloadend() { if (!request) { return; } // Prepare the response var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; var response = { data: responseData, status: request.status, statusText: request.statusText, headers: responseHeaders, config: config, request: request }; settle(function _resolve(value) { resolve(value); done(); }, function _reject(err) { reject(err); done(); }, response); // Clean up request request = null; } if ('onloadend' in request) { // Use onloadend if available request.onloadend = onloadend; } else { // Listen for ready state to emulate onloadend request.onreadystatechange = function handleLoad() { if (!request || request.readyState !== 4) { return; } // The request errored out and we didn't get a response, this will be // handled by onerror instead // With one exception: request that using file: protocol, most browsers // will return status as 0 even though it's a successful request if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { return; } // readystate handler is calling before onerror or ontimeout handlers, // so we should call onloadend on the next 'tick' setTimeout(onloadend); }; } // Handle browser request cancellation (as opposed to a manual cancellation) request.onabort = function handleAbort() { if (!request) { return; } reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); // Clean up request request = null; }; // Handle low level network errors request.onerror = function handleError() { // Real errors are hidden from us by the browser // onerror should only fire if it's a network error reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request)); // Clean up request request = null; }; // Handle timeout request.ontimeout = function handleTimeout() { var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; var transitional = config.transitional || transitionalDefaults; if (config.timeoutErrorMessage) { timeoutErrorMessage = config.timeoutErrorMessage; } reject(new AxiosError( timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request)); // Clean up request request = null; }; // Add xsrf header // This is only done if running in a standard browser environment. // Specifically not if we're in a web worker, or react-native. if (utils.isStandardBrowserEnv()) { // Add xsrf header var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined; if (xsrfValue) { requestHeaders[config.xsrfHeaderName] = xsrfValue; } } // Add headers to the request if ('setRequestHeader' in request) { utils.forEach(requestHeaders, function setRequestHeader(val, key) { if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { // Remove Content-Type if data is undefined delete requestHeaders[key]; } else { // Otherwise add header to the request request.setRequestHeader(key, val); } }); } // Add withCredentials to request if needed if (!utils.isUndefined(config.withCredentials)) { request.withCredentials = !!config.withCredentials; } // Add responseType to request if needed if (responseType && responseType !== 'json') { request.responseType = config.responseType; } // Handle progress if needed if (typeof config.onDownloadProgress === 'function') { request.addEventListener('progress', config.onDownloadProgress); } // Not all browsers support upload events if (typeof config.onUploadProgress === 'function' && request.upload) { request.upload.addEventListener('progress', config.onUploadProgress); } if (config.cancelToken || config.signal) { // Handle cancellation // eslint-disable-next-line func-names onCanceled = function(cancel) { if (!request) { return; } reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel); request.abort(); request = null; }; config.cancelToken && config.cancelToken.subscribe(onCanceled); if (config.signal) { config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); } } if (!requestData) { requestData = null; } var protocol = parseProtocol(fullPath); if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) { reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); return; } // Send the request request.send(requestData); }); }; /***/ }), /***/ "./node_modules/axios/lib/axios.js": /*!*****************************************!*\ !*** ./node_modules/axios/lib/axios.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js"); var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults/index.js"); /** * Create an instance of Axios * * @param {Object} defaultConfig The default config for the instance * @return {Axios} A new instance of Axios */ function createInstance(defaultConfig) { var context = new Axios(defaultConfig); var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance utils.extend(instance, Axios.prototype, context); // Copy context to instance utils.extend(instance, context); // Factory for creating new instances instance.create = function create(instanceConfig) { return createInstance(mergeConfig(defaultConfig, instanceConfig)); }; return instance; } // Create the default instance to be exported var axios = createInstance(defaults); // Expose Axios class to allow class inheritance axios.Axios = Axios; // Expose Cancel & CancelToken axios.CanceledError = __webpack_require__(/*! ./cancel/CanceledError */ "./node_modules/axios/lib/cancel/CanceledError.js"); axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js"); axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); axios.VERSION = (__webpack_require__(/*! ./env/data */ "./node_modules/axios/lib/env/data.js").version); axios.toFormData = __webpack_require__(/*! ./helpers/toFormData */ "./node_modules/axios/lib/helpers/toFormData.js"); // Expose AxiosError class axios.AxiosError = __webpack_require__(/*! ../lib/core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); // alias for CanceledError for backward compatibility axios.Cancel = axios.CanceledError; // Expose all/spread axios.all = function all(promises) { return Promise.all(promises); }; axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js"); // Expose isAxiosError axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js"); module.exports = axios; // Allow use of default import syntax in TypeScript module.exports["default"] = axios; /***/ }), /***/ "./node_modules/axios/lib/cancel/CancelToken.js": /*!******************************************************!*\ !*** ./node_modules/axios/lib/cancel/CancelToken.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var CanceledError = __webpack_require__(/*! ./CanceledError */ "./node_modules/axios/lib/cancel/CanceledError.js"); /** * A `CancelToken` is an object that can be used to request cancellation of an operation. * * @class * @param {Function} executor The executor function. */ function CancelToken(executor) { if (typeof executor !== 'function') { throw new TypeError('executor must be a function.'); } var resolvePromise; this.promise = new Promise(function promiseExecutor(resolve) { resolvePromise = resolve; }); var token = this; // eslint-disable-next-line func-names this.promise.then(function(cancel) { if (!token._listeners) return; var i; var l = token._listeners.length; for (i = 0; i < l; i++) { token._listeners[i](cancel); } token._listeners = null; }); // eslint-disable-next-line func-names this.promise.then = function(onfulfilled) { var _resolve; // eslint-disable-next-line func-names var promise = new Promise(function(resolve) { token.subscribe(resolve); _resolve = resolve; }).then(onfulfilled); promise.cancel = function reject() { token.unsubscribe(_resolve); }; return promise; }; executor(function cancel(message) { if (token.reason) { // Cancellation has already been requested return; } token.reason = new CanceledError(message); resolvePromise(token.reason); }); } /** * Throws a `CanceledError` if cancellation has been requested. */ CancelToken.prototype.throwIfRequested = function throwIfRequested() { if (this.reason) { throw this.reason; } }; /** * Subscribe to the cancel signal */ CancelToken.prototype.subscribe = function subscribe(listener) { if (this.reason) { listener(this.reason); return; } if (this._listeners) { this._listeners.push(listener); } else { this._listeners = [listener]; } }; /** * Unsubscribe from the cancel signal */ CancelToken.prototype.unsubscribe = function unsubscribe(listener) { if (!this._listeners) { return; } var index = this._listeners.indexOf(listener); if (index !== -1) { this._listeners.splice(index, 1); } }; /** * Returns an object that contains a new `CancelToken` and a function that, when called, * cancels the `CancelToken`. */ CancelToken.source = function source() { var cancel; var token = new CancelToken(function executor(c) { cancel = c; }); return { token: token, cancel: cancel }; }; module.exports = CancelToken; /***/ }), /***/ "./node_modules/axios/lib/cancel/CanceledError.js": /*!********************************************************!*\ !*** ./node_modules/axios/lib/cancel/CanceledError.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var AxiosError = __webpack_require__(/*! ../core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); /** * A `CanceledError` is an object that is thrown when an operation is canceled. * * @class * @param {string=} message The message. */ function CanceledError(message) { // eslint-disable-next-line no-eq-null,eqeqeq AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED); this.name = 'CanceledError'; } utils.inherits(CanceledError, AxiosError, { __CANCEL__: true }); module.exports = CanceledError; /***/ }), /***/ "./node_modules/axios/lib/cancel/isCancel.js": /*!***************************************************!*\ !*** ./node_modules/axios/lib/cancel/isCancel.js ***! \***************************************************/ /***/ ((module) => { "use strict"; module.exports = function isCancel(value) { return !!(value && value.__CANCEL__); }; /***/ }), /***/ "./node_modules/axios/lib/core/Axios.js": /*!**********************************************!*\ !*** ./node_modules/axios/lib/core/Axios.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js"); var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js"); var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); var buildFullPath = __webpack_require__(/*! ./buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js"); var validator = __webpack_require__(/*! ../helpers/validator */ "./node_modules/axios/lib/helpers/validator.js"); var validators = validator.validators; /** * Create a new instance of Axios * * @param {Object} instanceConfig The default config for the instance */ function Axios(instanceConfig) { this.defaults = instanceConfig; this.interceptors = { request: new InterceptorManager(), response: new InterceptorManager() }; } /** * Dispatch a request * * @param {Object} config The config specific for this request (merged with this.defaults) */ Axios.prototype.request = function request(configOrUrl, config) { /*eslint no-param-reassign:0*/ // Allow for axios('example/url'[, config]) a la fetch API if (typeof configOrUrl === 'string') { config = config || {}; config.url = configOrUrl; } else { config = configOrUrl || {}; } config = mergeConfig(this.defaults, config); // Set config.method if (config.method) { config.method = config.method.toLowerCase(); } else if (this.defaults.method) { config.method = this.defaults.method.toLowerCase(); } else { config.method = 'get'; } var transitional = config.transitional; if (transitional !== undefined) { validator.assertOptions(transitional, { silentJSONParsing: validators.transitional(validators.boolean), forcedJSONParsing: validators.transitional(validators.boolean), clarifyTimeoutError: validators.transitional(validators.boolean) }, false); } // filter out skipped interceptors var requestInterceptorChain = []; var synchronousRequestInterceptors = true; this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { return; } synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); }); var responseInterceptorChain = []; this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); }); var promise; if (!synchronousRequestInterceptors) { var chain = [dispatchRequest, undefined]; Array.prototype.unshift.apply(chain, requestInterceptorChain); chain = chain.concat(responseInterceptorChain); promise = Promise.resolve(config); while (chain.length) { promise = promise.then(chain.shift(), chain.shift()); } return promise; } var newConfig = config; while (requestInterceptorChain.length) { var onFulfilled = requestInterceptorChain.shift(); var onRejected = requestInterceptorChain.shift(); try { newConfig = onFulfilled(newConfig); } catch (error) { onRejected(error); break; } } try { promise = dispatchRequest(newConfig); } catch (error) { return Promise.reject(error); } while (responseInterceptorChain.length) { promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift()); } return promise; }; Axios.prototype.getUri = function getUri(config) { config = mergeConfig(this.defaults, config); var fullPath = buildFullPath(config.baseURL, config.url); return buildURL(fullPath, config.params, config.paramsSerializer); }; // Provide aliases for supported request methods utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { /*eslint func-names:0*/ Axios.prototype[method] = function(url, config) { return this.request(mergeConfig(config || {}, { method: method, url: url, data: (config || {}).data })); }; }); utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { /*eslint func-names:0*/ function generateHTTPMethod(isForm) { return function httpMethod(url, data, config) { return this.request(mergeConfig(config || {}, { method: method, headers: isForm ? { 'Content-Type': 'multipart/form-data' } : {}, url: url, data: data })); }; } Axios.prototype[method] = generateHTTPMethod(); Axios.prototype[method + 'Form'] = generateHTTPMethod(true); }); module.exports = Axios; /***/ }), /***/ "./node_modules/axios/lib/core/AxiosError.js": /*!***************************************************!*\ !*** ./node_modules/axios/lib/core/AxiosError.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); /** * Create an Error with the specified message, config, error code, request and response. * * @param {string} message The error message. * @param {string} [code] The error code (for example, 'ECONNABORTED'). * @param {Object} [config] The config. * @param {Object} [request] The request. * @param {Object} [response] The response. * @returns {Error} The created error. */ function AxiosError(message, code, config, request, response) { Error.call(this); this.message = message; this.name = 'AxiosError'; code && (this.code = code); config && (this.config = config); request && (this.request = request); response && (this.response = response); } utils.inherits(AxiosError, Error, { toJSON: function toJSON() { return { // Standard message: this.message, name: this.name, // Microsoft description: this.description, number: this.number, // Mozilla fileName: this.fileName, lineNumber: this.lineNumber, columnNumber: this.columnNumber, stack: this.stack, // Axios config: this.config, code: this.code, status: this.response && this.response.status ? this.response.status : null }; } }); var prototype = AxiosError.prototype; var descriptors = {}; [ 'ERR_BAD_OPTION_VALUE', 'ERR_BAD_OPTION', 'ECONNABORTED', 'ETIMEDOUT', 'ERR_NETWORK', 'ERR_FR_TOO_MANY_REDIRECTS', 'ERR_DEPRECATED', 'ERR_BAD_RESPONSE', 'ERR_BAD_REQUEST', 'ERR_CANCELED' // eslint-disable-next-line func-names ].forEach(function(code) { descriptors[code] = {value: code}; }); Object.defineProperties(AxiosError, descriptors); Object.defineProperty(prototype, 'isAxiosError', {value: true}); // eslint-disable-next-line func-names AxiosError.from = function(error, code, config, request, response, customProps) { var axiosError = Object.create(prototype); utils.toFlatObject(error, axiosError, function filter(obj) { return obj !== Error.prototype; }); AxiosError.call(axiosError, error.message, code, config, request, response); axiosError.name = error.name; customProps && Object.assign(axiosError, customProps); return axiosError; }; module.exports = AxiosError; /***/ }), /***/ "./node_modules/axios/lib/core/InterceptorManager.js": /*!***********************************************************!*\ !*** ./node_modules/axios/lib/core/InterceptorManager.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); function InterceptorManager() { this.handlers = []; } /** * Add a new interceptor to the stack * * @param {Function} fulfilled The function to handle `then` for a `Promise` * @param {Function} rejected The function to handle `reject` for a `Promise` * * @return {Number} An ID used to remove interceptor later */ InterceptorManager.prototype.use = function use(fulfilled, rejected, options) { this.handlers.push({ fulfilled: fulfilled, rejected: rejected, synchronous: options ? options.synchronous : false, runWhen: options ? options.runWhen : null }); return this.handlers.length - 1; }; /** * Remove an interceptor from the stack * * @param {Number} id The ID that was returned by `use` */ InterceptorManager.prototype.eject = function eject(id) { if (this.handlers[id]) { this.handlers[id] = null; } }; /** * Iterate over all the registered interceptors * * This method is particularly useful for skipping over any * interceptors that may have become `null` calling `eject`. * * @param {Function} fn The function to call for each interceptor */ InterceptorManager.prototype.forEach = function forEach(fn) { utils.forEach(this.handlers, function forEachHandler(h) { if (h !== null) { fn(h); } }); }; module.exports = InterceptorManager; /***/ }), /***/ "./node_modules/axios/lib/core/buildFullPath.js": /*!******************************************************!*\ !*** ./node_modules/axios/lib/core/buildFullPath.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js"); var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js"); /** * Creates a new URL by combining the baseURL with the requestedURL, * only when the requestedURL is not already an absolute URL. * If the requestURL is absolute, this function returns the requestedURL untouched. * * @param {string} baseURL The base URL * @param {string} requestedURL Absolute or relative URL to combine * @returns {string} The combined full path */ module.exports = function buildFullPath(baseURL, requestedURL) { if (baseURL && !isAbsoluteURL(requestedURL)) { return combineURLs(baseURL, requestedURL); } return requestedURL; }; /***/ }), /***/ "./node_modules/axios/lib/core/dispatchRequest.js": /*!********************************************************!*\ !*** ./node_modules/axios/lib/core/dispatchRequest.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js"); var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults/index.js"); var CanceledError = __webpack_require__(/*! ../cancel/CanceledError */ "./node_modules/axios/lib/cancel/CanceledError.js"); /** * Throws a `CanceledError` if cancellation has been requested. */ function throwIfCancellationRequested(config) { if (config.cancelToken) { config.cancelToken.throwIfRequested(); } if (config.signal && config.signal.aborted) { throw new CanceledError(); } } /** * Dispatch a request to the server using the configured adapter. * * @param {object} config The config that is to be used for the request * @returns {Promise} The Promise to be fulfilled */ module.exports = function dispatchRequest(config) { throwIfCancellationRequested(config); // Ensure headers exist config.headers = config.headers || {}; // Transform request data config.data = transformData.call( config, config.data, config.headers, config.transformRequest ); // Flatten headers config.headers = utils.merge( config.headers.common || {}, config.headers[config.method] || {}, config.headers ); utils.forEach( ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) { delete config.headers[method]; } ); var adapter = config.adapter || defaults.adapter; return adapter(config).then(function onAdapterResolution(response) { throwIfCancellationRequested(config); // Transform response data response.data = transformData.call( config, response.data, response.headers, config.transformResponse ); return response; }, function onAdapterRejection(reason) { if (!isCancel(reason)) { throwIfCancellationRequested(config); // Transform response data if (reason && reason.response) { reason.response.data = transformData.call( config, reason.response.data, reason.response.headers, config.transformResponse ); } } return Promise.reject(reason); }); }; /***/ }), /***/ "./node_modules/axios/lib/core/mergeConfig.js": /*!****************************************************!*\ !*** ./node_modules/axios/lib/core/mergeConfig.js ***! \****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); /** * Config-specific merge-function which creates a new config-object * by merging two configuration objects together. * * @param {Object} config1 * @param {Object} config2 * @returns {Object} New object resulting from merging config2 to config1 */ module.exports = function mergeConfig(config1, config2) { // eslint-disable-next-line no-param-reassign config2 = config2 || {}; var config = {}; function getMergedValue(target, source) { if (utils.isPlainObject(target) && utils.isPlainObject(source)) { return utils.merge(target, source); } else if (utils.isPlainObject(source)) { return utils.merge({}, source); } else if (utils.isArray(source)) { return source.slice(); } return source; } // eslint-disable-next-line consistent-return function mergeDeepProperties(prop) { if (!utils.isUndefined(config2[prop])) { return getMergedValue(config1[prop], config2[prop]); } else if (!utils.isUndefined(config1[prop])) { return getMergedValue(undefined, config1[prop]); } } // eslint-disable-next-line consistent-return function valueFromConfig2(prop) { if (!utils.isUndefined(config2[prop])) { return getMergedValue(undefined, config2[prop]); } } // eslint-disable-next-line consistent-return function defaultToConfig2(prop) { if (!utils.isUndefined(config2[prop])) { return getMergedValue(undefined, config2[prop]); } else if (!utils.isUndefined(config1[prop])) { return getMergedValue(undefined, config1[prop]); } } // eslint-disable-next-line consistent-return function mergeDirectKeys(prop) { if (prop in config2) { return getMergedValue(config1[prop], config2[prop]); } else if (prop in config1) { return getMergedValue(undefined, config1[prop]); } } var mergeMap = { 'url': valueFromConfig2, 'method': valueFromConfig2, 'data': valueFromConfig2, 'baseURL': defaultToConfig2, 'transformRequest': defaultToConfig2, 'transformResponse': defaultToConfig2, 'paramsSerializer': defaultToConfig2, 'timeout': defaultToConfig2, 'timeoutMessage': defaultToConfig2, 'withCredentials': defaultToConfig2, 'adapter': defaultToConfig2, 'responseType': defaultToConfig2, 'xsrfCookieName': defaultToConfig2, 'xsrfHeaderName': defaultToConfig2, 'onUploadProgress': defaultToConfig2, 'onDownloadProgress': defaultToConfig2, 'decompress': defaultToConfig2, 'maxContentLength': defaultToConfig2, 'maxBodyLength': defaultToConfig2, 'beforeRedirect': defaultToConfig2, 'transport': defaultToConfig2, 'httpAgent': defaultToConfig2, 'httpsAgent': defaultToConfig2, 'cancelToken': defaultToConfig2, 'socketPath': defaultToConfig2, 'responseEncoding': defaultToConfig2, 'validateStatus': mergeDirectKeys }; utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) { var merge = mergeMap[prop] || mergeDeepProperties; var configValue = merge(prop); (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); }); return config; }; /***/ }), /***/ "./node_modules/axios/lib/core/settle.js": /*!***********************************************!*\ !*** ./node_modules/axios/lib/core/settle.js ***! \***********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var AxiosError = __webpack_require__(/*! ./AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); /** * Resolve or reject a Promise based on response status. * * @param {Function} resolve A function that resolves the promise. * @param {Function} reject A function that rejects the promise. * @param {object} response The response. */ module.exports = function settle(resolve, reject, response) { var validateStatus = response.config.validateStatus; if (!response.status || !validateStatus || validateStatus(response.status)) { resolve(response); } else { reject(new AxiosError( 'Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response )); } }; /***/ }), /***/ "./node_modules/axios/lib/core/transformData.js": /*!******************************************************!*\ !*** ./node_modules/axios/lib/core/transformData.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults/index.js"); /** * Transform the data for a request or a response * * @param {Object|String} data The data to be transformed * @param {Array} headers The headers for the request or response * @param {Array|Function} fns A single function or Array of functions * @returns {*} The resulting transformed data */ module.exports = function transformData(data, headers, fns) { var context = this || defaults; /*eslint no-param-reassign:0*/ utils.forEach(fns, function transform(fn) { data = fn.call(context, data, headers); }); return data; }; /***/ }), /***/ "./node_modules/axios/lib/defaults/index.js": /*!**************************************************!*\ !*** ./node_modules/axios/lib/defaults/index.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* provided dependency */ var process = __webpack_require__(/*! ./node_modules/process/browser.js */ "./node_modules/process/browser.js"); var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); var normalizeHeaderName = __webpack_require__(/*! ../helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js"); var AxiosError = __webpack_require__(/*! ../core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); var transitionalDefaults = __webpack_require__(/*! ./transitional */ "./node_modules/axios/lib/defaults/transitional.js"); var toFormData = __webpack_require__(/*! ../helpers/toFormData */ "./node_modules/axios/lib/helpers/toFormData.js"); var DEFAULT_CONTENT_TYPE = { 'Content-Type': 'application/x-www-form-urlencoded' }; function setContentTypeIfUnset(headers, value) { if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { headers['Content-Type'] = value; } } function getDefaultAdapter() { var adapter; if (typeof XMLHttpRequest !== 'undefined') { // For browsers use XHR adapter adapter = __webpack_require__(/*! ../adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js"); } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { // For node use HTTP adapter adapter = __webpack_require__(/*! ../adapters/http */ "./node_modules/axios/lib/adapters/xhr.js"); } return adapter; } function stringifySafely(rawValue, parser, encoder) { if (utils.isString(rawValue)) { try { (parser || JSON.parse)(rawValue); return utils.trim(rawValue); } catch (e) { if (e.name !== 'SyntaxError') { throw e; } } } return (encoder || JSON.stringify)(rawValue); } var defaults = { transitional: transitionalDefaults, adapter: getDefaultAdapter(), transformRequest: [function transformRequest(data, headers) { normalizeHeaderName(headers, 'Accept'); normalizeHeaderName(headers, 'Content-Type'); if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data) ) { return data; } if (utils.isArrayBufferView(data)) { return data.buffer; } if (utils.isURLSearchParams(data)) { setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); return data.toString(); } var isObjectPayload = utils.isObject(data); var contentType = headers && headers['Content-Type']; var isFileList; if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) { var _FormData = this.env && this.env.FormData; return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData()); } else if (isObjectPayload || contentType === 'application/json') { setContentTypeIfUnset(headers, 'application/json'); return stringifySafely(data); } return data; }], transformResponse: [function transformResponse(data) { var transitional = this.transitional || defaults.transitional; var silentJSONParsing = transitional && transitional.silentJSONParsing; var forcedJSONParsing = transitional && transitional.forcedJSONParsing; var strictJSONParsing = !silentJSONParsing && this.responseType === 'json'; if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) { try { return JSON.parse(data); } catch (e) { if (strictJSONParsing) { if (e.name === 'SyntaxError') { throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); } throw e; } } } return data; }], /** * A timeout in milliseconds to abort a request. If set to 0 (default) a * timeout is not created. */ timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, maxBodyLength: -1, env: { FormData: __webpack_require__(/*! ./env/FormData */ "./node_modules/axios/lib/helpers/null.js") }, validateStatus: function validateStatus(status) { return status >= 200 && status < 300; }, headers: { common: { 'Accept': 'application/json, text/plain, */*' } } }; utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { defaults.headers[method] = {}; }); utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); }); module.exports = defaults; /***/ }), /***/ "./node_modules/axios/lib/defaults/transitional.js": /*!*********************************************************!*\ !*** ./node_modules/axios/lib/defaults/transitional.js ***! \*********************************************************/ /***/ ((module) => { "use strict"; module.exports = { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false }; /***/ }), /***/ "./node_modules/axios/lib/env/data.js": /*!********************************************!*\ !*** ./node_modules/axios/lib/env/data.js ***! \********************************************/ /***/ ((module) => { module.exports = { "version": "0.27.2" }; /***/ }), /***/ "./node_modules/axios/lib/helpers/bind.js": /*!************************************************!*\ !*** ./node_modules/axios/lib/helpers/bind.js ***! \************************************************/ /***/ ((module) => { "use strict"; module.exports = function bind(fn, thisArg) { return function wrap() { var args = new Array(arguments.length); for (var i = 0; i < args.length; i++) { args[i] = arguments[i]; } return fn.apply(thisArg, args); }; }; /***/ }), /***/ "./node_modules/axios/lib/helpers/buildURL.js": /*!****************************************************!*\ !*** ./node_modules/axios/lib/helpers/buildURL.js ***! \****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); function encode(val) { return encodeURIComponent(val). replace(/%3A/gi, ':'). replace(/%24/g, '$'). replace(/%2C/gi, ','). replace(/%20/g, '+'). replace(/%5B/gi, '['). replace(/%5D/gi, ']'); } /** * Build a URL by appending params to the end * * @param {string} url The base of the url (e.g., http://www.google.com) * @param {object} [params] The params to be appended * @returns {string} The formatted url */ module.exports = function buildURL(url, params, paramsSerializer) { /*eslint no-param-reassign:0*/ if (!params) { return url; } var serializedParams; if (paramsSerializer) { serializedParams = paramsSerializer(params); } else if (utils.isURLSearchParams(params)) { serializedParams = params.toString(); } else { var parts = []; utils.forEach(params, function serialize(val, key) { if (val === null || typeof val === 'undefined') { return; } if (utils.isArray(val)) { key = key + '[]'; } else { val = [val]; } utils.forEach(val, function parseValue(v) { if (utils.isDate(v)) { v = v.toISOString(); } else if (utils.isObject(v)) { v = JSON.stringify(v); } parts.push(encode(key) + '=' + encode(v)); }); }); serializedParams = parts.join('&'); } if (serializedParams) { var hashmarkIndex = url.indexOf('#'); if (hashmarkIndex !== -1) { url = url.slice(0, hashmarkIndex); } url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; } return url; }; /***/ }), /***/ "./node_modules/axios/lib/helpers/combineURLs.js": /*!*******************************************************!*\ !*** ./node_modules/axios/lib/helpers/combineURLs.js ***! \*******************************************************/ /***/ ((module) => { "use strict"; /** * Creates a new URL by combining the specified URLs * * @param {string} baseURL The base URL * @param {string} relativeURL The relative URL * @returns {string} The combined URL */ module.exports = function combineURLs(baseURL, relativeURL) { return relativeURL ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; }; /***/ }), /***/ "./node_modules/axios/lib/helpers/cookies.js": /*!***************************************************!*\ !*** ./node_modules/axios/lib/helpers/cookies.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); module.exports = ( utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie (function standardBrowserEnv() { return { write: function write(name, value, expires, path, domain, secure) { var cookie = []; cookie.push(name + '=' + encodeURIComponent(value)); if (utils.isNumber(expires)) { cookie.push('expires=' + new Date(expires).toGMTString()); } if (utils.isString(path)) { cookie.push('path=' + path); } if (utils.isString(domain)) { cookie.push('domain=' + domain); } if (secure === true) { cookie.push('secure'); } document.cookie = cookie.join('; '); }, read: function read(name) { var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); return (match ? decodeURIComponent(match[3]) : null); }, remove: function remove(name) { this.write(name, '', Date.now() - 86400000); } }; })() : // Non standard browser env (web workers, react-native) lack needed support. (function nonStandardBrowserEnv() { return { write: function write() {}, read: function read() { return null; }, remove: function remove() {} }; })() ); /***/ }), /***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js": /*!*********************************************************!*\ !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***! \*********************************************************/ /***/ ((module) => { "use strict"; /** * Determines whether the specified URL is absolute * * @param {string} url The URL to test * @returns {boolean} True if the specified URL is absolute, otherwise false */ module.exports = function isAbsoluteURL(url) { // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed // by any combination of letters, digits, plus, period, or hyphen. return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); }; /***/ }), /***/ "./node_modules/axios/lib/helpers/isAxiosError.js": /*!********************************************************!*\ !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); /** * Determines whether the payload is an error thrown by Axios * * @param {*} payload The value to test * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false */ module.exports = function isAxiosError(payload) { return utils.isObject(payload) && (payload.isAxiosError === true); }; /***/ }), /***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js": /*!***********************************************************!*\ !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); module.exports = ( utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test // whether the request URL is of the same origin as current location. (function standardBrowserEnv() { var msie = /(msie|trident)/i.test(navigator.userAgent); var urlParsingNode = document.createElement('a'); var originURL; /** * Parse a URL to discover it's components * * @param {String} url The URL to be parsed * @returns {Object} */ function resolveURL(url) { var href = url; if (msie) { // IE needs attribute set twice to normalize properties urlParsingNode.setAttribute('href', href); href = urlParsingNode.href; } urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils return { href: urlParsingNode.href, protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', host: urlParsingNode.host, search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', hostname: urlParsingNode.hostname, port: urlParsingNode.port, pathname: (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname : '/' + urlParsingNode.pathname }; } originURL = resolveURL(window.location.href); /** * Determine if a URL shares the same origin as the current location * * @param {String} requestURL The URL to test * @returns {boolean} True if URL shares the same origin, otherwise false */ return function isURLSameOrigin(requestURL) { var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; return (parsed.protocol === originURL.protocol && parsed.host === originURL.host); }; })() : // Non standard browser envs (web workers, react-native) lack needed support. (function nonStandardBrowserEnv() { return function isURLSameOrigin() { return true; }; })() ); /***/ }), /***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js": /*!***************************************************************!*\ !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); module.exports = function normalizeHeaderName(headers, normalizedName) { utils.forEach(headers, function processHeader(value, name) { if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { headers[normalizedName] = value; delete headers[name]; } }); }; /***/ }), /***/ "./node_modules/axios/lib/helpers/null.js": /*!************************************************!*\ !*** ./node_modules/axios/lib/helpers/null.js ***! \************************************************/ /***/ ((module) => { // eslint-disable-next-line strict module.exports = null; /***/ }), /***/ "./node_modules/axios/lib/helpers/parseHeaders.js": /*!********************************************************!*\ !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); // Headers whose duplicates are ignored by node // c.f. https://nodejs.org/api/http.html#http_message_headers var ignoreDuplicateOf = [ 'age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent' ]; /** * Parse headers into an object * * ``` * Date: Wed, 27 Aug 2014 08:58:49 GMT * Content-Type: application/json * Connection: keep-alive * Transfer-Encoding: chunked * ``` * * @param {String} headers Headers needing to be parsed * @returns {Object} Headers parsed into an object */ module.exports = function parseHeaders(headers) { var parsed = {}; var key; var val; var i; if (!headers) { return parsed; } utils.forEach(headers.split('\n'), function parser(line) { i = line.indexOf(':'); key = utils.trim(line.substr(0, i)).toLowerCase(); val = utils.trim(line.substr(i + 1)); if (key) { if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { return; } if (key === 'set-cookie') { parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); } else { parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } } }); return parsed; }; /***/ }), /***/ "./node_modules/axios/lib/helpers/parseProtocol.js": /*!*********************************************************!*\ !*** ./node_modules/axios/lib/helpers/parseProtocol.js ***! \*********************************************************/ /***/ ((module) => { "use strict"; module.exports = function parseProtocol(url) { var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); return match && match[1] || ''; }; /***/ }), /***/ "./node_modules/axios/lib/helpers/spread.js": /*!**************************************************!*\ !*** ./node_modules/axios/lib/helpers/spread.js ***! \**************************************************/ /***/ ((module) => { "use strict"; /** * Syntactic sugar for invoking a function and expanding an array for arguments. * * Common use case would be to use `Function.prototype.apply`. * * ```js * function f(x, y, z) {} * var args = [1, 2, 3]; * f.apply(null, args); * ``` * * With `spread` this example can be re-written. * * ```js * spread(function(x, y, z) {})([1, 2, 3]); * ``` * * @param {Function} callback * @returns {Function} */ module.exports = function spread(callback) { return function wrap(arr) { return callback.apply(null, arr); }; }; /***/ }), /***/ "./node_modules/axios/lib/helpers/toFormData.js": /*!******************************************************!*\ !*** ./node_modules/axios/lib/helpers/toFormData.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* provided dependency */ var Buffer = __webpack_require__(/*! ./node_modules/buffer/index.js */ "./node_modules/buffer/index.js")["Buffer"]; var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); /** * Convert a data object to FormData * @param {Object} obj * @param {?Object} [formData] * @returns {Object} **/ function toFormData(obj, formData) { // eslint-disable-next-line no-param-reassign formData = formData || new FormData(); var stack = []; function convertValue(value) { if (value === null) return ''; if (utils.isDate(value)) { return value.toISOString(); } if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); } return value; } function build(data, parentKey) { if (utils.isPlainObject(data) || utils.isArray(data)) { if (stack.indexOf(data) !== -1) { throw Error('Circular reference detected in ' + parentKey); } stack.push(data); utils.forEach(data, function each(value, key) { if (utils.isUndefined(value)) return; var fullKey = parentKey ? parentKey + '.' + key : key; var arr; if (value && !parentKey && typeof value === 'object') { if (utils.endsWith(key, '{}')) { // eslint-disable-next-line no-param-reassign value = JSON.stringify(value); } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) { // eslint-disable-next-line func-names arr.forEach(function(el) { !utils.isUndefined(el) && formData.append(fullKey, convertValue(el)); }); return; } } build(value, fullKey); }); stack.pop(); } else { formData.append(parentKey, convertValue(data)); } } build(obj); return formData; } module.exports = toFormData; /***/ }), /***/ "./node_modules/axios/lib/helpers/validator.js": /*!*****************************************************!*\ !*** ./node_modules/axios/lib/helpers/validator.js ***! \*****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var VERSION = (__webpack_require__(/*! ../env/data */ "./node_modules/axios/lib/env/data.js").version); var AxiosError = __webpack_require__(/*! ../core/AxiosError */ "./node_modules/axios/lib/core/AxiosError.js"); var validators = {}; // eslint-disable-next-line func-names ['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) { validators[type] = function validator(thing) { return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; }; }); var deprecatedWarnings = {}; /** * Transitional option validator * @param {function|boolean?} validator - set to false if the transitional option has been removed * @param {string?} version - deprecated version / removed since version * @param {string?} message - some message with additional info * @returns {function} */ validators.transitional = function transitional(validator, version, message) { function formatMessage(opt, desc) { return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); } // eslint-disable-next-line func-names return function(value, opt, opts) { if (validator === false) { throw new AxiosError( formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED ); } if (version && !deprecatedWarnings[opt]) { deprecatedWarnings[opt] = true; // eslint-disable-next-line no-console console.warn( formatMessage( opt, ' has been deprecated since v' + version + ' and will be removed in the near future' ) ); } return validator ? validator(value, opt, opts) : true; }; }; /** * Assert object's properties type * @param {object} options * @param {object} schema * @param {boolean?} allowUnknown */ function assertOptions(options, schema, allowUnknown) { if (typeof options !== 'object') { throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); } var keys = Object.keys(options); var i = keys.length; while (i-- > 0) { var opt = keys[i]; var validator = schema[opt]; if (validator) { var value = options[opt]; var result = value === undefined || validator(value, opt, options); if (result !== true) { throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); } continue; } if (allowUnknown !== true) { throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); } } } module.exports = { assertOptions: assertOptions, validators: validators }; /***/ }), /***/ "./node_modules/axios/lib/utils.js": /*!*****************************************!*\ !*** ./node_modules/axios/lib/utils.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); // utils is a library of generic helper functions non-specific to axios var toString = Object.prototype.toString; // eslint-disable-next-line func-names var kindOf = (function(cache) { // eslint-disable-next-line func-names return function(thing) { var str = toString.call(thing); return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); }; })(Object.create(null)); function kindOfTest(type) { type = type.toLowerCase(); return function isKindOf(thing) { return kindOf(thing) === type; }; } /** * Determine if a value is an Array * * @param {Object} val The value to test * @returns {boolean} True if value is an Array, otherwise false */ function isArray(val) { return Array.isArray(val); } /** * Determine if a value is undefined * * @param {Object} val The value to test * @returns {boolean} True if the value is undefined, otherwise false */ function isUndefined(val) { return typeof val === 'undefined'; } /** * Determine if a value is a Buffer * * @param {Object} val The value to test * @returns {boolean} True if value is a Buffer, otherwise false */ function isBuffer(val) { return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); } /** * Determine if a value is an ArrayBuffer * * @function * @param {Object} val The value to test * @returns {boolean} True if value is an ArrayBuffer, otherwise false */ var isArrayBuffer = kindOfTest('ArrayBuffer'); /** * Determine if a value is a view on an ArrayBuffer * * @param {Object} val The value to test * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false */ function isArrayBufferView(val) { var result; if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { result = ArrayBuffer.isView(val); } else { result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); } return result; } /** * Determine if a value is a String * * @param {Object} val The value to test * @returns {boolean} True if value is a String, otherwise false */ function isString(val) { return typeof val === 'string'; } /** * Determine if a value is a Number * * @param {Object} val The value to test * @returns {boolean} True if value is a Number, otherwise false */ function isNumber(val) { return typeof val === 'number'; } /** * Determine if a value is an Object * * @param {Object} val The value to test * @returns {boolean} True if value is an Object, otherwise false */ function isObject(val) { return val !== null && typeof val === 'object'; } /** * Determine if a value is a plain Object * * @param {Object} val The value to test * @return {boolean} True if value is a plain Object, otherwise false */ function isPlainObject(val) { if (kindOf(val) !== 'object') { return false; } var prototype = Object.getPrototypeOf(val); return prototype === null || prototype === Object.prototype; } /** * Determine if a value is a Date * * @function * @param {Object} val The value to test * @returns {boolean} True if value is a Date, otherwise false */ var isDate = kindOfTest('Date'); /** * Determine if a value is a File * * @function * @param {Object} val The value to test * @returns {boolean} True if value is a File, otherwise false */ var isFile = kindOfTest('File'); /** * Determine if a value is a Blob * * @function * @param {Object} val The value to test * @returns {boolean} True if value is a Blob, otherwise false */ var isBlob = kindOfTest('Blob'); /** * Determine if a value is a FileList * * @function * @param {Object} val The value to test * @returns {boolean} True if value is a File, otherwise false */ var isFileList = kindOfTest('FileList'); /** * Determine if a value is a Function * * @param {Object} val The value to test * @returns {boolean} True if value is a Function, otherwise false */ function isFunction(val) { return toString.call(val) === '[object Function]'; } /** * Determine if a value is a Stream * * @param {Object} val The value to test * @returns {boolean} True if value is a Stream, otherwise false */ function isStream(val) { return isObject(val) && isFunction(val.pipe); } /** * Determine if a value is a FormData * * @param {Object} thing The value to test * @returns {boolean} True if value is an FormData, otherwise false */ function isFormData(thing) { var pattern = '[object FormData]'; return thing && ( (typeof FormData === 'function' && thing instanceof FormData) || toString.call(thing) === pattern || (isFunction(thing.toString) && thing.toString() === pattern) ); } /** * Determine if a value is a URLSearchParams object * @function * @param {Object} val The value to test * @returns {boolean} True if value is a URLSearchParams object, otherwise false */ var isURLSearchParams = kindOfTest('URLSearchParams'); /** * Trim excess whitespace off the beginning and end of a string * * @param {String} str The String to trim * @returns {String} The String freed of excess whitespace */ function trim(str) { return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); } /** * Determine if we're running in a standard browser environment * * This allows axios to run in a web worker, and react-native. * Both environments support XMLHttpRequest, but not fully standard globals. * * web workers: * typeof window -> undefined * typeof document -> undefined * * react-native: * navigator.product -> 'ReactNative' * nativescript * navigator.product -> 'NativeScript' or 'NS' */ function isStandardBrowserEnv() { if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) { return false; } return ( typeof window !== 'undefined' && typeof document !== 'undefined' ); } /** * Iterate over an Array or an Object invoking a function for each item. * * If `obj` is an Array callback will be called passing * the value, index, and complete array for each item. * * If 'obj' is an Object callback will be called passing * the value, key, and complete object for each property. * * @param {Object|Array} obj The object to iterate * @param {Function} fn The callback to invoke for each item */ function forEach(obj, fn) { // Don't bother if no value provided if (obj === null || typeof obj === 'undefined') { return; } // Force an array if not already something iterable if (typeof obj !== 'object') { /*eslint no-param-reassign:0*/ obj = [obj]; } if (isArray(obj)) { // Iterate over array values for (var i = 0, l = obj.length; i < l; i++) { fn.call(null, obj[i], i, obj); } } else { // Iterate over object keys for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { fn.call(null, obj[key], key, obj); } } } } /** * Accepts varargs expecting each argument to be an object, then * immutably merges the properties of each object and returns result. * * When multiple objects contain the same key the later object in * the arguments list will take precedence. * * Example: * * ```js * var result = merge({foo: 123}, {foo: 456}); * console.log(result.foo); // outputs 456 * ``` * * @param {Object} obj1 Object to merge * @returns {Object} Result of all merge properties */ function merge(/* obj1, obj2, obj3, ... */) { var result = {}; function assignValue(val, key) { if (isPlainObject(result[key]) && isPlainObject(val)) { result[key] = merge(result[key], val); } else if (isPlainObject(val)) { result[key] = merge({}, val); } else if (isArray(val)) { result[key] = val.slice(); } else { result[key] = val; } } for (var i = 0, l = arguments.length; i < l; i++) { forEach(arguments[i], assignValue); } return result; } /** * Extends object a by mutably adding to it the properties of object b. * * @param {Object} a The object to be extended * @param {Object} b The object to copy properties from * @param {Object} thisArg The object to bind function to * @return {Object} The resulting value of object a */ function extend(a, b, thisArg) { forEach(b, function assignValue(val, key) { if (thisArg && typeof val === 'function') { a[key] = bind(val, thisArg); } else { a[key] = val; } }); return a; } /** * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) * * @param {string} content with BOM * @return {string} content value without BOM */ function stripBOM(content) { if (content.charCodeAt(0) === 0xFEFF) { content = content.slice(1); } return content; } /** * Inherit the prototype methods from one constructor into another * @param {function} constructor * @param {function} superConstructor * @param {object} [props] * @param {object} [descriptors] */ function inherits(constructor, superConstructor, props, descriptors) { constructor.prototype = Object.create(superConstructor.prototype, descriptors); constructor.prototype.constructor = constructor; props && Object.assign(constructor.prototype, props); } /** * Resolve object with deep prototype chain to a flat object * @param {Object} sourceObj source object * @param {Object} [destObj] * @param {Function} [filter] * @returns {Object} */ function toFlatObject(sourceObj, destObj, filter) { var props; var i; var prop; var merged = {}; destObj = destObj || {}; do { props = Object.getOwnPropertyNames(sourceObj); i = props.length; while (i-- > 0) { prop = props[i]; if (!merged[prop]) { destObj[prop] = sourceObj[prop]; merged[prop] = true; } } sourceObj = Object.getPrototypeOf(sourceObj); } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); return destObj; } /* * determines whether a string ends with the characters of a specified string * @param {String} str * @param {String} searchString * @param {Number} [position= 0] * @returns {boolean} */ function endsWith(str, searchString, position) { str = String(str); if (position === undefined || position > str.length) { position = str.length; } position -= searchString.length; var lastIndex = str.indexOf(searchString, position); return lastIndex !== -1 && lastIndex === position; } /** * Returns new array from array like object * @param {*} [thing] * @returns {Array} */ function toArray(thing) { if (!thing) return null; var i = thing.length; if (isUndefined(i)) return null; var arr = new Array(i); while (i-- > 0) { arr[i] = thing[i]; } return arr; } // eslint-disable-next-line func-names var isTypedArray = (function(TypedArray) { // eslint-disable-next-line func-names return function(thing) { return TypedArray && thing instanceof TypedArray; }; })(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array)); module.exports = { isArray: isArray, isArrayBuffer: isArrayBuffer, isBuffer: isBuffer, isFormData: isFormData, isArrayBufferView: isArrayBufferView, isString: isString, isNumber: isNumber, isObject: isObject, isPlainObject: isPlainObject, isUndefined: isUndefined, isDate: isDate, isFile: isFile, isBlob: isBlob, isFunction: isFunction, isStream: isStream, isURLSearchParams: isURLSearchParams, isStandardBrowserEnv: isStandardBrowserEnv, forEach: forEach, merge: merge, extend: extend, trim: trim, stripBOM: stripBOM, inherits: inherits, toFlatObject: toFlatObject, kindOf: kindOf, kindOfTest: kindOfTest, endsWith: endsWith, toArray: toArray, isTypedArray: isTypedArray, isFileList: isFileList }; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AppNavigationHeader_AppNavigationHeaderDatePicker_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppNavigationHeader/AppNavigationHeaderDatePicker.vue */ "./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue"); /* harmony import */ var _AppNavigationHeader_AppNavigationHeaderTodayButton_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AppNavigationHeader/AppNavigationHeaderTodayButton.vue */ "./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderTodayButton.vue"); /* harmony import */ var _AppNavigationHeader_AppNavigationHeaderNewEvent_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppNavigationHeader/AppNavigationHeaderNewEvent.vue */ "./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue"); /* harmony import */ var _AppNavigationHeader_AppNavigationHeaderViewMenu_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AppNavigationHeader/AppNavigationHeaderViewMenu.vue */ "./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderViewMenu.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AppNavigationHeader', components: { AppNavigationHeaderDatePicker: _AppNavigationHeader_AppNavigationHeaderDatePicker_vue__WEBPACK_IMPORTED_MODULE_0__["default"], AppNavigationHeaderTodayButton: _AppNavigationHeader_AppNavigationHeaderTodayButton_vue__WEBPACK_IMPORTED_MODULE_1__["default"], AppNavigationHeaderNewEvent: _AppNavigationHeader_AppNavigationHeaderNewEvent_vue__WEBPACK_IMPORTED_MODULE_2__["default"], AppNavigationHeaderViewMenu: _AppNavigationHeader_AppNavigationHeaderViewMenu_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }, props: { isPublic: { type: Boolean, required: true }, canAccessPreviousEvent: { type: Boolean, default: true } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue?vue&type=script&lang=js": /*!************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue?vue&type=script&lang=js ***! \************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../utils/date.js */ "./src/utils/date.js"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _filters_dateRangeFormat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../filters/dateRangeFormat.js */ "./src/filters/dateRangeFormat.js"); /* harmony import */ var _Shared_DatePicker_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Shared/DatePicker.vue */ "./src/components/Shared/DatePicker.vue"); /* harmony import */ var vue_material_design_icons_ChevronLeft_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/ChevronLeft.vue */ "./node_modules/vue-material-design-icons/ChevronLeft.vue"); /* harmony import */ var vue_material_design_icons_ChevronRight_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/ChevronRight.vue */ "./node_modules/vue-material-design-icons/ChevronRight.vue"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AppNavigationHeaderDatePicker', components: { DatePicker: _Shared_DatePicker_vue__WEBPACK_IMPORTED_MODULE_2__["default"], ChevronLeftIcon: vue_material_design_icons_ChevronLeft_vue__WEBPACK_IMPORTED_MODULE_3__["default"], ChevronRightIcon: vue_material_design_icons_ChevronRight_vue__WEBPACK_IMPORTED_MODULE_4__["default"], NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_5__.NcButton }, filters: { formatDateRange: _filters_dateRangeFormat_js__WEBPACK_IMPORTED_MODULE_1__["default"] }, props: { isWidget: { type: Boolean, default: false }, canAccessPreviousEvent: { type: Boolean, default: true } }, data() { return { isDatepickerOpen: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_6__.mapState)({ locale: state => state.settings.momentLocale }), minimumDate() { return this.canAccessPreviousEvent ? new Date(this.$store.state.davRestrictions.minimumDate) : new Date(); }, selectedDate() { var _this$$route$params$f, _this$$route$params; if (this.isWidget) { return (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getDateFromFirstdayParam)(this.$store.getters.widgetDate); } return (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getDateFromFirstdayParam)((_this$$route$params$f = (_this$$route$params = this.$route.params) === null || _this$$route$params === void 0 ? void 0 : _this$$route$params.firstDay) !== null && _this$$route$params$f !== void 0 ? _this$$route$params$f : 'now'); }, previousShortKeyConf() { return { previous_p: ['p'], previous_k: ['k'] }; }, previousLabel() { switch (this.view) { case 'timeGridDay': return this.$t('calendar', 'Previous day'); case 'timeGridWeek': return this.$t('calendar', 'Previous week'); case 'multiMonthYear': return this.$t('calendar', 'Previous year'); case 'dayGridMonth': default: return this.$t('calendar', 'Previous month'); } }, nextShortKeyConf() { return { next_j: ['j'], next_n: ['n'] }; }, nextLabel() { switch (this.view) { case 'timeGridDay': return this.$t('calendar', 'Next day'); case 'timeGridWeek': return this.$t('calendar', 'Next week'); case 'multiMonthYear': return this.$t('calendar', 'Next year'); case 'dayGridMonth': default: return this.$t('calendar', 'Next month'); } }, view() { if (this.isWidget) { return this.$store.getters.widgetView; } return this.$route.params.view; } }, methods: { navigateToPreviousTimeRange() { return this.navigateTimeRangeByFactor(-1); }, navigateToNextTimeRange() { return this.navigateTimeRangeByFactor(1); }, navigateTimeRangeByFactor(factor) { let newDate; switch (this.$route.params.view) { case 'timeGridDay': newDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.modifyDate)(this.selectedDate, { day: factor }); break; case 'timeGridWeek': newDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.modifyDate)(this.selectedDate, { week: factor }); break; case 'multiMonthYear': newDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.modifyDate)(this.selectedDate, { year: factor }); break; case 'dayGridMonth': case 'listMonth': default: { // modifyDate is just adding one month, so we have to manually // set the date of month to 1. Otherwise if your date is set to // January 30th and you add one month, February 30th doesn't exist // and it automatically changes to March 1st. Same happens on March 31st. const firstDayOfCurrentMonth = new Date(this.selectedDate.getTime()); firstDayOfCurrentMonth.setDate(1); newDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.modifyDate)(firstDayOfCurrentMonth, { month: factor }); break; } } this.navigateToDate(newDate); }, navigateToDate(date) { if (this.isWidget) { this.$store.commit('setWidgetDate', { widgetDate: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getYYYYMMDDFromDate)(date) }); } else { const name = this.$route.name; const params = Object.assign({}, this.$route.params, { firstDay: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getYYYYMMDDFromDate)(date) }); // Don't push new route when day didn't change if (this.$route.params.firstDay === (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getYYYYMMDDFromDate)(date)) { return; } this.$router.push({ name, params }); } }, toggleDatepicker() { this.isDatepickerOpen = !this.isDatepickerOpen; }, doNothing() { // This function does nothing in itself, // it only captures and prevents the mousedown and mouseup of vue2-datepicker } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-material-design-icons/Plus.vue */ "./node_modules/vue-material-design-icons/Plus.vue"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AppNavigationHeaderNewEvent', components: { Plus: vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_0__["default"], NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcButton }, computed: { newEventButtonAriaLabel() { return this.$t('calendar', 'Create new event'); } }, methods: { /** * Opens the new event dialog */ newEvent() { this.$router.push("/new/".concat(this.$route.params.view)); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderTodayButton.vue?vue&type=script&lang=js": /*!*************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderTodayButton.vue?vue&type=script&lang=js ***! \*************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AppNavigationHeaderTodayButton', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton }, methods: { today() { const name = this.$route.name; const params = Object.assign({}, this.$route.params, { firstDay: 'now' }); // Don't push new route when day didn't change if (this.$route.params.firstDay === 'now') { return; } this.$router.push({ name, params }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderViewMenu.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderViewMenu.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_ViewDay_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/ViewDay.vue */ "./node_modules/vue-material-design-icons/ViewDay.vue"); /* harmony import */ var vue_material_design_icons_ViewGrid_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/ViewGrid.vue */ "./node_modules/vue-material-design-icons/ViewGrid.vue"); /* harmony import */ var vue_material_design_icons_ViewList_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/ViewList.vue */ "./node_modules/vue-material-design-icons/ViewList.vue"); /* harmony import */ var vue_material_design_icons_ViewModule_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/ViewModule.vue */ "./node_modules/vue-material-design-icons/ViewModule.vue"); /* harmony import */ var vue_material_design_icons_ViewWeek_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/ViewWeek.vue */ "./node_modules/vue-material-design-icons/ViewWeek.vue"); /* harmony import */ var vue_material_design_icons_ViewComfy_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/ViewComfy.vue */ "./node_modules/vue-material-design-icons/ViewComfy.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AppNavigationHeaderViewMenu', components: { Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ViewDay: vue_material_design_icons_ViewDay_vue__WEBPACK_IMPORTED_MODULE_1__["default"], ViewGrid: vue_material_design_icons_ViewGrid_vue__WEBPACK_IMPORTED_MODULE_2__["default"], ViewComfy: vue_material_design_icons_ViewComfy_vue__WEBPACK_IMPORTED_MODULE_6__["default"], ViewList: vue_material_design_icons_ViewList_vue__WEBPACK_IMPORTED_MODULE_3__["default"], ViewModule: vue_material_design_icons_ViewModule_vue__WEBPACK_IMPORTED_MODULE_4__["default"], ViewWeek: vue_material_design_icons_ViewWeek_vue__WEBPACK_IMPORTED_MODULE_5__["default"] }, props: { canAccessPreviousEvent: { type: Boolean, default: true } }, computed: { views() { let menus = [{ id: 'timeGridDay', icon: 'ViewDay', label: this.$t('calendar', 'Day') }, { id: 'timeGridWeek', icon: 'ViewWeek', label: this.$t('calendar', 'Week') }]; if (this.canAccessPreviousEvent) { let additionalMenus = [{ id: 'dayGridMonth', icon: 'ViewModule', label: this.$t('calendar', 'Month') }, { id: 'multiMonthYear', icon: 'ViewComfy', label: this.$t('calendar', 'Year') }, { id: 'listMonth', icon: 'ViewList', label: this.$t('calendar', 'List') }]; menus = menus.concat(additionalMenus); } return menus; }, shortKeyConf() { return { timeGridDay: ['d'], timeGridDay_Num: [1], timeGridWeek: ['w'], timeGridWeek_Num: [2], dayGridMonth: ['m'], dayGridMonth_Num: [3], multiMonthYear: ['y'], multiMonthYear_Num: [4], listMonth: ['l'], listMonth_Num: [5] }; }, defaultIcon() { for (const view of this.views) { if (view.id === this.$route.params.view) { return view.icon; } } return 'ViewGrid'; } }, methods: { selectView(viewName) { const name = this.$route.name; const params = Object.assign({}, this.$route.params, { view: viewName }); // Don't push new route when view didn't change if (this.$route.params.view === viewName) { return; } this.$router.push({ name, params }); }, selectViewFromShortcut(event) { this.selectView(event.srcKey.split('_')[0]); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppointmentConfigList.vue?vue&type=script&lang=js": /*!********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppointmentConfigList.vue?vue&type=script&lang=js ***! \********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AppointmentConfigList_AppointmentConfigListItem_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AppointmentConfigList/AppointmentConfigListItem.vue */ "./src/components/AppNavigation/AppointmentConfigList/AppointmentConfigListItem.vue"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/Plus.vue */ "./node_modules/vue-material-design-icons/Plus.vue"); /* harmony import */ var _AppointmentConfigModal_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../AppointmentConfigModal.vue */ "./src/components/AppointmentConfigModal.vue"); /* harmony import */ var _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../models/appointmentConfig.js */ "./src/models/appointmentConfig.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _AppointmentConfigModal_NoEmailAddressWarning_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../AppointmentConfigModal/NoEmailAddressWarning.vue */ "./src/components/AppointmentConfigModal/NoEmailAddressWarning.vue"); /* harmony import */ var _store_appointmentConfigs_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../store/appointmentConfigs.js */ "./src/store/appointmentConfigs.js"); /* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! pinia */ "./node_modules/pinia/dist/pinia.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AppointmentConfigList', components: { AppointmentConfigListItem: _AppointmentConfigList_AppointmentConfigListItem_vue__WEBPACK_IMPORTED_MODULE_0__["default"], AppNavigationCaption: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcAppNavigationCaption, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcActionButton, PlusIcon: vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_2__["default"], AppointmentConfigModal: _AppointmentConfigModal_vue__WEBPACK_IMPORTED_MODULE_3__["default"], NoEmailAddressWarning: _AppointmentConfigModal_NoEmailAddressWarning_vue__WEBPACK_IMPORTED_MODULE_6__["default"] }, data() { return { showModalForNewConfig: false }; }, computed: { ...(0,pinia__WEBPACK_IMPORTED_MODULE_8__.mapStores)(_store_appointmentConfigs_js__WEBPACK_IMPORTED_MODULE_7__["default"]), configs() { return this.appointmentConfigStore.allConfigs; }, defaultConfig() { return _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"].createDefault(this.calendarUrlToUri(this.$store.getters.ownSortedCalendars[0].url), this.$store.getters.scheduleInbox, this.$store.getters.getResolvedTimezone); }, hasAtLeastOneCalendar() { return !!this.$store.getters.ownSortedCalendars[0]; }, hasUserEmailAddress() { const principal = this.$store.getters.getCurrentUserPrincipal; if (!principal) { return false; } return !!principal.emailAddress; }, sortedConfigs() { return [...this.configs].sort((config1, config2) => config1.name.localeCompare(config2.name)); } }, methods: { closeModal() { this.showModalForNewConfig = false; }, calendarUrlToUri(url) { // Trim trailing slash and split into URL parts const parts = url.replace(/\/$/, '').split('/'); // The last one is the URI return parts[parts.length - 1]; }, async deleteConfig(config) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].info('Deleting config', { config }); try { await this.appointmentConfigStore.deleteConfig({ id: config.id }); _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].info('Config deleted', { config }); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].error('Deleting appointment config failed', { config }); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppointmentConfigList/AppointmentConfigListItem.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppointmentConfigList/AppointmentConfigListItem.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_CalendarCheck_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/CalendarCheck.vue */ "./node_modules/vue-material-design-icons/CalendarCheck.vue"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony import */ var vue_material_design_icons_OpenInNew_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/OpenInNew.vue */ "./node_modules/vue-material-design-icons/OpenInNew.vue"); /* harmony import */ var vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/Pencil.vue */ "./node_modules/vue-material-design-icons/Pencil.vue"); /* harmony import */ var _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../models/appointmentConfig.js */ "./src/models/appointmentConfig.js"); /* harmony import */ var _AppointmentConfigModal_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../AppointmentConfigModal.vue */ "./src/components/AppointmentConfigModal.vue"); /* harmony import */ var vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/LinkVariant.vue */ "./node_modules/vue-material-design-icons/LinkVariant.vue"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../utils/logger.js */ "./src/utils/logger.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AppointmentConfigListItem', components: { AppointmentConfigModal: _AppointmentConfigModal_vue__WEBPACK_IMPORTED_MODULE_6__["default"], AppNavigationItem: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationItem, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ActionLink: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionLink, DeleteIcon: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_2__["default"], OpenInNewIcon: vue_material_design_icons_OpenInNew_vue__WEBPACK_IMPORTED_MODULE_3__["default"], PencilIcon: vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_4__["default"], CalendarCheckIcon: vue_material_design_icons_CalendarCheck_vue__WEBPACK_IMPORTED_MODULE_1__["default"], LinkVariantIcon: vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_7__["default"] }, props: { config: { type: _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_5__["default"], required: true } }, data() { return { showModal: false, loading: false }; }, computed: { hasClipboard() { return navigator && navigator.clipboard; } }, methods: { closeModal() { this.showModal = false; }, async copyLink() { try { await navigator.clipboard.writeText(this.config.bookingUrl); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__.showSuccess)(this.$t('calendar', 'Appointment link was copied to clipboard')); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_9__["default"].error('Failed to copy appointment link to clipboard', { error }); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__.showError)(this.$t('calendar', 'Appointment link could not be copied to clipboard')); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList.vue?vue&type=script&lang=js": /*!***********************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList.vue?vue&type=script&lang=js ***! \***********************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _CalendarList_CalendarListItem_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CalendarList/CalendarListItem.vue */ "./src/components/AppNavigation/CalendarList/CalendarListItem.vue"); /* harmony import */ var _CalendarList_PublicCalendarListItem_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CalendarList/PublicCalendarListItem.vue */ "./src/components/AppNavigation/CalendarList/PublicCalendarListItem.vue"); /* harmony import */ var _CalendarList_CalendarListItemLoadingPlaceholder_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CalendarList/CalendarListItemLoadingPlaceholder.vue */ "./src/components/AppNavigation/CalendarList/CalendarListItemLoadingPlaceholder.vue"); /* harmony import */ var vuedraggable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuedraggable */ "./node_modules/vuedraggable/dist/vuedraggable.umd.js"); /* harmony import */ var vuedraggable__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vuedraggable__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! debounce */ "./node_modules/debounce/index.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_7__); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var p_limit__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! p-limit */ "./node_modules/p-limit/index.js"); const limit = (0,p_limit__WEBPACK_IMPORTED_MODULE_5__["default"])(1); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CalendarList', components: { CalendarListItem: _CalendarList_CalendarListItem_vue__WEBPACK_IMPORTED_MODULE_0__["default"], CalendarListItemLoadingPlaceholder: _CalendarList_CalendarListItemLoadingPlaceholder_vue__WEBPACK_IMPORTED_MODULE_2__["default"], PublicCalendarListItem: _CalendarList_PublicCalendarListItem_vue__WEBPACK_IMPORTED_MODULE_1__["default"], draggable: (vuedraggable__WEBPACK_IMPORTED_MODULE_3___default()) }, props: { isPublic: { type: Boolean, required: true }, loadingCalendars: { type: Boolean, default: false } }, data() { return { calendars: [], disableDragging: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_6__.mapGetters)({ serverCalendars: 'sortedCalendarsSubscriptions' }), loadingKeyCalendars() { return this._uid + '-loading-placeholder-calendars'; } }, watch: { serverCalendars(val) { this.calendars = val; } }, methods: { update: debounce__WEBPACK_IMPORTED_MODULE_7___default()(async function () { this.disableDragging = true; const newOrder = this.calendars.reduce((newOrderObj, currentItem, currentIndex) => { newOrderObj[currentItem.id] = currentIndex; return newOrderObj; }, {}); try { await limit(() => this.$store.dispatch('updateCalendarListOrder', { newOrder })); } catch (err) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'Could not update calendar order.')); // Reset calendar list order on error this.calendars = this.serverCalendars; } finally { this.disableDragging = false; } }, 2500) } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItem.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItem.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_CheckboxBlankCircle_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/CheckboxBlankCircle.vue */ "./node_modules/vue-material-design-icons/CheckboxBlankCircle.vue"); /* harmony import */ var vue_material_design_icons_CheckboxBlankCircleOutline_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/CheckboxBlankCircleOutline.vue */ "./node_modules/vue-material-design-icons/CheckboxBlankCircleOutline.vue"); /* harmony import */ var vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/Pencil.vue */ "./node_modules/vue-material-design-icons/Pencil.vue"); /* harmony import */ var vue_material_design_icons_Undo_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/Undo.vue */ "./node_modules/vue-material-design-icons/Undo.vue"); /* harmony import */ var vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/LinkVariant.vue */ "./node_modules/vue-material-design-icons/LinkVariant.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CalendarListItem', components: { NcAvatar: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAvatar, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, AppNavigationItem: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationItem, CheckboxBlankCircle: vue_material_design_icons_CheckboxBlankCircle_vue__WEBPACK_IMPORTED_MODULE_2__["default"], CheckboxBlankCircleOutline: vue_material_design_icons_CheckboxBlankCircleOutline_vue__WEBPACK_IMPORTED_MODULE_3__["default"], Pencil: vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_4__["default"], Undo: vue_material_design_icons_Undo_vue__WEBPACK_IMPORTED_MODULE_5__["default"], LinkVariant: vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_6__["default"], NcActionText: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionText, NcActionSeparator: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionSeparator, NcActionCaption: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionCaption }, props: { calendar: { type: Object, required: true } }, data() { return { actionsMenuOpen: false }; }, computed: { /** * Whether to show the sharing section * * @return {boolean} */ canBeShared() { // The backend falsely reports incoming editable shares as being shareable // Ref https://github.com/nextcloud/calendar/issues/5755 if (this.calendar.isSharedWithMe) { return false; } return this.calendar.canBeShared || this.calendar.canBePublished; }, /** * Is the calendar shared with me? * * @return {boolean} */ isSharedWithMe() { return this.calendar.isSharedWithMe; }, /** * Is the calendar shared by me or published via a link? * * @return {boolean} */ isSharedByMe() { return this.calendar.shares.length > 0 || this.calendar.publishURL !== null; }, /** * Whether or not the information about the owner principal was loaded * * @return {boolean} */ loadedOwnerPrincipal() { return this.$store.getters.getPrincipalByUrl(this.calendar.owner) !== undefined; }, ownerUserId() { const principal = this.$store.getters.getPrincipalByUrl(this.calendar.owner); if (principal) { return principal.userId; } return ''; }, ownerDisplayname() { const principal = this.$store.getters.getPrincipalByUrl(this.calendar.owner); if (principal) { return principal.displayname; } return ''; }, /** * compute aria-description for AppNavigationItem link * * @return {string} */ descriptionAppNavigationItem() { if (this.calendar.enabled && this.calendar.displayName) { return t('calendar', 'Disable calendar "{calendar}"', { calendar: this.calendar.displayName }); } else if (this.calendar.enabled && !this.calendar.displayName) { return t('calendar', 'Disable untitled calendar'); } else if (!this.calendar.enabled && this.calendar.displayName) { return t('calendar', 'Enable calendar "{calendar}"', { calendar: this.calendar.displayName }); } else { return t('calendar', 'Enable untitled calendar'); } }, /** * Whether the calendar is currently being deleted * * @return {boolean} */ isBeingDeleted() { return !!this.calendar.deleteInterval; }, /** * Countdown to the deletion of the calendar * * @return {number|undefined} */ countdown() { return this.calendar.countdown; } }, methods: { /** * Toggles the enabled state of this calendar */ toggleEnabled() { this.$store.dispatch('toggleCalendarEnabled', { calendar: this.calendar }).catch(error => { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.showError)(this.$t('calendar', 'An error occurred, unable to change visibility of the calendar.')); console.error(error); }); }, /** * Cancels the deletion of a calendar */ cancelDeleteCalendar() { this.$store.dispatch('cancelCalendarDeletion', { calendar: this.calendar }); }, /** * Open the calendar modal for this calendar item. */ showEditModal() { this.$store.commit('showEditCalendarModal', { calendarId: this.calendar.id }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItemLoadingPlaceholder.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItemLoadingPlaceholder.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CalendarListItemLoadingPlaceholder' }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListNew.vue?vue&type=script&lang=js": /*!***************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListNew.vue?vue&type=script&lang=js ***! \***************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlank.vue */ "./node_modules/vue-material-design-icons/CalendarBlank.vue"); /* harmony import */ var vue_material_design_icons_CalendarCheck_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/CalendarCheck.vue */ "./node_modules/vue-material-design-icons/CalendarCheck.vue"); /* harmony import */ var vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/LinkVariant.vue */ "./node_modules/vue-material-design-icons/LinkVariant.vue"); /* harmony import */ var vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/Plus.vue */ "./node_modules/vue-material-design-icons/Plus.vue"); /* harmony import */ var vue_material_design_icons_Web_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/Web.vue */ "./node_modules/vue-material-design-icons/Web.vue"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CalendarListNew', components: { ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ActionInput: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionInput, ActionSeparator: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionSeparator, ActionText: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionText, AppNavigationItem: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationItem, CalendarBlank: vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_3__["default"], CalendarCheck: vue_material_design_icons_CalendarCheck_vue__WEBPACK_IMPORTED_MODULE_4__["default"], PublicCalendarSubscriptionPicker: () => __webpack_require__.e(/*! import() | public-calendar-subscription-picker */ "public-calendar-subscription-picker").then(__webpack_require__.bind(__webpack_require__, /*! ../../Subscription/PublicCalendarSubscriptionPicker.vue */ "./src/components/Subscription/PublicCalendarSubscriptionPicker.vue")), LinkVariant: vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_5__["default"], Plus: vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_6__["default"], Web: vue_material_design_icons_Web_vue__WEBPACK_IMPORTED_MODULE_7__["default"] }, data() { return { // Open state isOpen: false, // New calendar showCreateCalendarLabel: true, showCreateCalendarInput: false, showCreateCalendarSaving: false, // New calendar with task list showCreateCalendarTaskListLabel: true, showCreateCalendarTaskListInput: false, showCreateCalendarTaskListSaving: false, // New subscription showCreateSubscriptionLabel: true, showCreateSubscriptionInput: false, showCreateSubscriptionSaving: false, showHolidaySubscriptionPicker: false, showPublicCalendarSubscriptionPicker: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapState)({ canSubscribeLink: state => state.settings.canSubscribeLink, hasPublicCalendars: state => Boolean(state.settings.publicCalendars) }) }, watch: { isOpen() { if (this.isOpen) { return; } this.closeMenu(); } }, methods: { /** * Opens the Actions menu when clicking on the main item label */ toggleDialog() { this.isOpen = !this.isOpen; }, /** * Opens the create calendar input */ openCreateCalendarInput() { this.showCreateCalendarLabel = false; this.showCreateCalendarInput = true; this.showCreateCalendarSaving = false; this.showCreateCalendarTaskListLabel = true; this.showCreateCalendarTaskListInput = false; this.showCreateSubscriptionLabel = true; this.showCreateSubscriptionInput = false; }, /** * Opens the create calendar with task list input */ openCreateCalendarTaskListInput() { this.showCreateCalendarTaskListLabel = false; this.showCreateCalendarTaskListInput = true; this.showCreateCalendarTaskListSaving = false; this.showCreateCalendarLabel = true; this.showCreateCalendarInput = false; this.showCreateSubscriptionLabel = true; this.showCreateSubscriptionInput = false; }, /** * Opens the create subscription input */ openCreateSubscriptionInput() { this.showCreateSubscriptionLabel = false; this.showCreateSubscriptionInput = true; this.showCreateSubscriptionSaving = false; this.showCreateCalendarLabel = true; this.showCreateCalendarInput = false; this.showCreateCalendarTaskListLabel = true; this.showCreateCalendarTaskListInput = false; }, /** * Creates a new calendar * * @param {Event} event The submit event */ async createNewCalendar(event) { this.showCreateCalendarInput = false; this.showCreateCalendarSaving = true; const displayName = event.target.querySelector('input[type=text]').value; try { await this.$store.dispatch('appendCalendar', { displayName, color: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_2__.uidToHexColor)(displayName) }); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.showError)(this.$t('calendar', 'An error occurred, unable to create the calendar.')); } finally { this.showCreateCalendarSaving = false; this.showCreateCalendarLabel = true; this.isOpen = false; this.closeMenu(); } }, /** * Creates a new calendar with task list * * @param {Event} event The submit event */ async createNewCalendarTaskList(event) { this.showCreateCalendarTaskListInput = false; this.showCreateCalendarTaskListSaving = true; const displayName = event.target.querySelector('input[type=text]').value; try { await this.$store.dispatch('appendCalendar', { displayName, color: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_2__.uidToHexColor)(displayName), components: ['VEVENT', 'VTODO'] }); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.showError)(this.$t('calendar', 'An error occurred, unable to create the calendar.')); } finally { this.showCreateCalendarTaskListSaving = false; this.showCreateCalendarTaskListLabel = true; this.isOpen = false; this.closeMenu(); } }, /** * Creates a new subscription * * @param {Event} event The submit event */ async createNewSubscription(event) { this.showCreateSubscriptionInput = false; this.showCreateSubscriptionSaving = true; const link = event.target.querySelector('input[type=text]').value; let url; let hostname; try { url = new URL(link); hostname = url.hostname; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.showError)(this.$t('calendar', 'Please enter a valid link (starting with http://, https://, webcal://, or webcals://)')); return; } try { await this.$store.dispatch('appendSubscription', { displayName: hostname, color: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_2__.uidToHexColor)(link), source: link }); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.showError)(this.$t('calendar', 'An error occurred, unable to create the calendar.')); } finally { this.showCreateSubscriptionSaving = false; this.showCreateSubscriptionLabel = true; this.isOpen = false; this.closeMenu(); } }, /** * This resets the actions on close of menu */ closeMenu() { this.showCreateCalendarLabel = true; this.showCreateCalendarInput = false; this.showCreateCalendarSaving = false; this.showCreateCalendarTaskListLabel = true; this.showCreateCalendarTaskListInput = false; this.showCreateCalendarTaskListSaving = false; this.showCreateSubscriptionLabel = true; this.showCreateSubscriptionInput = false; this.showCreateSubscriptionSaving = false; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Moment.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Moment.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'Moment', props: { timestamp: { type: [Date, Number], required: true }, format: { type: String, default: 'LLL' } }, computed: { title() { return _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"].unix(this.numericTimestamp).format(this.format); }, formatted() { return _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"].unix(this.numericTimestamp).fromNow(); }, numericTimestamp() { if (this.timestamp instanceof Date) { return this.timestamp.getTime() / 1000; } return this.timestamp; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/PublicCalendarListItem.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/PublicCalendarListItem.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/Download.vue */ "./node_modules/vue-material-design-icons/Download.vue"); /* harmony import */ var vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/LinkVariant.vue */ "./node_modules/vue-material-design-icons/LinkVariant.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PublicCalendarListItem', components: { Avatar: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAvatar, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ActionLink: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionLink, ActionText: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionText, AppNavigationIconBullet: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationIconBullet, AppNavigationItem: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationItem, Download: vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_3__["default"], LinkVariant: vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_4__["default"] }, props: { calendar: { type: Object, required: true } }, data() { return { // copy subscription link: showCopySubscriptionLinkLabel: true, showCopySubscriptionLinkSpinner: false, showCopySubscriptionLinkSuccess: false, showCopySubscriptionLinkError: false, // Status of actions menu: menuOpen: false }; }, computed: { /** * Download url of the calendar * * @return {string} */ downloadUrl() { return this.calendar.url + '?export'; }, /** * TODO: this should use principals and principal.userId * * @return {string} */ owner() { const lastIndex = this.calendar.owner.lastIndexOf('dav/principals/users/'); if (lastIndex === -1) { return null; } // 'dav/principals/users/'.length => 21 const userId = this.calendar.owner.slice(lastIndex + 21); if (userId.endsWith('/')) { return userId.slice(0, -1); } return userId; } }, methods: { async copySubscriptionLink() { this.menuOpen = true; this.showCopySubscriptionLinkLabel = false; this.showCopySubscriptionLinkSpinner = true; this.showCopySubscriptionLinkSuccess = false; this.showCopySubscriptionLinkError = false; const rootURL = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateRemoteUrl)('dav'); const url = new URL(this.calendar.url + '?export', rootURL); url.protocol = 'webcal:'; // copy link for calendar to clipboard try { await navigator.clipboard.writeText(url); this.menuOpen = true; this.showCopySubscriptionLinkLabel = false; this.showCopySubscriptionLinkSpinner = false; this.showCopySubscriptionLinkSuccess = true; this.showCopySubscriptionLinkError = false; (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showSuccess)(this.$t('calendar', 'Calendar link copied to clipboard.')); } catch (error) { console.debug(error); this.menuOpen = true; this.showCopySubscriptionLinkLabel = false; this.showCopySubscriptionLinkSpinner = false; this.showCopySubscriptionLinkSuccess = false; this.showCopySubscriptionLinkError = true; (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)(this.$t('calendar', 'Calendar link could not be copied to clipboard.')); } finally { setTimeout(() => { this.showCopySubscriptionLinkLabel = true; this.showCopySubscriptionLinkSpinner = false; this.showCopySubscriptionLinkSuccess = false; this.showCopySubscriptionLinkError = false; }, 2000); } }, toggleEnabled() { this.$store.commit('toggleCalendarEnabled', { calendar: this.calendar }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Trashbin.vue?vue&type=script&lang=js": /*!********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Trashbin.vue?vue&type=script&lang=js ***! \********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _Moment_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Moment.vue */ "./src/components/AppNavigation/CalendarList/Moment.vue"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'Trashbin', components: { AppNavigationItem: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationItem, EmptyContent: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcEmptyContent, Modal: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcModal, Moment: _Moment_vue__WEBPACK_IMPORTED_MODULE_4__["default"], Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, Delete: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_6__["default"], NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton }, data() { return { showModal: false, loading: true }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_7__.mapGetters)({ trashBin: 'trashBin', timezoneObject: 'getResolvedTimezoneObject' }), calendars() { return this.$store.getters.sortedDeletedCalendars; }, objects() { return this.$store.getters.deletedCalendarObjects; }, items() { const formattedCalendars = this.calendars.map(calendar => { var _calendar$color; return { calendar, type: 'calendar', key: calendar.url, name: calendar.displayname, url: calendar._url, deletedAt: calendar._props['{http://nextcloud.com/ns}deleted-at'], color: (_calendar$color = calendar.color) !== null && _calendar$color !== void 0 ? _calendar$color : (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_5__.uidToHexColor)(calendar.displayname) }; }); const formattedCalendarObjects = this.objects.map(vobject => { var _vobject$calendar, _ref, _vobject$calendarComp2, _vobject$calendarComp3, _vobject$calendar2; let eventSummary = t('calendar', 'Untitled item'); try { var _vobject$calendarComp; eventSummary = vobject === null || vobject === void 0 || (_vobject$calendarComp = vobject.calendarComponent.getComponentIterator().next().value) === null || _vobject$calendarComp === void 0 ? void 0 : _vobject$calendarComp.title; } catch (e) { // ignore } let subline = ((_vobject$calendar = vobject.calendar) === null || _vobject$calendar === void 0 ? void 0 : _vobject$calendar.displayName) || t('calendar', 'Unknown calendar'); if (vobject.isEvent) { var _event$startDate$getI; const event = vobject === null || vobject === void 0 ? void 0 : vobject.calendarComponent.getFirstComponent('VEVENT'); const utcOffset = ((_event$startDate$getI = event === null || event === void 0 ? void 0 : event.startDate.getInTimezone(this.timezoneObject).utcOffset()) !== null && _event$startDate$getI !== void 0 ? _event$startDate$getI : 0) / 60; if (event !== null && event !== void 0 && event.startDate.jsDate && event !== null && event !== void 0 && event.isAllDay()) { subline += ' · ' + (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])(event.startDate.jsDate).utcOffset(utcOffset).format('LL'); } else if (event !== null && event !== void 0 && event.startDate.jsDate) { subline += ' · ' + (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])(event === null || event === void 0 ? void 0 : event.startDate.jsDate).utcOffset(utcOffset).format('LLL'); } } const color = (_ref = (_vobject$calendarComp2 = (_vobject$calendarComp3 = vobject.calendarComponent.getComponentIterator().next().value) === null || _vobject$calendarComp3 === void 0 ? void 0 : _vobject$calendarComp3.color) !== null && _vobject$calendarComp2 !== void 0 ? _vobject$calendarComp2 : (_vobject$calendar2 = vobject.calendar) === null || _vobject$calendar2 === void 0 ? void 0 : _vobject$calendar2.color) !== null && _ref !== void 0 ? _ref : (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_5__.uidToHexColor)(subline); return { vobject, type: 'object', key: vobject.id, name: eventSummary, subline, url: vobject.uri, deletedAt: vobject.dav._props['{http://nextcloud.com/ns}deleted-at'], color }; }); return formattedCalendars.concat(formattedCalendarObjects).sort((item1, item2) => item2.deletedAt - item1.deletedAt); }, retentionDuration() { return Math.ceil(this.trashBin.retentionDuration / (60 * 60 * 24)); } }, methods: { async onShow() { this.showModal = true; this.loading = true; try { await Promise.all([this.$store.dispatch('loadDeletedCalendars'), this.$store.dispatch('loadDeletedCalendarObjects')]); _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].debug('deleted calendars and objects loaded', { calendars: this.calendars, objects: this.objects }); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].error('could not load deleted calendars and objects', { error }); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(t('calendar', 'Could not load deleted calendars and objects')); } this.loading = false; }, async onDeletePermanently(item) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].debug('deleting ' + item.url + ' permanently', item); try { switch (item.type) { case 'calendar': await this.$store.dispatch('deleteCalendarPermanently', { calendar: item.calendar }); break; case 'object': await this.$store.dispatch('deleteCalendarObjectPermanently', { vobject: item.vobject }); break; } } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].error('could not restore ' + item.url, { error }); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(t('calendar', 'Could not restore calendar or event')); } }, async restore(item) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].debug('restoring ' + item.url, item); try { switch (item.type) { case 'calendar': await this.$store.dispatch('restoreCalendar', { calendar: item.calendar }); this.$store.dispatch('loadCollections'); break; case 'object': await this.$store.dispatch('restoreCalendarObject', { vobject: item.vobject }); break; } } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].error('could not restore ' + item.url, { error }); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(t('calendar', 'Could not restore calendar or event')); } }, onEmptyTrashBin() { OC.dialogs.confirm(t('calendar', 'Do you really want to empty the trash bin?'), t('calendar', 'Empty trash bin'), this.emptyTrashBin, true); }, emptyTrashBin(confirm) { if (!confirm) { return; } this.items.forEach(item => { this.onDeletePermanently(item); }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _EditCalendarModal_PublishCalendar_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EditCalendarModal/PublishCalendar.vue */ "./src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue"); /* harmony import */ var _EditCalendarModal_SharingSearch_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EditCalendarModal/SharingSearch.vue */ "./src/components/AppNavigation/EditCalendarModal/SharingSearch.vue"); /* harmony import */ var _EditCalendarModal_ShareItem_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./EditCalendarModal/ShareItem.vue */ "./src/components/AppNavigation/EditCalendarModal/ShareItem.vue"); /* harmony import */ var _EditCalendarModal_InternalLink_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./EditCalendarModal/InternalLink.vue */ "./src/components/AppNavigation/EditCalendarModal/InternalLink.vue"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony import */ var vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/Download.vue */ "./node_modules/vue-material-design-icons/Download.vue"); /* harmony import */ var vue_material_design_icons_Close_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-material-design-icons/Close.vue */ "./node_modules/vue-material-design-icons/Close.vue"); /* harmony import */ var vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue-material-design-icons/Check.vue */ "./node_modules/vue-material-design-icons/Check.vue"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'EditCalendarModal', components: { NcModal: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcModal, NcColorPicker: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcColorPicker, NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, PublishCalendar: _EditCalendarModal_PublishCalendar_vue__WEBPACK_IMPORTED_MODULE_1__["default"], SharingSearch: _EditCalendarModal_SharingSearch_vue__WEBPACK_IMPORTED_MODULE_2__["default"], ShareItem: _EditCalendarModal_ShareItem_vue__WEBPACK_IMPORTED_MODULE_3__["default"], DeleteIcon: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_6__["default"], DownloadIcon: vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_7__["default"], CloseIcon: vue_material_design_icons_Close_vue__WEBPACK_IMPORTED_MODULE_8__["default"], CheckIcon: vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_9__["default"], InternalLink: _EditCalendarModal_InternalLink_vue__WEBPACK_IMPORTED_MODULE_4__["default"] }, data() { return { calendarColor: undefined, calendarColorChanged: false, calendarName: undefined, calendarNameChanged: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_11__.mapGetters)(['editCalendarModal']), calendar() { var _this$editCalendarMod; const id = (_this$editCalendarMod = this.editCalendarModal) === null || _this$editCalendarMod === void 0 ? void 0 : _this$editCalendarMod.calendarId; if (!id) { return undefined; } return this.$store.getters.getCalendarById(id); }, /** * Whether to show the publishing action. * * @return {boolean} */ canBePublished() { return this.calendar.canBePublished; }, /** * Whether to show the sharing section * * @return {boolean} */ canBeShared() { // The backend falsely reports incoming editable shares as being shareable // Ref https://github.com/nextcloud/calendar/issues/5755 if (this.calendar.isSharedWithMe) { return false; } return this.calendar.canBeShared || this.calendar.canBePublished; }, /** * Download url of the calendar * * @return {string} */ downloadUrl() { return this.calendar.url + '?export'; } }, watch: { editCalendarModal(value) { if (!value) { return; } this.calendarName = this.calendar.displayName; this.calendarColor = this.calendar.color; this.calendarNameChanged = false; this.calendarColorChanged = false; } }, methods: { /** * Close the modal (without saving). */ closeModal() { this.$store.commit('hideEditCalendarModal'); }, /** * Save the calendar color. */ async saveColor() { try { await this.$store.dispatch('changeCalendarColor', { calendar: this.calendar, newColor: this.calendarColor }); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].error('Failed to save calendar color', { calendar: this.calendar, newColor: this.calendarColor }); throw error; } }, /** * Save the calendar name. */ async saveName() { try { await this.$store.dispatch('renameCalendar', { calendar: this.calendar, newName: this.calendarName }); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].error('Failed to save calendar name', { calendar: this.calendar, newName: this.calendarName }); throw error; } }, /** * Save unsaved changes and close the modal. * * @return {Promise} */ async saveAndClose() { try { if (this.calendarColorChanged) { await this.saveColor(); } if (this.calendarNameChanged) { await this.saveName(); } } catch (error) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_10__.showError)(this.$t('calendar', 'Failed to save calendar name and color')); } this.closeModal(); }, /** * Deletes or unshares the calendar */ deleteCalendar() { this.$store.dispatch('deleteCalendarAfterTimeout', { calendar: this.calendar }); this.closeModal(); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/InternalLink.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/InternalLink.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_OpenInNew_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/OpenInNew.vue */ "./node_modules/vue-material-design-icons/OpenInNew.vue"); /* harmony import */ var vue_material_design_icons_ClipboardArrowLeftOutline_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/ClipboardArrowLeftOutline.vue */ "./node_modules/vue-material-design-icons/ClipboardArrowLeftOutline.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'InternalLink', components: { NcActions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, NcActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, OpenInNewIcon: vue_material_design_icons_OpenInNew_vue__WEBPACK_IMPORTED_MODULE_3__["default"], ClipboardArrowLeftOutline: vue_material_design_icons_ClipboardArrowLeftOutline_vue__WEBPACK_IMPORTED_MODULE_4__["default"] }, props: { calendar: { type: Object, required: true } }, methods: { /** * Copies the private calendar link * to be used with clients like Thunderbird */ async copyLink() { const rootUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateRemoteUrl)('dav'); const url = new URL(this.calendar.url, rootUrl); try { await navigator.clipboard.writeText(url); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showSuccess)(this.$t('calendar', 'Calendar link copied to clipboard.')); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)(this.$t('calendar', 'Calendar link could not be copied to clipboard.')); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue?vue&type=script&lang=js": /*!********************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue?vue&type=script&lang=js ***! \********************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_click_outside__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-click-outside */ "./node_modules/vue-click-outside/index.js"); /* harmony import */ var vue_click_outside__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue_click_outside__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlank.vue */ "./node_modules/vue-material-design-icons/CalendarBlank.vue"); /* harmony import */ var vue_material_design_icons_ClipboardArrowLeftOutline_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/ClipboardArrowLeftOutline.vue */ "./node_modules/vue-material-design-icons/ClipboardArrowLeftOutline.vue"); /* harmony import */ var vue_material_design_icons_CodeBrackets_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/CodeBrackets.vue */ "./node_modules/vue-material-design-icons/CodeBrackets.vue"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony import */ var vue_material_design_icons_Email_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue-material-design-icons/Email.vue */ "./node_modules/vue-material-design-icons/Email.vue"); /* harmony import */ var vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-material-design-icons/LinkVariant.vue */ "./node_modules/vue-material-design-icons/LinkVariant.vue"); /* harmony import */ var vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vue-material-design-icons/Plus.vue */ "./node_modules/vue-material-design-icons/Plus.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PublishCalendar', components: { NcActions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, NcActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, NcActionInput: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionInput, NcActionText: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionText, CalendarBlank: vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_5__["default"], ClipboardArrowLeftOutline: vue_material_design_icons_ClipboardArrowLeftOutline_vue__WEBPACK_IMPORTED_MODULE_6__["default"], CodeBrackets: vue_material_design_icons_CodeBrackets_vue__WEBPACK_IMPORTED_MODULE_7__["default"], Delete: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_8__["default"], Email: vue_material_design_icons_Email_vue__WEBPACK_IMPORTED_MODULE_9__["default"], LinkVariant: vue_material_design_icons_LinkVariant_vue__WEBPACK_IMPORTED_MODULE_10__["default"], PlusIcon: vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_11__["default"] }, directives: { ClickOutside: (vue_click_outside__WEBPACK_IMPORTED_MODULE_1___default()) }, props: { calendar: { type: Object, required: true } }, data() { return { // is the calendar being published right now? publishingCalendar: false, // Send email action showEMailLabel: true, showEMailInput: false, showEMailSending: false, // copy public link: showCopyPublicLinkLabel: true, showCopyPublicLinkSpinner: false, // copy subscription link: showCopySubscriptionLinkLabel: true, showCopySubscriptionLinkSpinner: false, showCopySubscriptionLinkSuccess: false, showCopySubscriptionLinkError: false, // copy embed code: showCopyEmbedCodeLinkLabel: true, showCopyEmbedCodeLinkSpinner: false, showCopyEmbedCodeLinkSuccess: false, showCopyEmbedCodeLinkError: false, // delete public link unpublishingCalendar: false, // Status of actions menu: menuOpen: false }; }, computed: { isPublished() { return this.calendar.publishURL !== null; } }, methods: { async publishCalendar() { this.publishingCalendar = true; try { await this.$store.dispatch('publishCalendar', { calendar: this.calendar }); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(this.$t('calendar', 'An error occurred, unable to publish calendar.')); } finally { this.publishingCalendar = false; } }, openEMailLinkInput() { this.showEMailLabel = false; this.showEMailInput = true; this.showEMailSending = false; }, async sendLinkViaEMail(event) { this.showEMailLabel = false; this.showEMailInput = false; this.showEMailSending = true; const emailAddress = event.target.querySelector('input[type=text]').value; try { const url = [(0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.linkTo)('calendar', 'index.php'), 'v1/public/sendmail'].join('/'); await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__["default"].post(url, { recipient: emailAddress, token: this.calendar.publishURL.split('/').slice(-1)[0], calendarName: this.calendar.displayName }); } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(this.$t('calendar', 'An error occurred, unable to send email.')); } finally { this.showEMailLabel = true; this.showEMailInput = false; this.showEMailSending = false; } }, async copyPublicLink() { this.showCopyPublicLinkLabel = false; this.showCopyPublicLinkSpinner = true; const rootURL = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateRemoteUrl)('dav'); const token = this.calendar.publishURL.split('/').slice(-1)[0]; const url = new URL((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)('apps/calendar') + '/p/' + token, rootURL); // copy link for calendar to clipboard try { await navigator.clipboard.writeText(url); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showSuccess)(this.$t('calendar', 'Calendar link copied to clipboard.')); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(this.$t('calendar', 'Calendar link could not be copied to clipboard.')); } finally { this.showCopyPublicLinkLabel = true; this.showCopyPublicLinkSpinner = false; } }, async copySubscriptionLink() { this.menuOpen = true; this.showCopySubscriptionLinkLabel = false; this.showCopySubscriptionLinkSpinner = true; this.showCopySubscriptionLinkSuccess = false; this.showCopySubscriptionLinkError = false; const rootURL = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateRemoteUrl)('dav'); const url = new URL(this.calendar.publishURL + '?export', rootURL); // copy link for calendar to clipboard try { await navigator.clipboard.writeText(url); this.menuOpen = true; this.showCopySubscriptionLinkLabel = false; this.showCopySubscriptionLinkSpinner = false; this.showCopySubscriptionLinkSuccess = true; this.showCopySubscriptionLinkError = false; (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showSuccess)(this.$t('calendar', 'Calendar link copied to clipboard.')); } catch (error) { console.debug(error); this.menuOpen = true; this.showCopySubscriptionLinkLabel = false; this.showCopySubscriptionLinkSpinner = false; this.showCopySubscriptionLinkSuccess = false; this.showCopySubscriptionLinkError = true; (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(this.$t('calendar', 'Calendar link could not be copied to clipboard.')); } finally { setTimeout(() => { this.showCopySubscriptionLinkLabel = true; this.showCopySubscriptionLinkSpinner = false; this.showCopySubscriptionLinkSuccess = false; this.showCopySubscriptionLinkError = false; }, 2000); } }, async copyEmbedCode() { this.menuOpen = true; this.showCopyEmbedCodeLinkLabel = false; this.showCopyEmbedCodeLinkSpinner = true; this.showCopyEmbedCodeLinkSuccess = false; this.showCopyEmbedCodeLinkError = false; const rootURL = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateRemoteUrl)('dav'); const token = this.calendar.publishURL.split('/').slice(-1)[0]; const url = new URL((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)('apps/calendar') + '/embed/' + token, rootURL); const code = ''; // copy link for calendar to clipboard try { await navigator.clipboard.writeText(code); this.menuOpen = true; this.showCopyEmbedCodeLinkLabel = false; this.showCopyEmbedCodeLinkSpinner = false; this.showCopyEmbedCodeLinkSuccess = true; this.showCopyEmbedCodeLinkError = false; (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showSuccess)(this.$t('calendar', 'Embed code copied to clipboard.')); } catch (error) { console.debug(error); this.menuOpen = true; this.showCopyEmbedCodeLinkLabel = false; this.showCopyEmbedCodeLinkSpinner = false; this.showCopyEmbedCodeLinkSuccess = false; this.showCopyEmbedCodeLinkError = true; (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(this.$t('calendar', 'Embed code could not be copied to clipboard.')); } finally { setTimeout(() => { this.showCopyEmbedCodeLinkLabel = true; this.showCopyEmbedCodeLinkSpinner = false; this.showCopyEmbedCodeLinkSuccess = false; this.showCopyEmbedCodeLinkError = false; }, 2000); } }, async unpublishCalendar() { this.unpublishingCalendar = true; const calendar = this.calendar; try { await this.$store.dispatch('unpublishCalendar', { calendar }); this.unpublishingCalendar = false; } catch (error) { console.debug(error); this.unpublishingCalendar = false; (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(this.$t('calendar', 'Unpublishing calendar failed')); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/ShareItem.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/ShareItem.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/AccountMultiple.vue */ "./node_modules/vue-material-design-icons/AccountMultiple.vue"); /* harmony import */ var _Icons_IconCircles_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Icons/IconCircles.vue */ "./src/components/Icons/IconCircles.vue"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'ShareItem', components: { NcActions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, NcActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, NcAvatar: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAvatar, IconCircle: _Icons_IconCircles_vue__WEBPACK_IMPORTED_MODULE_2__["default"], AccountMultiple: vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_1__["default"], Delete: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }, props: { calendar: { type: Object, required: true }, sharee: { type: Object, required: true } }, data() { return { id: (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_5__.randomId)(), updatingSharee: false }; }, computed: { uid() { return this._uid; } }, methods: { /** * Unshares the calendar from the given sharee * * @return {Promise} */ async unshare() { this.updatingSharee = true; try { await this.$store.dispatch('unshareCalendar', { calendar: this.calendar, uri: this.sharee.uri }); this.updatingSharee = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showInfo)(this.$t('calendar', 'An error occurred while unsharing the calendar.')); this.updatingSharee = false; } }, /** * Toggles the write-permission of the share * * @return {Promise} */ async updatePermission() { this.updatingSharee = true; try { await this.$store.dispatch('toggleCalendarShareWritable', { calendar: this.calendar, uri: this.sharee.uri }); this.updatingSharee = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showInfo)(this.$t('calendar', 'An error occurred, unable to change the permission of the share.')); this.updatingSharee = false; } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/SharingSearch.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/SharingSearch.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! debounce */ "./node_modules/debounce/index.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _utils_url_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../utils/url.js */ "./src/utils/url.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'SharingSearch', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect }, props: { calendar: { type: Object, required: true } }, data() { return { isLoading: false, inputGiven: false, usersOrGroups: [] }; }, methods: { /** * Share calendar * * @param {object} data destructuring object * @param {string} data.user the userId * @param {string} data.displayName the displayName * @param {string} data.uri the sharing principalScheme uri * @param {boolean} data.isGroup is this a group ? * @param {boolean} data.isCircle is this a circle-group ? */ shareCalendar(_ref) { let { user, displayName, uri, isGroup, isCircle } = _ref; this.$store.dispatch('shareCalendar', { calendar: this.calendar, user, displayName, uri, isGroup, isCircle }); }, /** * Function to filter results in NcSelect * * @param {object} option * @param {string} label * @param {string} search */ filterResults(option, label, search) { return true; }, /** * Use the cdav client call to find matches to the query from the existing Users & Groups * * @param {string} query */ findSharee: debounce__WEBPACK_IMPORTED_MODULE_5___default()(async function (query) { const hiddenPrincipalSchemes = []; const hiddenUrls = []; this.calendar.shares.forEach(share => { hiddenPrincipalSchemes.push(share.uri); }); if (this.$store.getters.getCurrentUserPrincipal) { hiddenUrls.push(this.$store.getters.getCurrentUserPrincipal.url); } if (this.calendar.owner) { hiddenUrls.push(this.calendar.owner); } this.isLoading = true; this.usersOrGroups = []; if (query.length > 0) { const davPromise = this.findShareesFromDav(query, hiddenPrincipalSchemes, hiddenUrls); const ocsPromise = this.findShareesFromCircles(query, hiddenPrincipalSchemes, hiddenUrls); const [davResults, ocsResults] = await Promise.all([davPromise, ocsPromise]); this.usersOrGroups = [...davResults, ...ocsResults]; this.isLoading = false; this.inputGiven = true; } else { this.inputGiven = false; this.isLoading = false; } }, 500), /** * * @param {string} query The search query * @param {string[]} hiddenPrincipals A list of principals to exclude from search results * @param {string[]} hiddenUrls A list of urls to exclude from search results * @return {Promise} */ async findShareesFromDav(query, hiddenPrincipals, hiddenUrls) { let results; try { results = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_1__.principalPropertySearchByDisplaynameOrEmail)(query); } catch (error) { return []; } return results.reduce((list, result) => { if (['ROOM', 'RESOURCE'].includes(result.calendarUserType)) { return list; } const isGroup = result.calendarUserType === 'GROUP'; // TODO: Why do we have to decode those two values? const user = (0,_utils_url_js__WEBPACK_IMPORTED_MODULE_4__.urldecode)(result[isGroup ? 'groupId' : 'userId']); const decodedPrincipalScheme = (0,_utils_url_js__WEBPACK_IMPORTED_MODULE_4__.urldecode)(result.principalScheme); if (hiddenPrincipals.includes(decodedPrincipalScheme)) { return list; } if (hiddenUrls.includes(result.url)) { return list; } // Don't show resources and rooms if (!['GROUP', 'INDIVIDUAL'].includes(result.calendarUserType)) { return list; } list.push({ user, displayName: result.displayname, uri: decodedPrincipalScheme, isGroup, isCircle: false, isNoUser: isGroup, search: query }); return list; }, []); }, /** * * @param {string} query The search query * @param {string[]} hiddenPrincipals A list of principals to exclude from search results * @param {string[]} hiddenUrls A list of urls to exclude from search results * @return {Promise} */ async findShareesFromCircles(query, hiddenPrincipals, hiddenUrls) { let results; try { results = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_2__["default"].get((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_3__.generateOcsUrl)('apps/files_sharing/api/v1/') + 'sharees', { params: { format: 'json', search: query, perPage: 200, itemType: 'principals' } }); } catch (error) { return []; } if (results.data.ocs.meta.status === 'failure') { return []; } let circles = []; if (Array.isArray(results.data.ocs.data.circles)) { circles = circles.concat(results.data.ocs.data.circles); } if (Array.isArray(results.data.ocs.data.exact.circles)) { circles = circles.concat(results.data.ocs.data.exact.circles); } if (circles.length === 0) { return []; } return circles.filter(circle => { return !hiddenPrincipals.includes('principal:principals/circles/' + circle.value.shareWith); }).map(circle => ({ user: circle.label, displayName: circle.label, icon: 'icon-circle', uri: 'principal:principals/circles/' + circle.value.shareWith, isGroup: false, isCircle: true, isNoUser: true, search: query })); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedHeader/EmbedHeaderTodayButton.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedHeader/EmbedHeaderTodayButton.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'EmbedHeaderTodayButton', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcButton }, computed: { title() { return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])().format('ll'); } }, methods: { today() { const name = this.$route.name; const params = Object.assign({}, this.$route.params, { firstDay: 'now' }); // Don't push new route when day didn't change if (this.$route.params.firstDay === 'now') { return; } this.$router.push({ name, params }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'EmbedHeaderViewButtons', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton }, props: { isWidget: { type: Boolean, default: false } }, computed: { isAgendaDayViewSelected() { return this.selectedView === 'timeGridDay'; }, isAgendaWeekViewSelected() { return this.selectedView === 'timeGridWeek'; }, isMonthViewSelected() { return this.selectedView === 'dayGridMonth'; }, isYearViewSelected() { return this.selectedView === 'multiMonthYear'; }, isMonthListViewSelected() { return this.selectedView === 'listMonth'; }, selectedView() { if (this.isWidget) { return this.$store.getters.widgetView; } return this.$route.params.view; } }, methods: { view(viewName) { if (this.isWidget) { this.$store.commit('setWidgetView', { viewName }); } else { const name = this.$route.name; const params = Object.assign({}, this.$route.params, { view: viewName }); // Don't push new route when view didn't change if (this.$route.params.view === viewName) { return; } this.$router.push({ name, params }); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedTopNavigation.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedTopNavigation.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _AppNavigationHeader_AppNavigationHeaderDatePicker_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AppNavigationHeader/AppNavigationHeaderDatePicker.vue */ "./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue"); /* harmony import */ var _EmbedHeader_EmbedHeaderTodayButton_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./EmbedHeader/EmbedHeaderTodayButton.vue */ "./src/components/AppNavigation/EmbedHeader/EmbedHeaderTodayButton.vue"); /* harmony import */ var _EmbedHeader_EmbedHeaderViewButtons_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./EmbedHeader/EmbedHeaderViewButtons.vue */ "./src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue"); /* harmony import */ var vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlank.vue */ "./node_modules/vue-material-design-icons/CalendarBlank.vue"); /* harmony import */ var vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/Download.vue */ "./node_modules/vue-material-design-icons/Download.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'EmbedTopNavigation', components: { AppNavigationHeaderDatePicker: _AppNavigationHeader_AppNavigationHeaderDatePicker_vue__WEBPACK_IMPORTED_MODULE_3__["default"], AppNavigationHeaderTodayButton: _EmbedHeader_EmbedHeaderTodayButton_vue__WEBPACK_IMPORTED_MODULE_4__["default"], AppNavigationHeaderViewButtons: _EmbedHeader_EmbedHeaderViewButtons_vue__WEBPACK_IMPORTED_MODULE_5__["default"], Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ActionLink: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionLink, CalendarBlank: vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_6__["default"], Download: vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_7__["default"] }, props: { isWidget: { type: Boolean, default: false }, canAccessPreviousEvent: { type: Boolean, default: true } }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapGetters)({ subscriptions: 'sortedSubscriptions' }) }, methods: { async copySubscriptionLink(calendar) { const rootURL = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateRemoteUrl)('dav'); const url = new URL(calendar.url + '?export', rootURL); url.protocol = 'webcal:'; // copy link for calendar to clipboard try { await navigator.clipboard.writeText(url); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showSuccess)(this.$t('calendar', 'Calendar link copied to clipboard.')); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)(this.$t('calendar', 'Calendar link could not be copied to clipboard.')); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings.vue?vue&type=script&lang=js": /*!*******************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings.vue?vue&type=script&lang=js ***! \*******************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _Shared_CalendarPicker_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Shared/CalendarPicker.vue */ "./src/components/Shared/CalendarPicker.vue"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _Settings_SettingsImportSection_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Settings/SettingsImportSection.vue */ "./src/components/AppNavigation/Settings/SettingsImportSection.vue"); /* harmony import */ var _Settings_SettingsTimezoneSelect_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Settings/SettingsTimezoneSelect.vue */ "./src/components/AppNavigation/Settings/SettingsTimezoneSelect.vue"); /* harmony import */ var _Settings_SettingsAttachmentsFolder_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Settings/SettingsAttachmentsFolder.vue */ "./src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _Settings_ShortcutOverview_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Settings/ShortcutOverview.vue */ "./src/components/AppNavigation/Settings/ShortcutOverview.vue"); /* harmony import */ var _models_consts_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../models/consts.js */ "./src/models/consts.js"); /* harmony import */ var _defaults_defaultAlarmProvider_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../defaults/defaultAlarmProvider.js */ "./src/defaults/defaultAlarmProvider.js"); /* harmony import */ var vue_material_design_icons_ClipboardArrowLeftOutline_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vue-material-design-icons/ClipboardArrowLeftOutline.vue */ "./node_modules/vue-material-design-icons/ClipboardArrowLeftOutline.vue"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony import */ var vue_material_design_icons_OpenInNew_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vue-material-design-icons/OpenInNew.vue */ "./node_modules/vue-material-design-icons/OpenInNew.vue"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'Settings', components: { ShortcutOverview: _Settings_ShortcutOverview_vue__WEBPACK_IMPORTED_MODULE_9__["default"], ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ActionCheckbox: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionCheckbox, ActionLink: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionLink, AppNavigationSettings: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationSettings, NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect, SettingsImportSection: _Settings_SettingsImportSection_vue__WEBPACK_IMPORTED_MODULE_5__["default"], SettingsTimezoneSelect: _Settings_SettingsTimezoneSelect_vue__WEBPACK_IMPORTED_MODULE_6__["default"], SettingsAttachmentsFolder: _Settings_SettingsAttachmentsFolder_vue__WEBPACK_IMPORTED_MODULE_7__["default"], ClipboardArrowLeftOutline: vue_material_design_icons_ClipboardArrowLeftOutline_vue__WEBPACK_IMPORTED_MODULE_12__["default"], InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_13__["default"], OpenInNewIcon: vue_material_design_icons_OpenInNew_vue__WEBPACK_IMPORTED_MODULE_14__["default"], CalendarPicker: _Shared_CalendarPicker_vue__WEBPACK_IMPORTED_MODULE_1__["default"] }, props: { loadingCalendars: { type: Boolean, default: false } }, data() { return { savingBirthdayCalendar: false, savingEventLimit: false, savingTasks: false, savingPopover: false, savingSlotDuration: false, savingDefaultReminder: false, savingDefaultCalendarId: false, savingWeekend: false, savingWeekNumber: false, savingDefaultCalendar: false, displayKeyboardShortcuts: false, defaultCalendarPickerId: (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_16__.randomId)() }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_17__.mapGetters)({ birthdayCalendar: 'hasBirthdayCalendar', currentUserPrincipal: 'getCurrentUserPrincipal' }), ...(0,vuex__WEBPACK_IMPORTED_MODULE_17__.mapState)({ eventLimit: state => state.settings.eventLimit, showPopover: state => !state.settings.skipPopover, showTasks: state => state.settings.showTasks, showWeekends: state => state.settings.showWeekends, showWeekNumbers: state => state.settings.showWeekNumbers, slotDuration: state => state.settings.slotDuration, defaultReminder: state => state.settings.defaultReminder, timezone: state => state.settings.timezone, locale: state => state.settings.momentLocale, attachmentsFolder: state => state.settings.attachmentsFolder }), isBirthdayCalendarDisabled() { return this.savingBirthdayCalendar || this.loadingCalendars; }, files() { return this.$store.state.importFiles.importFiles; }, showUploadButton() { return this.$store.state.importState.importState.stage === _models_consts_js__WEBPACK_IMPORTED_MODULE_10__.IMPORT_STAGE_DEFAULT; }, showImportModal() { return this.$store.state.importState.importState.stage === _models_consts_js__WEBPACK_IMPORTED_MODULE_10__.IMPORT_STAGE_PROCESSING; }, showProgressBar() { return this.$store.state.importState.importState.stage === _models_consts_js__WEBPACK_IMPORTED_MODULE_10__.IMPORT_STAGE_IMPORTING; }, settingsTitle() { return this.$t('calendar', 'Calendar settings'); }, slotDurationOptions() { return [{ label: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_3__["default"].duration(5 * 60 * 1000).locale(this.locale).humanize(), value: '00:05:00' }, { label: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_3__["default"].duration(10 * 60 * 1000).locale(this.locale).humanize(), value: '00:10:00' }, { label: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_3__["default"].duration(15 * 60 * 1000).locale(this.locale).humanize(), value: '00:15:00' }, { label: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_3__["default"].duration(20 * 60 * 1000).locale(this.locale).humanize(), value: '00:20:00' }, { label: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_3__["default"].duration(30 * 60 * 1000).locale(this.locale).humanize(), value: '00:30:00' }, { label: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_3__["default"].duration(60 * 60 * 1000).locale(this.locale).humanize(), value: '01:00:00' }]; }, selectedDurationOption() { return this.slotDurationOptions.find(o => o.value === this.slotDuration); }, defaultReminderOptions() { const defaultAlarms = (0,_defaults_defaultAlarmProvider_js__WEBPACK_IMPORTED_MODULE_11__.getDefaultAlarms)().map(seconds => { return { label: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_3__["default"].duration(Math.abs(seconds) * 1000).locale(this.locale).humanize(), value: seconds.toString() }; }); return [{ label: this.$t('calendar', 'No reminder'), value: 'none' }].concat(defaultAlarms); }, selectedDefaultReminderOption() { return this.defaultReminderOptions.find(o => o.value === this.defaultReminder); }, availabilitySettingsUrl() { return (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)('/settings/user/availability'); }, nextcloudVersion() { return parseInt(OC.config.version.split('.')[0]); }, defaultCalendarOptions() { return this.$store.state.calendars.calendars.filter(calendar => !calendar.readOnly && !calendar.isSharedWithMe && calendar.supportsEvents); }, /** * The default calendar for incoming inivitations * * @return {object|undefined} The default calendar or undefined if none is available */ defaultCalendar() { const defaultCalendarUrl = this.currentUserPrincipal.scheduleDefaultCalendarUrl; const calendar = this.defaultCalendarOptions.find(calendar => calendar.url === defaultCalendarUrl); // If the default calendar is not or no longer available, // pick the first calendar in the list of available calendars. if (!calendar) { return this.defaultCalendarOptions[0]; } return calendar; } }, methods: { async toggleBirthdayEnabled() { // change to loading status this.savingBirthdayCalendar = true; try { await this.$store.dispatch('toggleBirthdayCalendarEnabled'); this.savingBirthdayCalendar = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'New setting was not saved successfully.')); this.savingBirthdayCalendar = false; } }, async toggleEventLimitEnabled() { // change to loading status this.savingEventLimit = true; try { await this.$store.dispatch('toggleEventLimitEnabled'); this.savingEventLimit = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'New setting was not saved successfully.')); this.savingEventLimit = false; } }, async toggleTasksEnabled() { // change to loading status this.savingTasks = true; try { await this.$store.dispatch('toggleTasksEnabled'); this.savingTasks = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'New setting was not saved successfully.')); this.savingTasks = false; } }, async togglePopoverEnabled() { // change to loading status this.savingPopover = true; try { await this.$store.dispatch('togglePopoverEnabled'); this.savingPopover = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'New setting was not saved successfully.')); this.savingPopover = false; } }, async toggleWeekendsEnabled() { // change to loading status this.savingWeekend = true; try { await this.$store.dispatch('toggleWeekendsEnabled'); this.savingWeekend = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'New setting was not saved successfully.')); this.savingWeekend = false; } }, /** * Toggles the setting for "Show week number" */ async toggleWeekNumberEnabled() { // change to loading status this.savingWeekNumber = true; try { await this.$store.dispatch('toggleWeekNumberEnabled'); this.savingWeekNumber = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'New setting was not saved successfully.')); this.savingWeekNumber = false; } }, /** * Updates the setting for slot duration * * @param {object} option The new selected value */ async changeSlotDuration(option) { if (!option) { return; } // change to loading status this.savingSlotDuration = true; try { await this.$store.dispatch('setSlotDuration', { slotDuration: option.value }); this.savingSlotDuration = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'New setting was not saved successfully.')); this.savingSlotDuration = false; } }, /** * Updates the setting for the default reminder * * @param {object} option The new selected value */ async changeDefaultReminder(option) { if (!option) { return; } // change to loading status this.savingDefaultReminder = true; try { await this.$store.dispatch('setDefaultReminder', { defaultReminder: option.value }); this.savingDefaultReminder = false; } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'New setting was not saved successfully.')); this.savingDefaultReminder = false; } }, /** * Changes the default calendar for incoming invitations * * @param {object} selectedCalendar The new selected default calendar */ async changeDefaultCalendar(selectedCalendar) { if (!selectedCalendar) { return; } this.savingDefaultCalendar = true; try { await this.$store.dispatch('changePrincipalScheduleDefaultCalendarUrl', { principal: this.currentUserPrincipal, scheduleDefaultCalendarUrl: selectedCalendar.url }); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_15__["default"].error('Error while changing default calendar', { error, calendarUrl: selectedCalendar.url, selectedCalendar }); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'Failed to save default calendar')); } finally { this.savingDefaultCalendar = false; } }, /** * Copies the primary CalDAV url to the user's clipboard. */ async copyPrimaryCalDAV() { try { await navigator.clipboard.writeText((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateRemoteUrl)('dav')); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showSuccess)(this.$t('calendar', 'CalDAV link copied to clipboard.')); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'CalDAV link could not be copied to clipboard.')); } }, /** * Copies the macOS / iOS specific CalDAV url to the user's clipboard. * This url is user-specific. */ async copyAppleCalDAV() { const rootURL = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateRemoteUrl)('dav'); const url = new URL((0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_8__.getCurrentUserPrincipal)().principalUrl, rootURL); try { await navigator.clipboard.writeText(url); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showSuccess)(this.$t('calendar', 'CalDAV link copied to clipboard.')); } catch (error) { console.debug(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_4__.showError)(this.$t('calendar', 'CalDAV link could not be copied to clipboard.')); } }, /** * Show the keyboard shortcuts overview */ showKeyboardShortcuts() { this.displayKeyboardShortcuts = true; }, /** * Hide the keyboard shortcuts overview */ hideKeyboardShortcuts() { this.displayKeyboardShortcuts = false; }, /** * Toggles the keyboard shortcuts overview */ toggleKeyboardShortcuts() { this.displayKeyboardShortcuts = !this.displayKeyboardShortcuts; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ImportScreen.vue?vue&type=script&lang=js": /*!********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ImportScreen.vue?vue&type=script&lang=js ***! \********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _ImportScreenRow_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ImportScreenRow.vue */ "./src/components/AppNavigation/Settings/ImportScreenRow.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'ImportScreen', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, ImportScreenRow: _ImportScreenRow_vue__WEBPACK_IMPORTED_MODULE_1__["default"], Modal: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcModal }, props: { files: { type: Array, required: true } }, computed: { headerRowKey() { return this._uid + '-header-row'; } }, methods: { importCalendar() { this.$emit('import-calendar'); }, cancelImport() { this.$emit('cancel-import'); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ImportScreenRow.vue?vue&type=script&lang=js": /*!***********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ImportScreenRow.vue?vue&type=script&lang=js ***! \***********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _Shared_CalendarPicker_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Shared/CalendarPicker.vue */ "./src/components/Shared/CalendarPicker.vue"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/color.js */ "./src/utils/color.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'ImportScreenRow', components: { CalendarPicker: _Shared_CalendarPicker_vue__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { file: { type: Object, required: true } }, computed: { calendar() { let calendarId = this.$store.state.importFiles.importCalendarRelation[this.file.id]; if (!calendarId) { this.setDefaultCalendarId(); calendarId = this.$store.state.importFiles.importCalendarRelation[this.file.id]; } if (calendarId === 'new') { return { id: 'new', displayName: this.$t('calendar', 'New calendar'), isSharedWithMe: false, color: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.uidToHexColor)(this.$t('calendar', 'New calendar')), owner: this.$store.getters.getCurrentUserPrincipal.url }; } return this.$store.getters.getCalendarById(calendarId); }, calendars() { // TODO: remove once the false positive is fixed upstream // eslint-disable-next-line vue/no-side-effects-in-computed-properties const calendars = this.$store.getters.sortedCalendarFilteredByComponents(this.file.parser.containsVEvents(), this.file.parser.containsVJournals(), this.file.parser.containsVTodos()); calendars.push({ id: 'new', displayName: this.$t('calendar', 'New calendar'), isSharedWithMe: false, color: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.uidToHexColor)(this.$t('calendar', 'New calendar')), owner: this.$store.getters.getCurrentUserPrincipal.url }); return calendars; } }, methods: { selectCalendar(newCalendar) { this.$store.commit('setCalendarForFileId', { fileId: this.file.id, calendarId: newCalendar.id }); }, setDefaultCalendarId() { this.$store.commit('setCalendarForFileId', { fileId: this.file.id, calendarId: this.calendars[0].id }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue_dist_Components_NcInputField_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue/dist/Components/NcInputField.js */ "./node_modules/@nextcloud/vue/dist/Components/NcInputField.mjs"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! debounce */ "./node_modules/debounce/index.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* eslint-disable-next-line n/no-missing-import */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'SettingsAttachmentsFolder', components: { NcInputField: _nextcloud_vue_dist_Components_NcInputField_js__WEBPACK_IMPORTED_MODULE_0__["default"] }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapState)({ attachmentsFolder: state => state.settings.attachmentsFolder || '/' }) }, methods: { async selectCalendarFolder() { const picker = (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.getFilePickerBuilder)(t('calendar', 'Select the default location for attachments')).setMultiSelect(false).setModal(true).setType(1).addMimeTypeFilter('httpd/unix-directory').allowDirectories().build(); const path = await picker.pick(); this.saveAttachmentsFolder(path); }, debounceSaveAttachmentsFolder: debounce__WEBPACK_IMPORTED_MODULE_3___default()(function () { this.saveAttachmentsFolder(...arguments); }, 300), saveAttachmentsFolder(path) { if (typeof path !== 'string' || path.trim() === '' || !path.startsWith('/')) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.showError)(t('calendar', 'Invalid location selected')); return; } if (path.includes('//')) { path = path.replace(/\/\//gi, '/'); } this.$store.dispatch('setAttachmentsFolder', { attachmentsFolder: path }).then(() => { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.showSuccess)(this.$t('calendar', 'Attachments folder successfully saved.')); }).catch(error => { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_1__.showError)(this.$t('calendar', 'Error on saving attachments folder.')); }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsImportSection.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsImportSection.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _ImportScreen_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ImportScreen.vue */ "./src/components/AppNavigation/Settings/ImportScreen.vue"); /* harmony import */ var _services_readFileAsTextService_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../services/readFileAsTextService.js */ "./src/services/readFileAsTextService.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _models_consts_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../models/consts.js */ "./src/models/consts.js"); /* harmony import */ var vue_material_design_icons_Upload_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/Upload.vue */ "./node_modules/vue-material-design-icons/Upload.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'SettingsImportSection', components: { ImportScreen: _ImportScreen_vue__WEBPACK_IMPORTED_MODULE_1__["default"], Upload: vue_material_design_icons_Upload_vue__WEBPACK_IMPORTED_MODULE_5__["default"] }, props: { isDisabled: { type: Boolean, required: true } }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_6__.mapState)({ files: state => state.importFiles.importFiles, stage: state => state.importState.stage, total: state => state.importState.total, accepted: state => state.importState.accepted, denied: state => state.importState.denied }), /** * Total amount of processed calendar-objects, either accepted or failed * * @return {number} */ imported() { return this.accepted + this.denied; }, /** * Whether or not to display the upload button * * @return {boolean} */ allowUploadOfFiles() { return this.stage === _models_consts_js__WEBPACK_IMPORTED_MODULE_4__.IMPORT_STAGE_DEFAULT; }, /** * Whether or not to display the import modal * * @return {boolean} */ showImportModal() { return this.stage === _models_consts_js__WEBPACK_IMPORTED_MODULE_4__.IMPORT_STAGE_AWAITING_USER_SELECT; }, /** * Whether or not to display progress bar * * @return {boolean} */ showProgressBar() { return this.stage === _models_consts_js__WEBPACK_IMPORTED_MODULE_4__.IMPORT_STAGE_IMPORTING; }, /** * Unique identifier for the input field. * Needed for the label * * @return {string} */ inputUid() { return this._uid + '-import-input'; }, /** * Get a list of supported file-types for the file-picker * * This list comes straight from calendar-js. * So in case we add new supported file-types there, * we don't have to change anything here * * @return {string[]} */ supportedFileTypes() { return (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.getParserManager)().getAllSupportedFileTypes(); }, /** * Whether or not the import button is disabled * * @return {boolean} */ disableImport() { return this.isDisabled || !this.allowUploadOfFiles; } }, methods: { /** * Process all files submitted from the user * * @param {Event} event The change-event of the input-field */ async processFiles(event) { this.$store.commit('changeStage', _models_consts_js__WEBPACK_IMPORTED_MODULE_4__.IMPORT_STAGE_PROCESSING); let addedFiles = false; for (const file of event.target.files) { const contents = await (0,_services_readFileAsTextService_js__WEBPACK_IMPORTED_MODULE_2__.readFileAsText)(file); const lastModified = file.lastModified; const name = file.name; const size = file.size; let type = file.type; // Developers are advised not to rely on the type as a sole validation scheme. // https://developer.mozilla.org/en-US/docs/Web/API/File/type if (!this.supportedFileTypes.includes(type)) { // Try to guess file type based on its extension. // If it's an xml file, our best guess is xCal: https://tools.ietf.org/html/rfc6321 // If it's a json file, our best guess is jCal: https://tools.ietf.org/html/rfc7265 // In every other case, our best guess is just plain old iCalendar: https://tools.ietf.org/html/rfc5545 if (name.endsWith('.xml')) { type = 'application/calendar+xml'; } else if (name.endsWith('.json')) { type = 'application/calendar+json'; } else if (name.endsWith('.csv')) { type = 'text/csv'; } else { type = 'text/calendar'; } } // Use custom-options for parser. // The last one in particular will prevent thousands // of invitation emails to be sent out on import const parser = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.getParserManager)().getParserForFileType(type, { extractGlobalProperties: true, includeTimezones: true, removeRSVPForAttendees: true }); try { parser.parse(contents); } catch (error) { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(this.$t('calendar', '{filename} could not be parsed', { filename: name })); continue; } this.$store.commit('addFile', { contents, lastModified, name, size, type, parser }); addedFiles = true; } if (!addedFiles) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showError)(this.$t('calendar', 'No valid files found, aborting import')); this.$store.commit('removeAllFiles'); this.$store.commit('resetState'); return; } this.$store.commit('changeStage', _models_consts_js__WEBPACK_IMPORTED_MODULE_4__.IMPORT_STAGE_AWAITING_USER_SELECT); }, /** * Import all events into the calendars * This will show */ async importCalendar() { await this.$store.dispatch('importEventsIntoCalendar'); if (this.total === this.accepted) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showSuccess)(this.$n('calendar', 'Successfully imported %n event', 'Successfully imported %n events', this.total)); } else { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showWarning)(this.$t('calendar', 'Import partially failed. Imported {accepted} out of {total}.', { accepted: this.accepted, total: this.total })); } this.$store.commit('removeAllFiles'); this.$store.commit('resetState'); // Once we are done importing, reload the calendar view this.$store.commit('incrementModificationCount'); this.resetInput(); }, /** * Resets the import sate */ cancelImport() { this.$store.commit('removeAllFiles'); this.$store.commit('resetState'); this.resetInput(); }, /** * Manually reset the file-input, because when you try to upload * the exact same files again, it won't trigger the change event */ resetInput() { this.$refs.importInput.value = ''; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsTimezoneSelect.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsTimezoneSelect.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _services_timezoneDetectionService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../services/timezoneDetectionService.js */ "./src/services/timezoneDetectionService.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'SettingsTimezoneSelect', components: { TimezonePicker: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcTimezonePicker }, props: { isDisabled: { type: Boolean, required: true } }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_3__.mapState)({ timezone: state => state.settings.timezone || 'automatic' }), /** * Offer "Automatic" as an additional timezone * * @return {object[]} */ additionalTimezones() { return [{ continent: this.$t('calendar', 'Automatic'), timezoneId: 'automatic', label: this.$t('calendar', 'Automatic ({detected})', { detected: (0,_services_timezoneDetectionService_js__WEBPACK_IMPORTED_MODULE_1__.detectTimezone)() }) }]; } }, methods: { /** * Updates the timezone set by the user * * @param {string} timezoneId New timezoneId to save */ setTimezoneValue(timezoneId) { this.$store.dispatch('setTimezone', { timezoneId }).catch(error => { console.error(error); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showInfo)(this.$t('calendar', 'New setting was not saved successfully.')); }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ShortcutOverview.vue?vue&type=script&lang=js": /*!************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ShortcutOverview.vue?vue&type=script&lang=js ***! \************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ components: { Modal: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcModal }, computed: { shortcuts() { return [{ categoryId: 'navigation', categoryLabel: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Navigation'), shortcuts: [{ keys: [['p'], ['k']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Previous period') }, { keys: [['n'], ['j']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Next period') }, { keys: [['t']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Today') }] }, { categoryId: 'views', categoryLabel: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Views'), shortcuts: [{ keys: [['1'], ['d']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Day view') }, { keys: [['2'], ['w']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Week view') }, { keys: [['3'], ['m']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Month view') }, { keys: [['4'], ['y']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Year view') }, { keys: [['5'], ['l']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'List view') }] }, { categoryId: 'actions', categoryLabel: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Actions'), shortcuts: [{ keys: [['c']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Create event') }, { keys: [['h']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Show shortcuts') }] }, { categoryId: 'editor', categoryLabel: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Editor'), shortcuts: [{ keys: [['Escape']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Close editor') }, { keys: [['Ctrl+Enter']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Save edited event') }, { keys: [['Ctrl+Delete']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Delete edited event') }, { keys: [['Ctrl+d']], label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Duplicate event') }] }]; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal.vue?vue&type=script&lang=js": /*!*******************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal.vue?vue&type=script&lang=js ***! \*******************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_availability_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-availability-vue */ "./node_modules/@nextcloud/calendar-availability-vue/dist/index.mjs"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _AppointmentConfigModal_TextInput_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppointmentConfigModal/TextInput.vue */ "./src/components/AppointmentConfigModal/TextInput.vue"); /* harmony import */ var _AppointmentConfigModal_TextArea_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AppointmentConfigModal/TextArea.vue */ "./src/components/AppointmentConfigModal/TextArea.vue"); /* harmony import */ var _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../models/appointmentConfig.js */ "./src/models/appointmentConfig.js"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! pinia */ "./node_modules/pinia/dist/pinia.mjs"); /* harmony import */ var _Shared_CalendarPicker_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Shared/CalendarPicker.vue */ "./src/components/Shared/CalendarPicker.vue"); /* harmony import */ var _AppointmentConfigModal_DurationInput_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./AppointmentConfigModal/DurationInput.vue */ "./src/components/AppointmentConfigModal/DurationInput.vue"); /* harmony import */ var _AppointmentConfigModal_NumberInput_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./AppointmentConfigModal/NumberInput.vue */ "./src/components/AppointmentConfigModal/NumberInput.vue"); /* harmony import */ var _AppointmentConfigModal_DurationSelect_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./AppointmentConfigModal/DurationSelect.vue */ "./src/components/AppointmentConfigModal/DurationSelect.vue"); /* harmony import */ var _AppointmentConfigModal_CheckedDurationSelect_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./AppointmentConfigModal/CheckedDurationSelect.vue */ "./src/components/AppointmentConfigModal/CheckedDurationSelect.vue"); /* harmony import */ var _AppointmentConfigModal_VisibilitySelect_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./AppointmentConfigModal/VisibilitySelect.vue */ "./src/components/AppointmentConfigModal/VisibilitySelect.vue"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _AppointmentConfigModal_Confirmation_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./AppointmentConfigModal/Confirmation.vue */ "./src/components/AppointmentConfigModal/Confirmation.vue"); /* harmony import */ var _store_appointmentConfigs_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../store/appointmentConfigs.js */ "./src/store/appointmentConfigs.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AppointmentConfigModal', components: { CalendarAvailability: _nextcloud_calendar_availability_vue__WEBPACK_IMPORTED_MODULE_0__.CalendarAvailability, CheckedDurationSelect: _AppointmentConfigModal_CheckedDurationSelect_vue__WEBPACK_IMPORTED_MODULE_9__["default"], CalendarPicker: _Shared_CalendarPicker_vue__WEBPACK_IMPORTED_MODULE_5__["default"], DurationInput: _AppointmentConfigModal_DurationInput_vue__WEBPACK_IMPORTED_MODULE_6__["default"], Modal: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcModal, NumberInput: _AppointmentConfigModal_NumberInput_vue__WEBPACK_IMPORTED_MODULE_7__["default"], TextInput: _AppointmentConfigModal_TextInput_vue__WEBPACK_IMPORTED_MODULE_2__["default"], TextArea: _AppointmentConfigModal_TextArea_vue__WEBPACK_IMPORTED_MODULE_3__["default"], DurationSelect: _AppointmentConfigModal_DurationSelect_vue__WEBPACK_IMPORTED_MODULE_8__["default"], VisibilitySelect: _AppointmentConfigModal_VisibilitySelect_vue__WEBPACK_IMPORTED_MODULE_10__["default"], Confirmation: _AppointmentConfigModal_Confirmation_vue__WEBPACK_IMPORTED_MODULE_12__["default"], NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcButton, NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcCheckboxRadioSwitch, NcNoteCard: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcNoteCard }, props: { config: { type: _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"], required: true }, isNew: { type: Boolean, required: true } }, data() { return { isLoading: false, editing: undefined, enablePreparationDuration: false, enableFollowupDuration: false, enableFutureLimit: false, rateLimitingReached: false, showConfirmation: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_14__.mapGetters)(['ownSortedCalendars', 'isTalkEnabled']), ...(0,pinia__WEBPACK_IMPORTED_MODULE_15__.mapStores)(_store_appointmentConfigs_js__WEBPACK_IMPORTED_MODULE_13__["default"]), formTitle() { if (this.isNew) { return this.$t('calendar', 'Create appointment'); } return this.$t('calendar', 'Edit appointment'); }, saveButtonText() { if (this.isNew) { return this.$t('calendar', 'Save'); } return this.$t('calendar', 'Update'); }, calendar() { if (!this.editing.targetCalendarUri) { return this.ownSortedCalendars[0]; } const uri = this.editing.targetCalendarUri; const calendar = this.ownSortedCalendars.find(cal => this.calendarUrlToUri(cal.url) === uri); return calendar || this.ownSortedCalendars[0]; }, selectableConflictCalendars() { // The target calendar is always a conflict calendar, remove it from additional conflict calendars return this.ownSortedCalendars.filter(calendar => calendar.url !== this.calendar.url); }, conflictCalendars() { var _this$editing$calenda; const freebusyUris = (_this$editing$calenda = this.editing.calendarFreeBusyUris) !== null && _this$editing$calenda !== void 0 ? _this$editing$calenda : []; return freebusyUris.map(uri => { return this.ownSortedCalendars.find(cal => this.calendarUrlToUri(cal.url) === uri); }); }, defaultConfig() { return _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"].createDefault(this.calendarUrlToUri(this.$store.getters.ownSortedCalendars[0].url), this.$store.getters.scheduleInbox, this.$store.getters.getResolvedTimezone); } }, watch: { config() { this.reset(); } }, created() { this.reset(); }, methods: { reset() { this.editing = this.config.clone(); this.enablePreparationDuration = !!this.editing.preparationDuration; this.enableFollowupDuration = !!this.editing.followupDuration; this.enableFutureLimit = !!this.editing.futureLimit; this.showConfirmation = false; // Disable Talk integration if Talk is no longer available if (!this.isTalkEnabled) { this.editing.createTalkRoom = false; } }, calendarUrlToUri(url) { // Trim trailing slash and split into URL parts const parts = url.replace(/\/$/, '').split('/'); // The last one is the URI return parts[parts.length - 1]; }, changeCalendar(calendar) { this.editing.targetCalendarUri = this.calendarUrlToUri(calendar.url); this.editing.calendarFreeBusyUris = this.editing.calendarFreeBusyUris.filter(uri => uri !== this.calendarUrlToUri(calendar.url)); }, addConflictCalender(calendar) { this.editing.calendarFreeBusyUris.push(this.calendarUrlToUri(calendar.url)); }, removeConflictCalendar(calendar) { this.editing.calendarFreeBusyUris = this.editing.calendarFreeBusyUris.filter(uri => uri !== this.calendarUrlToUri(calendar.url)); }, async save() { var _this$editing, _this$editing$targetC; this.isLoading = true; this.rateLimitingReached = false; if (!this.enablePreparationDuration) { this.editing.preparationDuration = this.defaultConfig.preparationDuration; } if (!this.enableFollowupDuration) { this.editing.followupDuration = this.defaultConfig.followupDuration; } if (!this.enableFutureLimit) { this.editing.futureLimit = null; } (_this$editing$targetC = (_this$editing = this.editing).targetCalendarUri) !== null && _this$editing$targetC !== void 0 ? _this$editing$targetC : _this$editing.targetCalendarUri = this.defaultConfig.targetCalendarUri; const config = this.editing; try { if (this.isNew) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_11__["default"].info('Creating new config', { config }); this.editing = await this.appointmentConfigStore.createConfig({ config }); } else { _utils_logger_js__WEBPACK_IMPORTED_MODULE_11__["default"].info('Saving config', { config }); this.editing = await this.appointmentConfigStore.updateConfig({ config }); } this.showConfirmation = true; } catch (error) { var _error$response; if ((error === null || error === void 0 || (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 429) { this.rateLimitingReached = true; } _utils_logger_js__WEBPACK_IMPORTED_MODULE_11__["default"].error('Failed to save config', { error, config, isNew: this.isNew }); } finally { this.isLoading = false; } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/CheckedDurationSelect.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/CheckedDurationSelect.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _DurationSelect_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DurationSelect.vue */ "./src/components/AppointmentConfigModal/DurationSelect.vue"); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CheckedDurationSelect', components: { DurationSelect: _DurationSelect_vue__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { label: { type: String, required: true }, value: { type: Number, default: 0 }, defaultValue: { type: Number, default: 0 }, enabled: { type: Boolean, required: true }, min: { type: Number, default: 0 }, max: { type: [Number, null, undefined], default: 60 * 60 } }, data() { return { id: (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_1__.randomId)() }; }, computed: { valueOrDefault() { var _this$value; return (_this$value = this.value) !== null && _this$value !== void 0 ? _this$value : this.defaultValue; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/Confirmation.vue?vue&type=script&lang=js": /*!********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/Confirmation.vue?vue&type=script&lang=js ***! \********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/Check.vue */ "./node_modules/vue-material-design-icons/Check.vue"); /* harmony import */ var _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../models/appointmentConfig.js */ "./src/models/appointmentConfig.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'Confirmation', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, EmptyContent: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcEmptyContent, CheckIcon: vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_1__["default"] }, props: { config: { type: _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_2__["default"], required: true }, isNew: { type: Boolean, required: true } }, computed: { title() { if (this.isNew) { return this.$t('calendar', 'Appointment was created successfully'); } return this.$t('calendar', 'Appointment was updated successfully'); }, showCopyLinkButton() { return navigator && navigator.clipboard; } }, methods: { copyLink() { navigator.clipboard.writeText(this.config.bookingUrl); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationInput.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationInput.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'DurationInput', props: { label: { type: String, required: true }, value: { type: Number, default: 0 } }, data() { return { id: (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__.randomId)(), internalValue: '' }; }, computed: { valueInMinutes() { // Convert value prop from seconds to minutes return Math.round(this.value / 60); }, valueWithUnit() { return this.$n('calendar', '{duration} minute', '{duration} minutes', this.valueInMinutes, { duration: this.valueInMinutes }); }, parsedInternalValue() { const matches = this.internalValue.match(/[0-9]+/); if (!matches) { return 0; } const minutes = parseInt(matches[0]); return isNaN(minutes) ? 0 : minutes; } }, watch: { value(newVal) { // Only apply new value if it really changed compared to the internal state if (this.parsedInternalValue * 60 !== newVal) { this.updateInternalValue(); } } }, mounted() { this.updateInternalValue(); }, methods: { change() { // Emit value in seconds this.$emit('update:value', this.parsedInternalValue * 60); }, focus() { // Remove minutes prefix upon focus this.internalValue = this.valueInMinutes.toString(); }, updateInternalValue() { this.internalValue = this.valueWithUnit; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationSelect.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationSelect.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _SelectWrapper_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SelectWrapper.vue */ "./src/components/AppointmentConfigModal/SelectWrapper.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'DurationSelect', components: { SelectWrapper: _SelectWrapper_vue__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { label: { type: String, default: '' }, value: { type: Number, default: 5 * 60 }, disabled: { type: Boolean, default: false }, allowZero: { type: Boolean, default: false }, min: { type: Number, default: 0 }, max: { type: [Number, null, undefined], default: 60 * 60 } }, computed: { options() { let options = []; if (this.allowZero) { options.push({ value: 0, label: this.t('calendar', '0 minutes') }); } options.push(...[ // Minutes ...[5, 10, 15, 30, 45].map(duration => { const label = this.n('calendar', '{duration} minute', '{duration} minutes', duration, { duration }); return { value: duration * 60, label }; }), // Hours ...[1, 2, 6].map(duration => { const label = this.n('calendar', '{duration} hour', '{duration} hours', duration, { duration }); return { value: duration * 60 * 60, label }; }), // Days ...[1, 2].map(duration => { const label = this.n('calendar', '{duration} day', '{duration} days', duration, { duration }); return { value: duration * 60 * 60 * 24, label }; }), // Weeks ...[1, 2, 4, 6].map(duration => { const label = this.n('calendar', '{duration} week', '{duration} weeks', duration, { duration }); return { value: duration * 60 * 60 * 24 * 7, label }; }), // Months ...[1, 2, 3, 6, 9].map(duration => { const label = this.n('calendar', '{duration} month', '{duration} months', duration, { duration }); return { value: duration * 60 * 60 * 24 * 30, label }; }), // Years ...[1].map(duration => { const label = this.n('calendar', '{duration} year', '{duration} years', duration, { duration }); return { value: duration * 60 * 60 * 24 * 365, label }; })]); if (this.min) { options = options.filter(option => { return option.value >= this.min || this.allowZero && option.value === 0; }); } if (this.max) { options = options.filter(option => option.value <= this.max); } return options; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NoEmailAddressWarning.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NoEmailAddressWarning.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_AlertCircle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/AlertCircle.vue */ "./node_modules/vue-material-design-icons/AlertCircle.vue"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'NoEmailAddressWarning', components: { AppNavigationItem: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationItem, AlertCircleIcon: vue_material_design_icons_AlertCircle_vue__WEBPACK_IMPORTED_MODULE_1__["default"] }, computed: { title() { return this.t('calendar', 'To configure appointments, add your email address in personal settings.'); } }, methods: { openUserSettings() { const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)('settings/user'); window.open(url, '_blank').focus(); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NumberInput.vue?vue&type=script&lang=js": /*!*******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NumberInput.vue?vue&type=script&lang=js ***! \*******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'NumberInput', props: { label: { type: String, required: true }, value: { type: Number, default: undefined }, allowEmpty: { type: Boolean, default: false } }, data() { return { id: (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__.randomId)() }; }, computed: { realValue() { var _this$value; if (this.allowEmpty) { return this.value; } return (_this$value = this.value) !== null && _this$value !== void 0 ? _this$value : 0; } }, methods: { change(e) { this.$emit('update:value', parseInt(e.target.value)); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/SelectWrapper.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/SelectWrapper.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'SelectWrapper', props: { label: { type: String, default: '' }, value: { type: [String, Number], required: true }, disabled: { type: Boolean, default: false }, options: { type: Array, required: true } }, data() { return { id: (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__.randomId)() }; }, methods: { onSelect(e) { this.$emit('update:value', e.target.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextArea.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextArea.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony import */ var _directives_autosize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../directives/autosize.js */ "./src/directives/autosize.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'TextArea', directives: { autosize: _directives_autosize_js__WEBPACK_IMPORTED_MODULE_1__["default"] }, props: { label: { type: String, required: true }, value: { type: String, default: '' } }, data() { return { id: (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__.randomId)() }; } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextInput.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextInput.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'TextInput', props: { label: { type: String, required: true }, value: { type: String, default: '' }, disabled: { type: Boolean, default: false } }, data() { return { id: (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_0__.randomId)() }; }, methods: { change(e) { this.$emit('update:value', e.target.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/VisibilitySelect.vue?vue&type=script&lang=js": /*!************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/VisibilitySelect.vue?vue&type=script&lang=js ***! \************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _SelectWrapper_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SelectWrapper.vue */ "./src/components/AppointmentConfigModal/SelectWrapper.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'VisibilitySelect', components: { SelectWrapper: _SelectWrapper_vue__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { label: { type: String, default: '' }, value: { type: String, default: 'PUBLIC' }, disabled: { type: Boolean, default: false } }, data() { return { options: [{ value: 'PUBLIC', label: this.t('calendar', 'Public – shown on the profile page') }, { value: 'PRIVATE', label: this.t('calendar', 'Private – only accessible via secret link') }] }; } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/CalendarGrid.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/CalendarGrid.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _fullcalendar_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @fullcalendar/vue */ "./node_modules/@fullcalendar/vue/dist/index.js"); /* harmony import */ var _fullcalendar_daygrid__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @fullcalendar/daygrid */ "./node_modules/@fullcalendar/daygrid/index.js"); /* harmony import */ var _fullcalendar_interaction__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @fullcalendar/interaction */ "./node_modules/@fullcalendar/interaction/index.js"); /* harmony import */ var _fullcalendar_list__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @fullcalendar/list */ "./node_modules/@fullcalendar/list/index.js"); /* harmony import */ var _fullcalendar_timegrid__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @fullcalendar/timegrid */ "./node_modules/@fullcalendar/timegrid/index.js"); /* harmony import */ var _fullcalendar_multimonth__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @fullcalendar/multimonth */ "./node_modules/@fullcalendar/multimonth/index.js"); /* harmony import */ var _fullcalendar_eventSources_eventSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../fullcalendar/eventSources/eventSource.js */ "./src/fullcalendar/eventSources/eventSource.js"); /* harmony import */ var _fullcalendar_interaction_eventAllow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../fullcalendar/interaction/eventAllow.js */ "./src/fullcalendar/interaction/eventAllow.js"); /* harmony import */ var _fullcalendar_interaction_eventClick_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../fullcalendar/interaction/eventClick.js */ "./src/fullcalendar/interaction/eventClick.js"); /* harmony import */ var _fullcalendar_interaction_eventDrop_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../fullcalendar/interaction/eventDrop.js */ "./src/fullcalendar/interaction/eventDrop.js"); /* harmony import */ var _fullcalendar_interaction_eventResize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../fullcalendar/interaction/eventResize.js */ "./src/fullcalendar/interaction/eventResize.js"); /* harmony import */ var _fullcalendar_interaction_navLinkDayClick_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../fullcalendar/interaction/navLinkDayClick.js */ "./src/fullcalendar/interaction/navLinkDayClick.js"); /* harmony import */ var _fullcalendar_interaction_navLinkWeekClick_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../fullcalendar/interaction/navLinkWeekClick.js */ "./src/fullcalendar/interaction/navLinkWeekClick.js"); /* harmony import */ var _fullcalendar_interaction_select_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../fullcalendar/interaction/select.js */ "./src/fullcalendar/interaction/select.js"); /* harmony import */ var _fullcalendar_localization_dateFormattingConfig_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../fullcalendar/localization/dateFormattingConfig.js */ "./src/fullcalendar/localization/dateFormattingConfig.js"); /* harmony import */ var _fullcalendar_localization_localeProvider_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../fullcalendar/localization/localeProvider.js */ "./src/fullcalendar/localization/localeProvider.js"); /* harmony import */ var _fullcalendar_localization_momentPlugin_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../fullcalendar/localization/momentPlugin.js */ "./src/fullcalendar/localization/momentPlugin.js"); /* harmony import */ var _fullcalendar_rendering_dayHeaderDidMount_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../fullcalendar/rendering/dayHeaderDidMount.js */ "./src/fullcalendar/rendering/dayHeaderDidMount.js"); /* harmony import */ var _fullcalendar_rendering_eventDidMount_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../fullcalendar/rendering/eventDidMount.js */ "./src/fullcalendar/rendering/eventDidMount.js"); /* harmony import */ var _fullcalendar_rendering_eventOrder_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../fullcalendar/rendering/eventOrder.js */ "./src/fullcalendar/rendering/eventOrder.js"); /* harmony import */ var _fullcalendar_rendering_noEventsDidMount_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../fullcalendar/rendering/noEventsDidMount.js */ "./src/fullcalendar/rendering/noEventsDidMount.js"); /* harmony import */ var _fullcalendar_timezones_vtimezoneNamedTimezoneImpl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../fullcalendar/timezones/vtimezoneNamedTimezoneImpl.js */ "./src/fullcalendar/timezones/vtimezoneNamedTimezoneImpl.js"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! debounce */ "./node_modules/debounce/index.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_24__); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); // Import FullCalendar itself // Import event sources // Import interaction handlers // Import localization plugins // Import rendering handlers // Import timezone plugins // Import other dependencies /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CalendarGrid', components: { FullCalendar: _fullcalendar_vue__WEBPACK_IMPORTED_MODULE_17__["default"] }, props: { isWidget: { type: Boolean, default: false }, canAccessPreviousEvent: { type: Boolean, default: true }, /** * Whether or not the user is authenticated */ isAuthenticatedUser: { type: Boolean, required: true } }, data() { return { updateTodayJob: null, updateTodayJobPreviousDate: null }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_18__.mapGetters)({ timezoneId: 'getResolvedTimezone' }), ...(0,vuex__WEBPACK_IMPORTED_MODULE_18__.mapState)({ locale: state => state.settings.momentLocale, eventLimit: state => state.settings.eventLimit, skipPopover: state => state.settings.skipPopover, showWeekends: state => state.settings.showWeekends, showWeekNumbers: state => state.settings.showWeekNumbers, slotDuration: state => state.settings.slotDuration, showTasks: state => state.settings.showTasks, timezone: state => state.settings.timezone, modificationCount: state => state.calendarObjects.modificationCount }), options() { var _this$$route$params$f, _this$$route, _this$$route$params$v, _this$$route2, _this = this; let defaultView = 'dayGridMonth'; if (this.canAccessPreviousEvent === false) { defaultView = 'timeGridWeek'; } return { // Initialization: initialDate: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_16__.getYYYYMMDDFromFirstdayParam)((_this$$route$params$f = (_this$$route = this.$route) === null || _this$$route === void 0 || (_this$$route = _this$$route.params) === null || _this$$route === void 0 ? void 0 : _this$$route.firstDay) !== null && _this$$route$params$f !== void 0 ? _this$$route$params$f : 'now'), initialView: (_this$$route$params$v = (_this$$route2 = this.$route) === null || _this$$route2 === void 0 ? void 0 : _this$$route2.params.view) !== null && _this$$route$params$v !== void 0 ? _this$$route$params$v : defaultView, // Data eventSources: this.eventSources, // Plugins plugins: this.plugins, // Interaction editable: this.isEditable, selectable: this.isAuthenticatedUser, eventAllow: _fullcalendar_interaction_eventAllow_js__WEBPACK_IMPORTED_MODULE_1__["default"], eventClick: (0,_fullcalendar_interaction_eventClick_js__WEBPACK_IMPORTED_MODULE_2__["default"])(this.$store, this.$router, this.$route, window, this.isWidget, this.$refs), eventDrop: this.isWidget ? false : function () { return (0,_fullcalendar_interaction_eventDrop_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_this.$store, _this.$refs.fullCalendar.getApi())(...arguments); }, eventResize: this.isWidget ? false : (0,_fullcalendar_interaction_eventResize_js__WEBPACK_IMPORTED_MODULE_4__["default"])(this.$store), navLinkDayClick: this.isWidget ? false : (0,_fullcalendar_interaction_navLinkDayClick_js__WEBPACK_IMPORTED_MODULE_5__["default"])(this.$router, this.$route), navLinkWeekClick: this.isWidget ? false : (0,_fullcalendar_interaction_navLinkWeekClick_js__WEBPACK_IMPORTED_MODULE_6__["default"])(this.$router, this.$route), select: this.isWidget ? false : (0,_fullcalendar_interaction_select_js__WEBPACK_IMPORTED_MODULE_7__["default"])(this.$store, this.$router, this.$route, window), navLinks: true, // Localization ...(0,_fullcalendar_localization_dateFormattingConfig_js__WEBPACK_IMPORTED_MODULE_8__.getDateFormattingConfig)(), ...(0,_fullcalendar_localization_localeProvider_js__WEBPACK_IMPORTED_MODULE_9__.getFullCalendarLocale)(), // Rendering dayHeaderDidMount: _fullcalendar_rendering_dayHeaderDidMount_js__WEBPACK_IMPORTED_MODULE_11__["default"], eventDidMount: info => { this.addPendinEventClass(info); }, noEventsDidMount: _fullcalendar_rendering_noEventsDidMount_js__WEBPACK_IMPORTED_MODULE_14__["default"], eventOrder: ['start', '-duration', 'allDay', _fullcalendar_rendering_eventOrder_js__WEBPACK_IMPORTED_MODULE_13__["default"]], forceEventDuration: false, headerToolbar: false, height: '100%', slotDuration: this.slotDuration, expandRows: true, weekNumbers: this.showWeekNumbers, weekends: this.showWeekends, dayMaxEventRows: this.eventLimit, selectMirror: true, lazyFetching: false, nowIndicator: true, progressiveEventRendering: true, unselectAuto: false, // Timezones: timeZone: this.timezoneId, // Disable jumping in week view and day view when clicking on any event using the simple editor scrollTimeReset: false, eventClassNames: arg => { let classes = []; if (arg.event.extendedProps.isCalendarPending) { classes.push('pending-event'); } return classes; } }; }, eventSources() { return this.$store.getters.enabledCalendars.map((0,_fullcalendar_eventSources_eventSource_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this.$store)); }, widgetView() { return this.$store.getters.widgetView; }, widgetDate() { return this.$store.getters.widgetDate; }, /** * FullCalendar Plugins * * @return {(PluginDef)[]} */ plugins() { return [(0,_fullcalendar_localization_momentPlugin_js__WEBPACK_IMPORTED_MODULE_10__["default"])(this.$store), _fullcalendar_timezones_vtimezoneNamedTimezoneImpl_js__WEBPACK_IMPORTED_MODULE_15__["default"], _fullcalendar_daygrid__WEBPACK_IMPORTED_MODULE_19__["default"], _fullcalendar_interaction__WEBPACK_IMPORTED_MODULE_20__["default"], _fullcalendar_list__WEBPACK_IMPORTED_MODULE_21__["default"], _fullcalendar_timegrid__WEBPACK_IMPORTED_MODULE_22__["default"], _fullcalendar_multimonth__WEBPACK_IMPORTED_MODULE_23__["default"]]; }, isEditable() { var _this$$route3, _this$$route4; // We do not allow drag and drop when the editor is open. return this.isAuthenticatedUser && ((_this$$route3 = this.$route) === null || _this$$route3 === void 0 ? void 0 : _this$$route3.name) !== 'EditPopoverView' && ((_this$$route4 = this.$route) === null || _this$$route4 === void 0 ? void 0 : _this$$route4.name) !== 'EditSidebarView'; } }, watch: { widgetView(newView) { const calendarApi = this.$refs.fullCalendar.getApi(); calendarApi.changeView(newView); }, widgetDate(newDate) { const calendarApi = this.$refs.fullCalendar.getApi(); calendarApi.gotoDate((0,_utils_date_js__WEBPACK_IMPORTED_MODULE_16__.getYYYYMMDDFromFirstdayParam)(newDate)); }, modificationCount: debounce__WEBPACK_IMPORTED_MODULE_24___default()(function () { const calendarApi = this.$refs.fullCalendar.getApi(); calendarApi.refetchEvents(); }, 50) }, /** * FullCalendar 5 is using calculated px values for the width * of its views. * Hence a simple `width: 100%` won't assure that the calendar-grid * is always using the full available width. * * Toggling the AppNavigation or AppSidebar will change the amount * of available space, but it will not be covered by the window * resize event, because the actual window size did not change. * * To make sure, that the calendar-grid is always using all space, * we have to register a resize-observer here, that will automatically * update the fullCalendar size, when the available space changes. */ mounted() { if (window.ResizeObserver) { const resizeObserver = new ResizeObserver(debounce__WEBPACK_IMPORTED_MODULE_24___default()(() => { this.$refs.fullCalendar.getApi().updateSize(); }, 100)); resizeObserver.observe(this.$refs.fullCalendar.$el); } }, async created() { this.updateTodayJob = setInterval(() => { const newDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_16__.getYYYYMMDDFromFirstdayParam)('now'); if (this.updateTodayJobPreviousDate === null) { this.updateTodayJobPreviousDate = newDate; return; } if (this.updateTodayJobPreviousDate !== newDate) { this.updateTodayJobPreviousDate = newDate; const calendarApi = this.$refs.fullCalendar.getApi(); calendarApi.render(); } }, 1000); /** * This view is not used as a router view, * hence we can't use beforeRouteUpdate directly. */ if (!this.isWidget) { this.$router.beforeEach((to, from, next) => { if (to.params.firstDay !== from.params.firstDay) { const calendarApi = this.$refs.fullCalendar.getApi(); calendarApi.gotoDate((0,_utils_date_js__WEBPACK_IMPORTED_MODULE_16__.getYYYYMMDDFromFirstdayParam)(to.params.firstDay)); } if (to.params.view !== from.params.view) { const calendarApi = this.$refs.fullCalendar.getApi(); calendarApi.changeView(to.params.view); this.saveNewView(to.params.view); } if ((from.name === 'NewPopoverView' || from.name === 'NewSidebarView') && to.name !== 'NewPopoverView' && to.name !== 'NewSidebarView') { const calendarApi = this.$refs.fullCalendar.getApi(); calendarApi.unselect(); } next(); }); // Trigger the select event programmatically on initial page load to show the new event // in the grid. Wait for the next tick because the ref isn't available right away. await this.$nextTick(); if (['NewPopoverView', 'NewSidebarView'].includes(this.$route.name)) { const start = new Date(parseInt(this.$route.params.dtstart) * 1000); const end = new Date(parseInt(this.$route.params.dtend) * 1000); if (!isNaN(start.getTime()) && !isNaN(end.getTime())) { const calendarApi = this.$refs.fullCalendar.getApi(); calendarApi.select({ start, end, allDay: this.$route.params.allDay === '1' }); } } } }, methods: { /** * When a user changes the view, remember it and * use it the next time they open the calendar app */ saveNewView: debounce__WEBPACK_IMPORTED_MODULE_24___default()(function (initialView) { if (this.isAuthenticatedUser) { this.$store.dispatch('setInitialView', { initialView }); } }, 5000), addPendinEventClass(info) { if (info.event.extendedProps.isCalendarPending) { info.el.style.backgroundColor = info.event.backgroundColor; info.el.style.color = info.event.textColor; } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmList.vue?vue&type=script&lang=js": /*!*******************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmList.vue?vue&type=script&lang=js ***! \*******************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AlarmListNew_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AlarmListNew.vue */ "./src/components/Editor/Alarm/AlarmListNew.vue"); /* harmony import */ var _AlarmListItem_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AlarmListItem.vue */ "./src/components/Editor/Alarm/AlarmListItem.vue"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AlarmList', components: { AlarmListItem: _AlarmListItem_vue__WEBPACK_IMPORTED_MODULE_1__["default"], AlarmListNew: _AlarmListNew_vue__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { isReadOnly: { type: Boolean, required: true }, calendarObjectInstance: { type: Object, required: true } }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapState)({ forceEventAlarmType: state => state.settings.forceEventAlarmType }), alarms() { return this.calendarObjectInstance.alarms; } }, methods: { /** * Adds another of the default alarms to the event * * @param {number} totalSeconds Amount of seconds for the alarm */ addAlarm(totalSeconds) { this.$store.commit('addAlarmToCalendarObjectInstance', { calendarObjectInstance: this.calendarObjectInstance, type: this.forceEventAlarmType || 'DISPLAY', totalSeconds }); }, /** * Removes an alarm from this event * * @param {object} alarm The alarm object */ removeAlarm(alarm) { this.$store.commit('removeAlarmFromCalendarObjectInstance', { calendarObjectInstance: this.calendarObjectInstance, alarm }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmListItem.vue?vue&type=script&lang=js": /*!***********************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmListItem.vue?vue&type=script&lang=js ***! \***********************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var vue_click_outside__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-click-outside */ "./node_modules/vue-click-outside/index.js"); /* harmony import */ var vue_click_outside__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue_click_outside__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _filters_alarmFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../filters/alarmFormat.js */ "./src/filters/alarmFormat.js"); /* harmony import */ var _AlarmTimeUnitSelect_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AlarmTimeUnitSelect.vue */ "./src/components/Editor/Alarm/AlarmTimeUnitSelect.vue"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _Shared_TimePicker_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Shared/TimePicker.vue */ "./src/components/Shared/TimePicker.vue"); /* harmony import */ var _Shared_DatePicker_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../Shared/DatePicker.vue */ "./src/components/Shared/DatePicker.vue"); /* harmony import */ var vue_material_design_icons_Bell_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/Bell.vue */ "./node_modules/vue-material-design-icons/Bell.vue"); /* harmony import */ var vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-material-design-icons/Check.vue */ "./node_modules/vue-material-design-icons/Check.vue"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony import */ var vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-material-design-icons/Pencil.vue */ "./node_modules/vue-material-design-icons/Pencil.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AlarmListItem', components: { DatePicker: _Shared_DatePicker_vue__WEBPACK_IMPORTED_MODULE_6__["default"], TimePicker: _Shared_TimePicker_vue__WEBPACK_IMPORTED_MODULE_5__["default"], AlarmTimeUnitSelect: _AlarmTimeUnitSelect_vue__WEBPACK_IMPORTED_MODULE_3__["default"], Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ActionRadio: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionRadio, ActionSeparator: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionSeparator, Bell: vue_material_design_icons_Bell_vue__WEBPACK_IMPORTED_MODULE_7__["default"], Check: vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_8__["default"], Delete: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_9__["default"], Pencil: vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_10__["default"] }, directives: { ClickOutside: (vue_click_outside__WEBPACK_IMPORTED_MODULE_1___default()) }, filters: { formatAlarm: _filters_alarmFormat_js__WEBPACK_IMPORTED_MODULE_2__["default"] }, props: { alarm: { type: Object, required: true }, calendarObjectInstance: { type: Object, required: true }, isReadOnly: { type: Boolean, required: true }, showIcon: { type: Boolean, required: true } }, data() { return { isEditing: false, showMenu: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_11__.mapState)({ locale: state => state.settings.momentLocale, forceEventAlarmType: state => state.settings.forceEventAlarmType }), canEdit() { // You can always edit an alarm if it's absolute if (!this.isRelative) { return true; } // We don't allow editing when the alarm is // related to the event's end if (!this.alarm.relativeIsRelatedToStart) { return false; } // We don't allow editing when this event is timed // and the trigger time is positive if (!this.isAllDay && this.alarm.relativeTrigger > 0) { return false; } // We don't allow editing when this event is all-day // and the trigger time is bigger than one day if (this.isAllDay && this.alarm.relativeTrigger > 86400) { return false; } return true; }, /** * Changing the alarm type is allowed if the alarm type does * not match the forceEventAlarmType (yet). * * If no alarm type is forced (forceEventAlarmType === false), * this will return true as well. */ canChangeAlarmType() { return this.alarm.type !== this.forceEventAlarmType; }, alarmTypeName() { return this._uid + '-radio-type-name'; }, alarmTriggerName() { return this._uid + '-radio-trigger-name'; }, isAlarmTypeDisplay() { return this.alarm.type === 'DISPLAY'; }, isAlarmTypeEmail() { return this.alarm.type === 'EMAIL'; }, isAlarmTypeAudio() { return this.alarm.type === 'AUDIO'; }, isAlarmTypeOther() { return !['AUDIO', 'DISPLAY', 'EMAIL'].includes(this.alarm.type); }, isRelativeAlarm() { return this.alarm.relativeTrigger !== null; }, isAbsoluteAlarm() { return !this.isRelativeAlarm; }, currentUserTimezone() { return this.$store.getters.getResolvedTimezone; }, isAllDay() { return this.calendarObjectInstance.isAllDay; }, isRecurring() { return this.calendarObjectInstance.recurrenceRule.frequency !== 'NONE'; }, relativeAllDayDate() { const date = new Date(); date.setHours(this.alarm.relativeHoursAllDay); date.setMinutes(this.alarm.relativeMinutesAllDay); return date; }, timeFormat() { return _nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__["default"].localeData().longDateFormat('LT'); }, absoluteDateFormat() { return ['[', this.$t('calendar', 'on'), '] ', _nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__["default"].localeData().longDateFormat('L'), ' [', this.$t('calendar', 'at'), '] ', _nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__["default"].localeData().longDateFormat('LT')].join(''); } }, methods: { /** * This method enables the editing mode */ toggleEditAlarm() { this.isEditing = !this.isEditing; // Hide menu when starting to edit if (this.isEditing) { this.showMenu = false; } }, /** * This method closes the editing mode again */ closeAlarmEditor() { this.showMenu = false; }, /** * Changes the type of the reminder * * @param {string} type The new type of the notification */ changeType(type) { this.$store.commit('changeAlarmType', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm, type }); }, /** * Switches from absolute to relative alarm */ switchToRelativeAlarm() { if (this.isRelativeAlarm) { return; } this.$store.dispatch('changeAlarmFromAbsoluteToRelative', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm }); }, /** * Switches from relative to absolute alarm */ switchToAbsoluteAlarm() { if (this.isAbsoluteAlarm) { return; } this.$store.dispatch('changeAlarmFromRelativeToAbsolute', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm }); }, /** * This method emits the removeAlarm event */ removeAlarm() { this.$emit('remove-alarm', this.alarm); }, /** * changes the relative amount entered in timed mode * * @param {Event} event The Input-event triggered when modifying the input */ changeRelativeAmountTimed(event) { const minimumValue = parseInt(event.target.min, 10); const maximumValue = parseInt(event.target.max, 10); const selectedValue = parseInt(event.target.value, 10); if (selectedValue >= minimumValue && selectedValue <= maximumValue) { this.$store.dispatch('changeAlarmAmountTimed', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm, amount: selectedValue }); } }, /** * changes the relative unit entered in timed mode * * @param {string} unit The new unit */ changeRelativeUnitTimed(unit) { this.$store.dispatch('changeAlarmUnitTimed', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm, unit }); }, /** * changes the relative amount entered in all-day * * @param {Event} event The Input-event triggered when modifying the input */ changeRelativeAmountAllDay(event) { const minimumValue = parseInt(event.target.min, 10); const maximumValue = parseInt(event.target.max, 10); const selectedValue = parseInt(event.target.value, 10); if (selectedValue >= minimumValue && selectedValue <= maximumValue) { this.$store.dispatch('changeAlarmAmountAllDay', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm, amount: selectedValue }); } }, /** * changes the relative unit entered in all-day mode * * @param {string} unit The new unit */ changeRelativeUnitAllDay(unit) { this.$store.dispatch('changeAlarmUnitAllDay', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm, unit }); }, /** * Changes the time entered in all-day mode * * @param {Date} date The new date object containing hours and minutes */ changeRelativeHourMinuteAllDay(date) { const hours = date.getHours(); const minutes = date.getMinutes(); this.$store.dispatch('changeAlarmHoursMinutesAllDay', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm, hours, minutes }); }, /** * Changes the date of the absolute alarm * * @param {Date} date The new date of the alarm */ changeAbsoluteDate(date) { this.$store.commit('changeAlarmAbsoluteDate', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm, date }); }, /** * Changes the time zone of the absolute alarm * * @param {string} timezoneId The new time zone id of the alarm */ changeAbsoluteTimezoneId(timezoneId) { this.$store.commit('changeAlarmAbsoluteTimezoneId', { calendarObjectInstance: this.calendarObjectInstance, alarm: this.alarm, timezoneId }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmListNew.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmListNew.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _defaults_defaultAlarmProvider_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../defaults/defaultAlarmProvider.js */ "./src/defaults/defaultAlarmProvider.js"); /* harmony import */ var _utils_alarms_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/alarms.js */ "./src/utils/alarms.js"); /* harmony import */ var _filters_alarmFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../filters/alarmFormat.js */ "./src/filters/alarmFormat.js"); /* harmony import */ var _Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Properties/PropertySelect.vue */ "./src/components/Editor/Properties/PropertySelect.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AlarmListNew', components: { PropertySelect: _Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }, props: { isAllDay: { type: Boolean, required: true }, showIcon: { type: Boolean, required: true } }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_4__.mapState)({ locale: state => state.settings.momentLocale }), currentUserTimezone() { return this.$store.getters.getResolvedTimezone; }, options() { return (0,_defaults_defaultAlarmProvider_js__WEBPACK_IMPORTED_MODULE_0__.getDefaultAlarms)(this.isAllDay).map(defaultAlarm => { const alarmObject = this.getAlarmObjectFromTriggerTime(defaultAlarm); return { value: defaultAlarm, label: (0,_filters_alarmFormat_js__WEBPACK_IMPORTED_MODULE_2__["default"])(alarmObject, this.isAllDay, this.currentUserTimezone, this.locale) }; }); }, propModel() { return { options: this.options, icon: 'Bell', placeholder: this.$t('calendar', '+ Add reminder'), readableName: this.$t('calendar', 'Add reminder') }; } }, methods: { /** * This emits the add alarm event * * @param {object} value The alarm value */ addReminderFromSelect(value) { this.$emit('add-alarm', value); }, /** * * @param {number} time Total amount of seconds for the trigger * @return {object} The alarm object */ getAlarmObjectFromTriggerTime(time) { const timedData = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_1__.getAmountAndUnitForTimedEvents)(time); const allDayData = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_1__.getAmountHoursMinutesAndUnitForAllDayEvents)(time); return { isRelative: true, absoluteDate: null, absoluteTimezoneId: null, relativeIsBefore: time < 0, relativeIsRelatedToStart: true, relativeUnitTimed: timedData.unit, relativeAmountTimed: timedData.amount, relativeUnitAllDay: allDayData.unit, relativeAmountAllDay: allDayData.amount, relativeHoursAllDay: allDayData.hours, relativeMinutesAllDay: allDayData.minutes, relativeTrigger: time }; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmTimeUnitSelect.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmTimeUnitSelect.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AlarmTimeUnitSelect', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect }, props: { unit: { type: String, required: true }, isAllDay: { type: Boolean, required: true }, count: { type: Number, required: true }, disabled: { type: Boolean, required: true } }, computed: { /** * This returns a list of options for the unit select. * We offer seconds only when we have to, not by default * * In All-day mode, we only offer days and weeks. * * @return {object[]} */ options() { const options = []; if (this.unit === 'seconds') { options.push({ label: this.$n('calendar', 'second', 'seconds', this.count), unit: 'seconds' }); } if (!this.isAllDay || ['minutes', 'hours'].indexOf(this.unit) !== -1) { options.push({ label: this.$n('calendar', 'minute', 'minutes', this.count), unit: 'minutes' }); options.push({ label: this.$n('calendar', 'hour', 'hours', this.count), unit: 'hours' }); } options.push({ label: this.$n('calendar', 'day', 'days', this.count), unit: 'days' }); options.push({ label: this.$n('calendar', 'week', 'weeks', this.count), unit: 'weeks' }); return options; }, /** * This is the selected option * * @return {object} */ selected() { return this.options.find(o => o.unit === this.unit); } }, methods: { /** * This triggers the change event when the user selected a new unit * * @param {object} value The selected option */ select(value) { if (!value) { return; } this.$emit('change', value.unit); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Attachments/AttachmentsList.vue?vue&type=script&lang=js": /*!*******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Attachments/AttachmentsList.vue?vue&type=script&lang=js ***! \*******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_Upload_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/Upload.vue */ "./node_modules/vue-material-design-icons/Upload.vue"); /* harmony import */ var vue_material_design_icons_Close_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/Close.vue */ "./node_modules/vue-material-design-icons/Close.vue"); /* harmony import */ var vue_material_design_icons_Folder_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/Folder.vue */ "./node_modules/vue-material-design-icons/Folder.vue"); /* harmony import */ var vue_material_design_icons_Paperclip_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/Paperclip.vue */ "./node_modules/vue-material-design-icons/Paperclip.vue"); /* harmony import */ var vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/Plus.vue */ "./node_modules/vue-material-design-icons/Plus.vue"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _services_attachmentService_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../services/attachmentService.js */ "./src/services/attachmentService.js"); /* harmony import */ var webdav__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! webdav */ "./node_modules/webdav/dist/web/index.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AttachmentsList', components: { NcListItem: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcListItem, NcActions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, NcActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, Upload: vue_material_design_icons_Upload_vue__WEBPACK_IMPORTED_MODULE_1__["default"], Close: vue_material_design_icons_Close_vue__WEBPACK_IMPORTED_MODULE_2__["default"], Folder: vue_material_design_icons_Folder_vue__WEBPACK_IMPORTED_MODULE_3__["default"], Paperclip: vue_material_design_icons_Paperclip_vue__WEBPACK_IMPORTED_MODULE_4__["default"], Plus: vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_5__["default"], NcDialog: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcDialog }, props: { calendarObjectInstance: { type: Object, required: true }, isReadOnly: { type: Boolean, default: true } }, data() { return { uploading: false, showOpenConfirmation: false, openConfirmationMessage: '', openConfirmationButtons: [] }; }, computed: { currentUser() { return this.$store.getters.getCurrentUserPrincipal; }, attachments() { return this.calendarObjectInstance.attachments; } }, methods: { addAttachmentWithProperty(calendarObjectInstance, sharedData) { this.$store.commit('addAttachmentWithProperty', { calendarObjectInstance, sharedData }); }, deleteAttachmentFromEvent(attachment) { this.$store.commit('deleteAttachment', { calendarObjectInstance: this.calendarObjectInstance, attachment }); }, async openFilesModal() { const picker = (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_7__.getFilePickerBuilder)(t('calendar', 'Choose a file to add as attachment')).setMultiSelect(false).allowDirectories(true).addButton({ label: t('calendar', 'Pick'), type: 'primary', callback: nodes => _utils_logger_js__WEBPACK_IMPORTED_MODULE_8__["default"].debug('Picked attachment', { nodes }) }).build(); try { const filename = await picker.pick(t('calendar', 'Choose a file to share as a link')); if (!this.isDuplicateAttachment(filename)) { var _davRes$multistatus; // TODO do not share Move this to PHP const data = await (0,_services_attachmentService_js__WEBPACK_IMPORTED_MODULE_9__.getFileInfo)(filename, this.currentUser.dav.userId); const davRes = await (0,webdav__WEBPACK_IMPORTED_MODULE_10__.parseXML)(data); const davRespObj = davRes === null || davRes === void 0 || (_davRes$multistatus = davRes.multistatus) === null || _davRes$multistatus === void 0 || (_davRes$multistatus = _davRes$multistatus.response[0]) === null || _davRes$multistatus === void 0 || (_davRes$multistatus = _davRes$multistatus.propstat) === null || _davRes$multistatus === void 0 ? void 0 : _davRes$multistatus.prop; davRespObj.fileName = filename; davRespObj.url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_6__.generateUrl)("/f/".concat(davRespObj.fileid)); davRespObj.value = davRespObj.url; this.addAttachmentWithProperty(this.calendarObjectInstance, davRespObj); } } catch (error) {} }, isDuplicateAttachment(path) { return this.attachments.find(attachment => { if (attachment.fileName === path) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_7__.showError)(t('calendar', 'Attachment {name} already exist!', { name: this.getBaseName(path) })); return true; } return false; }); }, clickOnUploadButton() { this.$refs.localAttachments.click(); }, async onLocalAttachmentSelected(e) { try { const attachmentsFolder = await this.$store.dispatch('createAttachmentsFolder'); const attachments = await (0,_services_attachmentService_js__WEBPACK_IMPORTED_MODULE_9__.uploadLocalAttachment)(attachmentsFolder, Array.from(e.target.files), this.currentUser.dav, this.attachments); // TODO do not share file, move to PHP attachments.map(async attachment => { var _davRes$multistatus2; const data = await (0,_services_attachmentService_js__WEBPACK_IMPORTED_MODULE_9__.getFileInfo)("".concat(attachmentsFolder, "/").concat(attachment.path), this.currentUser.dav.userId); const davRes = await (0,webdav__WEBPACK_IMPORTED_MODULE_10__.parseXML)(data); const davRespObj = davRes === null || davRes === void 0 || (_davRes$multistatus2 = davRes.multistatus) === null || _davRes$multistatus2 === void 0 || (_davRes$multistatus2 = _davRes$multistatus2.response[0]) === null || _davRes$multistatus2 === void 0 || (_davRes$multistatus2 = _davRes$multistatus2.propstat) === null || _davRes$multistatus2 === void 0 ? void 0 : _davRes$multistatus2.prop; davRespObj.fileName = attachment.path; davRespObj.url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_6__.generateUrl)("/f/".concat(davRespObj.fileid)); davRespObj.value = davRespObj.url; this.addAttachmentWithProperty(this.calendarObjectInstance, davRespObj); }); e.target.value = ''; } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_8__["default"].error('Could not upload attachment(s)', { error }); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_7__.showError)(t('calendar', 'Could not upload attachment(s)')); } }, getIcon(mime) { return OC.MimeType.getIconUrl(mime); }, getPreview(attachment) { if (attachment.xNcHasPreview) { return (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_6__.generateUrl)("/core/preview?fileId=".concat(attachment.xNcFileId, "&x=100&y=100&a=0")); } return attachment.formatType ? OC.MimeType.getIconUrl(attachment.formatType) : OC.MimeType.getIconUrl('folder'); }, getBaseName(name) { return name.split('/').pop(); }, openFile(rawUrl) { let url; try { url = new URL(rawUrl, (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_6__.getBaseUrl)()); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_8__["default"].error("Refusing to open invalid URL: ".concat(rawUrl), { error }); return; } const baseUrl = new URL((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_6__.getBaseUrl)()); if (url.href.startsWith(baseUrl.href)) { // URL belongs to this instance and is safe window.open(url.href, '_blank', 'noopener noreferrer'); return; } // Otherwise, show a confirmation dialog this.openConfirmationMessage = t('calendar', 'You are about to navigate to {host}. Are you sure to proceed? Link: {link}', { host: url.host, link: url.href }); this.openConfirmationButtons = [{ label: t('calendar', 'Cancel'), callback: () => { this.showOpenConfirmation = false; } }, { label: t('calendar', 'Proceed'), type: 'primary', callback: () => { window.open(url.href, '_blank', 'noopener noreferrer'); } }]; this.showOpenConfirmation = true; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/AvatarParticipationStatus.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/AvatarParticipationStatus.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/AccountMultiple.vue */ "./node_modules/vue-material-design-icons/AccountMultiple.vue"); /* harmony import */ var vue_material_design_icons_CheckCircle_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/CheckCircle.vue */ "./node_modules/vue-material-design-icons/CheckCircle.vue"); /* harmony import */ var vue_material_design_icons_HelpCircle_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/HelpCircle.vue */ "./node_modules/vue-material-design-icons/HelpCircle.vue"); /* harmony import */ var vue_material_design_icons_CloseCircle_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/CloseCircle.vue */ "./node_modules/vue-material-design-icons/CloseCircle.vue"); /* harmony import */ var vue_material_design_icons_ArrowRightDropCircle_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/ArrowRightDropCircle.vue */ "./node_modules/vue-material-design-icons/ArrowRightDropCircle.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'AvatarParticipationStatus', components: { Avatar: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAvatar, AccountMultiple: vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_1__["default"], IconCheck: vue_material_design_icons_CheckCircle_vue__WEBPACK_IMPORTED_MODULE_2__["default"], IconNoResponse: vue_material_design_icons_HelpCircle_vue__WEBPACK_IMPORTED_MODULE_3__["default"], IconClose: vue_material_design_icons_CloseCircle_vue__WEBPACK_IMPORTED_MODULE_4__["default"], IconDelegated: vue_material_design_icons_ArrowRightDropCircle_vue__WEBPACK_IMPORTED_MODULE_5__["default"] }, props: { avatarLink: { type: String, required: true }, participationStatus: { type: String, required: true }, commonName: { type: String, required: true }, isViewedByOrganizer: { type: Boolean, required: true }, isResource: { type: Boolean, required: true }, isGroup: { type: Boolean, required: false }, isSuggestion: { type: Boolean, default: false }, attendeeIsOrganizer: { type: Boolean, required: true }, organizerDisplayName: { type: String, required: true } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/CalendarPickerHeader.vue?vue&type=script&lang=js": /*!************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/CalendarPickerHeader.vue?vue&type=script&lang=js ***! \************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CalendarPickerHeader', components: { NcActions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, NcActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton }, props: { value: { type: Object, required: true }, calendars: { type: Array, required: true }, isReadOnly: { type: Boolean, required: true } }, computed: { /** * @return {boolean} */ isDisabled() { return this.isReadOnly || this.calendars.length < 2; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/FreeBusy/FreeBusy.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/FreeBusy/FreeBusy.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _fullcalendar_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @fullcalendar/vue */ "./node_modules/@fullcalendar/vue/dist/index.js"); /* harmony import */ var _fullcalendar_resource_timeline__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @fullcalendar/resource-timeline */ "./node_modules/@fullcalendar/resource-timeline/index.js"); /* harmony import */ var _fullcalendar_interaction__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @fullcalendar/interaction */ "./node_modules/@fullcalendar/interaction/index.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _fullcalendar_eventSources_freeBusyBlockedForAllEventSource_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../fullcalendar/eventSources/freeBusyBlockedForAllEventSource.js */ "./src/fullcalendar/eventSources/freeBusyBlockedForAllEventSource.js"); /* harmony import */ var _fullcalendar_eventSources_freeBusyFakeBlockingEventSource_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../fullcalendar/eventSources/freeBusyFakeBlockingEventSource.js */ "./src/fullcalendar/eventSources/freeBusyFakeBlockingEventSource.js"); /* harmony import */ var _fullcalendar_eventSources_freeBusyResourceEventSource_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../fullcalendar/eventSources/freeBusyResourceEventSource.js */ "./src/fullcalendar/eventSources/freeBusyResourceEventSource.js"); /* harmony import */ var _fullcalendar_localization_dateFormattingConfig_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../fullcalendar/localization/dateFormattingConfig.js */ "./src/fullcalendar/localization/dateFormattingConfig.js"); /* harmony import */ var _fullcalendar_localization_localeProvider_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../fullcalendar/localization/localeProvider.js */ "./src/fullcalendar/localization/localeProvider.js"); /* harmony import */ var _fullcalendar_localization_momentPlugin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../fullcalendar/localization/momentPlugin.js */ "./src/fullcalendar/localization/momentPlugin.js"); /* harmony import */ var _fullcalendar_timezones_vtimezoneNamedTimezoneImpl_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../fullcalendar/timezones/vtimezoneNamedTimezoneImpl.js */ "./src/fullcalendar/timezones/vtimezoneNamedTimezoneImpl.js"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var vue_material_design_icons_ChevronRight_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-material-design-icons/ChevronRight.vue */ "./node_modules/vue-material-design-icons/ChevronRight.vue"); /* harmony import */ var vue_material_design_icons_ChevronLeft_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue-material-design-icons/ChevronLeft.vue */ "./node_modules/vue-material-design-icons/ChevronLeft.vue"); /* harmony import */ var vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-material-design-icons/Check.vue */ "./node_modules/vue-material-design-icons/Check.vue"); /* harmony import */ var vue_material_design_icons_HelpCircle_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vue-material-design-icons/HelpCircle.vue */ "./node_modules/vue-material-design-icons/HelpCircle.vue"); /* harmony import */ var _Invitees_InviteesListSearch_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Invitees/InviteesListSearch.vue */ "./src/components/Editor/Invitees/InviteesListSearch.vue"); /* harmony import */ var _utils_freebusy_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../utils/freebusy.js */ "./src/utils/freebusy.js"); /* harmony import */ var _services_freeBusySlotService_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../services/freeBusySlotService.js */ "./src/services/freeBusySlotService.js"); /* harmony import */ var _filters_dateFormat_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../../filters/dateFormat.js */ "./src/filters/dateFormat.js"); // Import FullCalendar itself // Import event sources // Import localization plugins // Import timezone plugins /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'FreeBusy', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect, FullCalendar: _fullcalendar_vue__WEBPACK_IMPORTED_MODULE_16__["default"], InviteesListSearch: _Invitees_InviteesListSearch_vue__WEBPACK_IMPORTED_MODULE_12__["default"], NcDateTimePickerNative: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcDateTimePickerNative, NcDialog: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcDialog, NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, NcPopover: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcPopover, NcUserBubble: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcUserBubble, ChevronRightIcon: vue_material_design_icons_ChevronRight_vue__WEBPACK_IMPORTED_MODULE_8__["default"], ChevronLeftIcon: vue_material_design_icons_ChevronLeft_vue__WEBPACK_IMPORTED_MODULE_9__["default"], CheckIcon: vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_10__["default"], HelpCircleIcon: vue_material_design_icons_HelpCircle_vue__WEBPACK_IMPORTED_MODULE_11__["default"] }, props: { /** * The organizer object. * See /src/models/attendee.js for details */ organizer: { type: Object, required: true }, /** * The attendee objects. * See /src/models/attendee.js for details */ attendees: { type: Array, required: true }, /** * The start-date to query free-busy information from */ startDate: { type: Date, required: true }, /** * The end-date to query free-busy information from */ endDate: { type: Date, required: true }, eventTitle: { type: String, required: false }, alreadyInvitedEmails: { type: Array, required: true }, calendarObjectInstance: { type: Object, required: true } }, data() { return { loadingIndicator: true, currentDate: this.startDate, currentStart: this.startDate, currentEnd: this.endDate, lang: (0,_fullcalendar_localization_localeProvider_js__WEBPACK_IMPORTED_MODULE_5__.getFullCalendarLocale)().locale, formattingOptions: { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }, freeSlots: [], selectedSlot: null }; }, mounted() { const calendar = this.$refs.freeBusyFullCalendar.getApi(); calendar.scrollToTime(this.scrollTime); this.findFreeSlots(); }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_17__.mapGetters)({ timezoneId: 'getResolvedTimezone' }), ...(0,vuex__WEBPACK_IMPORTED_MODULE_17__.mapState)({ showWeekends: state => state.settings.showWeekends, showWeekNumbers: state => state.settings.showWeekNumbers, timezone: state => state.settings.timezone }), placeholder() { return this.$t('calendar', 'Select automatic slot'); }, /** * FullCalendar Plugins * * @return {(PluginDef)[]} */ plugins() { return [_fullcalendar_resource_timeline__WEBPACK_IMPORTED_MODULE_18__["default"], (0,_fullcalendar_localization_momentPlugin_js__WEBPACK_IMPORTED_MODULE_6__["default"])(this.$store), _fullcalendar_timezones_vtimezoneNamedTimezoneImpl_js__WEBPACK_IMPORTED_MODULE_7__["default"], _fullcalendar_interaction__WEBPACK_IMPORTED_MODULE_19__["default"]]; }, formattedCurrentStart() { return this.currentDate.toLocaleDateString(this.lang, this.formattingOptions); }, formattedCurrentTime() { const options = { hour: '2-digit', minute: '2-digit', hour12: true }; const startTime = this.currentStart.toLocaleTimeString(this.lang, options); const endTime = this.currentEnd.toLocaleTimeString(this.lang, options); return "".concat(startTime, " - ").concat(endTime, " "); }, scrollTime() { const options = { hour: '2-digit', minute: '2-digit', seconds: '2-digit', hour12: false }; return this.currentDate.getHours() > 0 ? new Date(this.currentDate.getTime() - 60 * 60 * 1000).toLocaleTimeString(this.lang, options) : '10:00:00'; }, formattedTimeZone() { return this.timezoneId.replace('/', '-'); }, eventSources() { return [(0,_fullcalendar_eventSources_freeBusyResourceEventSource_js__WEBPACK_IMPORTED_MODULE_3__["default"])(this._uid, this.organizer.attendeeProperty, this.attendees.map(a => a.attendeeProperty)), (0,_fullcalendar_eventSources_freeBusyFakeBlockingEventSource_js__WEBPACK_IMPORTED_MODULE_2__["default"])(this._uid, this.resources, this.currentStart, this.currentEnd), (0,_fullcalendar_eventSources_freeBusyBlockedForAllEventSource_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.organizer.attendeeProperty, this.attendees.map(a => a.attendeeProperty), this.resources)]; }, resources() { const resources = []; const roles = { CHAIR: this.$t('calendar', 'chairperson'), 'REQ-PARTICIPANT': this.$t('calendar', 'required participant'), 'NON-PARTICIPANT': this.$t('calendar', 'non-participant'), 'OPT-PARTICIPANT': this.$t('calendar', 'optional participant') }; for (const attendee of [this.organizer, ...this.attendees]) { let title = attendee.commonName || attendee.uri.slice(7); if (attendee === this.organizer) { title = this.$t('calendar', '{organizer} (organizer)', { organizer: title }); } else { title = this.$t('calendar', '{attendee} ({role})', { attendee: title, role: roles[attendee.role] }); } resources.push({ id: attendee.attendeeProperty.email, title }); } // Sort the resources by ID, just like fullcalendar does. This ensures that // the fake blocking event can know the first and last resource reliably // ref https://fullcalendar.io/docs/resourceOrder resources.sort((a, b) => (a.id > b.id) - (a.id < b.id)); return resources; }, /** * List of possible Free-Busy values. * This is used as legend. * * @return {({color: string, label: string})[]} */ colorCaption() { return [{ // TRANSLATORS: free as in available label: this.$t('calendar', 'Free'), color: (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_13__.getColorForFBType)('FREE') }, { label: this.$t('calendar', 'Busy (tentative)'), color: (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_13__.getColorForFBType)('BUSY-TENTATIVE') }, { label: this.$t('calendar', 'Busy'), color: (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_13__.getColorForFBType)('BUSY') }, { label: this.$t('calendar', 'Out of office'), color: (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_13__.getColorForFBType)('BUSY-UNAVAILABLE') }, { label: this.$t('calendar', 'Unknown'), color: (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_13__.getColorForFBType)('UNKNOWN') }]; }, /** * Configuration options for FullCalendar * Please see https://fullcalendar.io/docs#toc for details * * @return {object} */ options() { return { // Initialization: initialView: 'resourceTimelineDay', initialDate: this.currentStart, schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source', // Data eventSources: this.eventSources, resources: this.resources, // Plugins plugins: this.plugins, // Interaction: editable: false, selectable: true, select: this.handleSelect, // Localization: ...(0,_fullcalendar_localization_dateFormattingConfig_js__WEBPACK_IMPORTED_MODULE_4__.getDateFormattingConfig)(), ...(0,_fullcalendar_localization_localeProvider_js__WEBPACK_IMPORTED_MODULE_5__.getFullCalendarLocale)(), // Rendering height: 'auto', loading: this.loading, headerToolbar: false, resourceAreaColumns: [{ field: 'title', headerContent: 'Attendees' }], // Timezones: timeZone: this.timezoneId, // Formatting of the title // will produce something like "Tuesday, September 18, 2018" // ref https://fullcalendar.io/docs/date-formatting titleFormat: { month: 'long', year: 'numeric', day: 'numeric', weekday: 'long' }, dateClick: this.findFreeSlots() }; } }, methods: { handleSelect(arg) { this.currentStart = arg.start; this.currentEnd = arg.end; }, save() { this.$emit('update-dates', { start: this.currentStart, end: this.currentEnd }); }, addAttendee(attendee) { this.$emit('add-attendee', attendee); this.findFreeSlots(); }, removeAttendee(attendee) { this.$emit('remove-attendee', attendee); this.findFreeSlots(); }, loading(isLoading) { this.loadingIndicator = isLoading; }, handleActions(action) { let date = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; const calendar = this.$refs.freeBusyFullCalendar.getApi(); switch (action) { case 'today': calendar.today(); break; case 'left': calendar.prev(); break; case 'right': calendar.next(); break; case 'picker': calendar.gotoDate(date); break; } this.currentDate = calendar.getDate(); calendar.scrollToTime(this.scrollTime); this.findFreeSlots(); }, async findFreeSlots() { // Doesn't make sense for multiple days if (this.currentStart.getDate() !== this.currentEnd.getDate()) { return; } // Needed to update with full calendar widget changes const startSearch = new Date(this.currentStart); startSearch.setDate(this.currentDate.getDate()); startSearch.setMonth(this.currentDate.getMonth()); startSearch.setYear(this.currentDate.getFullYear()); const endSearch = new Date(this.currentEnd); endSearch.setDate(this.currentDate.getDate()); endSearch.setMonth(this.currentDate.getMonth()); endSearch.setYear(this.currentDate.getFullYear()); try { // for now search slots only in the first week days const endSearchDate = new Date(startSearch); endSearchDate.setDate(startSearch.getDate() + 7); const eventResults = await (0,_services_freeBusySlotService_js__WEBPACK_IMPORTED_MODULE_14__.getBusySlots)(this.organizer.attendeeProperty, this.attendees.map(a => a.attendeeProperty), startSearch, endSearchDate, this.timeZoneId); const freeSlots = (0,_services_freeBusySlotService_js__WEBPACK_IMPORTED_MODULE_14__.getFirstFreeSlot)(startSearch, endSearch, eventResults.events); freeSlots.forEach(slot => { slot.displayStart = (0,_filters_dateFormat_js__WEBPACK_IMPORTED_MODULE_15__["default"])(slot.start, false, (0,_fullcalendar_localization_localeProvider_js__WEBPACK_IMPORTED_MODULE_5__.getFullCalendarLocale)().locale); }); this.freeSlots = freeSlots; } catch (error) { // Handle error here console.error('Error occurred while finding free slots:', error); throw error; // Re-throwing the error to handle it in the caller } }, setSlotSuggestion(slot) { this.selectedSlot = slot; const calendar = this.$refs.freeBusyFullCalendar.getApi(); calendar.gotoDate(slot.start); calendar.scrollToTime(this.scrollTime); // have to make these "selected" version of the props seeing as they can't be modified directly, and they aren't updated reactively when vuex is this.currentStart = slot.start; this.currentEnd = slot.end; const clonedDate = new Date(slot.start); // so as not to modify slot.start this.currentDate = new Date(clonedDate.setHours(0, 0, 0, 0)); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/InvitationResponseButtons.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/InvitationResponseButtons.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_CalendarQuestion_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/CalendarQuestion.vue */ "./node_modules/vue-material-design-icons/CalendarQuestion.vue"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'InvitationResponseButtons', components: { Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, CalendarQuestionIcon: vue_material_design_icons_CalendarQuestion_vue__WEBPACK_IMPORTED_MODULE_1__["default"] }, props: { attendee: { type: Object, required: true }, calendarId: { type: String, required: true }, narrow: { type: Boolean, default: false }, growHorizontally: { type: Boolean, default: false } }, data() { return { loading: false }; }, computed: { isAccepted() { return this.attendee.participationStatus === 'ACCEPTED'; }, isDeclined() { return this.attendee.participationStatus === 'DECLINED'; }, isTentative() { return this.attendee.participationStatus === 'TENTATIVE'; } }, methods: { async accept() { try { await this.setParticipationStatus('ACCEPTED'); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showSuccess)(this.t('calendar', 'The invitation has been accepted successfully.')); this.$emit('close'); } catch (e) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)(this.t('calendar', 'Failed to accept the invitation.')); } }, async decline() { try { await this.setParticipationStatus('DECLINED'); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showSuccess)(this.t('calendar', 'The invitation has been declined successfully.')); this.$emit('close'); } catch (e) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)(this.t('calendar', 'Failed to decline the invitation.')); } }, async tentative() { try { await this.setParticipationStatus('TENTATIVE'); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showSuccess)(this.t('calendar', 'Your participation has been marked as tentative.')); this.$emit('close'); } catch (e) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)(this.t('calendar', 'Failed to set the participation status to tentative.')); } }, /** * Set the participation status and save the event * * @param {string} participationStatus The new participation status * @return {Promise} */ async setParticipationStatus(participationStatus) { this.loading = true; try { this.$store.commit('changeAttendeesParticipationStatus', { attendee: this.attendee, participationStatus }); // TODO: What about recurring events? Add new buttons like "Accept this and all future"? // Currently, this will only accept a single occurrence. await this.$store.dispatch('saveCalendarObjectInstance', { thisAndAllFuture: false, calendarId: this.calendarId }); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__["default"].error('Failed to set participation status', { error, participationStatus }); throw error; } finally { this.loading = false; } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesList.vue?vue&type=script&lang=js": /*!*************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesList.vue?vue&type=script&lang=js ***! \*************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _InviteesListSearch_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./InviteesListSearch.vue */ "./src/components/Editor/Invitees/InviteesListSearch.vue"); /* harmony import */ var _InviteesListItem_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./InviteesListItem.vue */ "./src/components/Editor/Invitees/InviteesListItem.vue"); /* harmony import */ var _OrganizerListItem_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./OrganizerListItem.vue */ "./src/components/Editor/Invitees/OrganizerListItem.vue"); /* harmony import */ var _NoAttendeesView_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../NoAttendeesView.vue */ "./src/components/Editor/NoAttendeesView.vue"); /* harmony import */ var _OrganizerNoEmailError_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../OrganizerNoEmailError.vue */ "./src/components/Editor/OrganizerNoEmailError.vue"); /* harmony import */ var _services_talkService_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../services/talkService.js */ "./src/services/talkService.js"); /* harmony import */ var _FreeBusy_FreeBusy_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../FreeBusy/FreeBusy.vue */ "./src/components/Editor/FreeBusy/FreeBusy.vue"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _utils_attendee_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../utils/attendee.js */ "./src/utils/attendee.js"); /* harmony import */ var vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-material-design-icons/AccountMultiple.vue */ "./node_modules/vue-material-design-icons/AccountMultiple.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'InviteesList', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, FreeBusy: _FreeBusy_FreeBusy_vue__WEBPACK_IMPORTED_MODULE_7__["default"], OrganizerNoEmailError: _OrganizerNoEmailError_vue__WEBPACK_IMPORTED_MODULE_5__["default"], NoAttendeesView: _NoAttendeesView_vue__WEBPACK_IMPORTED_MODULE_4__["default"], InviteesListItem: _InviteesListItem_vue__WEBPACK_IMPORTED_MODULE_2__["default"], InviteesListSearch: _InviteesListSearch_vue__WEBPACK_IMPORTED_MODULE_1__["default"], OrganizerListItem: _OrganizerListItem_vue__WEBPACK_IMPORTED_MODULE_3__["default"], AccountMultipleIcon: vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_10__["default"] }, props: { isReadOnly: { type: Boolean, required: true }, calendarObjectInstance: { type: Object, required: true }, isSharedWithMe: { type: Boolean, required: true }, showHeader: { type: Boolean, required: true }, hideIfEmpty: { type: Boolean, default: false }, hideButtons: { type: Boolean, default: false }, hideErrors: { type: Boolean, default: false }, limit: { type: Number, default: 0 } }, data() { return { creatingTalkRoom: false, showFreeBusyModel: false, recentAttendees: [] }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_11__.mapState)({ talkEnabled: state => state.settings.talkEnabled }), noInviteesMessage() { return this.$t('calendar', 'No attendees yet'); }, noOwnerMessage() { return this.$t('calendar', 'You do not own this calendar, so you cannot add attendees to this event'); }, invitees() { return this.calendarObjectInstance.attendees.filter(attendee => { return !['RESOURCE', 'ROOM'].includes(attendee.attendeeProperty.userType); }); }, groups() { return this.invitees.filter(attendee => { if (attendee.attendeeProperty.userType === 'GROUP') { attendee.members = this.invitees.filter(invitee => { return invitee.attendeeProperty.member && invitee.attendeeProperty.member.includes(attendee.uri) && attendee.attendeeProperty.userType === 'GROUP'; }); return attendee.members.length > 0; } return false; }); }, /** * All invitees except the organizer. * * @return {object[]} */ inviteesWithoutOrganizer() { if (!this.calendarObjectInstance.organizer) { return this.invitees; } return this.invitees.filter(attendee => { // Filter attendees which are part of an invited group if (this.groups.some(function (group) { return attendee.attendeeProperty.member && attendee.attendeeProperty.member.includes(group.uri) && attendee.attendeeProperty.userType === 'INDIVIDUAL'; })) { return false; } // Filter empty groups if (attendee.attendeeProperty.userType === 'GROUP') { return attendee.members.length > 0; } return attendee.uri !== this.calendarObjectInstance.organizer.uri; }); }, /** * All invitees except the organizer limited by the limit prop. * If the limit prop is 0 all invitees except the organizer are returned. * * @return {object[]} */ limitedInviteesWithoutOrganizer() { const filteredInvitees = this.inviteesWithoutOrganizer; if (this.limit) { const limit = this.hasOrganizer ? this.limit - 1 : this.limit; return filteredInvitees // Push newly added attendees to the top of the list .toSorted((a, b) => this.recentAttendees.indexOf(b.uri) - this.recentAttendees.indexOf(a.uri)).slice(0, limit); } return filteredInvitees; }, isOrganizer() { return this.calendarObjectInstance.organizer !== null && this.$store.getters.getCurrentUserPrincipal !== null && (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_9__.removeMailtoPrefix)(this.calendarObjectInstance.organizer.uri) === this.$store.getters.getCurrentUserPrincipal.emailAddress; }, hasOrganizer() { return this.calendarObjectInstance.organizer !== null; }, organizerDisplayName() { return (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_9__.organizerDisplayName)(this.calendarObjectInstance.organizer); }, isListEmpty() { return !this.calendarObjectInstance.organizer && this.invitees.length === 0; }, alreadyInvitedEmails() { const emails = this.invitees.map(attendee => (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_9__.removeMailtoPrefix)(attendee.uri)); const principal = this.$store.getters.getCurrentUserPrincipal; if (principal) { emails.push(principal.emailAddress); } return emails; }, hasUserEmailAddress() { const principal = this.$store.getters.getCurrentUserPrincipal; if (!principal) { return false; } return !!principal.emailAddress; }, isCreateTalkRoomButtonVisible() { return this.talkEnabled; }, isCreateTalkRoomButtonDisabled() { if (this.creatingTalkRoom) { return true; } if ((0,_services_talkService_js__WEBPACK_IMPORTED_MODULE_6__.doesContainTalkLink)(this.calendarObjectInstance.location)) { return true; } if ((0,_services_talkService_js__WEBPACK_IMPORTED_MODULE_6__.doesContainTalkLink)(this.calendarObjectInstance.description)) { return true; } return false; }, statusHeader() { if (!this.isReadOnly) { return ''; } return this.t('calendar', '{invitedCount} invited, {confirmedCount} confirmed', { invitedCount: this.inviteesWithoutOrganizer.length, confirmedCount: this.inviteesWithoutOrganizer.filter(attendee => attendee.participationStatus === 'ACCEPTED').length }); } }, methods: { addAttendee(_ref) { let { commonName, email, calendarUserType, language, timezoneId, member } = _ref; this.$store.commit('addAttendee', { calendarObjectInstance: this.calendarObjectInstance, commonName, uri: email, calendarUserType, participationStatus: 'NEEDS-ACTION', role: 'REQ-PARTICIPANT', rsvp: true, language, timezoneId, organizer: this.$store.getters.getCurrentUserPrincipal, member }); this.recentAttendees.push(email); }, removeAttendee(attendee) { // Remove attendee from participating group if (attendee.member) { this.groups.forEach(group => { if (attendee.member.includes(group.uri)) { group.members = group.members.filter(member => { if (!attendee.member.includes(group.uri)) { return true; } return false; }); } }); } this.$store.commit('removeAttendee', { calendarObjectInstance: this.calendarObjectInstance, attendee }); this.recentAttendees = this.recentAttendees.filter(a => a.uri !== attendee.email); }, openFreeBusy() { this.showFreeBusyModel = true; }, closeFreeBusy() { this.showFreeBusyModel = false; }, saveNewDate(dates) { this.$emit('update-dates', dates); this.showFreeBusyModel = false; }, async createTalkRoom() { const NEW_LINE = '\r\n'; try { var _this$calendarObjectI; this.creatingTalkRoom = true; const url = await (0,_services_talkService_js__WEBPACK_IMPORTED_MODULE_6__.createTalkRoom)(this.calendarObjectInstance.title, this.calendarObjectInstance.description); // Store in LOCATION property if it's missing/empty. Append to description otherwise. if (((_this$calendarObjectI = this.calendarObjectInstance.location) !== null && _this$calendarObjectI !== void 0 ? _this$calendarObjectI : '').trim() === '') { this.$store.commit('changeLocation', { calendarObjectInstance: this.calendarObjectInstance, location: url }); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__.showSuccess)(this.$t('calendar', 'Successfully appended link to talk room to location.')); } else { if (!this.calendarObjectInstance.description) { this.$store.commit('changeDescription', { calendarObjectInstance: this.calendarObjectInstance, description: url }); } else { this.$store.commit('changeDescription', { calendarObjectInstance: this.calendarObjectInstance, description: this.calendarObjectInstance.description + NEW_LINE + NEW_LINE + url + NEW_LINE }); } (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__.showSuccess)(this.$t('calendar', 'Successfully appended link to talk room to description.')); } } catch (error) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__.showError)(this.$t('calendar', 'Error creating Talk room')); } finally { this.creatingTalkRoom = false; } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListItem.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListItem.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AvatarParticipationStatus_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../AvatarParticipationStatus.vue */ "./src/components/Editor/AvatarParticipationStatus.vue"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _utils_attendee_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/attendee.js */ "./src/utils/attendee.js"); /* harmony import */ var vue_material_design_icons_ChevronDown_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/ChevronDown.vue */ "./node_modules/vue-material-design-icons/ChevronDown.vue"); /* harmony import */ var vue_material_design_icons_ChevronUp_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/ChevronUp.vue */ "./node_modules/vue-material-design-icons/ChevronUp.vue"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'InviteesListItem', components: { AvatarParticipationStatus: _AvatarParticipationStatus_vue__WEBPACK_IMPORTED_MODULE_0__["default"], ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcActionButton, ActionCheckbox: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcActionCheckbox, ActionRadio: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcActionRadio, Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcActions, Delete: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_5__["default"], NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcButton, ChevronDown: vue_material_design_icons_ChevronDown_vue__WEBPACK_IMPORTED_MODULE_3__["default"], ChevronUp: vue_material_design_icons_ChevronUp_vue__WEBPACK_IMPORTED_MODULE_4__["default"] }, props: { attendee: { type: Object, required: true }, organizerDisplayName: { type: String, required: true }, isReadOnly: { type: Boolean, required: true }, members: { type: Array, default: () => [], required: false } }, data() { return { memberListExpaneded: false }; }, computed: { /** * @return {string} */ avatarLink() { // return this.$store.getters.getAvatarForContact(this.uri) || this.commonName return this.commonName; }, /** * @return {string} */ removeAttendeeText() { if (this.isGroup) { return this.$t('calendar', 'Remove group'); } else { return this.$t('calendar', 'Remove attendee'); } }, /** * Common name of the organizer or the uri without the 'mailto:' prefix. * * @return {string} */ commonName() { if (this.attendee.commonName) { return this.attendee.commonName; } if (this.attendee.uri) { return (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_2__.removeMailtoPrefix)(this.attendee.uri); } return ''; }, radioName() { return this._uid + '-role-radio-input-group'; }, isChair() { return this.attendee.role === 'CHAIR'; }, isRequiredParticipant() { return this.attendee.role === 'REQ-PARTICIPANT'; }, isOptionalParticipant() { return this.attendee.role === 'OPT-PARTICIPANT'; }, isNonParticipant() { return this.attendee.role === 'NON-PARTICIPANT'; }, isViewedByOrganizer() { // TODO: check if also viewed by organizer return !this.isReadOnly; }, isGroup() { return this.attendee.attendeeProperty.userType === 'GROUP'; } }, methods: { /** * Toggles the RSVP flag of the attendee */ toggleRSVP() { this.$store.commit('toggleAttendeeRSVP', { attendee: this.attendee }); }, /** * Updates the role of the attendee * * @param {string} role The new role of the attendee */ changeRole(role) { this.$store.commit('changeAttendeesRole', { attendee: this.attendee, role }); }, /** * Removes an attendee from the event * * @param {object} attendee Attendee object to remove */ removeAttendee(attendee) { this.$emit('remove-attendee', attendee); }, /** * Toggle member list if attendee is a group */ toggleMemberList() { this.memberListExpaneded = !this.memberListExpaneded; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListSearch.vue?vue&type=script&lang=js": /*!*******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListSearch.vue?vue&type=script&lang=js ***! \*******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _services_isCirclesEnabled_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../services/isCirclesEnabled.js */ "./src/services/isCirclesEnabled.js"); /* harmony import */ var _services_circleService_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../services/circleService.js */ "./src/services/circleService.js"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! debounce */ "./node_modules/debounce/index.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_9__); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony import */ var vue_material_design_icons_GoogleCirclesCommunities_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/GoogleCirclesCommunities.vue */ "./node_modules/vue-material-design-icons/GoogleCirclesCommunities.vue"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'InviteesListSearch', components: { Avatar: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAvatar, NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect, GoogleCirclesCommunitiesIcon: vue_material_design_icons_GoogleCirclesCommunities_vue__WEBPACK_IMPORTED_MODULE_7__["default"] }, props: { alreadyInvitedEmails: { type: Array, required: true }, organizer: { type: Object, required: false } }, data() { return { isLoading: false, inputGiven: false, matches: [], isCirclesEnabled: _services_isCirclesEnabled_js__WEBPACK_IMPORTED_MODULE_2__["default"] }; }, computed: { placeholder() { return this.$t('calendar', 'Search for emails, users, contacts or groups'); }, noResult() { return this.$t('calendar', 'No match found'); } }, methods: { findAttendees: debounce__WEBPACK_IMPORTED_MODULE_9___default()(async function (query) { this.isLoading = true; const matches = []; if (query.length > 0) { const promises = [this.findAttendeesFromContactsAPI(query), this.findAttendeesFromDAV(query)]; if (_services_isCirclesEnabled_js__WEBPACK_IMPORTED_MODULE_2__["default"]) { promises.push(this.findAttendeesFromCircles(query)); } const [contactsResults, davResults, circleResults] = await Promise.all(promises); matches.push(...contactsResults); matches.push(...davResults); if (_services_isCirclesEnabled_js__WEBPACK_IMPORTED_MODULE_2__["default"]) { matches.push(...circleResults); } // Source of the Regex: https://stackoverflow.com/a/46181 // eslint-disable-next-line const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; if (emailRegex.test(query)) { const alreadyInList = matches.find(attendee => attendee.email.toLowerCase() === query.toLowerCase()); if (!alreadyInList) { matches.unshift({ calendarUserType: 'INDIVIDUAL', commonName: query, email: query, isUser: false, avatar: null, language: null, timezoneId: null, hasMultipleEMails: false, dropdownName: query }); } } // Generate a unique id for every result to make the avatar components reactive for (const match of matches) { match.uid = (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_6__.randomId)(); } this.isLoading = false; this.inputGiven = true; } else { this.inputGiven = false; this.isLoading = false; } this.matches = matches; }, 500), addAttendee(selectedValue) { if (selectedValue.type === 'circle') { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_8__.showInfo)(this.$t('calendar', 'Note that members of circles get invited but are not synced yet.')); this.resolveCircleMembers(selectedValue.id, selectedValue.email); } this.$emit('add-attendee', selectedValue); }, async resolveCircleMembers(circleId, groupId) { let results; try { // Going to query custom backend to fetch Circle members since we're going to use // mail addresses of local circle members. The Circles API doesn't expose member // emails yet. Change approved by @miaulalala and @ChristophWurst. results = await (0,_services_circleService_js__WEBPACK_IMPORTED_MODULE_3__.circleGetMembers)(circleId); } catch (error) { console.debug(error); return []; } results.data.forEach(member => { if (!this.organizer || member.email !== this.organizer.uri) { this.$emit('add-attendee', member); } }); }, async findAttendeesFromContactsAPI(query) { let response; try { response = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__["default"].post((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_5__.linkTo)('calendar', 'index.php') + '/v1/autocompletion/attendee', { search: query }); } catch (error) { console.debug(error); return []; } const data = response.data; return data.reduce((arr, result) => { const hasMultipleEMails = result.emails.length > 1; result.emails.forEach(email => { let name; if (result.name && !hasMultipleEMails) { name = result.name; } else if (result.name && hasMultipleEMails) { name = "".concat(result.name, " (").concat(email, ")"); } else { name = email; } if (email && this.alreadyInvitedEmails.includes(email)) { return; } arr.push({ calendarUserType: 'INDIVIDUAL', commonName: result.name, email, isUser: false, avatar: result.photo, language: result.lang, timezoneId: result.tzid, hasMultipleEMails, dropdownName: name }); }); return arr; }, []); }, async findAttendeesFromDAV(query) { let results; try { results = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_1__.principalPropertySearchByDisplaynameOrEmail)(query); } catch (error) { console.debug(error); return []; } return results.filter(principal => { if (!principal.email) { return false; } if (this.alreadyInvitedEmails.includes(principal.email)) { return false; } // We do not support GROUPS for now if (principal.calendarUserType === 'GROUP') { return false; } // Do not include resources and rooms if (['ROOM', 'RESOURCE'].includes(principal.calendarUserType)) { return false; } return true; }).map(principal => { return { commonName: principal.displayname, calendarUserType: principal.calendarUserType, email: principal.email, language: principal.language, isUser: principal.calendarUserType === 'INDIVIDUAL', avatar: decodeURIComponent(principal.userId), hasMultipleEMails: false, dropdownName: principal.displayname ? [principal.displayname, principal.email].join(' ') : principal.email }; }); }, async findAttendeesFromCircles(query) { let results; try { results = await (0,_services_circleService_js__WEBPACK_IMPORTED_MODULE_3__.circleSearchByName)(query); } catch (error) { console.debug(error); return []; } return results.filter(circle => { return true; }).map(circle => { return { commonName: circle.displayname, calendarUserType: 'GROUP', email: 'circle+' + circle.id + '@' + circle.instance, isUser: false, dropdownName: circle.displayname, type: 'circle', id: circle.id, subtitle: this.$n('calendar', '%n member', '%n members', circle.population) }; }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/OrganizerListItem.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/OrganizerListItem.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _AvatarParticipationStatus_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../AvatarParticipationStatus.vue */ "./src/components/Editor/AvatarParticipationStatus.vue"); /* harmony import */ var _utils_attendee_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/attendee.js */ "./src/utils/attendee.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'OrganizerListItem', components: { AvatarParticipationStatus: _AvatarParticipationStatus_vue__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { organizer: { type: Object, required: true }, isReadOnly: { type: Boolean, required: true } }, computed: { /** * @return {string} */ avatarLink() { // return this.$store.getters.getAvatarForContact(this.uri) || this.commonName return this.commonName; }, /** * Common name of the attendee or the uri without the 'mailto:' prefix. * * @return {string} */ commonName() { if (this.organizer.commonName) { return this.organizer.commonName; } if (this.organizer.uri) { return (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_1__.removeMailtoPrefix)(this.organizer.uri); } return ''; }, isViewedByOrganizer() { return true; }, isResource() { // The organizer does not have a tooltip return false; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/NoAttendeesView.vue?vue&type=script&lang=js": /*!*******************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/NoAttendeesView.vue?vue&type=script&lang=js ***! \*******************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-material-design-icons/AccountMultiple.vue */ "./node_modules/vue-material-design-icons/AccountMultiple.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'NoAttendeesView', components: { AccountMultiple: vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { message: { type: String, required: true } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/OrganizerNoEmailError.vue?vue&type=script&lang=js": /*!*************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/OrganizerNoEmailError.vue?vue&type=script&lang=js ***! \*************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'OrganizerNoEmailError', computed: { /** * This returns the caption of the warning message, including a link to the personal settings * * @return {string} */ htmlCaption() { return this.$t('calendar', 'To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose].').replace('[linkopen]', "")).replace('[linkclose]', ''); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyColor.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyColor.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! debounce */ "./node_modules/debounce/index.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var vue_material_design_icons_Undo_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/Undo.vue */ "./node_modules/vue-material-design-icons/Undo.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertyColor', components: { Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcActions, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcActionButton, NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcButton, ColorPicker: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcColorPicker, Undo: vue_material_design_icons_Undo_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__["default"]], props: { /** * The color of the calendar * this event is in */ calendarColor: { type: String, default: null } }, data() { return { isColorPickerOpen: false }; }, computed: { /** * The selected color is either custom or * defaults to the color of the calendar * * @return {string} */ selectedColor() { return this.value || this.calendarColor; }, /** * Whether or not to show the delete color button * * @return {boolean} */ showColorRevertButton() { if (this.isReadOnly) { return false; } return !!this.value; } }, methods: { /** * Changes / Sets the custom color of this event * * The problem we are facing here is that the * color-picker component uses normal hex colors, * but the RFC 7986 property COLOR requires * css-color-names. * * The color-space of css-color-names is smaller * than the one of hex colors. Hence the color- * picker (especially in the custom color-picker) * will jump after the color changed. To prevent * flickering, we only update the color after the * user stopped moving the color-picker and not * immediately. * * @param {string} newColor The new Color as HEX */ changeColor: debounce__WEBPACK_IMPORTED_MODULE_3___default()(function (newColor) { this.$emit('update:value', newColor); }, 500), /** * Removes the custom color from this event, * defaulting the color back to the calendar-color */ deleteColor() { this.$emit('update:value', null); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: "PropertyIsCalendarPending", components: { NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcCheckboxRadioSwitch }, props: { isCalendarPending: { type: Boolean, default: false } }, computed: {}, methods: { toggleIsCalendarPending() { const newIsCalendarPendingState = !this.isCalendarPending; this.$emit('toggle-is-calendar-pending', newIsCalendarPendingState); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: "PropertyIsLeave", components: { NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcCheckboxRadioSwitch }, props: { isLeave: { type: Boolean, default: false } }, computed: { getIsLeaveLabel() { console.log(this.isReadOnly); return this.isLeave ? this.$t('calendar', 'Congé') : this.$t('calendar', 'Pas de congé'); } }, methods: { toggleIsLeave() { const newLeaveState = !this.isLeave; this.$emit('toggle-is-leave', newLeaveState); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelect', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcSelect, InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__["default"]], computed: { display() { return true; }, options() { return this.propModel.options; }, selectedValue() { const value = this.value || this.propModel.defaultValue; return this.options.find(option => option.value === value); } }, methods: { changeValue(selectedOption) { if (!selectedOption) { return; } this.$emit('update:value', selectedOption.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! html-entities */ "./node_modules/html-entities/lib/index.js"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(html_entities__WEBPACK_IMPORTED_MODULE_5__); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelectAjax', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcSelect, InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, props: { url: { type: String, required: false } }, data() { return { properties: [], // Data to populate the dropdown selectedProperty: null // Currently selected property }; }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__["default"]], computed: { display() { return true; }, options() { return this.properties; }, selectedValue() { const value = this.value || this.propModel.defaultValue; return this.properties.find(option => option.value === value); } }, mounted() { this.fetchProperties(); // Fetch data when the component is mounted }, methods: { fetchProperties() { const ajaxUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_3__.generateUrl)(this.url); _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__["default"].get(ajaxUrl).then(response => { let results = JSON.parse(response.data); let values = []; results.forEach(result => { if (result.nom) { let v = (0,html_entities__WEBPACK_IMPORTED_MODULE_5__.decode)(result.nom); values.push({ value: v, label: v }); } else if (result.description) { let v = (0,html_entities__WEBPACK_IMPORTED_MODULE_5__.decode)(result.description); values.push({ value: v, label: v }); } else if (result.reference) { let v = (0,html_entities__WEBPACK_IMPORTED_MODULE_5__.decode)(result.reference); values.push({ value: v, label: v }); } }); this.properties = values; }).catch(error => { console.error('Error fetching properties:', error); }); }, changeValue(selectedOption) { if (!selectedOption) { return; } this.$emit('update:value', selectedOption.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjaxMultiple.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjaxMultiple.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _PropertySelectMultipleColoredTag_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PropertySelectMultipleColoredTag.vue */ "./src/components/Editor/Properties/PropertySelectMultipleColoredTag.vue"); /* harmony import */ var _PropertySelectMultipleColoredOption_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PropertySelectMultipleColoredOption.vue */ "./src/components/Editor/Properties/PropertySelectMultipleColoredOption.vue"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! html-entities */ "./node_modules/html-entities/lib/index.js"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(html_entities__WEBPACK_IMPORTED_MODULE_8__); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelectAjaxMultiple', components: { PropertySelectMultipleColoredOption: _PropertySelectMultipleColoredOption_vue__WEBPACK_IMPORTED_MODULE_3__["default"], PropertySelectMultipleColoredTag: _PropertySelectMultipleColoredTag_vue__WEBPACK_IMPORTED_MODULE_2__["default"], // eslint-disable-next-line vue/no-reserved-component-names NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcSelect, InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_5__["default"] }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__["default"]], props: { url: { type: String, required: false }, coloredOptions: { type: Boolean, default: false }, closeOnSelect: { type: Boolean, default: false } }, data() { return { properties: [], selectionData: [] }; }, computed: { display() { return !(this.isReadOnly && this.selectionData.length === 0); }, options() { return this.properties; } }, mounted() { this.fetchProperties(); }, created() { if (this.value && typeof this.value === 'string') { let items = this.value.split(';'); for (const category of items) { var _this$options$find; // Create and select pseudo option if is not yet known const option = (_this$options$find = this.options.find(option => option.value === category)) !== null && _this$options$find !== void 0 ? _this$options$find : { label: category, value: category }; this.selectionData.push(option); } } else if (Symbol.iterator in Object(this.value)) { for (const category of this.value) { var _this$options$find2; // Create and select pseudo option if is not yet known const option = (_this$options$find2 = this.options.find(option => option.value === category)) !== null && _this$options$find2 !== void 0 ? _this$options$find2 : { label: category, value: category }; this.selectionData.push(option); } } }, methods: { fetchProperties() { const ajaxUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_6__.generateUrl)(this.url); _nextcloud_axios__WEBPACK_IMPORTED_MODULE_7__["default"].get(ajaxUrl).then(response => { let results = JSON.parse(response.data); let values = []; results.forEach(result => { if (result.nom) { let v = (0,html_entities__WEBPACK_IMPORTED_MODULE_8__.decode)(result.nom); values.push({ value: v, label: v }); } else if (result.description) { let v = (0,html_entities__WEBPACK_IMPORTED_MODULE_8__.decode)(result.description); values.push({ value: v, label: v }); } else if (result.reference) { let v = (0,html_entities__WEBPACK_IMPORTED_MODULE_8__.decode)(result.reference); values.push({ value: v, label: v }); } }); this.properties = values; }).catch(error => { console.error('Error fetching properties:', error); }); }, unselectValue(value) { if (!value) { return; } this.$emit('remove-single-value', value.value); this.selectionData.splice(this.selectionData.findIndex(option => option.value === value.value), 1); // store removed custom options to keep it in the option list const options = this.propModel.options.slice(); if (!options.find(option => option.value === value.value)) { if (!this.customLabelBuffer) { this.customLabelBuffer = []; } this.customLabelBuffer.push(value); } }, tag(value) { if (!value) { return; } // budget deselectFromDropdown since the vue-select implementation doesn't work if (this.selectionData.find(option => option.value === value.value)) { this.selectionData.splice(this.selectionData.findIndex(option => option.value === value.value), 1); } this.selectionData.push(value); this.$emit('add-single-value', value.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectArticle.vue?vue&type=script&lang=js": /*!************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectArticle.vue?vue&type=script&lang=js ***! \************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _PropertySelectMultipleColoredTag_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PropertySelectMultipleColoredTag.vue */ "./src/components/Editor/Properties/PropertySelectMultipleColoredTag.vue"); /* harmony import */ var _PropertySelectMultipleColoredOption_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PropertySelectMultipleColoredOption.vue */ "./src/components/Editor/Properties/PropertySelectMultipleColoredOption.vue"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! html-entities */ "./node_modules/html-entities/lib/index.js"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(html_entities__WEBPACK_IMPORTED_MODULE_8__); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelectArticle', components: { PropertySelectMultipleColoredOption: _PropertySelectMultipleColoredOption_vue__WEBPACK_IMPORTED_MODULE_3__["default"], PropertySelectMultipleColoredTag: _PropertySelectMultipleColoredTag_vue__WEBPACK_IMPORTED_MODULE_2__["default"], // eslint-disable-next-line vue/no-reserved-component-names NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcSelect, InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_5__["default"] }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__["default"]], props: { url: { type: String, required: false }, coloredOptions: { type: Boolean, default: false }, closeOnSelect: { type: Boolean, default: false } }, data() { return { properties: [], selectionData: [] }; }, computed: { display() { return !(this.isReadOnly && this.selectionData.length === 0); }, options() { return this.properties; } }, mounted() { this.fetchProperties(); }, created() { if (this.value && typeof this.value === 'string') { let items = this.value.split(';'); for (const category of items) { var _this$options$find; // Create and select pseudo option if is not yet known const option = (_this$options$find = this.options.find(option => option.value == category)) !== null && _this$options$find !== void 0 ? _this$options$find : { label: category, value: category }; this.selectionData.push(option); } } else if (Symbol.iterator in Object(this.value)) { for (const category of this.value) { var _this$options$find2; // Create and select pseudo option if is not yet known const option = (_this$options$find2 = this.options.find(option => option.value == category)) !== null && _this$options$find2 !== void 0 ? _this$options$find2 : { label: category, value: category }; this.selectionData.push(option); } } }, methods: { fetchProperties() { const ajaxUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_6__.generateUrl)(this.url); _nextcloud_axios__WEBPACK_IMPORTED_MODULE_7__["default"].get(ajaxUrl).then(response => { let results = JSON.parse(response.data); let values = []; results.forEach(result => { let inputValue = (0,html_entities__WEBPACK_IMPORTED_MODULE_8__.decode)(result.reference); let inputLabel = (0,html_entities__WEBPACK_IMPORTED_MODULE_8__.decode)(result.reference); values.push({ value: inputValue.toString(), label: inputLabel }); }); this.properties = values; }).catch(error => { console.error('Error fetching properties:', error); }); }, unselectValue(value) { if (!value) { return; } this.$emit('remove-single-value', value.value); this.selectionData.splice(this.selectionData.findIndex(option => option.value == value.value), 1); // store removed custom options to keep it in the option list const options = this.propModel.options.slice(); if (!options.find(option => option.value == value.value)) { if (!this.customLabelBuffer) { this.customLabelBuffer = []; } this.customLabelBuffer.push(value); } }, tag(value) { if (!value) { return; } // budget deselectFromDropdown since the vue-select implementation doesn't work if (this.selectionData.find(option => option.value == value.value)) { this.selectionData.splice(this.selectionData.findIndex(option => option.value == value.value), 1); } this.selectionData.push(value); this.$emit('add-single-value', value.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectClient.vue?vue&type=script&lang=js": /*!***********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectClient.vue?vue&type=script&lang=js ***! \***********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! html-entities */ "./node_modules/html-entities/lib/index.js"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(html_entities__WEBPACK_IMPORTED_MODULE_5__); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelectClient', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcSelect, InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, props: { url: { type: String, required: false } }, data() { return { properties: [], // Data to populate the dropdown selectedProperty: null // Currently selected property }; }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__["default"]], computed: { display() { return true; }, options() { return this.properties; }, selectedValue() { const value = this.value || this.propModel.defaultValue; return this.properties.find(option => option.value.toString() === value); } }, mounted() { this.fetchProperties(); // Fetch data when the component is mounted }, methods: { fetchProperties() { const ajaxUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_3__.generateUrl)(this.url); _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__["default"].get(ajaxUrl).then(response => { let results = JSON.parse(response.data); let values = []; results.forEach(result => { let inputValue = (0,html_entities__WEBPACK_IMPORTED_MODULE_5__.decode)(result.id); let prenomValue = result.prenom; let fullNameValue = result.nom; if (prenomValue !== "" && prenomValue !== "-") { fullNameValue = prenomValue; } let inputLabel = (0,html_entities__WEBPACK_IMPORTED_MODULE_5__.decode)(fullNameValue); values.push({ value: inputValue.toString(), label: inputLabel }); }); this.properties = values; }).catch(error => { console.error('Error fetching properties:', error); }); }, changeValue(selectedOption) { if (!selectedOption) { return; } this.$emit('update:value', selectedOption.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectLieu.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectLieu.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! html-entities */ "./node_modules/html-entities/lib/index.js"); /* harmony import */ var html_entities__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(html_entities__WEBPACK_IMPORTED_MODULE_5__); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelectLieu', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcSelect, InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, props: { url: { type: String, required: false } }, data() { return { properties: [], // Data to populate the dropdown selectedProperty: null // Currently selected property }; }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__["default"]], computed: { display() { return true; }, options() { return this.properties; }, selectedValue() { const value = this.value || this.propModel.defaultValue; return this.properties.find(option => option.value.toString() === value); } }, mounted() { this.fetchProperties(); // Fetch data when the component is mounted }, methods: { fetchProperties() { const ajaxUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_3__.generateUrl)(this.url); _nextcloud_axios__WEBPACK_IMPORTED_MODULE_4__["default"].get(ajaxUrl).then(response => { let results = JSON.parse(response.data); let values = []; results.forEach(result => { let inputValue = (0,html_entities__WEBPACK_IMPORTED_MODULE_5__.decode)(result.id); let inputLabel = (0,html_entities__WEBPACK_IMPORTED_MODULE_5__.decode)(result.nom); values.push({ value: inputValue.toString(), label: inputLabel }); }); this.properties = values; }).catch(error => { console.error('Error fetching properties:', error); }); }, changeValue(selectedOption) { if (!selectedOption) { return; } this.$emit('update:value', selectedOption.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultiple.vue?vue&type=script&lang=js": /*!*************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultiple.vue?vue&type=script&lang=js ***! \*************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _PropertySelectMultipleColoredTag_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PropertySelectMultipleColoredTag.vue */ "./src/components/Editor/Properties/PropertySelectMultipleColoredTag.vue"); /* harmony import */ var _PropertySelectMultipleColoredOption_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PropertySelectMultipleColoredOption.vue */ "./src/components/Editor/Properties/PropertySelectMultipleColoredOption.vue"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelectMultiple', components: { PropertySelectMultipleColoredOption: _PropertySelectMultipleColoredOption_vue__WEBPACK_IMPORTED_MODULE_3__["default"], PropertySelectMultipleColoredTag: _PropertySelectMultipleColoredTag_vue__WEBPACK_IMPORTED_MODULE_2__["default"], // eslint-disable-next-line vue/no-reserved-component-names NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcSelect, InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_5__["default"] }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_0__["default"]], props: { coloredOptions: { type: Boolean, default: false }, closeOnSelect: { type: Boolean, default: false } }, data() { return { selectionData: [] }; }, computed: { display() { return !(this.isReadOnly && this.selectionData.length === 0); }, options() { const options = this.propModel.options.slice(); for (const category of (_this$selectionData = this.selectionData) !== null && _this$selectionData !== void 0 ? _this$selectionData : []) { var _this$selectionData; if (options.find(option => option.value === category.value)) { continue; } // Add pseudo options for unknown values options.push({ value: category.value, label: category.label }); } for (const category of this.value) { if (!options.find(option => option.value === category) && category !== undefined) { options.splice(options.findIndex(options => options.value === category), 1); } } if (this.customLabelBuffer) { for (const category of this.customLabelBuffer) { if (!options.find(option => option.value === category.value)) { options.push(category); } } } return options.sort((a, b) => { return a.label.localeCompare(b.label, (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_4__.getLocale)().replace('_', '-'), { sensitivity: 'base' }); }); } }, created() { for (const category of this.value) { var _this$options$find; // Create and select pseudo option if is not yet known const option = (_this$options$find = this.options.find(option => option.value === category)) !== null && _this$options$find !== void 0 ? _this$options$find : { label: category, value: category }; this.selectionData.push(option); } }, methods: { unselectValue(value) { if (!value) { return; } this.$emit('remove-single-value', value.value); this.selectionData.splice(this.selectionData.findIndex(option => option.value === value.value), 1); // store removed custom options to keep it in the option list const options = this.propModel.options.slice(); if (!options.find(option => option.value === value.value)) { if (!this.customLabelBuffer) { this.customLabelBuffer = []; } this.customLabelBuffer.push(value); } }, tag(value) { if (!value) { return; } // budget deselectFromDropdown since the vue-select implementation doesn't work if (this.selectionData.find(option => option.value === value.value)) { this.selectionData.splice(this.selectionData.findIndex(option => option.value === value.value), 1); } this.selectionData.push(value); this.$emit('add-single-value', value.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultipleColoredOption.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultipleColoredOption.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_uidToColor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../utils/uidToColor.js */ "./src/utils/uidToColor.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/logger.js */ "./src/utils/logger.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelectMultipleColoredOption', props: { option: { type: [String, Object], required: true }, closeable: { type: Boolean, default: false } }, emits: ['deselect'], computed: { label() { const option = this.option; _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].debug('Option render', { option }); if (typeof this.option === 'string') { return this.option; } return this.option.label; }, colorObject() { return (0,_utils_uidToColor_js__WEBPACK_IMPORTED_MODULE_0__.uidToColor)(this.label); }, color() { const color = this.colorObject; return "rgb(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ")"); } }, methods: { deselect() { this.$emit('deselect', this.option); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultipleColoredTag.vue?vue&type=script&lang=js": /*!***********************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultipleColoredTag.vue?vue&type=script&lang=js ***! \***********************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_uidToColor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../utils/uidToColor.js */ "./src/utils/uidToColor.js"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../utils/color.js */ "./src/utils/color.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertySelectMultipleColoredTag', props: { option: { type: [String, Object], required: true }, search: { type: String, default: undefined }, remove: { type: Function, default: () => {} } }, computed: { label() { if (typeof this.option === 'string') { return this.option; } return this.option.label; }, colorObject() { if (typeof this.option === 'string') { return (0,_utils_uidToColor_js__WEBPACK_IMPORTED_MODULE_0__.uidToColor)(this.option); } return (0,_utils_uidToColor_js__WEBPACK_IMPORTED_MODULE_0__.uidToColor)(this.option.label); }, borderColor() { const color = this.colorObject; return "rgb(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ")"); }, color() { const color = this.colorObject; return "rgba(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ",0.7)"); }, textColor() { const color = this.colorObject; return (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.generateTextColorForRGB)({ red: color.r, green: color.g, blue: color.b }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyText.vue?vue&type=script&lang=js": /*!***************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyText.vue?vue&type=script&lang=js ***! \***************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _directives_autosize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../directives/autosize.js */ "./src/directives/autosize.js"); /* harmony import */ var _mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../mixins/PropertyMixin.js */ "./src/mixins/PropertyMixin.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/InformationVariant.vue */ "./node_modules/vue-material-design-icons/InformationVariant.vue"); /* harmony import */ var _mixins_PropertyLinksMixin_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../mixins/PropertyLinksMixin.js */ "./src/mixins/PropertyLinksMixin.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertyText', directives: { autosize: _directives_autosize_js__WEBPACK_IMPORTED_MODULE_0__["default"], Linkify: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_2__.Linkify, InformationVariant: vue_material_design_icons_InformationVariant_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }, mixins: [_mixins_PropertyMixin_js__WEBPACK_IMPORTED_MODULE_1__["default"], _mixins_PropertyLinksMixin_js__WEBPACK_IMPORTED_MODULE_4__["default"]], computed: { display() { if (this.isReadOnly) { if (typeof this.value !== 'string') { return false; } if (this.value.trim() === '') { return false; } } return true; }, /** * Returns the default number of rows for a textarea. * This is used to give the description field an automatic size 2 rows * * @return {number} */ rows() { return this.propModel.defaultNumberOfRows || 1; } }, methods: { changeValue(event) { if (event.target.value.trim() === '') { this.$emit('update:value', null); } else { this.$emit('update:value', event.target.value); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyTitle.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyTitle.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _directives_focus_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../directives/focus.js */ "./src/directives/focus.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertyTitle', directives: { focus: _directives_focus_js__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { isReadOnly: { type: Boolean, required: true }, value: { type: String, default: '' } }, methods: { changeValue(event) { this.$emit('update:value', event.target.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyTitleTimePicker.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyTitleTimePicker.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _Shared_DatePicker_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Shared/DatePicker.vue */ "./src/components/Shared/DatePicker.vue"); /* harmony import */ var vue_material_design_icons_Web_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/Web.vue */ "./node_modules/vue-material-design-icons/Web.vue"); /* harmony import */ var vue_material_design_icons_Calendar_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/Calendar.vue */ "./node_modules/vue-material-design-icons/Calendar.vue"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PropertyTitleTimePicker', components: { DatePicker: _Shared_DatePicker_vue__WEBPACK_IMPORTED_MODULE_1__["default"], IconTimezone: vue_material_design_icons_Web_vue__WEBPACK_IMPORTED_MODULE_2__["default"], CalendarIcon: vue_material_design_icons_Calendar_vue__WEBPACK_IMPORTED_MODULE_3__["default"], NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_4__.NcCheckboxRadioSwitch }, props: { /** * Whether or not the editor is viewed in read-only */ isReadOnly: { type: Boolean, required: true }, /** * Start date of the event */ startDate: { type: Date, required: true }, /** * Timezone of the start date */ startTimezone: { type: String, required: true }, /** * End date of the event */ endDate: { type: Date, required: true }, /** * Timezone of the end date */ endTimezone: { type: String, required: true }, /** * Whether or not the event is all-day */ isAllDay: { type: Boolean, required: true }, /** * Whether or not the user can toggle the all-day property * This is set to false, whenever this event is part of a recurrence-set */ canModifyAllDay: { type: Boolean, required: true }, /** * The current timezone of the user * This is used to highlight if the event is in a different timezone */ userTimezone: { type: String, required: true }, /** * Whether to append the datepickers to body or not. * Necessary in the AppSidebar, otherwise it will be cut off be the * AppSidebar edges. */ appendToBody: { type: Boolean, default: false } }, data() { return { showStartTimezone: false, showEndTimezone: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_5__.mapState)({ locale: state => state.settings.momentLocale }), /** * Tooltip for the All-day checkbox. * If the all-day checkbox is disabled, this tooltip gives an explanation to the user * why it is disabled * * @return {string|null} */ allDayTooltip() { if (this.canModifyAllDay) { return null; } if (this.isReadOnly) { return null; } return this.$t('calendar', 'Cannot modify all-day setting for events that are part of a recurrence-set.'); }, /** * * @return {string} */ formattedStart() { if (this.isAllDay) { return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(this.startDate).locale(this.locale).format('ll'); } return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(this.startDate).locale(this.locale).format('lll'); }, /** * * @return {string} */ formattedEnd() { if (this.isAllDay) { return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(this.endDate).locale(this.locale).format('ll'); } return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(this.endDate).locale(this.locale).format('lll'); }, /** * @return {boolean} */ highlightStartTimezone() { return this.startTimezone !== this.userTimezone; }, /** * @return {boolean} */ highlightEndTimezone() { return this.endTimezone !== this.userTimezone; }, /** * True if the event is an all day event, starts and ends on the same date * * @return {boolean} */ isAllDayOneDayEvent() { return this.isAllDay && this.startDate.getDate() === this.endDate.getDate() && this.startDate.getMonth() === this.endDate.getMonth() && this.startDate.getFullYear() === this.endDate.getFullYear(); } }, methods: { /** * Update the start date * * @param {Date} value The new start date */ changeStart(value) { this.$emit('update-start-date', value); }, /** * Updates the timezone of the start date * * @param {string} value The new start timezone */ changeStartTimezone(value) { // If the value didn't change, value is null if (!value) { return; } this.$emit('update-start-timezone', value); }, /** * Update the end date * * @param {Date} value The new end date */ changeEnd(value) { this.$emit('update-end-date', value); }, /** * Updates the timezone of the end date * * @param {string} value The new end timezone */ changeEndTimezone(value) { // If the value didn't change, value is null if (!value) { return; } this.$emit('update-end-timezone', value); }, /** * Toggles the all-day state of an event */ toggleAllDay() { if (!this.canModifyAllDay) { return; } this.$emit('toggle-all-day'); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/Repeat.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/Repeat.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _RepeatEndRepeat_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RepeatEndRepeat.vue */ "./src/components/Editor/Repeat/RepeatEndRepeat.vue"); /* harmony import */ var _RepeatFreqWeeklyOptions_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RepeatFreqWeeklyOptions.vue */ "./src/components/Editor/Repeat/RepeatFreqWeeklyOptions.vue"); /* harmony import */ var _RepeatFreqMonthlyOptions_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RepeatFreqMonthlyOptions.vue */ "./src/components/Editor/Repeat/RepeatFreqMonthlyOptions.vue"); /* harmony import */ var _RepeatFreqYearlyOptions_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RepeatFreqYearlyOptions.vue */ "./src/components/Editor/Repeat/RepeatFreqYearlyOptions.vue"); /* harmony import */ var _RepeatFreqInterval_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./RepeatFreqInterval.vue */ "./src/components/Editor/Repeat/RepeatFreqInterval.vue"); /* harmony import */ var _RepeatUnsupportedWarning_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./RepeatUnsupportedWarning.vue */ "./src/components/Editor/Repeat/RepeatUnsupportedWarning.vue"); /* harmony import */ var _RepeatExceptionWarning_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./RepeatExceptionWarning.vue */ "./src/components/Editor/Repeat/RepeatExceptionWarning.vue"); /* harmony import */ var _RepeatSummary_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./RepeatSummary.vue */ "./src/components/Editor/Repeat/RepeatSummary.vue"); /* harmony import */ var vue_material_design_icons_Repeat_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-material-design-icons/Repeat.vue */ "./node_modules/vue-material-design-icons/Repeat.vue"); /* harmony import */ var vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue-material-design-icons/Pencil.vue */ "./node_modules/vue-material-design-icons/Pencil.vue"); /* harmony import */ var vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! vue-material-design-icons/Check.vue */ "./node_modules/vue-material-design-icons/Check.vue"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'Repeat', components: { RepeatSummary: _RepeatSummary_vue__WEBPACK_IMPORTED_MODULE_7__["default"], RepeatExceptionWarning: _RepeatExceptionWarning_vue__WEBPACK_IMPORTED_MODULE_6__["default"], RepeatFreqInterval: _RepeatFreqInterval_vue__WEBPACK_IMPORTED_MODULE_4__["default"], RepeatFreqYearlyOptions: _RepeatFreqYearlyOptions_vue__WEBPACK_IMPORTED_MODULE_3__["default"], RepeatFreqMonthlyOptions: _RepeatFreqMonthlyOptions_vue__WEBPACK_IMPORTED_MODULE_2__["default"], RepeatFreqWeeklyOptions: _RepeatFreqWeeklyOptions_vue__WEBPACK_IMPORTED_MODULE_1__["default"], RepeatEndRepeat: _RepeatEndRepeat_vue__WEBPACK_IMPORTED_MODULE_0__["default"], RepeatUnsupportedWarning: _RepeatUnsupportedWarning_vue__WEBPACK_IMPORTED_MODULE_5__["default"], RepeatIcon: vue_material_design_icons_Repeat_vue__WEBPACK_IMPORTED_MODULE_8__["default"], Pencil: vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_9__["default"], Check: vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_10__["default"], Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_11__.NcActions, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_11__.NcActionButton }, props: { /** * The calendar-object instance */ calendarObjectInstance: { type: Object, required: true }, /** * The recurrence-rule to display */ recurrenceRule: { type: Object, required: true }, /** * Whether or not the event is read-only */ isReadOnly: { type: Boolean, required: true }, /** * Whether or not the user is editing the master-item * If so, we are enforcing "This and all future" and * don't allow to just save this occurrence */ isEditingMasterItem: { type: Boolean, required: true }, /** * Whether or not this instance of the event is a recurrence-exception. * If yes, you can't modify the recurrence-rule */ isRecurrenceException: { type: Boolean, required: true } }, data() { return { showOptions: false }; }, computed: { /** * Whether or not this event is recurring * * @return {boolean} */ isRepeating() { return this.recurrenceRule.frequency !== 'NONE'; }, /** * Whether or not this event is recurring weekly * * @return {boolean} */ isFreqWeekly() { return this.recurrenceRule.frequency === 'WEEKLY'; }, /** * Whether or not this event is recurring monthly * * @return {boolean} */ isFreqMonthly() { return this.recurrenceRule.frequency === 'MONTHLY'; }, /** * Whether or not this event is recurring yearly * * @return {boolean} */ isFreqYearly() { return this.recurrenceRule.frequency === 'YEARLY'; }, /** * The name of the icon for the toggle options button * * @return {string} */ toggleIcon() { if (this.showOptions) { return 'Check'; } return 'Pencil'; }, /** * The text of the toggle options button * * @return {string} */ toggleTitle() { if (this.showOptions) { return this.t('calendar', 'Save'); } return this.t('calendar', 'Edit'); } }, methods: { /** * Changes the interval of recurrence * * @param {number} interval Any positive integer */ changeInterval(interval) { this.$store.commit('changeRecurrenceInterval', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, interval }); this.modified(); }, /** * Changes the frequency of recurrence * * @param {string} frequency Allowed values: NONE, DAILY, WEEKLY, MONTHLY, YEARLY */ changeFrequency(frequency) { this.$store.dispatch('changeRecurrenceFrequency', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, frequency }); this.modified(); }, /** * Adds a day to the ByDay part of the recurrence-rule * * @param {string} byDay Day to add */ addByDay(byDay) { this.$store.commit('addByDayToRecurrenceRule', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, byDay }); this.modified(); }, /** * Removes a day from the ByDay part of the recurrence-rule * * @param {string} byDay Day to remove */ removeByDay(byDay) { this.$store.commit('removeByDayFromRecurrenceRule', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, byDay }); this.modified(); }, /** * Adds a month-day to the ByMonthDay part of the recurrence-rule * * @param {string} byMonthDay Month-day to add */ addByMonthDay(byMonthDay) { this.$store.commit('addByMonthDayToRecurrenceRule', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, byMonthDay }); this.modified(); }, /** * Removes a month-day from the ByMonthDay part of the recurrence-rule * * @param {string} byMonthDay Month-day to remove */ removeByMonthDay(byMonthDay) { this.$store.commit('removeByMonthDayFromRecurrenceRule', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, byMonthDay }); this.modified(); }, /** * Adds a month to the ByMonth part of the recurrence-rule * * @param {string} byMonth Month to add */ addByMonth(byMonth) { this.$store.commit('addByMonthToRecurrenceRule', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, byMonth }); this.modified(); }, /** * Removes a month-day from the ByMonth part of the recurrence-rule * * @param {string} byMonth Month to remove */ removeByMonth(byMonth) { this.$store.commit('removeByMonthFromRecurrenceRule', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, byMonth }); this.modified(); }, /** * Overrides the entire byDay-list of the recurrence-rule * * @param {string[]} byDay The new by-day-list to use */ setByDay(byDay) { this.$store.commit('changeRecurrenceByDay', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, byDay }); this.modified(); }, /** * Overrides the set-position of the recurrence-rule * RFC5545 technically allows a list of set-position, * we only allow one value at most * * @param {number} bySetPosition The new By-set-position part to set */ setBySetPosition(bySetPosition) { this.$store.commit('changeRecurrenceBySetPosition', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, bySetPosition }); this.modified(); }, /** * Changes the monthly recurrence-editor from the selection of monthdays * to the selection of a relative position within the month */ changeToBySetPositionMonthly() { this.$store.dispatch('changeMonthlyRecurrenceFromByDayToBySetPosition', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule }); this.modified(); }, /** * Changes the monthly recurrence-editor from the relative position within the month * to the selection of monthdays */ changeToByDayMonthly() { this.$store.dispatch('changeMonthlyRecurrenceFromBySetPositionToByDay', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule }); this.modified(); }, /** * Enables the setting of a relative position within the month in the yearly recurrence-editor */ enableBySetPositionYearly() { this.$store.dispatch('enableYearlyRecurrenceBySetPosition', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule }); this.modified(); }, /** * Disables the setting of a relative position within the month in the yearly recurrence-editor */ disableBySetPositionYearly() { this.$store.dispatch('disableYearlyRecurrenceBySetPosition', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule }); this.modified(); }, /** * Sets the recurrence-set to infinite recurrences */ setInfinite() { this.$store.dispatch('setRecurrenceToInfinite', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule }); this.modified(); }, /** * */ changeToUntil() { this.$store.dispatch('enableRecurrenceLimitByUntil', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule }); this.modified(); }, /** * Sets the recurrence-set to end on a specific date. * Unlike DTEND, which is the exclusive end, * UNTIL is defined as the inclusive end of the recurrence-set * * @param {Date} until Date to set as new end of recurrence-set */ setUntil(until) { this.$store.commit('changeRecurrenceUntil', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, until }); this.modified(); }, /** * */ changeToCount() { this.$store.dispatch('enableRecurrenceLimitByCount', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule }); this.modified(); }, /** * Sets the recurrence-set to end on a specific date * * @param {number} count New number of recurrences to set */ setCount(count) { this.$store.commit('changeRecurrenceCount', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule, count }); this.modified(); }, /** * */ modified() { if (this.recurrenceRule.isUnsupported) { this.$store.commit('markRecurrenceRuleAsSupported', { calendarObjectInstance: this.calendarObjectInstance, recurrenceRule: this.recurrenceRule }); } if (!this.isEditingMasterItem) { this.$emit('force-this-and-all-future'); } }, /** * Toggle visibility of the options */ toggleOptions() { this.showOptions = !this.showOptions; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatEndRepeat.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatEndRepeat.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _Shared_DatePicker_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Shared/DatePicker.vue */ "./src/components/Shared/DatePicker.vue"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatEndRepeat', components: { DatePicker: _Shared_DatePicker_vue__WEBPACK_IMPORTED_MODULE_0__["default"], NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcSelect }, props: { /** * The calendar-object instance */ calendarObjectInstance: { type: Object, required: true }, count: { type: Number, default: null }, until: { type: Date, default: null } }, computed: { /** * The minimum date the user can select in the until date-picker * * @return {Date} */ minimumDate() { return this.calendarObjectInstance.startDate; }, /** * The maximum date the user can select in the until date-picker * * @return {Date} */ maximumDate() { return new Date(this.$store.state.davRestrictions.maximumDate); }, /** * Whether or not this event is recurring until a given date * * @return {boolean} */ isUntil() { return this.count === null && this.until !== null; }, /** * Whether or not this event is recurring after a given amount of occurrences * * @return {boolean} */ isCount() { return this.count !== null && this.until === null; }, /** * Label for time/times * * @return {string} */ occurrencesLabel() { return this.$n('calendar', 'time', 'times', this.count); }, /** * Options for recurrence-end * * @return {object[]} */ options() { return [{ label: this.$t('calendar', 'never'), value: 'never' }, { label: this.$t('calendar', 'on date'), value: 'until' }, { label: this.$t('calendar', 'after'), value: 'count' }]; }, /** * The selected option for the recurrence-end * * @return {object} */ selectedOption() { if (this.count !== null) { return this.options.find(option => option.value === 'count'); } else if (this.until !== null) { return this.options.find(option => option.value === 'until'); } else { return this.options.find(option => option.value === 'never'); } } }, methods: { /** * Changes the type of recurrence-end * Whether it ends never, on a given date or after an amount of occurrences * * @param {object} value The new type of recurrence-end to select */ changeEndType(value) { console.debug(value); if (!value) { return; } switch (value.value) { case 'until': this.$emit('change-to-until'); break; case 'count': this.$emit('change-to-count'); break; case 'never': default: this.$emit('set-infinite'); } }, /** * Changes the until-date of this recurrence-set * * @param {Date} date The new date to set as end */ changeUntil(date) { this.$emit('set-until', date); }, /** * Changes the number of occurrences in this recurrence-set * * @param {Event} event The input event */ changeCount(event) { const minimumValue = parseInt(event.target.min, 10); const maximumValue = parseInt(event.target.max, 10); const selectedValue = parseInt(event.target.value, 10); if (selectedValue >= minimumValue && selectedValue <= maximumValue) { this.$emit('set-count', selectedValue); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatExceptionWarning.vue?vue&type=script&lang=js": /*!*********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatExceptionWarning.vue?vue&type=script&lang=js ***! \*********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatExceptionWarning' }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFirstLastSelect.vue?vue&type=script&lang=js": /*!********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFirstLastSelect.vue?vue&type=script&lang=js ***! \********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatFirstLastSelect', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect }, props: { /** * */ bySetPosition: { type: Number, default: null }, /** * */ disabled: { type: Boolean, required: true } }, computed: { options() { return [{ label: this.$t('calendar', 'first'), value: 1 }, { label: this.$t('calendar', 'second'), value: 2 }, { label: this.$t('calendar', 'third'), value: 3 }, { label: this.$t('calendar', 'fourth'), value: 4 }, { label: this.$t('calendar', 'fifth'), value: 5 }, { label: this.$t('calendar', 'second to last'), value: -2 }, { label: this.$t('calendar', 'last'), value: -1 }]; }, selected() { return this.options.find(option => option.value === this.bySetPosition); } }, methods: { select(value) { if (!value) { return; } console.debug(value); this.$emit('change', value.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqInterval.vue?vue&type=script&lang=js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqInterval.vue?vue&type=script&lang=js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _RepeatFreqSelect_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RepeatFreqSelect.vue */ "./src/components/Editor/Repeat/RepeatFreqSelect.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatFreqInterval', components: { RepeatFreqSelect: _RepeatFreqSelect_vue__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { frequency: { type: String, required: true }, interval: { type: Number, required: true } }, computed: { repeatEveryLabel() { console.debug(this.frequency); if (this.frequency === 'NONE') { return this.$t('calendar', 'Repeat'); } return this.$t('calendar', 'Repeat every'); }, isIntervalDisabled() { return this.frequency === 'NONE'; } }, methods: { changeFrequency(value) { this.$emit('change-frequency', value); }, /** * * @param {Event} event The Input-event triggered when modifying the input */ changeInterval(event) { const minimumValue = parseInt(event.target.min, 10); const maximumValue = parseInt(event.target.max, 10); const selectedValue = parseInt(event.target.value, 10); if (selectedValue >= minimumValue && selectedValue <= maximumValue) { this.$emit('change-interval', selectedValue); } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqMonthlyOptions.vue?vue&type=script&lang=js": /*!***********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqMonthlyOptions.vue?vue&type=script&lang=js ***! \***********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _RepeatFirstLastSelect_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RepeatFirstLastSelect.vue */ "./src/components/Editor/Repeat/RepeatFirstLastSelect.vue"); /* harmony import */ var _RepeatOnTheSelect_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RepeatOnTheSelect.vue */ "./src/components/Editor/Repeat/RepeatOnTheSelect.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatFreqMonthlyOptions', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, RepeatOnTheSelect: _RepeatOnTheSelect_vue__WEBPACK_IMPORTED_MODULE_2__["default"], RepeatFirstLastSelect: _RepeatFirstLastSelect_vue__WEBPACK_IMPORTED_MODULE_1__["default"], ActionRadio: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionRadio }, props: { /** * */ byDay: { type: Array, required: true }, /** * */ byMonthDay: { type: Array, required: true }, /** * */ bySetPosition: { type: Number, default: null } }, computed: { /** * @return {object[]} */ byMonthDayOptions() { const options = []; for (let i = 1; i <= 31; i++) { options.push({ label: i, value: String(i), selected: this.byMonthDay.indexOf(String(i)) !== -1 }); } return options; }, /** * @return {boolean} */ byMonthDayEnabled() { return this.byMonthDay.length > 0; }, /** * @return {string} */ radioInputId() { return this._uid + '-radio-select'; } }, methods: { /** * * @param {string} byMonthDay The month-day to toggle */ toggleByMonthDay(byMonthDay) { if (this.byMonthDay.indexOf(byMonthDay) === -1) { this.$emit('add-by-month-day', byMonthDay); } else { if (this.byMonthDay.length > 1) { this.$emit('remove-by-month-day', byMonthDay); } } }, enableByMonthDay() { if (this.byMonthDayEnabled) { return; } this.$emit('change-to-by-day'); }, enableBySetPosition() { if (!this.byMonthDayEnabled) { return; } this.$emit('change-to-by-set-position'); }, changeByDay(value) { this.$emit('change-by-day', value); }, changeBySetPosition(value) { this.$emit('change-by-set-position', value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqSelect.vue?vue&type=script&lang=js": /*!***************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqSelect.vue?vue&type=script&lang=js ***! \***************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatFreqSelect', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect }, props: { freq: { type: String, required: true }, count: { type: Number, required: true } }, computed: { options() { return [{ label: this.$t('calendar', 'never'), freq: 'NONE' }, { label: this.$n('calendar', 'day', 'days', this.count), freq: 'DAILY' }, { label: this.$n('calendar', 'week', 'weeks', this.count), freq: 'WEEKLY' }, { label: this.$n('calendar', 'month', 'months', this.count), freq: 'MONTHLY' }, { label: this.$n('calendar', 'year', 'years', this.count), freq: 'YEARLY' }]; }, selected() { return this.options.find(o => o.freq === this.freq); } }, methods: { select(value) { if (!value) { return; } this.$emit('change', value.freq); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqWeeklyOptions.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqWeeklyOptions.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatFreqWeeklyOptions', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton }, props: { byDay: { type: Array, required: true } }, computed: { options() { const dayNamesMin = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.getDayNamesMin)(); return [{ label: dayNamesMin[1], value: 'MO', selected: this.byDay.includes('MO') }, { label: dayNamesMin[2], value: 'TU', selected: this.byDay.includes('TU') }, { label: dayNamesMin[3], value: 'WE', selected: this.byDay.includes('WE') }, { label: dayNamesMin[4], value: 'TH', selected: this.byDay.includes('TH') }, { label: dayNamesMin[5], value: 'FR', selected: this.byDay.includes('FR') }, { label: dayNamesMin[6], value: 'SA', selected: this.byDay.includes('SA') }, { label: dayNamesMin[0], value: 'SU', selected: this.byDay.includes('SU') }]; } }, methods: { toggleByDay(day) { if (this.byDay.indexOf(day) === -1) { this.$emit('add-by-day', day); } else { if (this.byDay.length > 1) { this.$emit('remove-by-day', day); } } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqYearlyOptions.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqYearlyOptions.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _RepeatFirstLastSelect_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RepeatFirstLastSelect.vue */ "./src/components/Editor/Repeat/RepeatFirstLastSelect.vue"); /* harmony import */ var _RepeatOnTheSelect_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RepeatOnTheSelect.vue */ "./src/components/Editor/Repeat/RepeatOnTheSelect.vue"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatFreqYearlyOptions', components: { ActionCheckbox: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionCheckbox, NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, RepeatFirstLastSelect: _RepeatFirstLastSelect_vue__WEBPACK_IMPORTED_MODULE_1__["default"], RepeatOnTheSelect: _RepeatOnTheSelect_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, props: { /** * */ byDay: { type: Array, required: true }, /** * */ byMonth: { type: Array, required: true }, /** * */ bySetPosition: { type: Number, default: null } }, computed: { options() { const monthNamesShort = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.getMonthNamesShort)(); console.debug(this.byMonth); return [{ label: monthNamesShort[0], value: 1, selected: this.byMonth.includes(1) }, { label: monthNamesShort[1], value: 2, selected: this.byMonth.includes(2) }, { label: monthNamesShort[2], value: 3, selected: this.byMonth.includes(3) }, { label: monthNamesShort[3], value: 4, selected: this.byMonth.includes(4) }, { label: monthNamesShort[4], value: 5, selected: this.byMonth.includes(5) }, { label: monthNamesShort[5], value: 6, selected: this.byMonth.includes(6) }, { label: monthNamesShort[6], value: 7, selected: this.byMonth.includes(7) }, { label: monthNamesShort[7], value: 8, selected: this.byMonth.includes(8) }, { label: monthNamesShort[8], value: 9, selected: this.byMonth.includes(9) }, { label: monthNamesShort[9], value: 10, selected: this.byMonth.includes(10) }, { label: monthNamesShort[10], value: 11, selected: this.byMonth.includes(11) }, { label: monthNamesShort[11], value: 12, selected: this.byMonth.includes(12) }]; }, /** * * * @return {boolean} */ isBySetPositionEnabled() { return this.bySetPosition !== null; } }, methods: { /** * * @param {string} byMonth The month to toggle */ toggleByMonth(byMonth) { if (this.byMonth.indexOf(byMonth) === -1) { this.$emit('add-by-month', byMonth); } else { if (this.byMonth.length > 1) { this.$emit('remove-by-month', byMonth); } } }, /** * Toggles the BySetPosition option for yearly */ toggleBySetPosition() { if (this.isBySetPositionEnabled) { this.$emit('disable-by-set-position'); } else { this.$emit('enable-by-set-position'); } }, changeByDay(value) { this.$emit('change-by-day', value); }, changeBySetPosition(value) { this.$emit('change-by-set-position', value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatOnTheSelect.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatOnTheSelect.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatOnTheSelect', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect }, props: { /** * */ byDay: { type: Array, required: true }, disabled: { type: Boolean, required: true } }, computed: { options() { const dayNames = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.getDayNames)(); return [{ label: dayNames[1], value: ['MO'] }, { label: dayNames[2], value: ['TU'] }, { label: dayNames[3], value: ['WE'] }, { label: dayNames[4], value: ['TH'] }, { label: dayNames[5], value: ['FR'] }, { label: dayNames[6], value: ['SA'] }, { label: dayNames[0], value: ['SU'] }, { label: this.$t('calendar', 'day'), value: ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'] }, { label: this.$t('calendar', 'weekday'), value: ['MO', 'TU', 'WE', 'TH', 'FR'] }, { label: this.$t('calendar', 'weekend day'), value: ['SU', 'SA'] }]; }, selected() { return this.options.find(option => option.value.slice().sort().join(',') === this.byDay.slice().sort().join(',')); } }, methods: { select(value) { if (!value) { return; } this.$emit('change', value.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatSummary.vue?vue&type=script&lang=js": /*!************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatSummary.vue?vue&type=script&lang=js ***! \************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _filters_recurrenceRuleFormat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../filters/recurrenceRuleFormat.js */ "./src/filters/recurrenceRuleFormat.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatSummary', filters: { formatRecurrenceRule: _filters_recurrenceRuleFormat_js__WEBPACK_IMPORTED_MODULE_0__["default"] }, props: { /** * The recurrence-rule object as defined on the eventComponent */ recurrenceRule: { type: Object, required: true } }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({ locale: state => state.settings.momentLocale }), /** * Returns whether or not to display the summary. * We do not want to show it if it doesn't repeat * * @return {boolean} */ display() { return this.recurrenceRule.frequency !== 'NONE'; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatUnsupportedWarning.vue?vue&type=script&lang=js": /*!***********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatUnsupportedWarning.vue?vue&type=script&lang=js ***! \***********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'RepeatUnsupportedWarning' }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceList.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceList.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _services_freeBusyService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../services/freeBusyService.js */ "./src/services/freeBusyService.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _NoAttendeesView_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../NoAttendeesView.vue */ "./src/components/Editor/NoAttendeesView.vue"); /* harmony import */ var _ResourceListSearch_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ResourceListSearch.vue */ "./src/components/Editor/Resources/ResourceListSearch.vue"); /* harmony import */ var _ResourceListItem_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ResourceListItem.vue */ "./src/components/Editor/Resources/ResourceListItem.vue"); /* harmony import */ var _OrganizerNoEmailError_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../OrganizerNoEmailError.vue */ "./src/components/Editor/OrganizerNoEmailError.vue"); /* harmony import */ var _utils_attendee_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../utils/attendee.js */ "./src/utils/attendee.js"); /* harmony import */ var vue_material_design_icons_MapMarker_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-material-design-icons/MapMarker.vue */ "./node_modules/vue-material-design-icons/MapMarker.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'ResourceList', components: { ResourceListItem: _ResourceListItem_vue__WEBPACK_IMPORTED_MODULE_5__["default"], NoAttendeesView: _NoAttendeesView_vue__WEBPACK_IMPORTED_MODULE_3__["default"], ResourceListSearch: _ResourceListSearch_vue__WEBPACK_IMPORTED_MODULE_4__["default"], OrganizerNoEmailError: _OrganizerNoEmailError_vue__WEBPACK_IMPORTED_MODULE_6__["default"], MapMarker: vue_material_design_icons_MapMarker_vue__WEBPACK_IMPORTED_MODULE_8__["default"] }, props: { isReadOnly: { type: Boolean, required: true }, calendarObjectInstance: { type: Object, required: true } }, data() { return { suggestedRooms: [] }; }, computed: { resources() { return this.calendarObjectInstance.attendees.filter(attendee => { return ['ROOM', 'RESOURCE'].includes(attendee.attendeeProperty.userType); }); }, attendees() { return this.calendarObjectInstance.attendees.filter(attendee => { return !['RESOURCE', 'ROOM'].includes(attendee.attendeeProperty.userType); }); }, noResourcesMessage() { return this.$t('calendar', 'No rooms or resources yet'); }, isListEmpty() { return this.resources.length === 0 && this.suggestedRooms.length === 0; }, alreadyInvitedEmails() { return this.resources.map(attendee => (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_7__.removeMailtoPrefix)(attendee.uri)); }, organizerDisplayName() { return (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_7__.organizerDisplayName)(this.calendarObjectInstance.organizer); }, hasUserEmailAddress() { var _this$$store$getters$; const emailAddress = (_this$$store$getters$ = this.$store.getters.getCurrentUserPrincipal) === null || _this$$store$getters$ === void 0 ? void 0 : _this$$store$getters$.emailAddress; return !!emailAddress; } }, watch: { resources() { this.loadRoomSuggestions(); } }, async mounted() { await this.loadRoomSuggestions(); }, methods: { addResource(_ref) { let { commonName, email, calendarUserType, language, timezoneId, roomAddress } = _ref; this.$store.commit('addAttendee', { calendarObjectInstance: this.calendarObjectInstance, commonName, uri: email, calendarUserType, participationStatus: 'NEEDS-ACTION', role: 'REQ-PARTICIPANT', rsvp: true, language, timezoneId, organizer: this.$store.getters.getCurrentUserPrincipal }); this.updateLocation(roomAddress); }, removeResource(resource) { this.$store.commit('removeAttendee', { calendarObjectInstance: this.calendarObjectInstance, attendee: resource }); }, async loadRoomSuggestions() { if (this.resources.length > 0) { this.suggestedRooms = []; return; } try { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].info('fetching suggestions for ' + this.attendees.length + ' attendees'); const query = { capacity: this.attendees.length }; const results = (await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.advancedPrincipalPropertySearch)(query)).map(principal => { var _principal$displaynam; return { commonName: principal.displayname, email: principal.email, calendarUserType: principal.calendarUserType, displayName: (_principal$displaynam = principal.displayname) !== null && _principal$displaynam !== void 0 ? _principal$displaynam : principal.email, isAvailable: true, roomAddress: principal.roomAddress, uri: principal.email, organizer: this.$store.getters.getCurrentUserPrincipal }; }); await (0,_services_freeBusyService_js__WEBPACK_IMPORTED_MODULE_1__.checkResourceAvailability)(results, this.$store.getters.getCurrentUserPrincipalEmail, this.calendarObjectInstance.eventComponent.startDate, this.calendarObjectInstance.eventComponent.endDate); _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].debug('availability of room suggestions fetched', { results }); // Take the first three available options this.suggestedRooms = results.filter(room => room.isAvailable).slice(0, 3); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].error('Could not find resources', { error }); this.suggestedRooms = []; } }, /** * Apply the location of the first resource to the event. * Has no effect if the location is already set or there are multiple resource. * * @param {string} location The location to apply */ updateLocation(location) { if (this.calendarObjectInstance.location || this.calendarObjectInstance.eventComponent.location) { return; } if (this.resources.length !== 1) { return; } this.$store.commit('changeLocation', { calendarObjectInstance: this.calendarObjectInstance, location }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListItem.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListItem.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _AvatarParticipationStatus_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../AvatarParticipationStatus.vue */ "./src/components/Editor/AvatarParticipationStatus.vue"); /* harmony import */ var _utils_attendee_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/attendee.js */ "./src/utils/attendee.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _models_resourceProps_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../models/resourceProps.js */ "./src/models/resourceProps.js"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony import */ var vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/Plus.vue */ "./node_modules/vue-material-design-icons/Plus.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'ResourceListItem', components: { AvatarParticipationStatus: _AvatarParticipationStatus_vue__WEBPACK_IMPORTED_MODULE_1__["default"], ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ActionCaption: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionCaption, ActionSeparator: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionSeparator, Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, Delete: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_6__["default"], Plus: vue_material_design_icons_Plus_vue__WEBPACK_IMPORTED_MODULE_7__["default"] }, props: { resource: { type: Object, required: true }, organizerDisplayName: { type: String, required: true }, isReadOnly: { type: Boolean, required: true }, isSuggestion: { type: Boolean, default: false } }, data() { return { principal: null }; }, computed: { commonName() { if (this.resource.commonName) { return this.resource.commonName; } if (this.resource.uri) { return (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_2__.removeMailtoPrefix)(this.resource.uri); } return this.resource.uri; }, isViewedByOrganizer() { // TODO: check if also viewed by organizer return !this.isReadOnly; }, isAccessible() { return this.hasFeature('WHEELCHAIR-ACCESSIBLE'); }, hasProjector() { return this.hasFeature('PROJECTOR'); }, hasWhiteboard() { return this.hasFeature('WHITEBOARD'); }, seatingCapacity() { var _this$principal; const seatingCapacity = (_this$principal = this.principal) === null || _this$principal === void 0 ? void 0 : _this$principal.roomSeatingCapacity; if (!seatingCapacity) { return null; } return this.$n('calendar', '{seatingCapacity} seat', '{seatingCapacity} seats', seatingCapacity, { seatingCapacity }); }, roomType() { var _this$principal2, _formatRoomType; const roomType = (_this$principal2 = this.principal) === null || _this$principal2 === void 0 ? void 0 : _this$principal2.roomType; return (_formatRoomType = (0,_models_resourceProps_js__WEBPACK_IMPORTED_MODULE_5__.formatRoomType)(roomType)) !== null && _formatRoomType !== void 0 ? _formatRoomType : roomType; }, participationStatus() { if (this.isSuggestion) { return ''; } return this.resource.participationStatus; } }, watch: { async resource() { await this.fetchPrincipal(); } }, async mounted() { await this.fetchPrincipal(); }, methods: { /** * Add this suggestions to the event */ addSuggestion() { this.$emit('add-suggestion', this.resource); }, /** * Removes a resource from the event */ removeResource() { this.$emit('remove-resource', this.resource); }, /** * Check if this resource has a feature * * @param {string} feature The name of the feature * @return {boolean} True if this resource has the given feature */ hasFeature(feature) { var _this$principal$roomF, _this$principal3; const features = (_this$principal$roomF = (_this$principal3 = this.principal) === null || _this$principal3 === void 0 || (_this$principal3 = _this$principal3.roomFeatures) === null || _this$principal3 === void 0 ? void 0 : _this$principal3.split(',')) !== null && _this$principal$roomF !== void 0 ? _this$principal$roomF : []; return !!features.find(featureToCheck => featureToCheck === feature); }, /** * Try to fetch the principal belonging to this resource */ async fetchPrincipal() { const uri = (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_2__.removeMailtoPrefix)(this.resource.uri); let principals = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_4__.principalPropertySearchByDisplaynameOrEmail)(uri); principals = principals.filter(principal => (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_2__.removeMailtoPrefix)(principal.email) === uri); if (principals.length === 0) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__["default"].debug('No principal for resource found', { uri: this.resource.uri }); this.principal = null; return; } else if (principals.length > 1) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__["default"].debug('More than one principal for resource found', { uri: this.resource.uri, principals }); } this.principal = principals[0]; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListSearch.vue?vue&type=script&lang=js": /*!********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListSearch.vue?vue&type=script&lang=js ***! \********************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _services_freeBusyService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../services/freeBusyService.js */ "./src/services/freeBusyService.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! debounce */ "./node_modules/debounce/index.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_6__); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _ResourceSeatingCapacity_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ResourceSeatingCapacity.vue */ "./src/components/Editor/Resources/ResourceSeatingCapacity.vue"); /* harmony import */ var _ResourceRoomType_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ResourceRoomType.vue */ "./src/components/Editor/Resources/ResourceRoomType.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'ResourceListSearch', components: { Avatar: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAvatar, NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect, ResourceSeatingCapacity: _ResourceSeatingCapacity_vue__WEBPACK_IMPORTED_MODULE_4__["default"], Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, ActionCheckbox: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionCheckbox, ResourceRoomType: _ResourceRoomType_vue__WEBPACK_IMPORTED_MODULE_5__["default"] }, props: { alreadyInvitedEmails: { type: Array, required: true }, calendarObjectInstance: { type: Object, required: true } }, data() { return { isLoading: false, inputGiven: false, matches: [], capacity: NaN, roomType: '', isAvailable: true, isAccessible: false, hasProjector: false, hasWhiteboard: false }; }, computed: { placeholder() { return this.$t('calendar', 'Search for resources or rooms'); }, noResult() { return this.$t('calendar', 'No match found'); }, features() { const features = []; if (this.isAccessible) { features.push('WHEELCHAIR-ACCESSIBLE'); } if (this.hasProjector) { features.push('PROJECTOR'); } if (this.hasWhiteboard) { features.push('WHITEBOARD'); } return features; } }, methods: { findResources: debounce__WEBPACK_IMPORTED_MODULE_6___default()(async function (query) { this.isLoading = true; let matches = []; if (query.length > 0) { matches = await this.findResourcesFromDAV(query); this.isLoading = false; this.inputGiven = true; } else { this.inputGiven = false; this.isLoading = false; } this.matches = matches; }, 500), addResource(selectedValue) { this.$emit('add-resource', selectedValue); }, async findResourcesFromDAV(input) { let results; try { const query = { displayName: input }; query.capacity = this.capacity; query.features = this.features; query.roomType = this.roomType; results = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_3__.advancedPrincipalPropertySearch)(query); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].debug('Could not find resources', { error }); return []; } // Build options let options = results.filter(principal => { if (!principal.email) { return false; } if (this.alreadyInvitedEmails.includes(principal.email)) { return false; } // Only include resources and rooms if (!['RESOURCE', 'ROOM'].includes(principal.calendarUserType)) { return false; } return true; }).map(principal => { var _principal$displaynam; const subLineData = []; if (principal.roomSeatingCapacity) { subLineData.push(this.$n('calendar', '{seatingCapacity} seat', '{seatingCapacity} seats', principal.roomSeatingCapacity, { seatingCapacity: principal.roomSeatingCapacity })); } if (principal.roomAddress) { subLineData.push(principal.roomAddress); } return { commonName: principal.displayname, email: principal.email, calendarUserType: principal.calendarUserType, displayName: (_principal$displaynam = principal.displayname) !== null && _principal$displaynam !== void 0 ? _principal$displaynam : principal.email, subLine: subLineData.join(' - '), isAvailable: true, roomAddress: principal.roomAddress }; }); // Check resource availability await (0,_services_freeBusyService_js__WEBPACK_IMPORTED_MODULE_1__.checkResourceAvailability)(options, this.$store.getters.getCurrentUserPrincipalEmail, this.calendarObjectInstance.eventComponent.startDate, this.calendarObjectInstance.eventComponent.endDate); // Filter by availability if (this.isAvailable) { options = options.filter(option => option.isAvailable); } return options; }, /** * Format availability of a search result * * @param {boolean} isAvailable The availability state * @return {string} Human readable and localized availability */ formatAvailability(isAvailable) { if (isAvailable) { // TRANSLATORS room or resource is available due to not being booked yet return this.$t('calendar', 'available'); } // TRANSLATORS room or resource is unavailable due to it being already booked return this.$t('calendar', 'unavailable'); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _models_resourceProps_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../models/resourceProps.js */ "./src/models/resourceProps.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'ResourceRoomType', components: { NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect }, props: { value: { type: String, required: true } }, computed: { placeholder() { return this.$t('calendar', 'Room type'); }, options() { return [{ value: '', label: this.$t('calendar', 'Any') }, ...(0,_models_resourceProps_js__WEBPACK_IMPORTED_MODULE_1__.getAllRoomTypes)()]; } }, methods: { getOption(value) { // Selecting 'Any' will reset the input if (value === '') { return undefined; } return this.options.find(option => option.value === value); }, changeValue(option) { this.$emit('update:value', option.value); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceSeatingCapacity.vue?vue&type=script&lang=js": /*!*************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceSeatingCapacity.vue?vue&type=script&lang=js ***! \*************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'ResourceSeatingCapacity', props: { value: { type: Number, required: true } }, computed: { placeholder() { return this.$t('calendar', 'Minimum seating capacity'); } }, methods: { changeValue(event) { this.$emit('update:value', parseInt(event.target.value)); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/SaveButtons.vue?vue&type=script&lang=js": /*!***************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/SaveButtons.vue?vue&type=script&lang=js ***! \***************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/Check.vue */ "./node_modules/vue-material-design-icons/Check.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'SaveButtons', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, CheckIcon: vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_1__["default"] }, props: { canCreateRecurrenceException: { type: Boolean, required: true }, isNew: { type: Boolean, required: true }, isReadOnly: { type: Boolean, required: true }, forceThisAndAllFuture: { type: Boolean, required: true }, showMoreButton: { type: Boolean, default: false }, moreButtonType: { type: String, default: undefined }, growHorizontally: { type: Boolean, default: true }, disabled: { type: Boolean, default: false }, isCalendarPending: { type: Boolean, default: false } }, computed: { showSaveButton() { return !this.isReadOnly && this.isNew && !this.canCreateRecurrenceException; }, showUpdateButton() { return !this.isReadOnly && !this.isNew && !this.canCreateRecurrenceException; }, showUpdateOnlyThisButton() { return !this.isReadOnly && this.canCreateRecurrenceException && !this.forceThisAndAllFuture; }, showUpdateThisAndFutureButton() { return !this.isReadOnly && this.canCreateRecurrenceException; } }, methods: { saveThisOnly() { this.$emit('save-this-only'); }, saveAsPendingCalendarEvent() { this.$emit('save-pending-calendar-event'); }, saveThisAndAllFuture() { this.$emit('save-this-and-all-future'); }, showMore() { this.$emit('show-more'); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/EmptyCalendar.vue?vue&type=script&lang=js": /*!**********************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/EmptyCalendar.vue?vue&type=script&lang=js ***! \**********************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlank.vue */ "./node_modules/vue-material-design-icons/CalendarBlank.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'EmptyCalendar', components: { EmptyContent: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcEmptyContent, CalendarBlank: vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_1__["default"] } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Icons/IconCircles.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Icons/IconCircles.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'IconCircles', props: { title: { type: String, default: '' }, size: { type: Number, default: 20 }, fillColor: { type: String, default: 'currentColor' } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Popover/PopoverLoadingIndicator.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Popover/PopoverLoadingIndicator.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'PopoverLoadingIndicator' }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPicker.vue?vue&type=script&lang=js": /*!******************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPicker.vue?vue&type=script&lang=js ***! \******************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _CalendarPickerOption_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CalendarPickerOption.vue */ "./src/components/Shared/CalendarPickerOption.vue"); /* harmony import */ var _utils_randomId_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/randomId.js */ "./src/utils/randomId.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CalendarPicker', components: { CalendarPickerOption: _CalendarPickerOption_vue__WEBPACK_IMPORTED_MODULE_1__["default"], NcSelect: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcSelect }, props: { value: { type: [Object, Array], required: true }, calendars: { type: Array, required: true }, showCalendarOnSelect: { type: Boolean, default: false }, multiple: { type: Boolean, default: false }, disabled: { type: Boolean, default: false }, clearable: { type: Boolean, default: true }, inputId: { type: String, default: () => (0,_utils_randomId_js__WEBPACK_IMPORTED_MODULE_2__.randomId)() } }, computed: { isDisabled() { // for pickers where multiple can be selected (zero or more) we don't want to disable the picker // for calendars where only one calendar can be selected, disable if there are < 2 return this.disabled || (this.multiple ? this.calendars.length < 1 : this.calendars.length < 2); }, valueIds() { if (Array.isArray(this.value)) { return this.value.filter(v => v).map(_ref => { let { id } = _ref; return id; }); } return this.value.id; }, options() { return this.calendars.map(calendar => ({ id: calendar.id, displayName: calendar.displayName })); } }, methods: { /** * TODO: this should emit the calendar id instead * * @param {{id: string}|{id: string}[]} options All selected options (including the new one) */ change(options) { if (!options || options.length === 0) { return; } // The new option will always be the last element const newOption = Array.isArray(options) ? options[options.length - 1] : options; const newCalendar = this.getCalendarById(newOption.id); if (this.showCalendarOnSelect && !newCalendar.enabled) { this.$store.dispatch('toggleCalendarEnabled', { calendar: newCalendar }); } this.$emit('select-calendar', newCalendar); }, remove(option) { if (this.multiple) { this.$emit('remove-calendar', this.getCalendarById(option)); } }, /** * @param {string} id The calendar id * @return {object|undefined} The calendar object (if it exists) */ getCalendarById(id) { return this.calendars.find(cal => cal.id === id); }, /** * Decide whether the given option matches the given search term * * @param {object} option The calendar option * @param {string} label The label of the calendar option * @param {string} id The search term * @param search * @return {boolean} True if the search term matches */ selectFilterBy(option, label, search) { return option.displayName.toLowerCase().indexOf(search) !== -1; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPickerOption.vue?vue&type=script&lang=js": /*!************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPickerOption.vue?vue&type=script&lang=js ***! \************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'CalendarPickerOption', components: { Avatar: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAvatar }, props: { color: { type: String, required: true }, displayName: { type: String, required: true }, owner: { type: String, required: true }, isSharedWithMe: { type: Boolean, required: true } }, computed: { /** * Get the principal object of the calendar's owner * * @return {null | object} */ principal() { return this.$store.getters.getPrincipalByUrl(this.owner); }, /** * Gets the user-id of the calendar's owner * * @return {null | string} */ userId() { if (this.principal) { return this.principal.userId; } return null; }, /** * Gets the displayname of the calendar's owner * * @return {null | string} */ userDisplayName() { if (this.principal) { return this.principal.displayname; } return null; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/DatePicker.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/DatePicker.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_Web_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/Web.vue */ "./node_modules/vue-material-design-icons/Web.vue"); /* harmony import */ var vue_material_design_icons_CalendarBlankOutline_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlankOutline.vue */ "./node_modules/vue-material-design-icons/CalendarBlankOutline.vue"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _utils_localization_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/localization.js */ "./src/utils/localization.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'DatePicker', components: { NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, DateTimePicker: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcDateTimePicker, Popover: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcPopover, TimezonePicker: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcTimezonePicker, IconTimezone: vue_material_design_icons_Web_vue__WEBPACK_IMPORTED_MODULE_1__["default"], IconNewCalendar: vue_material_design_icons_CalendarBlankOutline_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, props: { date: { type: Date, required: true }, timezoneId: { type: String, default: 'floating' }, prefix: { type: String, default: null }, isAllDay: { type: Boolean, required: true }, userTimezoneId: { type: String, default: null }, min: { type: Date, default: null }, max: { type: Date, default: null }, appendToBody: { type: Boolean, default: false }, type: { type: String, default: 'datetime' } }, data() { return { firstDay: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.getFirstDay)() === 0 ? 7 : (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.getFirstDay)(), showTimezonePopover: false, formatter: { stringify: this.stringify, parse: this.parse }, showTimePanel: true }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_7__.mapState)({ locale: state => state.settings.momentLocale, showWeekNumbers: state => state.settings.showWeekNumbers }), /** * Returns the lang config for vue2-datepicker * * @return {object} */ lang() { return (0,_utils_localization_js__WEBPACK_IMPORTED_MODULE_6__.getLangConfigForVue2DatePicker)(this.locale); }, /** * Whether or not to highlight the timezone-icon. * The icon is highlighted when the selected timezone * does not equal the current user's timezone * * @return {boolean} */ highlightTimezone() { if (this.isAllDay) { return true; } return this.timezoneId !== this.userTimezoneId; }, /** * Type of the DatePicker. * Ether date if allDay or datetime * * @return {string} */ actualType() { if (this.type === 'datetime' && this.isAllDay) { return 'date'; } return this.type; }, /** * The earliest date a user is allowed to pick in the timezone * * @return {Date} */ minimumDate() { return this.min || new Date(this.$store.state.davRestrictions.minimumDate); }, /** * The latest date a user is allowed to pick in the timezone * * @return {Date} */ maximumDate() { return this.max || new Date(this.$store.state.davRestrictions.maximumDate); }, /** * Whether or not to offer am/pm in the timepicker * * @return {boolean} */ showAmPm() { const localeData = (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__["default"])().locale(this.locale).localeData(); const timeFormat = localeData.longDateFormat('LT').toLowerCase(); return timeFormat.indexOf('a') !== -1; } }, methods: { /** * Emits a change event for the Date * * @param {Date} date The new Date object */ change(date) { this.$emit('change', date); }, /** * Changes the view to time-picker, * when user picked a date and date-time-picker is not all-day * * @param {Date} date The selected Date object * @param {string} type The type of selected date (Date, Time, ...) */ pickDate(date, type) { if (!this.isAllDay && type === 'date') { this.showTimePanel = true; } }, /** * Emits a change event for the Timezone * * @param {string} timezoneId The new timezoneId */ changeTimezone(timezoneId) { this.$emit('change-timezone', timezoneId); }, /** * Toggles the visibility of the timezone popover */ toggleTimezonePopover() { if (this.isAllDay) { return; } this.showTimezonePopover = !this.showTimezonePopover; }, /** * Reset to time-panel on close of datepicker */ close() { this.showTimePanel = true; this.$emit('close'); }, /** * Toggles the time-picker */ toggleTimePanel() { this.showTimePanel = !this.showTimePanel; }, /** * Formats the date string * * @param {Date} date The date for format * @return {string} */ stringify(date) { const formattedDate = (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__["default"])(date).locale(this.locale).format('L'); const formattedTime = (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__["default"])(date).locale(this.locale).format('LT'); if (this.isAllDay) { switch (this.prefix) { case 'from': return this.$t('calendar', 'from {formattedDate}', { formattedDate }); case 'to': return this.$t('calendar', 'to {formattedDate}', { formattedDate }); case 'on': return this.$t('calendar', 'on {formattedDate}', { formattedDate }); default: return formattedDate; } } else { switch (this.prefix) { case 'from': return this.$t('calendar', 'from {formattedDate} at {formattedTime}', { formattedDate, formattedTime }); case 'to': return this.$t('calendar', 'to {formattedDate} at {formattedTime}', { formattedDate, formattedTime }); case 'on': return this.$t('calendar', 'on {formattedDate} at {formattedTime}', { formattedDate, formattedTime }); default: return this.$t('calendar', '{formattedDate} at {formattedTime}', { formattedDate, formattedTime }); } } }, /** * Parses the user input from the input field * * @param {string} value The user-input to be parsed * @return {Date} */ parse(value) { if (this.isAllDay) { let format; switch (this.prefix) { case 'from': format = this.$t('calendar', 'from {formattedDate}'); break; case 'to': format = this.$t('calendar', 'to {formattedDate}'); break; case 'on': format = this.$t('calendar', 'on {formattedDate}'); break; default: format = '{formattedDate}'; break; } const regexString = format.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&').replace(/(?:^|\\})([^{}]+)(?:$|\\{)/g, (fullMatch, groupMatch) => { return fullMatch.replace(groupMatch, '(?:' + groupMatch + ')?'); }).replace('\\{formattedDate\\}', '(.*)'); const regex = new RegExp(regexString); const matches = value.match(regex); if (!matches) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_5__.showError)(this.$t('calendar', 'Please enter a valid date')); // Just return the previous date return this.date; } return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__["default"])(matches[1], 'L', this.locale).toDate(); } else { let format; switch (this.prefix) { case 'from': format = this.$t('calendar', 'from {formattedDate} at {formattedTime}'); break; case 'to': format = this.$t('calendar', 'to {formattedDate} at {formattedTime}'); break; case 'on': format = this.$t('calendar', 'on {formattedDate} at {formattedTime}'); break; default: format = this.$t('calendar', '{formattedDate} at {formattedTime}'); break; } const escapedFormat = format.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&').replace(/(?:^|\\})([^{}]+)(?:$|\\{)/g, (fullMatch, groupMatch) => { return fullMatch.replace(groupMatch, '(?:' + groupMatch + ')?'); }); const dateRegexString = escapedFormat.replace('\\{formattedDate\\}', '(.*)').replace('\\{formattedTime\\}', '.*'); const dateRegex = new RegExp(dateRegexString); const timeRegexString = escapedFormat.replace('\\{formattedDate\\}', '.*').replace('\\{formattedTime\\}', '(.*)'); const timeRegex = new RegExp(timeRegexString); const dateMatches = value.match(dateRegex); const timeMatches = value.match(timeRegex); if (!dateMatches || !timeMatches) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_5__.showError)(this.$t('calendar', 'Please enter a valid date and time')); // Just return the previous date return this.date; } return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_4__["default"])(dateMatches[1] + ' ' + timeMatches[1], 'L LT', this.locale).toDate(); } }, /** * Whether or not the date is acceptable * * @param {Date} date The date to compare to * @return {boolean} */ disabledDate(date) { return date < this.minimumDate || date > this.maximumDate; } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/TimePicker.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/TimePicker.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _utils_localization_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/localization.js */ "./src/utils/localization.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'TimePicker', components: { DateTimePicker: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcDateTimePicker }, props: { date: { type: Date, required: true } }, data() { return { firstDay: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_2__.getFirstDay)() === 0 ? 7 : (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_2__.getFirstDay)(), format: { stringify: this.stringify, parse: this.parse } }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_4__.mapState)({ locale: state => state.settings.momentLocale }), /** * Returns the lang config for vue2-datepicker * * @return {object} */ lang() { return (0,_utils_localization_js__WEBPACK_IMPORTED_MODULE_3__.getLangConfigForVue2DatePicker)(this.locale); }, /** * Whether or not to offer am/pm in the timepicker * * @return {boolean} */ showAmPm() { const localeData = (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])().locale(this.locale).localeData(); const timeFormat = localeData.longDateFormat('LT').toLowerCase(); return timeFormat.indexOf('a') !== -1; } }, methods: { /** * Emits a change event for the Date * * @param {Date} date The new Date object */ change(date) { this.$emit('change', date); }, /** * Formats the date string * * @param {Date} date The date for format * @return {string} */ stringify(date) { return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])(date).locale(this.locale).format('LT'); }, /** * Parses the user input from the input field * * @param {string} value The user-input to be parsed * @return {Date} */ parse(value) { return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])(value, 'LT', this.locale).toDate(); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Calendar.vue?vue&type=script&lang=js": /*!************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Calendar.vue?vue&type=script&lang=js ***! \************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var _components_AppNavigation_AppNavigationHeader_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AppNavigation/AppNavigationHeader.vue */ "./src/components/AppNavigation/AppNavigationHeader.vue"); /* harmony import */ var _components_AppNavigation_CalendarList_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/AppNavigation/CalendarList.vue */ "./src/components/AppNavigation/CalendarList.vue"); /* harmony import */ var _components_AppNavigation_Settings_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/AppNavigation/Settings.vue */ "./src/components/AppNavigation/Settings.vue"); /* harmony import */ var _components_AppNavigation_CalendarList_CalendarListNew_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/AppNavigation/CalendarList/CalendarListNew.vue */ "./src/components/AppNavigation/CalendarList/CalendarListNew.vue"); /* harmony import */ var _components_AppNavigation_EmbedTopNavigation_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/AppNavigation/EmbedTopNavigation.vue */ "./src/components/AppNavigation/EmbedTopNavigation.vue"); /* harmony import */ var _components_EmptyCalendar_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/EmptyCalendar.vue */ "./src/components/EmptyCalendar.vue"); /* harmony import */ var _components_CalendarGrid_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/CalendarGrid.vue */ "./src/components/CalendarGrid.vue"); /* harmony import */ var _components_AppNavigation_EditCalendarModal_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../components/AppNavigation/EditCalendarModal.vue */ "./src/components/AppNavigation/EditCalendarModal.vue"); /* harmony import */ var _EditSimple_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./EditSimple.vue */ "./src/views/EditSimple.vue"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _utils_moment_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/moment.js */ "./src/utils/moment.js"); /* harmony import */ var _nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @nextcloud/initial-state */ "./node_modules/@nextcloud/initial-state/dist/index.es.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs_dist_index_css__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @nextcloud/dialogs/dist/index.css */ "./node_modules/@nextcloud/dialogs/dist/style.css"); /* harmony import */ var _components_AppNavigation_CalendarList_Trashbin_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../components/AppNavigation/CalendarList/Trashbin.vue */ "./src/components/AppNavigation/CalendarList/Trashbin.vue"); /* harmony import */ var _components_AppNavigation_AppointmentConfigList_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../components/AppNavigation/AppointmentConfigList.vue */ "./src/components/AppNavigation/AppointmentConfigList.vue"); // Import vue components // Import CalDAV related methods // Import others /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'Calendar', components: { AppointmentConfigList: _components_AppNavigation_AppointmentConfigList_vue__WEBPACK_IMPORTED_MODULE_20__["default"], CalendarGrid: _components_CalendarGrid_vue__WEBPACK_IMPORTED_MODULE_7__["default"], EmptyCalendar: _components_EmptyCalendar_vue__WEBPACK_IMPORTED_MODULE_6__["default"], EmbedTopNavigation: _components_AppNavigation_EmbedTopNavigation_vue__WEBPACK_IMPORTED_MODULE_5__["default"], Settings: _components_AppNavigation_Settings_vue__WEBPACK_IMPORTED_MODULE_3__["default"], CalendarList: _components_AppNavigation_CalendarList_vue__WEBPACK_IMPORTED_MODULE_2__["default"], AppNavigationHeader: _components_AppNavigation_AppNavigationHeader_vue__WEBPACK_IMPORTED_MODULE_1__["default"], NcContent: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcContent, AppContent: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppContent, AppNavigation: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigation, AppNavigationSpacer: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppNavigationSpacer, CalendarListNew: _components_AppNavigation_CalendarList_CalendarListNew_vue__WEBPACK_IMPORTED_MODULE_4__["default"], Trashbin: _components_AppNavigation_CalendarList_Trashbin_vue__WEBPACK_IMPORTED_MODULE_19__["default"], EditCalendarModal: _components_AppNavigation_EditCalendarModal_vue__WEBPACK_IMPORTED_MODULE_8__["default"], EditSimple: _EditSimple_vue__WEBPACK_IMPORTED_MODULE_9__["default"] }, props: { isWidget: { type: Boolean, default: false }, referenceToken: { type: String, required: false } }, data() { return { loadingCalendars: true, timeFrameCacheExpiryJob: null, showEmptyCalendarScreen: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_21__.mapGetters)({ timezoneId: 'getResolvedTimezone', hasTrashBin: 'hasTrashBin', currentUserPrincipal: 'getCurrentUserPrincipal', canAccessPreviousEvent: 'userRole/canAccessPreviousEvent' }), ...(0,vuex__WEBPACK_IMPORTED_MODULE_21__.mapState)({ eventLimit: state => state.settings.eventLimit, skipPopover: state => state.settings.skipPopover, showWeekends: state => state.settings.showWeekends, showWeekNumbers: state => state.settings.showWeekNumbers, slotDuration: state => state.settings.slotDuration, defaultReminder: state => state.settings.defaultReminder, showTasks: state => state.settings.showTasks, timezone: state => state.settings.timezone, modificationCount: state => state.calendarObjects.modificationCount, disableAppointments: state => state.settings.disableAppointments, attachmentsFolder: state => state.settings.attachmentsFolder, roles: state => state.userRole.roles }), defaultDate() { var _this$$route$params$f, _this$$route; return (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_12__.getYYYYMMDDFromFirstdayParam)((_this$$route$params$f = (_this$$route = this.$route) === null || _this$$route === void 0 || (_this$$route = _this$$route.params) === null || _this$$route === void 0 ? void 0 : _this$$route.firstDay) !== null && _this$$route$params$f !== void 0 ? _this$$route$params$f : 'now'); }, isEditable() { var _this$$route2, _this$$route3; // We do not allow drag and drop when the editor is open. return !this.isPublicShare && !this.isEmbedded && !this.isWidget && ((_this$$route2 = this.$route) === null || _this$$route2 === void 0 ? void 0 : _this$$route2.name) !== 'EditPopoverView' && ((_this$$route3 = this.$route) === null || _this$$route3 === void 0 ? void 0 : _this$$route3.name) !== 'EditSidebarView'; }, isSelectable() { return !this.isPublicShare && !this.isEmbedded && !this.isWidget; }, isAuthenticatedUser() { return !this.isPublicShare && !this.isEmbedded && !this.isWidget; }, isPublicShare() { if (this.isWidget) { return false; } return this.$route.name.startsWith('Public'); }, isEmbedded() { if (this.isWidget) { return false; } return this.$route.name.startsWith('Embed'); }, showWidgetEventDetails() { return this.$store.getters.widgetEventDetailsOpen && this.$refs.calendarGridWidget.$el === this.$store.getters.widgetRef; }, showHeader() { return this.isPublicShare && this.isEmbedded && this.isWidget; }, classNames() { if (this.isEmbedded) { return 'app-calendar-public-embedded'; } if (this.isPublicShare) { return 'app-calendar-public'; } return null; } }, created() { this.timeFrameCacheExpiryJob = setInterval(() => { const timestamp = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_12__.getUnixTimestampFromDate)((0,_utils_date_js__WEBPACK_IMPORTED_MODULE_12__.dateFactory)()) - 60 * 10; const timeRanges = this.$store.getters.getAllTimeRangesOlderThan(timestamp); for (const timeRange of timeRanges) { this.$store.commit('removeTimeRange', { timeRangeId: timeRange.id }); this.$store.commit('deleteFetchedTimeRangeFromCalendar', { calendar: { id: timeRange.calendarId }, fetchedTimeRangeId: timeRange.id }); } }, 1000 * 60); }, async beforeMount() { var _this$$route4, _this$$route5; this.$store.commit('loadSettingsFromServer', { appVersion: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'app_version'), eventLimit: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'event_limit'), firstRun: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'first_run'), showWeekends: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'show_weekends'), showWeekNumbers: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'show_week_numbers'), skipPopover: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'skip_popover'), slotDuration: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'slot_duration'), defaultReminder: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'default_reminder'), talkEnabled: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'talk_enabled'), tasksEnabled: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'tasks_enabled'), timezone: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'timezone'), showTasks: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'show_tasks'), hideEventExport: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'hide_event_export'), forceEventAlarmType: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'force_event_alarm_type', false), disableAppointments: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'disable_appointments', false), canSubscribeLink: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'can_subscribe_link', false), attachmentsFolder: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'attachments_folder', false), showResources: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'show_resources', true), publicCalendars: (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_16__.loadState)('calendar', 'publicCalendars', []) }); this.$store.dispatch('initializeCalendarJsConfig'); if ((_this$$route4 = this.$route) !== null && _this$$route4 !== void 0 && _this$$route4.name.startsWith('Public') || (_this$$route5 = this.$route) !== null && _this$$route5 !== void 0 && _this$$route5.name.startsWith('Embed') || this.isWidget) { await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_10__.initializeClientForPublicView)(); const tokens = this.isWidget ? [this.referenceToken] : this.$route.params.tokens.split('-'); const calendars = await this.$store.dispatch('getPublicCalendars', { tokens }); this.loadingCalendars = false; if (calendars.length === 0) { this.showEmptyCalendarScreen = true; } } else { await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_10__.initializeClientForUserView)(); await this.$store.dispatch('fetchCurrentUserPrincipal'); const { calendars, trashBin } = await this.$store.dispatch('loadCollections'); _utils_logger_js__WEBPACK_IMPORTED_MODULE_14__["default"].debug('calendars and trash bin loaded', { calendars, trashBin }); const owners = []; calendars.forEach(calendar => { if (owners.indexOf(calendar.owner) === -1) { owners.push(calendar.owner); } }); owners.forEach(owner => { this.$store.dispatch('fetchPrincipalByUrl', { url: owner }); }); const writeableCalendarIndex = calendars.findIndex(calendar => { return !calendar.readOnly; }); // No writeable calendars? Create a new one! if (writeableCalendarIndex === -1) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_14__["default"].info('User has no writable calendar, a new personal calendar will be created'); this.loadingCalendars = true; await this.$store.dispatch('appendCalendar', { displayName: this.$t('calendar', 'Personal'), color: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_11__.uidToHexColor)(this.$t('calendar', 'Personal')), order: 0 }); } this.loadingCalendars = false; } }, async mounted() { if (this.timezone === 'automatic' && this.timezoneId === 'UTC') { const { toastElement } = (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_17__.showWarning)(this.$t('calendar', 'The automatic time zone detection determined your time zone to be UTC.\nThis is most likely the result of security measures of your web browser.\nPlease set your time zone manually in the calendar settings.'), { timeout: 60000 }); toastElement.classList.add('toast-calendar-multiline'); } if ((0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_13__["default"])().getTimezoneForId(this.timezoneId) === null) { const { toastElement } = (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_17__.showWarning)(this.$t('calendar', 'Your configured time zone ({timezoneId}) was not found. Falling back to UTC.\nPlease change your time zone in the settings and report this issue.', { timezoneId: this.timezoneId }), { timeout: 60000 }); toastElement.classList.add('toast-calendar-multiline'); } await this.$store.dispatch("userRole/fetchUserRoles"); await this.loadMomentLocale(); }, methods: { /** * Loads the locale data for moment.js * * @return {Promise} */ async loadMomentLocale() { const locale = await (0,_utils_moment_js__WEBPACK_IMPORTED_MODULE_15__["default"])(); this.$store.commit('setMomentLocale', { locale }); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSidebar.vue?vue&type=script&lang=js": /*!***************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSidebar.vue?vue&type=script&lang=js ***! \***************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _components_Editor_Alarm_AlarmList_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Editor/Alarm/AlarmList.vue */ "./src/components/Editor/Alarm/AlarmList.vue"); /* harmony import */ var _components_Editor_Invitees_InviteesList_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/Editor/Invitees/InviteesList.vue */ "./src/components/Editor/Invitees/InviteesList.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelect.vue */ "./src/components/Editor/Properties/PropertySelect.vue"); /* harmony import */ var _components_Editor_Properties_PropertyText_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyText.vue */ "./src/components/Editor/Properties/PropertyText.vue"); /* harmony import */ var _components_Editor_Properties_PropertyTitleTimePicker_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyTitleTimePicker.vue */ "./src/components/Editor/Properties/PropertyTitleTimePicker.vue"); /* harmony import */ var _components_Editor_Properties_PropertyTitle_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyTitle.vue */ "./src/components/Editor/Properties/PropertyTitle.vue"); /* harmony import */ var _components_Editor_Repeat_Repeat_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../components/Editor/Repeat/Repeat.vue */ "./src/components/Editor/Repeat/Repeat.vue"); /* harmony import */ var _mixins_EditorMixin_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../mixins/EditorMixin.js */ "./src/mixins/EditorMixin.js"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _components_Editor_SaveButtons_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../components/Editor/SaveButtons.vue */ "./src/components/Editor/SaveButtons.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectMultiple_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectMultiple.vue */ "./src/components/Editor/Properties/PropertySelectMultiple.vue"); /* harmony import */ var _components_Editor_Properties_PropertyColor_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyColor.vue */ "./src/components/Editor/Properties/PropertyColor.vue"); /* harmony import */ var _components_Editor_Resources_ResourceList_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../components/Editor/Resources/ResourceList.vue */ "./src/components/Editor/Resources/ResourceList.vue"); /* harmony import */ var _components_Editor_InvitationResponseButtons_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../components/Editor/InvitationResponseButtons.vue */ "./src/components/Editor/InvitationResponseButtons.vue"); /* harmony import */ var _components_Editor_Attachments_AttachmentsList_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../components/Editor/Attachments/AttachmentsList.vue */ "./src/components/Editor/Attachments/AttachmentsList.vue"); /* harmony import */ var _components_Editor_CalendarPickerHeader_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../components/Editor/CalendarPickerHeader.vue */ "./src/components/Editor/CalendarPickerHeader.vue"); /* harmony import */ var vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! vue-material-design-icons/AccountMultiple.vue */ "./node_modules/vue-material-design-icons/AccountMultiple.vue"); /* harmony import */ var vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlank.vue */ "./node_modules/vue-material-design-icons/CalendarBlank.vue"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony import */ var vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! vue-material-design-icons/Download.vue */ "./node_modules/vue-material-design-icons/Download.vue"); /* harmony import */ var vue_material_design_icons_ContentDuplicate_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! vue-material-design-icons/ContentDuplicate.vue */ "./node_modules/vue-material-design-icons/ContentDuplicate.vue"); /* harmony import */ var vue_material_design_icons_InformationOutline_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! vue-material-design-icons/InformationOutline.vue */ "./node_modules/vue-material-design-icons/InformationOutline.vue"); /* harmony import */ var vue_material_design_icons_MapMarker_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! vue-material-design-icons/MapMarker.vue */ "./node_modules/vue-material-design-icons/MapMarker.vue"); /* harmony import */ var _services_attachmentService_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../services/attachmentService.js */ "./src/services/attachmentService.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjax.vue */ "./src/components/Editor/Properties/PropertySelectAjax.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjaxMultiple.vue */ "./src/components/Editor/Properties/PropertySelectAjaxMultiple.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectLieu.vue */ "./src/components/Editor/Properties/PropertySelectLieu.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectClient.vue */ "./src/components/Editor/Properties/PropertySelectClient.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectArticle.vue */ "./src/components/Editor/Properties/PropertySelectArticle.vue"); /* harmony import */ var _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsLeave.vue */ "./src/components/Editor/Properties/PropertyIsLeave.vue"); /* harmony import */ var _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsCalendarPending */ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'EditSidebar', components: { PropertySelectAjaxMultiple: _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_31__["default"], PropertySelectAjax: _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_30__["default"], PropertySelectLieu: _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_32__["default"], PropertySelectClient: _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_33__["default"], PropertySelectArticle: _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_34__["default"], PropertyIsCalendarPending: _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_36__["default"], PropertyIsLeave: _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_35__["default"], ResourceList: _components_Editor_Resources_ResourceList_vue__WEBPACK_IMPORTED_MODULE_15__["default"], PropertyColor: _components_Editor_Properties_PropertyColor_vue__WEBPACK_IMPORTED_MODULE_14__["default"], PropertySelectMultiple: _components_Editor_Properties_PropertySelectMultiple_vue__WEBPACK_IMPORTED_MODULE_13__["default"], SaveButtons: _components_Editor_SaveButtons_vue__WEBPACK_IMPORTED_MODULE_12__["default"], AlarmList: _components_Editor_Alarm_AlarmList_vue__WEBPACK_IMPORTED_MODULE_3__["default"], NcAppSidebar: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppSidebar, NcAppSidebarTab: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcAppSidebarTab, NcActionLink: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionLink, NcActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, NcEmptyContent: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcEmptyContent, NcModal: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcModal, NcListItemIcon: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcListItemIcon, NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, NcCheckboxRadioSwitch: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcCheckboxRadioSwitch, InviteesList: _components_Editor_Invitees_InviteesList_vue__WEBPACK_IMPORTED_MODULE_4__["default"], PropertySelect: _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_5__["default"], PropertyText: _components_Editor_Properties_PropertyText_vue__WEBPACK_IMPORTED_MODULE_6__["default"], PropertyTitleTimePicker: _components_Editor_Properties_PropertyTitleTimePicker_vue__WEBPACK_IMPORTED_MODULE_7__["default"], Repeat: _components_Editor_Repeat_Repeat_vue__WEBPACK_IMPORTED_MODULE_9__["default"], AccountMultiple: vue_material_design_icons_AccountMultiple_vue__WEBPACK_IMPORTED_MODULE_19__["default"], CalendarBlank: vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_20__["default"], Delete: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_21__["default"], Download: vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_22__["default"], ContentDuplicate: vue_material_design_icons_ContentDuplicate_vue__WEBPACK_IMPORTED_MODULE_23__["default"], InformationOutline: vue_material_design_icons_InformationOutline_vue__WEBPACK_IMPORTED_MODULE_24__["default"], MapMarker: vue_material_design_icons_MapMarker_vue__WEBPACK_IMPORTED_MODULE_25__["default"], InvitationResponseButtons: _components_Editor_InvitationResponseButtons_vue__WEBPACK_IMPORTED_MODULE_16__["default"], AttachmentsList: _components_Editor_Attachments_AttachmentsList_vue__WEBPACK_IMPORTED_MODULE_17__["default"], CalendarPickerHeader: _components_Editor_CalendarPickerHeader_vue__WEBPACK_IMPORTED_MODULE_18__["default"], PropertyTitle: _components_Editor_Properties_PropertyTitle_vue__WEBPACK_IMPORTED_MODULE_8__["default"] }, mixins: [_mixins_EditorMixin_js__WEBPACK_IMPORTED_MODULE_10__["default"]], data() { return { thisAndAllFuture: false, doNotShare: false, showModal: false, showModalNewAttachments: [], showModalUsers: [], sharedProgress: 0, showPreloader: false, defuntUrl: undefined, isCalendarPending: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_37__.mapState)({ locale: state => state.settings.momentLocale, hideEventExport: state => state.settings.hideEventExport, attachmentsFolder: state => state.settings.attachmentsFolder, showResources: state => state.settings.showResources }), accessClass() { var _this$calendarObjectI; return ((_this$calendarObjectI = this.calendarObjectInstance) === null || _this$calendarObjectI === void 0 ? void 0 : _this$calendarObjectI.accessClass) || null; }, categories() { var _this$calendarObjectI2; return ((_this$calendarObjectI2 = this.calendarObjectInstance) === null || _this$calendarObjectI2 === void 0 ? void 0 : _this$calendarObjectI2.categories) || null; }, status() { var _this$calendarObjectI3; return ((_this$calendarObjectI3 = this.calendarObjectInstance) === null || _this$calendarObjectI3 === void 0 ? void 0 : _this$calendarObjectI3.status) || null; }, timeTransparency() { var _this$calendarObjectI4; return ((_this$calendarObjectI4 = this.calendarObjectInstance) === null || _this$calendarObjectI4 === void 0 ? void 0 : _this$calendarObjectI4.timeTransparency) || null; }, subTitle() { if (!this.calendarObjectInstance) { return ''; } const userTimezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_28__["default"])().getTimezoneForId(this.currentUserTimezone); if (!userTimezone) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_29__["default"].warn("User timezone not found: ".concat(this.currentUserTimezone)); return ''; } const startDateInUserTz = this.calendarObjectInstance.eventComponent.startDate.getInTimezone(userTimezone).jsDate; return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_11__["default"])(startDateInUserTz).locale(this.locale).fromNow(); }, attachments() { var _this$calendarObjectI5; return ((_this$calendarObjectI5 = this.calendarObjectInstance) === null || _this$calendarObjectI5 === void 0 ? void 0 : _this$calendarObjectI5.attachments) || null; }, currentUser() { return this.$store.getters.getCurrentUserPrincipal || null; } }, mounted() { window.addEventListener('keydown', this.keyboardCloseEditor); window.addEventListener('keydown', this.keyboardSaveEvent); window.addEventListener('keydown', this.keyboardDeleteEvent); window.addEventListener('keydown', this.keyboardDuplicateEvent); }, beforeDestroy() { window.removeEventListener('keydown', this.keyboardCloseEditor); window.removeEventListener('keydown', this.keyboardSaveEvent); window.removeEventListener('keydown', this.keyboardDeleteEvent); window.removeEventListener('keydown', this.keyboardDuplicateEvent); }, watch: { calendarObjectInstance: { immediate: true, handler() { if (this.calendarObjectInstance) { var _this$calendarObjectI6; this.getDefuntUrl(); this.isCalendarPending = (_this$calendarObjectI6 = this.calendarObjectInstance.isCalendarPending) !== null && _this$calendarObjectI6 !== void 0 ? _this$calendarObjectI6 : false; } }, deep: true } }, methods: { /** * Update the start and end date of this event * * @param {object} dates The new start and end date */ updateDates(dates) { this.updateStartDate(dates.start); this.updateEndDate(dates.end); }, /** * Updates the access-class of this event * * @param {string} accessClass The new access class */ updateAccessClass(accessClass) { this.$store.commit('changeAccessClass', { calendarObjectInstance: this.calendarObjectInstance, accessClass }); }, /** * Updates the status of the event * * @param {string} status The new status */ updateStatus(status) { this.$store.commit('changeStatus', { calendarObjectInstance: this.calendarObjectInstance, status }); }, /** * Updates the time-transparency of the event * * @param {string} timeTransparency The new time-transparency */ updateTimeTransparency(timeTransparency) { this.$store.commit('changeTimeTransparency', { calendarObjectInstance: this.calendarObjectInstance, timeTransparency }); }, /** * Adds a category to the event * * @param {string} category Category to add */ addCategory(category) { this.$store.commit('addCategory', { calendarObjectInstance: this.calendarObjectInstance, category }); }, /** * Removes a category from the event * * @param {string} category Category to remove */ removeCategory(category) { this.$store.commit('removeCategory', { calendarObjectInstance: this.calendarObjectInstance, category }); }, /** * Updates the color of the event * * @param {string} customColor The new color */ updateColor(customColor) { this.$store.commit('changeCustomColor', { calendarObjectInstance: this.calendarObjectInstance, customColor }); }, /** * Checks is the calendar event has attendees, but organizer or not * * @return {boolean} */ isPrivate() { return this.calendarObjectInstance.attendees.filter(attendee => { if (this.currentUser.emailAddress.toLowerCase() !== (attendee.uri.split('mailto:').length === 2 ? attendee.uri.split('mailto:')[1].toLowerCase() : attendee.uri.toLowerCase())) { return attendee; } return false; }).length === 0; }, getPreview(attachment) { if (attachment.xNcHasPreview) { return (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)("/core/preview?fileId=".concat(attachment.xNcFileId, "&x=100&y=100&a=0")); } return attachment.formatType ? OC.MimeType.getIconUrl(attachment.formatType) : OC.MimeType.getIconUrl('folder'); }, acceptAttachmentsModal() { if (!this.doNotShare) { const total = this.showModalNewAttachments.length; this.showPreloader = true; if (!this.isPrivate()) { this.showModalNewAttachments.map(async (attachment, i) => { // console.log('Add share', attachment) this.sharedProgress = Math.ceil(100 * (i + 1) / total); // add share + change attachment try { var _data$share_type; const data = await (0,_services_attachmentService_js__WEBPACK_IMPORTED_MODULE_26__.shareFile)("".concat(this.attachmentsFolder).concat(attachment.fileName)); attachment.shareTypes = data === null || data === void 0 || (_data$share_type = data.share_type) === null || _data$share_type === void 0 ? void 0 : _data$share_type.toString(); if (typeof attachment.attachmentProperty.getParameter('X-NC-SHARED-TYPES') === 'undefined') { const xNcSharedTypes = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_27__.Parameter('X-NC-SHARED-TYPES', attachment.shareTypes); attachment.attachmentProperty.setParameter(xNcSharedTypes); } attachment.attachmentProperty.uri = data === null || data === void 0 ? void 0 : data.url; attachment.uri = data === null || data === void 0 ? void 0 : data.url; // toastify success } catch (e) { // toastify err console.error(e); } return attachment; }); } else { // TODO it is not possible to delete shares, because share ID needed /* this.showModalNewAttachments.map((attachment, i) => { this.sharedProgress += Math.ceil(100 * (i + 1) / total) return attachment }) */ } } setTimeout(() => { this.showPreloader = false; this.sharedProgress = 0; this.showModal = false; this.showModalNewAttachments = []; this.showModalUsers = []; this.saveEvent(this.thisAndAllFuture); }, 500); // trigger save event after make each attachment access // 1) if !isPrivate get attachments NOT SHARED and SharedType is empry -> API ADD SHARE // 2) if isPrivate get attachments SHARED and SharedType is not empty -> API DELETE SHARE // 3) update calendarObject while pending access change // 4) after all access changes, save Event trigger // 5) done }, closeAttachmentsModal() { this.showModal = false; }, emailWithoutMailto(mailto) { return mailto.split('mailto:').length === 2 ? mailto.split('mailto:')[1].toLowerCase() : mailto.toLowerCase(); }, getBaseName(name) { return name.split('/').pop(); }, prepareAccessForAttachments() { let thisAndAllFuture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; this.thisAndAllFuture = thisAndAllFuture; const newAttachments = this.calendarObjectInstance.attachments.filter(attachment => { // get only new attachments // TODO get NOT only new attachments =) Maybe we should filter all attachments without share-type, 'cause event can be private and AFTER save owner could add new participant return !this.isPrivate() ? attachment.isNew && attachment.shareTypes === null : attachment.isNew && attachment.shareTypes !== null; }); // if there are new attachment and event not saved if (newAttachments.length > 0 && !this.isPrivate()) { // and is event NOT private, // then add share to each attachment // only if attachment['share-types'] is null or empty this.showModal = true; this.showModalNewAttachments = newAttachments; this.showModalUsers = this.calendarObjectInstance.attendees.filter(attendee => { if (this.currentUser.emailAddress.toLowerCase() !== this.emailWithoutMailto(attendee.uri)) { return attendee; } return false; }); } else { this.saveEvent(thisAndAllFuture); } }, saveEvent() { let thisAndAllFuture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; // if there is new attachments and !private, then make modal with users and files/ // maybe check shared access before add file this.saveAndLeave(thisAndAllFuture); this.calendarObjectInstance.attachments = this.calendarObjectInstance.attachments.map(attachment => { if (attachment.isNew) { delete attachment.isNew; } return attachment; }); }, addArticle(article) { if (this.description && this.description !== "") { this.updateDescription(this.description + ";" + article); } else { this.updateDescription(article); } }, removeArticle(article) { if (this.description && this.description !== "") { let values = []; let items = this.description.split(';'); items.forEach(item => { if (item !== article) { values.push(item); } }); this.updateDescription(values.join(";")); } else { this.updateDescription(null); } }, getDefuntUrl() { const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)("/apps/gestion/api/getDefundIdByCalendarUuid/".concat(this.calendarObjectInstance.eventComponent.uid)); axios__WEBPACK_IMPORTED_MODULE_1___default().get(url).then(response => { if (response.data.id) { this.defuntUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)("/apps/gestion/defunt/".concat(response.data.id, "/show")); } }); }, viewDefunt() { window.open(this.defuntUrl, '_blank'); }, async saveAsPendingCalendarEvent() { if (this.isNew) { await this.savePendingCalendar(false); return; } this.isViewing = true; try { await this.savePendingCalendar(false); this.requiresActionOnRouteLeave = false; } catch (error) { this.isViewing = false; } } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSimple.vue?vue&type=script&lang=js": /*!**************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSimple.vue?vue&type=script&lang=js ***! \**************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _mixins_EditorMixin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../mixins/EditorMixin.js */ "./src/mixins/EditorMixin.js"); /* harmony import */ var _components_Editor_Properties_PropertyTitle_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyTitle.vue */ "./src/components/Editor/Properties/PropertyTitle.vue"); /* harmony import */ var _components_Editor_Properties_PropertyTitleTimePicker_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyTitleTimePicker.vue */ "./src/components/Editor/Properties/PropertyTitleTimePicker.vue"); /* harmony import */ var _components_Editor_Properties_PropertyText_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyText.vue */ "./src/components/Editor/Properties/PropertyText.vue"); /* harmony import */ var _components_Editor_SaveButtons_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/Editor/SaveButtons.vue */ "./src/components/Editor/SaveButtons.vue"); /* harmony import */ var _components_Popover_PopoverLoadingIndicator_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../components/Popover/PopoverLoadingIndicator.vue */ "./src/components/Popover/PopoverLoadingIndicator.vue"); /* harmony import */ var _utils_router_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/router.js */ "./src/utils/router.js"); /* harmony import */ var _components_Editor_InvitationResponseButtons_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../components/Editor/InvitationResponseButtons.vue */ "./src/components/Editor/InvitationResponseButtons.vue"); /* harmony import */ var _components_Editor_CalendarPickerHeader_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../components/Editor/CalendarPickerHeader.vue */ "./src/components/Editor/CalendarPickerHeader.vue"); /* harmony import */ var _components_Editor_Invitees_InviteesList_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../components/Editor/Invitees/InviteesList.vue */ "./src/components/Editor/Invitees/InviteesList.vue"); /* harmony import */ var vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlank.vue */ "./node_modules/vue-material-design-icons/CalendarBlank.vue"); /* harmony import */ var vue_material_design_icons_Close_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vue-material-design-icons/Close.vue */ "./node_modules/vue-material-design-icons/Close.vue"); /* harmony import */ var vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! vue-material-design-icons/Delete.vue */ "./node_modules/vue-material-design-icons/Delete.vue"); /* harmony import */ var vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! vue-material-design-icons/Download.vue */ "./node_modules/vue-material-design-icons/Download.vue"); /* harmony import */ var vue_material_design_icons_ContentDuplicate_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vue-material-design-icons/ContentDuplicate.vue */ "./node_modules/vue-material-design-icons/ContentDuplicate.vue"); /* harmony import */ var vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! vue-material-design-icons/Pencil.vue */ "./node_modules/vue-material-design-icons/Pencil.vue"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelect.vue */ "./src/components/Editor/Properties/PropertySelect.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjax.vue */ "./src/components/Editor/Properties/PropertySelectAjax.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectAjaxMultiple.vue */ "./src/components/Editor/Properties/PropertySelectAjaxMultiple.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectLieu.vue */ "./src/components/Editor/Properties/PropertySelectLieu.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectClient.vue */ "./src/components/Editor/Properties/PropertySelectClient.vue"); /* harmony import */ var _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../components/Editor/Properties/PropertySelectArticle.vue */ "./src/components/Editor/Properties/PropertySelectArticle.vue"); /* harmony import */ var _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsLeave.vue */ "./src/components/Editor/Properties/PropertyIsLeave.vue"); /* harmony import */ var _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../components/Editor/Properties/PropertyIsCalendarPending */ "./src/components/Editor/Properties/PropertyIsCalendarPending.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: "EditSimple", components: { PropertyIsLeave: _components_Editor_Properties_PropertyIsLeave_vue__WEBPACK_IMPORTED_MODULE_26__["default"], PropertyIsCalendarPending: _components_Editor_Properties_PropertyIsCalendarPending__WEBPACK_IMPORTED_MODULE_27__["default"], PropertySelectAjaxMultiple: _components_Editor_Properties_PropertySelectAjaxMultiple_vue__WEBPACK_IMPORTED_MODULE_22__["default"], PropertySelectAjax: _components_Editor_Properties_PropertySelectAjax_vue__WEBPACK_IMPORTED_MODULE_21__["default"], PropertySelectLieu: _components_Editor_Properties_PropertySelectLieu_vue__WEBPACK_IMPORTED_MODULE_23__["default"], PropertySelectClient: _components_Editor_Properties_PropertySelectClient_vue__WEBPACK_IMPORTED_MODULE_24__["default"], PropertySelectArticle: _components_Editor_Properties_PropertySelectArticle_vue__WEBPACK_IMPORTED_MODULE_25__["default"], PropertySelect: _components_Editor_Properties_PropertySelect_vue__WEBPACK_IMPORTED_MODULE_20__["default"], PopoverLoadingIndicator: _components_Popover_PopoverLoadingIndicator_vue__WEBPACK_IMPORTED_MODULE_8__["default"], SaveButtons: _components_Editor_SaveButtons_vue__WEBPACK_IMPORTED_MODULE_7__["default"], PropertyText: _components_Editor_Properties_PropertyText_vue__WEBPACK_IMPORTED_MODULE_6__["default"], PropertyTitleTimePicker: _components_Editor_Properties_PropertyTitleTimePicker_vue__WEBPACK_IMPORTED_MODULE_5__["default"], PropertyTitle: _components_Editor_Properties_PropertyTitle_vue__WEBPACK_IMPORTED_MODULE_4__["default"], Popover: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcPopover, Actions: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActions, ActionButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionButton, ActionLink: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcActionLink, EmptyContent: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcEmptyContent, CalendarBlank: vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_13__["default"], Close: vue_material_design_icons_Close_vue__WEBPACK_IMPORTED_MODULE_14__["default"], Download: vue_material_design_icons_Download_vue__WEBPACK_IMPORTED_MODULE_16__["default"], ContentDuplicate: vue_material_design_icons_ContentDuplicate_vue__WEBPACK_IMPORTED_MODULE_17__["default"], Delete: vue_material_design_icons_Delete_vue__WEBPACK_IMPORTED_MODULE_15__["default"], InvitationResponseButtons: _components_Editor_InvitationResponseButtons_vue__WEBPACK_IMPORTED_MODULE_10__["default"], CalendarPickerHeader: _components_Editor_CalendarPickerHeader_vue__WEBPACK_IMPORTED_MODULE_11__["default"], InviteesList: _components_Editor_Invitees_InviteesList_vue__WEBPACK_IMPORTED_MODULE_12__["default"], NcButton: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcButton, EditIcon: vue_material_design_icons_Pencil_vue__WEBPACK_IMPORTED_MODULE_18__["default"] }, mixins: [_mixins_EditorMixin_js__WEBPACK_IMPORTED_MODULE_3__["default"]], data() { return { placement: "auto", hasLocation: false, hasDescription: false, isCalendarPending: false, boundaryElement: null, isVisible: true, isViewing: true, defuntUrl: undefined }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_28__.mapState)({ hideEventExport: state => state.settings.hideEventExport, widgetEventDetailsOpen: state => state.calendars.widgetEventDetailsOpen, widgetEventDetails: state => state.calendars.widgetEventDetails, widgetRef: state => state.calendars.widgetRef }), showPopover() { return this.isVisible || this.widgetEventDetailsOpen; }, /** * Returns true if the current event is read only or the user is viewing the event * * @return {boolean} */ isReadOnlyOrViewing() { return this.isReadOnly || this.isViewing || this.isWidget; }, /** * Return the event's title or a placeholder if it is empty * * @return {string} */ titleOrPlaceholder() { if (this.title === "" && this.isReadOnlyOrViewing && !this.isLoading) { return t("calendar", "Untitled event"); } return this.title; } }, watch: { $route(to, from) { this.repositionPopover(); // Hide popover when changing the view until the user selects a slot again this.isVisible = (to === null || to === void 0 ? void 0 : to.params.view) === (from === null || from === void 0 ? void 0 : from.params.view); }, calendarObjectInstance() { this.hasLocation = false; this.hasDescription = false; if (typeof this.calendarObjectInstance.location === "string" && this.calendarObjectInstance.location.trim() !== "") { this.hasLocation = true; } if (typeof this.calendarObjectInstance.description === "string" && this.calendarObjectInstance.description.trim() !== "") { this.hasDescription = true; } if (this.calendarObjectInstance) { var _this$calendarObjectI; this.getDefuntUrl(); this.isCalendarPending = (_this$calendarObjectI = this.calendarObjectInstance.isCalendarPending) !== null && _this$calendarObjectI !== void 0 ? _this$calendarObjectI : false; } }, isNew: { immediate: true, handler(isNew) { // New events should be editable from the start this.isViewing = !isNew; } } }, async mounted() { if (this.isWidget) { const objectId = this.widgetEventDetails.object; const recurrenceId = this.widgetEventDetails.recurrenceId; await this.$store.dispatch("getCalendarObjectInstanceByObjectIdAndRecurrenceId", { objectId, recurrenceId }); this.calendarId = this.calendarObject.calendarId; this.isLoading = false; } this.boundaryElement = this.isWidget ? document.querySelector(".fc") : document.querySelector("#app-content-vue > .fc"); window.addEventListener("keydown", this.keyboardCloseEditor); window.addEventListener("keydown", this.keyboardSaveEvent); window.addEventListener("keydown", this.keyboardDeleteEvent); window.addEventListener("keydown", this.keyboardDuplicateEvent); this.$nextTick(() => { this.repositionPopover(); }); }, beforeDestroy() { window.removeEventListener("keydown", this.keyboardCloseEditor); window.removeEventListener("keydown", this.keyboardSaveEvent); window.removeEventListener("keydown", this.keyboardDeleteEvent); window.removeEventListener("keydown", this.keyboardDuplicateEvent); }, methods: { showMore() { // Do not save yet this.requiresActionOnRouteLeave = false; const params = Object.assign({}, this.$route.params); if (this.isNew) { this.$router.push({ name: "NewSidebarView", params }); } else { this.$router.push({ name: (0,_utils_router_js__WEBPACK_IMPORTED_MODULE_9__.getPrefixedRoute)(this.$route.name, "EditSidebarView"), params }); } }, getDomElementForPopover(isNew, route) { let matchingDomObject; if (this.isWidget) { const objectId = this.widgetEventDetails.object; const recurrenceId = this.widgetEventDetails.recurrenceId; matchingDomObject = this.widgetRef.querySelector(".fc-event[data-object-id=\"".concat(objectId, "\"][data-recurrence-id=\"").concat(recurrenceId, "\"]")); this.placement = "auto"; } else if (isNew) { matchingDomObject = document.querySelector(".fc-highlight"); this.placement = "auto"; if (!matchingDomObject) { matchingDomObject = document.querySelector('.fc-event[data-is-new="yes"]'); } } else { const objectId = route.params.object; const recurrenceId = route.params.recurrenceId; matchingDomObject = document.querySelector(".fc-event[data-object-id=\"".concat(objectId, "\"][data-recurrence-id=\"").concat(recurrenceId, "\"]")); this.placement = "auto"; } if (!matchingDomObject) { matchingDomObject = document.querySelector("#app-navigation-vue"); this.placement = "right"; } if (!matchingDomObject) { matchingDomObject = document.querySelector("body"); this.placement = "auto"; } console.info("getDomElementForPopover", matchingDomObject, this.placement); return matchingDomObject; }, repositionPopover() { const isNew = this.isWidget ? false : this.$route.name === "NewPopoverView"; this.$refs.popover.$children[0].$refs.reference = this.getDomElementForPopover(isNew, this.$route); this.$refs.popover.$children[0].$refs.popper.dispose(); this.$refs.popover.$children[0].$refs.popper.init(); }, /** * Save changes and leave when creating a new event or return to viewing mode when editing * an existing event. Stay in editing mode if an error occurrs. * * @param {boolean} thisAndAllFuture Modify this and all future events * @return {Promise} */ async saveAndView(thisAndAllFuture) { // Transitioning from new to edit routes is not implemented for now if (this.isNew) { await this.saveAndLeave(thisAndAllFuture); return; } this.isViewing = true; try { await this.save(thisAndAllFuture); this.requiresActionOnRouteLeave = false; } catch (error) { this.isViewing = false; } }, async saveAsPendingCalendarEvent() { if (this.isNew) { await this.savePendingCalendar(false); return; } this.isViewing = true; try { await this.savePendingCalendar(false); this.requiresActionOnRouteLeave = false; } catch (error) { this.isViewing = false; } }, addArticle(article) { if (this.description && this.description !== "") { this.updateDescription(this.description + ";" + article); } else { this.updateDescription(article); } }, removeArticle(article) { if (this.description && this.description !== "") { let values = []; let items = this.description.split(";"); items.forEach(item => { if (item !== article) { values.push(item); } }); this.updateDescription(values.join(";")); } else { this.updateDescription(null); } }, getDefuntUrl() { const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)("/apps/gestion/api/getDefundIdByCalendarUuid/".concat(this.calendarObjectInstance.eventComponent.uid)); axios__WEBPACK_IMPORTED_MODULE_1___default().get(url).then(response => { console.log(this.calendarObjectInstance); if (response.data.id) { this.defuntUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)("/apps/gestion/defunt/".concat(response.data.id, "/show")); } }); }, viewDefunt() { window.open(this.defuntUrl, "_blank"); } } }); /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/App.vue?vue&type=template&id=7ba5bd90": /*!************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/App.vue?vue&type=template&id=7ba5bd90 ***! \************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("router-view"); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader.vue?vue&type=template&id=66a813e8": /*!*****************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader.vue?vue&type=template&id=66a813e8 ***! \*****************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("header", { staticClass: "app-navigation-header" }, [_c("AppNavigationHeaderDatePicker", { attrs: { "can-access-previous-event": _vm.canAccessPreviousEvent } }), _vm._v(" "), _c("div", { staticClass: "new-event-today-view-section" }, [!_vm.isPublic ? _c("AppNavigationHeaderNewEvent") : _vm._e(), _vm._v(" "), _c("AppNavigationHeaderTodayButton"), _vm._v(" "), _c("AppNavigationHeaderViewMenu", { attrs: { "can-access-previous-event": _vm.canAccessPreviousEvent } })], 1)], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue?vue&type=template&id=e8250812": /*!***********************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue?vue&type=template&id=e8250812 ***! \***********************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "datepicker-button-section" }, [!_vm.isWidget && _vm.canAccessPreviousEvent ? _c("NcButton", { directives: [{ name: "shortkey", rawName: "v-shortkey", value: _vm.previousShortKeyConf, expression: "previousShortKeyConf" }], staticClass: "datepicker-button-section__previous button", attrs: { "aria-label": _vm.previousLabel, name: _vm.previousLabel }, on: { click: _vm.navigateToPreviousTimeRange, shortkey: _vm.navigateToPreviousTimeRange }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ChevronLeftIcon", { attrs: { size: 22 } })]; }, proxy: true }], null, false, 3894911889) }) : _vm._e(), _vm._v(" "), !_vm.isWidget ? _c("NcButton", { staticClass: "datepicker-button-section__datepicker-label button datepicker-label", on: { click: function ($event) { $event.stopPropagation(); $event.preventDefault(); return _vm.toggleDatepicker.apply(null, arguments); }, mousedown: function ($event) { $event.stopPropagation(); $event.preventDefault(); return _vm.doNothing.apply(null, arguments); }, mouseup: function ($event) { $event.stopPropagation(); $event.preventDefault(); return _vm.doNothing.apply(null, arguments); } } }, [_vm._v("\n\t\t" + _vm._s(_vm._f("formatDateRange")(_vm.selectedDate, _vm.view, _vm.locale)) + "\n\t")]) : _vm._e(), _vm._v(" "), _c("DatePicker", { ref: "datepicker", class: _vm.isWidget ? "datepicker-widget" : "datepicker-button-section__datepicker", attrs: { "append-to-body": _vm.isWidget, date: _vm.selectedDate, "is-all-day": true, open: _vm.isDatepickerOpen, type: _vm.view === "multiMonthYear" ? "year" : "date", min: _vm.minimumDate }, on: { "update:open": function ($event) { _vm.isDatepickerOpen = $event; }, change: _vm.navigateToDate } }), _vm._v(" "), !_vm.isWidget ? _c("NcButton", { directives: [{ name: "shortkey", rawName: "v-shortkey", value: _vm.nextShortKeyConf, expression: "nextShortKeyConf" }], staticClass: "datepicker-button-section__next button", attrs: { "aria-label": _vm.nextLabel, name: _vm.nextLabel }, on: { click: _vm.navigateToNextTimeRange, shortkey: _vm.navigateToNextTimeRange }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ChevronRightIcon", { attrs: { size: 22 } })]; }, proxy: true }], null, false, 849334666) }) : _vm._e()], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=template&id=673844b5&scoped=true": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=template&id=673844b5&scoped=true ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcButton", { directives: [{ name: "shortkey", rawName: "v-shortkey", value: ["c"], expression: "['c']" }], staticClass: "button new-event", attrs: { "aria-label": _vm.newEventButtonAriaLabel, type: "primary" }, on: { click: _vm.newEvent, shortkey: _vm.newEvent }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Plus", { attrs: { size: 20 } })]; }, proxy: true }]) }, [_vm._v("\n\t" + _vm._s(_vm.$t("calendar", "Event")) + "\n")]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderTodayButton.vue?vue&type=template&id=a0dcdc70": /*!************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderTodayButton.vue?vue&type=template&id=a0dcdc70 ***! \************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcButton", { directives: [{ name: "shortkey", rawName: "v-shortkey", value: ["t"], expression: "['t']" }], staticClass: "button today", on: { shortkey: _vm.today, click: _vm.today } }, [_vm._v("\n\t" + _vm._s(_vm.$t("calendar", "Today")) + "\n")]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderViewMenu.vue?vue&type=template&id=1d89dc7f": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderViewMenu.vue?vue&type=template&id=1d89dc7f ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("Actions", { directives: [{ name: "shortkey", rawName: "v-shortkey", value: _vm.shortKeyConf, expression: "shortKeyConf" }], attrs: { "menu-align": "right" }, nativeOn: { shortkey: function ($event) { return _vm.selectViewFromShortcut.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c(_vm.defaultIcon, { tag: "component", attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v(" "), _vm._l(_vm.views, function (view) { return _c("ActionButton", { key: view.id, attrs: { icon: view.icon }, on: { click: function ($event) { return _vm.selectView(view.id); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c(view.icon, { tag: "component", attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, true) }, [_vm._v("\n\t\t" + _vm._s(view.label) + "\n\t")]); })], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppointmentConfigList.vue?vue&type=template&id=67056036": /*!*******************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppointmentConfigList.vue?vue&type=template&id=67056036 ***! \*******************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.hasAtLeastOneCalendar ? _c("div", { staticClass: "appointment-config-list" }, [_c("AppNavigationCaption", { staticClass: "appointment-config-list__caption", attrs: { name: _vm.t("calendar", "Appointments") }, scopedSlots: _vm._u([_vm.hasUserEmailAddress ? { key: "actions", fn: function () { return [_c("ActionButton", { attrs: { "close-after-click": true }, on: { click: function ($event) { _vm.showModalForNewConfig = true; } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("PlusIcon", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 3690201279) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Add new")) + "\n\t\t\t")])]; }, proxy: true } : null], null, true) }), _vm._v(" "), _vm.hasUserEmailAddress ? [_vm.sortedConfigs.length > 0 ? _vm._l(_vm.sortedConfigs, function (config) { return _c("AppointmentConfigListItem", { key: config.id, attrs: { config: config }, on: { delete: function ($event) { return _vm.deleteConfig(config); } } }); }) : _vm._e(), _vm._v(" "), _vm.showModalForNewConfig ? _c("AppointmentConfigModal", { attrs: { "is-new": true, config: _vm.defaultConfig }, on: { close: _vm.closeModal } }) : _vm._e()] : _c("NoEmailAddressWarning")], 2) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppointmentConfigList/AppointmentConfigListItem.vue?vue&type=template&id=a2632330": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppointmentConfigList/AppointmentConfigListItem.vue?vue&type=template&id=a2632330 ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", [_c("AppNavigationItem", { attrs: { name: _vm.config.name }, on: { click: function ($event) { $event.preventDefault(); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarCheckIcon", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }, { key: "actions", fn: function () { return [_c("ActionLink", { attrs: { href: _vm.config.bookingUrl, target: "_blank" }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("OpenInNewIcon", { attrs: { size: 20 } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Preview")) + "\n\t\t\t")]), _vm._v(" "), _vm.hasClipboard ? _c("ActionButton", { attrs: { "close-after-click": true }, on: { click: _vm.copyLink }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("LinkVariantIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 3760589108) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Copy link")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _c("ActionButton", { attrs: { "close-after-click": true }, on: { click: function ($event) { _vm.showModal = true; } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("PencilIcon", { attrs: { size: 20 } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Edit")) + "\n\t\t\t")]), _vm._v(" "), _c("ActionButton", { attrs: { "close-after-click": true }, on: { click: function ($event) { return _vm.$emit("delete", $event); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("DeleteIcon", { attrs: { size: 20 } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Delete")) + "\n\t\t\t")])]; }, proxy: true }]) }), _vm._v(" "), _vm.showModal ? _c("AppointmentConfigModal", { attrs: { "is-new": false, config: _vm.config }, on: { close: _vm.closeModal } }) : _vm._e()], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList.vue?vue&type=template&id=146b35f4": /*!**********************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList.vue?vue&type=template&id=146b35f4 ***! \**********************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("draggable", _vm._b({ attrs: { disabled: _vm.disableDragging, draggable: ".draggable-calendar-list-item" }, on: { update: _vm.update }, scopedSlots: _vm._u([{ key: "footer", fn: function () { return [_vm.loadingCalendars ? _c("CalendarListItemLoadingPlaceholder") : _vm._e()]; }, proxy: true }]), model: { value: _vm.calendars, callback: function ($$v) { _vm.calendars = $$v; }, expression: "calendars" } }, "draggable", { swapThreshold: 0.3, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3 }, false), [!_vm.isPublic ? _vm._l(_vm.calendars, function (calendar) { return _c("CalendarListItem", { key: calendar.id, staticClass: "draggable-calendar-list-item", attrs: { calendar: calendar } }); }) : _vm._l(_vm.calendars, function (calendar) { return _c("PublicCalendarListItem", { key: calendar.id, attrs: { calendar: calendar } }); })], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItem.vue?vue&type=template&id=a7253930&scoped=true": /*!***************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItem.vue?vue&type=template&id=a7253930&scoped=true ***! \***************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("AppNavigationItem", { class: { deleted: _vm.isBeingDeleted, disabled: !_vm.calendar.enabled }, attrs: { loading: _vm.calendar.loading, "aria-description": _vm.descriptionAppNavigationItem, name: _vm.calendar.displayName || _vm.$t("calendar", "Untitled calendar") }, on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.toggleEnabled.apply(null, arguments); }, "update:menuOpen": function ($event) { _vm.actionsMenuOpen = $event; } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_vm.calendar.enabled ? _c("CheckboxBlankCircle", { attrs: { size: 20, "fill-color": _vm.calendar.color } }) : _c("CheckboxBlankCircleOutline", { attrs: { size: 20, "fill-color": _vm.calendar.color } })]; }, proxy: true }, { key: "counter", fn: function () { return [_vm.isSharedByMe ? _c("LinkVariant", { attrs: { size: 20 } }) : _vm.isSharedWithMe && _vm.loadedOwnerPrincipal && !_vm.actionsMenuOpen ? _c("NcAvatar", { attrs: { user: _vm.ownerUserId, "display-name": _vm.ownerDisplayname } }) : _vm.isSharedWithMe && !_vm.loadedOwnerPrincipal ? _c("div", { staticClass: "icon icon-loading" }) : _vm._e()]; }, proxy: true }, { key: "actions", fn: function () { return [!_vm.isBeingDeleted ? [_vm.isSharedWithMe ? [_c("NcActionCaption", { attrs: { name: _vm.$t("calendar", "Shared with you by") } }), _vm._v(" "), _c("NcActionText", { attrs: { name: _vm.ownerDisplayname }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("div", { staticClass: "actions-icon-avatar" }, [_c("NcAvatar", { attrs: { user: _vm.ownerUserId, "display-name": _vm.ownerDisplayname, size: 30 } })], 1)]; }, proxy: true }], null, false, 1602781365) }), _vm._v(" "), _c("NcActionSeparator")] : _vm._e(), _vm._v(" "), _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.showEditModal.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Pencil", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2864695315) }, [_vm._v(" "), _vm.canBeShared ? [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Edit and share calendar")) + "\n\t\t\t\t")] : [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Edit calendar")) + "\n\t\t\t\t")]], 2)] : [_vm.calendar.isSharedWithMe ? _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.cancelDeleteCalendar.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Undo", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 4006107262) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$n("calendar", "Unsharing the calendar in {countdown} second", "Unsharing the calendar in {countdown} seconds", _vm.countdown, { countdown: _vm.countdown })) + "\n\t\t\t")]) : _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.cancelDeleteCalendar.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Undo", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$n("calendar", "Deleting the calendar in {countdown} second", "Deleting the calendar in {countdown} seconds", _vm.countdown, { countdown: _vm.countdown })) + "\n\t\t\t")])]]; }, proxy: true }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItemLoadingPlaceholder.vue?vue&type=template&id=78bfc69f": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItemLoadingPlaceholder.vue?vue&type=template&id=78bfc69f ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm._m(0); }; var staticRenderFns = [function () { var _vm = this, _c = _vm._self._c; return _c("li", { staticClass: "app-navigation-loading-placeholder-entry" }, [_c("div", { staticClass: "icon icon-loading" })]); }]; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListNew.vue?vue&type=template&id=5871395b": /*!**************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListNew.vue?vue&type=template&id=5871395b ***! \**************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("AppNavigationItem", { staticClass: "app-navigation-entry-new-calendar", class: { "app-navigation-entry-new-calendar--open": _vm.isOpen }, attrs: { name: _vm.$t("calendar", "New calendar"), "menu-open": _vm.isOpen }, on: { "update:menuOpen": function ($event) { _vm.isOpen = $event; }, "update:menu-open": function ($event) { _vm.isOpen = $event; }, click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.toggleDialog.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Plus", { attrs: { size: 20 } })]; }, proxy: true }, { key: "actions", fn: function () { return [_vm.showCreateCalendarLabel ? _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.openCreateCalendarInput.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2920828918) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "New calendar")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCreateCalendarInput ? _c("ActionInput", { attrs: { "aria-label": _vm.$t("calendar", "Name for new calendar") }, on: { submit: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.createNewCalendar.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2920828918) }) : _vm._e(), _vm._v(" "), _vm.showCreateCalendarSaving ? _c("ActionText", { attrs: { icon: "icon-loading-small" } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Creating calendar …")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCreateCalendarTaskListLabel ? _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.openCreateCalendarTaskListInput.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarCheck", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 238879706) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "New calendar with task list")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCreateCalendarTaskListInput ? _c("ActionInput", { attrs: { "aria-label": _vm.$t("calendar", "Name for new calendar") }, on: { submit: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.createNewCalendarTaskList.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarCheck", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 238879706) }) : _vm._e(), _vm._v(" "), _vm.showCreateCalendarTaskListSaving ? _c("ActionText", { attrs: { icon: "icon-loading-small" } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Creating calendar …")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.canSubscribeLink ? _c("ActionSeparator") : _vm._e(), _vm._v(" "), _vm.showCreateSubscriptionLabel && _vm.canSubscribeLink ? _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.openCreateSubscriptionInput.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("LinkVariant", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1436011705) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "New subscription from link (read-only)")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCreateSubscriptionInput ? _c("ActionInput", { attrs: { "aria-label": _vm.$t("calendar", "Name for new calendar") }, on: { submit: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.createNewSubscription.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("LinkVariant", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1436011705) }) : _vm._e(), _vm._v(" "), _vm.showCreateSubscriptionSaving ? _c("ActionText", { attrs: { icon: "icon-loading-small" } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Creating subscription …")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.canSubscribeLink ? _c("ActionButton", { on: { click: function ($event) { _vm.showHolidaySubscriptionPicker = true; } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Web", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 4289778750) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.t("calendar", "Add public holiday calendar")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.hasPublicCalendars ? _c("ActionButton", { on: { click: function ($event) { _vm.showPublicCalendarSubscriptionPicker = true; } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Web", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 4289778750) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.t("calendar", "Add custom public calendar")) + "\n\t\t\t")]) : _vm._e()]; }, proxy: true }, { key: "extra", fn: function () { return [_vm.showHolidaySubscriptionPicker ? _c("PublicCalendarSubscriptionPicker", { attrs: { "show-holidays": true }, on: { close: function ($event) { _vm.showHolidaySubscriptionPicker = false; } } }) : _vm._e(), _vm._v(" "), _vm.showPublicCalendarSubscriptionPicker ? _c("PublicCalendarSubscriptionPicker", { on: { close: function ($event) { _vm.showPublicCalendarSubscriptionPicker = false; } } }) : _vm._e()]; }, proxy: true }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Moment.vue?vue&type=template&id=16f5900e": /*!*****************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Moment.vue?vue&type=template&id=16f5900e ***! \*****************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("span", { staticClass: "live-relative-timestamp", attrs: { "data-timestamp": _vm.numericTimestamp * 1000, name: _vm.title } }, [_vm._v(_vm._s(_vm.formatted))]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/PublicCalendarListItem.vue?vue&type=template&id=97d1c29e": /*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/PublicCalendarListItem.vue?vue&type=template&id=97d1c29e ***! \*********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("AppNavigationItem", { attrs: { loading: _vm.calendar.loading, name: _vm.calendar.displayName || _vm.$t("calendar", "Untitled calendar"), "menu-open": _vm.menuOpen }, on: { "update:menuOpen": function ($event) { _vm.menuOpen = $event; }, "update:menu-open": function ($event) { _vm.menuOpen = $event; }, click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.toggleEnabled.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_vm.calendar.enabled ? _c("AppNavigationIconBullet", { attrs: { color: _vm.calendar.color }, on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.toggleEnabled.apply(null, arguments); } } }) : _vm._e()]; }, proxy: true }, { key: "counter", fn: function () { return [_c("Avatar", { attrs: { user: _vm.owner, "is-guest": true, "disable-tooltip": true, "disable-menu": true } })]; }, proxy: true }, { key: "actions", fn: function () { return [_vm.showCopySubscriptionLinkLabel ? _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.copySubscriptionLink.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("LinkVariant", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1436011705) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Copy subscription link")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopySubscriptionLinkSpinner ? _c("ActionText", { attrs: { icon: "icon-loading-small" } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Copying link …")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopySubscriptionLinkSuccess ? _c("ActionText", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("LinkVariant", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1436011705) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Copied link")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopySubscriptionLinkError ? _c("ActionText", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("LinkVariant", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1436011705) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Could not copy link")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _c("ActionLink", { attrs: { target: "_blank", href: _vm.downloadUrl }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Download", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Export")) + "\n\t\t")])]; }, proxy: true }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Trashbin.vue?vue&type=template&id=7cd8fdf0&scoped=true": /*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Trashbin.vue?vue&type=template&id=7cd8fdf0&scoped=true ***! \*******************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("AppNavigationItem", { attrs: { name: _vm.t("calendar", "Trash bin"), pinned: true }, on: { click: function ($event) { $event.preventDefault(); return _vm.onShow.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }, { key: "extra", fn: function () { return [_vm.showModal ? _c("Modal", { attrs: { size: "large" }, on: { close: function ($event) { _vm.showModal = false; } } }, [_c("div", { staticClass: "modal__content" }, [_c("h2", [_vm._v(_vm._s(_vm.t("calendar", "Trash bin")))]), _vm._v(" "), _vm.loading ? _c("EmptyContent", { staticClass: "modal__content__loading", attrs: { icon: "icon-loading", description: _vm.t("calendar", "Loading deleted items.") } }) : !_vm.items.length ? _c("EmptyContent", { staticClass: "modal__content__empty", attrs: { description: _vm.t("calendar", "You do not have any deleted items.") }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }) : [_c("table", [_c("tr", [_c("th", { staticClass: "name" }, [_vm._v("\n\t\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Name")) + "\n\t\t\t\t\t\t\t")]), _vm._v(" "), _c("th", { staticClass: "deletedAt" }, [_vm._v("\n\t\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Deleted")) + "\n\t\t\t\t\t\t\t")]), _vm._v(" "), _c("th", [_vm._v(" ")])]), _vm._v(" "), _vm._l(_vm.items, function (item) { return _c("tr", { key: item.url }, [_c("td", [_c("div", { staticClass: "item" }, [_c("div", [_c("div", { staticClass: "color-dot", style: { "background-color": item.color } })]), _vm._v(" "), _c("div", [_c("div", { staticClass: "item-name" }, [_vm._v("\n\t\t\t\t\t\t\t\t\t\t\t" + _vm._s(item.name) + "\n\t\t\t\t\t\t\t\t\t\t")]), _vm._v(" "), item.subline ? _c("div", { staticClass: "item-subline" }, [_vm._v("\n\t\t\t\t\t\t\t\t\t\t\t" + _vm._s(item.subline) + "\n\t\t\t\t\t\t\t\t\t\t")]) : _vm._e()])])]), _vm._v(" "), _c("td", { staticClass: "deletedAt" }, [_c("Moment", { staticClass: "timestamp", attrs: { timestamp: item.deletedAt } })], 1), _vm._v(" "), _c("td", [_c("div", { staticClass: "item-actions" }, [_c("NcButton", { attrs: { type: "secondary" }, on: { click: function ($event) { return _vm.restore(item); } } }, [_vm._v("\n\t\t\t\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Restore")) + "\n\t\t\t\t\t\t\t\t\t")]), _vm._v(" "), _c("Actions", { attrs: { "force-menu": true } }, [_c("ActionButton", { on: { click: function ($event) { return _vm.onDeletePermanently(item); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, true) }, [_vm._v("\n\t\t\t\t\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Delete permanently")) + "\n\t\t\t\t\t\t\t\t\t\t")])], 1)], 1)])]); })], 2), _vm._v(" "), _c("div", { staticClass: "footer" }, [_vm.retentionDuration ? _c("p", [_vm._v("\n\t\t\t\t\t\t\t" + _vm._s(_vm.n("calendar", "Items in the trash bin are deleted after {numDays} day", "Items in the trash bin are deleted after {numDays} days", _vm.retentionDuration, { numDays: _vm.retentionDuration })) + "\n\t\t\t\t\t\t")]) : _vm._e(), _vm._v(" "), _c("NcButton", { attrs: { type: "error" }, on: { click: function ($event) { return _vm.onEmptyTrashBin(); } } }, [_vm._v("\n\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Empty trash bin")) + "\n\t\t\t\t\t\t")])], 1)]], 2)]) : _vm._e()]; }, proxy: true }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal.vue?vue&type=template&id=5a0e780b&scoped=true": /*!***************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal.vue?vue&type=template&id=5a0e780b&scoped=true ***! \***************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return !!_vm.editCalendarModal && _vm.calendar ? _c("NcModal", { attrs: { size: "normal" }, on: { close: _vm.closeModal } }, [_c("div", { staticClass: "edit-calendar-modal" }, [_c("h2", [_vm._v(_vm._s(_vm.$t("calendar", "Edit calendar")))]), _vm._v(" "), _c("div", { staticClass: "edit-calendar-modal__name-and-color" }, [_c("div", { staticClass: "edit-calendar-modal__name-and-color__color" }, [_c("NcColorPicker", { attrs: { "advanced-fields": true }, on: { "update:value": function ($event) { _vm.calendarColorChanged = true; } }, model: { value: _vm.calendarColor, callback: function ($$v) { _vm.calendarColor = $$v; }, expression: "calendarColor" } }, [_c("div", { staticClass: "edit-calendar-modal__name-and-color__color__dot", style: { "background-color": _vm.calendarColor } })])], 1), _vm._v(" "), _c("input", { directives: [{ name: "model", rawName: "v-model", value: _vm.calendarName, expression: "calendarName" }], staticClass: "edit-calendar-modal__name-and-color__name", attrs: { type: "text", placeholder: _vm.$t("calendar", "Calendar name …") }, domProps: { value: _vm.calendarName }, on: { input: [function ($event) { if ($event.target.composing) return; _vm.calendarName = $event.target.value; }, function ($event) { _vm.calendarNameChanged = true; }] } })]), _vm._v(" "), _vm.canBeShared ? [_c("h2", { staticClass: "edit-calendar-modal__sharing-header" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Share calendar")) + "\n\t\t\t")]), _vm._v(" "), _c("div", { staticClass: "edit-calendar-modal__sharing" }, [_c("SharingSearch", { attrs: { calendar: _vm.calendar } }), _vm._v(" "), _vm.canBePublished ? _c("PublishCalendar", { attrs: { calendar: _vm.calendar } }) : _vm._e(), _vm._v(" "), _c("InternalLink", { attrs: { calendar: _vm.calendar } }), _vm._v(" "), _vm._l(_vm.calendar.shares, function (sharee) { return _c("ShareItem", { key: sharee.uri, attrs: { sharee: sharee, calendar: _vm.calendar } }); })], 2)] : _vm._e(), _vm._v(" "), _c("div", { staticClass: "edit-calendar-modal__actions" }, [_vm.calendar.isSharedWithMe ? _c("NcButton", { attrs: { type: "tertiary" }, on: { click: _vm.deleteCalendar }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CloseIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 2428343285) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Unshare from me")) + "\n\t\t\t")]) : _c("NcButton", { attrs: { type: "tertiary" }, on: { click: _vm.deleteCalendar }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("DeleteIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 1311746650) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Delete")) + "\n\t\t\t")]), _vm._v(" "), _c("NcButton", { attrs: { type: "tertiary", href: _vm.downloadUrl }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("DownloadIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 2598526839) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Export")) + "\n\t\t\t")]), _vm._v(" "), _c("NcButton", { attrs: { type: "secondary" }, on: { click: _vm.saveAndClose }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CheckIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 2630571749) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Save")) + "\n\t\t\t")])], 1)], 2)]) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/InternalLink.vue?vue&type=template&id=1d0631aa&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/InternalLink.vue?vue&type=template&id=1d0631aa&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "internal-link" }, [_c("div", { staticClass: "internal-link__icon" }, [_c("OpenInNewIcon", { attrs: { size: 20 } })], 1), _vm._v(" "), _c("p", { staticClass: "internal-link__label" }, [_vm._v("\n\t\t" + _vm._s(_vm.t("calendar", "Internal link")) + "\n\t\t"), _c("span", { staticClass: "internal-link__label__hint" }, [_vm._v("\n\t\t\t" + _vm._s(_vm.t("calendar", "A private link that can be used with external clients")) + "\n\t\t")])]), _vm._v(" "), _c("NcActions", [_c("NcActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.copyLink.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ClipboardArrowLeftOutline", { attrs: { size: 20 } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.t("calendar", "Copy internal link")) + "\n\t\t")])], 1)], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue?vue&type=template&id=58de5449&scoped=true": /*!*******************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue?vue&type=template&id=58de5449&scoped=true ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "publish-calendar" }, [_c("div", { staticClass: "publish-calendar__icon" }, [_c("LinkVariant", { attrs: { size: 20 } })], 1), _vm._v(" "), _c("p", { staticClass: "publish-calendar__label" }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Share link")) + "\n\t")]), _vm._v(" "), _vm.isPublished ? [_c("NcActions", [_c("NcActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.copyPublicLink.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ClipboardArrowLeftOutline", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2910159552) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Copy public link")) + "\n\t\t\t")])], 1), _vm._v(" "), _c("NcActions", [_vm.showEMailLabel ? _c("NcActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.openEMailLinkInput.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Email", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 4241783042) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Send link to calendar via email")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showEMailInput ? _c("NcActionInput", { on: { submit: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.sendLinkViaEMail.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Email", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 4241783042) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Enter one address")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showEMailSending ? _c("NcActionText", { attrs: { icon: "icon-loading-small" } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Sending email …")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopySubscriptionLinkLabel ? _c("NcActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.copySubscriptionLink.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2920828918) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Copy subscription link")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopySubscriptionLinkSpinner ? _c("NcActionText", { attrs: { icon: "icon-loading-small" } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Copying link …")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopySubscriptionLinkSuccess ? _c("NcActionText", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2920828918) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Copied link")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopySubscriptionLinkError ? _c("NcActionText", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2920828918) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Could not copy link")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopyEmbedCodeLinkLabel ? _c("NcActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.copyEmbedCode.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CodeBrackets", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 860035096) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Copy embedding code")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopyEmbedCodeLinkSpinner ? _c("NcActionText", { attrs: { icon: "icon-loading-small" } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Copying code …")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopyEmbedCodeLinkSuccess ? _c("NcActionText", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CodeBrackets", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 860035096) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Copied code")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.showCopyEmbedCodeLinkError ? _c("NcActionText", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CodeBrackets", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 860035096) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Could not copy code")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), !_vm.unpublishingCalendar ? _c("NcActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.unpublishCalendar.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Delete share link")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.unpublishingCalendar ? _c("NcActionText", { attrs: { icon: "icon-loading-small" } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Deleting share link …")) + "\n\t\t\t")]) : _vm._e()], 1)] : _c("NcActions", [_c("NcActionButton", { attrs: { "aria-label": "$t('calendar', 'Share link')", disabled: _vm.publishingCalendar }, on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.publishCalendar.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("PlusIcon", { attrs: { size: 20 } })]; }, proxy: true }]) })], 1)], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/ShareItem.vue?vue&type=template&id=5a34d6ee&scoped=true": /*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/ShareItem.vue?vue&type=template&id=5a34d6ee&scoped=true ***! \*************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "share-item" }, [_vm.sharee.isGroup ? _c("AccountMultiple", { staticClass: "share-item__group-icon", attrs: { size: 20 } }) : _vm.sharee.isCircle ? _c("IconCircle") : _c("NcAvatar", { attrs: { user: _vm.sharee.userId, "display-name": _vm.sharee.displayName } }), _vm._v(" "), _c("p", { staticClass: "share-item__label" }, [_vm._v("\n\t\t" + _vm._s(_vm.sharee.displayName) + "\n\t")]), _vm._v(" "), _c("input", { staticClass: "checkbox", attrs: { id: "".concat(_vm.id, "-can-edit"), disabled: _vm.updatingSharee, type: "checkbox" }, domProps: { checked: _vm.sharee.writeable }, on: { change: _vm.updatePermission } }), _vm._v(" "), _c("label", { attrs: { for: "".concat(_vm.id, "-can-edit") } }, [_vm._v(_vm._s(_vm.$t("calendar", "can edit")))]), _vm._v(" "), _c("NcActions", [_c("NcActionButton", { attrs: { disabled: _vm.updatingSharee }, on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.unshare.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Unshare with {displayName}", { displayName: _vm.sharee.displayName })) + "\n\t\t")])], 1)], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/SharingSearch.vue?vue&type=template&id=2c8ef200&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/SharingSearch.vue?vue&type=template&id=2c8ef200&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "sharing-search" }, [_c("NcSelect", { staticClass: "sharing-search__select", class: { showContent: _vm.inputGiven, "icon-loading": _vm.isLoading }, attrs: { options: _vm.usersOrGroups, searchable: true, "internal-search": false, "max-height": 600, placeholder: _vm.$t("calendar", "Share with users or groups"), "user-select": true, "filter-by": _vm.filterResults, clearable: false, "open-direction": "above", "track-by": "user", label: "displayName" }, on: { search: _vm.findSharee, "option:selected": _vm.shareCalendar }, scopedSlots: _vm._u([{ key: "no-options", fn: function () { return [_c("span", [_vm._v(_vm._s(_vm.$t("calendar", "No users or groups")))])]; }, proxy: true }]) })], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedHeader/EmbedHeaderTodayButton.vue?vue&type=template&id=32325380": /*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedHeader/EmbedHeaderTodayButton.vue?vue&type=template&id=32325380 ***! \********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "today-button-section" }, [_c("NcButton", { staticClass: "button", attrs: { "aria-label": _vm.title, name: _vm.title }, on: { click: function ($event) { return _vm.today(); } } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Today")) + "\n\t")])], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue?vue&type=template&id=130155ee": /*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedHeader/EmbedHeaderViewButtons.vue?vue&type=template&id=130155ee ***! \********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "view-button-section" }, [_c("NcButton", { staticClass: "button", attrs: { type: _vm.isAgendaDayViewSelected ? "primary" : "secondary" }, on: { click: function ($event) { return _vm.view("timeGridDay"); } } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Day")) + "\n\t")]), _vm._v(" "), _c("NcButton", { staticClass: "button", attrs: { type: _vm.isAgendaWeekViewSelected ? "primary" : "secondary" }, on: { click: function ($event) { return _vm.view("timeGridWeek"); } } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Week")) + "\n\t")]), _vm._v(" "), _c("NcButton", { staticClass: "button", attrs: { type: _vm.isMonthViewSelected ? "primary" : "secondary" }, on: { click: function ($event) { return _vm.view("dayGridMonth"); } } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Month")) + "\n\t")]), _vm._v(" "), _c("NcButton", { staticClass: "button", attrs: { type: _vm.isYearViewSelected ? "primary" : "secondary" }, on: { click: function ($event) { return _vm.view("multiMonthYear"); } } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Year")) + "\n\t")]), _vm._v(" "), _c("NcButton", { staticClass: "button", class: _vm.isMonthListViewSelected ? "primary" : "secondary", on: { click: function ($event) { return _vm.view("listMonth"); } } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "List")) + "\n\t")])], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedTopNavigation.vue?vue&type=template&id=1461310c": /*!****************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedTopNavigation.vue?vue&type=template&id=1461310c ***! \****************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("header", { attrs: { id: _vm.isWidget ? "widget-header" : "embed-header", role: "banner" } }, [_c("div", { class: _vm.isWidget ? "widget-header__date-section" : "embed-header__date-section" }, [_c("AppNavigationHeaderDatePicker", { attrs: { "is-widget": _vm.isWidget, "can-access-previous-event": _vm.canAccessPreviousEvent } }), _vm._v(" "), !_vm.isWidget ? _c("AppNavigationHeaderTodayButton") : _vm._e()], 1), _vm._v(" "), _c("div", { class: _vm.isWidget ? "widget-header__views-section" : "embed-header__views-section" }, [_c("AppNavigationHeaderViewButtons", { attrs: { "is-widget": _vm.isWidget } })], 1), _vm._v(" "), !_vm.isWidget ? _c("div", { staticClass: "widget-header__share-section" }, [_c("Actions", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Download", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 489076122) }, [_vm._v(" "), _vm._l(_vm.subscriptions, function (calendar) { return _c("ActionLink", { key: calendar.id, attrs: { target: "_blank", href: calendar.url + "?export" }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Download", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, true) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Export {name}", { name: calendar.displayName || _vm.$t("calendar", "Untitled calendar") })) + "\n\t\t\t")]); })], 2), _vm._v(" "), _c("Actions", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2920828918) }, [_vm._v(" "), _vm._l(_vm.subscriptions, function (calendar) { return _c("ActionButton", { key: calendar.id, on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.copySubscriptionLink(calendar); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, true) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Subscribe to {name}", { name: calendar.displayName || _vm.$t("calendar", "Untitled calendar") })) + "\n\t\t\t")]); })], 2)], 1) : _vm._e()]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings.vue?vue&type=template&id=fda924a6": /*!******************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings.vue?vue&type=template&id=fda924a6 ***! \******************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("AppNavigationSettings", { attrs: { "exclude-click-outside-selectors": [".vs__dropdown-menu", ".modal-wrapper"], name: _vm.settingsTitle } }, [_c("ul", { staticClass: "settings-fieldset-interior" }, [_c("SettingsImportSection", { attrs: { "is-disabled": _vm.loadingCalendars } }), _vm._v(" "), _c("ActionCheckbox", { staticClass: "settings-fieldset-interior-item", attrs: { checked: _vm.birthdayCalendar, disabled: _vm.isBirthdayCalendarDisabled }, on: { "update:checked": _vm.toggleBirthdayEnabled } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Enable birthday calendar")) + "\n\t\t")]), _vm._v(" "), _c("ActionCheckbox", { staticClass: "settings-fieldset-interior-item", attrs: { checked: _vm.showTasks, disabled: _vm.savingTasks }, on: { "update:checked": _vm.toggleTasksEnabled } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Show tasks in calendar")) + "\n\t\t")]), _vm._v(" "), _c("ActionCheckbox", { staticClass: "settings-fieldset-interior-item", attrs: { checked: _vm.showPopover, disabled: _vm.savingPopover }, on: { "update:checked": _vm.togglePopoverEnabled } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Enable simplified editor")) + "\n\t\t")]), _vm._v(" "), _c("ActionCheckbox", { staticClass: "settings-fieldset-interior-item", attrs: { checked: _vm.eventLimit, disabled: _vm.savingEventLimit }, on: { "update:checked": _vm.toggleEventLimitEnabled } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Limit the number of events displayed in the monthly view")) + "\n\t\t")]), _vm._v(" "), _c("ActionCheckbox", { staticClass: "settings-fieldset-interior-item", attrs: { checked: _vm.showWeekends, disabled: _vm.savingWeekend }, on: { "update:checked": _vm.toggleWeekendsEnabled } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Show weekends")) + "\n\t\t")]), _vm._v(" "), _c("ActionCheckbox", { staticClass: "settings-fieldset-interior-item", attrs: { checked: _vm.showWeekNumbers, disabled: _vm.savingWeekNumber }, on: { "update:checked": _vm.toggleWeekNumberEnabled } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Show week numbers")) + "\n\t\t")]), _vm._v(" "), _c("li", { staticClass: "settings-fieldset-interior-item settings-fieldset-interior-item--slotDuration" }, [_c("label", { attrs: { for: "slotDuration" } }, [_vm._v(_vm._s(_vm.$t("calendar", "Time increments")))]), _vm._v(" "), _c("NcSelect", { attrs: { id: _vm.slotDuration, options: _vm.slotDurationOptions, value: _vm.selectedDurationOption, disabled: _vm.savingSlotDuration, clearable: false, labelOutside: true, "input-id": "value", label: "label" }, on: { "option:selected": _vm.changeSlotDuration } })], 1), _vm._v(" "), _vm.currentUserPrincipal && _vm.defaultCalendarOptions.length > 1 && _vm.nextcloudVersion >= 29 ? _c("li", { staticClass: "settings-fieldset-interior-item settings-fieldset-interior-item--default-calendar" }, [_c("label", { attrs: { for: _vm.defaultCalendarPickerId } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Default calendar for invitations and new events")) + "\n\t\t\t")]), _vm._v(" "), _c("CalendarPicker", { attrs: { value: _vm.defaultCalendar, calendars: _vm.defaultCalendarOptions, disabled: _vm.savingDefaultCalendarId, "input-id": _vm.defaultCalendarPickerId, clearable: false }, on: { "select-calendar": _vm.changeDefaultCalendar } })], 1) : _vm._e(), _vm._v(" "), _c("li", { staticClass: "settings-fieldset-interior-item settings-fieldset-interior-item--defaultReminder" }, [_c("label", { attrs: { for: "defaultReminder" } }, [_vm._v(_vm._s(_vm.$t("calendar", "Default reminder")))]), _vm._v(" "), _c("NcSelect", { attrs: { id: _vm.defaultReminder, options: _vm.defaultReminderOptions, value: _vm.selectedDefaultReminderOption, disabled: _vm.savingDefaultReminder, clearable: false, labelOutside: true, "input-id": "value", label: "label" }, on: { "option:selected": _vm.changeDefaultReminder } })], 1), _vm._v(" "), _c("SettingsTimezoneSelect", { attrs: { "is-disabled": _vm.loadingCalendars } }), _vm._v(" "), _c("SettingsAttachmentsFolder"), _vm._v(" "), _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.copyPrimaryCalDAV.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ClipboardArrowLeftOutline", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Copy primary CalDAV address")) + "\n\t\t")]), _vm._v(" "), _c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.copyAppleCalDAV.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ClipboardArrowLeftOutline", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Copy iOS/macOS CalDAV address")) + "\n\t\t")]), _vm._v(" "), _c("ActionLink", { attrs: { href: _vm.availabilitySettingsUrl, target: "_blank" }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("OpenInNewIcon", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Personal availability settings")) + "\n\t\t")]), _vm._v(" "), _c("ActionButton", { directives: [{ name: "shortkey", rawName: "v-shortkey.propagate", value: ["h"], expression: "['h']", modifiers: { propagate: true } }], on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.showKeyboardShortcuts.apply(null, arguments); } }, nativeOn: { shortkey: function ($event) { return _vm.toggleKeyboardShortcuts.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Show keyboard shortcuts")) + "\n\t\t")]), _vm._v(" "), _vm.displayKeyboardShortcuts ? _c("ShortcutOverview", { on: { close: _vm.hideKeyboardShortcuts } }) : _vm._e()], 1)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ImportScreen.vue?vue&type=template&id=4b8dd7e3": /*!*******************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ImportScreen.vue?vue&type=template&id=4b8dd7e3 ***! \*******************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("Modal", { staticClass: "import-modal", attrs: { size: "large" }, on: { close: _vm.cancelImport } }, [_c("h2", { staticClass: "import-modal__title" }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Import calendars")) + "\n\t")]), _vm._v(" "), _c("h4", { staticClass: "import-modal__subtitle" }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Please select a calendar to import into …")) + "\n\t")]), _vm._v(" "), _c("transition-group", { staticClass: "import-modal__file-list", attrs: { tag: "ul" } }, [_c("li", { key: _vm.headerRowKey, staticClass: "import-modal-file-item import-modal-file-item--header" }, [_c("div", { staticClass: "import-modal-file-item__filename" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Filename")) + "\n\t\t\t")]), _vm._v(" "), _c("div", { staticClass: "import-modal-file-item__calendar-select" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Calendar to import into")) + "\n\t\t\t")])]), _vm._v(" "), _vm._l(_vm.files, function (file, index) { return _c("ImportScreenRow", { key: "import-file-".concat(index), attrs: { file: file } }); })], 2), _vm._v(" "), _c("div", { staticClass: "import-modal__actions" }, [_c("NcButton", { on: { click: _vm.cancelImport } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Cancel")) + "\n\t\t")]), _vm._v(" "), _c("NcButton", { staticClass: "primary", on: { click: _vm.importCalendar } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$n("calendar", "Import calendar", "Import calendars", _vm.files.length)) + "\n\t\t")])], 1)], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ImportScreenRow.vue?vue&type=template&id=982d4bb2": /*!**********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ImportScreenRow.vue?vue&type=template&id=982d4bb2 ***! \**********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("li", { staticClass: "import-modal-file-item" }, [_c("div", { staticClass: "import-modal-file-item__filename" }, [_vm._v("\n\t\t" + _vm._s(_vm.file.name) + "\n\t")]), _vm._v(" "), _c("CalendarPicker", { staticClass: "import-modal-file-item__calendar-select", attrs: { value: _vm.calendar, calendars: _vm.calendars }, on: { "select-calendar": _vm.selectCalendar } })], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue?vue&type=template&id=7994cf4e&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue?vue&type=template&id=7994cf4e&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("li", { staticClass: "settings-fieldset-interior-item settings-fieldset-interior-item--folder" }, [_c("label", { attrs: { for: "attachmentsFolder" } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Default attachments location")) + "\n\t")]), _vm._v(" "), _c("div", { staticClass: "form-group" }, [_c("NcInputField", { attrs: { type: "text" }, on: { input: function ($event) { return _vm.debounceSaveAttachmentsFolder(_vm.attachmentsFolder); }, change: function ($event) { return _vm.debounceSaveAttachmentsFolder(_vm.attachmentsFolder); }, click: _vm.selectCalendarFolder, keyboard: function ($event) { if (!$event.type.indexOf("key") && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) return null; return _vm.selectCalendarFolder.apply(null, arguments); } }, model: { value: _vm.attachmentsFolder, callback: function ($$v) { _vm.attachmentsFolder = $$v; }, expression: "attachmentsFolder" } })], 1)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsImportSection.vue?vue&type=template&id=7fdbc01b": /*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsImportSection.vue?vue&type=template&id=7fdbc01b ***! \****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.showProgressBar ? _c("li", { staticClass: "settings-fieldset-interior-item" }, [_c("progress", { staticClass: "settings-fieldset-interior-item__progressbar", attrs: { max: _vm.total }, domProps: { value: _vm.imported } })]) : _c("li", { staticClass: "settings-fieldset-interior-item" }, [_c("label", { staticClass: "settings-fieldset-interior-item__import-button button icon", attrs: { for: _vm.inputUid } }, [_c("Upload", { attrs: { size: 20, decorative: "" } }), _vm._v("\n\t\t" + _vm._s(_vm.$n("calendar", "Import calendar", "Import calendars", 1)) + "\n\t")], 1), _vm._v(" "), _c("input", { ref: "importInput", staticClass: "hidden", attrs: { id: _vm.inputUid, type: "file", accept: _vm.supportedFileTypes, disabled: _vm.disableImport, multiple: "" }, on: { change: _vm.processFiles } }), _vm._v(" "), _vm.showImportModal ? _c("ImportScreen", { attrs: { files: _vm.files }, on: { "cancel-import": _vm.cancelImport, "import-calendar": _vm.importCalendar } }) : _vm._e()], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsTimezoneSelect.vue?vue&type=template&id=45e5266c": /*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/SettingsTimezoneSelect.vue?vue&type=template&id=45e5266c ***! \*****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("li", { staticClass: "settings-fieldset-interior-item settings-fieldset-interior-item--timezone" }, [_c("TimezonePicker", { attrs: { "additional-timezones": _vm.additionalTimezones, value: _vm.timezone }, on: { input: _vm.setTimezoneValue } })], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ShortcutOverview.vue?vue&type=template&id=0acfab51": /*!***********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/Settings/ShortcutOverview.vue?vue&type=template&id=0acfab51 ***! \***********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("Modal", { staticClass: "shortcut-overview-modal", attrs: { size: "large", name: _vm.$t("calendar", "Shortcut overview") }, on: { close: function ($event) { return _vm.$emit("close"); } } }, _vm._l(_vm.shortcuts, function (category) { return _c("section", { key: category.categoryId, staticClass: "shortcut-section" }, [_c("h3", { staticClass: "shortcut-section__header" }, [_vm._v("\n\t\t\t" + _vm._s(category.categoryLabel) + "\n\t\t")]), _vm._v(" "), _vm._l(category.shortcuts, function (shortcut, index) { return _c("div", { key: "".concat(category.categoryId, "-").concat(index), staticClass: "shortcut-section-item" }, [_c("span", { staticClass: "shortcut-section-item__keys" }, [_vm._l(shortcut.keys, function (keyCombination, index2) { return [_vm._l(keyCombination, function (key, index3) { return [_c("kbd", { key: "".concat(category.categoryId, "-").concat(index, "-").concat(index2, "-").concat(index3) }, [_vm._v(_vm._s(key))]), _vm._v(" "), index3 !== keyCombination.length - 1 ? _c("span", { key: "".concat(category.categoryId, "-").concat(index, "-").concat(index2, "-").concat(index3), staticClass: "shortcut-section-item__spacer" }, [_vm._v("\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t")]) : _vm._e()]; }), _vm._v(" "), index2 !== shortcut.keys.length - 1 ? _c("span", { key: "".concat(category.categoryId, "-").concat(index, "-").concat(index2), staticClass: "shortcut-section-item__spacer" }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "or")) + "\n\t\t\t\t\t")]) : _vm._e()]; })], 2), _vm._v(" "), _c("span", { staticClass: "shortcut-section-item__label" }, [_vm._v(_vm._s(shortcut.label))])]); })], 2); }), 0); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal.vue?vue&type=template&id=37b978c8&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal.vue?vue&type=template&id=37b978c8&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("Modal", { attrs: { size: "large" }, on: { close: function ($event) { return _vm.$emit("close"); } } }, [_vm.editing ? _c("div", { staticClass: "appointment-config-modal" }, [_vm.showConfirmation ? _c("Confirmation", { attrs: { "is-new": _vm.isNew, config: _vm.editing }, on: { close: function ($event) { return _vm.$emit("close"); } } }) : [_c("h2", [_vm._v(_vm._s(_vm.formTitle))]), _vm._v(" "), _c("div", { staticClass: "appointment-config-modal__form" }, [_c("fieldset", [_c("TextInput", { staticClass: "appointment-config-modal__form__row", attrs: { label: _vm.t("calendar", "Appointment name"), value: _vm.editing.name }, on: { "update:value": function ($event) { return _vm.$set(_vm.editing, "name", $event); } } }), _vm._v(" "), _c("TextInput", { staticClass: "appointment-config-modal__form__row", attrs: { label: _vm.t("calendar", "Location"), value: _vm.editing.location, disabled: _vm.isTalkEnabled && _vm.editing.createTalkRoom }, on: { "update:value": function ($event) { return _vm.$set(_vm.editing, "location", $event); } } }), _vm._v(" "), _vm.isTalkEnabled ? _c("div", { staticClass: "appointment-config-modal__form__row" }, [_c("NcCheckboxRadioSwitch", { attrs: { checked: _vm.editing.createTalkRoom }, on: { "update:checked": function ($event) { return _vm.$set(_vm.editing, "createTalkRoom", $event); } } }, [_vm._v("\n\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Create a Talk room")) + "\n\t\t\t\t\t\t")]), _vm._v(" "), _c("span", { staticClass: "appointment-config-modal__talk-room-description" }, [_vm._v(_vm._s(_vm.t("calendar", "A unique link will be generated for every booked appointment and sent via the confirmation email")))])], 1) : _vm._e(), _vm._v(" "), _c("TextArea", { staticClass: "appointment-config-modal__form__row", attrs: { label: _vm.t("calendar", "Description"), value: _vm.editing.description }, on: { "update:value": function ($event) { return _vm.$set(_vm.editing, "description", $event); } } }), _vm._v(" "), _c("div", { staticClass: "appointment-config-modal__form__row appointment-config-modal__form__row--wrapped" }, [_c("div", { staticClass: "calendar-select" }, [_c("label", [_vm._v(_vm._s(_vm.t("calendar", "Calendar")))]), _vm._v(" "), _vm.calendar !== undefined ? _c("CalendarPicker", { attrs: { value: _vm.calendar, calendars: _vm.ownSortedCalendars, "show-calendar-on-select": false }, on: { "select-calendar": _vm.changeCalendar } }) : _vm._e()], 1), _vm._v(" "), _c("VisibilitySelect", { attrs: { label: _vm.t("calendar", "Visibility"), value: _vm.editing.visibility }, on: { "update:value": function ($event) { return _vm.$set(_vm.editing, "visibility", $event); } } })], 1), _vm._v(" "), _c("div", { staticClass: "appointment-config-modal__form__row appointment-config-modal__form__row--wrapped" }, [_c("DurationInput", { attrs: { label: _vm.t("calendar", "Duration"), value: _vm.editing.length }, on: { "update:value": function ($event) { return _vm.$set(_vm.editing, "length", $event); } } }), _vm._v(" "), _c("DurationSelect", { attrs: { label: _vm.t("calendar", "Increments"), value: _vm.editing.increment }, on: { "update:value": function ($event) { return _vm.$set(_vm.editing, "increment", $event); } } })], 1), _vm._v(" "), _c("div", { staticClass: "appointment-config-modal__form__row appointment-config-modal__form__row--local" }, [_c("label", [_vm._v(_vm._s(_vm.t("calendar", "Additional calendars to check for conflicts")))]), _vm._v(" "), _c("CalendarPicker", { attrs: { value: _vm.conflictCalendars, calendars: _vm.selectableConflictCalendars, multiple: true, "show-calendar-on-select": false }, on: { "select-calendar": _vm.addConflictCalender, "remove-calendar": _vm.removeConflictCalendar } })], 1)], 1), _vm._v(" "), _c("fieldset", [_c("header", [_vm._v(_vm._s(_vm.t("calendar", "Pick time ranges where appointments are allowed")))]), _vm._v(" "), _c("div", { staticClass: "appointment-config-modal__form__row appointment-config-modal__form__row--wrapped" }, [_c("CalendarAvailability", { attrs: { slots: _vm.editing.availability.slots, "l10n-to": _vm.t("calendar", "to"), "l10n-delete-slot": _vm.t("calendar", "Delete slot"), "l10n-empty-day": _vm.t("calendar", "No times set"), "l10n-add-slot": _vm.t("calendar", "Add"), "l10n-monday": _vm.t("calendar", "Monday"), "l10n-tuesday": _vm.t("calendar", "Tuesday"), "l10n-wednesday": _vm.t("calendar", "Wednesday"), "l10n-thursday": _vm.t("calendar", "Thursday"), "l10n-friday": _vm.t("calendar", "Friday"), "l10n-saturday": _vm.t("calendar", "Saturday"), "l10n-sunday": _vm.t("calendar", "Sunday"), "l10n-week-day-list-label": _vm.t("calendar", "Weekdays") }, on: { "update:slots": function ($event) { return _vm.$set(_vm.editing.availability, "slots", $event); } } })], 1)]), _vm._v(" "), _c("fieldset", [_c("header", [_vm._v(_vm._s(_vm.t("calendar", "Add time before and after the event")))]), _vm._v(" "), _c("div", { staticClass: "appointment-config-modal__form__row appointment-config-modal__form__row--wrapped" }, [_c("CheckedDurationSelect", { attrs: { label: _vm.t("calendar", "Before the event"), enabled: _vm.enablePreparationDuration, value: _vm.editing.preparationDuration }, on: { "update:enabled": function ($event) { _vm.enablePreparationDuration = $event; }, "update:value": function ($event) { return _vm.$set(_vm.editing, "preparationDuration", $event); } } }), _vm._v(" "), _c("CheckedDurationSelect", { attrs: { label: _vm.t("calendar", "After the event"), enabled: _vm.enableFollowupDuration, value: _vm.editing.followupDuration }, on: { "update:enabled": function ($event) { _vm.enableFollowupDuration = $event; }, "update:value": function ($event) { return _vm.$set(_vm.editing, "followupDuration", $event); } } })], 1)]), _vm._v(" "), _c("fieldset", [_c("header", [_vm._v(_vm._s(_vm.t("calendar", "Planning restrictions")))]), _vm._v(" "), _c("div", { staticClass: "appointment-config-modal__form__row appointment-config-modal__form__row--wrapped" }, [_c("DurationSelect", { attrs: { label: _vm.t("calendar", "Minimum time before next available slot"), value: _vm.editing.timeBeforeNextSlot, max: 7 * 24 * 60 * 60 }, on: { "update:value": function ($event) { return _vm.$set(_vm.editing, "timeBeforeNextSlot", $event); } } }), _vm._v(" "), _c("NumberInput", { attrs: { label: _vm.t("calendar", "Max slots per day"), value: _vm.editing.dailyMax, "allow-empty": true }, on: { "update:value": function ($event) { return _vm.$set(_vm.editing, "dailyMax", $event); } } })], 1), _vm._v(" "), _c("div", { staticClass: "appointment-config-modal__form__row appointment-config-modal__form__row--wrapped" }, [_c("CheckedDurationSelect", { attrs: { label: _vm.t("calendar", "Limit how far in the future appointments can be booked"), enabled: _vm.enableFutureLimit, value: _vm.editing.futureLimit, "default-value": _vm.defaultConfig.futureLimit, min: 7 * 24 * 60 * 60, max: null }, on: { "update:enabled": function ($event) { _vm.enableFutureLimit = $event; }, "update:value": function ($event) { return _vm.$set(_vm.editing, "futureLimit", $event); } } })], 1)])]), _vm._v(" "), _vm.rateLimitingReached ? _c("NcNoteCard", { attrs: { type: "warning" } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "It seems a rate limit has been reached. Please try again later.")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _c("NcButton", { staticClass: "appointment-config-modal__submit-button", attrs: { type: "primary", disabled: !_vm.editing.name || _vm.editing.length === 0 || _vm.isLoading }, on: { click: _vm.save } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.saveButtonText) + "\n\t\t\t")])]], 2) : _vm._e()]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/CheckedDurationSelect.vue?vue&type=template&id=107bb2e4&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/CheckedDurationSelect.vue?vue&type=template&id=107bb2e4&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "checked-duration-select" }, [_c("div", { staticClass: "checked-duration-select__checkbox-row" }, [_c("div", { staticClass: "checked-duration-select__checkbox-row__input-wrapper" }, [_c("input", { attrs: { id: _vm.id, type: "checkbox" }, domProps: { checked: _vm.enabled }, on: { input: function ($event) { return _vm.$emit("update:enabled", $event.target.checked); } } })]), _vm._v(" "), _c("label", { attrs: { for: _vm.id } }, [_vm._v(_vm._s(_vm.label))])]), _vm._v(" "), _c("DurationSelect", { staticClass: "checked-duration-select__duration", attrs: { "allow-zero": _vm.defaultValue === 0, disabled: !_vm.enabled, value: _vm.valueOrDefault, min: _vm.min, max: _vm.max }, on: { "update:value": function ($event) { return _vm.$emit("update:value", $event); } } })], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/Confirmation.vue?vue&type=template&id=490c5818": /*!*******************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/Confirmation.vue?vue&type=template&id=490c5818 ***! \*******************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "app-config-modal-confirmation" }, [_c("EmptyContent", { attrs: { name: _vm.title }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CheckIcon")]; }, proxy: true }]) }), _vm._v(" "), _c("div", { staticClass: "app-config-modal-confirmation__buttons" }, [_c("NcButton", { attrs: { href: _vm.config.bookingUrl, target: "_blank", rel: "noopener noreferrer" } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.t("calendar", "Preview")) + "\n\t\t")]), _vm._v(" "), _vm.showCopyLinkButton ? _c("NcButton", { on: { click: _vm.copyLink } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.t("calendar", "Copy link")) + "\n\t\t")]) : _vm._e()], 1)], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationInput.vue?vue&type=template&id=610c2bc3&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationInput.vue?vue&type=template&id=610c2bc3&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "duration-input" }, [_c("label", { attrs: { for: _vm.id } }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _c("div", { staticClass: "input" }, [_c("input", { directives: [{ name: "model", rawName: "v-model", value: _vm.internalValue, expression: "internalValue" }], attrs: { id: _vm.id, type: "text" }, domProps: { value: _vm.internalValue }, on: { input: [function ($event) { if ($event.target.composing) return; _vm.internalValue = $event.target.value; }, _vm.change], focus: _vm.focus, blur: _vm.updateInternalValue } })])]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationSelect.vue?vue&type=template&id=0dbebf53": /*!*********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationSelect.vue?vue&type=template&id=0dbebf53 ***! \*********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("SelectWrapper", { attrs: { label: _vm.label, value: _vm.value, disabled: _vm.disabled, options: _vm.options }, on: { "update:value": function ($event) { _vm.$emit("update:value", parseInt($event)); } } }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NoEmailAddressWarning.vue?vue&type=template&id=df46dc20&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NoEmailAddressWarning.vue?vue&type=template&id=df46dc20&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("AppNavigationItem", { attrs: { name: _vm.title }, on: { click: _vm.openUserSettings }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("AlertCircleIcon", { attrs: { size: 20 } })]; }, proxy: true }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NumberInput.vue?vue&type=template&id=0b9f9aee&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NumberInput.vue?vue&type=template&id=0b9f9aee&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "number-input" }, [_c("label", { attrs: { for: _vm.id } }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _c("input", { attrs: { id: _vm.id, type: "number", min: "0" }, domProps: { value: _vm.realValue }, on: { input: _vm.change } })]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/SelectWrapper.vue?vue&type=template&id=629bb0a4&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/SelectWrapper.vue?vue&type=template&id=629bb0a4&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", [_vm.label ? _c("label", { attrs: { for: _vm.id } }, [_vm._v(_vm._s(_vm.label))]) : _vm._e(), _vm._v(" "), _c("select", { attrs: { id: _vm.id, disabled: _vm.disabled }, on: { change: _vm.onSelect } }, _vm._l(_vm.options, function (option) { return _c("option", _vm._b({ key: option.value, domProps: { value: option.value } }, "option", { selected: option.value === _vm.value }, false), [_vm._v("\n\t\t\t" + _vm._s(option.label) + "\n\t\t")]); }), 0)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextArea.vue?vue&type=template&id=97af0b86&scoped=true": /*!***************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextArea.vue?vue&type=template&id=97af0b86&scoped=true ***! \***************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "text-area" }, [_c("label", { attrs: { for: _vm.id } }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _c("textarea", { directives: [{ name: "autosize", rawName: "v-autosize", value: true, expression: "true" }], attrs: { id: _vm.id, rows: 2 }, domProps: { value: _vm.value }, on: { input: function ($event) { return _vm.$emit("update:value", $event.target.value); } } })]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextInput.vue?vue&type=template&id=3f44c2ca&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextInput.vue?vue&type=template&id=3f44c2ca&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "text-input" }, [_c("label", { attrs: { for: _vm.id } }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _c("input", { attrs: { id: _vm.id, type: "text", disabled: _vm.disabled }, domProps: { value: _vm.value }, on: { input: _vm.change } })]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/VisibilitySelect.vue?vue&type=template&id=0a217891": /*!***********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/VisibilitySelect.vue?vue&type=template&id=0a217891 ***! \***********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("SelectWrapper", { attrs: { label: _vm.label, value: _vm.value, disabled: _vm.disabled, options: _vm.options }, on: { "update:value": function ($event) { return _vm.$emit("update:value", $event); } } }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/CalendarGrid.vue?vue&type=template&id=27464dd4&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/CalendarGrid.vue?vue&type=template&id=27464dd4&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("FullCalendar", { ref: "fullCalendar", class: _vm.isWidget ? "fullcalendar-widget" : "", attrs: { options: _vm.options } }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmList.vue?vue&type=template&id=3a26be1f": /*!******************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmList.vue?vue&type=template&id=3a26be1f ***! \******************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "property-alarm-list" }, [_vm._l(_vm.alarms, function (alarm, index) { return _c("AlarmListItem", { key: index, attrs: { alarm: alarm, "calendar-object-instance": _vm.calendarObjectInstance, "is-read-only": _vm.isReadOnly, "show-icon": index === 0 }, on: { "remove-alarm": _vm.removeAlarm } }); }), _vm._v(" "), !_vm.isReadOnly ? _c("AlarmListNew", { attrs: { "is-all-day": _vm.calendarObjectInstance.isAllDay, "show-icon": _vm.alarms.length === 0 }, on: { "add-alarm": _vm.addAlarm } }) : _vm._e()], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmListItem.vue?vue&type=template&id=c30c7f5c": /*!**********************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmListItem.vue?vue&type=template&id=c30c7f5c ***! \**********************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { directives: [{ name: "click-outside", rawName: "v-click-outside", value: _vm.closeAlarmEditor, expression: "closeAlarmEditor" }], staticClass: "property-alarm-item" }, [_c("div", { staticClass: "property-alarm-item__icon", class: { "property-alarm-item__icon--hidden": !_vm.showIcon } }, [_c("Bell", { staticClass: "icon", attrs: { size: 20, name: _vm.t("calendar", "Reminder") } })], 1), _vm._v(" "), !_vm.isEditing ? _c("div", { staticClass: "property-alarm-item__label" }, [_vm._v("\n\t\t" + _vm._s(_vm._f("formatAlarm")(_vm.alarm, _vm.isAllDay, _vm.currentUserTimezone, _vm.locale)) + "\n\t")]) : _vm._e(), _vm._v(" "), _vm.isEditing && _vm.isRelativeAlarm && !_vm.isAllDay ? _c("div", { staticClass: "property-alarm-item__edit property-alarm-item__edit--timed" }, [_c("input", { attrs: { type: "number", min: "0", max: "3600" }, domProps: { value: _vm.alarm.relativeAmountTimed }, on: { input: _vm.changeRelativeAmountTimed } }), _vm._v(" "), _c("AlarmTimeUnitSelect", { attrs: { "is-all-day": _vm.isAllDay, count: _vm.alarm.relativeAmountTimed, unit: _vm.alarm.relativeUnitTimed, disabled: false }, on: { change: _vm.changeRelativeUnitTimed } })], 1) : _vm._e(), _vm._v(" "), _vm.isEditing && _vm.isRelativeAlarm && _vm.isAllDay ? _c("div", { staticClass: "property-alarm-item__edit property-alarm-item__edit--all-day" }, [_c("div", { staticClass: "property-alarm-item__edit--all-day__distance" }, [_c("input", { attrs: { type: "number", min: "0", max: "3600" }, domProps: { value: _vm.alarm.relativeAmountAllDay }, on: { input: _vm.changeRelativeAmountAllDay } }), _vm._v(" "), _c("AlarmTimeUnitSelect", { staticClass: "time-unit-select", attrs: { "is-all-day": _vm.isAllDay, count: _vm.alarm.relativeAmountAllDay, unit: _vm.alarm.relativeUnitAllDay, disabled: false }, on: { change: _vm.changeRelativeUnitAllDay } })], 1), _vm._v(" "), _c("div", { staticClass: "property-alarm-item__edit--all-day__time" }, [_c("span", { staticClass: "property-alarm-item__edit--all-day__time__before-at-label" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "before at")) + "\n\t\t\t")]), _vm._v(" "), _c("TimePicker", { attrs: { date: _vm.relativeAllDayDate }, on: { change: _vm.changeRelativeHourMinuteAllDay } })], 1)]) : _vm._e(), _vm._v(" "), _vm.isEditing && _vm.isAbsoluteAlarm ? _c("div", { staticClass: "property-alarm-item__edit property-alarm-item__edit--absolute" }, [_c("DatePicker", { attrs: { prefix: "on", date: _vm.alarm.absoluteDate, "timezone-id": _vm.alarm.absoluteTimezoneId, "is-all-day": false }, on: { change: _vm.changeAbsoluteDate, "change-timezone": _vm.changeAbsoluteTimezoneId } })], 1) : _vm._e(), _vm._v(" "), !_vm.isReadOnly ? _c("div", { staticClass: "property-alarm-item__options" }, [_c("Actions", { attrs: { open: _vm.showMenu }, on: { "update:open": open => _vm.showMenu = open } }, [_vm.canChangeAlarmType || !_vm.isAlarmTypeDisplay && _vm.forceEventAlarmType === "DISPLAY" ? _c("ActionRadio", { attrs: { name: _vm.alarmTypeName, checked: _vm.isAlarmTypeDisplay }, on: { change: function ($event) { return _vm.changeType("DISPLAY"); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Notification")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.canChangeAlarmType || !_vm.isAlarmTypeEmail && _vm.forceEventAlarmType === "EMAIL" ? _c("ActionRadio", { attrs: { name: _vm.alarmTypeName, checked: _vm.isAlarmTypeEmail }, on: { change: function ($event) { return _vm.changeType("EMAIL"); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Email")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.canChangeAlarmType && _vm.isAlarmTypeAudio ? _c("ActionRadio", { attrs: { name: _vm.alarmTypeName, checked: _vm.isAlarmTypeAudio }, on: { change: function ($event) { return _vm.changeType("AUDIO"); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Audio notification")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.canChangeAlarmType && _vm.isAlarmTypeOther ? _c("ActionRadio", { attrs: { name: _vm.alarmTypeName, checked: _vm.isAlarmTypeOther }, on: { change: function ($event) { return _vm.changeType(_vm.alarm.type); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Other notification")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.canChangeAlarmType && !_vm.isRecurring ? _c("ActionSeparator") : _vm._e(), _vm._v(" "), !_vm.isRecurring ? _c("ActionRadio", { attrs: { name: _vm.alarmTriggerName, checked: _vm.isRelativeAlarm }, on: { change: _vm.switchToRelativeAlarm } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Relative to event")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), !_vm.isRecurring ? _c("ActionRadio", { attrs: { name: _vm.alarmTriggerName, checked: _vm.isAbsoluteAlarm }, on: { change: _vm.switchToAbsoluteAlarm } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "On date")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _c("ActionSeparator"), _vm._v(" "), _vm.canEdit && !_vm.isEditing ? _c("ActionButton", { on: { click: function ($event) { $event.stopPropagation(); return _vm.toggleEditAlarm.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Pencil", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2864695315) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Edit time")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.canEdit && _vm.isEditing ? _c("ActionButton", { on: { click: _vm.toggleEditAlarm }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Check", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 38899624) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Save time")) + "\n\t\t\t")]) : _vm._e(), _vm._v(" "), _c("ActionButton", { on: { click: _vm.removeAlarm }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Remove reminder")) + "\n\t\t\t")])], 1)], 1) : _vm._e()]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmListNew.vue?vue&type=template&id=bb5ed19e": /*!*********************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmListNew.vue?vue&type=template&id=bb5ed19e ***! \*********************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("PropertySelect", { staticClass: "property-alarm-new", attrs: { "prop-model": _vm.propModel, "is-read-only": false, value: null, "show-icon": _vm.showIcon }, on: { "update:value": _vm.addReminderFromSelect } }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmTimeUnitSelect.vue?vue&type=template&id=041ca90e": /*!****************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Alarm/AlarmTimeUnitSelect.vue?vue&type=template&id=041ca90e ***! \****************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcSelect", { attrs: { "allow-empty": false, options: _vm.options, value: _vm.selected, disabled: _vm.disabled, clearable: false, "input-id": "unit", label: "label" }, on: { input: _vm.select } }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Attachments/AttachmentsList.vue?vue&type=template&id=5efccc46&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Attachments/AttachmentsList.vue?vue&type=template&id=5efccc46&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { attrs: { id: "attachments" } }, [_c("input", { ref: "localAttachments", staticClass: "attachments-input", attrs: { type: "file", multiple: "" }, on: { change: _vm.onLocalAttachmentSelected } }), _vm._v(" "), _c("div", { staticClass: "attachments-summary" }, [_c("div", { staticClass: "attachments-summary-inner" }, [_c("Paperclip", { attrs: { size: 20 } }), _vm._v(" "), _vm.attachments.length > 0 ? _c("div", { staticClass: "attachments-summary-inner-label" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.n("calendar", "{count} attachment", "{count} attachments", _vm.attachments.length, { count: _vm.attachments.length })) + "\n\t\t\t")]) : _c("div", { staticClass: "attachments-summary-inner-label" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "No attachments")) + "\n\t\t\t")])], 1), _vm._v(" "), !_vm.isReadOnly ? _c("NcActions", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Plus", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 32235154) }, [_vm._v(" "), _c("NcActionButton", { on: { click: function ($event) { return _vm.openFilesModal(); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Folder", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 4270628382) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Add from Files")) + "\n\t\t\t")]), _vm._v(" "), _c("NcActionButton", { on: { click: _vm.clickOnUploadButton }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Upload", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 1329850251) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Upload from device")) + "\n\t\t\t")])], 1) : _vm._e()], 1), _vm._v(" "), _vm.attachments.length > 0 ? _c("div", [_c("ul", { staticClass: "attachments-list" }, _vm._l(_vm.attachments, function (attachment) { return _c("NcListItem", { key: attachment.path, staticClass: "attachments-list-item", attrs: { "force-display-actions": true, name: _vm.getBaseName(attachment.fileName) }, on: { click: function ($event) { return _vm.openFile(attachment.uri); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("img", { staticClass: "attachment-icon", attrs: { src: _vm.getPreview(attachment) } })]; }, proxy: true }, { key: "actions", fn: function () { return [!_vm.isReadOnly ? _c("NcActionButton", { on: { click: function ($event) { return _vm.deleteAttachmentFromEvent(attachment); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Close", { attrs: { size: 20 } })]; }, proxy: true }], null, true) }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Delete file")) + "\n\t\t\t\t\t")]) : _vm._e()]; }, proxy: true }], null, true) }); }), 1)]) : _vm._e(), _vm._v(" "), _c("NcDialog", { attrs: { open: _vm.showOpenConfirmation, name: _vm.t("calendar", "Confirmation"), buttons: _vm.openConfirmationButtons }, on: { "update:open": function ($event) { _vm.showOpenConfirmation = $event; } } }, [_c("p", { staticClass: "external-link-message" }, [_vm._v("\n\t\t\t" + _vm._s(_vm.openConfirmationMessage) + "\n\t\t")])])], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/AvatarParticipationStatus.vue?vue&type=template&id=7117b730&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/AvatarParticipationStatus.vue?vue&type=template&id=7117b730&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "avatar-participation-status" }, [_vm.isGroup ? _c("Avatar", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("AccountMultiple", { attrs: { size: 28 } })]; }, proxy: true }], null, false, 2883928401) }) : _c("Avatar", { attrs: { "disable-tooltip": true, user: _vm.commonName, "display-name": _vm.commonName, "is-no-user": true } }), _vm._v(" "), !_vm.isGroup ? [_vm.participationStatus === "ACCEPTED" && _vm.isViewedByOrganizer ? [_c("IconCheck", { staticClass: "avatar-participation-status__indicator", attrs: { "fill-color": "#32CD32", size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Invitation accepted")) + "\n\t\t\t")])] : _vm.isResource && _vm.participationStatus === "ACCEPTED" ? [_c("IconCheck", { staticClass: "avatar-participation-status__indicator", attrs: { "fill-color": "#32CD32", size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Available")) + "\n\t\t\t")])] : _vm.isSuggestion ? [_c("IconCheck", { staticClass: "avatar-participation-status__indicator", attrs: { "fill-color": "#32CD32", size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Suggested")) + "\n\t\t\t")])] : _vm.participationStatus === "TENTATIVE" ? [_c("IconCheck", { staticClass: "avatar-participation-status__indicator", attrs: { "fill-color": "#32CD32", size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Participation marked as tentative")) + "\n\t\t\t")])] : _vm.participationStatus === "ACCEPTED" && !_vm.isViewedByOrganizer ? [_c("IconCheck", { staticClass: "avatar-participation-status__indicator", attrs: { "fill-color": "#32CD32", size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Accepted {organizerName}'s invitation", { organizerName: _vm.organizerDisplayName })) + "\n\t\t\t")])] : _vm.isResource && _vm.participationStatus === "DECLINED" ? [_c("IconClose", { staticClass: "avatar-participation-status__indicator", attrs: { size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Not available")) + "\n\t\t\t")])] : _vm.participationStatus === "DECLINED" && _vm.isViewedByOrganizer ? [_c("IconClose", { staticClass: "avatar-participation-status__indicator", attrs: { size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Invitation declined")) + "\n\t\t\t")])] : _vm.participationStatus === "DECLINED" && !_vm.isViewedByOrganizer ? [_c("IconClose", { staticClass: "avatar-participation-status__indicator", attrs: { size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Declined {organizerName}'s invitation", { organizerName: _vm.organizerDisplayName })) + "\n\t\t\t")])] : _vm.participationStatus === "DELEGATED" ? [_c("IconDelegated", { staticClass: "avatar-participation-status__indicator", attrs: { size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Invitation is delegated")) + "\n\t\t\t")])] : _vm.isResource ? [_c("IconNoResponse", { staticClass: "avatar-participation-status__indicator", attrs: { size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Checking availability")) + "\n\t\t\t")])] : _vm.isViewedByOrganizer ? [_c("IconNoResponse", { staticClass: "avatar-participation-status__indicator", attrs: { size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Awaiting response")) + "\n\t\t\t")])] : [_c("IconNoResponse", { staticClass: "avatar-participation-status__indicator", attrs: { size: 20 } }), _vm._v(" "), _c("div", { staticClass: "avatar-participation-status__text" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Has not responded to {organizerName}'s invitation yet", { organizerName: _vm.organizerDisplayName })) + "\n\t\t\t")])]] : _vm._e()], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/CalendarPickerHeader.vue?vue&type=template&id=e5da09ca&scoped=true": /*!***********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/CalendarPickerHeader.vue?vue&type=template&id=e5da09ca&scoped=true ***! \***********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "calendar-picker-header", class: { "calendar-picker-header--readonly": _vm.isReadOnly } }, [_c("NcActions", { staticClass: "calendar-picker-header__picker", attrs: { type: "tertiary", "menu-name": _vm.value.displayName, "force-name": true, disabled: _vm.isDisabled }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("div", { staticClass: "calendar-picker-header__icon" }, [_c("div", { staticClass: "calendar-picker-header__icon__dot", style: { "background-color": _vm.value.color } })])]; }, proxy: true }]) }, [_vm._v(" "), _vm._l(_vm.calendars, function (calendar) { return _c("NcActionButton", { key: calendar.id, attrs: { "close-after-click": true }, on: { click: function ($event) { return _vm.$emit("update:value", calendar); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("div", { staticClass: "calendar-picker-header__icon" }, [_c("div", { staticClass: "calendar-picker-header__icon__dot", style: { "background-color": calendar.color } })])]; }, proxy: true }], null, true) }, [_vm._v("\n\t\t\t\t" + _vm._s(calendar.displayName) + "\n\t\t\t")]); })], 2)], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/FreeBusy/FreeBusy.vue?vue&type=template&id=a60f3f46&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/FreeBusy/FreeBusy.vue?vue&type=template&id=a60f3f46&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcDialog", { attrs: { size: "large", name: _vm.$t("calendar", "Availability of attendees, resources and rooms") }, on: { closing: function ($event) { return _vm.$emit("close"); } } }, [_c("div", { staticClass: "modal__content modal--scheduler" }, [_vm.loadingIndicator ? _c("div", { staticClass: "loading-indicator" }, [_c("div", { staticClass: "icon-loading" })]) : _vm._e(), _vm._v(" "), _c("div", { staticClass: "modal__content__header" }, [_c("h2", [_vm._v(_vm._s(_vm.$t("calendar", "Find a time")))]), _vm._v(" "), _c("h3", [_vm._v(_vm._s(_vm.eventTitle))]), _vm._v(" "), _c("div", { staticClass: "modal__content__header__attendees" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "with")) + "\n\t\t\t\t"), _c("NcUserBubble", { attrs: { size: "24", "display-name": _vm.organizer.commonName } }), _vm._v(" "), _vm._l(_vm.attendees, function (attendee) { return _c("NcUserBubble", { key: attendee.id, staticClass: "modal__content__header__attendees__user-bubble", attrs: { size: "24", "display-name": attendee.commonName }, scopedSlots: _vm._u([{ key: "name", fn: function () { return [_c("a", { staticClass: "icon-close", attrs: { href: "#", title: "Remove user" }, on: { click: function ($event) { return _vm.removeAttendee(attendee); } } })]; }, proxy: true }], null, true) }); })], 2)]), _vm._v(" "), _c("div", { staticClass: "modal__content__actions" }, [_c("InviteesListSearch", { staticClass: "modal__content__actions__select", attrs: { "already-invited-emails": _vm.alreadyInvitedEmails, organizer: _vm.organizer }, on: { "add-attendee": _vm.addAttendee } }), _vm._v(" "), _c("div", { staticClass: "modal__content__actions__date" }, [_c("NcButton", { attrs: { type: "secondary" }, on: { click: function ($event) { return _vm.handleActions("today"); } } }, [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Today")) + "\n\t\t\t\t")]), _vm._v(" "), _c("NcButton", { attrs: { type: "secondary" }, on: { click: function ($event) { return _vm.handleActions("left"); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ChevronLeftIcon", { attrs: { size: 20 } })]; }, proxy: true }]) }), _vm._v(" "), _c("NcButton", { attrs: { type: "secondary" }, on: { click: function ($event) { return _vm.handleActions("right"); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ChevronRightIcon", { attrs: { size: 20 } })]; }, proxy: true }]) }), _vm._v(" "), _c("NcDateTimePickerNative", { attrs: { "hide-label": true, value: _vm.currentDate }, on: { input: date => _vm.handleActions("picker", date) } }), _vm._v(" "), _c("NcPopover", { attrs: { "focus-trap": false }, scopedSlots: _vm._u([{ key: "trigger", fn: function () { return [_c("NcButton", { attrs: { type: "tertiary-no-background" }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("HelpCircleIcon", { attrs: { size: 20 } })]; }, proxy: true }]) })]; }, proxy: true }]) }, [_vm._v(" "), [_c("div", { staticClass: "freebusy-caption" }, [_c("div", { staticClass: "freebusy-caption__calendar-user-types" }), _vm._v(" "), _c("div", { staticClass: "freebusy-caption__colors" }, _vm._l(_vm.colorCaption, function (color) { return _c("div", { key: color.color, staticClass: "freebusy-caption-item" }, [_c("div", { staticClass: "freebusy-caption-item__color", style: { "background-color": color.color } }), _vm._v(" "), _c("div", { staticClass: "freebusy-caption-item__label" }, [_vm._v("\n\t\t\t\t\t\t\t\t\t\t" + _vm._s(color.label) + "\n\t\t\t\t\t\t\t\t\t")])]); }), 0)])]], 2)], 1)], 1), _vm._v(" "), _c("FullCalendar", { ref: "freeBusyFullCalendar", attrs: { options: _vm.options } }), _vm._v(" "), _c("div", { staticClass: "modal__content__footer" }, [_c("div", { staticClass: "modal__content__footer__title" }, [_vm.freeSlots ? _c("p", [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Available times:")) + "\n\t\t\t\t\t"), _c("NcSelect", { staticClass: "available-slots__multiselect", attrs: { options: _vm.freeSlots, placeholder: _vm.placeholder, clearable: false, "input-id": "slot", label: "displayStart", "label-outside": true, value: _vm.selectedSlot }, on: { "option:selected": _vm.setSlotSuggestion }, scopedSlots: _vm._u([{ key: "selected-option", fn: function (_ref) { let {} = _ref; return [_vm._v("\n\t\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Suggestion accepted")) + "\n\t\t\t\t\t\t")]; } }], null, false, 1565055063) })], 1) : _vm._e(), _vm._v(" "), _c("h3", [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.formattedCurrentStart) + "\n\t\t\t\t")]), _vm._v(" "), _c("p", [_vm._v(_vm._s(_vm.formattedCurrentTime)), _c("span", { staticClass: "modal__content__footer__title__timezone" }, [_vm._v(_vm._s(_vm.formattedTimeZone))])])]), _vm._v(" "), _c("NcButton", { attrs: { type: "primary" }, on: { click: _vm.save }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CheckIcon", { attrs: { size: 20 } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Done")) + "\n\t\t\t\t")])], 1)], 1)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/InvitationResponseButtons.vue?vue&type=template&id=bc1cb2d6&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/InvitationResponseButtons.vue?vue&type=template&id=bc1cb2d6&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "invitation-response-buttons", class: { "invitation-response-buttons--grow": _vm.growHorizontally } }, [!_vm.isAccepted ? _c("NcButton", { staticClass: "invitation-response-buttons__button", attrs: { type: "primary", disabled: _vm.loading }, on: { click: _vm.accept } }, [_vm._v("\n\t\t" + _vm._s(_vm.t("calendar", "Accept")) + "\n\t")]) : _vm._e(), _vm._v(" "), !_vm.isDeclined ? _c("NcButton", { staticClass: "invitation-response-buttons__button", attrs: { type: "error", disabled: _vm.loading }, on: { click: _vm.decline } }, [_vm._v("\n\t\t" + _vm._s(_vm.t("calendar", "Decline")) + "\n\t")]) : _vm._e(), _vm._v(" "), !_vm.isTentative ? [!_vm.narrow ? _c("NcButton", { staticClass: "invitation-response-buttons__button", attrs: { disabled: _vm.loading }, on: { click: _vm.tentative } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.t("calendar", "Tentative")) + "\n\t\t")]) : _c("Actions", [_c("ActionButton", { attrs: { disabled: _vm.loading }, on: { click: _vm.tentative }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarQuestionIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 2832063871) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.t("calendar", "Tentative")) + "\n\t\t\t")])], 1)] : _vm._e()], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesList.vue?vue&type=template&id=51e2fbdb&scoped=true": /*!************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesList.vue?vue&type=template&id=51e2fbdb&scoped=true ***! \************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return !_vm.hideIfEmpty || !_vm.isListEmpty ? _c("div", { staticClass: "invitees-list" }, [_vm.showHeader ? _c("div", { staticClass: "invitees-list__header" }, [_c("AccountMultipleIcon", { attrs: { size: 20 } }), _vm._v(" "), _c("b", [_vm._v(_vm._s(_vm.t("calendar", "Attendees")))]), _vm._v("\n\t\t" + _vm._s(_vm.statusHeader) + "\n\t")], 1) : _vm._e(), _vm._v(" "), !_vm.isReadOnly && !_vm.isSharedWithMe && _vm.hasUserEmailAddress ? _c("InviteesListSearch", { attrs: { "already-invited-emails": _vm.alreadyInvitedEmails, organizer: _vm.calendarObjectInstance.organizer }, on: { "add-attendee": _vm.addAttendee } }) : _vm._e(), _vm._v(" "), _vm.hasOrganizer ? _c("OrganizerListItem", { attrs: { "is-read-only": _vm.isReadOnly || _vm.isSharedWithMe, organizer: _vm.calendarObjectInstance.organizer } }) : _vm._e(), _vm._v(" "), _vm._l(_vm.limitedInviteesWithoutOrganizer, function (invitee) { return _c("InviteesListItem", { key: invitee.email, attrs: { attendee: invitee, "is-read-only": _vm.isReadOnly || _vm.isSharedWithMe, "organizer-display-name": _vm.organizerDisplayName, members: invitee.members }, on: { "remove-attendee": _vm.removeAttendee } }); }), _vm._v(" "), _vm.limit > 0 && _vm.inviteesWithoutOrganizer.length > _vm.limit ? _c("div", { staticClass: "invitees-list__more" }, [_vm._v("\n\t\t" + _vm._s(_vm.n("calendar", "%n more guest", "%n more guests", _vm.inviteesWithoutOrganizer.length - _vm.limit)) + "\n\t")]) : _vm._e(), _vm._v(" "), _vm.isReadOnly && _vm.isSharedWithMe && !_vm.hideErrors ? _c("NoAttendeesView", { attrs: { message: _vm.noOwnerMessage } }) : _vm.isReadOnly && _vm.isListEmpty && _vm.hasUserEmailAddress ? _c("NoAttendeesView", { attrs: { message: _vm.noInviteesMessage } }) : !_vm.isReadOnly && _vm.isListEmpty && !_vm.hasUserEmailAddress && !_vm.hideErrors ? _c("OrganizerNoEmailError") : _vm._e(), _vm._v(" "), !_vm.hideButtons ? _c("div", { staticClass: "invitees-list-button-group" }, [_vm.isCreateTalkRoomButtonVisible ? _c("NcButton", { staticClass: "invitees-list-button-group__button", attrs: { disabled: _vm.isCreateTalkRoomButtonDisabled }, on: { click: _vm.createTalkRoom } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Create Talk room for this event")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), !_vm.isReadOnly ? _c("NcButton", { staticClass: "invitees-list-button-group__button", attrs: { disabled: _vm.isListEmpty || !_vm.isOrganizer }, on: { click: _vm.openFreeBusy } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Find a time")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showFreeBusyModel ? _c("FreeBusy", { attrs: { attendees: _vm.calendarObjectInstance.attendees, organizer: _vm.calendarObjectInstance.organizer, "start-date": _vm.calendarObjectInstance.startDate, "end-date": _vm.calendarObjectInstance.endDate, "event-title": _vm.calendarObjectInstance.title, "already-invited-emails": _vm.alreadyInvitedEmails, "calendar-object-instance": _vm.calendarObjectInstance }, on: { "remove-attendee": _vm.removeAttendee, "add-attendee": _vm.addAttendee, "update-dates": _vm.saveNewDate, close: _vm.closeFreeBusy } }) : _vm._e()], 1) : _vm._e()], 2) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListItem.vue?vue&type=template&id=43ae7fe4&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListItem.vue?vue&type=template&id=43ae7fe4&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "invitees-list-item" }, [_c("AvatarParticipationStatus", { attrs: { "attendee-is-organizer": false, "is-viewed-by-organizer": _vm.isViewedByOrganizer, "is-resource": false, "avatar-link": _vm.avatarLink, "participation-status": _vm.attendee.participationStatus, "organizer-display-name": _vm.organizerDisplayName, "common-name": _vm.commonName, "is-group": _vm.isGroup } }), _vm._v(" "), _c("div", { staticClass: "invitees-list-item__displayname", class: { "invitees-list-item__groupname": _vm.members.length } }, [_vm._v("\n\t\t" + _vm._s(_vm.commonName) + "\n\t\t"), _vm.members.length ? _c("span", { staticClass: "invitees-list-item__member-count" }, [_vm._v("\n\t\t\t(" + _vm._s(_vm.$n("calendar", "%n member", "%n members", _vm.members.length)) + ")\n\t\t")]) : _vm._e()]), _vm._v(" "), _c("div", { staticClass: "invitees-list-item__actions" }, [_vm.members.length ? _c("NcButton", { staticClass: "icon-collapse", class: { "icon-collapse--open": _vm.memberListExpaneded }, attrs: { type: "tertiary" }, on: { click: _vm.toggleMemberList }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_vm.memberListExpaneded ? _c("ChevronUp", { attrs: { size: 20 } }) : _c("ChevronDown", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 2349731421) }) : _vm._e(), _vm._v(" "), _vm.isViewedByOrganizer ? _c("Actions", [_c("ActionCheckbox", { attrs: { checked: _vm.attendee.rsvp }, on: { change: _vm.toggleRSVP } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Request reply")) + "\n\t\t\t")]), _vm._v(" "), _c("ActionRadio", { attrs: { name: _vm.radioName, checked: _vm.isChair }, on: { change: function ($event) { return _vm.changeRole("CHAIR"); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Chairperson")) + "\n\t\t\t")]), _vm._v(" "), _c("ActionRadio", { attrs: { name: _vm.radioName, checked: _vm.isRequiredParticipant }, on: { change: function ($event) { return _vm.changeRole("REQ-PARTICIPANT"); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Required participant")) + "\n\t\t\t")]), _vm._v(" "), _c("ActionRadio", { attrs: { name: _vm.radioName, checked: _vm.isOptionalParticipant }, on: { change: function ($event) { return _vm.changeRole("OPT-PARTICIPANT"); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Optional participant")) + "\n\t\t\t")]), _vm._v(" "), _c("ActionRadio", { attrs: { name: _vm.radioName, checked: _vm.isNonParticipant }, on: { change: function ($event) { return _vm.changeRole("NON-PARTICIPANT"); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Non-participant")) + "\n\t\t\t")]), _vm._v(" "), _c("ActionButton", { on: { click: function ($event) { return _vm.removeAttendee(_vm.attendee); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.removeAttendeeText) + "\n\t\t\t")])], 1) : _vm._e()], 1), _vm._v(" "), _vm.members.length ? _c("div", { staticClass: "member-list", class: { "member-list--open": _vm.memberListExpaneded } }, _vm._l(_vm.members, function (member) { return _c("InviteesListItem", { key: member.email, attrs: { attendee: member, "is-read-only": _vm.isReadOnly, "organizer-display-name": _vm.organizerDisplayName, members: member.members }, on: { "remove-attendee": function ($event) { return _vm.removeAttendee(member); } } }); }), 1) : _vm._e()], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListSearch.vue?vue&type=template&id=d74a293a": /*!******************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListSearch.vue?vue&type=template&id=d74a293a ***! \******************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcSelect", { staticClass: "invitees-search__multiselect", class: { showContent: _vm.inputGiven, "icon-loading": _vm.isLoading }, attrs: { options: _vm.matches, searchable: true, "max-height": 600, placeholder: _vm.placeholder, clearable: false, "label-outside": true, "input-id": "uid", label: "dropdownName" }, on: { search: _vm.findAttendees, "option:selected": _vm.addAttendee }, scopedSlots: _vm._u([{ key: "option", fn: function (option) { return [_c("div", { staticClass: "invitees-search-list-item" }, [option.isUser ? _c("Avatar", { key: option.uid, attrs: { user: option.avatar, "display-name": option.dropdownName } }) : option.type === "circle" ? _c("Avatar", { scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("GoogleCirclesCommunitiesIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, true) }) : _vm._e(), _vm._v(" "), !option.isUser && option.type !== "circle" ? _c("Avatar", { key: option.uid, attrs: { url: option.avatar, "display-name": option.commonName } }) : _vm._e(), _vm._v(" "), _c("div", { staticClass: "invitees-search-list-item__label" }, [_c("div", [_vm._v("\n\t\t\t\t\t" + _vm._s(option.commonName) + "\n\t\t\t\t")]), _vm._v(" "), option.email !== option.commonName && option.type !== "circle" ? _c("div", [_vm._v("\n\t\t\t\t\t" + _vm._s(option.email) + "\n\t\t\t\t")]) : _vm._e(), _vm._v(" "), option.type === "circle" ? _c("div", [_vm._v("\n\t\t\t\t\t" + _vm._s(option.subtitle) + "\n\t\t\t\t")]) : _vm._e()])], 1)]; } }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/OrganizerListItem.vue?vue&type=template&id=e4bd912c&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/OrganizerListItem.vue?vue&type=template&id=e4bd912c&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "invitees-list-item" }, [_c("AvatarParticipationStatus", { attrs: { "attendee-is-organizer": true, "avatar-link": _vm.avatarLink, "is-viewed-by-organizer": _vm.isViewedByOrganizer, "is-resource": _vm.isResource, "common-name": _vm.commonName, "organizer-display-name": _vm.commonName, "participation-status": "ACCEPTED" } }), _vm._v(" "), _c("div", { staticClass: "invitees-list-item__displayname" }, [_vm._v("\n\t\t" + _vm._s(_vm.commonName) + "\n\t")]), _vm._v(" "), _c("div", { staticClass: "invitees-list-item__organizer-hint" }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "(organizer)")) + "\n\t")])], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/NoAttendeesView.vue?vue&type=template&id=6598d62a": /*!******************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/NoAttendeesView.vue?vue&type=template&id=6598d62a ***! \******************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "editor-reminders-list-empty-message" }, [_c("div", { staticClass: "icon editor-reminders-list-empty-message__icon" }, [_vm._t("icon", function () { return [_c("AccountMultiple", { attrs: { size: 50, decorative: "" } })]; })], 2), _vm._v(" "), _c("div", { staticClass: "editor-reminders-list-empty-message__caption" }, [_vm._v("\n\t\t" + _vm._s(_vm.message) + "\n\t")])]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/OrganizerNoEmailError.vue?vue&type=template&id=af50adac": /*!************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/OrganizerNoEmailError.vue?vue&type=template&id=af50adac ***! \************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "editor-invitee-list-no-email-configured-message" }, [_c("div", { staticClass: "editor-invitee-list-no-email-configured-message__icon" }, [_vm._v("\n\t\t@\n\t")]), _vm._v(" "), _c("div", { staticClass: "editor-invitee-list-no-email-configured-message__caption", domProps: { innerHTML: _vm._s(_vm.htmlCaption) } })]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyColor.vue?vue&type=template&id=3f4f6514": /*!***************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyColor.vue?vue&type=template&id=3f4f6514 ***! \***************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "property-color", class: { "property-color--readonly": _vm.isReadOnly } }, [_c(_vm.icon, { tag: "component", staticClass: "property-color__icon", class: { "property-color__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName, decorative: "" } }), _vm._v(" "), _vm.isReadOnly ? _c("div", { staticClass: "property-color__input property-color__input--readonly" }, [_c("div", { staticClass: "property-color__color-preview", style: { "background-color": _vm.selectedColor } })]) : _c("div", { staticClass: "property-color__input" }, [_c("ColorPicker", { attrs: { value: _vm.selectedColor, open: _vm.isColorPickerOpen, "advanced-fields": true }, on: { "update:open": function ($event) { _vm.isColorPickerOpen = $event; }, input: _vm.changeColor } }, [_c("NcButton", { staticClass: "property-color__color-preview", style: { "background-color": _vm.selectedColor } })], 1), _vm._v(" "), _vm.showColorRevertButton ? _c("Actions", [_c("ActionButton", { on: { click: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.deleteColor.apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Undo", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 4006107262) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Remove color")) + "\n\t\t\t")])], 1) : _vm._e()], 1)], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true": /*!***************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=template&id=6aff0820&scoped=true ***! \***************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return !_vm.isReadOnly ? _c("div", { staticClass: "property-title-time-picker" }, [_c("div", { staticClass: "property-title-time-picker__all-day" }, [_c("NcCheckboxRadioSwitch", { attrs: { checked: _vm.isCalendarPending }, on: { "update:checked": _vm.toggleIsCalendarPending } }, [_vm._v("\n\t\t\tEn attente\n\t\t")])], 1)]) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=template&id=56b63a1e&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=template&id=56b63a1e&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return !_vm.isReadOnly ? _c("div", { staticClass: "property-title-time-picker" }, [_c("div", { staticClass: "property-title-time-picker__all-day" }, [_c("NcCheckboxRadioSwitch", { attrs: { checked: _vm.isLeave }, on: { "update:checked": _vm.toggleIsLeave } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Congé")) + "\n\t\t")])], 1)]) : _c("div", [_vm._v("\n\t" + _vm._s(_vm.getIsLeaveLabel) + "\n")]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=template&id=04aa9fca&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=template&id=04aa9fca&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("div", { staticClass: "property-select", class: { "property-select--readonly": _vm.isReadOnly } }, [_c(_vm.icon, { tag: "component", staticClass: "property-select__icon", class: { "property-select__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName } }), _vm._v(" "), _c("div", { staticClass: "property-select__input", class: { "property-select__input--readonly": _vm.isReadOnly } }, [!_vm.isReadOnly ? _c("NcSelect", { attrs: { options: _vm.options, searchable: _vm.searchable, name: _vm.readableName, value: _vm.selectedValue, placeholder: _vm.placeholder, clearable: false, labelOutside: true, "input-id": "value", label: "label" }, on: { input: _vm.changeValue } }) : _c("div", [_vm._v(_vm._s(_vm.selectedValue.label))])], 1), _vm._v(" "), _vm.hasInfo ? _c("div", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: _vm.info, expression: "info" }], staticClass: "property-select__info" }, [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })], 1) : _vm._e()], 1) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=template&id=3787864a&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=template&id=3787864a&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("div", { staticClass: "property-select", class: { "property-select--readonly": _vm.isReadOnly } }, [_c(_vm.icon, { tag: "component", staticClass: "property-select__icon", class: { "property-select__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName } }), _vm._v(" "), _c("div", { staticClass: "property-select__input", class: { "property-select__input--readonly": _vm.isReadOnly } }, [!_vm.isReadOnly ? _c("NcSelect", { attrs: { options: _vm.options, searchable: true, multiple: false, taggable: false, name: _vm.readableName, value: _vm.selectedValue, placeholder: _vm.placeholder, clearable: true, labelOutside: true, "input-id": "value", label: "label" }, on: { input: _vm.changeValue } }) : _c("div", [_vm._v(_vm._s(_vm.selectedValue.label))])], 1), _vm._v(" "), _vm.hasInfo ? _c("div", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: _vm.info, expression: "info" }], staticClass: "property-select__info" }, [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })], 1) : _vm._e()], 1) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjaxMultiple.vue?vue&type=template&id=8c4487ea": /*!****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjaxMultiple.vue?vue&type=template&id=8c4487ea ***! \****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("div", { staticClass: "property-select-multiple" }, [_c(_vm.icon, { tag: "component", staticClass: "property-select-multiple__icon", class: { "property-select-multiple__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName } }), _vm._v(" "), _c("div", { staticClass: "property-select-multiple__input", class: { "property-select-multiple__input--readonly": _vm.isReadOnly } }, [!_vm.isReadOnly ? _c("NcSelect", { attrs: { value: _vm.selectionData, options: _vm.options, searchable: true, placeholder: _vm.placeholder, name: _vm.readableName, multiple: true, taggable: true, labelOutside: true, "no-wrap": false, "deselect-from-dropdown": true, "create-option": label => ({ value: label, label }), "input-id": "label", label: "label" }, on: { "option:selecting": _vm.tag, "option:deselected": _vm.unselectValue }, scopedSlots: _vm._u([_vm.coloredOptions ? { key: "option", fn: function (scope) { return [_c("PropertySelectMultipleColoredOption", { attrs: { option: scope } })]; } } : null, _vm.coloredOptions ? { key: "selected-option-container", fn: function (scope) { return [_c("PropertySelectMultipleColoredOption", { attrs: { option: scope.option, closeable: true }, on: { deselect: _vm.unselectValue } })]; } } : null], null, true) }) : _c("div", { staticClass: "property-select-multiple-colored-tag-wrapper" }, _vm._l(this.selectionData, function (singleValue) { return _c("PropertySelectMultipleColoredTag", { key: singleValue.value, attrs: { option: singleValue } }); }), 1)], 1), _vm._v(" "), _vm.hasInfo ? _c("div", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: _vm.info, expression: "info" }], staticClass: "property-select__info" }, [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })], 1) : _vm._e()], 1) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectArticle.vue?vue&type=template&id=6cbd158b": /*!***********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectArticle.vue?vue&type=template&id=6cbd158b ***! \***********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("div", { staticClass: "property-select-multiple" }, [_c(_vm.icon, { tag: "component", staticClass: "property-select-multiple__icon", class: { "property-select-multiple__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName } }), _vm._v(" "), _c("div", { staticClass: "property-select-multiple__input", class: { "property-select-multiple__input--readonly": _vm.isReadOnly } }, [!_vm.isReadOnly ? _c("NcSelect", { attrs: { value: _vm.selectionData, options: _vm.options, searchable: true, placeholder: _vm.placeholder, name: _vm.readableName, multiple: true, taggable: true, labelOutside: true, "no-wrap": false, "deselect-from-dropdown": true, "create-option": label => ({ value: label, label }), "input-id": "label", label: "label" }, on: { "option:selecting": _vm.tag, "option:deselected": _vm.unselectValue }, scopedSlots: _vm._u([_vm.coloredOptions ? { key: "option", fn: function (scope) { return [_c("PropertySelectMultipleColoredOption", { attrs: { option: scope } })]; } } : null, _vm.coloredOptions ? { key: "selected-option-container", fn: function (scope) { return [_c("PropertySelectMultipleColoredOption", { attrs: { option: scope.option, closeable: true }, on: { deselect: _vm.unselectValue } })]; } } : null], null, true) }) : _c("div", { staticClass: "property-select-multiple-colored-tag-wrapper" }, _vm._l(this.selectionData, function (singleValue) { return _c("PropertySelectMultipleColoredTag", { key: singleValue.value, attrs: { option: singleValue } }); }), 1)], 1), _vm._v(" "), _vm.hasInfo ? _c("div", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: _vm.info, expression: "info" }], staticClass: "property-select__info" }, [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })], 1) : _vm._e()], 1) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectClient.vue?vue&type=template&id=d3ad9774&scoped=true": /*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectClient.vue?vue&type=template&id=d3ad9774&scoped=true ***! \**********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("div", { staticClass: "property-select", class: { "property-select--readonly": _vm.isReadOnly } }, [_c(_vm.icon, { tag: "component", staticClass: "property-select__icon", class: { "property-select__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName } }), _vm._v(" "), _c("div", { staticClass: "property-select__input", class: { "property-select__input--readonly": _vm.isReadOnly } }, [!_vm.isReadOnly ? _c("NcSelect", { attrs: { options: _vm.options, searchable: true, multiple: false, taggable: false, name: _vm.readableName, value: _vm.selectedValue, placeholder: _vm.placeholder, clearable: true, labelOutside: true, "input-id": "value", label: "label" }, on: { input: _vm.changeValue } }) : _c("div", [_vm._v(_vm._s(_vm.selectedValue.label))])], 1), _vm._v(" "), _vm.hasInfo ? _c("div", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: _vm.info, expression: "info" }], staticClass: "property-select__info" }, [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })], 1) : _vm._e()], 1) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectLieu.vue?vue&type=template&id=2cac0b28&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectLieu.vue?vue&type=template&id=2cac0b28&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("div", { staticClass: "property-select", class: { "property-select--readonly": _vm.isReadOnly } }, [_c(_vm.icon, { tag: "component", staticClass: "property-select__icon", class: { "property-select__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName } }), _vm._v(" "), _c("div", { staticClass: "property-select__input", class: { "property-select__input--readonly": _vm.isReadOnly } }, [!_vm.isReadOnly ? _c("NcSelect", { attrs: { options: _vm.options, searchable: true, multiple: false, taggable: false, name: _vm.readableName, value: _vm.selectedValue, placeholder: _vm.placeholder, clearable: true, labelOutside: true, "input-id": "value", label: "label" }, on: { input: _vm.changeValue } }) : _c("div", [_vm._v(_vm._s(_vm.selectedValue.label))])], 1), _vm._v(" "), _vm.hasInfo ? _c("div", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: _vm.info, expression: "info" }], staticClass: "property-select__info" }, [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })], 1) : _vm._e()], 1) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultiple.vue?vue&type=template&id=5444ef4b": /*!************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultiple.vue?vue&type=template&id=5444ef4b ***! \************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("div", { staticClass: "property-select-multiple" }, [_c(_vm.icon, { tag: "component", staticClass: "property-select-multiple__icon", class: { "property-select-multiple__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName } }), _vm._v(" "), _c("div", { staticClass: "property-select-multiple__input", class: { "property-select-multiple__input--readonly": _vm.isReadOnly } }, [!_vm.isReadOnly ? _c("NcSelect", { attrs: { value: _vm.selectionData, options: _vm.options, searchable: true, placeholder: _vm.placeholder, name: _vm.readableName, multiple: true, taggable: true, labelOutside: true, "no-wrap": false, "deselect-from-dropdown": true, "create-option": label => ({ value: label, label }), "input-id": "label", label: "label" }, on: { "option:selecting": _vm.tag, "option:deselected": _vm.unselectValue }, scopedSlots: _vm._u([_vm.coloredOptions ? { key: "option", fn: function (scope) { return [_c("PropertySelectMultipleColoredOption", { attrs: { option: scope } })]; } } : null, _vm.coloredOptions ? { key: "selected-option-container", fn: function (scope) { return [_c("PropertySelectMultipleColoredOption", { attrs: { option: scope.option, closeable: true }, on: { deselect: _vm.unselectValue } })]; } } : null], null, true) }) : _c("div", { staticClass: "property-select-multiple-colored-tag-wrapper" }, _vm._l(_vm.value, function (singleValue) { return _c("PropertySelectMultipleColoredTag", { key: singleValue.value, attrs: { option: singleValue } }); }), 1)], 1), _vm._v(" "), _vm.hasInfo ? _c("div", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: _vm.info, expression: "info" }], staticClass: "property-select__info" }, [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })], 1) : _vm._e()], 1) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultipleColoredOption.vue?vue&type=template&id=43bb977c": /*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultipleColoredOption.vue?vue&type=template&id=43bb977c ***! \*************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("span", { staticClass: "property-select-multiple-colored-tag" }, [_c("div", { staticClass: "property-select-multiple-colored-tag__color-indicator", style: { "background-color": _vm.color } }), _vm._v(" "), _c("span", { staticClass: "property-select-multiple-colored-tag__label" }, [_vm._v(_vm._s(_vm.label))]), _vm._v(" "), _vm.closeable ? _c("div", { staticClass: "icon icon-close", on: { click: _vm.deselect } }) : _vm._e()]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultipleColoredTag.vue?vue&type=template&id=60f074a3": /*!**********************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectMultipleColoredTag.vue?vue&type=template&id=60f074a3 ***! \**********************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("span", { staticClass: "multiselect__tag", style: { "background-color": _vm.color, "border-color": _vm.borderColor, color: _vm.textColor } }, [_c("span", [_vm._v(_vm._s(_vm.label))])]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyText.vue?vue&type=template&id=6782358c": /*!**************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyText.vue?vue&type=template&id=6782358c ***! \**************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("div", { staticClass: "property-text", class: { "property-text--readonly": _vm.isReadOnly } }, [_c(_vm.icon, { tag: "component", staticClass: "property-text__icon", class: { "property-text__icon--hidden": !_vm.showIcon }, attrs: { size: 20, name: _vm.readableName } }), _vm._v(" "), _c("div", { staticClass: "property-text__input", class: { "property-text__input--readonly": _vm.isReadOnly, "property-text__input--linkify": _vm.showLinksClickable } }, [!_vm.isReadOnly && !_vm.showLinksClickable ? _c("textarea", { directives: [{ name: "autosize", rawName: "v-autosize", value: true, expression: "true" }], attrs: { placeholder: _vm.placeholder, rows: _vm.rows, name: _vm.readableName }, domProps: { value: _vm.value }, on: { focus: function ($event) { return _vm.handleToggleTextareaFocus(true); }, blur: function ($event) { return _vm.handleToggleTextareaFocus(false); }, input: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.changeValue.apply(null, arguments); } } }) : _c("div", { directives: [{ name: "linkify", rawName: "v-linkify", value: { text: _vm.value, linkify: true }, expression: "{ text: value, linkify: true }" }], class: { "linkify-links": _vm.linkifyLinks && !_vm.isReadOnly }, style: { "min-height": _vm.linkifyMinHeight }, on: { click: _vm.handleShowTextarea } })]), _vm._v(" "), _vm.hasInfo ? _c("div", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: _vm.info, expression: "info" }], staticClass: "property-select__info" }, [_c("InformationVariant", { attrs: { size: 20, decorative: "" } })], 1) : _vm._e()], 1) : _vm._e(); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyTitle.vue?vue&type=template&id=49efd589": /*!***************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyTitle.vue?vue&type=template&id=49efd589 ***! \***************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "property-title", class: { "property-title--readonly": _vm.isReadOnly } }, [_c("div", { staticClass: "property-title__input", class: { "property-title__input--readonly": _vm.isReadOnly } }, [!_vm.isReadOnly ? _c("input", { directives: [{ name: "focus", rawName: "v-focus" }], attrs: { type: "text", placeholder: _vm.t("calendar", "Nom et prénom du défunt") }, domProps: { value: _vm.value }, on: { input: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.changeValue.apply(null, arguments); } } }) : _c("div", [_vm._v(_vm._s(_vm.value))])])]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyTitleTimePicker.vue?vue&type=template&id=310f4ca4": /*!*************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyTitleTimePicker.vue?vue&type=template&id=310f4ca4 ***! \*************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "property-title-time-picker", class: { "property-title-time-picker--readonly": _vm.isReadOnly } }, [_vm.isReadOnly ? _c("CalendarIcon", { staticClass: "property-title-time-picker__icon", attrs: { size: 20 } }) : _vm._e(), _vm._v(" "), !_vm.isReadOnly ? _c("div", { staticClass: "property-title-time-picker__time-pickers" }, [_c("DatePicker", { attrs: { date: _vm.startDate, "timezone-id": _vm.startTimezone, prefix: "from", "is-all-day": _vm.isAllDay, "append-to-body": _vm.appendToBody, "user-timezone-id": _vm.userTimezone }, on: { change: _vm.changeStart, "change-timezone": _vm.changeStartTimezone } }), _vm._v(" "), _c("DatePicker", { attrs: { date: _vm.endDate, "timezone-id": _vm.endTimezone, prefix: "to", "is-all-day": _vm.isAllDay, "append-to-body": _vm.appendToBody, "user-timezone-id": _vm.userTimezone }, on: { change: _vm.changeEnd, "change-timezone": _vm.changeEndTimezone } })], 1) : _vm._e(), _vm._v(" "), _vm.isReadOnly ? _c("div", { staticClass: "property-title-time-picker__time-pickers property-title-time-picker__time-pickers--readonly" }, [_c("div", { staticClass: "property-title-time-picker-read-only-wrapper property-title-time-picker-read-only-wrapper--start-date" }, [_c("div", { staticClass: "property-title-time-picker-read-only-wrapper__label" }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.formattedStart) + "\n\t\t\t")]), _vm._v(" "), !_vm.isAllDay ? _c("IconTimezone", { class: { "highlighted-timezone-icon": _vm.highlightStartTimezone }, attrs: { name: _vm.endTimezone, size: 20 } }) : _vm._e()], 1), _vm._v(" "), !_vm.isAllDayOneDayEvent ? [_c("div", [_vm._v("-")]), _vm._v(" "), _c("div", { staticClass: "property-title-time-picker-read-only-wrapper property-title-time-picker-read-only-wrapper--end-date" }, [_c("div", { staticClass: "property-title-time-picker-read-only-wrapper__label" }, [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.formattedEnd) + "\n\t\t\t\t")]), _vm._v(" "), !_vm.isAllDay ? _c("IconTimezone", { class: { "highlighted-timezone-icon": _vm.highlightStartTimezone }, attrs: { title: _vm.endTimezone, size: 20 } }) : _vm._e()], 1)] : _vm._e()], 2) : _vm._e()], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/Repeat.vue?vue&type=template&id=5b60291d": /*!****************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/Repeat.vue?vue&type=template&id=5b60291d ***! \****************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "property-repeat", class: { "property-repeat--readonly": _vm.isReadOnly } }, [_c("div", { staticClass: "property-repeat__summary" }, [_c("RepeatIcon", { staticClass: "property-repeat__summary__icon", attrs: { name: _vm.$t("calendar", "Repeat"), size: 20 } }), _vm._v(" "), _c("RepeatSummary", { staticClass: "property-repeat__summary__content", attrs: { "recurrence-rule": _vm.recurrenceRule } }), _vm._v(" "), !_vm.isReadOnly ? _c("Actions", [_c("ActionButton", { on: { click: _vm.toggleOptions }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c(_vm.toggleIcon, { tag: "component", attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1434084892) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.toggleTitle) + "\n\t\t\t")])], 1) : _vm._e()], 1), _vm._v(" "), _vm.showOptions ? _c("div", { staticClass: "property-repeat__options" }, [!_vm.isRecurrenceException && !_vm.isReadOnly ? _c("RepeatFreqInterval", { attrs: { frequency: _vm.recurrenceRule.frequency, interval: _vm.recurrenceRule.interval }, on: { "change-interval": _vm.changeInterval, "change-frequency": _vm.changeFrequency } }) : _vm._e(), _vm._v(" "), _vm.isFreqWeekly && !_vm.isRecurrenceException && !_vm.isReadOnly ? _c("RepeatFreqWeeklyOptions", { attrs: { "by-day": _vm.recurrenceRule.byDay }, on: { "add-by-day": _vm.addByDay, "remove-by-day": _vm.removeByDay } }) : _vm._e(), _vm._v(" "), _vm.isFreqMonthly && !_vm.isRecurrenceException && !_vm.isReadOnly ? _c("RepeatFreqMonthlyOptions", { attrs: { "by-day": _vm.recurrenceRule.byDay, "by-month-day": _vm.recurrenceRule.byMonthDay, "by-set-position": _vm.recurrenceRule.bySetPosition }, on: { "add-by-month-day": _vm.addByMonthDay, "remove-by-month-day": _vm.removeByMonthDay, "change-by-day": _vm.setByDay, "change-by-set-position": _vm.setBySetPosition, "change-to-by-set-position": _vm.changeToBySetPositionMonthly, "change-to-by-day": _vm.changeToByDayMonthly } }) : _vm._e(), _vm._v(" "), _vm.isFreqYearly && !_vm.isRecurrenceException && !_vm.isReadOnly ? _c("RepeatFreqYearlyOptions", { attrs: { "by-day": _vm.recurrenceRule.byDay, "by-month": _vm.recurrenceRule.byMonth, "by-set-position": _vm.recurrenceRule.bySetPosition }, on: { "change-by-day": _vm.setByDay, "change-by-set-position": _vm.setBySetPosition, "add-by-month": _vm.addByMonth, "remove-by-month": _vm.removeByMonth, "enable-by-set-position": _vm.enableBySetPositionYearly, "disable-by-set-position": _vm.disableBySetPositionYearly } }) : _vm._e(), _vm._v(" "), _vm.isRepeating && !_vm.isRecurrenceException && !_vm.isReadOnly ? _c("RepeatEndRepeat", { attrs: { "calendar-object-instance": _vm.calendarObjectInstance, until: _vm.recurrenceRule.until, count: _vm.recurrenceRule.count }, on: { "set-infinite": _vm.setInfinite, "set-until": _vm.setUntil, "set-count": _vm.setCount, "change-to-count": _vm.changeToCount, "change-to-until": _vm.changeToUntil } }) : _vm._e(), _vm._v(" "), _vm.recurrenceRule.isUnsupported && !_vm.isRecurrenceException ? _c("RepeatUnsupportedWarning") : _vm._e(), _vm._v(" "), _vm.isRecurrenceException ? _c("RepeatExceptionWarning") : _vm._e()], 1) : _vm._e()]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatEndRepeat.vue?vue&type=template&id=f005ae2e": /*!*************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatEndRepeat.vue?vue&type=template&id=f005ae2e ***! \*************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "repeat-option-set repeat-option-set--end" }, [_c("span", { staticClass: "repeat-option-end__label" }, [_vm._v(_vm._s(_vm.$t("calendar", "End repeat")))]), _vm._v(" "), _c("NcSelect", { staticClass: "repeat-option-end__end-type-select", attrs: { options: _vm.options, searchable: false, name: _vm.$t("calendar", "Select to end repeat"), value: _vm.selectedOption, clearable: false, "input-id": "value", label: "label" }, on: { input: _vm.changeEndType } }), _vm._v(" "), _vm.isUntil ? _c("DatePicker", { staticClass: "repeat-option-end__until", attrs: { min: _vm.minimumDate, date: _vm.until, "is-all-day": true }, on: { change: _vm.changeUntil } }) : _vm._e(), _vm._v(" "), _vm.isCount ? _c("input", { staticClass: "repeat-option-end__count", attrs: { type: "number", min: "1", max: "3500" }, domProps: { value: _vm.count }, on: { input: _vm.changeCount } }) : _vm._e(), _vm._v(" "), _vm.isCount ? _c("span", { staticClass: "repeat-option-end__count" }, [_vm._v("\n\t\t" + _vm._s(_vm.occurrencesLabel) + "\n\t")]) : _vm._e()], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatExceptionWarning.vue?vue&type=template&id=d25fd5ec": /*!********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatExceptionWarning.vue?vue&type=template&id=d25fd5ec ***! \********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "repeat-option-warning" }, [_c("strong", [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "This event is the recurrence-exception of a recurrence-set. You cannot add a recurrence-rule to it.")) + "\n\t")])]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFirstLastSelect.vue?vue&type=template&id=38a0b655": /*!*******************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFirstLastSelect.vue?vue&type=template&id=38a0b655 ***! \*******************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcSelect", { attrs: { "allow-empty": false, options: _vm.options, value: _vm.selected, disabled: _vm.disabled, placeholder: _vm.$t("calendar", "first"), clearable: false, "input-id": "value", label: "label" }, on: { input: _vm.select } }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqInterval.vue?vue&type=template&id=721d82cc": /*!****************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqInterval.vue?vue&type=template&id=721d82cc ***! \****************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "repeat-option-set repeat-option-set--interval-freq" }, [_c("span", { staticClass: "repeat-option-set__label" }, [_vm._v("\n\t\t" + _vm._s(_vm.repeatEveryLabel) + "\n\t")]), _vm._v(" "), !_vm.isIntervalDisabled ? _c("input", { staticClass: "intervalInput", attrs: { type: "number", min: "1", max: "366" }, domProps: { value: _vm.interval }, on: { input: _vm.changeInterval } }) : _vm._e(), _vm._v(" "), _c("RepeatFreqSelect", { attrs: { freq: _vm.frequency, count: _vm.interval }, on: { change: _vm.changeFrequency } })], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqMonthlyOptions.vue?vue&type=template&id=7e59c7e6": /*!**********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqMonthlyOptions.vue?vue&type=template&id=7e59c7e6 ***! \**********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "repeat-option-set repeat-option-set--monthly" }, [_c("div", { staticClass: "repeat-option-set-section" }, [_c("ActionRadio", { staticClass: "repeat-option-set-section__title", attrs: { name: _vm.radioInputId, checked: _vm.byMonthDayEnabled }, on: { change: _vm.enableByMonthDay } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "By day of the month")) + "\n\t\t")]), _vm._v(" "), _c("div", { staticClass: "repeat-option-set-section__grid" }, _vm._l(_vm.byMonthDayOptions, function (option) { return _c("NcButton", { key: option.value, staticClass: "repeat-option-set-section-grid-item", attrs: { type: option.selected ? "primary" : "secondary", disabled: !_vm.byMonthDayEnabled }, on: { click: function ($event) { return _vm.toggleByMonthDay(option.value); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(option.label) + "\n\t\t\t")]); }), 1)], 1), _vm._v(" "), _c("div", { staticClass: "repeat-option-set-section repeat-option-set-section--on-the-select" }, [_c("ActionRadio", { staticClass: "repeat-option-set-section__title", attrs: { name: _vm.radioInputId, checked: !_vm.byMonthDayEnabled }, on: { change: _vm.enableBySetPosition } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "On the")) + "\n\t\t")]), _vm._v(" "), _c("RepeatFirstLastSelect", { attrs: { "by-set-position": _vm.bySetPosition, disabled: _vm.byMonthDayEnabled }, on: { change: _vm.changeBySetPosition } }), _vm._v(" "), _c("RepeatOnTheSelect", { attrs: { "by-day": _vm.byDay, disabled: _vm.byMonthDayEnabled }, on: { change: _vm.changeByDay } })], 1)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqSelect.vue?vue&type=template&id=2852e691": /*!**************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqSelect.vue?vue&type=template&id=2852e691 ***! \**************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcSelect", { attrs: { "allow-empty": false, options: _vm.options, value: _vm.selected, clearable: false, "input-id": "freq", label: "label" }, on: { input: _vm.select } }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqWeeklyOptions.vue?vue&type=template&id=332d3358": /*!*********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqWeeklyOptions.vue?vue&type=template&id=332d3358 ***! \*********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "repeat-option-set repeat-option-set--weekly" }, [_c("span", { staticClass: "repeat-option-set-section__title" }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "on")) + "\n\t")]), _vm._v(" "), _c("div", { staticClass: "repeat-option-set-section__grid" }, _vm._l(_vm.options, function (option) { return _c("NcButton", { key: option.value, staticClass: "repeat-option-set-section-grid-item", attrs: { type: option.selected ? "primary" : "secondary" }, on: { click: function ($event) { return _vm.toggleByDay(option.value); } } }, [_vm._v("\n\t\t\t" + _vm._s(option.label) + "\n\t\t")]); }), 1)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqYearlyOptions.vue?vue&type=template&id=cbb86ca2": /*!*********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatFreqYearlyOptions.vue?vue&type=template&id=cbb86ca2 ***! \*********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "repeat-option-set repeat-option-set--yearly" }, [_c("div", { staticClass: "repeat-option-set-section" }, [_c("div", { staticClass: "repeat-option-set-section__grid" }, _vm._l(_vm.options, function (option) { return _c("NcButton", { key: option.value, staticClass: "repeat-option-set-section-grid-item", class: option.selected ? "primary" : "secondary", on: { click: function ($event) { return _vm.toggleByMonth(option.value); } } }, [_vm._v("\n\t\t\t\t" + _vm._s(option.label) + "\n\t\t\t")]); }), 1)]), _vm._v(" "), _c("div", { staticClass: "repeat-option-set-section repeat-option-set-section--on-the-select" }, [_c("ActionCheckbox", { staticClass: "repeat-option-set-section__title", attrs: { checked: _vm.isBySetPositionEnabled }, on: { change: _vm.toggleBySetPosition } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "On the")) + "\n\t\t")]), _vm._v(" "), _c("RepeatFirstLastSelect", { attrs: { "by-set-position": _vm.bySetPosition, disabled: !_vm.isBySetPositionEnabled }, on: { change: _vm.changeBySetPosition } }), _vm._v(" "), _c("RepeatOnTheSelect", { attrs: { "by-day": _vm.byDay, disabled: !_vm.isBySetPositionEnabled }, on: { change: _vm.changeByDay } })], 1)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatOnTheSelect.vue?vue&type=template&id=67e244fe": /*!***************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatOnTheSelect.vue?vue&type=template&id=67e244fe ***! \***************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcSelect", { attrs: { "allow-empty": false, options: _vm.options, value: _vm.selected, disabled: _vm.disabled, placeholder: _vm.$t("calendar", "Monday"), clearable: false, "input-id": "value", label: "label" }, on: { input: _vm.select } }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatSummary.vue?vue&type=template&id=20fe4e0e": /*!***********************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatSummary.vue?vue&type=template&id=20fe4e0e ***! \***********************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.display ? _c("span", [_vm._v("\n\t" + _vm._s(_vm._f("formatRecurrenceRule")(_vm.recurrenceRule, _vm.locale)) + "\n")]) : _c("span", [_vm._v("\n\t" + _vm._s(_vm.$t("calendar", "Does not repeat")) + "\n")]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatUnsupportedWarning.vue?vue&type=template&id=56abbbb8": /*!**********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Repeat/RepeatUnsupportedWarning.vue?vue&type=template&id=56abbbb8 ***! \**********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "repeat-option-warning" }, [_c("strong", [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "The recurrence definition of this event is not fully supported by Nextcloud. If you edit the recurrence-options, certain recurrences may be lost.")) + "\n\t")])]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceList.vue?vue&type=template&id=33af6898": /*!*************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceList.vue?vue&type=template&id=33af6898 ***! \*************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", [!_vm.isReadOnly && _vm.hasUserEmailAddress ? _c("ResourceListSearch", { attrs: { "already-invited-emails": _vm.alreadyInvitedEmails, "calendar-object-instance": _vm.calendarObjectInstance }, on: { "add-resource": _vm.addResource } }) : _vm._e(), _vm._v(" "), _vm._l(_vm.resources, function (resource) { return _c("ResourceListItem", { key: resource.email, attrs: { resource: resource, "is-read-only": _vm.isReadOnly, "organizer-display-name": _vm.organizerDisplayName }, on: { "remove-resource": _vm.removeResource } }); }), _vm._v(" "), _vm.isListEmpty && _vm.hasUserEmailAddress ? _c("NoAttendeesView", { attrs: { message: _vm.noResourcesMessage }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("MapMarker", { attrs: { size: 50, decorative: "" } })]; }, proxy: true }], null, false, 774433815) }) : _vm._e(), _vm._v(" "), !_vm.isReadOnly && _vm.isListEmpty && !_vm.hasUserEmailAddress ? _c("OrganizerNoEmailError") : _vm._e(), _vm._v(" "), _vm.suggestedRooms.length ? _c("h3", [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Suggestions")) + "\n\t")]) : _vm._e(), _vm._v(" "), _vm._l(_vm.suggestedRooms, function (room) { return _c("ResourceListItem", { key: room.email + "-suggested", attrs: { resource: room, "is-read-only": false, "organizer-display-name": _vm.organizerDisplayName, "is-suggestion": true }, on: { "add-suggestion": _vm.addResource } }); })], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListItem.vue?vue&type=template&id=1372f36a&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListItem.vue?vue&type=template&id=1372f36a&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "resource-list-item" }, [_c("AvatarParticipationStatus", { attrs: { "attendee-is-organizer": false, "is-viewed-by-organizer": _vm.isViewedByOrganizer, "is-resource": true, "is-suggestion": _vm.isSuggestion, "avatar-link": _vm.commonName, "participation-status": _vm.participationStatus, "organizer-display-name": _vm.organizerDisplayName, "common-name": _vm.commonName } }), _vm._v(" "), _c("div", { staticClass: "resource-list-item__displayname" }, [_vm._v("\n\t\t" + _vm._s(_vm.commonName) + "\n\t")]), _vm._v(" "), _c("div", { staticClass: "resource-list-item__actions" }, [_vm.isViewedByOrganizer && _vm.isSuggestion ? _c("Actions", [_c("ActionButton", { on: { click: _vm.addSuggestion }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Plus", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 4194568628) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Add resource")) + "\n\t\t\t")])], 1) : _vm.isViewedByOrganizer ? _c("Actions", [_vm.seatingCapacity ? _c("ActionCaption", { attrs: { name: _vm.seatingCapacity } }) : _vm._e(), _vm._v(" "), _vm.roomType ? _c("ActionCaption", { attrs: { name: _vm.roomType } }) : _vm._e(), _vm._v(" "), _vm.hasProjector ? _c("ActionCaption", { attrs: { name: _vm.$t("calendar", "Has a projector") } }) : _vm._e(), _vm._v(" "), _vm.hasWhiteboard ? _c("ActionCaption", { attrs: { name: _vm.$t("calendar", "Has a whiteboard") } }) : _vm._e(), _vm._v(" "), _vm.isAccessible ? _c("ActionCaption", { attrs: { name: _vm.$t("calendar", "Wheelchair accessible") } }) : _vm._e(), _vm._v(" "), _vm.seatingCapacity || _vm.roomType || _vm.hasProjector || _vm.hasWhiteboard || _vm.isAccessible ? _c("ActionSeparator") : _vm._e(), _vm._v(" "), _c("ActionButton", { on: { click: _vm.removeResource }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t\t" + _vm._s(_vm.$t("calendar", "Remove resource")) + "\n\t\t\t")])], 1) : _vm._e()], 1)], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListSearch.vue?vue&type=template&id=1c201660&scoped=true": /*!*******************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListSearch.vue?vue&type=template&id=1c201660&scoped=true ***! \*******************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "resource-search" }, [_c("NcSelect", { staticClass: "resource-search__multiselect", class: { showContent: _vm.inputGiven, "icon-loading": _vm.isLoading }, attrs: { options: _vm.matches, searchable: true, "max-height": 600, placeholder: _vm.placeholder, "input-id": "email", label: "displayName", clearable: false }, on: { search: _vm.findResources, input: _vm.addResource }, scopedSlots: _vm._u([{ key: "option", fn: function (option) { return [_c("div", { staticClass: "resource-search-list-item" }, [_c("Avatar", { attrs: { "disable-tooltip": true, "display-name": option.displayName } }), _vm._v(" "), _c("div", { staticClass: "resource-search-list-item__label resource-search-list-item__label--single-email" }, [_c("div", [_vm._v("\n\t\t\t\t\t\t" + _vm._s(option.displayName) + "\n\t\t\t\t\t\t"), !_vm.isAvailable ? _c("span", { staticClass: "resource-search-list-item__label__availability" }, [_vm._v("\n\t\t\t\t\t\t\t(" + _vm._s(_vm.formatAvailability(option.isAvailable)) + ")\n\t\t\t\t\t\t")]) : _vm._e()]), _vm._v(" "), _c("div", { attrs: { name: option.subLine } }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(option.subLine) + "\n\t\t\t\t\t")])])], 1)]; } }]) }), _vm._v(" "), [_c("div", { staticClass: "resource-search__capacity" }, [_c("ResourceSeatingCapacity", { attrs: { value: _vm.capacity }, on: { "update:value": function ($event) { _vm.capacity = $event; } } }), _vm._v(" "), _c("Actions", { staticClass: "resource-search__capacity__actions" }, [_c("ActionCheckbox", { attrs: { checked: _vm.isAvailable }, on: { "update:checked": function ($event) { _vm.isAvailable = $event; } } }, [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Available")) + "\n\t\t\t\t")]), _vm._v(" "), _c("ActionCheckbox", { attrs: { checked: _vm.hasProjector }, on: { "update:checked": function ($event) { _vm.hasProjector = $event; } } }, [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Projector")) + "\n\t\t\t\t")]), _vm._v(" "), _c("ActionCheckbox", { attrs: { checked: _vm.hasWhiteboard }, on: { "update:checked": function ($event) { _vm.hasWhiteboard = $event; } } }, [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Whiteboard")) + "\n\t\t\t\t")]), _vm._v(" "), _c("ActionCheckbox", { attrs: { checked: _vm.isAccessible }, on: { "update:checked": function ($event) { _vm.isAccessible = $event; } } }, [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Wheelchair accessible")) + "\n\t\t\t\t")])], 1)], 1), _vm._v(" "), _c("ResourceRoomType", { attrs: { value: _vm.roomType }, on: { "update:value": function ($event) { _vm.roomType = $event; } } })]], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=template&id=5448722f&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=template&id=5448722f&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "resource-room-type" }, [_c("div", { staticClass: "resource-room-type__input" }, [_c("NcSelect", { attrs: { value: _vm.getOption(_vm.value), options: _vm.options, placeholder: _vm.placeholder, clearable: false, "input-id": "value", label: "label" }, on: { "option:selected": _vm.changeValue }, scopedSlots: _vm._u([{ key: "option", fn: function (option) { return [_c("div", [_vm._v(_vm._s(option.label !== null ? option.label : ""))])]; } }]) })], 1)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceSeatingCapacity.vue?vue&type=template&id=50d6150d": /*!************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceSeatingCapacity.vue?vue&type=template&id=50d6150d ***! \************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "resource-capacity" }, [_c("div", { staticClass: "resource-capacity__input" }, [_c("input", { attrs: { type: "number", min: "0", placeholder: _vm.placeholder }, domProps: { value: _vm.value }, on: { input: function ($event) { $event.preventDefault(); $event.stopPropagation(); return _vm.changeValue.apply(null, arguments); } } })])]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/SaveButtons.vue?vue&type=template&id=8f0b8a9c&scoped=true": /*!**************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/SaveButtons.vue?vue&type=template&id=8f0b8a9c&scoped=true ***! \**************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "save-buttons", class: { "save-buttons--grow": _vm.growHorizontally } }, [!_vm.isCalendarPending && !_vm.isReadOnly ? _c("NcButton", { class: "d-flex w-max-content", on: { click: _vm.saveAsPendingCalendarEvent } }, [_vm._v("\n\t\tMettre en attente\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.showMoreButton ? _c("NcButton", { attrs: { type: _vm.moreButtonType, disabled: _vm.disabled }, on: { click: _vm.showMore } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "More details")) + "\n\t")]) : _vm._e(), _vm._v(" "), _vm.showSaveButton ? _c("NcButton", { attrs: { type: "primary", disabled: _vm.disabled }, on: { click: _vm.saveThisOnly }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CheckIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 2630571749) }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Save")) + "\n\t")]) : _vm._e(), _vm._v(" "), _vm.showUpdateButton ? _c("NcButton", { attrs: { type: "primary", disabled: _vm.disabled }, on: { click: _vm.saveThisOnly }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CheckIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 2630571749) }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Update")) + "\n\t")]) : _vm._e(), _vm._v(" "), _vm.showUpdateThisAndFutureButton ? _c("NcButton", { attrs: { type: _vm.forceThisAndAllFuture ? "primary" : "secondary", disabled: _vm.disabled }, on: { click: _vm.saveThisAndAllFuture } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Update this and all future")) + "\n\t")]) : _vm._e(), _vm._v(" "), _vm.showUpdateOnlyThisButton ? _c("NcButton", { attrs: { type: "primary", disabled: _vm.disabled }, on: { click: _vm.saveThisOnly } }, [_vm._v("\n\t\t" + _vm._s(_vm.$t("calendar", "Update this occurrence")) + "\n\t")]) : _vm._e(), _vm._v(" "), _vm._t("default")], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/EmptyCalendar.vue?vue&type=template&id=50c703aa": /*!*********************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/EmptyCalendar.vue?vue&type=template&id=50c703aa ***! \*********************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("EmptyContent", { attrs: { name: _vm.$t("calendar", "Public calendar does not exist"), description: _vm.$t("calendar", "Maybe the share was deleted or has expired?") }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Icons/IconCircles.vue?vue&type=template&id=e0346656&functional=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Icons/IconCircles.vue?vue&type=template&id=e0346656&functional=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render(_c, _vm) { return _c("span", _vm._g(_vm._b({ staticClass: "material-design-icon icon-circle", class: [_vm.data.class, _vm.data.staticClass], attrs: { "aria-hidden": !_vm.props.title, "aria-label": _vm.props.title, role: "img" } }, "span", _vm.data.attrs, false), _vm.listeners), [_c("svg", { staticClass: "material-design-icon__svg", attrs: { fill: _vm.props.fillColor, width: _vm.props.size, height: _vm.props.size, viewBox: "0 0 21.33 21.33" } }, [_c("path", { attrs: { d: "M0 0h24v24H0V0z", fill: "none" } }), _vm._v(" "), _c("path", { attrs: { d: "M10.67 1.33a9.34 9.34 0 100 18.68 9.34 9.34 0 000-18.68zM6.93 15.8a2.33 2.33 0 110-4.67 2.33 2.33 0 010 4.67zm1.4-8.87a2.33 2.33 0 114.67 0 2.33 2.33 0 01-4.67 0zm6.07 8.87a2.33 2.33 0 110-4.67 2.33 2.33 0 010 4.67z" } })])]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Popover/PopoverLoadingIndicator.vue?vue&type=template&id=9bd90324": /*!***************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Popover/PopoverLoadingIndicator.vue?vue&type=template&id=9bd90324 ***! \***************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm._m(0); }; var staticRenderFns = [function () { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "popover-loading-indicator" }, [_c("div", { staticClass: "icon icon-loading popover-loading-indicator__icon" })]); }]; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPicker.vue?vue&type=template&id=271fa576&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPicker.vue?vue&type=template&id=271fa576&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcSelect", { attrs: { label: "id", "input-id": _vm.inputId, disabled: _vm.isDisabled, options: _vm.options, value: _vm.valueIds, multiple: _vm.multiple, clearable: _vm.clearable, "filter-by": _vm.selectFilterBy }, on: { "option:selected": _vm.change, "option:deselected": _vm.remove }, scopedSlots: _vm._u([{ key: "option", fn: function (_ref) { let { id } = _ref; return [_c("CalendarPickerOption", { attrs: { color: _vm.getCalendarById(id).color, "display-name": _vm.getCalendarById(id).displayName, "is-shared-with-me": _vm.getCalendarById(id).isSharedWithMe, owner: _vm.getCalendarById(id).owner } })]; } }, { key: "selected-option", fn: function (_ref2) { let { id } = _ref2; return [_c("CalendarPickerOption", { attrs: { color: _vm.getCalendarById(id).color, "display-name": _vm.getCalendarById(id).displayName, "is-shared-with-me": _vm.getCalendarById(id).isSharedWithMe, owner: _vm.getCalendarById(id).owner } })]; } }]) }); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPickerOption.vue?vue&type=template&id=0d52a90b": /*!***********************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPickerOption.vue?vue&type=template&id=0d52a90b ***! \***********************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("div", { staticClass: "calendar-picker-option" }, [_c("div", { staticClass: "calendar-picker-option__color-indicator", style: { backgroundColor: _vm.color } }), _vm._v(" "), _c("span", { staticClass: "calendar-picker-option__label" }, [_vm._v("\n\t\t" + _vm._s(_vm.displayName) + "\n\t")]), _vm._v(" "), _vm.isSharedWithMe ? _c("Avatar", { staticClass: "calendar-picker-option__avatar", attrs: { "disable-menu": true, "disable-tooltip": true, user: _vm.userId, "display-name": _vm.userDisplayName, size: 18 } }) : _vm._e()], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/DatePicker.vue?vue&type=template&id=4ccb5234&scoped=true": /*!*************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/DatePicker.vue?vue&type=template&id=4ccb5234&scoped=true ***! \*************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("DateTimePicker", _vm._g(_vm._b({ attrs: { lang: _vm.lang, "first-day-of-week": _vm.firstDay, format: "YYYY-MM-DD HH:mm", formatter: _vm.formatter, value: _vm.date, type: _vm.actualType, ":clearable": false, "minute-step": 5, "disabled-date": _vm.disabledDate, "show-second": false, "show-time-panel": _vm.showTimePanel, "show-week-number": _vm.showWeekNumbers, use12h: _vm.showAmPm, "append-to-body": _vm.appendToBody, confirm: "" }, on: { close: _vm.close, change: _vm.change, pick: _vm.pickDate }, scopedSlots: _vm._u([{ key: "icon-calendar", fn: function () { return [_c("NcButton", { attrs: { type: "tertiary-no-background" }, on: { click: function ($event) { $event.stopPropagation(); $event.preventDefault(); return _vm.toggleTimezonePopover.apply(null, arguments); }, mousedown: function ($event) { $event.stopPropagation(); $event.preventDefault(); return (() => {}).apply(null, arguments); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_vm.isAllDay ? _c("IconNewCalendar", { attrs: { size: 20 } }) : _c("IconTimezone", { class: { "highlighted-timezone-icon": _vm.highlightTimezone }, attrs: { size: 20 } })]; }, proxy: true }]) }), _vm._v(" "), _c("Popover", { attrs: { shown: _vm.showTimezonePopover, "open-class": "timezone-popover-wrapper" }, on: { "update:shown": function ($event) { _vm.showTimezonePopover = $event; } } }, [[_c("div", { staticClass: "timezone-popover-wrapper__title" }, [_c("strong", [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Please select a time zone:")) + "\n\t\t\t\t\t")])]), _vm._v(" "), _c("TimezonePicker", { staticClass: "timezone-popover-wrapper__timezone-select", attrs: { value: _vm.timezoneId }, on: { input: _vm.changeTimezone } })]], 2)]; }, proxy: true }, !_vm.isAllDay ? { key: "footer", fn: function () { return [!_vm.showTimePanel ? _c("NcButton", { staticClass: "mx-btn mx-btn-text", on: { click: _vm.toggleTimePanel } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Pick a time")) + "\n\t\t")]) : _c("NcButton", { staticClass: "mx-btn mx-btn-text", on: { click: _vm.toggleTimePanel } }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Pick a date")) + "\n\t\t")])]; }, proxy: true } : null], null, true) }, "DateTimePicker", _vm.$attrs, false), _vm.$listeners)); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/TimePicker.vue?vue&type=template&id=35b39f45": /*!*************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/TimePicker.vue?vue&type=template&id=35b39f45 ***! \*************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("DateTimePicker", _vm._g(_vm._b({ attrs: { ":clearable": false, "first-day-of-week": _vm.firstDay, format: _vm.format, lang: _vm.lang, "minute-step": 5, "show-second": false, type: "time", use12h: _vm.showAmPm, value: _vm.date }, on: { change: _vm.change } }, "DateTimePicker", _vm.$attrs, false), _vm.$listeners)); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Calendar.vue?vue&type=template&id=1eedbe78": /*!***********************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Calendar.vue?vue&type=template&id=1eedbe78 ***! \***********************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _vm.isWidget ? _c("div", { staticClass: "calendar-Widget calendar-Widget-Custom" }, [!_vm.showEmptyCalendarScreen ? _c("EmbedTopNavigation", { attrs: { "is-widget": true, "can-access-previous-event": _vm.canAccessPreviousEvent } }) : _vm._e(), _vm._v(" "), !_vm.showEmptyCalendarScreen ? _c("CalendarGrid", { ref: "calendarGridWidget", attrs: { "is-widget": _vm.isWidget, "can-access-previous-event": _vm.canAccessPreviousEvent, "is-authenticated-user": _vm.isAuthenticatedUser } }) : _c("EmptyCalendar"), _vm._v(" "), _vm.showWidgetEventDetails ? _c("EditSimple", { attrs: { "is-widget": true, locations: _vm.locations } }) : _vm._e(), _vm._v(" "), _vm.showWidgetEventDetails ? _c("EditSimple", { attrs: { "is-widget": true, clients: _vm.clients } }) : _vm._e(), _vm._v(" "), _vm.showWidgetEventDetails ? _c("EditSimple", { attrs: { "is-widget": true, embalmers: _vm.embalmers } }) : _vm._e(), _vm._v(" "), _vm.showWidgetEventDetails ? _c("EditSimple", { attrs: { "is-widget": true, comment: _vm.comment } }) : _vm._e()], 1) : _c("NcContent", { class: _vm.classNames, attrs: { "app-name": "calendar calendar-custom" } }, [!_vm.isWidget && !_vm.isEmbedded && !_vm.showEmptyCalendarScreen ? _c("AppNavigation", { scopedSlots: _vm._u([{ key: "list", fn: function () { return [_c("AppNavigationSpacer"), _vm._v(" "), _c("CalendarList", { attrs: { "is-public": !_vm.isAuthenticatedUser, "loading-calendars": _vm.loadingCalendars } }), _vm._v(" "), !_vm.loadingCalendars && _vm.isAuthenticatedUser ? _c("CalendarListNew", { attrs: { disabled: _vm.loadingCalendars } }) : _vm._e(), _vm._v(" "), _c("EditCalendarModal"), _vm._v(" "), !_vm.disableAppointments && _vm.isAuthenticatedUser ? [_c("AppNavigationSpacer"), _vm._v(" "), _c("AppointmentConfigList")] : _vm._e(), _vm._v(" "), _vm.hasTrashBin ? _c("Trashbin") : _vm._e()]; }, proxy: true }, { key: "footer", fn: function () { return [_vm.isAuthenticatedUser ? _c("Settings", { attrs: { "loading-calendars": _vm.loadingCalendars } }) : _vm._e()]; }, proxy: true }], null, false, 2841196060) }, [_c("AppNavigationHeader", { attrs: { "is-public": !_vm.isAuthenticatedUser, "can-access-previous-event": _vm.canAccessPreviousEvent } })], 1) : _vm._e(), _vm._v(" "), _vm.isEmbedded ? _c("EmbedTopNavigation", { attrs: { "is-admin": false } }) : _vm._e(), _vm._v(" "), _c("AppContent", [!_vm.showEmptyCalendarScreen ? _c("CalendarGrid", { attrs: { "can-access-previous-event": _vm.canAccessPreviousEvent, "is-authenticated-user": _vm.isAuthenticatedUser } }) : _c("EmptyCalendar")], 1), _vm._v(" "), _c("router-view")], 1); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSidebar.vue?vue&type=template&id=581304a8&scoped=true": /*!**************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSidebar.vue?vue&type=template&id=581304a8&scoped=true ***! \**************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("NcAppSidebar", { attrs: { empty: _vm.isLoading || _vm.isError, "force-menu": true, name: "" }, on: { close: _vm.cancel }, scopedSlots: _vm._u([!_vm.isLoading && !_vm.isError && !_vm.isNew ? { key: "secondary-actions", fn: function () { return [!_vm.hideEventExport && _vm.hasDownloadURL ? _c("NcActionLink", { attrs: { href: _vm.downloadURL }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Download", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 489076122) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Export")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), !_vm.canCreateRecurrenceException && !_vm.isReadOnly ? _c("NcActionButton", { on: { click: function ($event) { return _vm.duplicateEvent(); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ContentDuplicate", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 386775024) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Duplicate")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.canDelete && !_vm.canCreateRecurrenceException ? _c("NcActionButton", { on: { click: function ($event) { return _vm.deleteAndLeave(false); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Delete")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.canDelete && _vm.canCreateRecurrenceException ? _c("NcActionButton", { on: { click: function ($event) { return _vm.deleteAndLeave(false); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Delete this occurrence")) + "\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.canDelete && _vm.canCreateRecurrenceException ? _c("NcActionButton", { on: { click: function ($event) { return _vm.deleteAndLeave(true); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t" + _vm._s(_vm.$t("calendar", "Delete this and all future")) + "\n\t\t")]) : _vm._e()]; }, proxy: true } : null, !_vm.isLoading && !_vm.isError ? { key: "description", fn: function () { return [_c("CalendarPickerHeader", { attrs: { value: _vm.selectedCalendar, calendars: _vm.calendars, "is-read-only": _vm.isReadOnly || !_vm.canModifyCalendar }, on: { "update:value": _vm.changeCalendar } }), _vm._v(" "), _c("PropertyTitle", { attrs: { value: _vm.title, "is-read-only": _vm.isReadOnly }, on: { "update:value": _vm.updateTitle } }), _vm._v(" "), _c("PropertyTitleTimePicker", { attrs: { "start-date": _vm.startDate, "start-timezone": _vm.startTimezone, "end-date": _vm.endDate, "end-timezone": _vm.endTimezone, "is-all-day": _vm.isAllDay, "is-read-only": _vm.isReadOnly, "can-modify-all-day": _vm.canModifyAllDay, "user-timezone": _vm.currentUserTimezone, "append-to-body": true }, on: { "update-start-date": _vm.updateStartDate, "update-start-timezone": _vm.updateStartTimezone, "update-end-date": _vm.updateEndDate, "update-end-timezone": _vm.updateEndTimezone, "toggle-all-day": _vm.toggleAllDay } }), _vm._v(" "), _c("PropertyIsLeave", { attrs: { "is-read-only": _vm.isReadOnly, "is-leave": _vm.isLeave }, on: { "toggle-is-leave": _vm.toggleIsLeave } }), _vm._v(" "), _c("PropertySelectClient", { staticClass: "property-location", attrs: { url: "/apps/gestion/ajaxGetClientsName", "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.clients, value: _vm.client, "linkify-links": true }, on: { "update:value": _vm.updateClient } }), _vm._v(" "), _c("PropertySelectLieu", { staticClass: "property-location", attrs: { url: "/apps/gestion/ajaxGetLieux", "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.locations, value: _vm.location, "linkify-links": true }, on: { "update:value": _vm.updateLocation } }), _vm._v(" "), _c("PropertySelectArticle", { staticClass: "property-description", attrs: { url: "/apps/gestion/ajaxGetProduits?orderDirection=ASC", "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.articles, value: _vm.description, "linkify-links": true }, on: { "add-single-value": _vm.addArticle, "remove-single-value": _vm.removeArticle } }), _vm._v(" "), _c("PropertyText", { attrs: { "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.comment, value: _vm.comment, "linkify-links": false }, on: { "update:value": _vm.updateComment } }), _vm._v(" "), _vm.defuntUrl ? _c("NcButton", { class: "d-flex w-max-content", attrs: { type: undefined }, on: { click: _vm.viewDefunt } }, [_vm._v("\n\t\t\tVoir le defunt\n\t\t")]) : _vm._e(), _vm._v(" "), _vm.isViewedByAttendee ? _c("InvitationResponseButtons", { attrs: { attendee: _vm.userAsAttendee, "calendar-id": _vm.calendarId, narrow: true, "grow-horizontally": true }, on: { close: _vm.closeEditorAndSkipAction } }) : _vm._e()]; }, proxy: true } : null], null, true) }, [_vm.isLoading ? [_c("div", { staticClass: "app-sidebar__loading-indicator" }, [_c("div", { staticClass: "icon icon-loading app-sidebar-tab-loading-indicator__icon" })])] : _vm.isError ? [_c("NcEmptyContent", { attrs: { name: _vm.$t("calendar", "Event does not exist"), description: _vm.error }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) })] : _vm._e(), _vm._v(" "), _vm._v(" "), _vm._v(" "), !_vm.isLoading && !_vm.isError ? _c("NcAppSidebarTab", { staticClass: "app-sidebar-tab", attrs: { id: "app-sidebar-tab-details", name: _vm.$t("calendar", "Details"), order: 0 }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("InformationOutline", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 2983628322) }, [_vm._v(" "), _c("div", { staticClass: "app-sidebar-tab__content" }, [_c("PropertySelect", { attrs: { "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.status, value: _vm.status }, on: { "update:value": _vm.updateStatus } }), _vm._v(" "), _c("PropertySelect", { attrs: { "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.accessClass, value: _vm.accessClass }, on: { "update:value": _vm.updateAccessClass } }), _vm._v(" "), _c("PropertySelect", { attrs: { "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.timeTransparency, value: _vm.timeTransparency }, on: { "update:value": _vm.updateTimeTransparency } }), _vm._v(" "), _c("PropertySelectMultiple", { attrs: { "colored-options": true, "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.categories, value: _vm.categories }, on: { "add-single-value": _vm.addCategory, "remove-single-value": _vm.removeCategory } }), _vm._v(" "), _c("PropertyColor", { attrs: { "calendar-color": _vm.selectedCalendarColor, "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.color, value: _vm.color }, on: { "update:value": _vm.updateColor } }), _vm._v(" "), _c("AlarmList", { attrs: { "calendar-object-instance": _vm.calendarObjectInstance, "is-read-only": _vm.isReadOnly } }), _vm._v(" "), _c("Repeat", { attrs: { "calendar-object-instance": _vm.calendarObjectInstance, "recurrence-rule": _vm.calendarObjectInstance.recurrenceRule, "is-read-only": _vm.isReadOnly, "is-editing-master-item": _vm.isEditingMasterItem, "is-recurrence-exception": _vm.isRecurrenceException }, on: { "force-this-and-all-future": _vm.forceModifyingFuture } }), _vm._v(" "), !_vm.isLoading ? _c("AttachmentsList", { attrs: { "calendar-object-instance": _vm.calendarObjectInstance, "is-read-only": _vm.isReadOnly } }) : _vm._e(), _vm._v(" "), _vm.showModal && !_vm.isPrivate() ? _c("NcModal", { attrs: { name: _vm.t("calendar", "Managing shared access") }, on: { close: _vm.closeAttachmentsModal } }, [_c("div", { staticClass: "modal-content" }, [_vm.showPreloader ? _c("div", { staticClass: "modal-content-preloader" }, [_c("div", { style: "width:".concat(_vm.sharedProgress, "%") })]) : _vm._e(), _vm._v(" "), _c("div", { staticClass: "modal-h" }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.n("calendar", "User requires access to your file", "Users require access to your file", _vm.showModalUsers.length)) + "\n\t\t\t\t\t")]), _vm._v(" "), _c("div", { staticClass: "users" }, _vm._l(_vm.showModalUsers, function (attendee) { return _c("NcListItemIcon", { key: attendee.uri, staticClass: "user-list-item", attrs: { name: attendee.commonName, subtitle: _vm.emailWithoutMailto(attendee.uri), "is-no-user": true } }); }), 1), _vm._v(" "), _c("div", { staticClass: "modal-subtitle" }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.n("calendar", "Attachment requires shared access", "Attachments requiring shared access", _vm.showModalNewAttachments.length)) + "\n\t\t\t\t\t")]), _vm._v(" "), _c("div", { staticClass: "attachments" }, _vm._l(_vm.showModalNewAttachments, function (attachment) { return _c("NcListItemIcon", { key: attachment.xNcFileId, staticClass: "attachment-list-item", attrs: { name: _vm.getBaseName(attachment.fileName), url: _vm.getPreview(attachment), "force-display-actions": false } }); }), 1), _vm._v(" "), _c("div", { staticClass: "modal-footer" }, [_c("div", { staticClass: "modal-footer-checkbox" }, [!_vm.isPrivate() ? _c("NcCheckboxRadioSwitch", { attrs: { checked: _vm.doNotShare }, on: { "update:checked": function ($event) { _vm.doNotShare = $event; } } }, [_vm._v("\n\t\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Deny access")) + "\n\t\t\t\t\t\t\t")]) : _vm._e()], 1), _vm._v(" "), _c("div", { staticClass: "modal-footer-buttons" }, [_c("NcButton", { on: { click: _vm.closeAttachmentsModal } }, [_vm._v("\n\t\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Cancel")) + "\n\t\t\t\t\t\t\t")]), _vm._v(" "), _c("NcButton", { attrs: { type: "primary", disabled: _vm.showPreloader }, on: { click: function ($event) { return _vm.acceptAttachmentsModal(_vm.thisAndAllFuture); } } }, [_vm._v("\n\t\t\t\t\t\t\t\t" + _vm._s(_vm.t("calendar", "Invite")) + "\n\t\t\t\t\t\t\t")])], 1)])])]) : _vm._e()], 1), _vm._v(" "), _vm.showSaveButtons ? _c("SaveButtons", { staticClass: "app-sidebar-tab__buttons", attrs: { "can-create-recurrence-exception": _vm.canCreateRecurrenceException, "is-new": _vm.isNew, "is-calendar-pending": _vm.isCalendarPending, isReadOnly: false, "force-this-and-all-future": _vm.forceThisAndAllFuture }, on: { "save-this-only": function ($event) { return _vm.prepareAccessForAttachments(false); }, "save-this-and-all-future": function ($event) { return _vm.prepareAccessForAttachments(true); }, "save-pending-calendar-event": _vm.saveAsPendingCalendarEvent } }) : _vm._e()], 1) : _vm._e(), _vm._v(" "), !_vm.isLoading && !_vm.isError ? _c("NcAppSidebarTab", { staticClass: "app-sidebar-tab", attrs: { id: "app-sidebar-tab-attendees", name: _vm.$t("calendar", "Attendees"), order: 1 }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("AccountMultiple", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 3695810495) }, [_vm._v(" "), _c("div", { staticClass: "app-sidebar-tab__content" }, [!_vm.isLoading ? _c("InviteesList", { attrs: { "calendar-object-instance": _vm.calendarObjectInstance, "is-read-only": _vm.isReadOnly, "is-shared-with-me": _vm.isSharedWithMe, "show-header": false }, on: { "update-dates": _vm.updateDates } }) : _vm._e()], 1), _vm._v(" "), _vm.showSaveButtons ? _c("SaveButtons", { staticClass: "app-sidebar-tab__buttons", attrs: { "can-create-recurrence-exception": _vm.canCreateRecurrenceException, "is-new": _vm.isNew, "is-calendar-pending": _vm.isCalendarPending, isReadOnly: false, "force-this-and-all-future": _vm.forceThisAndAllFuture }, on: { "save-this-only": function ($event) { return _vm.prepareAccessForAttachments(false); }, "save-this-and-all-future": function ($event) { return _vm.prepareAccessForAttachments(true); }, "save-pending-calendar-event": _vm.saveAsPendingCalendarEvent } }) : _vm._e()], 1) : _vm._e(), _vm._v(" "), !_vm.isLoading && !_vm.isError && _vm.showResources ? _c("NcAppSidebarTab", { staticClass: "app-sidebar-tab", attrs: { id: "app-sidebar-tab-resources", name: _vm.$t("calendar", "Resources"), order: 3 }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("MapMarker", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 546545488) }, [_vm._v(" "), _c("div", { staticClass: "app-sidebar-tab__content" }, [!_vm.isLoading ? _c("ResourceList", { attrs: { "calendar-object-instance": _vm.calendarObjectInstance, "is-read-only": _vm.isReadOnly } }) : _vm._e()], 1), _vm._v(" "), _vm.showSaveButtons ? _c("SaveButtons", { staticClass: "app-sidebar-tab__buttons", attrs: { "can-create-recurrence-exception": _vm.canCreateRecurrenceException, "is-new": _vm.isNew, "is-calendar-pending": _vm.isCalendarPending, isReadOnly: false, "force-this-and-all-future": _vm.forceThisAndAllFuture }, on: { "save-this-only": function ($event) { return _vm.prepareAccessForAttachments(false); }, "save-this-and-all-future": function ($event) { return _vm.prepareAccessForAttachments(true); }, "save-pending-calendar-event": _vm.saveAsPendingCalendarEvent } }) : _vm._e()], 1) : _vm._e()], 2); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSimple.vue?vue&type=template&id=4b240016": /*!*************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSimple.vue?vue&type=template&id=4b240016 ***! \*************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render), /* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) /* harmony export */ }); var render = function render() { var _vm = this, _c = _vm._self._c; return _c("Popover", { ref: "popover", attrs: { shown: _vm.showPopover, "auto-hide": false, placement: _vm.placement, boundary: _vm.boundaryElement, "popover-base-class": "event-popover", triggers: [] } }, [_c("div", { staticClass: "event-popover__inner" }, [_vm.isLoading && !_vm.isSaving ? [_c("PopoverLoadingIndicator")] : _vm.isError ? [_c("div", { staticClass: "event-popover__top-right-actions" }, [_c("Actions", [_c("ActionButton", { on: { click: _vm.cancel }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Close", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Close")) + "\n\t\t\t\t\t")])], 1)], 1), _vm._v(" "), _c("EmptyContent", { attrs: { name: _vm.$t("calendar", "Event does not exist"), description: _vm.error }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("CalendarBlank", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) })] : [_c("div", { staticClass: "event-popover__top-right-actions" }, [!_vm.isLoading && !_vm.isError && !_vm.isNew ? _c("Actions", { attrs: { "force-menu": true } }, [!_vm.hideEventExport && _vm.hasDownloadURL ? _c("ActionLink", { attrs: { href: _vm.downloadURL }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Download", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 489076122) }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Export")) + "\n\t\t\t\t\t")]) : _vm._e(), _vm._v(" "), !_vm.canCreateRecurrenceException && !_vm.isReadOnly ? _c("ActionButton", { on: { click: function ($event) { return _vm.duplicateEvent(); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("ContentDuplicate", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 386775024) }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Duplicate")) + "\n\t\t\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.canDelete && !_vm.canCreateRecurrenceException ? _c("ActionButton", { on: { click: function ($event) { return _vm.deleteAndLeave(false); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Delete")) + "\n\t\t\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.canDelete && _vm.canCreateRecurrenceException ? _c("ActionButton", { on: { click: function ($event) { return _vm.deleteAndLeave(false); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Delete this occurrence")) + "\n\t\t\t\t\t")]) : _vm._e(), _vm._v(" "), _vm.canDelete && _vm.canCreateRecurrenceException ? _c("ActionButton", { on: { click: function ($event) { return _vm.deleteAndLeave(true); } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Delete", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }], null, false, 1625950007) }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Delete this and all future")) + "\n\t\t\t\t\t")]) : _vm._e()], 1) : _vm._e(), _vm._v(" "), _c("Actions", [_c("ActionButton", { on: { click: _vm.cancel }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("Close", { attrs: { size: 20, decorative: "" } })]; }, proxy: true }]) }, [_vm._v("\n\t\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Close")) + "\n\t\t\t\t\t")])], 1)], 1), _vm._v(" "), _c("CalendarPickerHeader", { attrs: { value: _vm.selectedCalendar, calendars: _vm.calendars, "is-read-only": _vm.isReadOnlyOrViewing || !_vm.canModifyCalendar }, on: { "update:value": _vm.changeCalendar } }), _vm._v(" "), _c("PropertyTitle", { attrs: { value: _vm.titleOrPlaceholder, "is-read-only": _vm.isReadOnlyOrViewing }, on: { "update:value": _vm.updateTitle } }), _vm._v(" "), _c("PropertyTitleTimePicker", { attrs: { "start-date": _vm.startDate, "start-timezone": _vm.startTimezone, "end-date": _vm.endDate, "end-timezone": _vm.endTimezone, "is-all-day": _vm.isAllDay, "is-read-only": _vm.isReadOnlyOrViewing, "can-modify-all-day": _vm.canModifyAllDay, "user-timezone": _vm.currentUserTimezone }, on: { "update-start-date": _vm.updateStartDate, "update-start-timezone": _vm.updateStartTimezone, "update-end-date": _vm.updateEndDate, "update-end-timezone": _vm.updateEndTimezone, "toggle-all-day": _vm.toggleAllDay } }), _vm._v(" "), _c("PropertyIsLeave", { attrs: { "is-read-only": _vm.isReadOnlyOrViewing, "is-leave": _vm.isLeave }, on: { "toggle-is-leave": _vm.toggleIsLeave } }), _vm._v(" "), _c("PropertySelectClient", { staticClass: "property-location", attrs: { url: "/apps/gestion/ajaxGetClientsName", "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.clients, value: _vm.client, "linkify-links": true }, on: { "update:value": _vm.updateClient } }), _vm._v(" "), _c("PropertySelectLieu", { staticClass: "property-location", attrs: { url: "/apps/gestion/ajaxGetLieux", "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.locations, value: _vm.location, "linkify-links": true }, on: { "update:value": _vm.updateLocation } }), _vm._v(" "), _c("PropertySelectArticle", { attrs: { "is-read-only": _vm.isReadOnlyOrViewing, url: "/apps/gestion/ajaxGetProduits?orderDirection=ASC", "prop-model": _vm.rfcProps.articles, value: _vm.description, "linkify-links": true }, on: { "add-single-value": _vm.addArticle, "remove-single-value": _vm.removeArticle } }), _vm._v(" "), _c("PropertyText", { attrs: { "is-read-only": _vm.isReadOnly, "prop-model": _vm.rfcProps.comment, value: _vm.comment, "linkify-links": false }, on: { "update:value": _vm.updateComment } }), _vm._v(" "), _c("InviteesList", { staticClass: "event-popover__invitees", attrs: { "hide-if-empty": true, "hide-buttons": true, "hide-errors": true, "show-header": true, "is-read-only": _vm.isReadOnlyOrViewing, "is-shared-with-me": _vm.isSharedWithMe, "calendar-object-instance": _vm.calendarObjectInstance, limit: 3 } }), _vm._v(" "), _vm.isViewedByAttendee && _vm.isViewing ? _c("InvitationResponseButtons", { staticClass: "event-popover__response-buttons", attrs: { attendee: _vm.userAsAttendee, "calendar-id": _vm.calendarId }, on: { close: _vm.closeEditorAndSkipAction } }) : _vm._e(), _vm._v(" "), !_vm.isWidget ? _c("SaveButtons", { staticClass: "event-popover__buttons", attrs: { "can-create-recurrence-exception": _vm.canCreateRecurrenceException, "is-new": _vm.isNew, "is-read-only": _vm.isReadOnlyOrViewing, "force-this-and-all-future": _vm.forceThisAndAllFuture, "show-more-button": true, "more-button-type": _vm.isViewing ? "tertiary" : undefined, "grow-horizontally": !_vm.isViewing && _vm.canCreateRecurrenceException, disabled: _vm.isSaving, "is-calendar-pending": _vm.isCalendarPending }, on: { "save-this-only": function ($event) { return _vm.saveAndView(false); }, "save-this-and-all-future": function ($event) { return _vm.saveAndView(true); }, "show-more": _vm.showMore, "save-pending-calendar-event": _vm.saveAsPendingCalendarEvent } }, [_vm.defuntUrl ? _c("NcButton", { class: "d-flex w-max-content", attrs: { type: undefined }, on: { click: _vm.viewDefunt } }, [_vm._v("\n\t\t\t\t\tVoir le defunt\n\t\t\t\t")]) : _vm._e(), _vm._v(" "), !_vm.isReadOnly && _vm.isViewing ? _c("NcButton", { attrs: { type: _vm.isViewedByAttendee ? "tertiary" : undefined }, on: { click: function ($event) { _vm.isViewing = false; } }, scopedSlots: _vm._u([{ key: "icon", fn: function () { return [_c("EditIcon", { attrs: { size: 20 } })]; }, proxy: true }], null, false, 2089572735) }, [_vm._v("\n\t\t\t\t\t" + _vm._s(_vm.$t("calendar", "Edit")) + "\n\t\t\t\t")]) : _vm._e()], 1) : _vm._e()]], 2)]); }; var staticRenderFns = []; render._withStripped = true; /***/ }), /***/ "./src/defaults/defaultAlarmProvider.js": /*!**********************************************!*\ !*** ./src/defaults/defaultAlarmProvider.js ***! \**********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ getDefaultAlarms: () => (/* binding */ getDefaultAlarms) /* harmony export */ }); /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ /** * @param {boolean} allDay is all day? */ function getDefaultAlarms() { let allDay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; if (allDay) { return [9 * 60 * 60, // On the day of the event at 9am -15 * 60 * 60, // 1 day before at 9am -39 * 60 * 60, // 2 days before at 9am -159 * 60 * 60 // 1 week before at 9am ]; } else { return [0, // At the time of the event -5 * 60, // 5 minutes before -10 * 60, // 10 minutes before -15 * 60, // 15 minutes before -30 * 60, // 30 minutes before -1 * 60 * 60, // 1 hour before -2 * 60 * 60, // 2 hour before -1 * 24 * 60 * 60, // 1 day before -2 * 24 * 60 * 60 // 2 days before ]; } } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getDefaultAlarms); /***/ }), /***/ "./src/defaults/defaultCategories.js": /*!*******************************************!*\ !*** ./src/defaults/defaultCategories.js ***! \*******************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ getDefaultCategories: () => (/* binding */ getDefaultCategories) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * * @author Richard Steinmetz * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ /** * */ function getDefaultCategories() { // This list was taken from https://tools.ietf.org/html/rfc5545#section-5 const values = [(0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Anniversary'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Appointment'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Business'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Education'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Holiday'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Meeting'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Miscellaneous'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Non-working hours'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Not in office'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Personal'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Phone call'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Sick day'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Special occasion'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Travel'), (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Vacation')]; return values.map(value => ({ value, label: value })); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getDefaultCategories); /***/ }), /***/ "./src/directives/autosize.js": /*!************************************!*\ !*** ./src/directives/autosize.js ***! \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var autosize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! autosize */ "./node_modules/autosize/dist/autosize.esm.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debounce */ "./node_modules/debounce/index.js"); /* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_1__); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ let resizeObserver; if (window.ResizeObserver) { resizeObserver = new ResizeObserver(debounce__WEBPACK_IMPORTED_MODULE_1___default()(entries => { for (const entry of entries) { autosize__WEBPACK_IMPORTED_MODULE_0__["default"].update(entry.target); } }), 20); } /** * Adds autosize to textarea on bind * * @param {Element} el The DOM element * @param {object} binding The binding's object * @param {VNode} vnode Virtual node */ const bind = (el, binding, vnode) => { // Check that the binding is true if (binding.value !== true) { return; } // Verify this is actually a textarea if (el.tagName !== 'TEXTAREA') { return; } vnode.context.$nextTick(() => { (0,autosize__WEBPACK_IMPORTED_MODULE_0__["default"])(el); }); if (resizeObserver) { resizeObserver.observe(el); } }; /** * Updates the size of the textarea when updated * * @param {Element} el The DOM element * @param {object} binding The binding's object * @param {VNode} vnode Virtual node */ const update = (el, binding, vnode) => { if (binding.value === true && binding.oldValue === false) { bind(el, binding, vnode); } if (binding.value === false && binding.oldValue === true) { unbind(el); } if (binding.value === true && binding.oldValue === true) { autosize__WEBPACK_IMPORTED_MODULE_0__["default"].update(el); } }; /** * Removes autosize when textarea is removed * * @param {Element} el The DOM element */ const unbind = el => { autosize__WEBPACK_IMPORTED_MODULE_0__["default"].destroy(el); if (resizeObserver) { resizeObserver.unobserve(el); } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ bind, update, unbind }); /***/ }), /***/ "./src/directives/focus.js": /*!*********************************!*\ !*** ./src/directives/focus.js ***! \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ inserted(el) { setTimeout(() => { el.focus(); }, 500); } }); /***/ }), /***/ "./src/filters/alarmFormat.js": /*!************************************!*\ !*** ./src/filters/alarmFormat.js ***! \************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Formats an alarm * * @param {object} alarm The alarm object to format * @param {boolean} isAllDay Whether or not the event is all-day * @param {string} currentUserTimezone The current timezone of the user * @param {string} locale The locale to format it in * @return {string} */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((alarm, isAllDay, currentUserTimezone, locale) => { if (alarm.relativeTrigger !== null) { // relative trigger if (isAllDay && alarm.relativeIsRelatedToStart && alarm.relativeTrigger < 86400) { if (alarm.relativeTrigger === 0) { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Midnight on the day the event starts'); } const date = new Date(); date.setHours(alarm.relativeHoursAllDay); date.setMinutes(alarm.relativeMinutesAllDay); date.setSeconds(0); date.setMilliseconds(0); const formattedHourMinute = (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])(date).locale(locale).format('LT'); if (alarm.relativeTrigger < 0) { if (alarm.relativeUnitAllDay === 'days') { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', '%n day before the event at {formattedHourMinute}', '%n days before the event at {formattedHourMinute}', alarm.relativeAmountAllDay, { formattedHourMinute }); } else { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', '%n week before the event at {formattedHourMinute}', '%n weeks before the event at {formattedHourMinute}', alarm.relativeAmountAllDay, { formattedHourMinute }); } } return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'on the day of the event at {formattedHourMinute}', { formattedHourMinute }); } else { // Alarms at the event's start or end if (alarm.relativeTrigger === 0) { if (alarm.relativeIsRelatedToStart) { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'at the event\'s start'); } else { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'at the event\'s end'); } } const time = _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].duration(Math.abs(alarm.relativeTrigger), 'seconds').locale(locale).humanize(); if (alarm.relativeTrigger < 0) { if (alarm.relativeIsRelatedToStart) { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', '{time} before the event starts', { time }); } else { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', '{time} before the event ends', { time }); } } if (alarm.relativeIsRelatedToStart) { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', '{time} after the event starts', { time }); } else { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', '{time} after the event ends', { time }); } } } else { // absolute trigger if (currentUserTimezone === alarm.absoluteTimezoneId) { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'on {time}', { time: (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])(alarm.absoluteDate).locale(locale).format('LLLL') }); } else { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'on {time} ({timezoneId})', { time: (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])(alarm.absoluteDate).locale(locale).format('LLLL'), timezoneId: alarm.absoluteTimezoneId }); } } }); /***/ }), /***/ "./src/filters/dateFormat.js": /*!***********************************!*\ !*** ./src/filters/dateFormat.js ***! \***********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Formats a date object * * @param {Date} value The date object to format * @param {boolean} isAllDay Whether or not to display only the date part * @param {string} locale The locale to format it in * @return {string} */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((value, isAllDay, locale) => { if (isAllDay) { return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(value).locale(locale).format('ll'); } else { return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(value).locale(locale).format('lll'); } }); /***/ }), /***/ "./src/filters/dateRangeFormat.js": /*!****************************************!*\ !*** ./src/filters/dateRangeFormat.js ***! \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Formats a date-range depending on the user's current view * * @param {string | Date} value The date to format * @param {string} view The current view of the user * @param {string} locale Which locale to format it in * @return {string} */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((value, view, locale) => { switch (view) { case 'timeGridDay': return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(value).locale(locale).format('ll'); case 'timeGridWeek': return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.translate)('calendar', 'Week {number} of {year}', { number: (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(value).locale(locale).week(), year: (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(value).locale(locale).weekYear() }); case 'multiMonthYear': return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(value).locale(locale).format('YYYY'); case 'dayGridMonth': case 'listMonth': default: return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(value).locale(locale).format('MMMM YYYY'); } }); /***/ }), /***/ "./src/filters/recurrenceRuleFormat.js": /*!*********************************************!*\ !*** ./src/filters/recurrenceRuleFormat.js ***! \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Formats a recurrence-rule * * @param {object} recurrenceRule The recurrence-rule to format * @param {string} locale The locale to format it into * @return {string} */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((recurrenceRule, locale) => { if (recurrenceRule.frequency === 'NONE') { return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Does not repeat'); } let freqPart = ''; if (recurrenceRule.interval === 1) { switch (recurrenceRule.frequency) { case 'DAILY': freqPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Daily'); break; case 'WEEKLY': freqPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Weekly'); break; case 'MONTHLY': freqPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Monthly'); break; case 'YEARLY': freqPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Yearly'); break; } } else { switch (recurrenceRule.frequency) { case 'DAILY': freqPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', 'Every %n day', 'Every %n days', recurrenceRule.interval); break; case 'WEEKLY': freqPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', 'Every %n week', 'Every %n weeks', recurrenceRule.interval); break; case 'MONTHLY': freqPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', 'Every %n month', 'Every %n months', recurrenceRule.interval); break; case 'YEARLY': freqPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', 'Every %n year', 'Every %n years', recurrenceRule.interval); break; } } let limitPart = ''; if (recurrenceRule.frequency === 'WEEKLY' && recurrenceRule.byDay.length !== 0) { const formattedDays = getTranslatedByDaySet(recurrenceRule.byDay); limitPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', 'on {weekday}', 'on {weekdays}', recurrenceRule.byDay.length, { weekday: formattedDays, weekdays: formattedDays }); } else if (recurrenceRule.frequency === 'MONTHLY') { if (recurrenceRule.byMonthDay.length !== 0) { const dayOfMonthList = recurrenceRule.byMonthDay.join(', '); limitPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', 'on day {dayOfMonthList}', 'on days {dayOfMonthList}', recurrenceRule.byMonthDay.length, { dayOfMonthList }); } else { const ordinalNumber = getTranslatedOrdinalNumber(recurrenceRule.bySetPosition); const byDaySet = getTranslatedByDaySet(recurrenceRule.byDay); limitPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'on the {ordinalNumber} {byDaySet}', { ordinalNumber, byDaySet }); } } else if (recurrenceRule.frequency === 'YEARLY') { const monthNames = getTranslatedMonths(recurrenceRule.byMonth); if (recurrenceRule.byDay.length === 0) { limitPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'in {monthNames}', { monthNames }); } else { const ordinalNumber = getTranslatedOrdinalNumber(recurrenceRule.bySetPosition); const byDaySet = getTranslatedByDaySet(recurrenceRule.byDay); limitPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'in {monthNames} on the {ordinalNumber} {byDaySet}', { monthNames, ordinalNumber, byDaySet }); } } let endPart = ''; if (recurrenceRule.until !== null) { const untilDate = (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"])(recurrenceRule.until).locale(locale).format('L'); endPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'until {untilDate}', { untilDate }); } else if (recurrenceRule.count !== null) { endPart = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translatePlural)('calendar', '%n time', '%n times', recurrenceRule.count); } return [freqPart, limitPart, endPart].join(' ').replace(/\s{2,}/g, ' ').trim(); }); /** * Gets the byDay list as formatted list of translated weekdays * * @param {string[]} byDayList The by-day-list to get formatted * @return {string} */ function getTranslatedByDaySet(byDayList) { const byDayNames = []; const allByDayNames = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.getDayNames)(); // TODO: This should be sorted by first day of week // TODO: This should summarise: // - SA, SU to weekend // - MO, TU, WE, TH, FR to weekday // - MO, TU, WE, TH, FR, SA, SU to day if (byDayList.includes('MO')) { byDayNames.push(allByDayNames[1]); } if (byDayList.includes('TU')) { byDayNames.push(allByDayNames[2]); } if (byDayList.includes('WE')) { byDayNames.push(allByDayNames[3]); } if (byDayList.includes('TH')) { byDayNames.push(allByDayNames[4]); } if (byDayList.includes('FR')) { byDayNames.push(allByDayNames[5]); } if (byDayList.includes('SA')) { byDayNames.push(allByDayNames[6]); } if (byDayList.includes('SU')) { byDayNames.push(allByDayNames[0]); } return byDayNames.join(', '); } /** * Gets the byMonth list as formatted list of translated month-names * * * @param {string[]} byMonthList The by-month list to get formatted * @return {string} */ function getTranslatedMonths(byMonthList) { const sortedByMonth = byMonthList.slice().map(n => parseInt(n, 10)); sortedByMonth.sort((a, b) => a - b); const monthNames = []; const allMonthNames = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.getMonthNames)(); for (const month of sortedByMonth) { monthNames.push(allMonthNames[month - 1]); } return monthNames.join(', '); } /** * Gets the translated ordinal number for by-set-position * * @param {number} bySetPositionNum The by-set-position number to get the translation of * @return {string} */ function getTranslatedOrdinalNumber(bySetPositionNum) { switch (bySetPositionNum) { case 1: return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'first'); case 2: return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'second'); case 3: return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'third'); case 4: return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'fourth'); case 5: return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'fifth'); case -2: return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'second to last'); case -1: return (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'last'); default: return ''; } } /***/ }), /***/ "./src/fullcalendar/duration.js": /*!**************************************!*\ !*** ./src/fullcalendar/duration.js ***! \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDurationValueFromFullCalendarDuration: () => (/* binding */ getDurationValueFromFullCalendarDuration), /* harmony export */ getFullCalendarDurationFromDurationValue: () => (/* binding */ getFullCalendarDurationFromDurationValue) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Gets a calendar-js DurationValue from a FullCalendar Duration object * * @param {object | string | number} fcDuration Duration object provided by FullCalendar * @return {DurationValue|null} */ function getDurationValueFromFullCalendarDuration(fcDuration) { switch (typeof fcDuration) { case 'object': return getDurationValueFromFullCalendarDurationEncodedAsObject(fcDuration); case 'string': return getDurationValueFromFullCalendarDurationEncodedAsString(fcDuration); case 'number': return getDurationValueFromFullCalendarDurationEncodedAsNumber(fcDuration); default: return null; } } /** * Gets a FullCalendar Duration object from a calendar-js DurationValue object * * @param {DurationValue} durationValue calendar-js object * @return {{seconds: {Number}}} */ function getFullCalendarDurationFromDurationValue(durationValue) { return { seconds: durationValue.totalSeconds }; } /** * Gets a calendar-js DurationValue from a FullCalendar Duration object * * @param {object} fcDuration The FullCalendar duration encoded as String * @return {DurationValue} */ function getDurationValueFromFullCalendarDurationEncodedAsObject(fcDuration) { if (fcDuration.year || fcDuration.years || fcDuration.month || fcDuration.months) { return null; } const durations = []; if (fcDuration.days) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ days: fcDuration.days })); } if (fcDuration.day) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ days: fcDuration.day })); } if (fcDuration.minutes) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ minutes: fcDuration.minutes })); } if (fcDuration.minute) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ minutes: fcDuration.minute })); } if (fcDuration.seconds) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ seconds: fcDuration.seconds })); } if (fcDuration.second) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ seconds: fcDuration.second })); } if (fcDuration.milliseconds) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ seconds: Math.floor(fcDuration.milliseconds / 1000) })); } if (fcDuration.millisecond) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ seconds: Math.floor(fcDuration.millisecond / 1000) })); } if (fcDuration.ms) { durations.push(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ seconds: Math.floor(fcDuration.ms / 1000) })); } const duration = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromSeconds(0); for (const d of durations) { duration.addDuration(d); } return duration; } /** * Gets a calendar-js DurationValue from a FullCalendar Duration string * * @param {string} fcDuration The FullCalendar duration encoded as String * @return {DurationValue} */ function getDurationValueFromFullCalendarDurationEncodedAsString(fcDuration) { const match1 = fcDuration.match(/(\d{2}):(\d{2}):(\d{2})\.(\d{3})/); if (match1) { const [, hours, minutes, seconds] = match1; return _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ hours: parseInt(hours, 10), minutes: parseInt(minutes, 10), seconds: parseInt(seconds, 10) }); } const match2 = fcDuration.match(/(\d{2}):(\d{2}):(\d{2})/); if (match2) { const [, hours, minutes, seconds] = match2; return _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ hours: parseInt(hours, 10), minutes: parseInt(minutes, 10), seconds: parseInt(seconds, 10) }); } const match3 = fcDuration.match(/(\d{2}):(\d{2})/); if (match3) { const [, hours, minutes] = match3; return _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromData({ hours: parseInt(hours, 10), minutes: parseInt(minutes, 10) }); } return null; } /** * Gets a calendar-js DurationValue from a FullCalendar Duration number * * @param {number} fcDuration The FullCalendar duration encoded as Number * @return {DurationValue} */ function getDurationValueFromFullCalendarDurationEncodedAsNumber(fcDuration) { return _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DurationValue.fromSeconds(Math.floor(fcDuration / 1000)); } /***/ }), /***/ "./src/fullcalendar/eventSources/eventSource.js": /*!******************************************************!*\ !*** ./src/fullcalendar/eventSources/eventSource.js ***! \******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/date.js */ "./src/utils/date.js"); /* harmony import */ var _eventSourceFunction_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventSourceFunction.js */ "./src/fullcalendar/eventSources/eventSourceFunction.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns a function to generate a FullCalendar event-source based on the Vuex calendar model * * @param {object} store The Vuex store * @return {function(*=): {backgroundColor: *, borderColor: *, className: *, id: *, textColor: *, events: events}} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(store) { return function (calendar) { const source = { id: calendar.id, // coloring backgroundColor: calendar.color, borderColor: calendar.color, textColor: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_0__.generateTextColorForHex)(calendar.color), // html foo events: async (_ref, successCallback, failureCallback) => { let { start, end, timeZone } = _ref; let timezoneObject = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_1__["default"])().getTimezoneForId(timeZone); if (!timezoneObject) { timezoneObject = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_1__["default"])().getTimezoneForId('UTC'); _utils_logger_js__WEBPACK_IMPORTED_MODULE_4__["default"].error("EventSource: Timezone ".concat(timeZone, " not found, falling back to UTC.")); } // This code assumes that once a time range has been fetched it won't be changed // outside of the vuex store. Triggering a refetch will just update all known // calendar objects inside this time range. New events that were added to a cached // time range externally will not be fetched and have to be added manually. const timeRange = store.getters.getTimeRangeForCalendarCoveringRange(calendar.id, (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_2__.getUnixTimestampFromDate)(start), (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_2__.getUnixTimestampFromDate)(end)); if (!timeRange) { let timeRangeId; try { timeRangeId = await store.dispatch('getEventsFromCalendarInTimeRange', { calendar, from: start, to: end }); } catch (error) { failureCallback(error); return; } const calendarObjects = store.getters.getCalendarObjectsByTimeRangeId(timeRangeId); successCallback((0,_eventSourceFunction_js__WEBPACK_IMPORTED_MODULE_3__.eventSourceFunction)(calendarObjects, calendar, start, end, timezoneObject)); } else { const calendarObjects = store.getters.getCalendarObjectsByTimeRangeId(timeRange.id); successCallback((0,_eventSourceFunction_js__WEBPACK_IMPORTED_MODULE_3__.eventSourceFunction)(calendarObjects, calendar, start, end, timezoneObject)); } } }; if (calendar.readOnly) { source.editable = false; } return source; }; } /***/ }), /***/ "./src/fullcalendar/eventSources/eventSourceFunction.js": /*!**************************************************************!*\ !*** ./src/fullcalendar/eventSources/eventSourceFunction.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ eventSourceFunction: () => (/* binding */ eventSourceFunction) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/calendarObject.js */ "./src/utils/calendarObject.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * convert an array of calendar-objects to events * * @param {CalendarObject[]} calendarObjects Array of calendar-objects to turn into fc events * @param {object} calendar The calendar object * @param {Date} start Start of time-range * @param {Date} end End of time-range * @param {Timezone} timezone Desired time-zone * @return {object}[] */ function eventSourceFunction(calendarObjects, calendar, start, end, timezone) { const fcEvents = []; for (const calendarObject of calendarObjects) { let allObjectsInTimeRange; try { allObjectsInTimeRange = (0,_utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_3__.getAllObjectsInTimeRange)(calendarObject, start, end); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].error(error.message); continue; } for (const object of allObjectsInTimeRange) { const classNames = []; if (object.status === 'CANCELLED') { classNames.push('fc-event-nc-cancelled'); } else if (object.status === 'TENTATIVE') { classNames.push('fc-event-nc-tentative'); } if (object.hasComponent('VALARM')) { classNames.push('fc-event-nc-alarms'); } // For now, we only display if (object.name === 'VTODO' && object.endDate === null) { continue; } let jsStart, jsEnd; if (object.name === 'VEVENT') { jsStart = object.startDate.getInTimezone(timezone).jsDate; jsEnd = object.endDate.getInTimezone(timezone).jsDate; } else if (object.name === 'VTODO') { // For tasks, we only want to display when it is due, // not for how long it has been in progress already jsStart = object.endDate.getInTimezone(timezone).jsDate; jsEnd = object.endDate.getInTimezone(timezone).jsDate; } else { // We do not want to display anything that's neither // an event nor a task continue; } // Technically, an event's end is not allowed to be equal to it's start, // because the event's end is exclusive. Most calendar applications // (including all big ones) allow creating such events anyway (we do too). // If the event's start is equal to it's end, fullcalendar is giving // the event a default length of one hour. We are preventing that by // adding one second to the end in that case. if (jsStart.getTime() === jsEnd.getTime()) { jsEnd.setSeconds(jsEnd.getSeconds() + 1); } if (object.name === 'VTODO') { classNames.push('fc-event-nc-task'); if (object.percent === 100 || object.status === 'COMPLETED') { classNames.push('fc-event-nc-task-completed'); } } let title; if (object.name === 'VEVENT') { if (object.title) { title = object.title.replace(/\n/g, ' '); } else { title = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Untitled event'); } } else { if (object.title) { title = object.title.replace(/\n/g, ' '); } else { title = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Untitled task'); } if (object.percent !== null) { title += " (".concat(object.percent, "%)"); } } let isCalendarPending = false; let objectProperties = object._properties.get('ISCALENDARPENDING'); if (objectProperties && objectProperties.length > 0) { isCalendarPending = objectProperties[0]._value == "1" ? true : false; } const fcEvent = { id: [calendarObject.id, object.id].join('###'), title, allDay: object.isAllDay(), start: jsStart, end: jsEnd, // start: formatLocal(jsStart, object.isAllDay()), // end: formatLocal(jsEnd, object.isAllDay()), classNames, extendedProps: { objectId: calendarObject.id, recurrenceId: object.getReferenceRecurrenceId() ? object.getReferenceRecurrenceId().unixTime : null, canModifyAllDay: object.canModifyAllDay(), calendarOrder: calendar.order, calendarName: calendar.displayName, calendarId: calendar.id, darkText: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.isLight)((0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.hexToRGB)(calendar.color)), objectType: object.name, percent: object.percent || null, davUrl: calendarObject.dav.url, location: object.location, description: object.description, isCalendarPending: isCalendarPending } }; if (isCalendarPending) { fcEvent.backgroundColor = calendar.color; fcEvent.borderColor = calendar.color; fcEvent.textColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.generateTextColorForHex)(calendar.color); } if (object.color) { const customColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.getHexForColorName)(object.color); if (customColor) { fcEvent.backgroundColor = customColor; fcEvent.borderColor = customColor; fcEvent.textColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_1__.generateTextColorForHex)(customColor); } } fcEvents.push(fcEvent); } } return fcEvents; } /***/ }), /***/ "./src/fullcalendar/eventSources/freeBusyBlockedForAllEventSource.js": /*!***************************************************************************!*\ !*** ./src/fullcalendar/eventSources/freeBusyBlockedForAllEventSource.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _utils_freebusy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/freebusy.js */ "./src/utils/freebusy.js"); /** * @copyright 2021 Christoph Wurst * * @author 2021 Christoph Wurst * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns an event source for free-busy * * @param {AttendeeProperty} organizer The organizer of the event * @param {AttendeeProperty[]} attendees Array of the event's attendees * @param {string[]} resources List of resources * @return {{startEditable: boolean, resourceEditable: boolean, editable: boolean, id: string, durationEditable: boolean, events: events}} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(organizer, attendees, resources) { const resourceIds = resources.map(resource => resource.id); return { id: 'free-busy-free-for-all', editable: false, startEditable: false, durationEditable: false, resourceEditable: false, events: async (_ref, successCallback, failureCallback) => { let { start, end, timeZone } = _ref; console.debug('freeBusyBlockedForAllEventSource', start, end, timeZone); let timezoneObject = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(timeZone); if (!timezoneObject) { timezoneObject = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId('UTC'); _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].error("FreeBusyEventSource: Timezone ".concat(timeZone, " not found, falling back to UTC.")); } const startDateTime = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__.DateTimeValue.fromJSDate(start, true); const endDateTime = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__.DateTimeValue.fromJSDate(end, true); const organizerAsAttendee = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__.AttendeeProperty('ATTENDEE', organizer.email); const freeBusyIterator = await (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_3__.doFreeBusyRequest)(startDateTime, endDateTime, organizer, [organizerAsAttendee, ...attendees]); const slots = []; for await (const [, freeBusyProperty] of freeBusyIterator) { slots.push({ start: freeBusyProperty.getFirstValue().start.getInTimezone(timezoneObject).jsDate, end: freeBusyProperty.getFirstValue().end.getInTimezone(timezoneObject).jsDate }); } // Now that we have all the busy slots we try to combine them to iron // out any overlaps between them. // The algorithm below will sort the slots by their start time ane then // iteratively collapse anything that starts and stops within the same // time. The complexity of this algorithms is n^2, but assuming the // number of attendees of an event is relatively low, this should be // fine to calculate. slots.sort((a, b) => a.start - b.start); const slotsWithoutOverlap = []; if (slots.length) { let currentSlotStart = slots[0].start; slots.forEach(slot => { var _findNextCombinedSlot; const combined = (_findNextCombinedSlot = findNextCombinedSlot(slots, currentSlotStart)) !== null && _findNextCombinedSlot !== void 0 ? _findNextCombinedSlot : slot; if (combined.start < currentSlotStart) { // This slot has already been combined with a former slot return; } slotsWithoutOverlap.push(combined); currentSlotStart = combined.end; }); } console.debug('deduplicated slots', slots, slotsWithoutOverlap); const events = slotsWithoutOverlap.map(slot => { return { groupId: 'free-busy-blocked-for-all', start: slot.start.toISOString(), end: slot.end.toISOString(), resourceIds, display: 'background', allDay: false, backgroundColor: 'var(--color-text-maxcontrast)', borderColor: 'var(--color-text-maxcontrast)' }; }); console.debug('freeBusyBlockedForAllEventSource', slots, events); successCallback(events); } }; } /** * @param {object} slots the slots * @param {Date} start the start */ function findNextCombinedSlot(slots, start) { const slot = slots.filter(slot => slot.start >= start).reduce((combined, slot) => { if (slot.start < combined.start) { // This slot starts too early return combined; } if (slot.end <= combined.end) { // This slots starts and ends within the combined one return combined; } if (slot.start > combined.end) { // This slots starts after the the combined one return combined; } // The slot is extended return { start: combined.start, end: slot.end }; }, { start, end: start }); if (slot.start === slot.end) { // Empty -> no slot return undefined; } return slot; } /***/ }), /***/ "./src/fullcalendar/eventSources/freeBusyFakeBlockingEventSource.js": /*!**************************************************************************!*\ !*** ./src/fullcalendar/eventSources/freeBusyFakeBlockingEventSource.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns an event source for free-busy * * @param {string} id Identification for this source * @param {string[]} resources List of resources * @param {Date} eventStart Start of the event being edited / created * @param {Date} eventEnd End of the event being edited / created * @return {{startEditable: boolean, resourceEditable: boolean, editable: boolean, id: string, durationEditable: boolean, events: events}} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(id, resources, eventStart, eventEnd) { const resourceIds = resources.map(resource => resource.id); return { id: 'free-busy-fake-blocking-event-source-' + id, editable: false, startEditable: false, durationEditable: false, resourceEditable: false, events: async (_ref, successCallback, failureCallback) => { let { start, end, timeZone } = _ref; if (resources.length === 1) { successCallback([{ id: Math.random().toString(36).substring(7), start: eventStart.toISOString(), end: eventEnd.toISOString(), allDay: false, display: 'background', classNames: ['blocking-event-free-busy', 'blocking-event-free-busy--first-row', 'blocking-event-free-busy--last-row'], resourceId: resourceIds[0] }]); } else if (resources.length === 2) { successCallback([{ id: Math.random().toString(36).substring(7), start: eventStart.toISOString(), end: eventEnd.toISOString(), allDay: false, display: 'background', classNames: ['blocking-event-free-busy', 'blocking-event-free-busy--first-row'], resourceId: resourceIds[0] }, { id: Math.random().toString(36).substring(7), start: eventStart.toISOString(), end: eventEnd.toISOString(), allDay: false, display: 'background', classNames: ['blocking-event-free-busy', 'blocking-event-free-busy--last-row'], resourceId: resourceIds[1] }]); } else { successCallback([{ id: Math.random().toString(36).substring(7), start: eventStart.toISOString(), end: eventEnd.toISOString(), allDay: false, display: 'background', classNames: ['blocking-event-free-busy', 'blocking-event-free-busy--first-row'], resourceIds: resourceIds.slice(0, 1) }, { id: Math.random().toString(36).substring(7), start: eventStart.toISOString(), end: eventEnd.toISOString(), allDay: false, display: 'background', classNames: ['blocking-event-free-busy'], resourceIds: resourceIds.slice(1, -1) }, { id: Math.random().toString(36).substring(7), start: eventStart.toISOString(), end: eventEnd.toISOString(), allDay: false, display: 'background', classNames: ['blocking-event-free-busy', 'blocking-event-free-busy--last-row'], resourceIds: resourceIds.slice(-1) }]); } } }; } /***/ }), /***/ "./src/fullcalendar/eventSources/freeBusyResourceEventSource.js": /*!**********************************************************************!*\ !*** ./src/fullcalendar/eventSources/freeBusyResourceEventSource.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _services_freeBusySlotService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../services/freeBusySlotService.js */ "./src/services/freeBusySlotService.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * @author 2024 Grigory Vodyanov * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns an event source for free-busy * * @param {string} id Identification for this source * @param {AttendeeProperty} organizer The organizer of the event * @param {AttendeeProperty[]} attendees Array of the event's attendees * @return {{startEditable: boolean, resourceEditable: boolean, editable: boolean, id: string, durationEditable: boolean, events: events}} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(id, organizer, attendees) { return { id: 'free-busy-event-source-' + id, editable: false, startEditable: false, durationEditable: false, resourceEditable: false, events: async (_ref, successCallback, failureCallback) => { let { start, end, timeZone } = _ref; const result = await (0,_services_freeBusySlotService_js__WEBPACK_IMPORTED_MODULE_1__.getBusySlots)(organizer, attendees, start, end, timeZone); if (result.error) { failureCallback(result.error); } else { successCallback(result.events); } } }; } /***/ }), /***/ "./src/fullcalendar/eventSources/freeBusyResourceEventSourceFunction.js": /*!******************************************************************************!*\ !*** ./src/fullcalendar/eventSources/freeBusyResourceEventSourceFunction.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_freebusy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/freebusy.js */ "./src/utils/freebusy.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Converts the response * * @param {string} uri URI of the resource * @param {string} calendarData Calendar-data containing free-busy data * @param {boolean} success Whether or not the free-busy request was successful * @param {DateTimeValue} start The start of the fetched time-range * @param {DateTimeValue} end The end of the fetched time-range * @param {Timezone} timezone Timezone of user viewing data * @return {object[]} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(uri, calendarData, success, start, end, timezone) { if (!success) { return [{ id: Math.random().toString(36).substring(7), start: start.getInTimezone(timezone).jsDate.toISOString(), end: end.getInTimezone(timezone).jsDate.toISOString(), resourceId: uri, display: 'background', allDay: false, backgroundColor: (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_0__.getColorForFBType)('UNKNOWN'), borderColor: (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_0__.getColorForFBType)('UNKNOWN') }]; } const parserManager = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__.getParserManager)(); const parser = parserManager.getParserForFileType('text/calendar'); parser.parse(calendarData); // TODO: fix me upstream, parser only exports VEVENT, VJOURNAL and VTODO at the moment const calendarComponent = parser._calendarComponent; const freeBusyComponent = calendarComponent.getFirstComponent('VFREEBUSY'); if (!freeBusyComponent) { return []; } const events = []; for (const freeBusyProperty of freeBusyComponent.getPropertyIterator('FREEBUSY')) { /** @member {FreeBusyProperty} freeBusyProperty */ events.push({ id: Math.random().toString(36).substring(7), start: freeBusyProperty.getFirstValue().start.getInTimezone(timezone).jsDate.toISOString(), end: freeBusyProperty.getFirstValue().end.getInTimezone(timezone).jsDate.toISOString(), resourceId: uri, display: 'background', classNames: ['free-busy-block', 'free-busy-' + freeBusyProperty.type.toLowerCase()], backgroundColor: (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_0__.getColorForFBType)(freeBusyProperty.type) }); } return events; } /***/ }), /***/ "./src/fullcalendar/interaction/eventAllow.js": /*!****************************************************!*\ !*** ./src/fullcalendar/interaction/eventAllow.js ***! \****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Figure out whether or not an event can be dropped at a certain place * * This mostly enforces the policy that all events of a recurrence-set * must be of the same date-type * * @param {object} dropInfo Info about location where event will be dropped * @param {EventApi} draggedEvent The fullcalendar event object * @return {boolean} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(dropInfo, draggedEvent) { if (draggedEvent.extendedProps.canModifyAllDay) { return true; } return dropInfo.allDay === draggedEvent.allDay; } /***/ }), /***/ "./src/fullcalendar/interaction/eventClick.js": /*!****************************************************!*\ !*** ./src/fullcalendar/interaction/eventClick.js ***! \****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_router_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/router.js */ "./src/utils/router.js"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/event-bus */ "./node_modules/@nextcloud/event-bus/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns a function for click action on event. This will open the editor. * Either the popover or the sidebar, based on the user's preference. * * @param {object} store The Vuex store * @param {object} router The Vue router * @param {object} route The current Vue route * @param {Window} window The window object * @param {boolean} isWidget Whether the calendar is embedded in a widget * @param {object} ref The ref object of CalendarGrid component * @return {Function} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(store, router, route, window) { let isWidget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; let ref = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined; return function (_ref) { let { event } = _ref; if (isWidget) { store.commit('setWidgetRef', { widgetRef: ref.fullCalendar.$el }); } switch (event.extendedProps.objectType) { case 'VEVENT': handleEventClick(event, store, router, route, window, isWidget); break; case 'VTODO': handleToDoClick(event, store, route, window, isWidget); break; } }; } /** * Handle eventClick for VEVENT * * @param {EventDef} event FullCalendar event * @param {object} store The Vuex store * @param {object} router The Vue router * @param {object} route The current Vue route * @param {Window} window The window object * @param {boolean} isWidget Whether the calendar is embedded in a widget */ function handleEventClick(event, store, router, route, window) { let isWidget = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; if (isWidget) { store.commit('setSelectedEvent', { object: event.extendedProps.objectId, recurrenceId: event.extendedProps.recurrenceId }); return; } let desiredRoute = store.state.settings.skipPopover ? 'EditSidebarView' : 'EditPopoverView'; // Don't show the popover if the window size is too small (less then its max width of 450 px + a bit) // The mobile breakpoint of the reworked modals is 1024 px / 2 so simply use that. if (window.innerWidth <= 1024 / 2 && desiredRoute === 'EditPopoverView') { desiredRoute = 'EditSidebarView'; } const name = (0,_utils_router_js__WEBPACK_IMPORTED_MODULE_0__.getPrefixedRoute)(route.name, desiredRoute); const params = Object.assign({}, route.params, { object: event.extendedProps.objectId, recurrenceId: String(event.extendedProps.recurrenceId) }); // Don't push new route when day didn't change if (((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_0__.getPrefixedRoute)(route.name, 'EditPopoverView') === route.name || (0,_utils_router_js__WEBPACK_IMPORTED_MODULE_0__.getPrefixedRoute)(route.name, 'EditSidebarView') === route.name) && params.object === route.params.object && params.recurrenceId === route.params.recurrenceId) { return; } router.push({ name, params }); } /** * Handle eventClick for VTODO * * @param {EventDef} event FullCalendar event * @param {object} store The Vuex store * @param {object} route The current Vue route * @param {Window} window The window object * @param isWidget */ function handleToDoClick(event, store, route, window) { let isWidget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; if (isWidget || (0,_utils_router_js__WEBPACK_IMPORTED_MODULE_0__.isPublicOrEmbeddedRoute)(route.name)) { return; } const davUrlParts = event.extendedProps.davUrl.split('/'); const taskId = davUrlParts.pop(); const calendarId = davUrlParts.pop(); (0,_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_4__.emit)('calendar:handle-todo-click', { calendarId, taskId }); if (!store.state.settings.tasksEnabled) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_3__.showInfo)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_2__.translate)('calendar', 'Please ask your administrator to enable the Tasks App.')); return; } const url = "apps/tasks/#/calendars/".concat(calendarId, "/tasks/").concat(taskId); window.location = window.location.protocol + '//' + window.location.host + (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateUrl)(url); } /***/ }), /***/ "./src/fullcalendar/interaction/eventDrop.js": /*!***************************************************!*\ !*** ./src/fullcalendar/interaction/eventDrop.js ***! \***************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../duration.js */ "./src/fullcalendar/duration.js"); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/calendarObject.js */ "./src/utils/calendarObject.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns a function to drop an event at a different position * * @param {object} store The Vuex store * @param {object} fcAPI The fullcalendar api * @return {Function} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(store, fcAPI) { return async function (_ref) { let { event, delta, revert } = _ref; const deltaDuration = (0,_duration_js__WEBPACK_IMPORTED_MODULE_0__.getDurationValueFromFullCalendarDuration)(delta); const defaultAllDayDuration = (0,_duration_js__WEBPACK_IMPORTED_MODULE_0__.getDurationValueFromFullCalendarDuration)(fcAPI.getOption('defaultAllDayEventDuration')); const defaultTimedDuration = (0,_duration_js__WEBPACK_IMPORTED_MODULE_0__.getDurationValueFromFullCalendarDuration)(fcAPI.getOption('defaultTimedEventDuration')); const timezoneId = fcAPI.getOption('timeZone'); let timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_1__["default"])().getTimezoneForId(timezoneId); if (!timezone) { timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_1__["default"])().getTimezoneForId('UTC'); _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__["default"].error("EventDrop: Timezone ".concat(timezoneId, " not found, falling back to UTC.")); } if (!deltaDuration || !defaultAllDayDuration || !defaultTimedDuration) { revert(); return; } const objectId = event.extendedProps.objectId; const recurrenceId = event.extendedProps.recurrenceId; const recurrenceIdDate = new Date(recurrenceId * 1000); let calendarObject; try { calendarObject = await store.dispatch('getEventByObjectId', { objectId }); } catch (error) { console.debug(error); revert(); return; } const eventComponent = (0,_utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_3__.getObjectAtRecurrenceId)(calendarObject, recurrenceIdDate); if (!eventComponent) { console.debug('Recurrence-id not found'); revert(); return; } // Reset attendees participation state to NEEDS-ACTION, since eventDrop // is always a signification change // Partly a workaround for Sabre-DAV not respecting RFC 6638 3.2.8, see // https://github.com/sabre-io/dav/issues/1282 if (eventComponent.organizer && eventComponent.hasProperty('ATTENDEE')) { const organizer = eventComponent.getFirstProperty('ORGANIZER'); for (const attendee of eventComponent.getAttendeeIterator()) { if (organizer.value !== attendee.value) { attendee.participationStatus = 'NEEDS-ACTION'; } } } try { // shiftByDuration may throw exceptions in certain cases eventComponent.shiftByDuration(deltaDuration, event.allDay, timezone, defaultAllDayDuration, defaultTimedDuration); } catch (error) { store.commit('resetCalendarObjectToDav', { calendarObject }); console.debug(error); revert(); return; } if (eventComponent.canCreateRecurrenceExceptions()) { eventComponent.createRecurrenceException(); } try { await store.dispatch('updateCalendarObject', { calendarObject }); } catch (error) { store.commit('resetCalendarObjectToDav', { calendarObject }); console.debug(error); revert(); } }; } /***/ }), /***/ "./src/fullcalendar/interaction/eventResize.js": /*!*****************************************************!*\ !*** ./src/fullcalendar/interaction/eventResize.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../duration.js */ "./src/fullcalendar/duration.js"); /* harmony import */ var _utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/calendarObject.js */ "./src/utils/calendarObject.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns a function to resize an event * * @param {object} store The Vuex Store * @return {Function} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(store) { return async function (_ref) { let { event, startDelta, endDelta, revert } = _ref; const startDeltaDuration = (0,_duration_js__WEBPACK_IMPORTED_MODULE_0__.getDurationValueFromFullCalendarDuration)(startDelta); const endDeltaDuration = (0,_duration_js__WEBPACK_IMPORTED_MODULE_0__.getDurationValueFromFullCalendarDuration)(endDelta); if (!startDeltaDuration && !endDeltaDuration) { revert(); return; } const objectId = event.extendedProps.objectId; const recurrenceId = event.extendedProps.recurrenceId; const recurrenceIdDate = new Date(recurrenceId * 1000); let calendarObject; try { calendarObject = await store.dispatch('getEventByObjectId', { objectId }); } catch (error) { console.debug(error); revert(); return; } const eventComponent = (0,_utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_1__.getObjectAtRecurrenceId)(calendarObject, recurrenceIdDate); if (!eventComponent) { console.debug('Recurrence-id not found'); revert(); return; } if (startDeltaDuration) { eventComponent.addDurationToStart(startDeltaDuration); } if (endDeltaDuration) { eventComponent.addDurationToEnd(endDeltaDuration); } if (eventComponent.canCreateRecurrenceExceptions()) { eventComponent.createRecurrenceException(); } try { await store.dispatch('updateCalendarObject', { calendarObject }); } catch (error) { store.commit('resetCalendarObjectToDav', { calendarObject }); console.debug(error); revert(); } }; } /***/ }), /***/ "./src/fullcalendar/interaction/navLinkDayClick.js": /*!*********************************************************!*\ !*** ./src/fullcalendar/interaction/navLinkDayClick.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/date.js */ "./src/utils/date.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Handles a click on a day-number in the calendar-grid * * @param {object} router The Vue router * @param {object} route The current Vue route * @return {function(Date): void} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(router, route) { return function (date) { const name = route.name; const params = Object.assign({}, route.params, { firstDay: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getYYYYMMDDFromDate)(date), view: 'timeGridDay' }); // Don't push new route when day and view didn't change if (route.params.firstDay === params.firstDay && route.params.view === params.view) { return; } router.push({ name, params }); }; } /***/ }), /***/ "./src/fullcalendar/interaction/navLinkWeekClick.js": /*!**********************************************************!*\ !*** ./src/fullcalendar/interaction/navLinkWeekClick.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/date.js */ "./src/utils/date.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Handles a click on a week-number in the calendar-grid * * @param {object} router The Vue router * @param {object} route The current Vue route * @return {function(Date): void} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(router, route) { return function (date) { const name = route.name; const params = Object.assign({}, route.params, { firstDay: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getYYYYMMDDFromDate)(date), view: 'timeGridWeek' }); // Don't push new route when day and view didn't change if (route.params.firstDay === params.firstDay && route.params.view === params.view) { return; } router.push({ name, params }); }; } /***/ }), /***/ "./src/fullcalendar/interaction/select.js": /*!************************************************!*\ !*** ./src/fullcalendar/interaction/select.js ***! \************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Provides a function to select a time-range in the calendar-grid. * This will open the new event editor. Based on the user's preference, * either the popover or the sidebar. * * @param {object} store The Vuex store * @param {object} router The Vue router * @param {object} route The Vue route * @param {Window} window The window object * @return {Function} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(store, router, route, window) { return function (_ref) { let { start, end, allDay } = _ref; let name = store.state.settings.skipPopover ? 'NewSidebarView' : 'NewPopoverView'; // Don't show the popover if the window size is too small (less then its max width of 450 px + a bit) // The mobile breakpoint of the reworked modals is 1024 px / 2 so simply use that. if (window.innerWidth <= 1024 / 2 && name === 'NewPopoverView') { name = 'NewSidebarView'; } // If we are already in a new event view, don't change it if (['NewSidebarView', 'NewPopoverView'].includes(route.name)) { name = route.name; } const params = Object.assign({}, route.params, { allDay: allDay ? '1' : '0', dtstart: String(Math.floor(start.getTime() / 1000)), dtend: String(Math.floor(end.getTime() / 1000)) }); // Don't push new route when day didn't change if (name === route.name && params.allDay === route.params.allDay && params.dtstart === route.params.dtstart && params.dtend === route.params.dtend) { return; } router.push({ name, params }); }; } /***/ }), /***/ "./src/fullcalendar/localization/dateFormattingConfig.js": /*!***************************************************************!*\ !*** ./src/fullcalendar/localization/dateFormattingConfig.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDateFormattingConfig: () => (/* binding */ getDateFormattingConfig) /* harmony export */ }); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns the date-formatting config for FullCalendar * * @return {object} */ const getDateFormattingConfig = () => { const defaultConfig = { dayHeaderFormat: 'ddd l', titleFormat: 'll', slotLabelFormat: 'LT' }; return { // Date formatting: eventTimeFormat: 'LT', views: { dayGridMonth: { ...defaultConfig, dayHeaderFormat: 'ddd' }, multiMonthYear: { ...defaultConfig, dayHeaderFormat: 'ddd', multiMonthMaxColumns: 4 }, timeGridDay: defaultConfig, timeGridWeek: defaultConfig, listMonth: { // Changes for the List View listDayFormat: 'LL, dddd', listDaySideFormat: false } } }; }; /***/ }), /***/ "./src/fullcalendar/localization/localeProvider.js": /*!*********************************************************!*\ !*** ./src/fullcalendar/localization/localeProvider.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getFullCalendarLocale: () => (/* binding */ getFullCalendarLocale) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns localization settings for the FullCalender package. * * @see https://fullcalendar.io/docs * @return {object} */ const getFullCalendarLocale = () => { return { firstDay: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.getFirstDay)(), locale: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.getLanguage)(), // TRANSLATORS W is an abbreviation for Week weekText: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'W'), allDayText: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'All day'), moreLinkText: n => (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', '%n more', {}, n), noEventsText: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'No events to display') }; }; /***/ }), /***/ "./src/fullcalendar/localization/momentPlugin.js": /*!*******************************************************!*\ !*** ./src/fullcalendar/localization/momentPlugin.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ momentPluginFactory) /* harmony export */ }); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _fullcalendar_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @fullcalendar/core */ "./node_modules/@fullcalendar/core/index.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a new moment object using the locale from the given Vuex store * * @param {object} $store The Vuex store * @param {object[]} data FullCalendar object containing the date etc. * @param {number[]} data.array Input data to initialize moment * @return {moment} */ const momentFactory = ($store, _ref) => { let { array } = _ref; return (0,_nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"])(array).locale($store.state.settings.momentLocale); }; /** * Construct a cmdFormatter that can be used to construct a FullCalendar plugin * * @param $store * @return {function(string, string):string} cmdFormatter function */ const cmdFormatterFactory = $store => (cmdStr, arg) => { // With our specific DateFormattingConfig, // cmdStr will always be a moment parsable string // like LT, etc. // // No need to manually parse it. // // This is not the case, if you use the standard FC // formatting config. // If arg.end is defined, this is a time-range if (arg.end) { const start = momentFactory($store, arg.start).format(cmdStr); const end = momentFactory($store, arg.end).format(cmdStr); if (start === end) { return start; } return start + arg.defaultSeparator + end; } return momentFactory($store, arg.start).format(cmdStr); }; /** * Construct a moment plugin for FullCalendar using the locale from the given Vuex store * * @param {object} $store The Vuex store * @return {object} The FullCalendar plugin */ function momentPluginFactory($store) { return (0,_fullcalendar_core__WEBPACK_IMPORTED_MODULE_1__.createPlugin)({ name: '@nextcloud/moment-plugin', cmdFormatter: cmdFormatterFactory($store) }); } /***/ }), /***/ "./src/fullcalendar/rendering/dayHeaderDidMount.js": /*!*********************************************************!*\ !*** ./src/fullcalendar/rendering/dayHeaderDidMount.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Adjusts the colSpan attribute of day-headers in the list view * * @param {object} data The destructuring object * @param {Node} data.el The HTML element */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(_ref) { let { el } = _ref; if (el.classList.contains('fc-list-day')) { el.firstChild.colSpan = 5; } } /***/ }), /***/ "./src/fullcalendar/rendering/eventDidMount.js": /*!*****************************************************!*\ !*** ./src/fullcalendar/rendering/eventDidMount.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Adds data to the html element representing the event in the fullcalendar grid. * This is used to later on position the popover * * @param {object} data The destructuring object * @param {EventApi} data.event The fullcalendar event object * @param {Node} data.el The HTML element */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(_ref) { let { event, el } = _ref; if (el.classList.contains('fc-event-nc-alarms')) { const notificationIcon = document.createElement('span'); notificationIcon.classList.add('icon-event-reminder'); if (event.extendedProps.darkText) { notificationIcon.classList.add('icon-event-reminder--dark'); } else { notificationIcon.classList.add('icon-event-reminder--light'); } el.firstChild.appendChild(notificationIcon); } if (el.classList.contains('fc-event-nc-task')) { if (el.classList.contains('fc-list-event')) { // List view const dotElement = el.querySelector('.fc-list-event-dot'); dotElement.classList.remove('fc-list-event-dot'); dotElement.classList.add('fc-list-event-checkbox'); dotElement.style.color = dotElement.style.borderColor; if (event.extendedProps.percent === 100) { dotElement.classList.add('calendar-grid-checkbox-checked'); } else { dotElement.classList.add('calendar-grid-checkbox'); } } else if (el.classList.contains('fc-daygrid-dot-event')) { // Dot event in day grid view const dotElement = el.querySelector('.fc-daygrid-event-dot'); dotElement.classList.remove('fc-daygrid-event-dot'); dotElement.classList.add('fc-daygrid-event-checkbox'); dotElement.style.color = dotElement.style.borderColor; if (event.extendedProps.percent === 100) { dotElement.classList.add('calendar-grid-checkbox-checked'); } else { dotElement.classList.add('calendar-grid-checkbox'); } } else { // AgendaView and all-day grid view const titleContainer = el.querySelector('.fc-event-title-container'); const checkboxElement = document.createElement('div'); checkboxElement.classList.add('fc-event-title-checkbox'); if (event.extendedProps.percent === 100) { checkboxElement.classList.add('calendar-grid-checkbox-checked'); } else { checkboxElement.classList.add('calendar-grid-checkbox'); } titleContainer.prepend(checkboxElement); } } if (event.source === null) { el.dataset.isNew = 'yes'; } else { el.dataset.objectId = event.extendedProps.objectId; el.dataset.recurrenceId = event.extendedProps.recurrenceId; } if (el.classList.contains('fc-list-event')) { const locationContainer = document.createElement('td'); locationContainer.classList.add('fc-list-event-location'); const descriptionContainer = document.createElement('td'); descriptionContainer.classList.add('fc-list-event-description'); el.appendChild(locationContainer); el.appendChild(descriptionContainer); if (event.extendedProps.location) { const location = document.createElement('span'); location.appendChild(document.createTextNode(event.extendedProps.location)); locationContainer.appendChild(location); } if (event.extendedProps.description) { const description = document.createElement('span'); description.appendChild(document.createTextNode(event.extendedProps.description)); descriptionContainer.appendChild(description); } } } /***/ }), /***/ "./src/fullcalendar/rendering/eventOrder.js": /*!**************************************************!*\ !*** ./src/fullcalendar/rendering/eventOrder.js ***! \**************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * This sorts events when they occur at the same time, have the same duration * and the same all-day property * * @param {EventApi} firstEvent The first full-calendar event * @param {EventApi} secondEvent The second full-calendar event * @return {number} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(firstEvent, secondEvent) { if (firstEvent.extendedProps.calendarOrder !== secondEvent.extendedProps.calendarOrder) { return firstEvent.extendedProps.calendarOrder - secondEvent.extendedProps.calendarOrder < 0 ? -1 : 1; } if (firstEvent.extendedProps.calendarName !== secondEvent.extendedProps.calendarName) { return firstEvent.extendedProps.calendarName < secondEvent.extendedProps.calendarName ? -1 : 1; } if (firstEvent.extendedProps.calendarId !== secondEvent.extendedProps.calendarId) { return firstEvent.extendedProps.calendarId < secondEvent.extendedProps.calendarId ? -1 : 1; } if (firstEvent.title !== secondEvent.title) { return firstEvent.title < secondEvent.title ? -1 : 1; } return 0; } /***/ }), /***/ "./src/fullcalendar/rendering/noEventsDidMount.js": /*!********************************************************!*\ !*** ./src/fullcalendar/rendering/noEventsDidMount.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/index.mjs"); /* harmony import */ var vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/CalendarBlank.vue */ "./node_modules/vue-material-design-icons/CalendarBlank.vue"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Adds our standardized emptyContent component if list view is empty * * @param {object} data The destructuring object * @param {Node} data.el The HTML element */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(_ref) { let { el } = _ref; const EmptyContentClass = vue__WEBPACK_IMPORTED_MODULE_3__["default"].extend(_nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__.NcEmptyContent); const instance = new EmptyContentClass({ propsData: { title: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_2__.translate)('calendar', 'No events'), description: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_2__.translate)('calendar', 'Create a new event or change the visible time-range') } }); instance.$slots.icon = [instance.$createElement(vue_material_design_icons_CalendarBlank_vue__WEBPACK_IMPORTED_MODULE_1__["default"])]; instance.$mount(); el.appendChild(instance.$el); } /***/ }), /***/ "./src/fullcalendar/timezones/vtimezoneNamedTimezoneImpl.js": /*!******************************************************************!*\ !*** ./src/fullcalendar/timezones/vtimezoneNamedTimezoneImpl.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _fullcalendar_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @fullcalendar/core */ "./node_modules/@fullcalendar/core/index.js"); /* harmony import */ var _fullcalendar_core_internal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @fullcalendar/core/internal */ "./node_modules/@fullcalendar/core/internal-common.js"); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/logger.js */ "./src/utils/logger.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Our own FullCalendar Timezone implementation based on the VTimezones we ship */ class VTimezoneNamedTimezone extends _fullcalendar_core_internal__WEBPACK_IMPORTED_MODULE_2__.by { /** * gets UTC offset for given date of this timezone * * @param {number[]} date an array that mirrors the parameters from new Date() * @return {number} offset in minutes */ offsetForArray(_ref) { let [year, month, day, hour, minute, second] = _ref; let timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(this.timeZoneName); if (!timezone) { timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId('UTC'); _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error("VTimezoneNamedTimezoneImpl: Timezone ".concat(this.timeZoneName, " not found, falling back to UTC.")); } // calendar-js works with natural month numbers, // not the javascript 0-based ones month += 1; return timezone.offsetForArray(year, month, day, hour, minute, second) / 60; } /** * returns parameters for Date object in this timezone based on given timestamp * * @param {number} ms Timestamp in milliseconds * @return {number[]} */ timestampToArray(ms) { let timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(this.timeZoneName); if (!timezone) { timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId('UTC'); _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error("VTimezoneNamedTimezoneImpl: Timezone ".concat(this.timeZoneName, " not found, falling back to UTC.")); } const timestampArray = timezone.timestampToArray(ms); // calendar-js works with natural month numbers, // not the javascript 0-based ones timestampArray[1]--; return timestampArray; } } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_fullcalendar_core__WEBPACK_IMPORTED_MODULE_3__.createPlugin)({ name: '@nextcloud/v-timezone-named-timezone-plugin', namedTimeZonedImpl: VTimezoneNamedTimezone })); /***/ }), /***/ "./src/mixins/EditorMixin.js": /*!***********************************!*\ !*** ./src/mixins/EditorMixin.js ***! \***********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _models_rfcProps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/rfcProps.js */ "./src/models/rfcProps.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _utils_router_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/router.js */ "./src/utils/router.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _utils_attendee_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/attendee.js */ "./src/utils/attendee.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * This is a mixin for the editor. It contains common Vue stuff, that is * required both in the popover as well as the sidebar. * * See inline for more documentation */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ props: { // Whether or not the calendar is embedded in a widget isWidget: { type: Boolean, default: false } }, data() { return { // Indicator whether or not the event is currently loading, saving or being deleted isLoading: true, // Indicator whether or not the event is currently saving isSaving: false, // Indicator whether or not loading the event failed isError: false, // Error message in case there was an error error: null, // The calendar-id of the selected calendar calendarId: null, // Whether or not an action is required on leave requiresActionOnRouteLeave: true, // Whether or not the this and all future option will be forced // This is the case when editing the recurrence-rule of an existing recurring event forceThisAndAllFuture: false, // Whether or not the master item is being edited isEditingMasterItem: false, // Whether or not it is a recurrence-exception isRecurrenceException: false }; }, computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapGetters)({ currentUserTimezone: 'getResolvedTimezone' }), ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapState)({ initialCalendarsLoaded: state => state.calendars.initialCalendarsLoaded, calendarObject: state => state.calendarObjectInstance.calendarObject, calendarObjectInstance: state => state.calendarObjectInstance.calendarObjectInstance }), eventComponent() { var _this$calendarObjectI; return (_this$calendarObjectI = this.calendarObjectInstance) === null || _this$calendarObjectI === void 0 ? void 0 : _this$calendarObjectI.eventComponent; }, /** * Returns the events title or an empty string if the event is still loading * * @return {string} */ title() { var _this$calendarObjectI2, _this$calendarObjectI3; return (_this$calendarObjectI2 = (_this$calendarObjectI3 = this.calendarObjectInstance) === null || _this$calendarObjectI3 === void 0 ? void 0 : _this$calendarObjectI3.title) !== null && _this$calendarObjectI2 !== void 0 ? _this$calendarObjectI2 : ''; }, /** * Returns the location or null if the event is still loading * * @return {string|null} */ location() { var _this$calendarObjectI4, _this$calendarObjectI5; return (_this$calendarObjectI4 = (_this$calendarObjectI5 = this.calendarObjectInstance) === null || _this$calendarObjectI5 === void 0 ? void 0 : _this$calendarObjectI5.location) !== null && _this$calendarObjectI4 !== void 0 ? _this$calendarObjectI4 : null; }, /** * Returns the client or null if the event is still loading * * @return {string|null} */ client() { var _this$calendarObjectI6, _this$calendarObjectI7; return (_this$calendarObjectI6 = (_this$calendarObjectI7 = this.calendarObjectInstance) === null || _this$calendarObjectI7 === void 0 ? void 0 : _this$calendarObjectI7.client) !== null && _this$calendarObjectI6 !== void 0 ? _this$calendarObjectI6 : null; }, /** * Returns the embalmer(Thanato) or null if the event is still loading * * @return {string|null} */ embalmer() { var _this$calendarObjectI8, _this$calendarObjectI9; return (_this$calendarObjectI8 = (_this$calendarObjectI9 = this.calendarObjectInstance) === null || _this$calendarObjectI9 === void 0 ? void 0 : _this$calendarObjectI9.embalmer) !== null && _this$calendarObjectI8 !== void 0 ? _this$calendarObjectI8 : null; }, /** * Returns the isleave property * * @return {string|null} */ isLeave() { var _this$calendarObjectI10, _this$calendarObjectI11; return (_this$calendarObjectI10 = (_this$calendarObjectI11 = this.calendarObjectInstance) === null || _this$calendarObjectI11 === void 0 ? void 0 : _this$calendarObjectI11.isLeave) !== null && _this$calendarObjectI10 !== void 0 ? _this$calendarObjectI10 : false; }, /** * Returns the iscalendarpending property * * @return {string|null} */ isCalendarPending() { var _this$calendarObjectI12, _this$calendarObjectI13; return (_this$calendarObjectI12 = (_this$calendarObjectI13 = this.calendarObjectInstance) === null || _this$calendarObjectI13 === void 0 ? void 0 : _this$calendarObjectI13.isCalendarPending) !== null && _this$calendarObjectI12 !== void 0 ? _this$calendarObjectI12 : false; }, /** * Returns the comment or null if the event is still loading * * @return {string|null} */ comment() { var _this$calendarObjectI14, _this$calendarObjectI15; return (_this$calendarObjectI14 = (_this$calendarObjectI15 = this.calendarObjectInstance) === null || _this$calendarObjectI15 === void 0 ? void 0 : _this$calendarObjectI15.comment) !== null && _this$calendarObjectI14 !== void 0 ? _this$calendarObjectI14 : null; }, /** * Returns the description or null if the event is still loading * * @return {string|null} */ description() { var _this$calendarObjectI16, _this$calendarObjectI17; return (_this$calendarObjectI16 = (_this$calendarObjectI17 = this.calendarObjectInstance) === null || _this$calendarObjectI17 === void 0 ? void 0 : _this$calendarObjectI17.description) !== null && _this$calendarObjectI16 !== void 0 ? _this$calendarObjectI16 : null; }, /** * Returns the start-date (without timezone) or null if the event is still loading * * @return {Date|null} */ startDate() { var _this$calendarObjectI18, _this$calendarObjectI19; return (_this$calendarObjectI18 = (_this$calendarObjectI19 = this.calendarObjectInstance) === null || _this$calendarObjectI19 === void 0 ? void 0 : _this$calendarObjectI19.startDate) !== null && _this$calendarObjectI18 !== void 0 ? _this$calendarObjectI18 : null; }, /** * Returns the timezone of the event's start-date or null if the event is still loading * * @return {string|null} */ startTimezone() { var _this$calendarObjectI20, _this$calendarObjectI21; return (_this$calendarObjectI20 = (_this$calendarObjectI21 = this.calendarObjectInstance) === null || _this$calendarObjectI21 === void 0 ? void 0 : _this$calendarObjectI21.startTimezoneId) !== null && _this$calendarObjectI20 !== void 0 ? _this$calendarObjectI20 : null; }, /** * Returns the end-date (without timezone) or null if the event is still loading * * @return {Date|null} */ endDate() { var _this$calendarObjectI22, _this$calendarObjectI23; return (_this$calendarObjectI22 = (_this$calendarObjectI23 = this.calendarObjectInstance) === null || _this$calendarObjectI23 === void 0 ? void 0 : _this$calendarObjectI23.endDate) !== null && _this$calendarObjectI22 !== void 0 ? _this$calendarObjectI22 : null; }, /** * Returns the timezone of the event's end-date or null if the event is still loading * * @return {string|null} */ endTimezone() { var _this$calendarObjectI24, _this$calendarObjectI25; return (_this$calendarObjectI24 = (_this$calendarObjectI25 = this.calendarObjectInstance) === null || _this$calendarObjectI25 === void 0 ? void 0 : _this$calendarObjectI25.endTimezoneId) !== null && _this$calendarObjectI24 !== void 0 ? _this$calendarObjectI24 : null; }, /** * Returns whether or not the event is all-day or null if the event is still loading * * @return {boolean} */ isAllDay() { var _this$calendarObjectI26, _this$calendarObjectI27; return (_this$calendarObjectI26 = (_this$calendarObjectI27 = this.calendarObjectInstance) === null || _this$calendarObjectI27 === void 0 ? void 0 : _this$calendarObjectI27.isAllDay) !== null && _this$calendarObjectI26 !== void 0 ? _this$calendarObjectI26 : false; }, /** * Returns whether or not the event is a leave * * @return {boolean} */ isLeave() { var _this$calendarObjectI28, _this$calendarObjectI29; return (_this$calendarObjectI28 = (_this$calendarObjectI29 = this.calendarObjectInstance) === null || _this$calendarObjectI29 === void 0 ? void 0 : _this$calendarObjectI29.isLeave) !== null && _this$calendarObjectI28 !== void 0 ? _this$calendarObjectI28 : false; }, /** * Returns whether or not the event is pending * * @return {boolean} */ isCalendarPending() { var _this$calendarObjectI30, _this$calendarObjectI31; return (_this$calendarObjectI30 = (_this$calendarObjectI31 = this.calendarObjectInstance) === null || _this$calendarObjectI31 === void 0 ? void 0 : _this$calendarObjectI31.isCalendarPending) !== null && _this$calendarObjectI30 !== void 0 ? _this$calendarObjectI30 : false; }, /** * Returns whether or not the user is allowed to modify the all-day setting * * @return {boolean} */ canModifyAllDay() { var _this$calendarObjectI32, _this$calendarObjectI33; return (_this$calendarObjectI32 = (_this$calendarObjectI33 = this.calendarObjectInstance) === null || _this$calendarObjectI33 === void 0 ? void 0 : _this$calendarObjectI33.canModifyAllDay) !== null && _this$calendarObjectI32 !== void 0 ? _this$calendarObjectI32 : false; }, /** * Returns the color the illustration should be colored in * * @return {string} */ illustrationColor() { return this.color || this.selectedCalendarColor; }, /** * Returns the color of the calendar selected by the user * This is used to color illustration * * @return {string|*} */ selectedCalendarColor() { if (!this.selectedCalendar) { const calendars = this.$store.getters.sortedCalendars; if (calendars.length > 0) { return calendars[0].color; } return (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_4__.uidToHexColor)(''); } return this.selectedCalendar.color; }, /** * Returns the custom color of this event * * @return {null | string} */ color() { var _this$calendarObjectI34, _this$calendarObjectI35; return (_this$calendarObjectI34 = (_this$calendarObjectI35 = this.calendarObjectInstance) === null || _this$calendarObjectI35 === void 0 ? void 0 : _this$calendarObjectI35.customColor) !== null && _this$calendarObjectI34 !== void 0 ? _this$calendarObjectI34 : null; }, /** * Returns whether or not to display save buttons * * @return {boolean} */ showSaveButtons() { return this.isReadOnly === false; }, /** * Returns whether or not to allow editing the event * * @return {boolean} */ isReadOnly() { if (!this.calendarObject) { return true; } const calendar = this.$store.getters.getCalendarById(this.calendarObject.calendarId); if (!calendar) { return true; } return calendar.readOnly; }, isSharedWithMe() { if (!this.calendarObject) { return true; } const calendar = this.$store.getters.getCalendarById(this.calendarObject.calendarId); if (!calendar) { return true; } return calendar.isSharedWithMe; }, /** * Returns whether the user is an attendee of the event * * @return {boolean} */ isViewedByAttendee() { return this.userAsAttendee !== null; }, /** * Returns the attendee property corresponding to the current user * * @return {?object} */ userAsAttendee() { if (this.isReadOnly || !this.$store.getters.getCurrentUserPrincipalEmail || !this.calendarObjectInstance.organizer) { return null; } const principal = (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_6__.removeMailtoPrefix)(this.$store.getters.getCurrentUserPrincipalEmail); for (const attendee of this.calendarObjectInstance.attendees) { if ((0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_6__.removeMailtoPrefix)(attendee.uri) === principal) { return attendee; } } return null; }, /** * Returns all calendars selectable by the user * * @return {object[]} */ calendars() { if (this.isReadOnly && this.calendarObject) { return [this.$store.getters.getCalendarById(this.calendarObject.calendarId)]; } return this.$store.getters.sortedCalendars; }, /** * Returns the object of the selected calendar * * @return {object} */ selectedCalendar() { return this.$store.getters.getCalendarById(this.calendarId); }, /** * Returns whether or not the user is allowed to delete this event * * @return {boolean} */ canDelete() { if (!this.calendarObject) { return false; } if (this.isReadOnly) { return false; } if (this.isLoading) { return false; } return this.calendarObject.existsOnServer; }, /** * Returns whether or not the user is allowed to create recurrence exceptions for this event * * @return {boolean} */ canCreateRecurrenceException() { if (!this.eventComponent) { return false; } return this.eventComponent.canCreateRecurrenceExceptions(); }, /** * Returns whether the calendar of the event can be modified * * @return {boolean} */ canModifyCalendar() { const eventComponent = this.calendarObjectInstance.eventComponent; if (!eventComponent) { return true; } return !eventComponent.isPartOfRecurrenceSet() || eventComponent.isExactForkOfPrimary; }, /** * Returns an object with properties from RFCs including * their displayName, a description, options, etc. * * @return {{comment, geo, color, timeTransparency, description, resources, location, client, categories, accessClass, priority, status, locations, articles, clients,embalmer,embalmers}} */ rfcProps() { return (0,_models_rfcProps_js__WEBPACK_IMPORTED_MODULE_0__.getRFCProperties)(); }, /** * Returns whether or not this event can be downloaded from the server * * @return {boolean} */ hasDownloadURL() { if (!this.calendarObject) { return false; } if (this.isLoading) { return false; } return this.calendarObject.existsOnServer; }, /** * Returns the download url as a string or null if event is loading or does not exist on the server (yet) * * @return {string|null} */ downloadURL() { if (!this.calendarObject) { return null; } if (!this.calendarObject.dav) { return null; } return this.calendarObject.dav.url + '?export'; }, /** * Returns whether or not this is a new event * * @return {boolean} */ isNew() { if (!this.calendarObject) { return true; } if (!this.calendarObject.dav) { return true; } return false; } }, methods: { /** * Changes the selected calendar * Does not move the calendar-object yet, that's done in save * * @param {object} selectedCalendar The new calendar selected by the user */ changeCalendar(selectedCalendar) { this.calendarId = selectedCalendar.id; // If this is a new event that does not exist on the server yet, // override the internally stored calendarId. If we did not do this, // it would create the event in the default calendar first and move it // to the desired calendar as a second step. if (this.calendarObject && !this.calendarObject.existsOnServer) { this.calendarObject.calendarId = selectedCalendar.id; } }, /** * This will force the user to update this and all future occurrences when saving */ forceModifyingFuture() { this.forceThisAndAllFuture = true; }, /** * Closes the editor and returns to normal calendar-view */ closeEditor() { if (this.isWidget) { this.$store.commit('closeWidgetEventDetails'); return; } const params = Object.assign({}, this.$store.state.route.params); delete params.object; delete params.recurrenceId; this.$router.push({ name: (0,_utils_router_js__WEBPACK_IMPORTED_MODULE_2__.getPrefixedRoute)(this.$store.state.route.name, 'CalendarView'), params }); this.$store.commit('resetCalendarObjectInstanceObjectIdAndRecurrenceId'); }, /** * Closes the editor and returns to normal calendar-view without running any action. * This is useful if the calendar-object-instance has already been saved. */ closeEditorAndSkipAction() { this.requiresActionOnRouteLeave = false; this.closeEditor(); }, /** * Resets the calendar-object back to it's original state and closes the editor */ async cancel() { if (this.isLoading) { return; } if (!this.calendarObject) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Calendar-object not found'); this.closeEditor(); return; } this.$store.commit('resetCalendarObjectToDav', { calendarObject: this.calendarObject }); this.requiresActionOnRouteLeave = false; this.closeEditor(); }, keyboardCloseEditor(event) { if (event.key === 'Escape') { this.cancel(); } }, keyboardSaveEvent(event) { if (event.key === 'Enter' && event.ctrlKey === true && !this.isReadOnly && !this.canCreateRecurrenceException) { this.saveAndLeave(false); } }, keyboardDeleteEvent(event) { if (event.key === 'Delete' && event.ctrlKey === true && this.canDelete && !this.canCreateRecurrenceException) { this.deleteAndLeave(false); } }, keyboardDuplicateEvent(event) { if (event.key === 'd' && event.ctrlKey === true) { event.preventDefault(); if (!this.isNew && !this.isReadOnly && !this.canCreateRecurrenceException) { this.duplicateEvent(); } } }, /** * Saves a calendar-object * * @param {boolean} thisAndAllFuture Whether to modify only this or this and all future occurrences * @return {Promise} */ async save() { let thisAndAllFuture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; if (!this.calendarObject) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Calendar-object not found'); return; } if (this.isReadOnly) { return; } if (this.forceThisAndAllFuture) { thisAndAllFuture = true; } this.isLoading = true; this.isSaving = true; try { this.setPendingCalendar(false); await this.$store.dispatch('saveCalendarObjectInstance', { thisAndAllFuture, calendarId: this.calendarId }); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error("Failed to save event: ".concat(error)); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_7__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_5__.translate)('calendar', 'Failed to save event')); this.calendarObjectInstance.eventComponent.markDirty(); throw error; } finally { this.isLoading = false; this.isSaving = false; } }, setPendingCalendar() { let isPending = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; this.calendarObjectInstance.eventComponent.isCalendarPending = isPending; this.calendarObjectInstance.isCalendarPending = isPending; }, async savePendingCalendar() { let thisAndAllFuture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; if (!this.calendarObject) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Calendar-object not found'); return; } if (this.isReadOnly) { return; } if (this.forceThisAndAllFuture) { thisAndAllFuture = true; } this.isLoading = true; this.isSaving = true; try { this.setPendingCalendar(); await this.$store.dispatch('saveCalendarObjectInstance', { thisAndAllFuture, calendarId: this.calendarId }); this.requiresActionOnRouteLeave = false; } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error("Failed to save event: ".concat(error)); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_7__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_5__.translate)('calendar', 'Failed to save event')); this.calendarObjectInstance.eventComponent.markDirty(); throw error; } finally { this.isLoading = false; this.isSaving = false; this.closeEditor(); } }, /** * Saves a calendar-object and closes the editor * * @param {boolean} thisAndAllFuture Whether to modify only this or this and all future occurrences * @return {Promise} */ async saveAndLeave() { let thisAndAllFuture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; await this.save(thisAndAllFuture); this.requiresActionOnRouteLeave = false; this.closeEditor(); }, /** * Duplicates a calendar-object and saves it * * @return {Promise} */ async duplicateEvent() { await this.$store.dispatch('duplicateCalendarObjectInstance'); }, /** * Deletes a calendar-object * * @param {boolean} thisAndAllFuture Whether to delete only this or this and all future occurrences * @return {Promise} */ async delete() { let thisAndAllFuture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; if (!this.calendarObject) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Calendar-object not found'); return; } if (this.isReadOnly) { return; } this.isLoading = true; await this.$store.dispatch('deleteCalendarObjectInstance', { thisAndAllFuture }); this.isLoading = false; }, /** * Deletes a calendar-object and closes the editor * * @param {boolean} thisAndAllFuture Whether to delete only this or this and all future occurrences * @return {Promise} */ async deleteAndLeave() { let thisAndAllFuture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; await this.delete(thisAndAllFuture); this.requiresActionOnRouteLeave = false; this.closeEditor(); }, /** * Updates the title of this event * * @param {string} title New title */ updateTitle(title) { if (title.trim() === '') { title = null; } this.$store.commit('changeTitle', { calendarObjectInstance: this.calendarObjectInstance, title }); }, /** * Updates the description of this event * * @param {string} description New description */ updateDescription(description) { this.$store.commit('changeDescription', { calendarObjectInstance: this.calendarObjectInstance, description }); }, /** * Updates the location of this event * * @param {string} location New location */ updateLocation(location) { this.$store.commit('changeLocation', { calendarObjectInstance: this.calendarObjectInstance, location }); }, /** * Updates the comments of this event * * @param {string} comment New comments */ updateComment(comment) { this.$store.commit('changeComment', { calendarObjectInstance: this.calendarObjectInstance, comment }); }, /** * Updates the client of the event * * @param {string} client New client */ updateClient(client) { this.$store.commit('changeClient', { calendarObjectInstance: this.calendarObjectInstance, client }); }, /** * Updates the embalmer(Thanatopracteur) of the event * * @param {string} embalmer New embalmer */ updateEmbalmer(embalmer) { this.$store.commit('changeEmbalmer', { calendarObjectInstance: this.calendarObjectInstance, embalmer }); }, /** * Updates the start date of this event * * @param {Date} startDate New start date */ updateStartDate(startDate) { this.$store.dispatch('changeStartDate', { calendarObjectInstance: this.calendarObjectInstance, startDate }); }, /** * Updates the timezone of this event's start date * * @param {string} startTimezone New start timezone */ updateStartTimezone(startTimezone) { if (!startTimezone) { return; } this.$store.dispatch('changeStartTimezone', { calendarObjectInstance: this.calendarObjectInstance, startTimezone }); }, /** * Updates the end date of this event * * @param {Date} endDate New end date */ updateEndDate(endDate) { this.$store.commit('changeEndDate', { calendarObjectInstance: this.calendarObjectInstance, endDate }); }, /** * Updates the timezone of this event's end date * * @param {string} endTimezone New end timezone */ updateEndTimezone(endTimezone) { if (!endTimezone) { return; } this.$store.dispatch('changeEndTimezone', { calendarObjectInstance: this.calendarObjectInstance, endTimezone }); }, /** * Toggles the event between all-day and timed */ toggleAllDay() { this.$store.dispatch('toggleAllDay', { calendarObjectInstance: this.calendarObjectInstance }); }, /** * Toggles the event between all-day and timed */ toggleIsLeave(isLeave) { this.$store.commit('toggleIsLeave', { calendarObjectInstance: this.calendarObjectInstance, isLeave }); }, /** * Toggles the event pending */ toggleIsCalendarPending(isCalendarPending) { this.$store.commit('toggleIsCalendarPending', { calendarObjectInstance: this.calendarObjectInstance, isCalendarPending }); }, /** * Resets the internal state after changing the viewed calendar-object */ resetState() { this.isLoading = true; this.isSaving = false; this.isError = false; this.error = null; this.calendarId = null; this.requiresActionOnRouteLeave = true; this.forceThisAndAllFuture = false; this.isEditingMasterItem = false; this.isRecurrenceException = false; }, /** * This function returns a promise that resolves * once the calendars were fetched from the server * * @return {Promise} */ loadingCalendars() { if (this.initialCalendarsLoaded) { return Promise.resolve(); } return new Promise(resolve => { const watcher = this.$watch('initialCalendarsLoaded', () => { resolve(); watcher(); }); }); } }, /** * This is executed before entering the Editor routes * * @param {object} to The route to navigate to * @param {object} from The route coming from * @param {Function} next Function to be called when ready to load the next view */ async beforeRouteEnter(to, from, next) { if (to.name === 'NewSidebarView' || to.name === 'NewPopoverView') { next(async vm => { vm.resetState(); const isAllDay = to.params.allDay === '1'; const start = parseInt(to.params.dtstart, 10); const end = parseInt(to.params.dtend, 10); const timezoneId = vm.$store.getters.getResolvedTimezone; try { await vm.loadingCalendars(); await vm.$store.dispatch('getCalendarObjectInstanceForNewEvent', { isAllDay, start, end, timezoneId }); vm.calendarId = vm.calendarObject.calendarId; } catch (error) { console.debug(error); vm.isError = true; vm.error = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_5__.translate)('calendar', 'It might have been deleted, or there was a typo in a link'); } finally { vm.isLoading = false; } }); } else { next(async vm => { vm.resetState(); const objectId = to.params.object; const recurrenceId = to.params.recurrenceId; if (recurrenceId === 'next') { const closeToDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_3__.dateFactory)(); // TODO: can we replace this by simply returning the new route since we are inside next() // Probably not though, because it's async try { await vm.loadingCalendars(); const recurrenceId = await vm.$store.dispatch('resolveClosestRecurrenceIdForCalendarObject', { objectId, closeToDate }); const params = Object.assign({}, vm.$route.params, { recurrenceId }); vm.$router.replace({ name: vm.$route.name, params }); } catch (error) { console.debug(error); vm.isError = true; vm.error = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_5__.translate)('calendar', 'It might have been deleted, or there was a typo in a link'); return; // if we cannot resolve next to an actual recurrenceId, return here to avoid further processing. } finally { vm.isLoading = false; } } try { await vm.loadingCalendars(); await vm.$store.dispatch('getCalendarObjectInstanceByObjectIdAndRecurrenceId', { objectId, recurrenceId }); vm.calendarId = vm.calendarObject.calendarId; vm.isEditingMasterItem = vm.eventComponent.isMasterItem(); vm.isRecurrenceException = vm.eventComponent.isRecurrenceException(); } catch (error) { console.debug(error); vm.isError = true; vm.error = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_5__.translate)('calendar', 'It might have been deleted, or there was a typo in a link'); } finally { vm.isLoading = false; } }); } }, /** * This function is called when the route changes. This can be caused by various actions: * - Change of selected time-range when creating new event * - Navigating through the calendar-view * * @param {object} to The route to navigate to * @param {object} from The route coming from * @param {Function} next Function to be called when ready to load the next view */ async beforeRouteUpdate(to, from, next) { // If we are in the New Event dialog, we want to update the selected time if (to.name === 'NewSidebarView' || to.name === 'NewPopoverView') { // If allDay, dtstart and dtend are the same there is no need to update. // This is usally the case when navigating through the calendar while the editor is open if (to.params.allDay === from.params.allDay && to.params.dtstart === from.params.dtstart && to.params.dtend === from.params.dtend) { next(); return; } const isAllDay = to.params.allDay === '1'; const start = to.params.dtstart; const end = to.params.dtend; const timezoneId = this.$store.getters.getResolvedTimezone; await this.loadingCalendars(); await this.$store.dispatch('updateCalendarObjectInstanceForNewEvent', { isAllDay, start, end, timezoneId }); next(); } else { // If both the objectId and recurrenceId remained the same // there is no need to update. This is usally the case when navigating // through the calendar while the editor is open if (to.params.object === from.params.object && to.params.recurrenceId === from.params.recurrenceId) { next(); return; } this.isLoading = true; try { await this.save(); } catch (error) { console.debug(error); next(false); return; } this.resetState(); const objectId = to.params.object; const recurrenceId = to.params.recurrenceId; if (recurrenceId === 'next') { const closeToDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_3__.dateFactory)(); await this.loadingCalendars(); const recurrenceId = await this.$store.dispatch('resolveClosestRecurrenceIdForCalendarObject', { objectId, closeToDate }); const params = Object.assign({}, this.$route.params, { recurrenceId }); next({ name: this.$route.name, params }); return; } try { await this.loadingCalendars(); await this.$store.dispatch('getCalendarObjectInstanceByObjectIdAndRecurrenceId', { objectId, recurrenceId }); this.calendarId = this.calendarObject.calendarId; this.isEditingMasterItem = this.eventComponent.isMasterItem(); this.isRecurrenceException = this.eventComponent.isRecurrenceException(); } catch (error) { console.debug(error); this.isError = true; this.error = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_5__.translate)('calendar', 'It might have been deleted, or there was a typo in the link'); } finally { this.isLoading = false; next(); } } }, /** * This route is called when the user leaves the editor * * @param {object} to The route to navigate to * @param {object} from The route coming from * @param {Function} next Function to be called when ready to load the next view */ async beforeRouteLeave(to, from, next) { // requiresActionOnRouteLeave is false when an action like deleting / saving / cancelling was already taken. // The responsibility of this method is to automatically save the event when the user clicks outside the editor if (!this.requiresActionOnRouteLeave) { next(); return; } try { if ((from.name !== 'NewPopoverView' || to.name !== 'EditPopoverView') && (from.name !== 'NewPopoverView' || to.name !== 'EditSideBarView')) { await this.save(); } next(); } catch (error) { console.debug(error); next(false); } } }); /***/ }), /***/ "./src/mixins/PropertyLinksMixin.js": /*!******************************************!*\ !*** ./src/mixins/PropertyLinksMixin.js ***! \******************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var linkifyjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! linkifyjs */ "./node_modules/linkifyjs/dist/linkify.es.js"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ props: { linkifyLinks: { type: Boolean, default: false } }, computed: { showLinksClickable() { return this.linkifyLinks && this.textareaHasFocus === false && typeof this.value === 'string' && this.value.length > 4 && (0,linkifyjs__WEBPACK_IMPORTED_MODULE_0__.find)(this.value).length > 0; }, linkifyMinHeight() { // return this.rows > 1 ? '68px' : '48px' return '0'; } }, data() { return { textareaHasFocus: false }; }, methods: { handleShowTextarea(evt) { if (this.isReadOnly || this.linkifyLinks === false) { // do nothing return; } if (evt.target && evt.target.tagName === 'A') { // a link was clicked, do nothing return; } if (this.textareaHasFocus === true) { // the textarea is shown already, should never happen console.error('this.textareaHasFocus is true but click event is dispatched on div'); return; } const parent = evt.currentTarget.parentElement; this.textareaHasFocus = true; this.$nextTick(() => { if (parent && parent.firstElementChild) { const textarea = parent.firstElementChild; textarea.focus(); if (this.value && this.value.length > 64) { textarea.selectionStart = textarea.selectionEnd = 0; } else { textarea.selectionStart = textarea.selectionEnd = 64; } } }); }, /** * @param {boolean} hasFocus */ handleToggleTextareaFocus(hasFocus) { if (this.linkifyLinks === false) { // do nothing return; } this.textareaHasFocus = hasFocus; } } }); /***/ }), /***/ "./src/mixins/PropertyMixin.js": /*!*************************************!*\ !*** ./src/mixins/PropertyMixin.js ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue_material_design_icons_Briefcase_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-material-design-icons/Briefcase.vue */ "./node_modules/vue-material-design-icons/Briefcase.vue"); /* harmony import */ var vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-material-design-icons/Check.vue */ "./node_modules/vue-material-design-icons/Check.vue"); /* harmony import */ var vue_material_design_icons_Eye_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-material-design-icons/Eye.vue */ "./node_modules/vue-material-design-icons/Eye.vue"); /* harmony import */ var vue_material_design_icons_EyedropperVariant_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-material-design-icons/EyedropperVariant.vue */ "./node_modules/vue-material-design-icons/EyedropperVariant.vue"); /* harmony import */ var vue_material_design_icons_MapMarker_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-material-design-icons/MapMarker.vue */ "./node_modules/vue-material-design-icons/MapMarker.vue"); /* harmony import */ var vue_material_design_icons_Tag_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-material-design-icons/Tag.vue */ "./node_modules/vue-material-design-icons/Tag.vue"); /* harmony import */ var vue_material_design_icons_TextBoxOutline_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-material-design-icons/TextBoxOutline.vue */ "./node_modules/vue-material-design-icons/TextBoxOutline.vue"); /* harmony import */ var vue_material_design_icons_Bell_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-material-design-icons/Bell.vue */ "./node_modules/vue-material-design-icons/Bell.vue"); /* harmony import */ var vue_material_design_icons_Human_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vue-material-design-icons/Human.vue */ "./node_modules/vue-material-design-icons/Human.vue"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * This is a mixin for properties. It contains common Vue stuff, that is * required commonly by all components like the event, read-only-status, etc. * * See inline for more documentation */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ components: { Briefcase: vue_material_design_icons_Briefcase_vue__WEBPACK_IMPORTED_MODULE_0__["default"], Check: vue_material_design_icons_Check_vue__WEBPACK_IMPORTED_MODULE_1__["default"], Eye: vue_material_design_icons_Eye_vue__WEBPACK_IMPORTED_MODULE_2__["default"], EyedropperVariant: vue_material_design_icons_EyedropperVariant_vue__WEBPACK_IMPORTED_MODULE_3__["default"], MapMarker: vue_material_design_icons_MapMarker_vue__WEBPACK_IMPORTED_MODULE_4__["default"], Tag: vue_material_design_icons_Tag_vue__WEBPACK_IMPORTED_MODULE_5__["default"], TextBoxOutline: vue_material_design_icons_TextBoxOutline_vue__WEBPACK_IMPORTED_MODULE_6__["default"], Bell: vue_material_design_icons_Bell_vue__WEBPACK_IMPORTED_MODULE_7__["default"], Human: vue_material_design_icons_Human_vue__WEBPACK_IMPORTED_MODULE_8__["default"] }, props: { /** * The prop-model object containing information about the * displayed property. The information comes straight from * /src/models/rfcProps.js */ propModel: { type: Object, required: true }, /** * An indicator whether or not the event is being viewed * in read-only mode */ isReadOnly: { type: Boolean, required: true }, /** * The value to be displayed inside the property. * The type varies from property to property. */ value: { required: true }, /** * Show the icon left of the input. * Will be shown by default. */ showIcon: { type: Boolean, default: true }, searchable: { type: Boolean, required: false, default: false }, multiple: { type: Boolean, required: false, default: false } }, computed: { /** * Returns the icon stored in the property-model * If there is no icon set, it returns an empty string * * @return {string} */ icon() { return this.propModel.icon || ''; }, /** * Returns the placeholder text stored in the property-model * If there is no placeholder text set, it returns an empty string * * @return {string} */ placeholder() { return this.propModel.placeholder || ''; }, /** * Returns the placeholder text for tags stored in the property-model * If there is no placeholder text for tags set, it returns an empty string * * @return {string} */ tagPlaceholder() { return this.propModel.tagPlaceholder || ''; }, /** * Returns the info text stored in the property-model * If there is no info text set, it returns an empty string * * @return {string} */ info() { return this.propModel.info || ''; }, /** * Returns the property's readable name stored in the property-model * If there is no readable name set, it returns an empty string * * @return {string} */ readableName() { return this.propModel.readableName || ''; }, /** * Returns whether or not to display the info text. * The info text will only be displayed if there * is actually an info set and if the event is viewed * with edit permission. * * @return {boolean} */ hasInfo() { return this.propModel.info !== undefined && !this.isReadOnly; } } }); /***/ }), /***/ "./src/models/alarm.js": /*!*****************************!*\ !*** ./src/models/alarm.js ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultAlarmObject: () => (/* binding */ getDefaultAlarmObject), /* harmony export */ mapAlarmComponentToAlarmObject: () => (/* binding */ mapAlarmComponentToAlarmObject) /* harmony export */ }); /* harmony import */ var _utils_alarms_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/alarms.js */ "./src/utils/alarms.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete alarm object based on given props * * @param {object} props The alarm properties already provided * @return {object} */ const getDefaultAlarmObject = function () { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({}, { // The calendar-js alarm component alarmComponent: null, // Type of alarm: DISPLAY, EMAIL, AUDIO type: null, // Whether or not the alarm is relative isRelative: false, // Date object of an absolute alarm (if it's absolute, it must be DATE-TIME) absoluteDate: null, // The time zone id of for absolute alarms absoluteTimezoneId: null, // Whether or not the relative alarm is before the event, relativeIsBefore: null, // Whether or not the alarm is relative to the event's start relativeIsRelatedToStart: null, // TIMED EVENTS: // Unit (seconds, minutes, hours, ...) if this alarm is inside a timed event relativeUnitTimed: null, // The amount of unit if this alarm is inside a timed event relativeAmountTimed: null, // ALL-DAY EVENTS: // Unit (seconds, minutes, hours, ...) if this alarm is inside an all-day event relativeUnitAllDay: null, // The amount of unit if this alarm is inside a all-day event relativeAmountAllDay: null, // The hours to display alarm for in an all-day event (e.g. 1 day before at 9:00 am) relativeHoursAllDay: null, // The minutes to display alarm for in an all-day event (e.g. 1 day before at 9:30 am) relativeMinutesAllDay: null, // The total amount of seconds for a relative alarm relativeTrigger: null }, props); }; /** * Map an alarm component to our alarm object * * @param {AlarmComponent} alarmComponent The calendar-js alarm-component to turn into an alarm object * @return {object} */ const mapAlarmComponentToAlarmObject = alarmComponent => { if (alarmComponent.trigger.isRelative()) { const relativeIsBefore = alarmComponent.trigger.value.isNegative; const relativeIsRelatedToStart = alarmComponent.trigger.related === 'START'; const { amount: relativeAmountTimed, unit: relativeUnitTimed } = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_0__.getAmountAndUnitForTimedEvents)(alarmComponent.trigger.value.totalSeconds); const { unit: relativeUnitAllDay, amount: relativeAmountAllDay, hours: relativeHoursAllDay, minutes: relativeMinutesAllDay } = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_0__.getAmountHoursMinutesAndUnitForAllDayEvents)(alarmComponent.trigger.value.totalSeconds); const relativeTrigger = alarmComponent.trigger.value.totalSeconds; return getDefaultAlarmObject({ alarmComponent, type: alarmComponent.action, isRelative: alarmComponent.trigger.isRelative(), relativeIsBefore, relativeIsRelatedToStart, relativeUnitTimed, relativeAmountTimed, relativeUnitAllDay, relativeAmountAllDay, relativeHoursAllDay, relativeMinutesAllDay, relativeTrigger }); } else { const absoluteDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(alarmComponent.trigger.value); return getDefaultAlarmObject({ alarmComponent, type: alarmComponent.action, isRelative: alarmComponent.trigger.isRelative(), absoluteDate, absoluteTimezoneId: alarmComponent.trigger.value.timezoneId }); } }; /***/ }), /***/ "./src/models/appointmentConfig.js": /*!*****************************************!*\ !*** ./src/models/appointmentConfig.js ***! \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ AppointmentConfig) /* harmony export */ }); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_calendar_availability_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/calendar-availability-vue */ "./node_modules/@nextcloud/calendar-availability-vue/dist/index.mjs"); function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * @copyright Copyright (c) 2021 Richard Steinmetz * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** @class */ class AppointmentConfig { /** * Create a new AppointmentConfig from the given plain object data * * @param {object} data Appointment config data to construct an instance from * @param {?number} data.id Id * @param {?string} data.token Token * @param {string} data.name Name * @param {string} data.description Description * @param {string} data.location Location * @param {string} data.visibility Visibility * @param {string} data.targetCalendarUri Target calendar URI * @param {object} data.availability Availability * @param {number} data.length Length in seconds * @param {number} data.increment Increment in seconds * @param {number} data.preparationDuration Preparation duration in seconds * @param {number} data.followupDuration Followup duration in seconds * @param {number} data.timeBeforeNextSlot Time before next slot in seconds * @param {?number} data.dailyMax Max daily slots * @param {?number} data.futureLimit Limits how far in the future appointments can be booked * @param {?string[]} data.calendarFreeBusyUris URIs of calendars to check for conflicts * @param {bool} data.createTalkRoom Whether a Talk room should be created */ constructor(data) { var _data, _tryParseInt, _tryParseInt2; /** @member {?number} */ _defineProperty(this, "id", void 0); /** @member {?string} */ _defineProperty(this, "token", void 0); /** @member {string} */ _defineProperty(this, "name", void 0); /** @member {string} */ _defineProperty(this, "description", void 0); /** @member {string} */ _defineProperty(this, "location", void 0); /** @member {string} */ _defineProperty(this, "visibility", void 0); /** @member {string} */ _defineProperty(this, "targetCalendarUri", void 0); /** @member {object} */ _defineProperty(this, "availability", void 0); /** @member {number} */ _defineProperty(this, "length", void 0); /** @member {number} */ _defineProperty(this, "increment", void 0); /** @member {number} */ _defineProperty(this, "preparationDuration", void 0); /** @member {number} */ _defineProperty(this, "followupDuration", void 0); /** @member {number} */ _defineProperty(this, "timeBeforeNextSlot", void 0); /** @member {?number} */ _defineProperty(this, "dailyMax", void 0); /** @member {?number} */ _defineProperty(this, "futureLimit", void 0); /** @member {?string[]} */ _defineProperty(this, "calendarFreeBusyUris", void 0); /** @member {bool} */ _defineProperty(this, "createTalkRoom", void 0); (_data = data) !== null && _data !== void 0 ? _data : data = {}; this.id = data.id; this.token = data.token; this.name = data.name; this.description = data.description; this.location = data.location; this.visibility = data.visibility; this.targetCalendarUri = data.targetCalendarUri; this.availability = data.availability; this.length = (_tryParseInt = tryParseInt(data.length)) !== null && _tryParseInt !== void 0 ? _tryParseInt : 0; this.increment = (_tryParseInt2 = tryParseInt(data.increment)) !== null && _tryParseInt2 !== void 0 ? _tryParseInt2 : 0; this.preparationDuration = tryParseInt(data.preparationDuration); this.followupDuration = tryParseInt(data.followupDuration); this.timeBeforeNextSlot = tryParseInt(data.timeBeforeNextSlot); this.dailyMax = tryParseInt(data.dailyMax); this.futureLimit = tryParseInt(data.futureLimit); this.calendarFreeBusyUris = data.calendarFreeBusyUris; this.createTalkRoom = data.createTalkRoom; } /** * Create a default appointment config instance * * @param {string} targetCalendarUri * @param {ScheduleInbox} scheduleInbox * @param {string} timezoneId fallback time zone when no schedule inbox availability is set * @return {AppointmentConfig} Default appointment config instance */ static createDefault(targetCalendarUri, scheduleInbox, timezoneId) { let slots = (0,_nextcloud_calendar_availability_vue__WEBPACK_IMPORTED_MODULE_1__.getEmptySlots)(); if (scheduleInbox && scheduleInbox.availability) { var _converted$timezoneId; const converted = (0,_nextcloud_calendar_availability_vue__WEBPACK_IMPORTED_MODULE_1__.vavailabilityToSlots)(scheduleInbox.availability); slots = converted.slots; timezoneId = (_converted$timezoneId = converted.timezoneId) !== null && _converted$timezoneId !== void 0 ? _converted$timezoneId : timezoneId; } else { // Set default availability to Mo-Fr 9-5 const tsAtTime = (hours, minutes) => Math.round(new Date().setHours(hours, minutes, 0, 0) / 1000); ['MO', 'TU', 'WE', 'TH', 'FR'].forEach(day => slots[day].push({ start: tsAtTime(9, 0), end: tsAtTime(17, 0) })); } return new AppointmentConfig({ name: '', description: '', location: '', targetCalendarUri, availability: { timezoneId, slots }, visibility: 'PRIVATE', length: 5 * 60, increment: 15 * 60, preparationDuration: 0, followupDuration: 0, timeBeforeNextSlot: 0, calendarFreeBusyUris: [], futureLimit: 2 * 30 * 24 * 60 * 60 // 2 months }); } /** * Clone this instance * * @return {AppointmentConfig} A cloned version of this instance */ clone() { return AppointmentConfig.fromJSON(JSON.stringify(this)); } /** * Parse a JSON string into a new AppointmentConfig instance * * @param {string} jsonString The JSON string to parse * @return {AppointmentConfig} New instance parsed from given JSON string */ static fromJSON(jsonString) { return new AppointmentConfig(JSON.parse(jsonString)); } /** * Get the absolute booking URL of this instance * * @return {string} Absolute URL */ get bookingUrl() { const baseUrl = "".concat(window.location.protocol, "//").concat(window.location.hostname); const relativeUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.generateUrl)('/apps/calendar/appointment/{token}', { token: this.token }); return baseUrl + relativeUrl; } } /** * Try to parse an int from the given value or return undefined * * @param {string|number|null|undefined} value The value to parse * @return {number|undefined} Parsed number or undefined */ function tryParseInt(value) { if (value === null || value === undefined) { return undefined; } return parseInt(value); } /***/ }), /***/ "./src/models/attachment.js": /*!**********************************!*\ !*** ./src/models/attachment.js ***! \**********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultAttachmentObject: () => (/* binding */ getDefaultAttachmentObject), /* harmony export */ mapAttachmentPropertyToAttchmentObject: () => (/* binding */ mapAttachmentPropertyToAttchmentObject) /* harmony export */ }); /** * @copyright Copyright (c) 2022 Mikhail Sazanov * * @author Mikhail Sazanov * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete attachment object based on given props * * @param {object} props The attachment properties already provided * @return {object} */ const getDefaultAttachmentObject = function () { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({}, { // The calendar-js attachment property attachmentProperty: null, // The file name of the attachment fileName: null, // The attachment mime type formatType: null, // The uri of the attachment uri: null, // The value from calendar object value: null, // Preview of file xNcHasPreview: null, // File id in NC xNcFileId: null }, props); }; /** * Maps a calendar-js attachment property to our attachment object * * @param {attachmentProperty} attachmentProperty The calendar-js attachmentProperty to turn into a attachment object * @return {object} */ const mapAttachmentPropertyToAttchmentObject = attachmentProperty => { return getDefaultAttachmentObject({ attachmentProperty, fileName: attachmentProperty.getParameterFirstValue('FILENAME'), formatType: attachmentProperty.formatType, uri: attachmentProperty.uri, value: attachmentProperty.value, xNcHasPreview: attachmentProperty.getParameterFirstValue('X-NC-HAS-PREVIEW') === 'true', xNcFileId: attachmentProperty.getParameterFirstValue('X-NC-FILE-ID') }); }; /***/ }), /***/ "./src/models/attendee.js": /*!********************************!*\ !*** ./src/models/attendee.js ***! \********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultAttendeeObject: () => (/* binding */ getDefaultAttendeeObject), /* harmony export */ mapAttendeePropertyToAttendeeObject: () => (/* binding */ mapAttendeePropertyToAttendeeObject) /* harmony export */ }); /** * @copyright Copyright (c) 2020 Georg Ehrke * @copyright Copyright (c) 2023 Jonas Heinrich * * @author Georg Ehrke * @author Jonas Heinrich * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete attendee object based on given props * * TODO: * - we should eventually support delegatedFrom and delegatedTo * * @param {object} props The attendee properties already provided * @return {object} */ const getDefaultAttendeeObject = function () { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({}, { // The calendar-js attendee property attendeeProperty: null, // The display-name of the attendee commonName: null, // The calendar-user-type of the attendee calendarUserType: 'INDIVIDUAL', // The participation status of the attendee participationStatus: 'NEEDS-ACTION', // The role of the attendee role: 'REQ-PARTICIPANT', // The RSVP for the attendee rsvp: false, // The uri of the attendee uri: null, // Member address of the attendee member: null }, props); }; /** * Maps a calendar-js attendee property to our attendee object * * @param {AttendeeProperty} attendeeProperty The calendar-js attendeeProperty to turn into a attendee object * @return {object} */ const mapAttendeePropertyToAttendeeObject = attendeeProperty => { return getDefaultAttendeeObject({ attendeeProperty, commonName: attendeeProperty.commonName, calendarUserType: attendeeProperty.userType, participationStatus: attendeeProperty.participationStatus, role: attendeeProperty.role, rsvp: attendeeProperty.rsvp, uri: attendeeProperty.email, member: attendeeProperty.member }); }; /***/ }), /***/ "./src/models/calendar.js": /*!********************************!*\ !*** ./src/models/calendar.js ***! \********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultCalendarObject: () => (/* binding */ getDefaultCalendarObject), /* harmony export */ mapDavCollectionToCalendar: () => (/* binding */ mapDavCollectionToCalendar) /* harmony export */ }); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var _calendarShare_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./calendarShare.js */ "./src/models/calendarShare.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete calendar-object based on given props * * @param {object} props Calendar-props already provided * @return {object} */ const getDefaultCalendarObject = function () { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({}, { // Id of the calendar id: '', // Visible display name displayName: '', // Color of the calendar color: (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_0__.uidToHexColor)(''), // Whether or not the calendar is visible in the grid enabled: true, // Whether or not the calendar is loading events at the moment loading: false, // Whether this calendar supports VEvents supportsEvents: true, // Whether this calendar supports VJournals supportsJournals: false, // Whether this calendar supports VTodos supportsTasks: false, // The principal uri of the owner owner: '', // Timezone set for this calendar timezone: null, // List of shares shares: [], // Published url publishURL: null, // Internal CalDAV url of this calendar url: '', // Whether this calendar is read-only readOnly: false, // The order of this calendar in the calendar-list order: 0, // Whether or not the calendar is shared with me isSharedWithMe: false, // Whether or not the calendar can be shared by me canBeShared: false, // Whether or not the calendar can be published by me canBePublished: false, // Reference to cdav-lib object dav: false, // All calendar-objects from this calendar that have already been fetched calendarObjects: [], // Time-ranges that have already been fetched for this calendar fetchedTimeRanges: [] }, props); }; /** * Map a dav collection to our calendar object model * * @param {object} calendar The calendar object from the cdav library * @param {object=} currentUserPrincipal The principal model of the current user principal * @return {object} */ const mapDavCollectionToCalendar = (calendar, currentUserPrincipal) => { const id = btoa(calendar.url); const displayName = calendar.displayname || getCalendarUriFromUrl(calendar.url); // calendar.color can be set to anything on the server, // so make sure it's something that remotely looks like a color let color = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_0__.detectColor)(calendar.color); if (!color) { // As fallback if we don't know what color that is supposed to be color = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_0__.uidToHexColor)(displayName); } const supportsEvents = calendar.components.includes('VEVENT'); const supportsJournals = calendar.components.includes('VJOURNAL'); const supportsTasks = calendar.components.includes('VTODO'); const owner = calendar.owner; const readOnly = !calendar.isWriteable(); const canBeShared = calendar.isShareable(); const canBePublished = calendar.isPublishable(); const order = calendar.order || 0; const url = calendar.url; const publishURL = calendar.publishURL || null; const timezone = calendar.timezone || null; let isSharedWithMe = false; if (!currentUserPrincipal) { // If the user is not authenticated, the calendar // will always be marked as shared with them isSharedWithMe = true; } else { isSharedWithMe = owner !== currentUserPrincipal.url; } let enabled; if (!currentUserPrincipal) { // If the user is not authenticated, // always enable the calendar enabled = true; } else if (typeof calendar.enabled === 'boolean') { // If calendar-enabled is set, we will just take that enabled = calendar.enabled; } else { // If there is no calendar-enabled, // we will display the calendar by default and set enabled enabled = true; calendar.enabled = true; } const shares = []; if (!!currentUserPrincipal && Array.isArray(calendar.shares)) { for (const share of calendar.shares) { if (share.href === currentUserPrincipal.principalScheme) { continue; } shares.push((0,_calendarShare_js__WEBPACK_IMPORTED_MODULE_1__.mapDavShareeToCalendarShareObject)(share)); } } return getDefaultCalendarObject({ id, displayName, color, order, url, enabled, supportsEvents, supportsJournals, supportsTasks, isSharedWithMe, owner, readOnly, publishURL, canBeShared, canBePublished, shares, timezone, dav: calendar }); }; /** * Gets the calendar uri from the url * * @param {string} url The url to get calendar uri from * @return {string} */ function getCalendarUriFromUrl(url) { if (url.endsWith('/')) { url = url.substring(0, url.length - 1); } return url.substring(url.lastIndexOf('/') + 1); } /***/ }), /***/ "./src/models/calendarObject.js": /*!**************************************!*\ !*** ./src/models/calendarObject.js ***! \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultCalendarObjectObject: () => (/* binding */ getDefaultCalendarObjectObject), /* harmony export */ getKeyValueIcsProperty: () => (/* binding */ getKeyValueIcsProperty), /* harmony export */ mapCDavObjectToCalendarObject: () => (/* binding */ mapCDavObjectToCalendarObject), /* harmony export */ mapCalendarJsToCalendarObject: () => (/* binding */ mapCalendarJsToCalendarObject), /* harmony export */ setCustomKeyValueToIcsAndReturnIcs: () => (/* binding */ setCustomKeyValueToIcsAndReturnIcs), /* harmony export */ setCustomKeyValuesArrayToIcsAndReturnIcs: () => (/* binding */ setCustomKeyValuesArrayToIcsAndReturnIcs) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _consts_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./consts.js */ "./src/models/consts.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete calendar-object-object based on given props * * @param {object} props Calendar-object-props already provided * @return {object} */ const getDefaultCalendarObjectObject = function () { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({}, { // Id of this calendar-object id: null, // Id of the associated calendar calendarId: null, // The cdav-library object storing the calendar-object dav: null, // The parsed calendar-js object calendarComponent: null, // The uid of the calendar-object uid: null, // The uri of the calendar-object uri: null, // The type of calendar-object objectType: null, // Whether or not the calendar-object is an event isEvent: false, // Whether or not the calendar-object is a journal isJournal: false, // Whether or not the calendar-object is a task isTodo: false, // Whether or not the calendar-object exists on the server existsOnServer: false }, props); }; /** * Maps a calendar-object from c-dav to our calendar-object object * * @param {VObject} dav The c-dav VObject * @param {string} calendarId The calendar-id this object is associated with * @return {object} */ const mapCDavObjectToCalendarObject = (dav, calendarId) => { const parserManager = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.getParserManager)(); const parser = parserManager.getParserForFileType('text/calendar'); // This should not be the case, but let's just be on the safe side if (typeof dav.data !== 'string' || dav.data.trim() === '') { throw new Error('Empty calendar object'); } parser.parse(dav.data); const calendarComponentIterator = parser.getItemIterator(); const calendarComponent = calendarComponentIterator.next().value; if (!calendarComponent) { throw new Error('Empty calendar object'); } const vObjectIterator = calendarComponent.getVObjectIterator(); const firstVObject = vObjectIterator.next().value; return getDefaultCalendarObjectObject({ id: btoa(dav.url), calendarId, dav, calendarComponent, uid: firstVObject.uid, uri: dav.url, objectType: firstVObject.name, isEvent: firstVObject.name === _consts_js__WEBPACK_IMPORTED_MODULE_1__.COMPONENT_NAME_EVENT, isJournal: firstVObject.name === _consts_js__WEBPACK_IMPORTED_MODULE_1__.COMPONENT_NAME_JOURNAL, isTodo: firstVObject.name === _consts_js__WEBPACK_IMPORTED_MODULE_1__.COMPONENT_NAME_VTODO, existsOnServer: true }); }; /** * Maps a calendar-component from calendar-js to our calendar-object object * * @param {CalendarComponent} calendarComponent The calendarComponent to create the calendarObject from * @param {string=} calendarId The associated calendar if applicable * @return {object} */ const mapCalendarJsToCalendarObject = function (calendarComponent) { let calendarId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; const vObjectIterator = calendarComponent.getVObjectIterator(); const firstVObject = vObjectIterator.next().value; if (!firstVObject) { throw new Error('Calendar object without vobjects'); } return getDefaultCalendarObjectObject({ calendarId, calendarComponent, uid: firstVObject.uid, objectType: firstVObject.name, isEvent: firstVObject.name === _consts_js__WEBPACK_IMPORTED_MODULE_1__.COMPONENT_NAME_EVENT, isJournal: firstVObject.name === _consts_js__WEBPACK_IMPORTED_MODULE_1__.COMPONENT_NAME_JOURNAL, isTodo: firstVObject.name === _consts_js__WEBPACK_IMPORTED_MODULE_1__.COMPONENT_NAME_VTODO }); }; const getKeyValueIcsProperty = (key, value) => { return "".concat(key, ":").concat(value, "\r\n"); }; const setCustomKeyValueToIcsAndReturnIcs = (ics, key, value) => { const property = getKeyValueIcsProperty(key, value); ics = ics.replace('END:VEVENT', "".concat(property, "END:VEVENT")); return ics; }; const setCustomKeyValuesArrayToIcsAndReturnIcs = (ics, keyValueArray) => { for (var key in keyValueArray) { const value = keyValueArray[key] ? keyValueArray[key] : ''; ics = setCustomKeyValueToIcsAndReturnIcs(ics, key, value); } return ics; }; /***/ }), /***/ "./src/models/calendarShare.js": /*!*************************************!*\ !*** ./src/models/calendarShare.js ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultCalendarShareObject: () => (/* binding */ getDefaultCalendarShareObject), /* harmony export */ mapDavShareeToCalendarShareObject: () => (/* binding */ mapDavShareeToCalendarShareObject) /* harmony export */ }); /* harmony import */ var _consts_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts.js */ "./src/models/consts.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete calendar-share-object based on given props * * @param {object} props Calendar-share-props already provided * @return {object} */ const getDefaultCalendarShareObject = function () { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({}, { // Unique identifier id: null, // Displayname of the sharee displayName: null, // Whether or not share is writable writeable: false, // Whether or not sharee is an individual user isUser: false, // Whether or not sharee is an admin-defined group isGroup: false, // Whether or not sharee is a user-defined group isCircle: false, // Uri necessary for deleting / updating share uri: null }, props); }; /** * Map a dav collection to our calendar object model * * @param {object} sharee The sharee object from the cdav library shares * @return {object} */ const mapDavShareeToCalendarShareObject = sharee => { // sharee.href might contain non-latin characters, so let's uri encode it first const id = btoa(encodeURI(sharee.href)); let displayName; if (sharee['common-name'] && sharee['common-name'].trim() !== '') { displayName = sharee['common-name']; } else if (sharee.href.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_GROUP)) { displayName = decodeURIComponent(sharee.href.slice(28)); } else if (sharee.href.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_USER)) { displayName = decodeURIComponent(sharee.href.slice(27)); } else { displayName = sharee.href; } const writeable = sharee.access[0].endsWith('read-write'); const isUser = sharee.href.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_USER); const isGroup = sharee.href.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_GROUP); const isCircle = sharee.href.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_CIRCLE); const uri = sharee.href; return getDefaultCalendarShareObject({ id, displayName, writeable, isUser, isGroup, isCircle, uri }); }; /***/ }), /***/ "./src/models/consts.js": /*!******************************!*\ !*** ./src/models/consts.js ***! \******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ CALDAV_BIRTHDAY_CALENDAR: () => (/* binding */ CALDAV_BIRTHDAY_CALENDAR), /* harmony export */ COMPONENT_NAME_EVENT: () => (/* binding */ COMPONENT_NAME_EVENT), /* harmony export */ COMPONENT_NAME_JOURNAL: () => (/* binding */ COMPONENT_NAME_JOURNAL), /* harmony export */ COMPONENT_NAME_VTODO: () => (/* binding */ COMPONENT_NAME_VTODO), /* harmony export */ IMPORT_STAGE_AWAITING_USER_SELECT: () => (/* binding */ IMPORT_STAGE_AWAITING_USER_SELECT), /* harmony export */ IMPORT_STAGE_DEFAULT: () => (/* binding */ IMPORT_STAGE_DEFAULT), /* harmony export */ IMPORT_STAGE_IMPORTING: () => (/* binding */ IMPORT_STAGE_IMPORTING), /* harmony export */ IMPORT_STAGE_PROCESSING: () => (/* binding */ IMPORT_STAGE_PROCESSING), /* harmony export */ ITIP_MESSAGE_ADD: () => (/* binding */ ITIP_MESSAGE_ADD), /* harmony export */ ITIP_MESSAGE_CANCEL: () => (/* binding */ ITIP_MESSAGE_CANCEL), /* harmony export */ ITIP_MESSAGE_COUNTER: () => (/* binding */ ITIP_MESSAGE_COUNTER), /* harmony export */ ITIP_MESSAGE_DECLINECOUNTER: () => (/* binding */ ITIP_MESSAGE_DECLINECOUNTER), /* harmony export */ ITIP_MESSAGE_PUBLISH: () => (/* binding */ ITIP_MESSAGE_PUBLISH), /* harmony export */ ITIP_MESSAGE_REFRESH: () => (/* binding */ ITIP_MESSAGE_REFRESH), /* harmony export */ ITIP_MESSAGE_REPLY: () => (/* binding */ ITIP_MESSAGE_REPLY), /* harmony export */ ITIP_MESSAGE_REQUEST: () => (/* binding */ ITIP_MESSAGE_REQUEST), /* harmony export */ PRINCIPAL_PREFIX_CALENDAR_RESOURCE: () => (/* binding */ PRINCIPAL_PREFIX_CALENDAR_RESOURCE), /* harmony export */ PRINCIPAL_PREFIX_CALENDAR_ROOM: () => (/* binding */ PRINCIPAL_PREFIX_CALENDAR_ROOM), /* harmony export */ PRINCIPAL_PREFIX_CIRCLE: () => (/* binding */ PRINCIPAL_PREFIX_CIRCLE), /* harmony export */ PRINCIPAL_PREFIX_GROUP: () => (/* binding */ PRINCIPAL_PREFIX_GROUP), /* harmony export */ PRINCIPAL_PREFIX_USER: () => (/* binding */ PRINCIPAL_PREFIX_USER) /* harmony export */ }); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const COMPONENT_NAME_EVENT = 'VEVENT'; const COMPONENT_NAME_JOURNAL = 'VJOURNAL'; const COMPONENT_NAME_VTODO = 'VTODO'; const ITIP_MESSAGE_ADD = 'ADD'; const ITIP_MESSAGE_CANCEL = 'CANCEL'; const ITIP_MESSAGE_COUNTER = 'COUNTER'; const ITIP_MESSAGE_DECLINECOUNTER = 'DECLINECOUNTER'; const ITIP_MESSAGE_PUBLISH = 'PUBLISH'; const ITIP_MESSAGE_REFRESH = 'REFRESH'; const ITIP_MESSAGE_REPLY = 'REPLY'; const ITIP_MESSAGE_REQUEST = 'REQUEST'; const PRINCIPAL_PREFIX_USER = 'principal:principals/users/'; const PRINCIPAL_PREFIX_GROUP = 'principal:principals/groups/'; const PRINCIPAL_PREFIX_CIRCLE = 'principal:principals/circles/'; const PRINCIPAL_PREFIX_CALENDAR_RESOURCE = 'principal:principals/calendar-resources/'; const PRINCIPAL_PREFIX_CALENDAR_ROOM = 'principal:principals/calendar-rooms/'; const CALDAV_BIRTHDAY_CALENDAR = 'contact_birthdays'; const IMPORT_STAGE_DEFAULT = 'default'; const IMPORT_STAGE_IMPORTING = 'importing'; const IMPORT_STAGE_AWAITING_USER_SELECT = 'awaitingUserSelect'; const IMPORT_STAGE_PROCESSING = 'processing'; /***/ }), /***/ "./src/models/event.js": /*!*****************************!*\ !*** ./src/models/event.js ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ copyCalendarObjectInstanceIntoEventComponent: () => (/* binding */ copyCalendarObjectInstanceIntoEventComponent), /* harmony export */ getDefaultEventObject: () => (/* binding */ getDefaultEventObject), /* harmony export */ mapEventComponentToEventObject: () => (/* binding */ mapEventComponentToEventObject) /* harmony export */ }); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var _alarm_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./alarm.js */ "./src/models/alarm.js"); /* harmony import */ var _attendee_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./attendee.js */ "./src/models/attendee.js"); /* harmony import */ var _attachment_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./attachment.js */ "./src/models/attachment.js"); /* harmony import */ var _recurrenceRule_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./recurrenceRule.js */ "./src/models/recurrenceRule.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete calendar-object-instance-object based on given props * * @param {object} props The props already provided * @return {object} */ const getDefaultEventObject = function () { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({}, { // The real event-component coming from calendar-js eventComponent: null, // Title of the event title: null, // Start date of the event startDate: null, // Timezone of the start date startTimezoneId: null, // End date of the event endDate: null, // Timezone of the end date endTimezoneId: null, // Indicator whether or not event is all-day isAllDay: false, //leave isLeave: false, //calendarPending isCalendarPending: false, // Whether or not the user is allowed to toggle the all-day checkbox canModifyAllDay: true, // Location that the event takes places in location: null, //client of the event client: null, //embalmer(Thanato) of the event embalmer: null, //comment of the event comment: null, // description of the event description: null, // Access class of the event (PUBLIC, PRIVATE, CONFIDENTIAL) accessClass: null, // Status of the event (CONFIRMED, TENTATIVE, CANCELLED) status: null, // Whether or not to block this event in Free-Busy reports (TRANSPARENT, OPAQUE) timeTransparency: null, // The recurrence rule of this event. We only support one recurrence-rule recurrenceRule: (0,_recurrenceRule_js__WEBPACK_IMPORTED_MODULE_6__.getDefaultRecurrenceRuleObject)(), // Whether or not this event has multiple recurrence-rules hasMultipleRRules: false, // Whether or not this is the master item isMasterItem: false, // Whether or not this is a recurrence-exception isRecurrenceException: false, // Whether or not the applied modifications require to update this and all future forceThisAndAllFuture: false, // Whether or not it's possible to create a recurrence-exception for this event canCreateRecurrenceException: false, // Attendees of this event attendees: [], // Organizer of the event organizer: null, // Alarm of the event alarms: [], // Custom color of the event customColor: null, // Categories categories: [], // Attachments of this event attachments: [] }, props); }; /** * * @param {EventComponent} eventComponent The calendar-js eventComponent * @return {object} */ const mapEventComponentToEventObject = eventComponent => { const eventObject = getDefaultEventObject({ eventComponent, title: eventComponent.title, isAllDay: eventComponent.isAllDay(), isLeave: false, isCalendarPending: false, canModifyAllDay: eventComponent.canModifyAllDay(), location: eventComponent.location, client: "CLIENT", embalmer: "TEST", comment: "", description: eventComponent.description, accessClass: eventComponent.accessClass, status: eventComponent.status, timeTransparency: eventComponent.timeTransparency, categories: Array.from(eventComponent.getCategoryIterator()), isMasterItem: eventComponent.isMasterItem(), isRecurrenceException: eventComponent.isRecurrenceException(), canCreateRecurrenceException: eventComponent.canCreateRecurrenceExceptions() }); /** * According to RFC5545, DTEND is exclusive. This is rather intuitive for timed-events * but rather unintuitive for all-day events * * That's why, when an event is all-day from 2019-10-03 to 2019-10-04, * it will be displayed as 2019-10-03 to 2019-10-03 in the editor. */ eventObject.startDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getDateFromDateTimeValue)(eventComponent.startDate); eventObject.startTimezoneId = eventComponent.startDate.timezoneId; if (eventComponent.isAllDay()) { const endDate = eventComponent.endDate.clone(); endDate.addDuration(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__.DurationValue.fromSeconds(-1 * 60 * 60 * 24)); eventObject.endDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getDateFromDateTimeValue)(endDate); } else { eventObject.endDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_0__.getDateFromDateTimeValue)(eventComponent.endDate); } eventObject.endTimezoneId = eventComponent.endDate.timezoneId; /** * Extract organizer if there is any */ if (eventComponent.organizer) { const organizerProperty = eventComponent.getFirstProperty('ORGANIZER'); eventObject.organizer = { commonName: organizerProperty.commonName, uri: organizerProperty.email, attendeeProperty: organizerProperty }; } /** * Extract alarms */ for (const alarm of eventComponent.getAlarmIterator()) { eventObject.alarms.push((0,_alarm_js__WEBPACK_IMPORTED_MODULE_3__.mapAlarmComponentToAlarmObject)(alarm)); } /** * Extract attendees */ for (const attendee of eventComponent.getAttendeeIterator()) { eventObject.attendees.push((0,_attendee_js__WEBPACK_IMPORTED_MODULE_4__.mapAttendeePropertyToAttendeeObject)(attendee)); } /** * Extract attachments */ for (const attachment of eventComponent.getPropertyIterator('ATTACH')) { eventObject.attachments.push((0,_attachment_js__WEBPACK_IMPORTED_MODULE_5__.mapAttachmentPropertyToAttchmentObject)(attachment)); } /** * Extract recurrence-rule */ const recurrenceRuleIterator = eventComponent.getPropertyIterator('RRULE'); const recurrenceRuleFirstIteration = recurrenceRuleIterator.next(); const firstRecurrenceRule = recurrenceRuleFirstIteration.value; if (firstRecurrenceRule) { eventObject.recurrenceRule = (0,_recurrenceRule_js__WEBPACK_IMPORTED_MODULE_6__.mapRecurrenceRuleValueToRecurrenceRuleObject)(firstRecurrenceRule.getFirstValue(), eventComponent.startDate); eventObject.hasMultipleRRules = !recurrenceRuleIterator.next().done; } /** * Convert the CSS 3 color name to a hex color */ if (eventComponent.hasProperty('COLOR')) { const hexColor = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_2__.getHexForColorName)(eventComponent.getFirstPropertyFirstValue('COLOR')); if (hexColor !== null) { eventObject.customColor = hexColor; } } if (eventComponent.hasProperty('CLIENT')) { eventObject.client = eventComponent.getFirstPropertyFirstValue('CLIENT'); } if (eventComponent.hasProperty('EMBALMER')) { eventObject.embalmer = eventComponent.getFirstPropertyFirstValue('EMBALMER'); } if (eventComponent.hasProperty('COMMENT')) { eventObject.comment = eventComponent.getFirstPropertyFirstValue('COMMENT'); } if (eventComponent.hasProperty('ISLEAVE')) { eventObject.isLeave = eventComponent.getFirstPropertyFirstValue('ISLEAVE') === '1' ? true : false; } if (eventComponent.hasProperty('ISCALENDARPENDING')) { eventObject.isCalendarPending = eventComponent.getFirstPropertyFirstValue('ISCALENDARPENDING') === '1' ? true : false; } return eventObject; }; /** * Copy data from a calendar-object-instance into a calendar-js event-component * * @param {object} eventObject The calendar-object-instance object * @param {EventComponent} eventComponent The calendar-js EventComponent object */ const copyCalendarObjectInstanceIntoEventComponent = (eventObject, eventComponent) => { eventComponent.title = eventObject.title; eventComponent.location = eventObject.location; eventComponent.client = eventObject.client; eventComponent.embalmer = eventObject.embalmer; eventComponent.isLeave = eventObject.isLeave; eventComponent.isCalendarPending = eventObject.isCalendarPending; eventComponent.comment = eventObject.comment; eventComponent.description = eventObject.description; eventComponent.accessClass = eventObject.accessClass; eventComponent.status = eventObject.status; eventComponent.timeTransparency = eventObject.timeTransparency; for (const category of eventObject.categories) { eventComponent.addCategory(category); } if (eventObject.organizer) { eventComponent.setOrganizerFromNameAndEMail(eventObject.organizer.commonName, eventObject.organizer.uri); } for (const alarm of eventObject.alarms) { if (alarm.isRelative) { const duration = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__.DurationValue.fromSeconds(alarm.relativeTrigger); eventComponent.addRelativeAlarm(alarm.type, duration, alarm.relativeIsRelatedToStart); } else { const date = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_1__.DateTimeValue.fromJSDate(alarm.absoluteDate); eventComponent.addAbsoluteAlarm(alarm.type, date); } } for (const attendee of eventObject.attendees) { eventComponent.addProperty(attendee.attendeeProperty); } for (const rule of eventObject.eventComponent.getPropertyIterator('RRULE')) { eventComponent.addProperty(rule); } if (eventObject.customColor) { eventComponent.color = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_2__.getClosestCSS3ColorNameForHex)(eventObject.customColor); } }; /***/ }), /***/ "./src/models/principal.js": /*!*********************************!*\ !*** ./src/models/principal.js ***! \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultPrincipalObject: () => (/* binding */ getDefaultPrincipalObject), /* harmony export */ mapDavToPrincipal: () => (/* binding */ mapDavToPrincipal) /* harmony export */ }); /* harmony import */ var _consts_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./consts.js */ "./src/models/consts.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete principal-object based on given props * * @param {object} props Principal-props already provided * @return {any} */ const getDefaultPrincipalObject = props => Object.assign({}, { // Id of the principal id: null, // Calendar-user-type. This can be INDIVIDUAL, GROUP, RESOURCE or ROOM calendarUserType: 'INDIVIDUAL', // E-Mail address of principal used for scheduling emailAddress: null, // The principals display-name // TODO: this should be renamed to displayName displayname: null, // principalScheme principalScheme: null, // The internal user-id in case it is of type INDIVIDUAL and a user // TODO: userId is deprecrated, use principalId instead userId: null, // url to the DAV-principal-resource url: null, // The cdav-library object dav: null, // Whether or not this principal represents a circle isCircle: false, // Whether or not this principal represents a user isUser: false, // Whether or not this principal represents a group isGroup: false, // Whether or not this principal represents a calendar-resource isCalendarResource: false, // Whether or not this principal represents a calendar-room isCalendarRoom: false, // The id of the principal without prefix. e.g. userId / groupId / etc. principalId: null, // The url of the default calendar for invitations scheduleDefaultCalendarUrl: null }, props); /** * converts a dav principal into a vuex object * * @param {object} dav cdav-library Principal object * @return {object} */ const mapDavToPrincipal = dav => { const id = btoa(encodeURI(dav.url)); const calendarUserType = dav.calendarUserType; const principalScheme = dav.principalScheme; const emailAddress = dav.email; const displayname = dav.displayname; const scheduleDefaultCalendarUrl = dav.scheduleDefaultCalendarUrl; const isUser = dav.principalScheme.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_USER); const isGroup = dav.principalScheme.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_GROUP); const isCircle = dav.principalScheme.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_CIRCLE); const isCalendarResource = dav.principalScheme.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_CALENDAR_RESOURCE); const isCalendarRoom = dav.principalScheme.startsWith(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_CALENDAR_ROOM); let principalId = null; if (isUser) { principalId = dav.principalScheme.substring(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_USER.length); } else if (isGroup) { principalId = dav.principalScheme.substring(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_GROUP.length); } else if (isCircle) { principalId = dav.principalScheme.substring(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_CIRCLE.length); } else if (isCalendarResource) { principalId = dav.principalScheme.substring(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_CALENDAR_RESOURCE.length); } else if (isCalendarRoom) { principalId = dav.principalScheme.substring(_consts_js__WEBPACK_IMPORTED_MODULE_0__.PRINCIPAL_PREFIX_CALENDAR_ROOM.length); } const url = dav.principalUrl; const userId = dav.userId; return getDefaultPrincipalObject({ id, calendarUserType, principalScheme, emailAddress, displayname, url, dav, isUser, isGroup, isCircle, isCalendarResource, isCalendarRoom, principalId, userId, scheduleDefaultCalendarUrl }); }; /***/ }), /***/ "./src/models/recurrenceRule.js": /*!**************************************!*\ !*** ./src/models/recurrenceRule.js ***! \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultRecurrenceRuleObject: () => (/* binding */ getDefaultRecurrenceRuleObject), /* harmony export */ mapRecurrenceRuleValueToRecurrenceRuleObject: () => (/* binding */ mapRecurrenceRuleValueToRecurrenceRuleObject) /* harmony export */ }); /* harmony import */ var _utils_recurrence_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/recurrence.js */ "./src/utils/recurrence.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a complete recurrence-rule-object based on given props * * @param {object} props Recurrence-rule-object-props already provided * @return {object} */ const getDefaultRecurrenceRuleObject = function () { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return Object.assign({}, { // The calendar-js recurrence-rule value recurrenceRuleValue: null, // The frequency of the recurrence-rule (DAILY, WEEKLY, ...) frequency: 'NONE', // The interval of the recurrence-rule, must be a positive integer interval: 1, // Positive integer if recurrence-rule limited by count, null otherwise count: null, // Date if recurrence-rule limited by date, null otherwise // We do not store a timezone here, since we only care about the date part until: null, // List of byDay components to limit/expand the recurrence-rule byDay: [], // List of byMonth components to limit/expand the recurrence-rule byMonth: [], // List of byMonthDay components to limit/expand the recurrence-rule byMonthDay: [], // A position to limit the recurrence-rule (e.g. -1 for last Friday) bySetPosition: null, // Whether or not the rule is not supported for editing isUnsupported: false }, props); }; /** * Maps a calendar-js recurrence-rule-value to an recurrence-rule-object * * @param {RecurValue} recurrenceRuleValue The calendar-js recurrence rule value * @param {DateTimeValue} baseDate The base-date used to fill unset values * @return {object} */ const mapRecurrenceRuleValueToRecurrenceRuleObject = (recurrenceRuleValue, baseDate) => { switch (recurrenceRuleValue.frequency) { case 'DAILY': return mapDailyRuleValueToRecurrenceRuleObject(recurrenceRuleValue); case 'WEEKLY': return mapWeeklyRuleValueToRecurrenceRuleObject(recurrenceRuleValue, baseDate); case 'MONTHLY': return mapMonthlyRuleValueToRecurrenceRuleObject(recurrenceRuleValue, baseDate); case 'YEARLY': return mapYearlyRuleValueToRecurrenceRuleObject(recurrenceRuleValue, baseDate); default: // SECONDLY, MINUTELY, HOURLY return getDefaultRecurrenceRuleObjectForRecurrenceValue(recurrenceRuleValue, { isUnsupported: true }); } }; const FORBIDDEN_BY_PARTS_DAILY = ['BYSECOND', 'BYMINUTE', 'BYHOUR', 'BYDAY', 'BYMONTHDAY', 'BYYEARDAY', 'BYWEEKNO', 'BYMONTH', 'BYSETPOS']; const FORBIDDEN_BY_PARTS_WEEKLY = ['BYSECOND', 'BYMINUTE', 'BYHOUR', 'BYMONTHDAY', 'BYYEARDAY', 'BYWEEKNO', 'BYMONTH', 'BYSETPOS']; const FORBIDDEN_BY_PARTS_MONTHLY = ['BYSECOND', 'BYMINUTE', 'BYHOUR', 'BYYEARDAY', 'BYWEEKNO', 'BYMONTH']; const FORBIDDEN_BY_PARTS_YEARLY = ['BYSECOND', 'BYMINUTE', 'BYHOUR', 'BYMONTHDAY', 'BYYEARDAY', 'BYWEEKNO']; const SUPPORTED_BY_DAY_WEEKLY = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA']; /** * Get all numbers between start and end as strings * * @param {number} start Lower end of range * @param {number} end Upper end of range * @return {string[]} */ const getRangeAsStrings = (start, end) => { return Array.apply(null, Array(end - start + 1)).map((_, n) => n + start).map(s => s.toString()); }; const SUPPORTED_BY_MONTHDAY_MONTHLY = getRangeAsStrings(1, 31); const SUPPORTED_BY_MONTH_YEARLY = getRangeAsStrings(1, 12); /** * Maps a daily calendar-js recurrence-rule-value to an recurrence-rule-object * * @param {RecurValue} recurrenceRuleValue The calendar-js recurrence rule value * @return {object} */ const mapDailyRuleValueToRecurrenceRuleObject = recurrenceRuleValue => { /** * We only support DAILY rules without any by-parts in the editor. * If the recurrence-rule contains any by-parts, mark it as unsupported. */ const isUnsupported = containsRecurrenceComponent(recurrenceRuleValue, FORBIDDEN_BY_PARTS_DAILY); return getDefaultRecurrenceRuleObjectForRecurrenceValue(recurrenceRuleValue, { isUnsupported }); }; /** * Maps a weekly calendar-js recurrence-rule-value to an recurrence-rule-object * * @param {RecurValue} recurrenceRuleValue The calendar-js recurrence rule value * @param {DateTimeValue} baseDate The base-date used to fill unset values * @return {object} */ const mapWeeklyRuleValueToRecurrenceRuleObject = (recurrenceRuleValue, baseDate) => { /** * For WEEKLY recurrences, our editor only allows BYDAY * * As defined in RFC5545 3.3.10. Recurrence Rule: * > Each BYDAY value can also be preceded by a positive (+n) or * > negative (-n) integer. If present, this indicates the nth * > occurrence of a specific day within the MONTHLY or YEARLY "RRULE". * * RFC 5545 specifies other components, which can be used along WEEKLY. * Among them are BYMONTH and BYSETPOS. We don't support those. */ const containsUnsupportedByParts = containsRecurrenceComponent(recurrenceRuleValue, FORBIDDEN_BY_PARTS_WEEKLY); const containsInvalidByDayPart = recurrenceRuleValue.getComponent('BYDAY').some(weekday => !SUPPORTED_BY_DAY_WEEKLY.includes(weekday)); const isUnsupported = containsUnsupportedByParts || containsInvalidByDayPart; const byDay = recurrenceRuleValue.getComponent('BYDAY').filter(weekday => SUPPORTED_BY_DAY_WEEKLY.includes(weekday)); // If the BYDAY is empty, add the day that the event occurs in // E.g. if the event is on a Wednesday, automatically set BYDAY:WE if (byDay.length === 0) { byDay.push((0,_utils_recurrence_js__WEBPACK_IMPORTED_MODULE_0__.getWeekDayFromDate)(baseDate.jsDate)); } return getDefaultRecurrenceRuleObjectForRecurrenceValue(recurrenceRuleValue, { byDay, isUnsupported }); }; /** * Maps a monthly calendar-js recurrence-rule-value to an recurrence-rule-object * * @param {RecurValue} recurrenceRuleValue The calendar-js recurrence rule value * @param {DateTimeValue} baseDate The base-date used to fill unset values * @return {object} */ const mapMonthlyRuleValueToRecurrenceRuleObject = (recurrenceRuleValue, baseDate) => { /** * We only supports BYMONTHDAY, BYDAY, BYSETPOS in order to expand the monthly rule. * It supports either BYMONTHDAY or the combination of BYDAY and BYSETPOS. They have to be used exclusively * and cannot be combined. * * We do not support other BY-parts like BYMONTH * * For monthly recurrence-rules, BYDAY components are allowed to be preceded by positive or negative integers. * The Nextcloud-editor supports at most one BYDAY component with an integer. * If it's presented with such a BYDAY component, it will internally be converted to BYDAY without integer and BYSETPOS. * e.g. * BYDAY=3WE => BYDAY=WE,BYSETPOS=3 * * BYSETPOS is limited to -2, -1, 1, 2, 3, 4, 5 * Other values are not supported * * BYDAY is limited to "MO", "TU", "WE", "TH", "FR", "SA", "SU", * "MO,TU,WE,TH,FR,SA,SU", "MO,TU,WE,TH,FR", "SA,SU" * * BYMONTHDAY is limited to "1", "2", ..., "31" */ let isUnsupported = containsRecurrenceComponent(recurrenceRuleValue, FORBIDDEN_BY_PARTS_MONTHLY); let byDay = []; let bySetPosition = null; let byMonthDay = []; // This handles the first case, where we have a BYMONTHDAY rule if (containsRecurrenceComponent(recurrenceRuleValue, ['BYMONTHDAY'])) { // verify there is no BYDAY or BYSETPOS at the same time if (containsRecurrenceComponent(recurrenceRuleValue, ['BYDAY', 'BYSETPOS'])) { isUnsupported = true; } const containsInvalidByMonthDay = recurrenceRuleValue.getComponent('BYMONTHDAY').some(monthDay => !SUPPORTED_BY_MONTHDAY_MONTHLY.includes(monthDay.toString())); isUnsupported = isUnsupported || containsInvalidByMonthDay; byMonthDay = recurrenceRuleValue.getComponent('BYMONTHDAY').filter(monthDay => SUPPORTED_BY_MONTHDAY_MONTHLY.includes(monthDay.toString())).map(monthDay => monthDay.toString()); // This handles cases where we have both BYDAY and BYSETPOS } else if (containsRecurrenceComponent(recurrenceRuleValue, ['BYDAY']) && containsRecurrenceComponent(recurrenceRuleValue, ['BYSETPOS'])) { if (isAllowedByDay(recurrenceRuleValue.getComponent('BYDAY'))) { byDay = recurrenceRuleValue.getComponent('BYDAY'); } else { byDay = ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']; isUnsupported = true; } const setPositionArray = recurrenceRuleValue.getComponent('BYSETPOS'); if (setPositionArray.length === 1 && isAllowedBySetPos(setPositionArray[0])) { bySetPosition = setPositionArray[0]; } else { bySetPosition = 1; isUnsupported = true; } // This handles cases where we only have a BYDAY } else if (containsRecurrenceComponent(recurrenceRuleValue, ['BYDAY'])) { const byDayArray = recurrenceRuleValue.getComponent('BYDAY'); if (byDayArray.length > 1) { byMonthDay.push(baseDate.day.toString()); isUnsupported = true; } else { const firstElement = byDayArray[0]; const match = /^(-?\d)([A-Z]{2})$/.exec(firstElement); if (match) { const matchedBySetPosition = match[1]; const matchedByDay = match[2]; if (isAllowedBySetPos(matchedBySetPosition)) { byDay = [matchedByDay]; bySetPosition = parseInt(matchedBySetPosition, 10); } else { byDay = [matchedByDay]; bySetPosition = 1; isUnsupported = true; } } else { byMonthDay.push(baseDate.day.toString()); isUnsupported = true; } } // This is a fallback where we just default BYMONTHDAY to the start date of the event } else { byMonthDay.push(baseDate.day.toString()); } return getDefaultRecurrenceRuleObjectForRecurrenceValue(recurrenceRuleValue, { byDay, bySetPosition, byMonthDay, isUnsupported }); }; /** * Maps a yearly calendar-js recurrence-rule-value to an recurrence-rule-object * * @param {RecurValue} recurrenceRuleValue The calendar-js recurrence rule value * @param {DateTimeValue} baseDate The base-date used to fill unset values * @return {object} */ const mapYearlyRuleValueToRecurrenceRuleObject = (recurrenceRuleValue, baseDate) => { /** * We only supports BYMONTH, BYDAY, BYSETPOS in order to expand the yearly rule. * It supports a combination of them. * * We do not support other BY-parts. * * For yearly recurrence-rules, BYDAY components are allowed to be preceded by positive or negative integers. * The Nextcloud-editor supports at most one BYDAY component with an integer. * If it's presented with such a BYDAY component, it will internally be converted to BYDAY without integer and BYSETPOS. * e.g. * BYDAY=3WE => BYDAY=WE,BYSETPOS=3 * * BYSETPOS is limited to -2, -1, 1, 2, 3, 4, 5 * Other values are not supported * * BYDAY is limited to "MO", "TU", "WE", "TH", "FR", "SA", "SU", * "MO,TU,WE,TH,FR,SA,SU", "MO,TU,WE,TH,FR", "SA,SU" */ let isUnsupported = containsRecurrenceComponent(recurrenceRuleValue, FORBIDDEN_BY_PARTS_YEARLY); let byDay = []; let bySetPosition = null; let byMonth = []; if (containsRecurrenceComponent(recurrenceRuleValue, ['BYMONTH'])) { const containsInvalidByMonthDay = recurrenceRuleValue.getComponent('BYMONTH').some(month => !SUPPORTED_BY_MONTH_YEARLY.includes(month.toString())); isUnsupported = isUnsupported || containsInvalidByMonthDay; byMonth = recurrenceRuleValue.getComponent('BYMONTH').filter(monthDay => SUPPORTED_BY_MONTH_YEARLY.includes(monthDay.toString())).map(month => month.toString()); } else { byMonth.push(baseDate.month.toString()); } if (containsRecurrenceComponent(recurrenceRuleValue, ['BYDAY']) && containsRecurrenceComponent(recurrenceRuleValue, ['BYSETPOS'])) { if (isAllowedByDay(recurrenceRuleValue.getComponent('BYDAY'))) { byDay = recurrenceRuleValue.getComponent('BYDAY'); } else { byDay = ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']; isUnsupported = true; } const setPositionArray = recurrenceRuleValue.getComponent('BYSETPOS'); if (setPositionArray.length === 1 && isAllowedBySetPos(setPositionArray[0])) { bySetPosition = setPositionArray[0]; } else { bySetPosition = 1; isUnsupported = true; } } else if (containsRecurrenceComponent(recurrenceRuleValue, ['BYDAY'])) { const byDayArray = recurrenceRuleValue.getComponent('BYDAY'); if (byDayArray.length > 1) { isUnsupported = true; } else { const firstElement = byDayArray[0]; const match = /^(-?\d)([A-Z]{2})$/.exec(firstElement); if (match) { const matchedBySetPosition = match[1]; const matchedByDay = match[2]; if (isAllowedBySetPos(matchedBySetPosition)) { byDay = [matchedByDay]; bySetPosition = parseInt(matchedBySetPosition, 10); } else { byDay = [matchedByDay]; bySetPosition = 1; isUnsupported = true; } } else { isUnsupported = true; } } } return getDefaultRecurrenceRuleObjectForRecurrenceValue(recurrenceRuleValue, { byDay, bySetPosition, byMonth, isUnsupported }); }; /** * Checks if the given parameter is a supported BYDAY value * * @param {string[]} byDay The byDay component to check * @return {boolean} */ const isAllowedByDay = byDay => { return ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU', 'FR,MO,SA,SU,TH,TU,WE', 'FR,MO,TH,TU,WE', 'SA,SU'].includes(byDay.slice().sort().join(',')); }; /** * Checks if the given parameter is a supported BYSETPOS value * * @param {string} bySetPos The bySetPos component to check * @return {boolean} */ const isAllowedBySetPos = bySetPos => { return ['-2', '-1', '1', '2', '3', '4', '5'].includes(bySetPos.toString()); }; /** * Checks if the recurrence-rule contains any of the given components * * @param {RecurValue} recurrenceRule The recurrence-rule value to check for the given components * @param {string[]} components List of components to check for * @return {boolean} */ const containsRecurrenceComponent = (recurrenceRule, components) => { for (const component of components) { const componentValue = recurrenceRule.getComponent(component); if (componentValue.length > 0) { return true; } } return false; }; /** * Returns a full recurrence-rule-object with default values derived from recurrenceRuleValue * and additional props * * @param {RecurValue} recurrenceRuleValue The recurrence-rule value to get default values from * @param {object} props The properties to provide on top of default one * @return {object} */ const getDefaultRecurrenceRuleObjectForRecurrenceValue = (recurrenceRuleValue, props) => { const isUnsupported = recurrenceRuleValue.count !== null && recurrenceRuleValue.until !== null; let isUnsupportedProps = {}; if (isUnsupported) { isUnsupportedProps = { isUnsupported }; } return getDefaultRecurrenceRuleObject(Object.assign({}, { recurrenceRuleValue, frequency: recurrenceRuleValue.frequency, interval: parseInt(recurrenceRuleValue.interval, 10) || 1, count: recurrenceRuleValue.count, until: recurrenceRuleValue.until ? (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(recurrenceRuleValue.until) : null }, props, isUnsupportedProps)); }; /***/ }), /***/ "./src/models/resourceProps.js": /*!*************************************!*\ !*** ./src/models/resourceProps.js ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ formatRoomType: () => (/* binding */ formatRoomType), /* harmony export */ getAllRoomTypes: () => (/* binding */ getAllRoomTypes) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /** * @copyright Copyright (c) 2021 Richard Steinmetz * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Return all supported room types * * @return {{label: string, value: string}[]} List of supported room types */ function getAllRoomTypes() { return [{ value: 'meeting-room', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Meeting room') }, { value: 'lecture-hall', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Lecture hall') }, { value: 'seminar-room', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Seminar room') }, { value: 'other', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Other') }]; } /** * Format room type as a human readable and localized string * * @param {string} value Raw room type * @return {string|null} Human readable and localized room type or null if given raw value is invalid */ function formatRoomType(value) { var _option$label; const option = getAllRoomTypes().find(option => option.value === value); return (_option$label = option === null || option === void 0 ? void 0 : option.label) !== null && _option$label !== void 0 ? _option$label : null; } /***/ }), /***/ "./src/models/rfcProps.js": /*!********************************!*\ !*** ./src/models/rfcProps.js ***! \********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getRFCProperties: () => (/* binding */ getRFCProperties) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _defaults_defaultCategories_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../defaults/defaultCategories.js */ "./src/defaults/defaultCategories.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Gets all supported RFC properties * * @return {{color: {readableName: *, icon: string, multiple: boolean, info: *}, timeTransparency: {readableName: *, defaultValue: string, icon: string, multiple: boolean, options: *[], info: *}, description: {readableName: *, icon: string, placeholder: *, defaultNumberOfRows: number}, location: {readableName: *, icon: string, placeholder: *}, categories: {readableName: *, icon: string, multiple: boolean, options: *, tagPlaceholder: *, placeholder: *, info: *}, accessClass: {readableName: *, defaultValue: string, icon: string, options: *[], multiple: boolean, info: *}, status: {readableName: *, defaultValue: string, icon: string, options: *[], multiple: boolean, info: *}, locations: {readableName: *, defaultValue: string, icon: string, options: *[], multiple: boolean, info: *}, articles: {readableName: *, defaultValue: string, icon: string, options: *[], multiple: boolean, info: *}}} */ const getRFCProperties = () => { return { /** * https://tools.ietf.org/html/rfc5545#section-3.8.1.3 */ accessClass: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'When shared show'), icon: 'Eye', options: [{ value: 'PUBLIC', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'When shared show full event') }, { value: 'CONFIDENTIAL', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'When shared show only busy') }, { value: 'PRIVATE', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'When shared hide this event') }], multiple: false, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'The visibility of this event in shared calendars.'), defaultValue: 'PUBLIC' }, /** * https://tools.ietf.org/html/rfc5545#section-3.8.1.7 */ location: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Location'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir le lieu'), icon: 'MapMarker' }, /** * https://tools.ietf.org/html/rfc5545#section-3.8.1.5 */ description: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Description'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir les soins'), icon: 'TextBoxOutline', defaultNumberOfRows: 2 }, /** * https://tools.ietf.org/html/rfc5545#section-3.8.1.11 */ status: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Status'), icon: 'Check', options: [{ value: 'CONFIRMED', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Confirmed') }, { value: 'TENTATIVE', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Tentative') }, { value: 'CANCELLED', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Canceled') }], multiple: false, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Confirmation about the overall status of the event.'), defaultValue: 'CONFIRMED' }, /** * https://tools.ietf.org/html/rfc5545#section-3.8.2.7 */ timeTransparency: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Show as'), icon: 'Briefcase', multiple: false, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Take this event into account when calculating free-busy information.'), options: [{ value: 'TRANSPARENT', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Free') }, { value: 'OPAQUE', label: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Busy') }], defaultValue: 'TRANSPARENT' }, /** * https://tools.ietf.org/html/rfc5545#section-3.8.1.2 */ categories: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Categories'), icon: 'Tag', multiple: true, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Categories help you to structure and organize your events.'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Search or add categories'), tagPlaceholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Add this as a new category'), options: (0,_defaults_defaultCategories_js__WEBPACK_IMPORTED_MODULE_1__.getDefaultCategories)() }, /** * https://tools.ietf.org/html/rfc7986#section-5.9 */ color: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Custom color'), icon: 'EyedropperVariant', multiple: false, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Special color of this event. Overrides the calendar-color.') }, locations: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Locations'), icon: 'Tag', searchable: true, multiple: false, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir le lieu du soin.'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir un lieu'), tagPlaceholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir un lieu'), options: [] }, clients: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Clients'), icon: 'Human', searchable: true, multiple: false, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir le donneur d\'ordre.'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir un client'), tagPlaceholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir un client'), options: [] }, client: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir un client'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir un client'), icon: 'Human' }, embalmers: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Embalmers'), icon: 'Human', searchable: true, multiple: false, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Thanatopracteur from Gestion'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choose thanatopracteur'), tagPlaceholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choose thanatopracteur'), options: [] }, embalmer: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Embalmer'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Add a thanatopracteur'), icon: 'Human' }, articles: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Articles'), icon: 'TextBoxOutline', searchable: true, multiple: true, info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir les soins à appliquer.'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir les soins'), tagPlaceholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Choisir les soins'), options: [] }, comment: { readableName: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Comment'), icon: 'TextBoxOutline', info: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Commentaires.'), placeholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Commentaires'), tagPlaceholder: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.translate)('calendar', 'Commentaires'), options: [], defaultNumberOfRows: 4 } }; }; /***/ }), /***/ "./src/router.js": /*!***********************!*\ !*** ./src/router.js ***! \***********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _views_Calendar_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./views/Calendar.vue */ "./src/views/Calendar.vue"); /* harmony import */ var _views_EditSimple_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./views/EditSimple.vue */ "./src/views/EditSimple.vue"); /* harmony import */ var _views_EditSidebar_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views/EditSidebar.vue */ "./src/views/EditSidebar.vue"); /* harmony import */ var _utils_router_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/router.js */ "./src/utils/router.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ vue__WEBPACK_IMPORTED_MODULE_5__["default"].use(vue_router__WEBPACK_IMPORTED_MODULE_6__["default"]); const webRootWithIndexPHP = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.getRootUrl)() + '/index.php'; const doesURLContainIndexPHP = window.location.pathname.startsWith(webRootWithIndexPHP); const base = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.generateUrl)('apps/calendar', {}, { noRewrite: doesURLContainIndexPHP }); const router = new vue_router__WEBPACK_IMPORTED_MODULE_6__["default"]({ mode: 'history', base, routes: [{ path: '/p/:tokens/:view/:firstDay', component: _views_Calendar_vue__WEBPACK_IMPORTED_MODULE_1__["default"], name: 'PublicCalendarView', children: [{ path: '/p/:tokens/:view/:firstDay/view/popover/:object/:recurrenceId', name: 'PublicEditPopoverView', component: _views_EditSimple_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, { path: '/p/:tokens/:view/:firstDay/view/sidebar/:object/:recurrenceId', name: 'PublicEditSidebarView', component: _views_EditSidebar_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }] }, { path: '/embed/:tokens/:view/:firstDay', component: _views_Calendar_vue__WEBPACK_IMPORTED_MODULE_1__["default"], name: 'EmbedCalendarView', children: [{ path: '/embed/:tokens/:view/:firstDay/view/popover/:object/:recurrenceId', name: 'EmbedEditPopoverView', component: _views_EditSimple_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, { path: '/embed/:tokens/:view/:firstDay/view/sidebar/:object/:recurrenceId', name: 'EmbedEditSidebarView', component: _views_EditSidebar_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }] }, /** * This route is the root-view that does not contain any parameters so far. * Users usually access it by clicking the calendar-icon in the navigation bar. * * It automatically redirects you to the calendar view, showing the current month * in the user's preferred view. */ { path: '/', redirect: "/".concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getInitialView)(), "/now") }, { path: '/p/:tokens/:fancyName?', redirect: "/p/:tokens/".concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getInitialView)(), "/now") }, { path: '/public/:tokens/:fancyName?', redirect: "/p/:tokens/".concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getInitialView)(), "/now") }, { path: '/embed/:tokens', redirect: "/embed/:tokens/".concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getInitialView)(), "/now") }, { path: '/new/:view?', redirect: to => { var _to$params$view; return "/".concat((_to$params$view = to.params.view) !== null && _to$params$view !== void 0 ? _to$params$view : (0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getInitialView)(), "/now/new/").concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getPreferredEditorRoute)(), "/0/").concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getDefaultStartDateForNewEvent)(), "/").concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getDefaultEndDateForNewEvent)()); } }, { path: '/new/:allDay/:dtstart/:dtend', redirect: () => "/".concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getInitialView)(), "/:dtstart/new/").concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getPreferredEditorRoute)(), "/:allDay/:dtstart/:dtend") }, { path: '/edit/:object', redirect: () => "/".concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getInitialView)(), "/now/edit/").concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getPreferredEditorRoute)(), "/:object/next") }, { path: '/edit/:object/:recurrenceId', redirect: () => "/".concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getInitialView)(), "/now/edit/").concat((0,_utils_router_js__WEBPACK_IMPORTED_MODULE_4__.getPreferredEditorRoute)(), "/:object/:recurrenceId") }, /** * This is the main route that contains the current view and viewed day * It has to be last, so that other routes starting with /p/, etc. match first */ { path: '/:view/:firstDay', component: _views_Calendar_vue__WEBPACK_IMPORTED_MODULE_1__["default"], name: 'CalendarView', children: [{ path: '/:view/:firstDay/edit/popover/:object/:recurrenceId', name: 'EditPopoverView', component: _views_EditSimple_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, { path: '/:view/:firstDay/edit/sidebar/:object/:recurrenceId', name: 'EditSidebarView', component: _views_EditSidebar_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }, { path: '/:view/:firstDay/new/popover/:allDay/:dtstart/:dtend', name: 'NewPopoverView', component: _views_EditSimple_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, { path: '/:view/:firstDay/new/sidebar/:allDay/:dtstart/:dtend', name: 'NewSidebarView', component: _views_EditSidebar_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }] }] }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (router); /***/ }), /***/ "./src/services/appointmentConfigService.js": /*!**************************************************!*\ !*** ./src/services/appointmentConfigService.js ***! \**************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createConfig: () => (/* binding */ createConfig), /* harmony export */ deleteConfig: () => (/* binding */ deleteConfig), /* harmony export */ updateConfig: () => (/* binding */ updateConfig) /* harmony export */ }); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../models/appointmentConfig.js */ "./src/models/appointmentConfig.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /** * @copyright Copyright (c) 2021 Richard Steinmetz * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Create a new appointment config in the backend * * @param {AppointmentConfig} config The config to save * @return {Promise} Full appointment config with an id */ async function createConfig(config) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__["default"].debug('Creating appointment config', { config }); const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.generateUrl)('/apps/calendar/v1/appointment_configs'); const response = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_1__["default"].post(url, config); return new _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_2__["default"](response.data.data); } /** * Delete a stored appointment config from the backend * * @param {number} id The id of the config * @return {Promise} */ async function deleteConfig(id) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__["default"].debug('Deleting appointment config', { id }); const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.generateUrl)('/apps/calendar/v1/appointment_configs/{id}', { id }); await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_1__["default"].delete(url); } /** * Update an appointment config in the backend * * @param {AppointmentConfig} config The config to update * @return {Promise} Updated appointment config as stored in the backend */ async function updateConfig(config) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_3__["default"].debug('Updating appointment config', { config }); const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.generateUrl)('/apps/calendar/v1/appointment_configs/{id}', { id: config.id }); const response = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_1__["default"].put(url, config); return new _models_appointmentConfig_js__WEBPACK_IMPORTED_MODULE_2__["default"](response.data.data); } /***/ }), /***/ "./src/services/attachmentService.js": /*!*******************************************!*\ !*** ./src/services/attachmentService.js ***! \*******************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createFolder: () => (/* binding */ createFolder), /* harmony export */ getFileInfo: () => (/* binding */ getFileInfo), /* harmony export */ shareFile: () => (/* binding */ shareFile), /* harmony export */ shareFileWith: () => (/* binding */ shareFileWith), /* harmony export */ uploadLocalAttachment: () => (/* binding */ uploadLocalAttachment) /* harmony export */ }); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var webdav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! webdav */ "./node_modules/webdav/dist/web/index.js"); /** * @copyright 2022 Mikhail Sazanov * * @author 2022 Mikhail Sazanov * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Makes a share link for a given file or directory. * * @param {string} path The file path from the user's root directory. e.g. `/myfile.txt` * @return {string} url share link */ const shareFile = async function (path) { try { const res = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].post((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateOcsUrl)('apps/files_sharing/api/v1/', 2) + 'shares', { shareType: OC.Share.SHARE_TYPE_LINK, path }); return res.data.ocs.data; } catch (error) { var _error$response; if (error !== null && error !== void 0 && (_error$response = error.response) !== null && _error$response !== void 0 && (_error$response = _error$response.data) !== null && _error$response !== void 0 && (_error$response = _error$response.ocs) !== null && _error$response !== void 0 && (_error$response = _error$response.meta) !== null && _error$response !== void 0 && _error$response.message) { console.error("Error while sharing file: ".concat(error.response.data.ocs.meta.message)); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)(error.response.data.ocs.meta.message); throw error; } else { console.error('Error while sharing file: Unknown error'); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translate)('calendar', 'Error while sharing file')); throw error; } } }; /** * Share file with a user with permissions * * @param path * @param sharedWith * @param permissions * @return {Promise<[{path: string, permissions, scope: string, name: string, backend: string, type: string},{path: string, permissions: *, scope: string, name: string, backend: string, type: string}]>} */ const shareFileWith = async function (path, sharedWith) { let permissions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 17; try { const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateOcsUrl)('apps/files_sharing/api/v1/', 2); const res = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].post("".concat(url, "shares"), { password: null, shareType: OC.Share.SHARE_TYPE_USER, // WITH USERS, permissions, // 14 - edit, 17 - view path, shareWith: sharedWith }); return res.data.ocs.data; } catch (error) { var _error$response2; if (error !== null && error !== void 0 && (_error$response2 = error.response) !== null && _error$response2 !== void 0 && (_error$response2 = _error$response2.data) !== null && _error$response2 !== void 0 && (_error$response2 = _error$response2.ocs) !== null && _error$response2 !== void 0 && (_error$response2 = _error$response2.meta) !== null && _error$response2 !== void 0 && _error$response2.message) { console.error("Error while sharing file with user: ".concat(error.response.data.ocs.meta.message)); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)(error.response.data.ocs.meta.message); throw error; } else { console.error('Error while sharing file with user: Unknown error'); (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translate)('calendar', 'Error while sharing file with user')); throw error; } } }; const createFolder = async function (folderName, userId) { const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateRemoteUrl)("dav/files/".concat(userId, "/").concat(folderName)); try { await (0,_nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"])({ method: 'MKCOL', url }); } catch (e) { var _e$response; if ((e === null || e === void 0 || (_e$response = e.response) === null || _e$response === void 0 ? void 0 : _e$response.status) !== 405) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translate)('calendar', 'Error creating a folder {folder}', { folder: folderName })); // Maybe the actual upload succeeds -> keep going return folderName; } // Folder already exists if (folderName !== '/') { folderName = await findFirstOwnedFolder(folderName, userId); } } return folderName; }; const findFirstOwnedFolder = async function (path, userId) { var _info$multistatus; const infoXml = await getFileInfo(path, userId); const info = await (0,webdav__WEBPACK_IMPORTED_MODULE_4__.parseXML)(infoXml); const mountType = info === null || info === void 0 || (_info$multistatus = info.multistatus) === null || _info$multistatus === void 0 || (_info$multistatus = _info$multistatus.response[0]) === null || _info$multistatus === void 0 || (_info$multistatus = _info$multistatus.propstat) === null || _info$multistatus === void 0 || (_info$multistatus = _info$multistatus.prop) === null || _info$multistatus === void 0 ? void 0 : _info$multistatus['mount-type']; if (mountType !== 'shared') { return path; } const hierarchy = path.split('/'); hierarchy.pop(); if (hierarchy.length === 1) { return '/'; } return findFirstOwnedFolder(hierarchy.join('/'), userId); }; const uploadLocalAttachment = async function (folder, files, dav, componentAttachments) { const attachments = []; const promises = []; files.forEach(file => { // temp fix, until we decide where to save the attachments if (componentAttachments.map(attachment => attachment.fileName.split('/').pop()).indexOf(file.name) !== -1) { // TODO may be show user confirmation dialog to create a file named Existing_File_(2) ? (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translate)('calendar', 'Attachment {fileName} already exists!', { fileName: file.name })); } else { const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateRemoteUrl)("dav/files/".concat(dav.userId, "/").concat(folder, "/").concat(file.name)); const res = _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].put(url, file).then(resp => { const data = { fileName: file.name, formatType: file.type, uri: url, value: url, path: "/".concat(file.name) }; if (resp.status === 204 || resp.status === 201) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showSuccess)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translate)('calendar', 'Attachment {fileName} added!', { fileName: file.name })); attachments.push(data); } }).catch(() => { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translate)('calendar', 'An error occurred during uploading file {fileName}', { fileName: file.name })); }); promises.push(res); } }); await Promise.all(promises); return attachments; }; // TODO is shared or not @share-types@ const getFileInfo = async function (path, userId) { const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateRemoteUrl)("dav/files/".concat(userId, "/").concat(path)); const res = await (0,_nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"])({ method: 'PROPFIND', url, data: "\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t" }).catch(() => { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_2__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translate)('calendar', 'An error occurred during getting file information')); }); return res.data; }; /***/ }), /***/ "./src/services/caldavService.js": /*!***************************************!*\ !*** ./src/services/caldavService.js ***! \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ advancedPrincipalPropertySearch: () => (/* binding */ advancedPrincipalPropertySearch), /* harmony export */ createCalendar: () => (/* binding */ createCalendar), /* harmony export */ createSubscription: () => (/* binding */ createSubscription), /* harmony export */ enableBirthdayCalendar: () => (/* binding */ enableBirthdayCalendar), /* harmony export */ findAll: () => (/* binding */ findAll), /* harmony export */ findAllDeletedCalendars: () => (/* binding */ findAllDeletedCalendars), /* harmony export */ findAllSubscriptions: () => (/* binding */ findAllSubscriptions), /* harmony export */ findPrincipalByUrl: () => (/* binding */ findPrincipalByUrl), /* harmony export */ findPublicCalendarsByTokens: () => (/* binding */ findPublicCalendarsByTokens), /* harmony export */ findSchedulingInbox: () => (/* binding */ findSchedulingInbox), /* harmony export */ findSchedulingOutbox: () => (/* binding */ findSchedulingOutbox), /* harmony export */ getBirthdayCalendar: () => (/* binding */ getBirthdayCalendar), /* harmony export */ getCurrentUserPrincipal: () => (/* binding */ getCurrentUserPrincipal), /* harmony export */ initializeClientForPublicView: () => (/* binding */ initializeClientForPublicView), /* harmony export */ initializeClientForUserView: () => (/* binding */ initializeClientForUserView), /* harmony export */ principalPropertySearchByDisplaynameOrEmail: () => (/* binding */ principalPropertySearchByDisplaynameOrEmail) /* harmony export */ }); /* harmony import */ var _nextcloud_cdav_library__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/cdav-library */ "./node_modules/@nextcloud/cdav-library/dist/dist.js"); /* harmony import */ var _nextcloud_cdav_library__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_cdav_library__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.es.mjs"); /* harmony import */ var _models_consts_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../models/consts.js */ "./src/models/consts.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const clients = {}; const getClientKey = headers => JSON.stringify(headers); const getClient = function () { let headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const clientKey = getClientKey(headers); if (clients[clientKey]) { return clients[clientKey]; } clients[clientKey] = new (_nextcloud_cdav_library__WEBPACK_IMPORTED_MODULE_0___default())({ rootUrl: (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateRemoteUrl)('dav') }, () => { const mergedHeaders = { 'X-Requested-With': 'XMLHttpRequest', requesttoken: (0,_nextcloud_auth__WEBPACK_IMPORTED_MODULE_2__.getRequestToken)(), 'X-NC-CalDAV-Webcal-Caching': 'On', ...headers }; const xhr = new XMLHttpRequest(); const oldOpen = xhr.open; // override open() method to add headers xhr.open = function () { const result = oldOpen.apply(this, arguments); for (const name in mergedHeaders) { xhr.setRequestHeader(name, mergedHeaders[name]); } return result; }; OC.registerXHRForErrorProcessing(xhr); // eslint-disable-line no-undef return xhr; }); return clients[clientKey]; }; /** * Initializes the client for use in the user-view */ const initializeClientForUserView = async () => { await getClient().connect({ enableCalDAV: true }); }; /** * Initializes the client for use in the public/embed-view */ const initializeClientForPublicView = async () => { await getClient()._createPublicCalendarHome(); }; /** * Fetch all calendars from the server * * @param {object} headers * @return {Promise} */ const getCalendarHome = headers => getClient(headers).calendarHomes[0]; /** * Fetch all collections in the calendar home from the server * * @return {Promise} */ const findAll = () => { return getCalendarHome().findAllCalDAVCollectionsGrouped(); }; /** * Fetch all subscriptions in the calendar home from the server */ const findAllSubscriptions = async () => { const headers = { 'X-NC-CalDAV-Webcal-Caching': 'Off' }; // Ensure the client is initialized once await getClient(headers).connect({ enableCalDAV: true }); return getCalendarHome(headers).findAllSubscriptions(); }; /** * Fetch all deleted calendars from the server * * @return {Promise} */ const findAllDeletedCalendars = () => { return getCalendarHome().findAllDeletedCalendars(); }; /** * Fetch public calendars by their token * * @param {string[]} tokens List of tokens * @return {Promise} */ const findPublicCalendarsByTokens = async tokens => { const findPromises = []; for (const token of tokens) { const promise = getClient().publicCalendarHome.find(token).catch(() => null); // Catch outdated tokens findPromises.push(promise); } const calendars = await Promise.all(findPromises); return calendars.filter(calendar => calendar !== null); }; /** * Fetches all scheduling inboxes * * Nitpick detail: Technically, we shouldn't be querying all scheduling inboxes * in the calendar-home and just take the first one, but rather query the * "CALDAV:schedule-inbox-URL" property on the principal URL and take that one. * However, it doesn't make any difference for the Nextcloud CalDAV server * and saves us extraneous requests here. * * https://tools.ietf.org/html/rfc6638#section-2.2.1 * * @return {Promise} */ const findSchedulingInbox = async () => { const inboxes = await getCalendarHome().findAllScheduleInboxes(); return inboxes[0]; }; /** * Fetches all scheduling outboxes * * Nitpick detail: Technically, we shouldn't be querying all scheduling outboxes * in the calendar-home and just take the first one, but rather query the * "CALDAV:schedule-outbox-URL" property on the principal URL and take that one. * However, it doesn't make any difference for the Nextcloud CalDAV server * and saves us extraneous requests here. * * https://tools.ietf.org/html/rfc6638#section-2.1.1 * * @return {Promise} */ const findSchedulingOutbox = async () => { const outboxes = await getCalendarHome().findAllScheduleOutboxes(); return outboxes[0]; }; /** * Creates a calendar * * @param {string} displayName Visible name * @param {string} color Color * @param {string[]} components Supported component set * @param {number} order Order of calendar in list * @param {string} timezoneIcs ICS representation of timezone * @return {Promise} */ const createCalendar = async (displayName, color, components, order, timezoneIcs) => { return getCalendarHome().createCalendarCollection(displayName, color, components, order, timezoneIcs); }; /** * Creates a subscription * * This function does not return a subscription, but a cached calendar * * @param {string} displayName Visible name * @param {string} color Color * @param {string} source Link to WebCAL Source * @param {number} order Order of calendar in list * @return {Promise} */ const createSubscription = async (displayName, color, source, order) => { return getCalendarHome().createSubscribedCollection(displayName, color, source, order); }; /** * Enables the birthday calendar * * @return {Promise} */ const enableBirthdayCalendar = async () => { await getCalendarHome().enableBirthdayCalendar(); return getBirthdayCalendar(); }; /** * Gets the birthday calendar * * @return {Promise} */ const getBirthdayCalendar = async () => { return getCalendarHome().find(_models_consts_js__WEBPACK_IMPORTED_MODULE_3__.CALDAV_BIRTHDAY_CALENDAR); }; /** * Returns the Current User Principal * * @return {Principal} */ const getCurrentUserPrincipal = () => { return getClient().currentUserPrincipal; }; /** * Finds calendar principals by displayname * * @param {string} term The search-term * @return {Promise} */ const principalPropertySearchByDisplaynameOrEmail = async term => { return getClient().principalPropertySearchByDisplaynameOrEmail(term); }; /** * Performs a principal property search based on multiple advanced filters * * @param {object} query The destructuring query object * @param {string=} query.displayName The display name to search for * @param {number=} query.capacity The minimum required seating capacity * @param {string[]=} query.features The features to filter by * @param {string=} query.roomType The room type to filter by * @return {Promise} */ const advancedPrincipalPropertySearch = async query => { return getClient().advancedPrincipalPropertySearch(query); }; /** * Finds one principal by it's URL * * @param {string} url The principal-url * @return {Promise} */ const findPrincipalByUrl = async url => { return getClient().findPrincipal(url); }; /***/ }), /***/ "./src/services/circleService.js": /*!***************************************!*\ !*** ./src/services/circleService.js ***! \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ circleGetMembers: () => (/* binding */ circleGetMembers), /* harmony export */ circleSearchByName: () => (/* binding */ circleSearchByName) /* harmony export */ }); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /** * @copyright Copyright (c) 2023 Jonas Heinrich * * @author Jonas Heinrich * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Finds circles by displayname * * @param {string} query The search-term * @return {Promise} */ const circleSearchByName = async query => { let results; try { results = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].get((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateOcsUrl)('apps/files_sharing/api/v1/') + 'sharees', { params: { format: 'json', search: query, perPage: 200, itemType: 'pringroucipals' } }); } catch (error) { return []; } if (results.data.ocs.meta.status === 'failure') { return []; } let circles = []; if (Array.isArray(results.data.ocs.data.circles)) { circles = circles.concat(results.data.ocs.data.circles); } if (Array.isArray(results.data.ocs.data.exact.circles)) { circles = circles.concat(results.data.ocs.data.exact.circles); } if (circles.length === 0) { return []; } return circles.filter(circle => { return true; }).map(circle => ({ displayname: circle.label, population: circle.value.circle.population, id: circle.value.circle.id, instance: circle.value.circle.owner.instance })); }; /** * Get members of circle by id * * @param {string} circleId The circle id to query * @return {Promise} */ const circleGetMembers = async circleId => { let results; try { results = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].get((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.linkTo)('calendar', 'index.php') + '/v1/circles/getmembers', { params: { format: 'json', circleId } }); } catch (error) { console.debug(error); return []; } return results; }; /***/ }), /***/ "./src/services/freeBusyService.js": /*!*****************************************!*\ !*** ./src/services/freeBusyService.js ***! \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ checkResourceAvailability: () => (/* binding */ checkResourceAvailability) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _utils_attendee_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/attendee.js */ "./src/utils/attendee.js"); /* harmony import */ var _utils_freebusy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/freebusy.js */ "./src/utils/freebusy.js"); /** * @copyright 2021 Christoph Wurst * * @author 2021 Christoph Wurst * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Check resource availability using a free busy request * and amend the status to the option object (option.isAvailable) * * @param {object[]} options The search results to amend with an availability * @param {string} principalEmail Principal of the organizer * @param {DateTimeValue} start Start date * @param {DateTimeValue} end End date */ async function checkResourceAvailability(options, principalEmail, start, end) { if (options.length === 0) { return; } const organizer = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.AttendeeProperty('ORGANIZER', (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_1__.addMailtoPrefix)(principalEmail)); const attendees = []; for (const option of options) { attendees.push(new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.AttendeeProperty('ATTENDEE', (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_1__.addMailtoPrefix)(option.email))); } for await (const [attendeeProperty] of (0,_utils_freebusy_js__WEBPACK_IMPORTED_MODULE_2__.doFreeBusyRequest)(start, end, organizer, attendees)) { const attendeeEmail = (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_1__.removeMailtoPrefix)(attendeeProperty.email); for (const option of options) { if ((0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_1__.removeMailtoPrefix)(option.email) === attendeeEmail) { options.participationStatus = ''; option.isAvailable = false; break; } } } } /***/ }), /***/ "./src/services/freeBusySlotService.js": /*!*********************************************!*\ !*** ./src/services/freeBusySlotService.js ***! \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getBusySlots: () => (/* binding */ getBusySlots), /* harmony export */ getFirstFreeSlot: () => (/* binding */ getFirstFreeSlot) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _caldavService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _fullcalendar_eventSources_freeBusyResourceEventSourceFunction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../fullcalendar/eventSources/freeBusyResourceEventSourceFunction.js */ "./src/fullcalendar/eventSources/freeBusyResourceEventSourceFunction.js"); /* harmony import */ var _timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /** * @copyright 2024 Grigory Vodyanov * * @author 2024 Grigory Vodyanov * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Get the first available slot for an event using freebusy API * * @param {AttendeeProperty} organizer The organizer of the event * @param {AttendeeProperty[]} attendees Array of the event's attendees * @param {Date} start The start date and time of the event * @param {Date} end The end date and time of the event * @param timeZoneId * @return {Promise<>} */ async function getBusySlots(organizer, attendees, start, end, timeZoneId) { let timezoneObject = (0,_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_3__["default"])().getTimezoneForId(timeZoneId); if (!timezoneObject) { timezoneObject = (0,_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_3__["default"])().getTimezoneForId('UTC'); _utils_logger_js__WEBPACK_IMPORTED_MODULE_4__["default"].error("FreeBusyEventSource: Timezone ".concat(timeZoneId, " not found, falling back to UTC.")); } const startDateTime = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DateTimeValue.fromJSDate(start, true); const endDateTime = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DateTimeValue.fromJSDate(end, true); const organizerAsAttendee = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.AttendeeProperty('ATTENDEE', organizer.email); const freeBusyComponent = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.createFreeBusyRequest)(startDateTime, endDateTime, organizer, [organizerAsAttendee, ...attendees]); const freeBusyICS = freeBusyComponent.toICS(); let outbox; try { outbox = await (0,_caldavService_js__WEBPACK_IMPORTED_MODULE_1__.findSchedulingOutbox)(); } catch (error) { return { error }; } let freeBusyData; try { freeBusyData = await outbox.freeBusyRequest(freeBusyICS); } catch (error) { return { error }; } const events = []; for (const [uri, data] of Object.entries(freeBusyData)) { events.push(...(0,_fullcalendar_eventSources_freeBusyResourceEventSourceFunction_js__WEBPACK_IMPORTED_MODULE_2__["default"])(uri, data.calendarData, data.success, startDateTime, endDateTime, timezoneObject)); } return { events }; } /** * Get the first available slot for an event using the freebusy API * * @param {Date} start The start date and time of the event * @param {Date} end The end date and time of the event * @param retrievedEvents Events found by the freebusy API * @return [] */ function getFirstFreeSlot(start, end, retrievedEvents) { var _events$; let duration = getDurationInSeconds(start, end); if (duration === 0) { duration = 86400; // one day } const endSearchDate = new Date(start); endSearchDate.setDate(start.getDate() + 7); if (retrievedEvents.error) { return [{ error: retrievedEvents.error }]; } const events = sortEvents(retrievedEvents); let currentCheckedTime = start; const currentCheckedTimeEnd = new Date(currentCheckedTime); currentCheckedTimeEnd.setSeconds(currentCheckedTime.getSeconds() + duration); const foundSlots = []; let offset = 1; if (new Date((_events$ = events[0]) === null || _events$ === void 0 ? void 0 : _events$.start) < currentCheckedTime) { offset = 0; } for (let i = 0; i < events.length + offset && i < 5; i++) { var _foundSlots$i, _foundSlots; foundSlots[i] = checkTimes(currentCheckedTime, duration, events); if (foundSlots[i].nextEvent !== undefined && foundSlots[i].nextEvent !== null) { currentCheckedTime = new Date(foundSlots[i].nextEvent.end); } // avoid repetitions caused by events blocking at first iteration of currentCheckedTime if (((_foundSlots$i = foundSlots[i]) === null || _foundSlots$i === void 0 ? void 0 : _foundSlots$i.start) === ((_foundSlots = foundSlots[i - 1]) === null || _foundSlots === void 0 ? void 0 : _foundSlots.start) && foundSlots[i] !== undefined) { foundSlots[i] = {}; break; } } const roundedSlots = []; foundSlots.forEach(slot => { const roundedTime = roundTime(slot.start, slot.end, slot.blockingEvent, slot.nextEvent, duration); if (roundedTime !== null && roundedTime.start < endSearchDate) { roundedSlots.push({ start: roundedTime.start, end: roundedTime.end }); } }); return roundedSlots; } /** * * @param start * @param end * @return {number} */ function getDurationInSeconds(start, end) { // convert dates to UTC to account for daylight saving time const startUTC = new Date(start).toUTCString(); const endUTC = new Date(end).toUTCString(); const durationMs = new Date(endUTC) - new Date(startUTC); // convert milliseconds to seconds return Math.floor(durationMs / 1000); } /** * * @param currentCheckedTime * @param currentCheckedTimeEnd * @param blockingEvent * @param nextEvent * @param duration */ function roundTime(currentCheckedTime, currentCheckedTimeEnd, blockingEvent, nextEvent, duration) { if (currentCheckedTime === null) return null; if (!blockingEvent) return { start: currentCheckedTime, end: currentCheckedTimeEnd }; // make sure that difference between currentCheckedTime and blockingEvent.end is at least 15 minutes if ((currentCheckedTime - new Date(blockingEvent.end)) / (1000 * 60) < 15) { currentCheckedTime.setMinutes(currentCheckedTime.getMinutes() + 15); } // needed to fix edge case errors if ((currentCheckedTime - new Date(blockingEvent.end)) / (1000 * 60) > 15) { currentCheckedTime.setMinutes(currentCheckedTime.getMinutes() - 15); } // round to the nearest 30 minutes if (currentCheckedTime.getMinutes() < 30) { currentCheckedTime.setMinutes(30); } else { currentCheckedTime.setMinutes(0); currentCheckedTime.setHours(currentCheckedTime.getHours() + 1); } // update currentCheckedTimeEnd again since currentCheckedTime was updated currentCheckedTimeEnd = new Date(currentCheckedTime); currentCheckedTimeEnd.setSeconds(currentCheckedTime.getSeconds() + duration); // if the rounding of the event doesn't conflict with the start of the next one if (currentCheckedTimeEnd > new Date(nextEvent === null || nextEvent === void 0 ? void 0 : nextEvent.start)) { return null; } return { start: currentCheckedTime, end: currentCheckedTimeEnd }; } /** * * @param currentCheckedTime * @param duration * @param events */ function checkTimes(currentCheckedTime, duration, events) { let slotIsBusy = false; let blockingEvent = null; let nextEvent = null; let currentCheckedTimeEnd = new Date(currentCheckedTime); currentCheckedTimeEnd.setSeconds(currentCheckedTime.getSeconds() + duration); // loop every 5 minutes since start date // check if there are no events in the duration starting from that minute while (true) { events.every(event => { slotIsBusy = false; const eventStart = new Date(event.start); const eventEnd = new Date(event.end); currentCheckedTimeEnd = new Date(currentCheckedTime); currentCheckedTimeEnd.setSeconds(currentCheckedTime.getSeconds() + duration); // start of event is within the range that we are checking if (eventStart >= currentCheckedTime && eventStart <= currentCheckedTimeEnd) { slotIsBusy = true; blockingEvent = event; return false; } // end of event is within range that we are checking if (eventEnd >= currentCheckedTime && eventEnd <= currentCheckedTimeEnd) { slotIsBusy = true; blockingEvent = event; return false; } // range that we are checking is within ends of event if (eventStart <= currentCheckedTime && eventEnd >= currentCheckedTimeEnd) { slotIsBusy = true; blockingEvent = event; return false; } return true; }); if (slotIsBusy) { currentCheckedTime.setMinutes(currentCheckedTime.getMinutes() + 5); } else break; } if (blockingEvent !== null) { const blockingIndex = events.findIndex(event => event === blockingEvent); nextEvent = events[blockingIndex + 1]; } else { if (events.length > 0) nextEvent = events[0]; } return { start: currentCheckedTime, end: currentCheckedTimeEnd, nextEvent, blockingEvent }; } // make a function that sorts a list of objects by the "start" property function sortEvents(events) { // remove events that have the same start and end time, if not done causes problems const mappedEvents = new Map(); for (const obj of events) { const key = obj.start.toString() + obj.end.toString(); if (!mappedEvents.has(key)) { mappedEvents.set(key, obj); } } return Array.from(mappedEvents.values()).sort((a, b) => new Date(a.start) - new Date(b.start)); } /***/ }), /***/ "./src/services/isCirclesEnabled.js": /*!******************************************!*\ !*** ./src/services/isCirclesEnabled.js ***! \******************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/initial-state */ "./node_modules/@nextcloud/initial-state/dist/index.es.mjs"); /** * @copyright Copyright (c) 2021 John Molakvoæ * @copyright Copyright (c) 2023 Jonas Heinrich * * @author John Molakvoæ * @author Jonas Heinrich * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const isCirclesEnabled = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_0__.loadState)('calendar', 'isCirclesEnabled', false); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isCirclesEnabled); /***/ }), /***/ "./src/services/readFileAsTextService.js": /*!***********************************************!*\ !*** ./src/services/readFileAsTextService.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ readFileAsText: () => (/* binding */ readFileAsText) /* harmony export */ }); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Team Popcorn * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Read a file object as text * * @param {File} file The file object to get contents from * @return {Promise} */ const readFileAsText = file => { const fileReader = new FileReader(); return new Promise((resolve, reject) => { fileReader.onload = () => { resolve(fileReader.result); }; fileReader.onerror = e => { reject(e); }; fileReader.readAsText(file); }); }; /***/ }), /***/ "./src/services/roleService.js": /*!*************************************!*\ !*** ./src/services/roleService.js ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ async fetchAndCommitRoles(commit) { try { var url = '/apps/gestion/getUserConnectedGroups'; const ajaxUrl = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateUrl)(url); _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].get(ajaxUrl).then(response => { let roles = JSON.parse(response.data); commit("setUserRole", roles); }).catch(error => {}); } catch (error) {} } }); /***/ }), /***/ "./src/services/settings.js": /*!**********************************!*\ !*** ./src/services/settings.js ***! \**********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ setConfig: () => (/* binding */ setConfig) /* harmony export */ }); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var _utils_settings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/settings.js */ "./src/utils/settings.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * * @param {string} key Config-key to set * @param {string | number | boolean} value Config-value to set * @return {Promise} */ const setConfig = async (key, value) => { await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].post((0,_utils_settings_js__WEBPACK_IMPORTED_MODULE_1__.getLinkToConfig)(key), { value }); }; /***/ }), /***/ "./src/services/talkService.js": /*!*************************************!*\ !*** ./src/services/talkService.js ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createTalkRoom: () => (/* binding */ createTalkRoom), /* harmony export */ doesContainTalkLink: () => (/* binding */ doesContainTalkLink), /* harmony export */ extractCallTokenFromUrl: () => (/* binding */ extractCallTokenFromUrl), /* harmony export */ updateTalkParticipants: () => (/* binding */ updateTalkParticipants) /* harmony export */ }); /* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.es.mjs"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/initial-state */ "./node_modules/@nextcloud/initial-state/dist/index.es.mjs"); /* harmony import */ var _nextcloud_auth__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.es.mjs"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _utils_attendee_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/attendee.js */ "./src/utils/attendee.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Team Popcorn * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Creates a new public talk room * * @param {?string} eventTitle Title of the event * @param {?string} eventDescription Description of the event * @param {?string[]} attendees Attendees of the event * * @return {Promise} */ async function createTalkRoom() { let eventTitle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; let eventDescription = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; let attendees = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; const apiVersion = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_3__.loadState)('calendar', 'talk_api_version'); try { const response = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].post((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateOcsUrl)('apps/spreed/api/' + apiVersion + '/', 2) + 'room', { roomType: 3, roomName: eventTitle || (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.translate)('calendar', 'Chat room for event') }); const conversation = response.data.ocs.data; const token = conversation.token; if (eventDescription) { await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].put((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateOcsUrl)('apps/spreed/api/' + apiVersion + '/', 2) + 'room/' + token + '/description', { description: eventDescription }); } return generateURLForToken(token); } catch (error) { console.debug(error); throw error; } } /** * * @param eventComponent */ async function updateTalkParticipants(eventComponent) { var _eventComponent$getCo, _eventComponent$getCo2; const apiVersion = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_3__.loadState)('calendar', 'talk_api_version'); const url = (_eventComponent$getCo = (_eventComponent$getCo2 = eventComponent.getConferenceList()[0]) === null || _eventComponent$getCo2 === void 0 ? void 0 : _eventComponent$getCo2.uri) !== null && _eventComponent$getCo !== void 0 ? _eventComponent$getCo : eventComponent.location; if (!url || !url.startsWith(window.location.protocol + '//' + window.location.host)) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].debug('Event\'s conference/location is from another host', url); return; } const token = extractCallTokenFromUrl(url); if (!token) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].debug('URL ' + url + ' contains no call token'); return; } try { const { data: { ocs: { data: room } } } = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].get((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateOcsUrl)('apps/spreed/api/' + apiVersion + '/', 2) + 'room/' + token); const participantsResponse = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].get((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateOcsUrl)('apps/spreed/api/' + apiVersion + '/', 2) + 'room/' + token + '/participants'); // Ignore if the actor isn't owner of the conversation if (!participantsResponse.data.ocs.data.some(participant => participant.actorId === (0,_nextcloud_auth__WEBPACK_IMPORTED_MODULE_4__.getCurrentUser)().uid && participant.participantType <= 2)) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].debug('Current user is not a moderator or owner', { currentUser: (0,_nextcloud_auth__WEBPACK_IMPORTED_MODULE_4__.getCurrentUser)().uid, conversation: participantsResponse.data.ocs.data }); return; } console.info('room', room); for (const attendee of eventComponent.getAttendeeIterator()) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].debug('Processing attendee', { attendee }); if (['GROUP', 'RESOURCE', 'ROOM'].includes(attendee.userType)) { continue; } const participantId = (0,_utils_attendee_js__WEBPACK_IMPORTED_MODULE_6__.removeMailtoPrefix)(attendee.email); try { var _searchResult$data$oc; // Map attendee email to Nextcloud user uid const searchResult = await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].get((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateOcsUrl)('core/autocomplete/', 2) + 'get?search=' + encodeURIComponent(participantId) + '&itemType=&itemId=%20&shareTypes[]=0&limit=2'); // Only map if there is exactly one result if (searchResult.data.ocs.data.length === 1 && searchResult.data.ocs.data[0].id !== (0,_nextcloud_auth__WEBPACK_IMPORTED_MODULE_4__.getCurrentUser)().uid) { await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].post((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateOcsUrl)('apps/spreed/api/' + apiVersion + '/', 2) + 'room/' + token + '/participants', { newParticipant: searchResult.data.ocs.data[0].id, source: 'users' }); } else if (((_searchResult$data$oc = searchResult.data.ocs.data[0]) === null || _searchResult$data$oc === void 0 ? void 0 : _searchResult$data$oc.id) === (0,_nextcloud_auth__WEBPACK_IMPORTED_MODULE_4__.getCurrentUser)().uid) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].debug('Skipping organizer ' + searchResult.data.ocs.data[0].id); } else if (room.type === 3) { await _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].post((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateOcsUrl)('apps/spreed/api/' + apiVersion + '/', 2) + 'room/' + token + '/participants', { newParticipant: participantId, source: 'emails' }); } else { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].debug('Attendee ' + participantId + ' ignored as Talk participant'); } } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].info('Could not add attendee ' + participantId + ' as Talk participant', { error }); } } } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__["default"].warn('Could not update Talk room attendees', { error }); } } /** * Checks whether the value contains a talk link * * @param {?string} text Haystack * @return {boolean} */ function doesContainTalkLink(text) { if (!text) { return false; } // TODO: there is most definitely a more reliable way, // but this works for now const fakeUrl = generateURLForToken(); return text.includes(fakeUrl); } /** * Generates an absolute URL to the talk room based on the token * * @param {string} token The token to the call room * @return {string} */ function generateURLForToken() { let token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; return window.location.protocol + '//' + window.location.host + (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_2__.generateUrl)('/call/' + token); } /** * Extract a spreed call token from the given URL * * @param {string} callUrl URL of the spreed call * @return {string|undefined} Matched token or undefined if URL is invalid */ function extractCallTokenFromUrl(callUrl) { var _callUrl$match$, _callUrl$match; return (_callUrl$match$ = (_callUrl$match = callUrl.match(/\/call\/([a-z0-9]*)(\/|#.*)?$/)) === null || _callUrl$match === void 0 ? void 0 : _callUrl$match[1]) !== null && _callUrl$match$ !== void 0 ? _callUrl$match$ : undefined; } /***/ }), /***/ "./src/services/timezoneDataProviderService.js": /*!*****************************************************!*\ !*** ./src/services/timezoneDataProviderService.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const timezoneManager = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.getTimezoneManager)(); let initialized = false; /** * Gets the timezone-manager * initializes it if necessary * * @return {TimezoneManager} */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { if (!initialized) { timezoneManager.registerDefaultTimezones(); initialized = true; } return timezoneManager; } /***/ }), /***/ "./src/services/timezoneDetectionService.js": /*!**************************************************!*\ !*** ./src/services/timezoneDetectionService.js ***! \**************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ detectTimezone: () => (/* binding */ detectTimezone) /* harmony export */ }); /* harmony import */ var jstz__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jstz */ "./node_modules/jstz/index.js"); /* harmony import */ var jstz__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jstz__WEBPACK_IMPORTED_MODULE_0__); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Returns the current timezone of the user * * @return {string} Current timezone of user */ const detectTimezone = () => { const determinedTimezone = jstz__WEBPACK_IMPORTED_MODULE_0___default().determine(); if (!determinedTimezone) { return 'UTC'; } const timezoneName = determinedTimezone.name(); if (!timezoneName) { return 'UTC'; } return timezoneName; }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (detectTimezone); /***/ }), /***/ "./src/services/windowTitleService.js": /*!********************************************!*\ !*** ./src/services/windowTitleService.js ***! \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _filters_dateRangeFormat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../filters/dateRangeFormat.js */ "./src/filters/dateRangeFormat.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const originalWindowTitle = document.title; /** * This function listens to the router and * automatically adjusts the title of the window * * @param {VueRouter} router The VueJS Router instance * @param {Store} store The vuex store */ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(router, store) { /** * Updates the title of the window * * @param {Date} date viewed Date * @param {string} view Name of the current view * @param {string} locale Locale to be used for formatting */ function updateTitle(date, view, locale) { const title = (0,_filters_dateRangeFormat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(date, view, locale); document.title = [title, originalWindowTitle].join(' - '); } /** * This listens to router changes and automatically * updates the title */ router.beforeEach((to, from, next) => { if (!to.params.firstDay) { next(); return; } const date = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromFirstdayParam)(to.params.firstDay); const view = to.params.view; const locale = store.state.settings.momentLocale; updateTitle(date, view, locale); next(); }); /** * This listens to changes of the locale * and automatically updates it. */ store.subscribe(mutation => { var _router$currentRoute$; if (mutation.type !== 'setMomentLocale') { return; } if (!((_router$currentRoute$ = router.currentRoute.params) !== null && _router$currentRoute$ !== void 0 && _router$currentRoute$.firstDay)) { return; } const date = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromFirstdayParam)(router.currentRoute.params.firstDay); const view = router.currentRoute.params.view; const { locale } = mutation.payload; updateTitle(date, view, locale); }); } /***/ }), /***/ "./src/store/appointmentConfigs.js": /*!*****************************************!*\ !*** ./src/store/appointmentConfigs.js ***! \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! pinia */ "./node_modules/pinia/dist/pinia.mjs"); /* harmony import */ var _services_appointmentConfigService_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/appointmentConfigService.js */ "./src/services/appointmentConfigService.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /** * @copyright Copyright (c) 2021 Richard Steinmetz * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,pinia__WEBPACK_IMPORTED_MODULE_2__.defineStore)('appointmentConfig', { state: () => { return { configs: {} }; }, getters: { allConfigs() { return Object.values(this.configs); } }, actions: { addInitialConfigs(configs) { for (const config of configs) { vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(this.configs, config.id, config); } }, async updateConfig(_ref) { let { config } = _ref; try { const updatedConfig = await (0,_services_appointmentConfigService_js__WEBPACK_IMPORTED_MODULE_0__.updateConfig)(config); this.updateConfigMutation(updatedConfig); return updatedConfig; } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Failed to update config', { error }); throw error; } }, async createConfig(_ref2) { let { config } = _ref2; try { const fullConfig = await (0,_services_appointmentConfigService_js__WEBPACK_IMPORTED_MODULE_0__.createConfig)(config); this.addConfigMutation(fullConfig); return fullConfig; } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Failed to create config', { error }); throw error; } }, async deleteConfig(_ref3) { let { id } = _ref3; try { await (0,_services_appointmentConfigService_js__WEBPACK_IMPORTED_MODULE_0__.deleteConfig)(id); this.deleteConfigMutation(id); } catch (error) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Failed to delete config', { error }); throw error; } }, updateConfigMutation(config) { if (!this.configs[config.id]) { return; } vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(this.configs, config.id, config.clone()); }, addConfigMutation(config) { vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(this.configs, config.id, config); }, deleteConfigMutation(id) { if (!this.configs[id]) { return; } vue__WEBPACK_IMPORTED_MODULE_3__["default"].delete(this.configs, id); } } })); /***/ }), /***/ "./src/store/calendarObjectInstance.js": /*!*********************************************!*\ !*** ./src/store/calendarObjectInstance.js ***! \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _utils_recurrence_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/recurrence.js */ "./src/utils/recurrence.js"); /* harmony import */ var _models_event_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../models/event.js */ "./src/models/event.js"); /* harmony import */ var _utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/alarms.js */ "./src/utils/alarms.js"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var _models_alarm_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../models/alarm.js */ "./src/models/alarm.js"); /* harmony import */ var _utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/calendarObject.js */ "./src/utils/calendarObject.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _settings_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settings.js */ "./src/store/settings.js"); /* harmony import */ var _models_rfcProps_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../models/rfcProps.js */ "./src/models/rfcProps.js"); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /* harmony import */ var _services_talkService_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../services/talkService.js */ "./src/services/talkService.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * @copyright Copyright (c) 2023 Jonas Heinrich * * @author Georg Ehrke * @author Jonas Heinrich * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { isNew: null, calendarObject: null, calendarObjectInstance: null, existingEvent: { objectId: null, recurrenceId: null } }; const mutations = { /** * Set a calendar-object-instance that will be opened in the editor (existing event) * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObject The calendar-object currently being edited * @param {object} data.calendarObjectInstance The calendar-object-instance currently being edited * @param {string} data.objectId The objectId of the calendar-object * @param {number} data.recurrenceId The recurrence-id of the calendar-object-instance */ setCalendarObjectInstanceForExistingEvent(state, _ref) { let { calendarObject, calendarObjectInstance, objectId, recurrenceId } = _ref; state.isNew = false; state.calendarObject = calendarObject; state.calendarObjectInstance = calendarObjectInstance; state.existingEvent.objectId = objectId; state.existingEvent.recurrenceId = recurrenceId; }, /** * Set a calendar-object-instance that will be opened in the editor (new event) * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObject The calendar-object currently being created * @param {object} data.calendarObjectInstance The calendar-object-instance currently being crated */ setCalendarObjectInstanceForNewEvent(state, _ref2) { let { calendarObject, calendarObjectInstance } = _ref2; state.isNew = true; state.calendarObject = calendarObject; state.calendarObjectInstance = calendarObjectInstance; state.existingEvent.objectId = null; state.existingEvent.recurrenceId = null; }, /** * * @param {object} state The Vuex state */ resetCalendarObjectInstanceObjectIdAndRecurrenceId(state) { state.isNew = false; state.calendarObject = null; state.calendarObjectInstance = null; state.existingEvent.objectId = null; state.existingEvent.recurrenceId = null; }, /** * Change the title of the event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.title The new Title */ changeTitle(state, _ref3) { let { calendarObjectInstance, title } = _ref3; calendarObjectInstance.eventComponent.title = title; calendarObjectInstance.title = title; }, /** * Change the event's start * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {Date} data.startDate New start date to set */ changeStartDate(state, _ref4) { let { calendarObjectInstance, startDate } = _ref4; calendarObjectInstance.eventComponent.startDate.year = startDate.getFullYear(); calendarObjectInstance.eventComponent.startDate.month = startDate.getMonth() + 1; calendarObjectInstance.eventComponent.startDate.day = startDate.getDate(); calendarObjectInstance.eventComponent.startDate.hour = startDate.getHours(); calendarObjectInstance.eventComponent.startDate.minute = startDate.getMinutes(); calendarObjectInstance.eventComponent.startDate.second = 0; const isAllDay = calendarObjectInstance.eventComponent.isAllDay(); const endDateObj = calendarObjectInstance.eventComponent.endDate.clone(); const startDateObj = calendarObjectInstance.eventComponent.startDate.clone(); if (isAllDay) { endDateObj.addDuration(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DurationValue.fromSeconds(-1 * 60 * 60 * 24)); if (endDateObj.compare(startDateObj) === -1) { const timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(endDateObj.timezoneId); calendarObjectInstance.eventComponent.endDate = calendarObjectInstance.eventComponent.startDate.getInTimezone(timezone); calendarObjectInstance.endDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(calendarObjectInstance.eventComponent.endDate); calendarObjectInstance.eventComponent.endDate.addDuration(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DurationValue.fromSeconds(60 * 60 * 24)); } } else { if (endDateObj.compare(startDateObj) === -1) { const timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(endDateObj.timezoneId); calendarObjectInstance.eventComponent.endDate = calendarObjectInstance.eventComponent.startDate.getInTimezone(timezone); calendarObjectInstance.endDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(calendarObjectInstance.eventComponent.endDate); } } calendarObjectInstance.startDate = startDate; }, /** * Change the timezone of the event's start * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.startTimezone New timezone to set for start */ changeStartTimezone(state, _ref5) { let { calendarObjectInstance, startTimezone } = _ref5; const timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(startTimezone); calendarObjectInstance.eventComponent.startDate.replaceTimezone(timezone); calendarObjectInstance.startTimezoneId = startTimezone; // Either both are floating or both have a timezone, but it can't be mixed if (startTimezone === 'floating' || calendarObjectInstance.endTimezoneId === 'floating') { calendarObjectInstance.eventComponent.endDate.replaceTimezone(timezone); calendarObjectInstance.endTimezoneId = startTimezone; } }, /** * Change the event's end * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {Date} data.endDate New end date to set */ changeEndDate(state, _ref6) { let { calendarObjectInstance, endDate } = _ref6; // If the event is using DURATION, endDate is dynamically generated. // In order to alter it, we need to explicitly set DTEND const endDateObject = calendarObjectInstance.eventComponent.endDate; calendarObjectInstance.eventComponent.endDate = endDateObject; calendarObjectInstance.eventComponent.endDate.year = endDate.getFullYear(); calendarObjectInstance.eventComponent.endDate.month = endDate.getMonth() + 1; calendarObjectInstance.eventComponent.endDate.day = endDate.getDate(); calendarObjectInstance.eventComponent.endDate.hour = endDate.getHours(); calendarObjectInstance.eventComponent.endDate.minute = endDate.getMinutes(); calendarObjectInstance.eventComponent.endDate.second = 0; const isAllDay = calendarObjectInstance.eventComponent.isAllDay(); const endDateObj = calendarObjectInstance.eventComponent.endDate.clone(); const startDateObj = calendarObjectInstance.eventComponent.startDate.clone(); if (isAllDay) { if (endDateObj.compare(startDateObj) === -1) { const timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(startDateObj.timezoneId); calendarObjectInstance.eventComponent.startDate = calendarObjectInstance.eventComponent.endDate.getInTimezone(timezone); calendarObjectInstance.startDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(calendarObjectInstance.eventComponent.startDate); } // endDate is inclusive, but DTEND needs to be exclusive, so always add one day calendarObjectInstance.eventComponent.endDate.addDuration(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DurationValue.fromSeconds(60 * 60 * 24)); } else { // Is end before start? if (endDateObj.compare(startDateObj) === -1) { // Is end more than one day before start? endDateObj.addDuration(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DurationValue.fromSeconds(60 * 60 * 24)); if (endDateObj.compare(startDateObj) === -1) { const timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(startDateObj.timezoneId); calendarObjectInstance.eventComponent.startDate = calendarObjectInstance.eventComponent.endDate.getInTimezone(timezone); calendarObjectInstance.startDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(calendarObjectInstance.eventComponent.startDate); } else { // add one day to endDate if the endDate is before the startDate which allows to easily create events that reach over or to 0:00 calendarObjectInstance.eventComponent.endDate.addDuration(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DurationValue.fromSeconds(60 * 60 * 24)); endDate = new Date(endDate.getTime() + 24 * 60 * 60 * 1000); } } } calendarObjectInstance.endDate = endDate; }, /** * Change the timezone of the event's end * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.endTimezone New timezone to set for end */ changeEndTimezone(state, _ref7) { let { calendarObjectInstance, endTimezone } = _ref7; const timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(endTimezone); calendarObjectInstance.eventComponent.endDate.replaceTimezone(timezone); calendarObjectInstance.endTimezoneId = endTimezone; // Either both are floating or both have a timezone, but it can't be mixed if (endTimezone === 'floating' || calendarObjectInstance.startTimezoneId === 'floating') { calendarObjectInstance.eventComponent.startDate.replaceTimezone(timezone); calendarObjectInstance.startTimezoneId = endTimezone; } }, /** * Switch from a timed event to allday or vice versa * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object */ toggleAllDay(state, _ref8) { let { calendarObjectInstance } = _ref8; if (!calendarObjectInstance.eventComponent.canModifyAllDay()) { return; } const isAllDay = calendarObjectInstance.eventComponent.isAllDay(); calendarObjectInstance.eventComponent.startDate.isDate = !isAllDay; calendarObjectInstance.eventComponent.endDate.isDate = !isAllDay; calendarObjectInstance.isAllDay = calendarObjectInstance.eventComponent.isAllDay(); // isAllDay = old value if (isAllDay) { calendarObjectInstance.eventComponent.endDate.addDuration(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DurationValue.fromSeconds(-1 * 60 * 60 * 24)); } else { calendarObjectInstance.eventComponent.endDate.addDuration(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DurationValue.fromSeconds(60 * 60 * 24)); } }, /** * Is leave * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object */ toggleIsLeave(state, _ref9) { let { calendarObjectInstance, isLeave } = _ref9; calendarObjectInstance.eventComponent.isLeave = isLeave; calendarObjectInstance.isLeave = isLeave; if (isLeave) { calendarObjectInstance.title = "Congé"; calendarObjectInstance.eventComponent.title = "Congé"; } }, /** * Is Calendar Pending * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object */ toggleIsCalendarPending(state, _ref10) { let { calendarObjectInstance, isCalendarPending } = _ref10; calendarObjectInstance.eventComponent.isCalendarPending = isCalendarPending; calendarObjectInstance.isCalendarPending = isCalendarPending; }, /** * Changes the time of a timed event to the default values * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object */ changeTimeToDefaultForTimedEvents(state, _ref11) { let { calendarObjectInstance } = _ref11; const startDate = calendarObjectInstance.eventComponent.startDate; const endDate = calendarObjectInstance.eventComponent.endDate; if (startDate.hour === 0 && startDate.minute === 0 && endDate.hour === 0 && endDate.minute === 0) { startDate.hour = 10; endDate.hour = 11; calendarObjectInstance.startDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(startDate); calendarObjectInstance.endDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(endDate); } }, /** * Change the location of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.location New location to set */ changeLocation(state, _ref12) { let { calendarObjectInstance, location } = _ref12; // Special case: delete Apple-specific location property to avoid inconsistencies calendarObjectInstance.eventComponent.deleteAllProperties('X-APPLE-STRUCTURED-LOCATION'); calendarObjectInstance.eventComponent.location = location; calendarObjectInstance.location = location; }, /** * Change the comment of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.comment New comment to set */ changeComment(state, _ref13) { let { calendarObjectInstance, comment } = _ref13; calendarObjectInstance.eventComponent.comment = comment; calendarObjectInstance.comment = comment; }, /** * Change the client of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.client New client to set */ changeClient(state, _ref14) { let { calendarObjectInstance, client } = _ref14; calendarObjectInstance.eventComponent.client = client; calendarObjectInstance.client = client; }, /** * Change the embalmer (Thanato) of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.embalmer New embalmer to set */ changeEmbalmer(state, _ref15) { let { calendarObjectInstance, embalmer } = _ref15; calendarObjectInstance.eventComponent.embalmer = embalmer; calendarObjectInstance.embalmer = embalmer; }, /** * Change the description of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.description New description to set */ changeDescription(state, _ref16) { let { calendarObjectInstance, description } = _ref16; // To avoid inconsistencies (bug #3863), remove all parameters (e.g., ALTREP) upon modification const descriptionProperty = calendarObjectInstance.eventComponent.getFirstProperty('Description'); if (descriptionProperty) { for (const parameter of descriptionProperty.getParametersIterator()) { descriptionProperty.deleteParameter(parameter.name); } } // Delete custom description properties calendarObjectInstance.eventComponent.deleteAllProperties('X-ALT-DESC'); calendarObjectInstance.eventComponent.description = description; calendarObjectInstance.description = description; }, /** * Change the access class of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.accessClass New access class to set */ changeAccessClass(state, _ref17) { let { calendarObjectInstance, accessClass } = _ref17; calendarObjectInstance.eventComponent.accessClass = accessClass; calendarObjectInstance.accessClass = accessClass; }, /** * Change the status of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.status New status to set */ changeStatus(state, _ref18) { let { calendarObjectInstance, status } = _ref18; calendarObjectInstance.eventComponent.status = status; calendarObjectInstance.status = status; }, /** * Change the time-transparency of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.timeTransparency New time-transparency to set */ changeTimeTransparency(state, _ref19) { let { calendarObjectInstance, timeTransparency } = _ref19; calendarObjectInstance.eventComponent.timeTransparency = timeTransparency; calendarObjectInstance.timeTransparency = timeTransparency; }, /** * Change the customized color of an event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string | null} data.customColor New color to set */ changeCustomColor(state, _ref20) { let { calendarObjectInstance, customColor } = _ref20; if (customColor === null) { calendarObjectInstance.eventComponent.deleteAllProperties('COLOR'); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(calendarObjectInstance, 'customColor', null); return; } const cssColorName = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_6__.getClosestCSS3ColorNameForHex)(customColor); const hexColorOfCssName = (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_6__.getHexForColorName)(cssColorName); // Abort if either is undefined if (!cssColorName || !hexColorOfCssName) { console.error('Setting custom color failed'); console.error('customColor: ', customColor); console.error('cssColorName: ', cssColorName); console.error('hexColorOfCssName: ', hexColorOfCssName); return; } calendarObjectInstance.eventComponent.color = cssColorName; vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(calendarObjectInstance, 'customColor', hexColorOfCssName); }, /** * Adds an attendee to the event and sets the organizer if not present already * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.commonName Displayname of attendee * @param {string} data.uri Email address of attendee * @param {string} data.calendarUserType Calendar-user-type of attendee (INDIVIDUAL, GROUP, RESOURCE, ROOM) * @param {string} data.participationStatus Participation Status of attendee * @param {string} data.role Role of Attendee * @param {boolean} data.rsvp Whether or not to request a response from the attendee * @param {string=} data.language Preferred language of the attendee * @param {string=} data.timezoneId Preferred timezone of the attendee * @param {object=} data.organizer Principal of the organizer to be set if not present * @param data.member */ addAttendee(state, _ref21) { let { calendarObjectInstance, commonName, uri, calendarUserType = null, participationStatus = null, role = null, rsvp = null, language = null, timezoneId = null, organizer = null, member = null } = _ref21; const attendee = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.AttendeeProperty.fromNameAndEMail(commonName, uri); if (calendarUserType !== null) { attendee.userType = calendarUserType; } if (participationStatus !== null) { attendee.participationStatus = participationStatus; } if (role !== null) { attendee.role = role; } if (rsvp !== null) { attendee.rsvp = rsvp; } if (language !== null) { attendee.language = language; } if (timezoneId !== null) { attendee.updateParameterIfExist('TZID', timezoneId); } if (member !== null) { attendee.updateParameterIfExist('MEMBER', member); } // TODO - use real addAttendeeFrom method calendarObjectInstance.eventComponent.addProperty(attendee); calendarObjectInstance.attendees.push({ commonName, participationStatus, role, rsvp, uri, attendeeProperty: attendee }); if (!calendarObjectInstance.organizer && organizer) { this.commit('setOrganizer', { calendarObjectInstance, commonName: organizer.displayname, email: organizer.emailAddress }); } }, /** * Removes an attendee from the event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.attendee The attendee object to remove */ removeAttendee(state, _ref22) { let { calendarObjectInstance, attendee } = _ref22; calendarObjectInstance.eventComponent.removeAttendee(attendee.attendeeProperty); // Also remove members if attendee is a group if (attendee.attendeeProperty.userType === 'GROUP') { attendee.members.forEach(function (member) { calendarObjectInstance.eventComponent.removeAttendee(member.attendeeProperty); const index = calendarObjectInstance.attendees.indexOf(member); if (index !== -1) { calendarObjectInstance.attendees.splice(index, 1); } }); } const index = calendarObjectInstance.attendees.indexOf(attendee); if (index !== -1) { calendarObjectInstance.attendees.splice(index, 1); } }, /** * Changes an attendees' participation status * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.attendee The attendee object * @param {string} data.participationStatus New Participation Status of attendee */ changeAttendeesParticipationStatus(state, _ref23) { let { attendee, participationStatus } = _ref23; attendee.attendeeProperty.participationStatus = participationStatus; attendee.participationStatus = participationStatus; }, /** * Changes an attendees' role * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.attendee The attendee object * @param {string} data.role New role of attendee */ changeAttendeesRole(state, _ref24) { let { attendee, role } = _ref24; attendee.attendeeProperty.role = role; attendee.role = role; }, /** * Changes an attendees' RVSP * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.attendee The attendee object */ toggleAttendeeRSVP(state, _ref25) { let { attendee } = _ref25; const oldRSVP = attendee.attendeeProperty.rsvp; attendee.attendeeProperty.rsvp = !oldRSVP; attendee.rsvp = !oldRSVP; }, /** * Set the event's organizer * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string=} data.commonName Displayname of organizer * @param {string} data.email Email-address of organizer */ setOrganizer(state, _ref26) { let { calendarObjectInstance, commonName = null, email } = _ref26; calendarObjectInstance.eventComponent.setOrganizerFromNameAndEMail(commonName, email); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(calendarObjectInstance, 'organizer', {}); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(calendarObjectInstance.organizer, 'commonName', commonName); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(calendarObjectInstance.organizer, 'uri', email); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(calendarObjectInstance.organizer, 'attendeeProperty', calendarObjectInstance.eventComponent.getFirstProperty('ORGANIZER')); }, /** * Adds a category to the event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.category Category to add */ addCategory(state, _ref27) { let { calendarObjectInstance, category } = _ref27; calendarObjectInstance.eventComponent.addCategory(category); calendarObjectInstance.categories.push(category); }, /** * Removes a category from the event * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.category Category to remove */ removeCategory(state, _ref28) { let { calendarObjectInstance, category } = _ref28; calendarObjectInstance.eventComponent.removeCategory(category); const index = calendarObjectInstance.categories.indexOf(category); if (index !== -1) { calendarObjectInstance.categories.splice(index, 1); } }, /** * Change the interval of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.interval The new interval to set */ changeRecurrenceInterval(state, _ref29) { let { calendarObjectInstance, recurrenceRule, interval } = _ref29; if (recurrenceRule.recurrenceRuleValue) { recurrenceRule.recurrenceRuleValue.interval = interval; recurrenceRule.interval = interval; console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the frequency of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.frequency The new frequency to set */ changeRecurrenceFrequency(state, _ref30) { let { calendarObjectInstance, recurrenceRule, frequency } = _ref30; if (recurrenceRule.recurrenceRuleValue) { recurrenceRule.recurrenceRuleValue.frequency = frequency; recurrenceRule.frequency = frequency; console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the count limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.count The new count to set */ changeRecurrenceCount(state, _ref31) { let { calendarObjectInstance, recurrenceRule, count } = _ref31; if (recurrenceRule.recurrenceRuleValue) { recurrenceRule.recurrenceRuleValue.count = count; recurrenceRule.count = count; recurrenceRule.until = null; console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the until limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {Date} data.until The new until to set */ changeRecurrenceUntil(state, _ref32) { let { calendarObjectInstance, recurrenceRule, until } = _ref32; if (recurrenceRule.recurrenceRuleValue) { // RFC 5545, setion 3.3.10: until must be in UTC if the start time is timezone-aware if (calendarObjectInstance.startTimezoneId !== 'floating') { recurrenceRule.recurrenceRuleValue.until = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DateTimeValue.fromJSDate(until, { zone: 'utc' }); } else { recurrenceRule.recurrenceRuleValue.until = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DateTimeValue.fromJSDate(until); } recurrenceRule.until = until; recurrenceRule.count = null; console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Changes the recurrence-rule to never end * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ changeRecurrenceToInfinite(state, _ref33) { let { calendarObjectInstance, recurrenceRule } = _ref33; if (recurrenceRule.recurrenceRuleValue) { recurrenceRule.recurrenceRuleValue.setToInfinite(); recurrenceRule.until = null; recurrenceRule.count = null; console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Reset the By-parts of the recurrence rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ resetRecurrenceByParts(state, _ref34) { let { calendarObjectInstance, recurrenceRule } = _ref34; if (recurrenceRule.recurrenceRuleValue) { const parts = ['BYSECOND', 'BYMINUTE', 'BYHOUR', 'BYDAY', 'BYMONTHDAY', 'BYYEARDAY', 'BYWEEKNO', 'BYMONTH', 'BYSETPOS']; for (const part of parts) { recurrenceRule.recurrenceRuleValue.setComponent(part, []); } vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(recurrenceRule, 'byDay', []); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(recurrenceRule, 'byMonth', []); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(recurrenceRule, 'byMonthDay', []); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(recurrenceRule, 'bySetPosition', null); console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Reset the By-parts of the recurrence rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ setDefaultRecurrenceByPartsForWeekly(state, _ref35) { let { calendarObjectInstance, recurrenceRule } = _ref35; if (recurrenceRule.recurrenceRuleValue) { const byDay = (0,_utils_recurrence_js__WEBPACK_IMPORTED_MODULE_3__.getWeekDayFromDate)(calendarObjectInstance.startDate); recurrenceRule.recurrenceRuleValue.setComponent('BYDAY', [byDay]); recurrenceRule.byDay.push(byDay); console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Reset the By-parts of the recurrence rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ setDefaultRecurrenceByPartsForMonthly(state, _ref36) { let { calendarObjectInstance, recurrenceRule } = _ref36; if (recurrenceRule.recurrenceRuleValue) { const byMonthDay = calendarObjectInstance.startDate.getDate().toString(); recurrenceRule.recurrenceRuleValue.setComponent('BYMONTHDAY', [byMonthDay]); recurrenceRule.byMonthDay.push(byMonthDay); console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ setDefaultRecurrenceByPartsForMonthlyBySetPosition(state, _ref37) { let { calendarObjectInstance, recurrenceRule } = _ref37; if (recurrenceRule.recurrenceRuleValue) { const { byDay, bySetPosition } = (0,_utils_recurrence_js__WEBPACK_IMPORTED_MODULE_3__.getBySetPositionAndBySetFromDate)(calendarObjectInstance.startDate); recurrenceRule.recurrenceRuleValue.setComponent('BYDAY', [byDay]); recurrenceRule.recurrenceRuleValue.setComponent('BYSETPOS', [bySetPosition]); recurrenceRule.byDay.push(byDay); recurrenceRule.bySetPosition = bySetPosition; console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Reset the By-parts of the recurrence rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ setDefaultRecurrenceByPartsForYearly(state, _ref38) { let { calendarObjectInstance, recurrenceRule } = _ref38; if (recurrenceRule.recurrenceRuleValue) { const byMonth = calendarObjectInstance.startDate.getMonth() + 1; // Javascript months are zero-based recurrenceRule.recurrenceRuleValue.setComponent('BYMONTH', [byMonth]); recurrenceRule.byMonth.push(byMonth); console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the until limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.byDay The new until to set */ addByDayToRecurrenceRule(state, _ref39) { let { calendarObjectInstance, recurrenceRule, byDay } = _ref39; if (recurrenceRule.recurrenceRuleValue) { const byDayList = recurrenceRule.recurrenceRuleValue.getComponent('BYDAY'); const index = byDayList.indexOf(byDay); if (index === -1) { byDayList.push(byDay); recurrenceRule.recurrenceRuleValue.setComponent('BYDAY', byDayList); } const index2 = recurrenceRule.byDay.indexOf(byDay); if (index2 === -1) { recurrenceRule.byDay.push(byDay); } console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the until limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.byDay The new until to set */ removeByDayFromRecurrenceRule(state, _ref40) { let { calendarObjectInstance, recurrenceRule, byDay } = _ref40; if (recurrenceRule.recurrenceRuleValue) { const byDayList = recurrenceRule.recurrenceRuleValue.getComponent('BYDAY'); const index = byDayList.indexOf(byDay); if (index !== -1) { byDayList.splice(index, 1); recurrenceRule.recurrenceRuleValue.setComponent('BYDAY', byDayList); } const index2 = recurrenceRule.byDay.indexOf(byDay); if (index2 !== -1) { recurrenceRule.byDay.splice(index2, 1); } console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the until limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.byMonthDay The new until to set */ addByMonthDayToRecurrenceRule(state, _ref41) { let { calendarObjectInstance, recurrenceRule, byMonthDay } = _ref41; if (recurrenceRule.recurrenceRuleValue) { const byMonthDayList = recurrenceRule.recurrenceRuleValue.getComponent('BYMONTHDAY'); const index = byMonthDayList.indexOf(byMonthDay); if (index === -1) { byMonthDayList.push(byMonthDay); recurrenceRule.recurrenceRuleValue.setComponent('BYMONTHDAY', byMonthDayList); } const index2 = recurrenceRule.byMonthDay.indexOf(byMonthDay); if (index2 === -1) { recurrenceRule.byMonthDay.push(byMonthDay); } console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the until limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.byMonthDay The new until to set */ removeByMonthDayFromRecurrenceRule(state, _ref42) { let { calendarObjectInstance, recurrenceRule, byMonthDay } = _ref42; if (recurrenceRule.recurrenceRuleValue) { const byMonthDayList = recurrenceRule.recurrenceRuleValue.getComponent('BYMONTHDAY'); const index = byMonthDayList.indexOf(byMonthDay); if (index !== -1) { byMonthDayList.splice(index, 1); recurrenceRule.recurrenceRuleValue.setComponent('BYMONTHDAY', byMonthDayList); } const index2 = recurrenceRule.byMonthDay.indexOf(byMonthDay); if (index2 !== -1) { recurrenceRule.byMonthDay.splice(index2, 1); } console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the until limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.byMonth The new until to set */ addByMonthToRecurrenceRule(state, _ref43) { let { calendarObjectInstance, recurrenceRule, byMonth } = _ref43; if (recurrenceRule.recurrenceRuleValue) { console.debug('addByMonthToRecurrenceRule', byMonth); const byMonthList = recurrenceRule.recurrenceRuleValue.getComponent('BYMONTH'); const index = byMonthList.indexOf(byMonth); if (index === -1) { byMonthList.push(byMonth); recurrenceRule.recurrenceRuleValue.setComponent('BYMONTH', byMonthList); } const index2 = recurrenceRule.byMonth.indexOf(byMonth); if (index2 === -1) { recurrenceRule.byMonth.push(byMonth); } console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the until limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.byMonth The new until to set */ removeByMonthFromRecurrenceRule(state, _ref44) { let { calendarObjectInstance, recurrenceRule, byMonth } = _ref44; if (recurrenceRule.recurrenceRuleValue) { console.debug('removeByMonthFromRecurrenceRule', byMonth); const byMonthList = recurrenceRule.recurrenceRuleValue.getComponent('BYMONTH'); const index = byMonthList.indexOf(byMonth); if (index !== -1) { byMonthList.splice(index, 1); recurrenceRule.recurrenceRuleValue.setComponent('BYMONTH', byMonthList); } const index2 = recurrenceRule.byMonth.indexOf(byMonth); if (index2 !== -1) { recurrenceRule.byMonth.splice(index2, 1); } console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string[]} data.byDay The new until to set */ changeRecurrenceByDay(state, _ref45) { let { calendarObjectInstance, recurrenceRule, byDay } = _ref45; if (recurrenceRule.recurrenceRuleValue) { recurrenceRule.recurrenceRuleValue.setComponent('BYDAY', byDay); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(recurrenceRule, 'byDay', byDay); console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Change the until limit of the recurrence-rule * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify * @param {string} data.bySetPosition The new until to set */ changeRecurrenceBySetPosition(state, _ref46) { let { calendarObjectInstance, recurrenceRule, bySetPosition } = _ref46; if (recurrenceRule.recurrenceRuleValue) { recurrenceRule.recurrenceRuleValue.setComponent('BYSETPOS', [bySetPosition]); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(recurrenceRule, 'bySetPosition', bySetPosition); console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ unsetRecurrenceBySetPosition(state, _ref47) { let { calendarObjectInstance, recurrenceRule } = _ref47; if (recurrenceRule.recurrenceRuleValue) { recurrenceRule.recurrenceRuleValue.setComponent('BYSETPOS', []); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(recurrenceRule, 'bySetPosition', null); console.debug(recurrenceRule.recurrenceRuleValue._innerValue.toString()); } }, /** * Remove the recurrence-rule from the calendarObjectInstance * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ removeRecurrenceRuleFromCalendarObjectInstance(state, _ref48) { let { calendarObjectInstance, recurrenceRule } = _ref48; if (recurrenceRule.recurrenceRuleValue) { calendarObjectInstance.eventComponent.deleteAllProperties('RRULE'); vue__WEBPACK_IMPORTED_MODULE_14__["default"].set(calendarObjectInstance, 'recurrenceRule', (0,_models_event_js__WEBPACK_IMPORTED_MODULE_4__.getDefaultEventObject)().recurrenceRule); console.debug(calendarObjectInstance); console.debug(recurrenceRule); } }, /** * Add a new recurrence-rule to the calendarObjectInstance * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object */ addRecurrenceRuleFromCalendarObjectInstance(state, _ref49) { let { calendarObjectInstance } = _ref49; const recurrenceValue = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.RecurValue.fromData({}); const recurrenceProperty = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Property('RRULE', recurrenceValue); calendarObjectInstance.eventComponent.addProperty(recurrenceProperty); calendarObjectInstance.recurrenceRule.recurrenceRuleValue = recurrenceValue; }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.recurrenceRule The recurrenceRule object to modify */ markRecurrenceRuleAsSupported(state, _ref50) { let { calendarObjectInstance, recurrenceRule } = _ref50; recurrenceRule.isUnsupported = false; }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object * @param {string} data.type New type of alarm */ changeAlarmType(state, _ref51) { let { calendarObjectInstance, alarm, type } = _ref51; if (alarm.alarmComponent) { alarm.alarmComponent.action = type; alarm.type = type; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object * @param {number} data.amount New amount of timed event */ changeAlarmAmountTimed(state, _ref52) { let { calendarObjectInstance, alarm, amount } = _ref52; if (alarm.alarmComponent) { alarm.alarmComponent.trigger.value.totalSeconds = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__.getTotalSecondsFromAmountAndUnitForTimedEvents)(amount, alarm.relativeUnitTimed, alarm.relativeIsBefore); alarm.relativeAmountTimed = amount; alarm.relativeTrigger = alarm.alarmComponent.trigger.value.totalSeconds; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object * @param {string} data.unit New unit of timed event */ changeAlarmUnitTimed(state, _ref53) { let { calendarObjectInstance, alarm, unit } = _ref53; if (alarm.alarmComponent) { alarm.alarmComponent.trigger.value.totalSeconds = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__.getTotalSecondsFromAmountAndUnitForTimedEvents)(alarm.relativeAmountTimed, unit, alarm.relativeIsBefore); alarm.relativeUnitTimed = unit; alarm.relativeTrigger = alarm.alarmComponent.trigger.value.totalSeconds; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object * @param {number} data.amount New amount of all-day event */ changeAlarmAmountAllDay(state, _ref54) { let { calendarObjectInstance, alarm, amount } = _ref54; if (alarm.alarmComponent) { alarm.alarmComponent.trigger.value.totalSeconds = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__.getTotalSecondsFromAmountHourMinutesAndUnitForAllDayEvents)(amount, alarm.relativeHoursAllDay, alarm.relativeMinutesAllDay, alarm.relativeUnitAllDay); alarm.relativeAmountAllDay = amount; alarm.relativeTrigger = alarm.alarmComponent.trigger.value.totalSeconds; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object * @param {string} data.unit New Unit of all-day event */ changeAlarmUnitAllDay(state, _ref55) { let { calendarObjectInstance, alarm, unit } = _ref55; if (alarm.alarmComponent) { alarm.alarmComponent.trigger.value.totalSeconds = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__.getTotalSecondsFromAmountHourMinutesAndUnitForAllDayEvents)(alarm.relativeAmountAllDay, alarm.relativeHoursAllDay, alarm.relativeMinutesAllDay, unit); alarm.relativeUnitAllDay = unit; alarm.relativeTrigger = alarm.alarmComponent.trigger.value.totalSeconds; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object * @param {number} data.hours New Hour * @param {number} data.minutes New Minutes */ changeAlarmHoursMinutesAllDay(state, _ref56) { let { calendarObjectInstance, alarm, hours, minutes } = _ref56; if (alarm.alarmComponent) { alarm.alarmComponent.trigger.value.totalSeconds = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__.getTotalSecondsFromAmountHourMinutesAndUnitForAllDayEvents)(alarm.relativeAmountAllDay, hours, minutes, alarm.relativeUnitAllDay); alarm.relativeHoursAllDay = hours; alarm.relativeMinutesAllDay = minutes; alarm.relativeTrigger = alarm.alarmComponent.trigger.value.totalSeconds; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object * @param {Date} data.date New date object */ changeAlarmAbsoluteDate(state, _ref57) { let { calendarObjectInstance, alarm, date } = _ref57; if (alarm.alarmComponent) { alarm.alarmComponent.trigger.value.year = date.getFullYear(); alarm.alarmComponent.trigger.value.month = date.getMonth() + 1; alarm.alarmComponent.trigger.value.day = date.getDate(); alarm.alarmComponent.trigger.value.hour = date.getHours(); alarm.alarmComponent.trigger.value.minute = date.getMinutes(); alarm.alarmComponent.trigger.value.second = 0; alarm.absoluteDate = date; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object * @param {string} data.timezoneId New timezoneId */ changeAlarmAbsoluteTimezoneId(state, _ref58) { let { calendarObjectInstance, alarm, timezoneId } = _ref58; if (alarm.alarmComponent) { const timezone = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_0__["default"])().getTimezoneForId(timezoneId); alarm.alarmComponent.trigger.value.replaceTimezone(timezone); alarm.absoluteTimezoneId = timezoneId; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object */ changeAlarmFromRelativeToAbsolute(state, _ref59) { let { calendarObjectInstance, alarm } = _ref59; if (alarm.alarmComponent) { const triggerDateTime = calendarObjectInstance.eventComponent.startDate.clone(); // The trigger of an alarm must be DATE-TIME, startDate can be either. triggerDateTime.isDate = false; triggerDateTime.addDuration(alarm.alarmComponent.trigger.value); alarm.alarmComponent.setTriggerFromAbsolute(triggerDateTime); alarm.absoluteDate = (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_1__.getDateFromDateTimeValue)(alarm.alarmComponent.trigger.value); alarm.absoluteTimezoneId = alarm.alarmComponent.trigger.value.timezoneId; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object */ changeAlarmFromAbsoluteToRelative(state, _ref60) { let { calendarObjectInstance, alarm } = _ref60; if (alarm.alarmComponent) { const duration = alarm.alarmComponent.trigger.value.subtractDateWithTimezone(calendarObjectInstance.eventComponent.startDate); alarm.alarmComponent.setTriggerFromRelative(duration); alarm.relativeIsBefore = alarm.alarmComponent.trigger.value.isNegative; alarm.relativeIsRelatedToStart = true; alarm.relativeTrigger = duration.totalSeconds; } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.alarm The alarm object */ resetAlarmRelativeParts(state, _ref61) { let { alarm } = _ref61; alarm.relativeIsBefore = null; alarm.relativeIsRelatedToStart = null; alarm.relativeUnitTimed = null; alarm.relativeAmountTimed = null; alarm.relativeUnitAllDay = null; alarm.relativeAmountAllDay = null; alarm.relativeHoursAllDay = null; alarm.relativeMinutesAllDay = null; alarm.relativeTrigger = null; }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.alarm The alarm object */ resetAlarmAbsoluteParts(state, _ref62) { let { alarm } = _ref62; alarm.absoluteDate = null; alarm.absoluteTimezoneId = null; }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object */ updateAlarmAllDayParts(state, _ref63) { let { calendarObjectInstance, alarm } = _ref63; if (alarm.alarmComponent) { const totalSeconds = alarm.alarmComponent.trigger.value.totalSeconds; const allDayParts = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__.getAmountHoursMinutesAndUnitForAllDayEvents)(totalSeconds); alarm.relativeUnitAllDay = allDayParts.unit; alarm.relativeAmountAllDay = allDayParts.amount; alarm.relativeHoursAllDay = allDayParts.hours; alarm.relativeMinutesAllDay = allDayParts.minutes; } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object */ updateAlarmTimedParts(state, _ref64) { let { calendarObjectInstance, alarm } = _ref64; if (alarm.alarmComponent) { const totalSeconds = alarm.alarmComponent.trigger.value.totalSeconds; const timedParts = (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__.getAmountAndUnitForTimedEvents)(totalSeconds); alarm.relativeUnitTimed = timedParts.unit; alarm.relativeAmountTimed = timedParts.amount; console.debug(alarm.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {string} data.type Type of alarm * @param {number} data.totalSeconds Total amount of seconds for new alarm */ addAlarmToCalendarObjectInstance(state, _ref65) { let { calendarObjectInstance, type, totalSeconds } = _ref65; if (calendarObjectInstance.eventComponent) { const eventComponent = calendarObjectInstance.eventComponent; const duration = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DurationValue.fromSeconds(totalSeconds); const alarmComponent = eventComponent.addRelativeAlarm(type, duration); const alarmObject = (0,_models_alarm_js__WEBPACK_IMPORTED_MODULE_7__.mapAlarmComponentToAlarmObject)(alarmComponent); calendarObjectInstance.alarms.push(alarmObject); console.debug(alarmObject.alarmComponent.toICALJs().toString()); } }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.alarm The alarm object */ removeAlarmFromCalendarObjectInstance(state, _ref66) { let { calendarObjectInstance, alarm } = _ref66; if (alarm.alarmComponent) { calendarObjectInstance.eventComponent.removeAlarm(alarm.alarmComponent); const index = calendarObjectInstance.alarms.indexOf(alarm); if (index !== -1) { calendarObjectInstance.alarms.splice(index, 1); } } }, /** * @deprecated * @param state * @param calendarObjectInstance.calendarObjectInstance * @param calendarObjectInstance * @param calendarObjectInstance.sharedData * @param sharedData */ addAttachmentBySharedData(state, _ref67) { let { calendarObjectInstance, sharedData } = _ref67; const attachment = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.AttachmentProperty.fromLink(sharedData.url); const fileName = sharedData.fileName; // hot-fix needed temporary, becase calendar-js has no fileName get-setter const parameterFileName = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Parameter('FILENAME', fileName); // custom has-preview parameter from dav file const xNcHasPreview = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Parameter('X-NC-HAS-PREVIEW', sharedData['has-preview'].toString()); // custom file id parameter from dav file const xNcFileId = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Parameter('X-NC-FILE-ID', sharedData.fileid.toString()); // custom share-types parameter from dav file const xNcSharedTypes = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Parameter('X-NC-SHARED-TYPES', sharedData['share-types']['share-type'] ? sharedData['share-types']['share-type'].join(',') : ''); attachment.setParameter(parameterFileName); attachment.setParameter(xNcFileId); attachment.setParameter(xNcHasPreview); attachment.setParameter(xNcSharedTypes); attachment.isNew = true; attachment.shareTypes = sharedData['share-types']['share-type'] ? sharedData['share-types']['share-type'].join(',') : ''; attachment.fileName = fileName; attachment.xNcFileId = sharedData.fileid; attachment.xNcHasPreview = sharedData['has-preview']; attachment.formatType = sharedData.getcontenttype; attachment.uri = sharedData.url ? sharedData.url : (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_12__.generateUrl)("/f/".concat(sharedData.fileid)); calendarObjectInstance.eventComponent.addProperty(attachment); calendarObjectInstance.attachments.push(attachment); // console.log(attachment) }, addAttachmentWithProperty(state, _ref68) { var _ref69, _sharedData$shareTyp, _sharedData$shareTyp2, _sharedData$shareTyp3; let { calendarObjectInstance, sharedData } = _ref68; const attachment = {}; const fileName = sharedData.fileName; attachment.isNew = true; attachment.shareTypes = (_ref69 = typeof (sharedData === null || sharedData === void 0 || (_sharedData$shareTyp = sharedData['share-types']) === null || _sharedData$shareTyp === void 0 ? void 0 : _sharedData$shareTyp['share-type']) === 'number' ? sharedData === null || sharedData === void 0 || (_sharedData$shareTyp2 = sharedData['share-types']) === null || _sharedData$shareTyp2 === void 0 || (_sharedData$shareTyp2 = _sharedData$shareTyp2['share-type']) === null || _sharedData$shareTyp2 === void 0 ? void 0 : _sharedData$shareTyp2.toString() : sharedData === null || sharedData === void 0 || (_sharedData$shareTyp3 = sharedData['share-types']) === null || _sharedData$shareTyp3 === void 0 || (_sharedData$shareTyp3 = _sharedData$shareTyp3['share-type']) === null || _sharedData$shareTyp3 === void 0 ? void 0 : _sharedData$shareTyp3.join(',')) !== null && _ref69 !== void 0 ? _ref69 : null; attachment.fileName = fileName; attachment.xNcFileId = sharedData.fileid; attachment.xNcHasPreview = sharedData['has-preview']; attachment.formatType = sharedData.getcontenttype; attachment.uri = sharedData.url ? sharedData.url : (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_12__.generateUrl)("/f/".concat(sharedData.fileid)); const attachmentProperty = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.AttachmentProperty.fromLink(attachment.uri, attachment.formatType); const parameterFileName = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Parameter('FILENAME', fileName); const xNcHasPreview = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Parameter('X-NC-HAS-PREVIEW', attachment.xNcHasPreview.toString()); const xNcFileId = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Parameter('X-NC-FILE-ID', attachment.xNcFileId.toString()); // ADD X-NC-SHARED-TYPES only if sharet-type not empty if (attachment.shareTypes !== null) { const xNcSharedTypes = new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.Parameter('X-NC-SHARED-TYPES', attachment.shareTypes); attachmentProperty.setParameter(xNcSharedTypes); } attachmentProperty.setParameter(parameterFileName); attachmentProperty.setParameter(xNcFileId); attachmentProperty.setParameter(xNcHasPreview); attachmentProperty.uri = attachment.uri; attachment.attachmentProperty = attachmentProperty; calendarObjectInstance.eventComponent.addProperty(attachmentProperty); calendarObjectInstance.attachments.push(attachment); }, /** * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {object} data.calendarObjectInstance The calendarObjectInstance object * @param {object} data.attachment The attachment object */ deleteAttachment(state, _ref70) { let { calendarObjectInstance, attachment } = _ref70; try { const index = calendarObjectInstance.attachments.indexOf(attachment); if (index !== -1) { calendarObjectInstance.attachments.splice(index, 1); } calendarObjectInstance.eventComponent.removeAttachment(attachment.attachmentProperty); } catch {} } }; const getters = {}; const actions = { /** * Returns the closest existing recurrence-id of a calendar-object * close to the given date. * This is either the next occurrence in the future or * in case there are no more future occurrences the closest * occurrence in the past * * @param {object} vuex The vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.dispatch The Vuex dispatch function * @param {Function} vuex.commit The Vuex commit function * @param {object} data The destructuring object * @param {string} data.objectId The objectId of the calendar-object to edit * @param {Date} data.closeToDate The date to get a close occurrence to * @return {Promise} */ async resolveClosestRecurrenceIdForCalendarObject(_ref71, _ref72) { let { state, dispatch, commit } = _ref71; let { objectId, closeToDate } = _ref72; const calendarObject = await dispatch('getEventByObjectId', { objectId }); const iterator = calendarObject.calendarComponent.getVObjectIterator(); const firstVObject = iterator.next().value; const d = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DateTimeValue.fromJSDate(closeToDate, true); return firstVObject.recurrenceManager.getClosestOccurrence(d).getReferenceRecurrenceId().unixTime; }, /** * Gets the calendar-object and calendar-object-instance * for a given objectId and recurrenceId. * * If the recurrenceId does not represent a valid instance, * an error will be thrown. * * @param {object} vuex The vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.dispatch The Vuex dispatch function * @param {Function} vuex.commit The Vuex commit function * @param {object} data The destructuring object * @param {string} data.objectId The objectId of the calendar-object to edit * @param {number} data.recurrenceId The recurrence-id to edit * @return {Promise<{calendarObject: object, calendarObjectInstance: object}>} */ async getCalendarObjectInstanceByObjectIdAndRecurrenceId(_ref73, _ref74) { let { state, dispatch, commit } = _ref73; let { objectId, recurrenceId } = _ref74; if (state.existingEvent.objectId === objectId && state.existingEvent.recurrenceId === recurrenceId) { return Promise.resolve({ calendarObject: state.calendarObject, calendarObjectInstance: state.calendarObjectInstance }); } const recurrenceIdDate = new Date(recurrenceId * 1000); const calendarObject = await dispatch('getEventByObjectId', { objectId }); const eventComponent = (0,_utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_8__.getObjectAtRecurrenceId)(calendarObject, recurrenceIdDate); if (eventComponent === null) { throw new Error('Not a valid recurrence-id'); } const calendarObjectInstance = (0,_models_event_js__WEBPACK_IMPORTED_MODULE_4__.mapEventComponentToEventObject)(eventComponent); commit('setCalendarObjectInstanceForExistingEvent', { calendarObject, calendarObjectInstance, objectId, recurrenceId }); return { calendarObject, calendarObjectInstance }; }, /** * Gets the new calendar-object-instance. * * @param {object} vuex The vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.dispatch The Vuex dispatch function * @param {Function} vuex.commit The Vuex commit function * @param {object} data The destructuring object * @param {boolean} data.isAllDay Whether or not the new event is supposed to be all-day * @param {number} data.start The start of the new event (unixtime) * @param {number} data.end The end of the new event (unixtime) * @param {string} data.timezoneId The timezoneId of the new event * @return {Promise<{calendarObject: object, calendarObjectInstance: object}>} */ async getCalendarObjectInstanceForNewEvent(_ref75, _ref76) { let { state, dispatch, commit } = _ref75; let { isAllDay, start, end, timezoneId } = _ref76; if (state.isNew === true) { return Promise.resolve({ calendarObject: state.calendarObject, calendarObjectInstance: state.calendarObjectInstance }); } const calendarObject = await dispatch('createNewEvent', { start, end, isAllDay, timezoneId }); const startDate = new Date(start * 1000); const eventComponent = (0,_utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_8__.getObjectAtRecurrenceId)(calendarObject, startDate); const calendarObjectInstance = (0,_models_event_js__WEBPACK_IMPORTED_MODULE_4__.mapEventComponentToEventObject)(eventComponent); // Add an alarm if the user set a default one in the settings. If // not, defaultReminder will not be a number (rather the string "none"). const defaultReminder = parseInt(_settings_js__WEBPACK_IMPORTED_MODULE_10__["default"].state.defaultReminder); if (!isNaN(defaultReminder)) { commit('addAlarmToCalendarObjectInstance', { calendarObjectInstance, type: 'DISPLAY', totalSeconds: defaultReminder }); _utils_logger_js__WEBPACK_IMPORTED_MODULE_9__["default"].debug("Added defaultReminder (".concat(defaultReminder, "s) to newly created event")); } // Add default status const rfcProps = (0,_models_rfcProps_js__WEBPACK_IMPORTED_MODULE_11__.getRFCProperties)(); const status = rfcProps.status.defaultValue; commit('changeStatus', { calendarObjectInstance, status }); commit('setCalendarObjectInstanceForNewEvent', { calendarObject, calendarObjectInstance }); return { calendarObject, calendarObjectInstance }; }, /** * Updates the existing calendar-object-instance. * * @param {object} vuex The vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.dispatch The Vuex dispatch function * @param {Function} vuex.commit The Vuex commit function * @param {object} data The destructuring object * @param {boolean} data.isAllDay Whether or not the new event is supposed to be all-day * @param {number} data.start The start of the new event (unixtime) * @param {number} data.end The end of the new event (unixtime) * @param {string} data.timezoneId The timezoneId of the new event * @return {Promise<{calendarObject: object, calendarObjectInstance: object}>} */ async updateCalendarObjectInstanceForNewEvent(_ref77, _ref78) { let { state, dispatch, commit } = _ref77; let { isAllDay, start, end, timezoneId } = _ref78; await dispatch('updateTimeOfNewEvent', { calendarObjectInstance: state.calendarObjectInstance, start, end, isAllDay, timezoneId }); commit('setCalendarObjectInstanceForNewEvent', { calendarObject: state.calendarObject, calendarObjectInstance: state.calendarObjectInstance }); return { calendarObject: state.calendarObject, calendarObjectInstance: state.calendarObjectInstance }; }, /** * Saves changes made to a single calendar-object-instance * * @param {object} vuex The vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.dispatch The Vuex dispatch function * @param {Function} vuex.commit The Vuex commit function * @param {object} data The destructuring object * @param {boolean} data.thisAndAllFuture Whether or not to save changes for all future occurrences or just this one * @param {string} data.calendarId The new calendar-id to store it in * @return {Promise} */ async saveCalendarObjectInstance(_ref79, _ref80) { let { state, dispatch, commit } = _ref79; let { thisAndAllFuture, calendarId } = _ref80; const eventComponent = state.calendarObjectInstance.eventComponent; const calendarObject = state.calendarObject; (0,_utils_alarms_js__WEBPACK_IMPORTED_MODULE_5__.updateAlarms)(eventComponent); (0,_services_talkService_js__WEBPACK_IMPORTED_MODULE_13__.updateTalkParticipants)(eventComponent); let client = eventComponent.client; let additionalFieldWasUpdated = eventComponent.client != null || eventComponent.comment != null || eventComponent.isLeave != null || eventComponent.isCalendarPending != null; if (eventComponent.isDirty() || additionalFieldWasUpdated) { const isForkedItem = eventComponent.primaryItem !== null; let original = null; let fork = null; // We check if two things apply: // - primaryItem !== null -> Is this a fork or not? // - eventComponent.canCreateRecurrenceExceptions() - Can we create a recurrence-exception for this item if (isForkedItem && eventComponent.canCreateRecurrenceExceptions()) { [original, fork] = eventComponent.createRecurrenceException(thisAndAllFuture); } await dispatch('updateCalendarObject', { calendarObject }); if (original !== null && fork !== null && original.root !== fork.root) { await dispatch('createCalendarObjectFromFork', { eventComponent: fork, calendarId }); } } if (calendarId !== state.calendarObject.calendarId) { await dispatch('moveCalendarObject', { calendarObject, newCalendarId: calendarId }); } }, /** * Duplicate calendar-object-instance * * @param {object} vuex The vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.dispatch The Vuex dispatch function * @param {Function} vuex.commit The Vuex commit function * @return {Promise} */ async duplicateCalendarObjectInstance(_ref81) { let { state, dispatch, commit } = _ref81; const oldCalendarObjectInstance = state.calendarObjectInstance; const oldEventComponent = oldCalendarObjectInstance.eventComponent; const startDate = oldEventComponent.startDate.getInUTC(); const endDate = oldEventComponent.endDate.getInUTC(); const calendarObject = await dispatch('createNewEvent', { start: startDate.unixTime, end: endDate.unixTime, timezoneId: oldEventComponent.startDate.timezoneId, isAllDay: oldEventComponent.isAllDay() }); const eventComponent = (0,_utils_calendarObject_js__WEBPACK_IMPORTED_MODULE_8__.getObjectAtRecurrenceId)(calendarObject, startDate.jsDate); (0,_models_event_js__WEBPACK_IMPORTED_MODULE_4__.copyCalendarObjectInstanceIntoEventComponent)(oldCalendarObjectInstance, eventComponent); const calendarObjectInstance = (0,_models_event_js__WEBPACK_IMPORTED_MODULE_4__.mapEventComponentToEventObject)(eventComponent); await commit('setCalendarObjectInstanceForNewEvent', { calendarObject, calendarObjectInstance }); }, /** * Deletes a calendar-object-instance * * @param {object} vuex The vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.dispatch The Vuex dispatch function * @param {Function} vuex.commit The Vuex commit function * @param {object} data The destructuring object * @param {boolean} data.thisAndAllFuture Whether or not to delete all future occurrences or just this one * @return {Promise} */ async deleteCalendarObjectInstance(_ref82, _ref83) { let { state, dispatch, commit } = _ref82; let { thisAndAllFuture } = _ref83; const eventComponent = state.calendarObjectInstance.eventComponent; const isRecurrenceSetEmpty = eventComponent.removeThisOccurrence(thisAndAllFuture); const calendarObject = state.calendarObject; if (isRecurrenceSetEmpty) { await dispatch('deleteCalendarObject', { calendarObject }); } else { await dispatch('updateCalendarObject', { calendarObject }); } }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {Date} data2.startDate The new start-date */ changeStartDate(_ref84, _ref85) { let { commit } = _ref84; let { calendarObjectInstance, startDate } = _ref85; const difference = startDate.getTime() - calendarObjectInstance.startDate.getTime(); const endDate = new Date(calendarObjectInstance.endDate.getTime() + difference); commit('changeStartDate', { calendarObjectInstance, startDate }); commit('changeEndDate', { calendarObjectInstance, endDate }); }, /** * Change the timezone of the event's start * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {string} data2.startTimezone New timezone to set for start */ changeStartTimezone(_ref86, _ref87) { let { commit } = _ref86; let { calendarObjectInstance, startTimezone } = _ref87; commit('changeStartTimezone', { calendarObjectInstance, startTimezone }); // Simulate a change of the start time to trigger the comparison // of start and end and trigger an update of end if necessary commit('changeStartDate', { calendarObjectInstance, startDate: calendarObjectInstance.startDate }); }, /** * Change the timezone of the event's end * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {string} data2.endTimezone New timezone to set for end */ changeEndTimezone(_ref88, _ref89) { let { commit } = _ref88; let { calendarObjectInstance, endTimezone } = _ref89; commit('changeEndTimezone', { calendarObjectInstance, endTimezone }); // Simulate a change of the end time to trigger the comparison // of start and end and trigger an update of start if necessary commit('changeEndDate', { calendarObjectInstance, endDate: calendarObjectInstance.endDate }); }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {Function} data.dispatch The Vuex dispatch function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify * @param {string} data2.frequency The new frequency to set */ changeRecurrenceFrequency(_ref90, _ref91) { let { commit, dispatch } = _ref90; let { calendarObjectInstance, recurrenceRule, frequency } = _ref91; console.debug(calendarObjectInstance); console.debug(recurrenceRule); console.debug(frequency); if (recurrenceRule.frequency === 'NONE' && frequency !== 'NONE') { // Add a new recurrence-rule commit('addRecurrenceRuleFromCalendarObjectInstance', { calendarObjectInstance }); commit('resetRecurrenceByParts', { calendarObjectInstance, recurrenceRule }); commit('changeRecurrenceFrequency', { calendarObjectInstance, recurrenceRule: calendarObjectInstance.recurrenceRule, frequency }); commit('changeRecurrenceInterval', { calendarObjectInstance, recurrenceRule: calendarObjectInstance.recurrenceRule, interval: 1 }); commit('changeRecurrenceToInfinite', { calendarObjectInstance, recurrenceRule: calendarObjectInstance.recurrenceRule }); dispatch('setDefaultRecurrenceByParts', { calendarObjectInstance, recurrenceRule, frequency }); console.debug("changed from none to ".concat(frequency)); } else if (recurrenceRule.frequency !== 'NONE' && frequency === 'NONE') { console.debug('calling removeRecurrenceRuleFromCalendarObjectInstance'); // Remove the recurrence-rule commit('removeRecurrenceRuleFromCalendarObjectInstance', { calendarObjectInstance, recurrenceRule }); } else { // Change frequency of existing recurrence-rule commit('resetRecurrenceByParts', { calendarObjectInstance, recurrenceRule }); commit('changeRecurrenceFrequency', { calendarObjectInstance, recurrenceRule: calendarObjectInstance.recurrenceRule, frequency }); dispatch('setDefaultRecurrenceByParts', { calendarObjectInstance, recurrenceRule, frequency }); } }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify * @param {string} data2.frequency The new frequency to set */ setDefaultRecurrenceByParts(_ref92, _ref93) { let { commit } = _ref92; let { calendarObjectInstance, recurrenceRule, frequency } = _ref93; switch (frequency) { case 'WEEKLY': commit('setDefaultRecurrenceByPartsForWeekly', { calendarObjectInstance, recurrenceRule }); break; case 'MONTHLY': commit('setDefaultRecurrenceByPartsForMonthly', { calendarObjectInstance, recurrenceRule }); break; case 'YEARLY': commit('setDefaultRecurrenceByPartsForYearly', { calendarObjectInstance, recurrenceRule }); break; } }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify */ setRecurrenceToInfinite(_ref94, _ref95) { let { commit } = _ref94; let { calendarObjectInstance, recurrenceRule } = _ref95; commit('changeRecurrenceToInfinite', { calendarObjectInstance, recurrenceRule }); }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify */ changeMonthlyRecurrenceFromByDayToBySetPosition(_ref96, _ref97) { let { commit } = _ref96; let { calendarObjectInstance, recurrenceRule } = _ref97; console.debug('changeMonthlyRecurrenceFromByDayToBySetPosition'); commit('resetRecurrenceByParts', { calendarObjectInstance, recurrenceRule }); commit('setDefaultRecurrenceByPartsForMonthlyBySetPosition', { calendarObjectInstance, recurrenceRule }); }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify */ changeMonthlyRecurrenceFromBySetPositionToByDay(_ref98, _ref99) { let { commit } = _ref98; let { calendarObjectInstance, recurrenceRule } = _ref99; console.debug('changeMonthlyRecurrenceFromBySetPositionToByDay'); commit('resetRecurrenceByParts', { calendarObjectInstance, recurrenceRule }); commit('setDefaultRecurrenceByPartsForMonthly', { calendarObjectInstance, recurrenceRule }); }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify */ enableYearlyRecurrenceBySetPosition(_ref100, _ref101) { let { commit } = _ref100; let { calendarObjectInstance, recurrenceRule } = _ref101; commit('setDefaultRecurrenceByPartsForMonthlyBySetPosition', { calendarObjectInstance, recurrenceRule }); }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify */ disableYearlyRecurrenceBySetPosition(_ref102, _ref103) { let { commit } = _ref102; let { calendarObjectInstance, recurrenceRule } = _ref103; commit('changeRecurrenceByDay', { calendarObjectInstance, recurrenceRule, byDay: [] }); commit('unsetRecurrenceBySetPosition', { calendarObjectInstance, recurrenceRule }); }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify */ enableRecurrenceLimitByUntil(_ref104, _ref105) { let { commit } = _ref104; let { calendarObjectInstance, recurrenceRule } = _ref105; let until; switch (recurrenceRule.frequency) { // Defaults to 7 days case 'DAILY': until = new Date(calendarObjectInstance.startDate.getTime() + 7 * 24 * 60 * 60 * 1000); break; // Defaults to 4 weeks case 'WEEKLY': until = new Date(calendarObjectInstance.startDate.getTime() + 4 * 7 * 24 * 60 * 60 * 1000); break; // Defaults to 10 year case 'YEARLY': until = new Date(calendarObjectInstance.startDate.getFullYear() + 10, calendarObjectInstance.startDate.getMonth(), calendarObjectInstance.startDate.getDate(), 23, 59, 59); break; // Defaults to 12 months case 'MONTHLY': default: until = new Date(calendarObjectInstance.startDate.getFullYear() + 1, calendarObjectInstance.startDate.getMonth(), calendarObjectInstance.startDate.getDate(), 23, 59, 59); break; } commit('changeRecurrenceToInfinite', { calendarObjectInstance, recurrenceRule }); commit('changeRecurrenceUntil', { calendarObjectInstance, recurrenceRule, until }); }, /** * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {object} data2 The destructuring object for data * @param {object} data2.calendarObjectInstance The calendarObjectInstance object * @param {object} data2.recurrenceRule The recurrenceRule object to modify */ enableRecurrenceLimitByCount(_ref106, _ref107) { let { commit } = _ref106; let { calendarObjectInstance, recurrenceRule } = _ref107; commit('changeRecurrenceToInfinite', { calendarObjectInstance, recurrenceRule }); commit('changeRecurrenceCount', { calendarObjectInstance, recurrenceRule, count: 2 // Default value is two }); }, changeAlarmAmountTimed(_ref108, _ref109) { let { commit } = _ref108; let { calendarObjectInstance, alarm, amount } = _ref109; commit('changeAlarmAmountTimed', { calendarObjectInstance, alarm, amount }); commit('updateAlarmAllDayParts', { calendarObjectInstance, alarm }); }, changeAlarmUnitTimed(_ref110, _ref111) { let { commit } = _ref110; let { calendarObjectInstance, alarm, unit } = _ref111; commit('changeAlarmUnitTimed', { calendarObjectInstance, alarm, unit }); commit('updateAlarmAllDayParts', { calendarObjectInstance, alarm }); }, changeAlarmAmountAllDay(_ref112, _ref113) { let { commit } = _ref112; let { calendarObjectInstance, alarm, amount } = _ref113; commit('changeAlarmAmountAllDay', { calendarObjectInstance, alarm, amount }); commit('updateAlarmTimedParts', { calendarObjectInstance, alarm }); }, changeAlarmUnitAllDay(_ref114, _ref115) { let { commit } = _ref114; let { calendarObjectInstance, alarm, unit } = _ref115; commit('changeAlarmUnitAllDay', { calendarObjectInstance, alarm, unit }); commit('updateAlarmTimedParts', { calendarObjectInstance, alarm }); }, changeAlarmHoursMinutesAllDay(_ref116, _ref117) { let { commit } = _ref116; let { calendarObjectInstance, alarm, hours, minutes } = _ref117; commit('changeAlarmHoursMinutesAllDay', { calendarObjectInstance, alarm, hours, minutes }); commit('updateAlarmTimedParts', { calendarObjectInstance, alarm }); }, changeAlarmFromRelativeToAbsolute(_ref118, _ref119) { let { commit } = _ref118; let { calendarObjectInstance, alarm } = _ref119; commit('changeAlarmFromRelativeToAbsolute', { calendarObjectInstance, alarm }); commit('resetAlarmRelativeParts', { alarm }); }, changeAlarmFromAbsoluteToRelative(_ref120, _ref121) { let { commit } = _ref120; let { calendarObjectInstance, alarm } = _ref121; commit('changeAlarmFromAbsoluteToRelative', { calendarObjectInstance, alarm }); commit('updateAlarmAllDayParts', { calendarObjectInstance, alarm }); commit('updateAlarmTimedParts', { calendarObjectInstance, alarm }); commit('resetAlarmAbsoluteParts', { alarm }); }, toggleAllDay(_ref122, _ref123) { let { commit, getters } = _ref122; let { calendarObjectInstance } = _ref123; commit('toggleAllDay', { calendarObjectInstance }); if (!calendarObjectInstance.isAllDay) { if (calendarObjectInstance.startTimezoneId === 'floating') { const startTimezone = getters.getResolvedTimezone; commit('changeStartTimezone', { calendarObjectInstance, startTimezone }); } commit('changeTimeToDefaultForTimedEvents', { calendarObjectInstance }); } } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/calendarObjects.js": /*!**************************************!*\ !*** ./src/store/calendarObjects.js ***! \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var _models_calendarObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/calendarObject.js */ "./src/models/calendarObject.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @author John Molakvoæ * * @author Thomas Citharel * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { calendarObjects: {}, modificationCount: 0 }; const mutations = { /** * Adds an array of calendar-objects to the store * * @param {object} state The store data * @param {object} data The destructuring object * @param {object[]} data.calendarObjects Calendar-objects to add */ appendCalendarObjects(state, _ref) { let { calendarObjects = [] } = _ref; for (const calendarObject of calendarObjects) { if (!state.calendarObjects[calendarObject.id]) { vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(state.calendarObjects, calendarObject.id, calendarObject); } } }, /** * Adds one calendar-object to the store * * @param {object} state The store data * @param {object} data The destructuring object * @param {object} data.calendarObject Calendar-object to add */ appendCalendarObject(state, _ref2) { let { calendarObject } = _ref2; if (!state.calendarObjects[calendarObject.id]) { vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(state.calendarObjects, calendarObject.id, calendarObject); } }, /** * Updates a calendar-object id * * @param {object} state The store data * @param {object} data The destructuring object * @param {object} data.calendarObject Calendar-object to update */ updateCalendarObjectId(state, _ref3) { let { calendarObject } = _ref3; if (calendarObject.dav === null) { calendarObject.id = null; } else { calendarObject.id = btoa(calendarObject.dav.url); } }, /** * Updates a calendar-object's calendarId * * @param {object} state The store data * @param {object} data The destructuring object * @param {string} data.calendarObjectId Id of calendar-object to update * @param {string} data.calendarId New calendarId */ updateCalendarObjectIdCalendarId(state, _ref4) { let { calendarObjectId, calendarId } = _ref4; state.calendarObjects[calendarObjectId].calendarId = calendarId; }, /** * Resets a calendar-object to it's original server state * * @param {object} state The store data * @param {object} data The destructuring object * @param {object} data.calendarObject Calendar-object to reset */ resetCalendarObjectToDav(state, _ref5) { let { calendarObject } = _ref5; calendarObject = state.calendarObjects[calendarObject.id]; // If this object does not exist on the server yet, there is nothing to do if (!calendarObject || !calendarObject.existsOnServer) { return; } const parserManager = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.getParserManager)(); const parser = parserManager.getParserForFileType('text/calendar'); parser.parse(calendarObject.dav.data); const itemIterator = parser.getItemIterator(); const firstVCalendar = itemIterator.next().value; if (firstVCalendar) { calendarObject.calendarComponent = firstVCalendar; } }, /** * Removes a calendar-object from the store * * @param {object} state The store data * @param {object} data The destructuring object * @param {object} data.calendarObject Calendar-object to delete */ deleteCalendarObject(state, _ref6) { let { calendarObject } = _ref6; vue__WEBPACK_IMPORTED_MODULE_3__["default"].delete(state.calendarObjects, calendarObject.id); }, /** * Increments the modification count * * @param {object} state The store data */ incrementModificationCount(state) { state.modificationCount++; } }; const getters = { /** * Gets a calendar-object based on its id * * @param {object} state The store data * @return {function({String}): CalendarObject} */ getCalendarObjectById: state => id => state.calendarObjects[id] }; const actions = { /** * Moves a calendar-object to a different calendar * * @param {object} context the store mutations * @param {object} data destructuring object * @param {CalendarObject} data.calendarObject Calendar-object to delete * @param {string} data.newCalendarId Calendar-Id of calendar to move this calendar-object to * @return {Promise} */ async moveCalendarObject(context, _ref7) { let { calendarObject, newCalendarId } = _ref7; if (!calendarObject.existsOnServer) { return; } const oldCalendarObjectId = calendarObject.id; const oldCalendarId = calendarObject.calendarId; if (oldCalendarId === newCalendarId) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Old calendar Id and new calendar Id are the same, nothing to move …'); return; } const newCalendar = context.getters.getCalendarById(newCalendarId); if (!newCalendar) { _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].error('Calendar to move to not found, aborting …'); return; } await calendarObject.dav.move(newCalendar.dav); // Update calendarId in calendarObject manually as it is not stored in dav context.commit('updateCalendarObjectIdCalendarId', { calendarObjectId: calendarObject.id, calendarId: newCalendarId }); context.commit('addCalendarObjectToCalendar', { calendar: { id: newCalendarId }, calendarObjectId: calendarObject.id }); context.commit('addCalendarObjectIdToAllTimeRangesOfCalendar', { calendarId: newCalendarId, calendarObjectId: calendarObject.id }); context.commit('deleteCalendarObjectFromCalendar', { calendar: { id: oldCalendarId }, calendarObjectId: oldCalendarObjectId }); context.commit('removeCalendarObjectIdFromAllTimeRangesOfCalendar', { calendarId: oldCalendarId, calendarObjectId: oldCalendarObjectId }); context.commit('incrementModificationCount'); }, /** * Updates a calendar-object * * @param {object} context the store mutations * @param {object} data destructuring object * @param {CalendarObject} data.calendarObject Calendar-object to delete * @return {Promise} */ async updateCalendarObject(context, _ref8) { let { calendarObject } = _ref8; let eventComponent = calendarObject.calendarComponent.getFirstComponent('VEVENT'); if (calendarObject.existsOnServer) { let icsValue = calendarObject.calendarComponent.toICS(); if (eventComponent != null) { if (eventComponent.client != null) { let newClientKeyValue = "CLIENT:" + eventComponent.client; let regex = /CLIENT:\d+/; if (regex.test(icsValue)) { icsValue = icsValue.replace(regex, newClientKeyValue); } else { let regexEmptyClient = /CLIENT:(?!\d)(?=\s*[\r\n])/g; if (regexEmptyClient.test(icsValue)) { icsValue = icsValue.replace(regexEmptyClient, newClientKeyValue); } else { const customKeyValue = { "CLIENT": eventComponent.client }; icsValue = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_0__.setCustomKeyValuesArrayToIcsAndReturnIcs)(icsValue, customKeyValue); } } } if (eventComponent.comment != null) { let newCommentKeyValue = "COMMENT:" + eventComponent.comment; let regex = /COMMENT:[^\s]+/; if (regex.test(icsValue)) { icsValue = icsValue.replace(regex, newCommentKeyValue); } else { const customKeyValue = { "COMMENT": eventComponent.comment }; icsValue = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_0__.setCustomKeyValuesArrayToIcsAndReturnIcs)(icsValue, customKeyValue); } } if (eventComponent.isLeave != null) { let isLeaveValue = eventComponent.isLeave ? "1" : "0"; let newIsLeaveKeyValue = "ISLEAVE:" + isLeaveValue; let regex = /ISLEAVE:\d+/; if (regex.test(icsValue)) { icsValue = icsValue.replace(regex, newIsLeaveKeyValue); } else { const customKeyValue = { "ISLEAVE": isLeaveValue }; icsValue = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_0__.setCustomKeyValuesArrayToIcsAndReturnIcs)(icsValue, customKeyValue); } } if (eventComponent.isCalendarPending != null) { debugger; let isCalendarPendingValue = eventComponent.isCalendarPending ? "1" : "0"; let newIsCalendarPendingKeyValue = "ISCALENDARPENDING:" + isCalendarPendingValue; let regex = /ISCALENDARPENDING:\d+/; if (regex.test(icsValue)) { icsValue = icsValue.replace(regex, newIsCalendarPendingKeyValue); } else { const customKeyValue = { "ISCALENDARPENDING": isCalendarPendingValue }; icsValue = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_0__.setCustomKeyValuesArrayToIcsAndReturnIcs)(icsValue, customKeyValue); } } } calendarObject.dav.data = icsValue; await calendarObject.dav.update(); context.commit('addCalendarObjectIdToAllTimeRangesOfCalendar', { calendarId: calendarObject.calendarId, calendarObjectId: calendarObject.id }); context.commit('resetCalendarObjectToDav', { calendarObject }); context.commit('incrementModificationCount'); return; // TODO - catch conflicts } const calendar = context.getters.getCalendarById(calendarObject.calendarId); let icsValue = calendarObject.calendarComponent.toICS(); if (eventComponent != null) { const customKeyValue = { "CLIENT": eventComponent.client, "EMBALMER": eventComponent.embalmer, "COMMENT": eventComponent.comment, "ISLEAVE": eventComponent.isLeave ? "1" : "0", "ISCALENDARPENDING": eventComponent.isCalendarPending ? "1" : "0" }; icsValue = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_0__.setCustomKeyValuesArrayToIcsAndReturnIcs)(icsValue, customKeyValue); } calendarObject.dav = await calendar.dav.createVObject(icsValue); calendarObject.existsOnServer = true; context.commit('updateCalendarObjectId', { calendarObject }); context.commit('appendCalendarObject', { calendarObject }); context.commit('addCalendarObjectToCalendar', { calendar: { id: calendarObject.calendarId }, calendarObjectId: calendarObject.id }); context.commit('addCalendarObjectIdToAllTimeRangesOfCalendar', { calendarId: calendarObject.calendarId, calendarObjectId: calendarObject.id }); context.commit('resetCalendarObjectToDav', { calendarObject }); context.commit('incrementModificationCount'); }, /** * Creates a new calendar-object from an recurrence-exception fork * * @param {object} context The Vuex context * @param {object} data destructuring object * @param {EventComponent} data.eventComponent EventComponent to store * @param {string} data.calendarId The calendar-id to store it in * @return {Promise} */ async createCalendarObjectFromFork(context, _ref9) { let { eventComponent, calendarId } = _ref9; const calendar = context.getters.getCalendarById(calendarId); const calendarObject = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_0__.mapCalendarJsToCalendarObject)(eventComponent.root, calendar.id); calendarObject.dav = await calendar.dav.createVObject(calendarObject.calendarComponent.toICS()); calendarObject.existsOnServer = true; context.commit('updateCalendarObjectId', { calendarObject }); context.commit('appendCalendarObject', { calendarObject }); context.commit('addCalendarObjectToCalendar', { calendar: { id: calendarObject.calendarId }, calendarObjectId: calendarObject.id }); context.commit('addCalendarObjectIdToAllTimeRangesOfCalendar', { calendarId: calendar.id, calendarObjectId: calendarObject.id }); context.commit('incrementModificationCount'); }, /** * Deletes a calendar-object * * @param {object} context the store mutations * @param {object} data destructuring object * @param {CalendarObject} data.calendarObject Calendar-object to delete * @return {Promise} */ async deleteCalendarObject(context, _ref10) { let { calendarObject } = _ref10; // If this calendar-object was not created on the server yet, // no need to send requests to the server if (calendarObject.existsOnServer) { await calendarObject.dav.delete(); } context.commit('deleteCalendarObject', { calendarObject }); context.commit('deleteCalendarObjectFromCalendar', { calendar: { id: calendarObject.calendarId }, calendarObjectId: calendarObject.id }); context.commit('removeCalendarObjectIdFromAnyTimeRange', { calendarObjectId: calendarObject.id }); context.commit('incrementModificationCount'); }, /** * Creates a new calendar object based on start, end, timezone and isAllDay * * @param {object} context the store mutations * @param {object} data destructuring object * @param {number} data.start Timestamp for start of new event * @param {number} data.end Timestamp for end of new event * @param {string} data.timezoneId asd * @param {boolean} data.isAllDay foo * @return {Promise} */ createNewEvent(context, _ref11) { let { start, end, timezoneId, isAllDay } = _ref11; const timezoneManager = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.getTimezoneManager)(); const timezone = timezoneManager.getTimezoneForId(timezoneId); const startDate = new Date(start * 1000); const endDate = new Date(end * 1000); const startDateTime = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DateTimeValue.fromJSDate(startDate, true).getInTimezone(timezone); const endDateTime = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.DateTimeValue.fromJSDate(endDate, true).getInTimezone(timezone); if (isAllDay) { startDateTime.isDate = true; endDateTime.isDate = true; } const calendar = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_2__.createEvent)(startDateTime, endDateTime); for (const vObject of calendar.getVObjectIterator()) { vObject.undirtify(); } const firstCalendar = context.getters.sortedCalendars[0].id; return Promise.resolve((0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_0__.mapCalendarJsToCalendarObject)(calendar, firstCalendar)); }, /** * Updates the time of the new calendar object * * @param {object} data The destructuring object for Vuex * @param {Function} data.commit The Vuex commit function * @param {Function} data.dispatch The Vuex dispatch function * @param {object} data2 destructuring object * @param {CalendarObject} data2.calendarObjectInstance Calendar-object to * @param {number} data2.start Timestamp for start of new event * @param {number} data2.end Timestamp for end of new event * @param {string} data2.timezoneId asd * @param {boolean} data2.isAllDay foo */ updateTimeOfNewEvent(_ref12, _ref13) { let { commit, dispatch } = _ref12; let { calendarObjectInstance, start, end, timezoneId, isAllDay } = _ref13; const isDirty = calendarObjectInstance.eventComponent.isDirty(); const startDate = new Date(start * 1000); const endDate = new Date(end * 1000); if (calendarObjectInstance.isAllDay !== isAllDay) { commit('toggleAllDay', { calendarObjectInstance }); } dispatch('changeStartTimezone', { calendarObjectInstance, startTimezone: timezoneId }); dispatch('changeEndTimezone', { calendarObjectInstance, endTimezone: timezoneId }); commit('changeStartDate', { calendarObjectInstance, startDate }); if (isAllDay) { // The full-calendar end date is exclusive, but the end-date // that changeEndDate expects is inclusive, so we have to deduct one day. commit('changeEndDate', { calendarObjectInstance, endDate: new Date(endDate.getTime() - 24 * 60 * 60 * 1000) }); } else { commit('changeEndDate', { calendarObjectInstance, endDate }); } if (!isDirty) { calendarObjectInstance.eventComponent.undirtify(); } } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/calendars.js": /*!********************************!*\ !*** ./src/store/calendars.js ***! \********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _models_calendarObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../models/calendarObject.js */ "./src/models/calendarObject.js"); /* harmony import */ var _utils_date_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/date.js */ "./src/utils/date.js"); /* harmony import */ var _models_calendar_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../models/calendar.js */ "./src/models/calendar.js"); /* harmony import */ var p_limit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! p-limit */ "./node_modules/p-limit/index.js"); /* harmony import */ var _utils_color_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/color.js */ "./src/utils/color.js"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _models_consts_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../models/consts.js */ "./src/models/consts.js"); /* harmony import */ var _nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @nextcloud/dialogs */ "./node_modules/@nextcloud/dialogs/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @copyright Copyright (c) 2019 John Molakvoæ * * @copyright Copyright (c) 2019 Thomas Citharel * * @author Georg Ehrke * * @author John Molakvoæ * * @author Thomas Citharel * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { calendars: [], trashBin: undefined, scheduleInbox: undefined, deletedCalendars: [], deletedCalendarObjects: [], calendarsById: {}, initialCalendarsLoaded: false, editCalendarModal: undefined, widgetView: 'dayGridMonth', widgetDate: 'now', widgetEventDetailsOpen: false, widgetEventDetails: {}, widgetRef: undefined }; const mutations = { /** * Adds calendar into state * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar to add */ addCalendar(state, _ref) { let { calendar } = _ref; const object = (0,_models_calendar_js__WEBPACK_IMPORTED_MODULE_3__.getDefaultCalendarObject)(calendar); if (!state.calendars.some(existing => existing.id === object.id)) { state.calendars.push(object); } vue__WEBPACK_IMPORTED_MODULE_11__["default"].set(state.calendarsById, object.id, object); }, addTrashBin(state, _ref2) { let { trashBin } = _ref2; state.trashBin = trashBin; }, setWidgetView(state, _ref3) { let { viewName } = _ref3; state.widgetView = viewName; }, setWidgetDate(state, _ref4) { let { widgetDate } = _ref4; state.widgetDate = widgetDate; }, setWidgetRef(state, _ref5) { let { widgetRef } = _ref5; state.widgetRef = widgetRef; }, setSelectedEvent(state, _ref6) { let { object, recurrenceId } = _ref6; state.widgetEventDetailsOpen = true; state.widgetEventDetails = { object, recurrenceId }; }, closeWidgetEventDetails(state) { state.widgetEventDetailsOpen = false; }, addScheduleInbox(state, _ref7) { let { scheduleInbox } = _ref7; state.scheduleInbox = scheduleInbox; }, /** * Adds deleted calendar into state * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar calendar the calendar to add */ addDeletedCalendar(state, _ref8) { let { calendar } = _ref8; if (state.deletedCalendars.some(c => c.url === calendar.url)) { // This calendar is already known return; } state.deletedCalendars.push(calendar); }, /** * Removes a deleted calendar * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the deleted calendar to remove */ removeDeletedCalendar(state, _ref9) { let { calendar } = _ref9; state.deletedCalendars = state.deletedCalendars.filter(c => c !== calendar); }, /** * Removes a deleted calendar object * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.vobject the deleted calendar object to remove */ removeDeletedCalendarObject(state, _ref10) { let { vobject } = _ref10; state.deletedCalendarObjects = state.deletedCalendarObjects.filter(vo => vo.id !== vobject.id); }, /** * Adds a deleted vobject into state * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.vobject the calendar vobject to add */ addDeletedCalendarObject(state, _ref11) { let { vobject } = _ref11; if (state.deletedCalendarObjects.some(c => c.uri === vobject.uri)) { // This vobject is already known return; } state.deletedCalendarObjects.push(vobject); }, /** * Deletes a calendar * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar to delete */ deleteCalendar(state, _ref12) { let { calendar } = _ref12; state.calendars.splice(state.calendars.indexOf(calendar), 1); vue__WEBPACK_IMPORTED_MODULE_11__["default"].delete(state.calendarsById, calendar.id); }, /** * Toggles a calendar's visibility * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar the calendar to toggle */ toggleCalendarEnabled(state, _ref13) { let { calendar } = _ref13; state.calendarsById[calendar.id].enabled = !state.calendarsById[calendar.id].enabled; }, /** * Renames a calendar * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar the calendar to rename * @param {string} data.newName the new name of the calendar */ renameCalendar(state, _ref14) { let { calendar, newName } = _ref14; state.calendarsById[calendar.id].displayName = newName; }, /** * Changes calendar's color * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar the calendar to rename * @param {string} data.newColor the new color of the calendar */ changeCalendarColor(state, _ref15) { let { calendar, newColor } = _ref15; state.calendarsById[calendar.id].color = newColor; }, /** * Changes calendar's order * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar the calendar to rename * @param {string} data.newOrder the new order of the calendar */ changeCalendarOrder(state, _ref16) { let { calendar, newOrder } = _ref16; state.calendarsById[calendar.id].order = newOrder; }, /** * Adds multiple calendar-objects to calendar * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar The calendar to append objects to * @param {string[]} data.calendarObjectIds The calendar object ids to append */ appendCalendarObjectsToCalendar(state, _ref17) { let { calendar, calendarObjectIds } = _ref17; for (const calendarObjectId of calendarObjectIds) { if (state.calendarsById[calendar.id].calendarObjects.indexOf(calendarObjectId) === -1) { state.calendarsById[calendar.id].calendarObjects.push(calendarObjectId); } } }, /** * Adds calendar-object to calendar * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar The calendar to append objects to * @param {string} data.calendarObjectId The calendar object id to append */ addCalendarObjectToCalendar(state, _ref18) { let { calendar, calendarObjectId } = _ref18; if (state.calendarsById[calendar.id].calendarObjects.indexOf(calendarObjectId) === -1) { state.calendarsById[calendar.id].calendarObjects.push(calendarObjectId); } }, /** * Removes calendar-object from calendar * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar The calendar to delete objects from * @param {string} data.calendarObjectId The calendar object ids to delete */ deleteCalendarObjectFromCalendar(state, _ref19) { let { calendar, calendarObjectId } = _ref19; const index = state.calendarsById[calendar.id].calendarObjects.indexOf(calendarObjectId); if (index !== -1) { state.calendarsById[calendar.id].calendarObjects.slice(index, 1); } }, /** * Adds fetched time-range to calendar * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar The calendar to append a time-range to * @param {number} data.fetchedTimeRangeId The time-range-id to append */ addFetchedTimeRangeToCalendar(state, _ref20) { let { calendar, fetchedTimeRangeId } = _ref20; state.calendarsById[calendar.id].fetchedTimeRanges.push(fetchedTimeRangeId); }, /** * Removes fetched time-range from calendar * * @param {object} state the store mutations * @param {object} data destructuring object * @param {object} data.calendar The calendar to remove a time-range from * @param {number} data.fetchedTimeRangeId The time-range-id to remove */ deleteFetchedTimeRangeFromCalendar(state, _ref21) { let { calendar, fetchedTimeRangeId } = _ref21; const index = state.calendarsById[calendar.id].fetchedTimeRanges.indexOf(fetchedTimeRangeId); if (index !== -1) { state.calendarsById[calendar.id].fetchedTimeRanges.slice(index, 1); } }, /** * Shares calendar with a user or group * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar * @param {string} data.user the userId * @param {string} data.displayName the displayName * @param {string} data.uri the sharing principalScheme uri * @param {boolean} data.isGroup is this a group? * @param {boolean} data.isCircle is this a circle? */ shareCalendar(state, _ref22) { let { calendar, user, displayName, uri, isGroup, isCircle } = _ref22; const newSharee = { displayName, id: user, writeable: false, isGroup, isCircle, uri }; state.calendarsById[calendar.id].shares.push(newSharee); }, /** * Removes Sharee from calendar shares list * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar * @param {string} data.uri the sharee uri */ unshareCalendar(state, _ref23) { let { calendar, uri } = _ref23; calendar = state.calendars.find(search => search.id === calendar.id); const shareIndex = calendar.shares.findIndex(sharee => sharee.uri === uri); calendar.shares.splice(shareIndex, 1); }, /** * Toggles sharee's writable permission * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar * @param {string} data.uri the sharee uri */ toggleCalendarShareWritable(state, _ref24) { let { calendar, uri } = _ref24; calendar = state.calendars.find(search => search.id === calendar.id); const sharee = calendar.shares.find(sharee => sharee.uri === uri); sharee.writeable = !sharee.writeable; }, /** * Publishes a calendar calendar * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar to publish * @param {string} data.publishURL published URL of calendar */ publishCalendar(state, _ref25) { let { calendar, publishURL } = _ref25; calendar = state.calendars.find(search => search.id === calendar.id); calendar.publishURL = publishURL; }, /** * Unpublishes a calendar * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar to unpublish */ unpublishCalendar(state, _ref26) { let { calendar } = _ref26; calendar = state.calendars.find(search => search.id === calendar.id); calendar.publishURL = null; }, /** * Marks initial loading of calendars as complete * * @param {object} state the store data */ initialCalendarsLoaded(state) { state.initialCalendarsLoaded = true; }, /** * Marks a calendar as loading * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar to mark as loading */ markCalendarAsLoading(state, _ref27) { let { calendar } = _ref27; state.calendarsById[calendar.id].loading = true; }, /** * Marks a calendar as finished loading * * @param {object} state the store data * @param {object} data destructuring object * @param {object} data.calendar the calendar to mark as finished loading */ markCalendarAsNotLoading(state, _ref28) { let { calendar } = _ref28; state.calendarsById[calendar.id].loading = false; }, showEditCalendarModal(state, _ref29) { let { calendarId } = _ref29; state.editCalendarModal = { calendarId }; }, hideEditCalendarModal(state) { state.editCalendarModal = undefined; }, setCalendarDeleteCountdown(state, _ref30) { let { calendar, countdown } = _ref30; vue__WEBPACK_IMPORTED_MODULE_11__["default"].set(state.calendarsById[calendar.id], 'countdown', countdown); }, setCalendarDeleteHandles(state, _ref31) { let { calendar, deleteTimeout, deleteInterval } = _ref31; vue__WEBPACK_IMPORTED_MODULE_11__["default"].set(state.calendarsById[calendar.id], 'deleteTimeout', deleteTimeout); vue__WEBPACK_IMPORTED_MODULE_11__["default"].set(state.calendarsById[calendar.id], 'deleteInterval', deleteInterval); } }; const getters = { /** * List of sorted calendars and subscriptions * * @param {object} state the store data * @param {object} store the store * @param {object} rootState the rootState * @return {Array} */ sortedCalendarsSubscriptions(state, store, rootState) { return state.calendars.filter(calendar => calendar.supportsEvents || rootState.settings.showTasks && calendar.supportsTasks).sort((a, b) => a.order - b.order); }, /** * List of sorted calendars * * @param {object} state the store data * @return {Array} */ sortedCalendars(state) { return state.calendars.filter(calendar => calendar.supportsEvents).filter(calendar => !calendar.readOnly).sort((a, b) => a.order - b.order); }, /** * List of sorted calendars owned by the principal * * @param {object} state the store data * @return {Array} */ ownSortedCalendars(state) { return state.calendars.filter(calendar => calendar.supportsEvents).filter(calendar => !calendar.readOnly).filter(calendar => !calendar.isSharedWithMe).sort((a, b) => a.order - b.order); }, widgetView(state) { return state.widgetView; }, widgetDate(state) { return state.widgetDate; }, widgetEventDetailsOpen(state) { return state.widgetEventDetailsOpen; }, widgetRef(state) { return state.widgetRef; }, hasTrashBin(state) { return state.trashBin !== undefined && state.trashBin.retentionDuration !== 0; }, trashBin(state) { return state.trashBin; }, scheduleInbox: state => { return state.scheduleInbox; }, /** * List of deleted sorted calendars * * @param {object} state the store data * @return {Array} */ sortedDeletedCalendars(state) { return state.deletedCalendars.sort((a, b) => a.deletedAt - b.deletedAt); }, /** * List of deleted calendars objects * * @param {object} state the store data * @return {Array} */ deletedCalendarObjects(state) { const calendarUriMap = {}; state.calendars.forEach(calendar => { const withoutTrail = calendar.url.replace(/\/$/, ''); const uri = withoutTrail.slice(withoutTrail.lastIndexOf('/') + 1); calendarUriMap[uri] = calendar; }); return state.deletedCalendarObjects.map(obj => ({ calendar: calendarUriMap[obj.dav._props['{http://nextcloud.com/ns}calendar-uri']], ...obj })); }, /** * List of sorted subscriptions * * @param {object} state the store data * @return {Array} */ sortedSubscriptions(state) { return state.calendars.filter(calendar => calendar.supportsEvents).filter(calendar => calendar.readOnly).sort((a, b) => a.order - b.order); }, /** * List of enabled calendars and subscriptions * * @param {object} state the store data * @param {object} store the store * @param {object} rootState the rootState * @return {Array} */ enabledCalendars(state, store, rootState) { return state.calendars.filter(calendar => calendar.supportsEvents || rootState.settings.showTasks && calendar.supportsTasks).filter(calendar => calendar.enabled); }, /** * Gets a calendar by it's Id * * @param {object} state the store data * @return {function({String}): {Object}} */ getCalendarById: state => calendarId => state.calendarsById[calendarId], /** * Gets a calendar by its url * * @param {object} state the store data * @return {function({String}): {Object}} */ getCalendarByUrl: state => url => state.calendars.find(calendar => calendar.url === url), /** * Gets the contact's birthday calendar or null * * @param {object} state the store data * @return {object | null} */ getBirthdayCalendar: state => { for (const calendar of state.calendars) { const url = calendar.url.slice(0, -1); const lastSlash = url.lastIndexOf('/'); const uri = url.slice(lastSlash + 1); if (uri === _models_consts_js__WEBPACK_IMPORTED_MODULE_9__.CALDAV_BIRTHDAY_CALENDAR) { return calendar; } } return null; }, /** * Whether or not a birthday calendar exists * * @param {object} state The Vuex state * @param {object} getters the vuex getters * @return {boolean} */ hasBirthdayCalendar: (state, getters) => { return !!getters.getBirthdayCalendar; }, /** * * @param {object} state the store data * @param {object} getters the store getters * @return {function({Boolean}, {Boolean}, {Boolean}): {Object}[]} */ sortedCalendarFilteredByComponents: (state, getters) => (vevent, vjournal, vtodo) => { return getters.sortedCalendars.filter(calendar => { if (vevent && !calendar.supportsEvents) { return false; } if (vjournal && !calendar.supportsJournals) { return false; } if (vtodo && !calendar.supportsTasks) { return false; } return true; }); }, editCalendarModal: state => state.editCalendarModal }; const actions = { /** * Retrieve and commit calendars and other collections * * @param {object} context the store object * @param {object} context.commit the store mutations * @param {object} context.state the store state * @param {object} context.getters the store getters * @return {Promise} the results */ async loadCollections(_ref32) { let { commit, state, getters } = _ref32; const { calendars, trashBins, scheduleInboxes, subscriptions } = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.findAll)(); console.info('calendar home scanned', calendars, trashBins, subscriptions); calendars.map(calendar => (0,_models_calendar_js__WEBPACK_IMPORTED_MODULE_3__.mapDavCollectionToCalendar)(calendar, getters.getCurrentUserPrincipal)).forEach(calendar => { commit('addCalendar', { calendar }); }); if (trashBins.length) { commit('addTrashBin', { trashBin: trashBins[0] }); } if (scheduleInboxes.length) { commit('addScheduleInbox', { scheduleInbox: scheduleInboxes[0] }); } commit('initialCalendarsLoaded'); return { calendars: state.calendars, trashBin: state.trashBin }; }, /** * Retrieve and commit deleted calendars * * @param {object} context the store object * @param {object} context.commit the store mutations * @return {Promise} the calendars */ async loadDeletedCalendars(_ref33) { let { commit } = _ref33; const calendars = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.findAllDeletedCalendars)(); calendars.forEach(calendar => commit('addDeletedCalendar', { calendar })); }, /** * Retrieve and commit deleted calendar objects * * @param {object} context the store object * @param {object} context.commit the store mutations * @param {object} context.state the store state */ async loadDeletedCalendarObjects(_ref34) { let { commit, state } = _ref34; const vobjects = await state.trashBin.findDeletedObjects(); console.info('vobjects loaded', { vobjects }); vobjects.forEach(vobject => { try { const calendarObject = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_1__.mapCDavObjectToCalendarObject)(vobject, undefined); commit('addDeletedCalendarObject', { vobject: calendarObject }); } catch (error) { console.error('could not convert calendar object', vobject, error); } }); }, /** * * @param {object} context the store object * @param {object} context.commit the store mutations * @param {object} data The data destructuring object * @param {string[]} data.tokens The tokens to load * @return {Promise} */ async getPublicCalendars(_ref35, _ref36) { let { commit } = _ref35; let { tokens } = _ref36; const calendars = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.findPublicCalendarsByTokens)(tokens); const calendarObjects = []; for (const davCalendar of calendars) { const calendar = (0,_models_calendar_js__WEBPACK_IMPORTED_MODULE_3__.mapDavCollectionToCalendar)(davCalendar); commit('addCalendar', { calendar }); calendarObjects.push(calendar); } commit('initialCalendarsLoaded'); return calendarObjects; }, /** * Append a new calendar to array of existing calendars * * @param {object} context the store mutations * @param {object} data destructuring object * @param {object} data.displayName The name of the new calendar * @param {object} data.color The color of the new calendar * @param {object} data.order The order of the new calendar * @param {string[]} data.components The supported components of the calendar * @param {string=} data.timezone The timezoneId * @return {Promise} */ async appendCalendar(context, _ref37) { let { displayName, color, order, components = ['VEVENT'], timezone = null } = _ref37; if (timezone === null) { timezone = context.getters.getResolvedTimezone; } let timezoneIcs = null; const timezoneObject = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_7__["default"])().getTimezoneForId(timezone); if (timezoneObject !== _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_8__.Timezone.utc && timezoneObject !== _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_8__.Timezone.floating) { const calendar = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_8__.CalendarComponent.fromEmpty(); calendar.addComponent(_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_8__.TimezoneComponent.fromICALJs(timezoneObject.toICALJs())); timezoneIcs = calendar.toICS(false); } const response = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.createCalendar)(displayName, color, components, order, timezoneIcs); const calendar = (0,_models_calendar_js__WEBPACK_IMPORTED_MODULE_3__.mapDavCollectionToCalendar)(response, context.getters.getCurrentUserPrincipal); context.commit('addCalendar', { calendar }); }, /** * Append a new subscription to array of existing calendars * * @param {object} context the store mutations * @param {object} data destructuring object * @param {string} data.displayName Name of new subscription * @param {string} data.color Color of new subscription * @param {string} data.order Order of new subscription * @param {string} data.source Source of new subscription * @return {Promise} */ async appendSubscription(context, _ref38) { let { displayName, color, order, source } = _ref38; const response = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.createSubscription)(displayName, color, source, order); const calendar = (0,_models_calendar_js__WEBPACK_IMPORTED_MODULE_3__.mapDavCollectionToCalendar)(response, context.getters.getCurrentUserPrincipal); context.commit('addCalendar', { calendar }); }, /** * Delete a calendar * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to delete * @return {Promise} */ async deleteCalendar(context, _ref39) { let { calendar } = _ref39; await calendar.dav.delete(); context.commit('deleteCalendar', { calendar }); }, /** * Delete a calendar in the trash bin * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to delete * @return {Promise} */ async deleteCalendarPermanently(context, _ref40) { let { calendar } = _ref40; await calendar.delete({ 'X-NC-CalDAV-No-Trashbin': 1 }); context.commit('removeDeletedCalendar', { calendar }); }, deleteCalendarAfterTimeout(context, _ref41) { let { calendar, countdown = 7 } = _ref41; context.commit('setCalendarDeleteCountdown', { calendar, countdown }); const deleteInterval = setInterval(() => { countdown--; if (countdown < 0) { countdown = 0; } context.commit('setCalendarDeleteCountdown', { calendar, countdown }); }, 1000); const deleteTimeout = setTimeout(async () => { try { await context.dispatch('deleteCalendar', { calendar }); } catch (error) { (0,_nextcloud_dialogs__WEBPACK_IMPORTED_MODULE_10__.showError)((0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_6__.translate)('calendar', 'An error occurred, unable to delete the calendar.')); console.error(error); } finally { clearInterval(deleteInterval); } }, 7000); context.commit('setCalendarDeleteHandles', { calendar, deleteInterval, deleteTimeout }); }, cancelCalendarDeletion(context, _ref42) { let { calendar } = _ref42; if (calendar.deleteInterval) clearInterval(calendar.deleteInterval); if (calendar.deleteTimeout) clearTimeout(calendar.deleteTimeout); context.commit('setCalendarDeleteHandles', { calendar, deleteInterval: undefined, deleteTimeout: undefined }); }, async restoreCalendar(_ref43, _ref44) { let { commit, state } = _ref43; let { calendar } = _ref44; await state.trashBin.restore(calendar.url); commit('removeDeletedCalendar', { calendar }); }, async restoreCalendarObject(_ref45, _ref46) { var _component$startDate, _component$endDate; let { commit, state, getters } = _ref45; let { vobject } = _ref46; await state.trashBin.restore(vobject.uri); // Clean up the data locally commit('removeDeletedCalendarObject', { vobject }); // Delete cached time range that includes the restored event const calendarObject = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_1__.mapCDavObjectToCalendarObject)(vobject.dav, undefined); const component = calendarObject.calendarComponent.getFirstComponent(vobject.objectType); const timeRange = getters.getTimeRangeForCalendarCoveringRange(vobject.calendar.id, (_component$startDate = component.startDate) === null || _component$startDate === void 0 ? void 0 : _component$startDate.unixTime, (_component$endDate = component.endDate) === null || _component$endDate === void 0 ? void 0 : _component$endDate.unixTime); if (timeRange) { commit('deleteFetchedTimeRangeFromCalendar', { calendar: vobject.calendar, fetchedTimeRangeId: timeRange.id }); commit('removeTimeRange', { timeRangeId: timeRange.id }); } // Trigger calendar refresh commit('incrementModificationCount'); }, /** * Deletes a calendar-object permanently * * @param {object} context the store mutations * @param {object} data destructuring object * @param {vobject} data.vobject Calendar-object to delete * @return {Promise} */ async deleteCalendarObjectPermanently(context, _ref47) { let { vobject } = _ref47; await vobject.dav.delete({ 'X-NC-CalDAV-No-Trashbin': 1 }); context.commit('removeDeletedCalendarObject', { vobject }); }, /** * Toggle whether a calendar is enabled * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to modify * @return {Promise} */ async toggleCalendarEnabled(context, _ref48) { let { calendar } = _ref48; context.commit('markCalendarAsLoading', { calendar }); calendar.dav.enabled = !calendar.dav.enabled; try { await calendar.dav.update(); context.commit('markCalendarAsNotLoading', { calendar }); context.commit('toggleCalendarEnabled', { calendar }); } catch (error) { context.commit('markCalendarAsNotLoading', { calendar }); throw error; } }, /** * Rename a calendar * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to modify * @param {string} data.newName the new name of the calendar * @return {Promise} */ async renameCalendar(context, _ref49) { let { calendar, newName } = _ref49; calendar.dav.displayname = newName; await calendar.dav.update(); context.commit('renameCalendar', { calendar, newName }); }, /** * Change a calendar's color * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to modify * @param {string} data.newColor the new color of the calendar * @return {Promise} */ async changeCalendarColor(context, _ref50) { let { calendar, newColor } = _ref50; calendar.dav.color = newColor; await calendar.dav.update(); context.commit('changeCalendarColor', { calendar, newColor }); }, /** * Share calendar with User or Group * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to share * @param {string} data.user the userId * @param {string} data.displayName the displayName * @param {string} data.uri the sharing principalScheme uri * @param {boolean} data.isGroup is this a group? * @param {boolean} data.isCircle is this a circle? */ async shareCalendar(context, _ref51) { let { calendar, user, displayName, uri, isGroup, isCircle } = _ref51; // Share calendar with entered group or user await calendar.dav.share(uri); context.commit('shareCalendar', { calendar, user, displayName, uri, isGroup, isCircle }); }, /** * Toggle permissions of calendar Sharees writeable rights * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to change * @param {string} data.uri the sharing principalScheme uri */ async toggleCalendarShareWritable(context, _ref52) { let { calendar, uri } = _ref52; const sharee = calendar.shares.find(sharee => sharee.uri === uri); await calendar.dav.share(uri, !sharee.writeable); context.commit('toggleCalendarShareWritable', { calendar, uri }); }, /** * Remove sharee from calendar * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to change * @param {string} data.uri the sharing principalScheme uri */ async unshareCalendar(context, _ref53) { let { calendar, uri } = _ref53; await calendar.dav.unshare(uri); context.commit('unshareCalendar', { calendar, uri }); }, /** * Publish a calendar * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to change * @return {Promise} */ async publishCalendar(context, _ref54) { let { calendar } = _ref54; await calendar.dav.publish(); const publishURL = calendar.dav.publishURL; context.commit('publishCalendar', { calendar, publishURL }); }, /** * Unpublish a calendar * * @param {object} context the store mutations Current context * @param {object} data destructuring object * @param {object} data.calendar the calendar to change * @return {Promise} */ async unpublishCalendar(context, _ref55) { let { calendar } = _ref55; await calendar.dav.unpublish(); context.commit('unpublishCalendar', { calendar }); }, /** * Retrieve the events of the specified calendar * and commit the results * * @param {object} context the store mutations * @param {object} data destructuring object * @param {object} data.calendar the calendar to get events from * @param {Date} data.from the date to start querying events from * @param {Date} data.to the last date to query events from * @return {Promise} */ async getEventsFromCalendarInTimeRange(context, _ref56) { let { calendar, from, to } = _ref56; context.commit('markCalendarAsLoading', { calendar }); const response = await calendar.dav.findByTypeInTimeRange('VEVENT', from, to); let responseTodo = []; if (context.rootState.settings.showTasks) { responseTodo = await calendar.dav.findByTypeInTimeRange('VTODO', from, to); } context.commit('addTimeRange', { calendarId: calendar.id, from: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_2__.getUnixTimestampFromDate)(from), to: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_2__.getUnixTimestampFromDate)(to), lastFetched: (0,_utils_date_js__WEBPACK_IMPORTED_MODULE_2__.getUnixTimestampFromDate)((0,_utils_date_js__WEBPACK_IMPORTED_MODULE_2__.dateFactory)()), calendarObjectIds: [] }); const insertId = context.getters.getLastTimeRangeInsertId; context.commit('addFetchedTimeRangeToCalendar', { calendar, fetchedTimeRangeId: insertId }); const calendarObjects = []; const calendarObjectIds = []; for (const r of response.concat(responseTodo)) { try { const calendarObject = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_1__.mapCDavObjectToCalendarObject)(r, calendar.id); calendarObjects.push(calendarObject); calendarObjectIds.push(calendarObject.id); } catch (e) { console.error("could not convert calendar object of calendar ".concat(calendar.id), e, { response: r }); } } context.commit('appendCalendarObjects', { calendarObjects }); context.commit('appendCalendarObjectsToCalendar', { calendar, calendarObjectIds }); context.commit('appendCalendarObjectIdsToTimeFrame', { timeRangeId: insertId, calendarObjectIds }); context.commit('markCalendarAsNotLoading', { calendar }); return context.rootState.fetchedTimeRanges.lastTimeRangeInsertId; }, /** * Retrieve one object * * @param {object} context the store mutations * @param {object} data destructuring object * @param {string} data.objectId Id of the object to fetch * @return {Promise} */ async getEventByObjectId(context, _ref57) { let { objectId } = _ref57; // TODO - we should still check if the calendar-object is up to date // - Just send head and compare etags if (context.getters.getCalendarObjectById(objectId)) { return Promise.resolve(context.getters.getCalendarObjectById(objectId)); } // This might throw an exception, but we will leave it up to the methods // calling this action to properly handle it const objectPath = atob(objectId); const lastSlashIndex = objectPath.lastIndexOf('/'); const calendarPath = objectPath.slice(0, lastSlashIndex + 1); const objectFileName = objectPath.slice(lastSlashIndex + 1); const calendarId = btoa(calendarPath); if (!context.state.calendarsById[calendarId]) { return Promise.reject(new Error('')); } const calendar = context.state.calendarsById[calendarId]; const vObject = await calendar.dav.find(objectFileName); const calendarObject = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_1__.mapCDavObjectToCalendarObject)(vObject, calendar.id); context.commit('appendCalendarObject', { calendarObject }); context.commit('addCalendarObjectToCalendar', { calendar: { id: calendarId }, calendarObjectId: calendarObject.id }); return calendarObject; }, /** * Import events into calendar * * @param {object} context the store mutations */ async importEventsIntoCalendar(context) { context.commit('changeStage', _models_consts_js__WEBPACK_IMPORTED_MODULE_9__.IMPORT_STAGE_IMPORTING); // Create a copy const files = context.rootState.importFiles.importFiles.slice(); let totalCount = 0; for (const file of files) { totalCount += file.parser.getItemCount(); const calendarId = context.rootState.importFiles.importCalendarRelation[file.id]; if (calendarId === 'new') { const displayName = file.parser.getName() || (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_6__.translate)('calendar', 'Imported {filename}', { filename: file.name }); const color = file.parser.getColor() || (0,_utils_color_js__WEBPACK_IMPORTED_MODULE_5__.uidToHexColor)(displayName); const components = []; if (file.parser.containsVEvents()) { components.push('VEVENT'); } if (file.parser.containsVJournals()) { components.push('VJOURNAL'); } if (file.parser.containsVTodos()) { components.push('VTODO'); } const response = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.createCalendar)(displayName, color, components, 0); const calendar = (0,_models_calendar_js__WEBPACK_IMPORTED_MODULE_3__.mapDavCollectionToCalendar)(response, context.getters.getCurrentUserPrincipal); context.commit('addCalendar', { calendar }); context.commit('setCalendarForFileId', { fileId: file.id, calendarId: calendar.id }); } } context.commit('setTotal', totalCount); const limit = (0,p_limit__WEBPACK_IMPORTED_MODULE_4__["default"])(3); const requests = []; for (const file of files) { const calendarId = context.rootState.importFiles.importCalendarRelation[file.id]; const calendar = context.getters.getCalendarById(calendarId); for (const item of file.parser.getItemIterator()) { requests.push(limit(async () => { const ics = item.toICS(); let davObject; try { davObject = await calendar.dav.createVObject(ics); } catch (error) { context.commit('incrementDenied'); console.error(error); return; } const calendarObject = (0,_models_calendarObject_js__WEBPACK_IMPORTED_MODULE_1__.mapCDavObjectToCalendarObject)(davObject, calendarId); context.commit('appendCalendarObject', { calendarObject }); context.commit('addCalendarObjectToCalendar', { calendar, calendarObjectId: calendarObject.id }); context.commit('addCalendarObjectIdToAllTimeRangesOfCalendar', { calendarId: calendar.id, calendarObjectId: calendarObject.id }); context.commit('incrementAccepted'); })); } } await Promise.all(requests); context.commit('changeStage', _models_consts_js__WEBPACK_IMPORTED_MODULE_9__.IMPORT_STAGE_PROCESSING); }, /** * * @param {object} context the store object * @param {object} context.commit the store mutations * @param {object} context.state the store state * @param {object} data The data destructuring object * @param {object} data.newOrder The object containing String => Number with the new order * @return {Promise} */ async updateCalendarListOrder(_ref58, _ref59) { let { state, commit } = _ref58; let { newOrder } = _ref59; // keep a record of the original order in case we need to do a rollback const limit = (0,p_limit__WEBPACK_IMPORTED_MODULE_4__["default"])(3); const requests = []; const calendarsToUpdate = []; for (const key in newOrder) { requests.push(limit(async () => { const calendar = state.calendarsById[key]; // Do not update unless necessary if (calendar.dav.order === newOrder[key]) { return; } calendar.dav.order = newOrder[key]; await calendar.dav.update(); calendarsToUpdate.push({ calendar, newOrder: newOrder[key] }); })); } await Promise.all(requests); for (const { calendar, newOrder } of calendarsToUpdate) { console.debug(calendar, newOrder); commit('changeCalendarOrder', { calendar, newOrder }); } } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/contacts.js": /*!*******************************!*\ !*** ./src/store/contacts.js ***! \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { contacts: [], contactByEMail: {} }; const mutations = { /** * Append a single contact to the store * * @param {object} state The store data * @param {object} data The destructuring object * @param {object} data.contact The contact to append to the store */ appendContact(state, _ref) { let { contact } = _ref; if (state.contacts.indexOf(contact) === -1) { state.contacts.push(contact); } for (const email of contact.emails) { // In the unlikely case that multiple contacts // share the same email address, we will just follow // first come, first served. if (state.contactByEMail[email] === undefined) { vue__WEBPACK_IMPORTED_MODULE_0__["default"].set(state.contactByEMail, email, contact); } } }, /** * Removes a single contact from the store * * @param {object} state The store data * @param {object} data The destructuring object * @param {object} data.contact The contact to remove from the store */ removeContact(state, _ref2) { let { contact } = _ref2; for (const email of contact.emails) { if (state.contactByEMail[email] === contact) { vue__WEBPACK_IMPORTED_MODULE_0__["default"].delete(state.contactByEMail, email); } } const index = state.contacts.indexOf(contact); if (index !== -1) { state.contacts.splice(index, 1); } } }; const getters = {}; const actions = {}; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/davRestrictions.js": /*!**************************************!*\ !*** ./src/store/davRestrictions.js ***! \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { minimumDate: '1970-01-01T00:00:00Z', maximumDate: '2037-12-31T23:59:59Z' }; const mutations = { /** * Initialize restrictions imposed by CalDAV server * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {string} data.minimumDate The minimum-date allowed by the CalDAV server * @param {string} data.maximumDate The maximum-date allowed by the CalDAV server */ loadDavRestrictionsFromServer(state, _ref) { let { minimumDate, maximumDate } = _ref; state.minimumDate = minimumDate; state.maximumDate = maximumDate; } }; const getters = {}; const actions = {}; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/fetchedTimeRanges.js": /*!****************************************!*\ !*** ./src/store/fetchedTimeRanges.js ***! \****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { lastTimeRangeInsertId: -1, fetchedTimeRanges: [], fetchedTimeRangesById: {} }; const mutations = { /** * Adds a fetched time-range to the state * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {string} data.calendarId Calendar-id which objects have been fetched * @param {number} data.from timestamp of start * @param {number} data.to timestamp of end * @param {number} data.lastFetched timestamp of last-fetched * @param {string[]} data.calendarObjectIds array of calendarObjectIds */ addTimeRange(state, _ref) { let { calendarId, from, to, lastFetched, calendarObjectIds } = _ref; const fetchedTimeRange = { id: ++state.lastTimeRangeInsertId, calendarId, from, to, lastFetched, calendarObjectIds }; state.fetchedTimeRanges.push(fetchedTimeRange); vue__WEBPACK_IMPORTED_MODULE_0__["default"].set(state.fetchedTimeRangesById, fetchedTimeRange.id, fetchedTimeRange); }, /** * Removes a fetched time-range from the state * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {number} data.timeRangeId Id of time-range to remove */ removeTimeRange(state, _ref2) { let { timeRangeId } = _ref2; const obj = state.fetchedTimeRangesById[timeRangeId]; const index = state.fetchedTimeRanges.indexOf(obj); if (index !== -1) { state.fetchedTimeRanges.splice(index, 1); vue__WEBPACK_IMPORTED_MODULE_0__["default"].delete(state.fetchedTimeRangesById, timeRangeId); } }, /** * Adds a calendar-object-id to an already fetched time-range * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {number} data.timeRangeId The id of the time-range * @param {string[]} data.calendarObjectIds The array of ids of the calendar-object to add */ appendCalendarObjectIdsToTimeFrame(state, _ref3) { let { timeRangeId, calendarObjectIds } = _ref3; for (const calendarObjectId of calendarObjectIds) { if (state.fetchedTimeRangesById[timeRangeId].calendarObjectIds.indexOf(calendarObjectId) === -1) { state.fetchedTimeRangesById[timeRangeId].calendarObjectIds.push(calendarObjectId); } } }, /** * Adds a calendar-object-id to an already fetched time-range * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {number} data.timeRangeId The id of the time-range * @param {string} data.calendarObjectId The id of the calendar-object to add */ appendCalendarObjectIdToTimeRange(state, _ref4) { let { timeRangeId, calendarObjectId } = _ref4; state.fetchedTimeRangesById[timeRangeId].calendarObjectIds.push(calendarObjectId); }, /** * Removes a calendar-object-id from an already fetched time-range * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {number} data.timeRangeId The id of the timerange * @param {string} data.calendarObjectId The id of the calendar-object to remove */ removeCalendarObjectIdFromTimeRange(state, _ref5) { let { timeRangeId, calendarObjectId } = _ref5; const index = state.fetchedTimeRangesById[timeRangeId].calendarObjectIds.indexOf(calendarObjectId); if (index !== -1) { state.fetchedTimeRangesById[timeRangeId].calendarObjectIds.splice(index, 1); } }, /** * Removes a calendar-object-id from any time-range it may occur in * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {string} data.calendarObjectId The id of the calendar-object to remove */ removeCalendarObjectIdFromAnyTimeRange(state, _ref6) { let { calendarObjectId } = _ref6; for (const timeRange of state.fetchedTimeRanges) { const index = timeRange.calendarObjectIds.indexOf(calendarObjectId); if (index !== -1) { timeRange.calendarObjectIds.splice(index, 1); } } }, /** * Updates the last-fetched timestamp of a time-range * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {number} data.timeRangeId The id of the timerange * @param {number} data.lastFetched Timestamp of last-fetched */ updateTimestampOfLastFetched(state, _ref7) { let { timeRangeId, lastFetched } = _ref7; state.fetchedTimeRangesById[timeRangeId].lastFetched = lastFetched; }, /** * Adds a calendar-object-id to all time-ranges of a given caloendar * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {string} data.calendarObjectId The id of the calendar-object * @param {string} data.calendarId The id of the calendar */ addCalendarObjectIdToAllTimeRangesOfCalendar(state, _ref8) { let { calendarObjectId, calendarId } = _ref8; for (const timerange of state.fetchedTimeRanges) { if (timerange.calendarId !== calendarId) { continue; } if (timerange.calendarObjectIds.indexOf(calendarObjectId) === -1) { timerange.calendarObjectIds.push(calendarObjectId); } } }, /** * Removes a calendar-object-id to all time-ranges of a given caloendar * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {string} data.calendarObjectId The id of the calendar-object * @param {string} data.calendarId The id of the calendar */ removeCalendarObjectIdFromAllTimeRangesOfCalendar(state, _ref9) { let { calendarObjectId, calendarId } = _ref9; for (const timerange of state.fetchedTimeRanges) { if (timerange.calendarId !== calendarId) { continue; } const index = timerange.calendarObjectIds.indexOf(calendarObjectId); if (index !== -1) { timerange.calendarObjectIds.splice(index, 1); } } }, /** * clear FetchedTimeRanges Store * * @param {object} state The vuex state */ clearFetchedTimeRanges(state) { state.lastTimeRangeInsertId = -1; state.fetchedTimeRanges = []; state.fetchedTimeRangesById = {}; } }; const getters = { /** * Get all time-ranges for a calendar * * @param {object} state The vuex state * @return {function({String}): {Object}[]} */ getAllTimeRangesForCalendar: state => calendarId => state.fetchedTimeRanges.filter(f => f.calendarId === calendarId), /** * Get time-range covering * * @param {object} state The vuex state * @return {function({Number}, {Number}, {Number}): {Object}|false} */ getTimeRangeForCalendarCoveringRange: state => (calendarId, requestedFrom, requestedTo) => { return state.fetchedTimeRanges.find(f => { return f.calendarId === calendarId && f.from <= requestedFrom && f.to >= requestedTo; }); }, /** * Get all time-ranges that have been last fetched before a given time * * @param {object} state The vuex state * @return {function({Number}): {Object}[]} */ getAllTimeRangesOlderThan: state => olderThan => state.fetchedTimeRanges.filter(f => f.lastFetched <= olderThan), /** * * @param {object} state The vuex state * @return {number} */ getLastTimeRangeInsertId: state => state.lastTimeRangeInsertId, /** * * @param {object} state The vuex state * @param {object} getters The vuex getters * @return {function({Number}): {CalendarObject}[]} */ getCalendarObjectsByTimeRangeId: (state, getters) => timeRangeId => { if (!state.fetchedTimeRangesById[timeRangeId]) { return []; } return state.fetchedTimeRangesById[timeRangeId].calendarObjectIds.map(calendarObjectId => { return getters.getCalendarObjectById(calendarObjectId); }); } }; const actions = {}; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/importFiles.js": /*!**********************************!*\ !*** ./src/store/importFiles.js ***! \**********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /** * @copyright Copyright (c) 2019 Team Popcorn * * @copyright Copyright (c) 2020 Georg Ehrke * * @author Team Popcorn * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { lastFileInsertId: -1, importFiles: [], importFilesById: {}, importCalendarRelation: {} }; const mutations = { /** * Adds a file to the state * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {string} data.contents Contents of file * @param {number} data.lastModified Timestamp of last modification * @param {string} data.name Name of file * @param {AbstractParser} data.parser The parser * @param {number} data.size Size of file * @param {string} data.type mime-type of file */ addFile(state, _ref) { let { contents, lastModified, name, parser, size, type } = _ref; const file = { id: ++state.lastFileInsertId, contents, lastModified, name, parser, size, type }; state.importFiles.push(file); vue__WEBPACK_IMPORTED_MODULE_0__["default"].set(state.importFilesById, file.id, file); }, /** * Sets a calendar for the file * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {number} data.fileId Id of file to select calendar for * @param {string} data.calendarId Id of calendar to import file into */ setCalendarForFileId(state, _ref2) { let { fileId, calendarId } = _ref2; vue__WEBPACK_IMPORTED_MODULE_0__["default"].set(state.importCalendarRelation, fileId, calendarId); }, /** * Removes all files from state * * @param {object} state The vuex state */ removeAllFiles(state) { vue__WEBPACK_IMPORTED_MODULE_0__["default"].set(state, 'importFiles', []); vue__WEBPACK_IMPORTED_MODULE_0__["default"].set(state, 'importFilesById', {}); vue__WEBPACK_IMPORTED_MODULE_0__["default"].set(state, 'importCalendarRelation', {}); } }; const getters = {}; const actions = {}; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/importState.js": /*!**********************************!*\ !*** ./src/store/importState.js ***! \**********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _models_consts_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../models/consts.js */ "./src/models/consts.js"); /** * @copyright Copyright (c) 2019 Team Popcorn * * @copyright Copyright (c) 2020 Georg Ehrke * * @author Team Popcorn * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { total: 0, accepted: 0, denied: 0, stage: _models_consts_js__WEBPACK_IMPORTED_MODULE_0__.IMPORT_STAGE_DEFAULT }; const mutations = { /** * Increment the number of calendar-objects accepted * * @param {object} state the store data */ incrementAccepted(state) { state.accepted++; }, /** * Increment the number of calendar-objects denied * * @param {object} state the store data */ incrementDenied(state) { state.denied++; }, /** * Set the total number of calendar-objects * * @param {object} state the store data * @param {number} total the total number of calendar-objects to import */ setTotal(state, total) { state.total = total; }, /** * Change stage to the indicated one * * @param {object} state the store data * @param {string} stage the name of the stage, see /src/models/consts.js */ changeStage(state, stage) { state.stage = stage; }, /** * Reset to the default state * * @param {object} state the store data */ resetState(state) { state.total = 0; state.accepted = 0; state.denied = 0; state.stage = _models_consts_js__WEBPACK_IMPORTED_MODULE_0__.IMPORT_STAGE_DEFAULT; } }; const getters = {}; const actions = {}; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/index.js": /*!****************************!*\ !*** ./src/store/index.js ***! \****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); /* harmony import */ var _calendarObjectInstance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calendarObjectInstance.js */ "./src/store/calendarObjectInstance.js"); /* harmony import */ var _calendarObjects_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./calendarObjects.js */ "./src/store/calendarObjects.js"); /* harmony import */ var _calendars_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./calendars.js */ "./src/store/calendars.js"); /* harmony import */ var _contacts_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./contacts.js */ "./src/store/contacts.js"); /* harmony import */ var _davRestrictions_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./davRestrictions.js */ "./src/store/davRestrictions.js"); /* harmony import */ var _fetchedTimeRanges_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fetchedTimeRanges.js */ "./src/store/fetchedTimeRanges.js"); /* harmony import */ var _importFiles_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./importFiles.js */ "./src/store/importFiles.js"); /* harmony import */ var _importState_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./importState.js */ "./src/store/importState.js"); /* harmony import */ var _principals_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./principals.js */ "./src/store/principals.js"); /* harmony import */ var _settings_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./settings.js */ "./src/store/settings.js"); /* harmony import */ var _userRole_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./userRole.js */ "./src/store/userRole.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @author John Molakvoæ * * @author Thomas Citharel * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ vue__WEBPACK_IMPORTED_MODULE_11__["default"].use(vuex__WEBPACK_IMPORTED_MODULE_12__["default"]); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new vuex__WEBPACK_IMPORTED_MODULE_12__["default"].Store({ modules: { calendarObjectInstance: _calendarObjectInstance_js__WEBPACK_IMPORTED_MODULE_0__["default"], calendarObjects: _calendarObjects_js__WEBPACK_IMPORTED_MODULE_1__["default"], calendars: _calendars_js__WEBPACK_IMPORTED_MODULE_2__["default"], contacts: _contacts_js__WEBPACK_IMPORTED_MODULE_3__["default"], davRestrictions: _davRestrictions_js__WEBPACK_IMPORTED_MODULE_4__["default"], fetchedTimeRanges: _fetchedTimeRanges_js__WEBPACK_IMPORTED_MODULE_5__["default"], importFiles: _importFiles_js__WEBPACK_IMPORTED_MODULE_6__["default"], importState: _importState_js__WEBPACK_IMPORTED_MODULE_7__["default"], principals: _principals_js__WEBPACK_IMPORTED_MODULE_8__["default"], settings: _settings_js__WEBPACK_IMPORTED_MODULE_9__["default"], userRole: _userRole_js__WEBPACK_IMPORTED_MODULE_10__["default"] } // // Throw errors when the state is edited outside of mutations // strict: true })); /***/ }), /***/ "./src/store/principals.js": /*!*********************************!*\ !*** ./src/store/principals.js ***! \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _models_principal_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../models/principal.js */ "./src/models/principal.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { principals: [], principalsById: {}, currentUserPrincipal: null }; const mutations = { /** * Adds a principal to the state * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {object} data.principal The principal to add */ addPrincipal(state, _ref) { let { principal } = _ref; const object = (0,_models_principal_js__WEBPACK_IMPORTED_MODULE_2__.getDefaultPrincipalObject)(principal); if (state.principalsById[object.id]) { return; } state.principals.push(object); vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(state.principalsById, object.id, object); }, /** * Adds the current user principal to the state * * @param {object} state The vuex state * @param {object} data destructuring object * @param {string} data.principalId principalId of the current-user-principal */ setCurrentUserPrincipal(state, _ref2) { let { principalId } = _ref2; state.currentUserPrincipal = principalId; }, /** * Changes the schedule-default-calendar-URL of a principal * * @param {object} state The vuex state * @param {object} data The destructuring object * @param {object} data.principal The principal to modify * @param {string} data.scheduleDefaultCalendarUrl The new schedule-default-calendar-URL */ changePrincipalScheduleDefaultCalendarUrl(state, _ref3) { let { principal, scheduleDefaultCalendarUrl } = _ref3; vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(state.principalsById[principal.id], 'scheduleDefaultCalendarUrl', scheduleDefaultCalendarUrl); } }; const getters = { /** * Gets a principal object by its url * * @param {object} state the store data * @return {function({String}): {Object}} */ getPrincipalByUrl: state => url => state.principals.find(principal => principal.url === url), /** * Gets a principal object by its id * * @param {object} state the store data * @return {function({String}): {Object}} */ getPrincipalById: state => id => state.principalsById[id], /** * Gets the principal object of the current-user-principal * * @param {object} state the store data * @return {{Object}} */ getCurrentUserPrincipal: state => state.principalsById[state.currentUserPrincipal], /** * Gets the email-address of the current-user-principal * * @param {object} state the store data * @return {string|undefined} */ getCurrentUserPrincipalEmail: state => { var _state$principalsById; return (_state$principalsById = state.principalsById[state.currentUserPrincipal]) === null || _state$principalsById === void 0 ? void 0 : _state$principalsById.emailAddress; } }; const actions = { /** * Fetches a principal from the DAV server and commits it to the state * * @param {object} context The vuex context * @param {string} url The URL of the principal * @return {Promise} */ async fetchPrincipalByUrl(context, _ref4) { let { url } = _ref4; // Don't refetch principals we already have if (context.getters.getPrincipalByUrl(url)) { return; } const principal = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.findPrincipalByUrl)(url); if (!principal) { // TODO - handle error return; } context.commit('addPrincipal', { principal: (0,_models_principal_js__WEBPACK_IMPORTED_MODULE_2__.mapDavToPrincipal)(principal) }); }, /** * Fetches the current-user-principal * * @param {object} context The vuex context * @return {Promise} */ async fetchCurrentUserPrincipal(context) { const currentUserPrincipal = (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.getCurrentUserPrincipal)(); if (!currentUserPrincipal) { // TODO - handle error return; } const principal = (0,_models_principal_js__WEBPACK_IMPORTED_MODULE_2__.mapDavToPrincipal)(currentUserPrincipal); context.commit('addPrincipal', { principal }); context.commit('setCurrentUserPrincipal', { principalId: principal.id }); _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__["default"].debug("Current user principal is ".concat(principal.url)); }, /** * Change a principal's schedule-default-calendar-URL * * @param {object} context The vuex context * @param {object} data The destructuring object * @param {object} data.principal The principal to modify * @param {string} data.scheduleDefaultCalendarUrl The new schedule-default-calendar-URL * @return {Promise} */ async changePrincipalScheduleDefaultCalendarUrl(context, _ref5) { let { principal, scheduleDefaultCalendarUrl } = _ref5; principal.dav.scheduleDefaultCalendarUrl = scheduleDefaultCalendarUrl; await principal.dav.update(); context.commit('changePrincipalScheduleDefaultCalendarUrl', { principal, scheduleDefaultCalendarUrl }); } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/settings.js": /*!*******************************!*\ !*** ./src/store/settings.js ***! \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/caldavService.js */ "./src/services/caldavService.js"); /* harmony import */ var _models_calendar_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../models/calendar.js */ "./src/models/calendar.js"); /* harmony import */ var _services_timezoneDetectionService_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/timezoneDetectionService.js */ "./src/services/timezoneDetectionService.js"); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _services_settings_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../services/settings.js */ "./src/services/settings.js"); /* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js"); /* harmony import */ var _services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../services/timezoneDataProviderService.js */ "./src/services/timezoneDataProviderService.js"); /* harmony import */ var _services_attachmentService_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../services/attachmentService.js */ "./src/services/attachmentService.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * @copyright Copyright (c) 2022 Informatyka Boguslawski sp. z o.o. sp.k., http://www.ib.pl/ * * @author Georg Ehrke * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const state = { // env appVersion: null, firstRun: null, talkEnabled: false, disableAppointments: false, publicCalendars: null, // user-defined calendar settings eventLimit: null, showTasks: null, showWeekends: null, showWeekNumbers: null, skipPopover: null, slotDuration: null, defaultReminder: null, tasksEnabled: false, timezone: 'automatic', hideEventExport: false, forceEventAlarmType: false, canSubscribeLink: true, showResources: true, // user-defined Nextcloud settings momentLocale: 'en', attachmentsFolder: '/Calendar', attachmentsFolderCreated: false }; const mutations = { /** * Updates the user's setting for event limit * * @param {object} state The Vuex state */ toggleEventLimitEnabled(state) { state.eventLimit = !state.eventLimit; }, /** * Updates the user's setting for visibility of event popover * * @param {object} state The Vuex state */ togglePopoverEnabled(state) { state.skipPopover = !state.skipPopover; }, /** * Updates the user's setting for visibility of weekends * * @param {object} state The Vuex state */ toggleTasksEnabled(state) { state.showTasks = !state.showTasks; }, /** * Updates the user's setting for visibility of weekends * * @param {object} state The Vuex state */ toggleWeekendsEnabled(state) { state.showWeekends = !state.showWeekends; }, /** * Updates the user's setting for visibility of week numbers * * @param {object} state The Vuex state */ toggleWeekNumberEnabled(state) { state.showWeekNumbers = !state.showWeekNumbers; }, /** * Updates the user's preferred slotDuration * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {string} data.slotDuration The new slot duration */ setSlotDuration(state, _ref) { let { slotDuration } = _ref; state.slotDuration = slotDuration; }, /** * Updates the user's preferred defaultReminder * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {string} data.defaultReminder The new default reminder length */ setDefaultReminder(state, _ref2) { let { defaultReminder } = _ref2; state.defaultReminder = defaultReminder; }, /** * Updates the user's timezone * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {string} data.timezoneId The new timezone */ setTimezone(state, _ref3) { let { timezoneId } = _ref3; state.timezone = timezoneId; }, /** * Updates the user's attachments folder * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {string} data.attachmentsFolder The new attachments folder */ setAttachmentsFolder(state, _ref4) { let { attachmentsFolder } = _ref4; state.attachmentsFolder = attachmentsFolder; state.attachmentsFolderCreated = false; }, /** * Update wheter the user's attachments folder has been created * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {boolean} data.attachmentsFolderCreated True if the folder has been created */ setAttachmentsFolderCreated(state, _ref5) { let { attachmentsFolderCreated } = _ref5; state.attachmentsFolderCreated = attachmentsFolderCreated; }, /** * Initialize settings * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {string} data.appVersion The version of the Nextcloud app * @param {boolean} data.eventLimit Whether or not to limit number of visible events in grid view * @param {boolean} data.firstRun Whether or not this is the first run * @param {boolean} data.showWeekNumbers Whether or not to show week numbers * @param {boolean} data.showTasks Whether or not to display tasks with a due-date * @param {boolean} data.showWeekends Whether or not to display weekends * @param {boolean} data.skipPopover Whether or not to skip the simple event popover * @param {string} data.slotDuration The duration of one slot in the agendaView * @param {string} data.defaultReminder The default reminder to set on newly created events * @param {boolean} data.talkEnabled Whether or not the talk app is enabled * @param {boolean} data.tasksEnabled Whether ot not the tasks app is enabled * @param {string} data.timezone The timezone to view the calendar in. Either an Olsen timezone or "automatic" * @param {boolean} data.hideEventExport * @param {string} data.forceEventAlarmType * @param {boolean} data.disableAppointments Allow to disable the appointments feature * @param {boolean} data.canSubscribeLink * @param {string} data.attachmentsFolder Default user's attachments folder * @param {boolean} data.showResources Show or hide the resources tab * @param {string} data.publicCalendars */ loadSettingsFromServer(state, _ref6) { let { appVersion, eventLimit, firstRun, showWeekNumbers, showTasks, showWeekends, skipPopover, slotDuration, defaultReminder, talkEnabled, tasksEnabled, timezone, hideEventExport, forceEventAlarmType, disableAppointments, canSubscribeLink, attachmentsFolder, showResources, publicCalendars } = _ref6; (0,_utils_logger_js__WEBPACK_IMPORTED_MODULE_5__.logInfo)("\nInitial settings:\n\t- AppVersion: ".concat(appVersion, "\n\t- EventLimit: ").concat(eventLimit, "\n\t- FirstRun: ").concat(firstRun, "\n\t- ShowWeekNumbers: ").concat(showWeekNumbers, "\n\t- ShowTasks: ").concat(showTasks, "\n\t- ShowWeekends: ").concat(showWeekends, "\n\t- SkipPopover: ").concat(skipPopover, "\n\t- SlotDuration: ").concat(slotDuration, "\n\t- DefaultReminder: ").concat(defaultReminder, "\n\t- TalkEnabled: ").concat(talkEnabled, "\n\t- TasksEnabled: ").concat(tasksEnabled, "\n\t- Timezone: ").concat(timezone, "\n\t- HideEventExport: ").concat(hideEventExport, "\n\t- ForceEventAlarmType: ").concat(forceEventAlarmType, "\n\t- disableAppointments: ").concat(disableAppointments, "\n\t- CanSubscribeLink: ").concat(canSubscribeLink, "\n\t- attachmentsFolder: ").concat(attachmentsFolder, "\n\t- ShowResources: ").concat(showResources, "\n\t- PublicCalendars: ").concat(publicCalendars, "\n")); state.appVersion = appVersion; state.eventLimit = eventLimit; state.firstRun = firstRun; state.showWeekNumbers = showWeekNumbers; state.showTasks = showTasks; state.showWeekends = showWeekends; state.skipPopover = skipPopover; state.slotDuration = slotDuration; state.defaultReminder = defaultReminder; state.talkEnabled = talkEnabled; state.tasksEnabled = tasksEnabled; state.timezone = timezone; state.hideEventExport = hideEventExport; state.forceEventAlarmType = forceEventAlarmType; state.disableAppointments = disableAppointments; state.canSubscribeLink = canSubscribeLink; state.attachmentsFolder = attachmentsFolder; state.showResources = showResources; state.publicCalendars = publicCalendars; }, /** * Sets the name of the moment.js locale to be used * * @param {object} state The Vuex state * @param {object} data The destructuring object * @param {string} data.locale The moment.js locale to be used */ setMomentLocale(state, _ref7) { let { locale } = _ref7; (0,_utils_logger_js__WEBPACK_IMPORTED_MODULE_5__.logInfo)("Updated moment locale: ".concat(locale)); state.momentLocale = locale; } }; const getters = { isTalkEnabled: state => state.talkEnabled, /** * Gets the resolved timezone. * If the timezone is set to automatic, it returns the user's current timezone * Otherwise, it returns the Olsen timezone stored * * @param {object} state The Vuex state * @return {string} */ getResolvedTimezone: state => state.timezone === 'automatic' ? (0,_services_timezoneDetectionService_js__WEBPACK_IMPORTED_MODULE_2__.detectTimezone)() : state.timezone, /** * Gets the resolved timezone object. * Falls back to UTC if timezone is invalid. * * @param {object} state The Vuex state * @param {object} getters The vuex getters * @return {object} The calendar-js timezone object */ getResolvedTimezoneObject: (state, getters) => { const timezone = getters.getResolvedTimezone; let timezoneObject = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_6__["default"])().getTimezoneForId(timezone); if (!timezoneObject) { timezoneObject = (0,_services_timezoneDataProviderService_js__WEBPACK_IMPORTED_MODULE_6__["default"])().getTimezoneForId('UTC'); } return timezoneObject; } }; const actions = { /** * Updates the user's setting for visibility of birthday calendar * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.getters The Vuex Getters * @param {Function} vuex.commit The Vuex commit Function * @param {Function} vuex.dispatch The Vuex dispatch Function * @return {Promise} */ async toggleBirthdayCalendarEnabled(_ref8) { let { getters, commit, dispatch } = _ref8; if (getters.hasBirthdayCalendar) { const calendar = getters.getBirthdayCalendar; await dispatch('deleteCalendar', { calendar }); } else { const davCalendar = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_0__.enableBirthdayCalendar)(); const calendar = (0,_models_calendar_js__WEBPACK_IMPORTED_MODULE_1__.mapDavCollectionToCalendar)(davCalendar); commit('addCalendar', { calendar }); } }, /** * Updates the user's setting for event limit * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.commit The Vuex commit Function * @return {Promise} */ async toggleEventLimitEnabled(_ref9) { let { state, commit } = _ref9; const newState = !state.eventLimit; const value = newState ? 'yes' : 'no'; await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('eventLimit', value); commit('toggleEventLimitEnabled'); }, /** * Updates the user's setting for visibility of event popover * * @param {object} context The Vuex context * @param {object} context.state The store state * @param {object} context.commit The store mutations * @return {Promise} */ async togglePopoverEnabled(_ref10) { let { state, commit } = _ref10; const newState = !state.skipPopover; const value = newState ? 'yes' : 'no'; await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('skipPopover', value); commit('togglePopoverEnabled'); }, /** * Updates the user's setting for visibility of weekends * * @param {object} context The Vuex context * @param {object} context.state The store state * @param {object} context.commit The store mutations * @return {Promise} */ async toggleWeekendsEnabled(_ref11) { let { state, commit } = _ref11; const newState = !state.showWeekends; const value = newState ? 'yes' : 'no'; await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('showWeekends', value); commit('toggleWeekendsEnabled'); }, /** * Updates the user's setting for visibility of tasks * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.commit The Vuex commit Function * @return {Promise} */ async toggleTasksEnabled(_ref12) { let { state, commit } = _ref12; const newState = !state.showTasks; const value = newState ? 'yes' : 'no'; await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('showTasks', value); commit('toggleTasksEnabled'); commit('clearFetchedTimeRanges'); commit('incrementModificationCount'); }, /** * Updates the user's setting for visibility of week numbers * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.commit The Vuex commit Function * @return {Promise} */ async toggleWeekNumberEnabled(_ref13) { let { state, commit } = _ref13; const newState = !state.showWeekNumbers; const value = newState ? 'yes' : 'no'; await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('showWeekNr', value); commit('toggleWeekNumberEnabled'); }, /** * Updates the view to be used as initial view when opening * the calendar app again * * @param {object} context The Vuex destructuring object * @param {object} data The destructuring object * @param {string} data.initialView New view to be used as initial view * @return {Promise} */ async setInitialView(context, _ref14) { let { initialView } = _ref14; await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('view', initialView); }, /** * Updates the user's preferred slotDuration * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.commit The Vuex commit Function * @param {object} data The destructuring object * @param {string} data.slotDuration The new slot duration */ async setSlotDuration(_ref15, _ref16) { let { state, commit } = _ref15; let { slotDuration } = _ref16; if (state.slotDuration === slotDuration) { return; } await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('slotDuration', slotDuration); commit('setSlotDuration', { slotDuration }); }, /** * Updates the user's preferred defaultReminder * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.commit The Vuex commit Function * @param {object} data The destructuring object * @param {string} data.defaultReminder The new default reminder */ async setDefaultReminder(_ref17, _ref18) { let { state, commit } = _ref17; let { defaultReminder } = _ref18; if (state.defaultReminder === defaultReminder) { return; } await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('defaultReminder', defaultReminder); commit('setDefaultReminder', { defaultReminder }); }, /** * Updates the user's timezone * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.commit The Vuex commit Function * @param {object} data The destructuring object * @param {string} data.timezoneId The new timezone * @return {Promise} */ async setTimezone(_ref19, _ref20) { let { state, commit } = _ref19; let { timezoneId } = _ref20; if (state.timezone === timezoneId) { return; } await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('timezone', timezoneId); commit('setTimezone', { timezoneId }); }, /** * Updates the user's attachments folder * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.commit The Vuex commit Function * @param {object} data The destructuring object * @param {string} data.attachmentsFolder The new attachments folder * @return {Promise} */ async setAttachmentsFolder(_ref21, _ref22) { let { state, commit } = _ref21; let { attachmentsFolder } = _ref22; if (state.attachmentsFolder === attachmentsFolder) { return; } await (0,_services_settings_js__WEBPACK_IMPORTED_MODULE_4__.setConfig)('attachmentsFolder', attachmentsFolder); commit('setAttachmentsFolder', { attachmentsFolder }); }, /** * Create the user's attachment folder if it doesn't exist and return its path * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state * @param {Function} vuex.commit The Vuex commit Function * @param {Function} vuex.dispatch The Vuex commit function * @param {object} vuex.getters The Vuex getters object * @return {Promise} The path of the user's attachments folder */ async createAttachmentsFolder(_ref23) { let { state, commit, dispatch, getters } = _ref23; if (state.attachmentsFolderCreated) { return state.attachmentsFolder; } const userId = getters.getCurrentUserPrincipal.dav.userId; const path = await _services_attachmentService_js__WEBPACK_IMPORTED_MODULE_7__.createFolder(state.attachmentsFolder, userId); if (path !== state.attachmentsFolder) { await dispatch('setAttachmentsFolder', { attachmentsFolder: path }); } commit('setAttachmentsFolderCreated', { attachmentsFolderCreated: true }); return path; }, /** * Initializes the calendar-js configuration * * @param {object} vuex The Vuex destructuring object * @param {object} vuex.state The Vuex state */ initializeCalendarJsConfig(_ref24) { let { state } = _ref24; (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_3__.setConfig)('PRODID', "-//IDN nextcloud.com//Calendar app ".concat(state.appVersion, "//EN")); (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_3__.setConfig)('property-list-significant-change', ['SUMMARY', 'LOCATION', 'DESCRIPTION', 'CLIENT']); } }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ state, mutations, getters, actions }); /***/ }), /***/ "./src/store/userRole.js": /*!*******************************!*\ !*** ./src/store/userRole.js ***! \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _services_roleService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/roleService */ "./src/services/roleService.js"); const state = { roles: [] // Store the roles here }; const mutations = { setUserRole(state, roles) { state.roles = roles; } }; const actions = { async fetchUserRoles(_ref) { let { commit } = _ref; try { // Pass commit to the service await _services_roleService__WEBPACK_IMPORTED_MODULE_0__["default"].fetchAndCommitRoles(commit); } catch (error) {} } }; const getters = { isAdmin: state => state.roles.includes("admin"), canAccessPreviousEvent: state => state.roles.includes("Ligne") == false && state.roles.includes("ligne") == false }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ namespaced: true, state, mutations, actions, getters }); /***/ }), /***/ "./src/utils/alarms.js": /*!*****************************!*\ !*** ./src/utils/alarms.js ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getAmountAndUnitForTimedEvents: () => (/* binding */ getAmountAndUnitForTimedEvents), /* harmony export */ getAmountHoursMinutesAndUnitForAllDayEvents: () => (/* binding */ getAmountHoursMinutesAndUnitForAllDayEvents), /* harmony export */ getFactorForAlarmUnit: () => (/* binding */ getFactorForAlarmUnit), /* harmony export */ getTotalSecondsFromAmountAndUnitForTimedEvents: () => (/* binding */ getTotalSecondsFromAmountAndUnitForTimedEvents), /* harmony export */ getTotalSecondsFromAmountHourMinutesAndUnitForAllDayEvents: () => (/* binding */ getTotalSecondsFromAmountHourMinutesAndUnitForAllDayEvents), /* harmony export */ updateAlarms: () => (/* binding */ updateAlarms) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Get the factor for a given unit * * @param {string} unit The name of the unit to get the factor of * @return {number} */ function getFactorForAlarmUnit(unit) { switch (unit) { case 'seconds': return 1; case 'minutes': return 60; case 'hours': return 60 * 60; case 'days': return 24 * 60 * 60; case 'weeks': return 7 * 24 * 60 * 60; default: return 1; } } /** * Gets the amount of days / weeks, unit from total seconds * * @param {number} totalSeconds Total amount of seconds * @return {{amount: number, unit: string}} */ function getAmountAndUnitForTimedEvents(totalSeconds) { // Before or after the event is handled somewhere else, // so make sure totalSeconds is positive totalSeconds = Math.abs(totalSeconds); // Handle the special case of 0, so we don't show 0 weeks if (totalSeconds === 0) { return { amount: 0, unit: 'minutes' }; } if (totalSeconds % (7 * 24 * 60 * 60) === 0) { return { amount: totalSeconds / (7 * 24 * 60 * 60), unit: 'weeks' }; } if (totalSeconds % (24 * 60 * 60) === 0) { return { amount: totalSeconds / (24 * 60 * 60), unit: 'days' }; } if (totalSeconds % (60 * 60) === 0) { return { amount: totalSeconds / (60 * 60), unit: 'hours' }; } if (totalSeconds % 60 === 0) { return { amount: totalSeconds / 60, unit: 'minutes' }; } return { amount: totalSeconds, unit: 'seconds' }; } /** * Get the total amount of seconds based on amount and unit for timed events * * @param {number} amount Amount of unit * @param {string} unit Minutes/Hours/Days/Weeks * @param {boolean=} isBefore Whether the reminder is before or after the event * @return {number} */ function getTotalSecondsFromAmountAndUnitForTimedEvents(amount, unit) { let isBefore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; return amount * getFactorForAlarmUnit(unit) * (isBefore ? -1 : 1); } /** * Gets the amount of days / weeks, unit, hours and minutes from total seconds * * @param {number} totalSeconds Total amount of seconds * @return {{amount: *, unit: *, hours: *, minutes: *}} */ function getAmountHoursMinutesAndUnitForAllDayEvents(totalSeconds) { const dayFactor = getFactorForAlarmUnit('days'); const hourFactor = getFactorForAlarmUnit('hours'); const minuteFactor = getFactorForAlarmUnit('minutes'); const isNegative = totalSeconds < 0; totalSeconds = Math.abs(totalSeconds); let dayPart = Math.floor(totalSeconds / dayFactor); const hourPart = totalSeconds % dayFactor; if (hourPart !== 0) { if (isNegative) { dayPart++; } } let amount = 0; let unit = null; if (dayPart === 0) { unit = 'days'; } else if (dayPart % 7 === 0) { amount = dayPart / 7; unit = 'weeks'; } else { amount = dayPart; unit = 'days'; } let hours = Math.floor(hourPart / hourFactor); const minutePart = hourPart % hourFactor; let minutes = Math.floor(minutePart / minuteFactor); if (isNegative) { hours = 24 - hours; if (minutes !== 0) { hours--; minutes = 60 - minutes; } } return { amount, unit, hours, minutes }; } /** * Get the total amount of seconds for all-day events * * @param {number} amount amount of unit * @param {number} hours Time of reminder * @param {number} minutes Time of reminder * @param {string} unit days/weeks * @return {number} */ function getTotalSecondsFromAmountHourMinutesAndUnitForAllDayEvents(amount, hours, minutes, unit) { if (unit === 'weeks') { amount *= 7; unit = 'days'; } // 0 is on the same day of the all-day event => positive // 1 ... n before the event is negative const isNegative = amount > 0; if (isNegative) { // If it's negative, we need to subtract one day amount--; // Convert days to seconds amount *= getFactorForAlarmUnit(unit); let invertedHours = 24 - hours; let invertedMinutes = 0; if (minutes !== 0) { invertedHours--; invertedMinutes = 60 - minutes; } amount += invertedHours * getFactorForAlarmUnit('hours'); amount += invertedMinutes * getFactorForAlarmUnit('minutes'); amount *= -1; } else { // Convert days to seconds amount *= getFactorForAlarmUnit('days'); amount += hours * getFactorForAlarmUnit('hours'); amount += minutes * getFactorForAlarmUnit('minutes'); } return amount; } /** * Propagate data from an event component to all EMAIL alarm components. * An alarm component must contain a description, summary and all attendees to be notified. * We don't have a separate UI for maintaining attendees of an alarm, so we just copy them from the event. * * https://www.rfc-editor.org/rfc/rfc5545#section-3.6.6 * * @param {AbstractRecurringComponent} eventComponent */ function updateAlarms(eventComponent) { for (const alarmComponent of eventComponent.getAlarmIterator()) { if (alarmComponent.action !== 'EMAIL' && alarmComponent.action !== 'DISPLAY') { continue; } alarmComponent.deleteAllProperties('SUMMARY'); const summaryProperty = eventComponent.getFirstProperty('SUMMARY'); if (summaryProperty) { alarmComponent.addProperty(summaryProperty.clone()); } else { const defaultSummary = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.translate)('calendar', 'Untitled event'); alarmComponent.addProperty(new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.Property('SUMMARY', defaultSummary)); } if (!alarmComponent.hasProperty('DESCRIPTION')) { const defaultDescription = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.translate)('calendar', 'This is an event reminder.'); alarmComponent.addProperty(new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.Property('DESCRIPTION', defaultDescription)); } alarmComponent.deleteAllProperties('ATTENDEE'); for (const attendee of eventComponent.getAttendeeIterator()) { if (['RESOURCE', 'ROOM'].includes(attendee.userType)) { continue; } // Only copy the email address (value) of the attendee alarmComponent.addProperty(new _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.AttendeeProperty('ATTENDEE', attendee.value)); } } } /***/ }), /***/ "./src/utils/attendee.js": /*!*******************************!*\ !*** ./src/utils/attendee.js ***! \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ addMailtoPrefix: () => (/* binding */ addMailtoPrefix), /* harmony export */ organizerDisplayName: () => (/* binding */ organizerDisplayName), /* harmony export */ removeMailtoPrefix: () => (/* binding */ removeMailtoPrefix) /* harmony export */ }); /** * @copyright Copyright (c) 2021 Richard Steinmetz * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Remove the mailto prefix from a URI and return it * * @param {string} uri URI to remove the prefix from * @return {string} URI without a mailto prefix */ function removeMailtoPrefix(uri) { if (typeof uri !== 'string') { return ''; } if (uri.startsWith('mailto:')) { return uri.slice(7); } return uri; } /** * Add the mailto prefix to a URI if it doesn't have one yet and return it * * @param {string} uri URI to add the prefix to * @return {string} URI with a mailto prefix */ function addMailtoPrefix(uri) { if (typeof uri !== 'string') { return 'mailto:'; } if (uri.startsWith('mailto:')) { return uri; } return "mailto:".concat(uri); } /** * Get the display name of an organizer * * @param {?object} organizer Organizer object to extract a display name from * @return {string} Display name of given organizer */ function organizerDisplayName(organizer) { if (!organizer) { return ''; } if (organizer.commonName) { return organizer.commonName; } return removeMailtoPrefix(organizer.uri); } /***/ }), /***/ "./src/utils/calendarObject.js": /*!*************************************!*\ !*** ./src/utils/calendarObject.js ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getAllObjectsInTimeRange: () => (/* binding */ getAllObjectsInTimeRange), /* harmony export */ getObjectAtRecurrenceId: () => (/* binding */ getObjectAtRecurrenceId) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Get all recurrence-items in given range * * @param {object} calendarObject Calendar-object model * @param {Date} start Begin of time-range * @param {Date} end End of time-range * @return {Array} */ const getAllObjectsInTimeRange = (calendarObject, start, end) => { const iterator = calendarObject.calendarComponent.getVObjectIterator(); const firstVObject = iterator.next().value; if (!firstVObject) { return []; } const s = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DateTimeValue.fromJSDate(start, true); const e = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DateTimeValue.fromJSDate(end, true); return firstVObject.recurrenceManager.getAllOccurrencesBetween(s, e); }; /** * Get recurrence-item at exactly a given recurrence-Id * * @param {object} calendarObject Calendar-object model * @param {Date} recurrenceId RecurrenceId to retrieve * @return {AbstractRecurringComponent|null} */ const getObjectAtRecurrenceId = (calendarObject, recurrenceId) => { const iterator = calendarObject.calendarComponent.getVObjectIterator(); const firstVObject = iterator.next().value; if (!firstVObject) { return null; } const d = _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.DateTimeValue.fromJSDate(recurrenceId, true); return firstVObject.recurrenceManager.getOccurrenceAtExactly(d); }; /***/ }), /***/ "./src/utils/closestColor.js": /*!***********************************!*\ !*** ./src/utils/closestColor.js ***! \***********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ closestColor) /* harmony export */ }); /* harmony import */ var css_color_names__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! css-color-names */ "./node_modules/css-color-names/css-color-names.json"); /* harmony import */ var lodash_sortBy_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/sortBy.js */ "./node_modules/lodash/sortBy.js"); /* harmony import */ var lodash_sortBy_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_sortBy_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var lodash_pick_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/pick.js */ "./node_modules/lodash/pick.js"); /* harmony import */ var lodash_pick_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_pick_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var lodash_uniqBy_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/uniqBy.js */ "./node_modules/lodash/uniqBy.js"); /* harmony import */ var lodash_uniqBy_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_uniqBy_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var color_string__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! color-string */ "./node_modules/color-string/index.js"); /* harmony import */ var color_string__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(color_string__WEBPACK_IMPORTED_MODULE_4__); /** * @copyright Copyright (c) 2023 Richard Steinmetz * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ // Code was taken from: // - https://github.com/juliuste/closest-css-color // - https://github.com/gausie/colour-proximity // - https://github.com/gausie/colour-proximity/pull/3 const uniqColorKeys = lodash_uniqBy_js__WEBPACK_IMPORTED_MODULE_3___default()(Object.keys(css_color_names__WEBPACK_IMPORTED_MODULE_0__), c => css_color_names__WEBPACK_IMPORTED_MODULE_0__[c]); const filteredColors = lodash_pick_js__WEBPACK_IMPORTED_MODULE_2___default()(css_color_names__WEBPACK_IMPORTED_MODULE_0__, uniqColorKeys); const colors = lodash_sortBy_js__WEBPACK_IMPORTED_MODULE_1___default()(Object.keys(filteredColors).map(name => ({ name, hex: filteredColors[name] })), c => c.hex); const defaults = { detailed: false }; /** * Find the closest CSS color to a given hex color. * * Adapted from https://github.com/juliuste/closest-css-color * * Copyright (c) 2021, Julius Tens * * Permission to use, copy, modify, and/or distribute this software for any purpose with or without * fee is hereby granted, provided that the above copyright notice and this permission notice * appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS * SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. * * @param {string} hex Hex color string * @param {object} opt Options * @param {boolean=} opt.detailed Return color object instead of just the name * @return {string|{name: string, hex: string}} Closest color name or object */ function closestColor(hex) { let opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; const options = { ...defaults, ...opt }; const sortedColors = lodash_sortBy_js__WEBPACK_IMPORTED_MODULE_1___default()(colors, c => proximity(hex, c.hex)); if (options.detailed) { return sortedColors[0]; } return sortedColors[0].name; } /** * Calculate the proximity between two colors. * * Adapted from https://github.com/gausie/colour-proximity * * Copyright (c) 2013, Samuel Gaus * * @param {string} s1 Hex color string 1 * @param {string} s2 Hex color string 2 * @return {number} */ function proximity(s1, s2) { const c1 = rgb2lab(color_string__WEBPACK_IMPORTED_MODULE_4__.get.rgb(s1)); const c2 = rgb2lab(color_string__WEBPACK_IMPORTED_MODULE_4__.get.rgb(s2)); return Math.sqrt(Math.pow(c1[0] - c2[0], 2) + Math.pow(c1[1] - c2[1], 2) + Math.pow(c1[2] - c2[2], 2)); } /** * Adapted from https://github.com/gausie/colour-proximity * * Copyright (c) 2013, Samuel Gaus * * @param {number[]} input RGB array */ function rgb2lab(input) { // This code is adapted from various functions at http://www.easyrgb.com/index.php?X=MATH const rgb = [0, 0, 0]; const xyz = [0, 0, 0]; const Lab = [0, 0, 0]; for (let i = 0; i < input.length; i++) { let value = input[i] / 255; if (value > 0.04045) { value = Math.pow((value + 0.055) / 1.055, 2.4); } else { value = value / 12.92; } rgb[i] = value * 100; } xyz[0] = (rgb[0] * 0.4124 + rgb[1] * 0.3576 + rgb[2] * 0.1805) / 95.047; // ref_X = 95.047 Observer= 2°, Illuminant= D65 xyz[1] = (rgb[0] * 0.2126 + rgb[1] * 0.7152 + rgb[2] * 0.0722) / 100.0; // ref_Y = 100.000 xyz[2] = (rgb[0] * 0.0193 + rgb[1] * 0.1192 + rgb[2] * 0.9505) / 108.883; // ref_Z = 108.883 for (let i = 0; i < 3; i++) { let value = xyz[i]; if (value > 0.008856) { value = Math.pow(value, 1 / 3); } else { value = 7.787 * value + 16 / 116; } xyz[i] = value; } Lab[0] = parseFloat((116 * xyz[1] - 16).toFixed(3)); Lab[1] = parseFloat((500 * (xyz[0] - xyz[1])).toFixed(3)); Lab[2] = parseFloat((200 * (xyz[1] - xyz[2])).toFixed(3)); return Lab; } /***/ }), /***/ "./src/utils/color.js": /*!****************************!*\ !*** ./src/utils/color.js ***! \****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ detectColor: () => (/* binding */ detectColor), /* harmony export */ generateTextColorForHex: () => (/* binding */ generateTextColorForHex), /* harmony export */ generateTextColorForRGB: () => (/* binding */ generateTextColorForRGB), /* harmony export */ getClosestCSS3ColorNameForHex: () => (/* binding */ getClosestCSS3ColorNameForHex), /* harmony export */ getHexForColorName: () => (/* binding */ getHexForColorName), /* harmony export */ hexToRGB: () => (/* binding */ hexToRGB), /* harmony export */ isLight: () => (/* binding */ isLight), /* harmony export */ uidToHexColor: () => (/* binding */ uidToHexColor) /* harmony export */ }); /* harmony import */ var color_convert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! color-convert */ "./node_modules/color-convert/index.js"); /* harmony import */ var color_convert__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(color_convert__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _uidToColor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uidToColor.js */ "./src/utils/uidToColor.js"); /* harmony import */ var css_color_names__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! css-color-names */ "./node_modules/css-color-names/css-color-names.json"); /* harmony import */ var _closestColor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./closestColor.js */ "./src/utils/closestColor.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Detect if a color is light or dark * * @param {object} data The destructuring object * @param {number} data.red Red part of the RGB * @param {number} data.green Green part of the RGB * @param {number} data.blue Blue part of the RGB * @return {boolean} true if color is light, false if color is dark */ function isLight(_ref) { let { red, green, blue } = _ref; const brightness = (red * 299 + green * 587 + blue * 114) / 1000; return brightness > 130; } /** * Get a text-color that's readable on a given background color * * @param {string} hexColor The hex color to get a text color for * @return {string} the matching text color */ function generateTextColorForHex(hexColor) { return generateTextColorForRGB(hexToRGB(hexColor)); } /** * Get a text-color that's readable on a given background color * * @param {object} data The destructuring object * @param {number} data.red Red part of the RGB * @param {number} data.green Green part of the RGB * @param {number} data.blue Blue part of the RGB * @return {string} */ function generateTextColorForRGB(_ref2) { let { red, green, blue } = _ref2; return isLight({ red, green, blue }) ? '#000000' : '#FAFAFA'; } /** * Convert hex string to RGB * * @param {string} hexColor The hex color to convert * @return {string} the RGB result */ function hexToRGB(hexColor) { if (hexColor == null) { return { red: 0, green: 0, blue: 0 }; } const [red, green, blue] = color_convert__WEBPACK_IMPORTED_MODULE_0___default().hex.rgb(hexColor.slice(1)); return { red, green, blue }; } /** * Generates a hex color based on RGB string * * @param {string} uid The string to generate a color from * @return {string} The hex color */ function uidToHexColor(uid) { const color = (0,_uidToColor_js__WEBPACK_IMPORTED_MODULE_1__.uidToColor)(uid); return '#' + color_convert__WEBPACK_IMPORTED_MODULE_0___default().rgb.hex(color.r, color.g, color.b); } /** * Detects a color from a given string * * @param {string} color The color to get the real RGB hex string from * @return {string|boolean|*} String if color detected, boolean if not */ function detectColor(color) { if (/^(#)((?:[A-Fa-f0-9]{3}){1,2})$/.test(color)) { // #ff00ff and #f0f return color; } else if (/^((?:[A-Fa-f0-9]{3}){1,2})$/.test(color)) { // ff00ff and f0f return '#' + color; } else if (/^(#)((?:[A-Fa-f0-9]{8}))$/.test(color)) { // #ff00ffff and #f0ff return color.slice(0, 7); } else if (/^((?:[A-Fa-f0-9]{8}))$/.test(color)) { // ff00ffff and f0ff return '#' + color.slice(0, 6); } return false; } /** * Gets the HEX code for a css3 color name * * @param {string} colorName The name of the css3 color * @return {string | null} string of HEX if valid color, null if not */ function getHexForColorName(colorName) { return css_color_names__WEBPACK_IMPORTED_MODULE_2__[colorName] || null; } /** * Gets the closest css3 color name for a given HEX code * * @param {string} hex The HEX code to get a css3 color name for * @return {string} */ function getClosestCSS3ColorNameForHex(hex) { return (0,_closestColor_js__WEBPACK_IMPORTED_MODULE_3__["default"])(hex); } /***/ }), /***/ "./src/utils/date.js": /*!***************************!*\ !*** ./src/utils/date.js ***! \***************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ dateFactory: () => (/* binding */ dateFactory), /* harmony export */ getDateFromDateTimeValue: () => (/* binding */ getDateFromDateTimeValue), /* harmony export */ getDateFromFirstdayParam: () => (/* binding */ getDateFromFirstdayParam), /* harmony export */ getUnixTimestampFromDate: () => (/* binding */ getUnixTimestampFromDate), /* harmony export */ getYYYYMMDDFromDate: () => (/* binding */ getYYYYMMDDFromDate), /* harmony export */ getYYYYMMDDFromFirstdayParam: () => (/* binding */ getYYYYMMDDFromFirstdayParam), /* harmony export */ modifyDate: () => (/* binding */ modifyDate) /* harmony export */ }); /* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logger.js */ "./src/utils/logger.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * returns a new Date object * * @return {Date} */ function dateFactory() { return new Date(); } /** * formats a Date object as YYYYMMDD * * @param {Date} date Date to format * @return {string} */ function getYYYYMMDDFromDate(date) { return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().split('T')[0]; } /** * get unix time from date object * * @param {Date} date Date to format * @return {number} */ function getUnixTimestampFromDate(date) { return Math.floor(date.getTime() / 1000); } /** * Gets a Date-object based on the firstday param used in routes * * @param {string} firstDayParam The firstday param from the router * @return {Date} */ function getDateFromFirstdayParam(firstDayParam) { if (firstDayParam === 'now') { return dateFactory(); } const [year, month, date] = firstDayParam.split('-').map(str => parseInt(str, 10)); if (Number.isNaN(year) || Number.isNaN(month) || Number.isNaN(date)) { _logger_js__WEBPACK_IMPORTED_MODULE_0__["default"].error('First day parameter contains non-numerical components, falling back to today'); return dateFactory(); } const dateObject = dateFactory(); dateObject.setFullYear(year, month - 1, date); dateObject.setHours(0, 0, 0, 0); return dateObject; } /** * formats firstday param as YYYYMMDD * * @param {string} firstDayParam The firstday param from the router * @return {string} */ function getYYYYMMDDFromFirstdayParam(firstDayParam) { if (firstDayParam === 'now') { return getYYYYMMDDFromDate(dateFactory()); } return firstDayParam; } /** * Gets a date object based on the given DateTimeValue * Ignores given timezone-information * * @param {DateTimeValue} dateTimeValue Value to get date from * @return {Date} */ function getDateFromDateTimeValue(dateTimeValue) { return new Date(dateTimeValue.year, dateTimeValue.month - 1, dateTimeValue.day, dateTimeValue.hour, dateTimeValue.minute, 0, 0); } /** * modifies a date * * @param {Date} date Date object to modify * @param {object} data The destructuring object * @param {number} data.day Number of days to add * @param {number} data.week Number of weeks to add * @param {number} data.month Number of months to add * @param data.year * @return {Date} */ function modifyDate(date, _ref) { let { day = 0, week = 0, month = 0, year = 0 } = _ref; date = new Date(date.getTime()); date.setDate(date.getDate() + day); date.setDate(date.getDate() + week * 7); date.setMonth(date.getMonth() + month); date.setFullYear(date.getFullYear() + year); return date; } /***/ }), /***/ "./src/utils/freebusy.js": /*!*******************************!*\ !*** ./src/utils/freebusy.js ***! \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ doFreeBusyRequest: () => (/* binding */ doFreeBusyRequest), /* harmony export */ getColorForFBType: () => (/* binding */ getColorForFBType) /* harmony export */ }); /* harmony import */ var _nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/calendar-js */ "./node_modules/@nextcloud/calendar-js/dist/index.es.mjs"); /* harmony import */ var _services_caldavService_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/caldavService.js */ "./src/services/caldavService.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Gets the corresponding color for a given Free/Busy type * * @param {string} type The type of the FreeBusy property * @return {string} */ function getColorForFBType() { let type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'BUSY'; switch (type) { case 'FREE': return 'rgba(255,255,255,0)'; case 'BUSY-TENTATIVE': return 'rgba(184,129,0,0.3)'; case 'BUSY': return 'rgba(217,24,18,0.3)'; case 'BUSY-UNAVAILABLE': return 'rgba(219,219,219)'; default: return 'rgba(0,113,173,0.3)'; } } // TODO: Tuple types (mixed array) will be added in jsdoc 4 /* eslint-disable jsdoc/valid-types */ /** * Generator that yields tuples of an attendee property and the corresponding free busy property * Only yields tuples where the attendee is actually blocked * * @generator * @param {DateTimeValue} start Start date * @param {DateTimeValue} end End date * @param {AttendeeProperty} organizer The organizer whose scheduling outbox to use * @param {AttendeeProperty[]} attendees Attendees to request the free busy times from * @yields {[AttendeeProperty, FreeBusyProperty]} Tuples of attendee property and free busy property where the attendee is blocked * @return {AsyncGenerator<[AttendeeProperty, FreeBusyProperty], void, void>} Generator that yields tuples of attendee property and free busy property where the attendee is blocked */ async function* doFreeBusyRequest(start, end, organizer, attendees) { const freeBusyComponent = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.createFreeBusyRequest)(start, end, organizer, attendees); const freeBusyICS = freeBusyComponent.toICS(); const outbox = await (0,_services_caldavService_js__WEBPACK_IMPORTED_MODULE_1__.findSchedulingOutbox)(); const freeBusyData = await outbox.freeBusyRequest(freeBusyICS); for (const [, data] of Object.entries(freeBusyData)) { if (!data.success) { continue; } const parserManager = (0,_nextcloud_calendar_js__WEBPACK_IMPORTED_MODULE_0__.getParserManager)(); const parser = parserManager.getParserForFileType('text/calendar'); parser.parse(data.calendarData); // TODO: fix me upstream, parser only exports VEVENT, VJOURNAL and VTODO at the moment const calendarComponent = parser._calendarComponent; const freeBusyComponent = calendarComponent.getFirstComponent('VFREEBUSY'); if (!freeBusyComponent) { continue; } for (const attendeeProperty of freeBusyComponent.getPropertyIterator('ATTENDEE')) { for (const freeBusyProperty of freeBusyComponent.getPropertyIterator('FREEBUSY')) { if (freeBusyProperty.type === 'FREE') { // We care about anything BUT free slots continue; } yield [attendeeProperty, freeBusyProperty]; } } } } /* eslint-disable jsdoc/valid-types */ /***/ }), /***/ "./src/utils/localization.js": /*!***********************************!*\ !*** ./src/utils/localization.js ***! \***********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getLangConfigForVue2DatePicker: () => (/* binding */ getLangConfigForVue2DatePicker) /* harmony export */ }); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Maps a moment locale to a vue2-datepicker locale * * See https://github.com/mengxiong10/vue2-datepicker/blob/master/locale.md * * @param {string} momentLocale Name of the moment locale * @return {object} The vue2-datepicker lang object */ const getLangConfigForVue2DatePicker = momentLocale => { const dateFormat = _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"].localeData(momentLocale).longDateFormat('L').toUpperCase(); return { formatLocale: { months: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.getMonthNames)(), monthsShort: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.getMonthNamesShort)(), weekdays: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.getDayNames)(), weekdaysShort: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.getDayNamesShort)(), weekdaysMin: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.getDayNamesMin)(), firstDayOfWeek: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_1__.getFirstDay)(), firstWeekContainsDate: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"].localeData(momentLocale).firstDayOfYear(), meridiem: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"].localeData(momentLocale).meridiem, meridiemParse: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"].localeData(momentLocale).meridiemParse, isPM: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_0__["default"].localeData(momentLocale).isPM }, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: dateFormat.indexOf('M') < dateFormat.indexOf('Y') }; }; /***/ }), /***/ "./src/utils/logger.js": /*!*****************************!*\ !*** ./src/utils/logger.js ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ logDebug: () => (/* binding */ logDebug), /* harmony export */ logError: () => (/* binding */ logError), /* harmony export */ logFatal: () => (/* binding */ logFatal), /* harmony export */ logInfo: () => (/* binding */ logInfo), /* harmony export */ logWarn: () => (/* binding */ logWarn) /* harmony export */ }); /* harmony import */ var _nextcloud_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/logger */ "./node_modules/@nextcloud/logger/dist/index.js"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ const logger = (0,_nextcloud_logger__WEBPACK_IMPORTED_MODULE_0__.getLoggerBuilder)().setApp('calendar').detectUser().build(); /** * Logs a debug message * * @param {string} message The message to log * @param {object=} context Additional context if needed */ const logDebug = function (message) { let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; logger.debug(message, context); }; /** * Logs an error message * * @param {string} message The message to log * @param {object=} context Additional context if needed */ const logError = function (message) { let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; logger.error(message, context); }; /** * Logs a fatal message * * @param {string} message The message to log * @param {object=} context Additional context if needed */ const logFatal = function (message) { let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; logger.fatal(message, context); }; /** * Logs an info message * * @param {string} message The message to log * @param {object=} context Additional context if needed */ const logInfo = function (message) { let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; logger.info(message, context); }; /** * Logs a warn message * * @param {string} message The message to log * @param {object=} context Additional context if needed */ const logWarn = function (message) { let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; logger.warn(message, context); }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (logger); /***/ }), /***/ "./src/utils/moment.js": /*!*****************************!*\ !*** ./src/utils/moment.js ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ loadMomentLocalization) /* harmony export */ }); /* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs"); /* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @copyright Copyright (c) 2018 John Molakvoæ * * @author Georg Ehrke * * @author John Molakvoæ * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * * @return {Promise} */ async function loadMomentLocalization() { const locale = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.getLocale)().replace('_', '-').toLowerCase(); const language = (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.getLanguage)().replace('_', '-').toLowerCase(); if (locale === language) { return getLocaleFor(locale); } const [realLocale, realLanguage] = await Promise.all([getLocaleFor(locale), getLocaleFor(language)]); if (realLocale === realLanguage) { return realLocale; } const name = "nextcloud-calendar-fake-locale-".concat(realLocale, "-").concat(realLanguage); _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].defineLocale(name, { parentLocale: realLanguage, longDateFormat: { LT: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('LT'), LTS: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('LTS'), L: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('L'), LL: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('LL'), LLL: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('LLL'), LLLL: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('LLLL'), l: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('l'), ll: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('ll'), lll: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('lll'), llll: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).longDateFormat('llll') }, week: { dow: (0,_nextcloud_l10n__WEBPACK_IMPORTED_MODULE_0__.getFirstDay)(), doy: _nextcloud_moment__WEBPACK_IMPORTED_MODULE_1__["default"].localeData(realLocale).firstDayOfYear() } }); return name; } /** * Dynamically loads the requested locale and returns the actually loaded locale * * @param {string} locale Name of locale to load * @return {Promise} */ async function getLocaleFor(locale) { // IMPORTANT: Keep each '/moment/local/...' string as is. Otherwise, webpack might not bundle // locale data because the contentRegExp fails to detect any files. try { // default load e.g. en-de await __webpack_require__("./node_modules/moment/locale lazy recursive ^\\.\\/.*\\.js$")("./".concat(locale, ".js")); return locale; } catch (error) { const splitLocale = locale.split('-'); try { // failure: fallback to first part of locale, which // should be language locale = splitLocale[0]; await __webpack_require__("./node_modules/moment/locale lazy recursive ^\\.\\/.*\\.js$")("./".concat(locale, ".js")); return locale; } catch (e) { // failure, fallback to english console.debug('Fallback to locale', 'en'); // English is the default locale and doesn't need to imported. // It is already included in moment.js. } } return 'en'; } /***/ }), /***/ "./src/utils/randomId.js": /*!*******************************!*\ !*** ./src/utils/randomId.js ***! \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ randomId: () => (/* binding */ randomId) /* harmony export */ }); /** * @copyright Copyright (c) 2021 Richard Steinmetz * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Generate a random hex id to use with vue components. * * WARNING: This method does not use a secure random generator and isn't suited for * cryptographic purposes. * * @return {string} A random hex id */ function randomId() { return Math.random().toString(16).slice(2); } /***/ }), /***/ "./src/utils/recurrence.js": /*!*********************************!*\ !*** ./src/utils/recurrence.js ***! \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getBySetPositionAndBySetFromDate: () => (/* binding */ getBySetPositionAndBySetFromDate), /* harmony export */ getWeekDayFromDate: () => (/* binding */ getWeekDayFromDate) /* harmony export */ }); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Gets the ByDay and BySetPosition * * @param {Date} jsDate The date to get the weekday of * @return {object} */ function getBySetPositionAndBySetFromDate(jsDate) { const byDay = getWeekDayFromDate(jsDate); let bySetPosition = 1; let dayOfMonth = jsDate.getDate(); for (; dayOfMonth > 7; dayOfMonth -= 7) { bySetPosition++; } return { byDay, bySetPosition }; } /** * Gets the string-representation of the weekday of a given date * * @param {Date} jsDate The date to get the weekday of * @return {string} */ function getWeekDayFromDate(jsDate) { switch (jsDate.getDay()) { case 0: return 'SU'; case 1: return 'MO'; case 2: return 'TU'; case 3: return 'WE'; case 4: return 'TH'; case 5: return 'FR'; case 6: return 'SA'; default: throw TypeError('Invalid date-object given'); } } /***/ }), /***/ "./src/utils/router.js": /*!*****************************!*\ !*** ./src/utils/router.js ***! \*****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDefaultEndDateForNewEvent: () => (/* binding */ getDefaultEndDateForNewEvent), /* harmony export */ getDefaultStartDateForNewEvent: () => (/* binding */ getDefaultStartDateForNewEvent), /* harmony export */ getInitialView: () => (/* binding */ getInitialView), /* harmony export */ getPreferredEditorRoute: () => (/* binding */ getPreferredEditorRoute), /* harmony export */ getPrefixedRoute: () => (/* binding */ getPrefixedRoute), /* harmony export */ isPublicOrEmbeddedRoute: () => (/* binding */ isPublicOrEmbeddedRoute) /* harmony export */ }); /* harmony import */ var _nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/initial-state */ "./node_modules/@nextcloud/initial-state/dist/index.es.mjs"); /* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./date.js */ "./src/utils/date.js"); /** * @copyright Copyright (c) 2020 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Gets the initial view * * @return {string} */ function getInitialView() { try { return (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_0__.loadState)('calendar', 'initial_view'); } catch (error) { return 'dayGridMonth'; } } /** * Gets the preferred editor view * * @return {string} Either popover or sidebar */ function getPreferredEditorRoute() { let skipPopover; try { skipPopover = (0,_nextcloud_initial_state__WEBPACK_IMPORTED_MODULE_0__.loadState)('calendar', 'skip_popover'); } catch (error) { skipPopover = false; } // Don't show the popover if the window size is too small (less then its max width of 450 px + a bit) // The mobile breakpoint of the reworked modals is 1024 px / 2 so simply use that. if (window.innerWidth <= 1024 / 2) { skipPopover = true; } return skipPopover ? 'sidebar' : 'popover'; } /** * Gets the default start-date for a new event * * @return {string} */ function getDefaultStartDateForNewEvent() { const start = (0,_date_js__WEBPACK_IMPORTED_MODULE_1__.dateFactory)(); start.setHours(start.getHours() + Math.ceil(start.getMinutes() / 60)); start.setMinutes(0); return String((0,_date_js__WEBPACK_IMPORTED_MODULE_1__.getUnixTimestampFromDate)(start)); } /** * Gets the default end-date for a new event * * @return {string} */ function getDefaultEndDateForNewEvent() { // When we have a setting for default event duration, // this needs to be taken into consideration here const start = getDefaultStartDateForNewEvent(); const end = new Date(Number(start) * 1000); end.setHours(end.getHours() + 1); return String((0,_date_js__WEBPACK_IMPORTED_MODULE_1__.getUnixTimestampFromDate)(end)); } /** * Prefixes a desired route name based on the current route * * @param {string} currentRouteName The name of the current route * @param {string} toRouteName The name of the desired route * @return {string} */ function getPrefixedRoute(currentRouteName, toRouteName) { if (currentRouteName.startsWith('Embed')) { return 'Embed' + toRouteName; } if (currentRouteName.startsWith('Public')) { return 'Public' + toRouteName; } return toRouteName; } /** * Checks whether a routeName represents a public / embedded route * * @param {string} routeName Name of the route * @return {boolean} */ function isPublicOrEmbeddedRoute(routeName) { return routeName.startsWith('Embed') || routeName.startsWith('Public'); } /***/ }), /***/ "./src/utils/settings.js": /*!*******************************!*\ !*** ./src/utils/settings.js ***! \*******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getLinkToConfig: () => (/* binding */ getLinkToConfig) /* harmony export */ }); /* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs"); /** * @copyright Copyright (c) 2019 Georg Ehrke * * @author Georg Ehrke * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Get URL to modify config-key * * @param {string} key URL of config-key to modify * @return {string} */ function getLinkToConfig(key) { return [(0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.linkTo)('calendar', 'index.php'), 'v1/config', key].join('/'); } /***/ }), /***/ "./src/utils/uidToColor.js": /*!*********************************!*\ !*** ./src/utils/uidToColor.js ***! \*********************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ uidToColor: () => (/* binding */ uidToColor) /* harmony export */ }); /* harmony import */ var md5__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! md5 */ "./node_modules/md5/md5.js"); /* harmony import */ var md5__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(md5__WEBPACK_IMPORTED_MODULE_0__); /** * @copyright Copyright (c) 2018 John Molakvoæ * * @author John Molakvoæ * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * This is copied from nextcloud-vue for now, until it is exposed upstream. */ const uidToColor = uid => { // Normalize hash let hash = uid.toLowerCase(); // Already a md5 hash? if (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) { hash = md5__WEBPACK_IMPORTED_MODULE_0___default()(hash); } hash = hash.replace(/[^0-9a-f]/g, ''); const steps = 6; const finalPalette = GenColors(steps); /** * Convert a string to an integer evenly * * @param {string} hash The string to convert * @param {number} maximum The maximum value * @return {number} The integer calculated */ function hashToInt(hash, maximum) { let finalInt = 0; const result = []; // Splitting evenly the string for (let i = 0; i < hash.length; i++) { // chars in md5 goes up to f, hex:16 result.push(parseInt(hash.charAt(i), 16) % 16); } // Adds up all results for (const j in result) { finalInt += result[j]; } // chars in md5 goes up to f, hex:16 // make sure we're always using int in our operation return parseInt(parseInt(finalInt, 10) % maximum, 10); } return finalPalette[hashToInt(hash, steps * 3)]; }; /** * Color object * * @param {number} r The red value * @param {number} g The green value * @param {number} b The blue value */ function Color(r, g, b) { this.r = r; this.g = g; this.b = b; } /** * Calculate the number of steps * * @param {number} steps The number of steps * @param {Array} ends The ends * @return {Array} Array containing the number of steps per color */ function stepCalc(steps, ends) { const step = new Array(3); step[0] = (ends[1].r - ends[0].r) / steps; step[1] = (ends[1].g - ends[0].g) / steps; step[2] = (ends[1].b - ends[0].b) / steps; return step; } /** * Create a color palette from two colors * * @param {number} steps The number of steps the palette has * @param {string} color1 The first color * @param {string} color2 The second color * @return {Array} The created palette array */ function mixPalette(steps, color1, color2) { const palette = []; palette.push(color1); const step = stepCalc(steps, [color1, color2]); for (let i = 1; i < steps; i++) { const r = parseInt(color1.r + step[0] * i, 10); const g = parseInt(color1.g + step[1] * i, 10); const b = parseInt(color1.b + step[2] * i, 10); palette.push(new Color(r, g, b)); } return palette; } /** * Generate colors from the official nextcloud color * You can provide how many colors you want (multiplied by 3) * if step = 6 * 3 colors * 6 will result in 18 generated colors * * @param {number} [steps] Number of steps to go from a color to another * @return {object[]} */ function GenColors(steps) { if (!steps) { steps = 6; } const red = new Color(182, 70, 157); const yellow = new Color(221, 203, 85); const blue = new Color(0, 130, 201); // Nextcloud blue const palette1 = mixPalette(steps, red, yellow); const palette2 = mixPalette(steps, yellow, blue); const palette3 = mixPalette(steps, blue, red); return palette1.concat(palette2).concat(palette3); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (uidToColor); /***/ }), /***/ "./src/utils/url.js": /*!**************************!*\ !*** ./src/utils/url.js ***! \**************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ urldecode: () => (/* binding */ urldecode) /* harmony export */ }); /** * @copyright Copyright (c) 2021 Richard Steinmetz * * @author Richard Steinmetz * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ /** * Works like urldecode() from php * * @see https://www.php.net/manual/en/function.urldecode.php * @param {string} url The url to be decoded * @return {string} The decoded url */ function urldecode(url) { return decodeURIComponent(url.replace(/\+/g, ' ')); } /***/ }), /***/ "./node_modules/base64-js/index.js": /*!*****************************************!*\ !*** ./node_modules/base64-js/index.js ***! \*****************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; exports.byteLength = byteLength exports.toByteArray = toByteArray exports.fromByteArray = fromByteArray var lookup = [] var revLookup = [] var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' for (var i = 0, len = code.length; i < len; ++i) { lookup[i] = code[i] revLookup[code.charCodeAt(i)] = i } // Support decoding URL-safe base64 strings, as Node.js does. // See: https://en.wikipedia.org/wiki/Base64#URL_applications revLookup['-'.charCodeAt(0)] = 62 revLookup['_'.charCodeAt(0)] = 63 function getLens (b64) { var len = b64.length if (len % 4 > 0) { throw new Error('Invalid string. Length must be a multiple of 4') } // Trim off extra bytes after placeholder bytes are found // See: https://github.com/beatgammit/base64-js/issues/42 var validLen = b64.indexOf('=') if (validLen === -1) validLen = len var placeHoldersLen = validLen === len ? 0 : 4 - (validLen % 4) return [validLen, placeHoldersLen] } // base64 is 4/3 + up to two characters of the original data function byteLength (b64) { var lens = getLens(b64) var validLen = lens[0] var placeHoldersLen = lens[1] return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen } function _byteLength (b64, validLen, placeHoldersLen) { return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen } function toByteArray (b64) { var tmp var lens = getLens(b64) var validLen = lens[0] var placeHoldersLen = lens[1] var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) var curByte = 0 // if there are placeholders, only get up to the last complete 4 chars var len = placeHoldersLen > 0 ? validLen - 4 : validLen var i for (i = 0; i < len; i += 4) { tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] arr[curByte++] = (tmp >> 16) & 0xFF arr[curByte++] = (tmp >> 8) & 0xFF arr[curByte++] = tmp & 0xFF } if (placeHoldersLen === 2) { tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) arr[curByte++] = tmp & 0xFF } if (placeHoldersLen === 1) { tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) arr[curByte++] = (tmp >> 8) & 0xFF arr[curByte++] = tmp & 0xFF } return arr } function tripletToBase64 (num) { return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] } function encodeChunk (uint8, start, end) { var tmp var output = [] for (var i = start; i < end; i += 3) { tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF) output.push(tripletToBase64(tmp)) } return output.join('') } function fromByteArray (uint8) { var tmp var len = uint8.length var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes var parts = [] var maxChunkLength = 16383 // must be multiple of 3 // go through the array every three bytes, we'll deal with trailing stuff later for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) } // pad the end with zeros, but make sure to not forget the extra bytes if (extraBytes === 1) { tmp = uint8[len - 1] parts.push( lookup[tmp >> 2] + lookup[(tmp << 4) & 0x3F] + '==' ) } else if (extraBytes === 2) { tmp = (uint8[len - 2] << 8) + uint8[len - 1] parts.push( lookup[tmp >> 10] + lookup[(tmp >> 4) & 0x3F] + lookup[(tmp << 2) & 0x3F] + '=' ) } return parts.join('') } /***/ }), /***/ "./node_modules/buffer/index.js": /*!**************************************!*\ !*** ./node_modules/buffer/index.js ***! \**************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ /* eslint-disable no-proto */ const base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js") const ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js") const customInspectSymbol = (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation : null exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer exports.INSPECT_MAX_BYTES = 50 const K_MAX_LENGTH = 0x7fffffff exports.kMaxLength = K_MAX_LENGTH /** * If `Buffer.TYPED_ARRAY_SUPPORT`: * === true Use Uint8Array implementation (fastest) * === false Print warning and recommend using `buffer` v4.x which has an Object * implementation (most compatible, even IE6) * * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, * Opera 11.6+, iOS 4.2+. * * We report that the browser does not support typed arrays if the are not subclassable * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support * for __proto__ and has a buggy typed array implementation. */ Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') { console.error( 'This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' ) } function typedArraySupport () { // Can typed array instances can be augmented? try { const arr = new Uint8Array(1) const proto = { foo: function () { return 42 } } Object.setPrototypeOf(proto, Uint8Array.prototype) Object.setPrototypeOf(arr, proto) return arr.foo() === 42 } catch (e) { return false } } Object.defineProperty(Buffer.prototype, 'parent', { enumerable: true, get: function () { if (!Buffer.isBuffer(this)) return undefined return this.buffer } }) Object.defineProperty(Buffer.prototype, 'offset', { enumerable: true, get: function () { if (!Buffer.isBuffer(this)) return undefined return this.byteOffset } }) function createBuffer (length) { if (length > K_MAX_LENGTH) { throw new RangeError('The value "' + length + '" is invalid for option "size"') } // Return an augmented `Uint8Array` instance const buf = new Uint8Array(length) Object.setPrototypeOf(buf, Buffer.prototype) return buf } /** * The Buffer constructor returns instances of `Uint8Array` that have their * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of * `Uint8Array`, so the returned instances will have all the node `Buffer` methods * and the `Uint8Array` methods. Square bracket notation works as expected -- it * returns a single octet. * * The `Uint8Array` prototype remains unmodified. */ function Buffer (arg, encodingOrOffset, length) { // Common case. if (typeof arg === 'number') { if (typeof encodingOrOffset === 'string') { throw new TypeError( 'The "string" argument must be of type string. Received type number' ) } return allocUnsafe(arg) } return from(arg, encodingOrOffset, length) } Buffer.poolSize = 8192 // not used by this implementation function from (value, encodingOrOffset, length) { if (typeof value === 'string') { return fromString(value, encodingOrOffset) } if (ArrayBuffer.isView(value)) { return fromArrayView(value) } if (value == null) { throw new TypeError( 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + (typeof value) ) } if (isInstance(value, ArrayBuffer) || (value && isInstance(value.buffer, ArrayBuffer))) { return fromArrayBuffer(value, encodingOrOffset, length) } if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || (value && isInstance(value.buffer, SharedArrayBuffer)))) { return fromArrayBuffer(value, encodingOrOffset, length) } if (typeof value === 'number') { throw new TypeError( 'The "value" argument must not be of type number. Received type number' ) } const valueOf = value.valueOf && value.valueOf() if (valueOf != null && valueOf !== value) { return Buffer.from(valueOf, encodingOrOffset, length) } const b = fromObject(value) if (b) return b if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') { return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length) } throw new TypeError( 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + (typeof value) ) } /** * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError * if value is a number. * Buffer.from(str[, encoding]) * Buffer.from(array) * Buffer.from(buffer) * Buffer.from(arrayBuffer[, byteOffset[, length]]) **/ Buffer.from = function (value, encodingOrOffset, length) { return from(value, encodingOrOffset, length) } // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: // https://github.com/feross/buffer/pull/148 Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype) Object.setPrototypeOf(Buffer, Uint8Array) function assertSize (size) { if (typeof size !== 'number') { throw new TypeError('"size" argument must be of type number') } else if (size < 0) { throw new RangeError('The value "' + size + '" is invalid for option "size"') } } function alloc (size, fill, encoding) { assertSize(size) if (size <= 0) { return createBuffer(size) } if (fill !== undefined) { // Only pay attention to encoding if it's a string. This // prevents accidentally sending in a number that would // be interpreted as a start offset. return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill) } return createBuffer(size) } /** * Creates a new filled Buffer instance. * alloc(size[, fill[, encoding]]) **/ Buffer.alloc = function (size, fill, encoding) { return alloc(size, fill, encoding) } function allocUnsafe (size) { assertSize(size) return createBuffer(size < 0 ? 0 : checked(size) | 0) } /** * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. * */ Buffer.allocUnsafe = function (size) { return allocUnsafe(size) } /** * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. */ Buffer.allocUnsafeSlow = function (size) { return allocUnsafe(size) } function fromString (string, encoding) { if (typeof encoding !== 'string' || encoding === '') { encoding = 'utf8' } if (!Buffer.isEncoding(encoding)) { throw new TypeError('Unknown encoding: ' + encoding) } const length = byteLength(string, encoding) | 0 let buf = createBuffer(length) const actual = buf.write(string, encoding) if (actual !== length) { // Writing a hex string, for example, that contains invalid characters will // cause everything after the first invalid character to be ignored. (e.g. // 'abxxcd' will be treated as 'ab') buf = buf.slice(0, actual) } return buf } function fromArrayLike (array) { const length = array.length < 0 ? 0 : checked(array.length) | 0 const buf = createBuffer(length) for (let i = 0; i < length; i += 1) { buf[i] = array[i] & 255 } return buf } function fromArrayView (arrayView) { if (isInstance(arrayView, Uint8Array)) { const copy = new Uint8Array(arrayView) return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength) } return fromArrayLike(arrayView) } function fromArrayBuffer (array, byteOffset, length) { if (byteOffset < 0 || array.byteLength < byteOffset) { throw new RangeError('"offset" is outside of buffer bounds') } if (array.byteLength < byteOffset + (length || 0)) { throw new RangeError('"length" is outside of buffer bounds') } let buf if (byteOffset === undefined && length === undefined) { buf = new Uint8Array(array) } else if (length === undefined) { buf = new Uint8Array(array, byteOffset) } else { buf = new Uint8Array(array, byteOffset, length) } // Return an augmented `Uint8Array` instance Object.setPrototypeOf(buf, Buffer.prototype) return buf } function fromObject (obj) { if (Buffer.isBuffer(obj)) { const len = checked(obj.length) | 0 const buf = createBuffer(len) if (buf.length === 0) { return buf } obj.copy(buf, 0, 0, len) return buf } if (obj.length !== undefined) { if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { return createBuffer(0) } return fromArrayLike(obj) } if (obj.type === 'Buffer' && Array.isArray(obj.data)) { return fromArrayLike(obj.data) } } function checked (length) { // Note: cannot use `length < K_MAX_LENGTH` here because that fails when // length is NaN (which is otherwise coerced to zero.) if (length >= K_MAX_LENGTH) { throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') } return length | 0 } function SlowBuffer (length) { if (+length != length) { // eslint-disable-line eqeqeq length = 0 } return Buffer.alloc(+length) } Buffer.isBuffer = function isBuffer (b) { return b != null && b._isBuffer === true && b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false } Buffer.compare = function compare (a, b) { if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { throw new TypeError( 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' ) } if (a === b) return 0 let x = a.length let y = b.length for (let i = 0, len = Math.min(x, y); i < len; ++i) { if (a[i] !== b[i]) { x = a[i] y = b[i] break } } if (x < y) return -1 if (y < x) return 1 return 0 } Buffer.isEncoding = function isEncoding (encoding) { switch (String(encoding).toLowerCase()) { case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'latin1': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return true default: return false } } Buffer.concat = function concat (list, length) { if (!Array.isArray(list)) { throw new TypeError('"list" argument must be an Array of Buffers') } if (list.length === 0) { return Buffer.alloc(0) } let i if (length === undefined) { length = 0 for (i = 0; i < list.length; ++i) { length += list[i].length } } const buffer = Buffer.allocUnsafe(length) let pos = 0 for (i = 0; i < list.length; ++i) { let buf = list[i] if (isInstance(buf, Uint8Array)) { if (pos + buf.length > buffer.length) { if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf) buf.copy(buffer, pos) } else { Uint8Array.prototype.set.call( buffer, buf, pos ) } } else if (!Buffer.isBuffer(buf)) { throw new TypeError('"list" argument must be an Array of Buffers') } else { buf.copy(buffer, pos) } pos += buf.length } return buffer } function byteLength (string, encoding) { if (Buffer.isBuffer(string)) { return string.length } if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { return string.byteLength } if (typeof string !== 'string') { throw new TypeError( 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + typeof string ) } const len = string.length const mustMatch = (arguments.length > 2 && arguments[2] === true) if (!mustMatch && len === 0) return 0 // Use a for loop to avoid recursion let loweredCase = false for (;;) { switch (encoding) { case 'ascii': case 'latin1': case 'binary': return len case 'utf8': case 'utf-8': return utf8ToBytes(string).length case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return len * 2 case 'hex': return len >>> 1 case 'base64': return base64ToBytes(string).length default: if (loweredCase) { return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 } encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.byteLength = byteLength function slowToString (encoding, start, end) { let loweredCase = false // No need to verify that "this.length <= MAX_UINT32" since it's a read-only // property of a typed array. // This behaves neither like String nor Uint8Array in that we set start/end // to their upper/lower bounds if the value passed is out of range. // undefined is handled specially as per ECMA-262 6th Edition, // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. if (start === undefined || start < 0) { start = 0 } // Return early if start > this.length. Done here to prevent potential uint32 // coercion fail below. if (start > this.length) { return '' } if (end === undefined || end > this.length) { end = this.length } if (end <= 0) { return '' } // Force coercion to uint32. This will also coerce falsey/NaN values to 0. end >>>= 0 start >>>= 0 if (end <= start) { return '' } if (!encoding) encoding = 'utf8' while (true) { switch (encoding) { case 'hex': return hexSlice(this, start, end) case 'utf8': case 'utf-8': return utf8Slice(this, start, end) case 'ascii': return asciiSlice(this, start, end) case 'latin1': case 'binary': return latin1Slice(this, start, end) case 'base64': return base64Slice(this, start, end) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return utf16leSlice(this, start, end) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = (encoding + '').toLowerCase() loweredCase = true } } } // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) // to detect a Buffer instance. It's not possible to use `instanceof Buffer` // reliably in a browserify context because there could be multiple different // copies of the 'buffer' package in use. This method works even for Buffer // instances that were created from another copy of the `buffer` package. // See: https://github.com/feross/buffer/issues/154 Buffer.prototype._isBuffer = true function swap (b, n, m) { const i = b[n] b[n] = b[m] b[m] = i } Buffer.prototype.swap16 = function swap16 () { const len = this.length if (len % 2 !== 0) { throw new RangeError('Buffer size must be a multiple of 16-bits') } for (let i = 0; i < len; i += 2) { swap(this, i, i + 1) } return this } Buffer.prototype.swap32 = function swap32 () { const len = this.length if (len % 4 !== 0) { throw new RangeError('Buffer size must be a multiple of 32-bits') } for (let i = 0; i < len; i += 4) { swap(this, i, i + 3) swap(this, i + 1, i + 2) } return this } Buffer.prototype.swap64 = function swap64 () { const len = this.length if (len % 8 !== 0) { throw new RangeError('Buffer size must be a multiple of 64-bits') } for (let i = 0; i < len; i += 8) { swap(this, i, i + 7) swap(this, i + 1, i + 6) swap(this, i + 2, i + 5) swap(this, i + 3, i + 4) } return this } Buffer.prototype.toString = function toString () { const length = this.length if (length === 0) return '' if (arguments.length === 0) return utf8Slice(this, 0, length) return slowToString.apply(this, arguments) } Buffer.prototype.toLocaleString = Buffer.prototype.toString Buffer.prototype.equals = function equals (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') if (this === b) return true return Buffer.compare(this, b) === 0 } Buffer.prototype.inspect = function inspect () { let str = '' const max = exports.INSPECT_MAX_BYTES str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() if (this.length > max) str += ' ... ' return '' } if (customInspectSymbol) { Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect } Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { if (isInstance(target, Uint8Array)) { target = Buffer.from(target, target.offset, target.byteLength) } if (!Buffer.isBuffer(target)) { throw new TypeError( 'The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + (typeof target) ) } if (start === undefined) { start = 0 } if (end === undefined) { end = target ? target.length : 0 } if (thisStart === undefined) { thisStart = 0 } if (thisEnd === undefined) { thisEnd = this.length } if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { throw new RangeError('out of range index') } if (thisStart >= thisEnd && start >= end) { return 0 } if (thisStart >= thisEnd) { return -1 } if (start >= end) { return 1 } start >>>= 0 end >>>= 0 thisStart >>>= 0 thisEnd >>>= 0 if (this === target) return 0 let x = thisEnd - thisStart let y = end - start const len = Math.min(x, y) const thisCopy = this.slice(thisStart, thisEnd) const targetCopy = target.slice(start, end) for (let i = 0; i < len; ++i) { if (thisCopy[i] !== targetCopy[i]) { x = thisCopy[i] y = targetCopy[i] break } } if (x < y) return -1 if (y < x) return 1 return 0 } // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, // OR the last index of `val` in `buffer` at offset <= `byteOffset`. // // Arguments: // - buffer - a Buffer to search // - val - a string, Buffer, or number // - byteOffset - an index into `buffer`; will be clamped to an int32 // - encoding - an optional encoding, relevant is val is a string // - dir - true for indexOf, false for lastIndexOf function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { // Empty buffer means no match if (buffer.length === 0) return -1 // Normalize byteOffset if (typeof byteOffset === 'string') { encoding = byteOffset byteOffset = 0 } else if (byteOffset > 0x7fffffff) { byteOffset = 0x7fffffff } else if (byteOffset < -0x80000000) { byteOffset = -0x80000000 } byteOffset = +byteOffset // Coerce to Number. if (numberIsNaN(byteOffset)) { // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer byteOffset = dir ? 0 : (buffer.length - 1) } // Normalize byteOffset: negative offsets start from the end of the buffer if (byteOffset < 0) byteOffset = buffer.length + byteOffset if (byteOffset >= buffer.length) { if (dir) return -1 else byteOffset = buffer.length - 1 } else if (byteOffset < 0) { if (dir) byteOffset = 0 else return -1 } // Normalize val if (typeof val === 'string') { val = Buffer.from(val, encoding) } // Finally, search either indexOf (if dir is true) or lastIndexOf if (Buffer.isBuffer(val)) { // Special case: looking for empty string/buffer always fails if (val.length === 0) { return -1 } return arrayIndexOf(buffer, val, byteOffset, encoding, dir) } else if (typeof val === 'number') { val = val & 0xFF // Search for a byte value [0-255] if (typeof Uint8Array.prototype.indexOf === 'function') { if (dir) { return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) } else { return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) } } return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) } throw new TypeError('val must be string, number or Buffer') } function arrayIndexOf (arr, val, byteOffset, encoding, dir) { let indexSize = 1 let arrLength = arr.length let valLength = val.length if (encoding !== undefined) { encoding = String(encoding).toLowerCase() if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { if (arr.length < 2 || val.length < 2) { return -1 } indexSize = 2 arrLength /= 2 valLength /= 2 byteOffset /= 2 } } function read (buf, i) { if (indexSize === 1) { return buf[i] } else { return buf.readUInt16BE(i * indexSize) } } let i if (dir) { let foundIndex = -1 for (i = byteOffset; i < arrLength; i++) { if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { if (foundIndex === -1) foundIndex = i if (i - foundIndex + 1 === valLength) return foundIndex * indexSize } else { if (foundIndex !== -1) i -= i - foundIndex foundIndex = -1 } } } else { if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength for (i = byteOffset; i >= 0; i--) { let found = true for (let j = 0; j < valLength; j++) { if (read(arr, i + j) !== read(val, j)) { found = false break } } if (found) return i } } return -1 } Buffer.prototype.includes = function includes (val, byteOffset, encoding) { return this.indexOf(val, byteOffset, encoding) !== -1 } Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, true) } Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, false) } function hexWrite (buf, string, offset, length) { offset = Number(offset) || 0 const remaining = buf.length - offset if (!length) { length = remaining } else { length = Number(length) if (length > remaining) { length = remaining } } const strLen = string.length if (length > strLen / 2) { length = strLen / 2 } let i for (i = 0; i < length; ++i) { const parsed = parseInt(string.substr(i * 2, 2), 16) if (numberIsNaN(parsed)) return i buf[offset + i] = parsed } return i } function utf8Write (buf, string, offset, length) { return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) } function asciiWrite (buf, string, offset, length) { return blitBuffer(asciiToBytes(string), buf, offset, length) } function base64Write (buf, string, offset, length) { return blitBuffer(base64ToBytes(string), buf, offset, length) } function ucs2Write (buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) } Buffer.prototype.write = function write (string, offset, length, encoding) { // Buffer#write(string) if (offset === undefined) { encoding = 'utf8' length = this.length offset = 0 // Buffer#write(string, encoding) } else if (length === undefined && typeof offset === 'string') { encoding = offset length = this.length offset = 0 // Buffer#write(string, offset[, length][, encoding]) } else if (isFinite(offset)) { offset = offset >>> 0 if (isFinite(length)) { length = length >>> 0 if (encoding === undefined) encoding = 'utf8' } else { encoding = length length = undefined } } else { throw new Error( 'Buffer.write(string, encoding, offset[, length]) is no longer supported' ) } const remaining = this.length - offset if (length === undefined || length > remaining) length = remaining if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { throw new RangeError('Attempt to write outside buffer bounds') } if (!encoding) encoding = 'utf8' let loweredCase = false for (;;) { switch (encoding) { case 'hex': return hexWrite(this, string, offset, length) case 'utf8': case 'utf-8': return utf8Write(this, string, offset, length) case 'ascii': case 'latin1': case 'binary': return asciiWrite(this, string, offset, length) case 'base64': // Warning: maxLength not taken into account in base64Write return base64Write(this, string, offset, length) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return ucs2Write(this, string, offset, length) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.prototype.toJSON = function toJSON () { return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) } } function base64Slice (buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf) } else { return base64.fromByteArray(buf.slice(start, end)) } } function utf8Slice (buf, start, end) { end = Math.min(buf.length, end) const res = [] let i = start while (i < end) { const firstByte = buf[i] let codePoint = null let bytesPerSequence = (firstByte > 0xEF) ? 4 : (firstByte > 0xDF) ? 3 : (firstByte > 0xBF) ? 2 : 1 if (i + bytesPerSequence <= end) { let secondByte, thirdByte, fourthByte, tempCodePoint switch (bytesPerSequence) { case 1: if (firstByte < 0x80) { codePoint = firstByte } break case 2: secondByte = buf[i + 1] if ((secondByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) if (tempCodePoint > 0x7F) { codePoint = tempCodePoint } } break case 3: secondByte = buf[i + 1] thirdByte = buf[i + 2] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { codePoint = tempCodePoint } } break case 4: secondByte = buf[i + 1] thirdByte = buf[i + 2] fourthByte = buf[i + 3] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { codePoint = tempCodePoint } } } } if (codePoint === null) { // we did not generate a valid codePoint so insert a // replacement char (U+FFFD) and advance only 1 byte codePoint = 0xFFFD bytesPerSequence = 1 } else if (codePoint > 0xFFFF) { // encode to utf16 (surrogate pair dance) codePoint -= 0x10000 res.push(codePoint >>> 10 & 0x3FF | 0xD800) codePoint = 0xDC00 | codePoint & 0x3FF } res.push(codePoint) i += bytesPerSequence } return decodeCodePointsArray(res) } // Based on http://stackoverflow.com/a/22747272/680742, the browser with // the lowest limit is Chrome, with 0x10000 args. // We go 1 magnitude less, for safety const MAX_ARGUMENTS_LENGTH = 0x1000 function decodeCodePointsArray (codePoints) { const len = codePoints.length if (len <= MAX_ARGUMENTS_LENGTH) { return String.fromCharCode.apply(String, codePoints) // avoid extra slice() } // Decode in chunks to avoid "call stack size exceeded". let res = '' let i = 0 while (i < len) { res += String.fromCharCode.apply( String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) ) } return res } function asciiSlice (buf, start, end) { let ret = '' end = Math.min(buf.length, end) for (let i = start; i < end; ++i) { ret += String.fromCharCode(buf[i] & 0x7F) } return ret } function latin1Slice (buf, start, end) { let ret = '' end = Math.min(buf.length, end) for (let i = start; i < end; ++i) { ret += String.fromCharCode(buf[i]) } return ret } function hexSlice (buf, start, end) { const len = buf.length if (!start || start < 0) start = 0 if (!end || end < 0 || end > len) end = len let out = '' for (let i = start; i < end; ++i) { out += hexSliceLookupTable[buf[i]] } return out } function utf16leSlice (buf, start, end) { const bytes = buf.slice(start, end) let res = '' // If bytes.length is odd, the last 8 bits must be ignored (same as node.js) for (let i = 0; i < bytes.length - 1; i += 2) { res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) } return res } Buffer.prototype.slice = function slice (start, end) { const len = this.length start = ~~start end = end === undefined ? len : ~~end if (start < 0) { start += len if (start < 0) start = 0 } else if (start > len) { start = len } if (end < 0) { end += len if (end < 0) end = 0 } else if (end > len) { end = len } if (end < start) end = start const newBuf = this.subarray(start, end) // Return an augmented `Uint8Array` instance Object.setPrototypeOf(newBuf, Buffer.prototype) return newBuf } /* * Need to make sure that buffer isn't trying to write out of bounds. */ function checkOffset (offset, ext, length) { if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') } Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkOffset(offset, byteLength, this.length) let val = this[offset] let mul = 1 let i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } return val } Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) { checkOffset(offset, byteLength, this.length) } let val = this[offset + --byteLength] let mul = 1 while (byteLength > 0 && (mul *= 0x100)) { val += this[offset + --byteLength] * mul } return val } Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 1, this.length) return this[offset] } Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 2, this.length) return this[offset] | (this[offset + 1] << 8) } Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 2, this.length) return (this[offset] << 8) | this[offset + 1] } Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 4, this.length) return ((this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16)) + (this[offset + 3] * 0x1000000) } Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] * 0x1000000) + ((this[offset + 1] << 16) | (this[offset + 2] << 8) | this[offset + 3]) } Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) { offset = offset >>> 0 validateNumber(offset, 'offset') const first = this[offset] const last = this[offset + 7] if (first === undefined || last === undefined) { boundsError(offset, this.length - 8) } const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24 const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24 return BigInt(lo) + (BigInt(hi) << BigInt(32)) }) Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) { offset = offset >>> 0 validateNumber(offset, 'offset') const first = this[offset] const last = this[offset + 7] if (first === undefined || last === undefined) { boundsError(offset, this.length - 8) } const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset] const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last return (BigInt(hi) << BigInt(32)) + BigInt(lo) }) Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkOffset(offset, byteLength, this.length) let val = this[offset] let mul = 1 let i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkOffset(offset, byteLength, this.length) let i = byteLength let mul = 1 let val = this[offset + --i] while (i > 0 && (mul *= 0x100)) { val += this[offset + --i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 1, this.length) if (!(this[offset] & 0x80)) return (this[offset]) return ((0xff - this[offset] + 1) * -1) } Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 2, this.length) const val = this[offset] | (this[offset + 1] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 2, this.length) const val = this[offset + 1] | (this[offset] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24) } Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] << 24) | (this[offset + 1] << 16) | (this[offset + 2] << 8) | (this[offset + 3]) } Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) { offset = offset >>> 0 validateNumber(offset, 'offset') const first = this[offset] const last = this[offset + 7] if (first === undefined || last === undefined) { boundsError(offset, this.length - 8) } const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24) // Overflow return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24) }) Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) { offset = offset >>> 0 validateNumber(offset, 'offset') const first = this[offset] const last = this[offset + 7] if (first === undefined || last === undefined) { boundsError(offset, this.length - 8) } const val = (first << 24) + // Overflow this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset] return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last) }) Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, true, 23, 4) } Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, false, 23, 4) } Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, true, 52, 8) } Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { offset = offset >>> 0 if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, false, 52, 8) } function checkInt (buf, value, offset, ext, max, min) { if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') if (offset + ext > buf.length) throw new RangeError('Index out of range') } Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) { const maxBytes = Math.pow(2, 8 * byteLength) - 1 checkInt(this, value, offset, byteLength, maxBytes, 0) } let mul = 1 let i = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) { const maxBytes = Math.pow(2, 8 * byteLength) - 1 checkInt(this, value, offset, byteLength, maxBytes, 0) } let i = byteLength - 1 let mul = 1 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) this[offset] = (value & 0xff) return offset + 1 } Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) return offset + 2 } Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) this[offset] = (value >>> 8) this[offset + 1] = (value & 0xff) return offset + 2 } Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) this[offset + 3] = (value >>> 24) this[offset + 2] = (value >>> 16) this[offset + 1] = (value >>> 8) this[offset] = (value & 0xff) return offset + 4 } Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = (value & 0xff) return offset + 4 } function wrtBigUInt64LE (buf, value, offset, min, max) { checkIntBI(value, min, max, buf, offset, 7) let lo = Number(value & BigInt(0xffffffff)) buf[offset++] = lo lo = lo >> 8 buf[offset++] = lo lo = lo >> 8 buf[offset++] = lo lo = lo >> 8 buf[offset++] = lo let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)) buf[offset++] = hi hi = hi >> 8 buf[offset++] = hi hi = hi >> 8 buf[offset++] = hi hi = hi >> 8 buf[offset++] = hi return offset } function wrtBigUInt64BE (buf, value, offset, min, max) { checkIntBI(value, min, max, buf, offset, 7) let lo = Number(value & BigInt(0xffffffff)) buf[offset + 7] = lo lo = lo >> 8 buf[offset + 6] = lo lo = lo >> 8 buf[offset + 5] = lo lo = lo >> 8 buf[offset + 4] = lo let hi = Number(value >> BigInt(32) & BigInt(0xffffffff)) buf[offset + 3] = hi hi = hi >> 8 buf[offset + 2] = hi hi = hi >> 8 buf[offset + 1] = hi hi = hi >> 8 buf[offset] = hi return offset + 8 } Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) { return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) }) Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) { return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff')) }) Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) { const limit = Math.pow(2, (8 * byteLength) - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } let i = 0 let mul = 1 let sub = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { sub = 1 } this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) { const limit = Math.pow(2, (8 * byteLength) - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } let i = byteLength - 1 let mul = 1 let sub = 0 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { sub = 1 } this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) if (value < 0) value = 0xff + value + 1 this[offset] = (value & 0xff) return offset + 1 } Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) return offset + 2 } Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) this[offset] = (value >>> 8) this[offset + 1] = (value & 0xff) return offset + 2 } Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) this[offset + 2] = (value >>> 16) this[offset + 3] = (value >>> 24) return offset + 4 } Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (value < 0) value = 0xffffffff + value + 1 this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = (value & 0xff) return offset + 4 } Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) { return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) }) Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) { return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff')) }) function checkIEEE754 (buf, value, offset, ext, max, min) { if (offset + ext > buf.length) throw new RangeError('Index out of range') if (offset < 0) throw new RangeError('Index out of range') } function writeFloat (buf, value, offset, littleEndian, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) { checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) } ieee754.write(buf, value, offset, littleEndian, 23, 4) return offset + 4 } Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert) } Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert) } function writeDouble (buf, value, offset, littleEndian, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) { checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) } ieee754.write(buf, value, offset, littleEndian, 52, 8) return offset + 8 } Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert) } Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert) } // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) Buffer.prototype.copy = function copy (target, targetStart, start, end) { if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') if (!start) start = 0 if (!end && end !== 0) end = this.length if (targetStart >= target.length) targetStart = target.length if (!targetStart) targetStart = 0 if (end > 0 && end < start) end = start // Copy 0 bytes; we're done if (end === start) return 0 if (target.length === 0 || this.length === 0) return 0 // Fatal error conditions if (targetStart < 0) { throw new RangeError('targetStart out of bounds') } if (start < 0 || start >= this.length) throw new RangeError('Index out of range') if (end < 0) throw new RangeError('sourceEnd out of bounds') // Are we oob? if (end > this.length) end = this.length if (target.length - targetStart < end - start) { end = target.length - targetStart + start } const len = end - start if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { // Use built-in when available, missing from IE11 this.copyWithin(targetStart, start, end) } else { Uint8Array.prototype.set.call( target, this.subarray(start, end), targetStart ) } return len } // Usage: // buffer.fill(number[, offset[, end]]) // buffer.fill(buffer[, offset[, end]]) // buffer.fill(string[, offset[, end]][, encoding]) Buffer.prototype.fill = function fill (val, start, end, encoding) { // Handle string cases: if (typeof val === 'string') { if (typeof start === 'string') { encoding = start start = 0 end = this.length } else if (typeof end === 'string') { encoding = end end = this.length } if (encoding !== undefined && typeof encoding !== 'string') { throw new TypeError('encoding must be a string') } if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { throw new TypeError('Unknown encoding: ' + encoding) } if (val.length === 1) { const code = val.charCodeAt(0) if ((encoding === 'utf8' && code < 128) || encoding === 'latin1') { // Fast path: If `val` fits into a single byte, use that numeric value. val = code } } } else if (typeof val === 'number') { val = val & 255 } else if (typeof val === 'boolean') { val = Number(val) } // Invalid ranges are not set to a default, so can range check early. if (start < 0 || this.length < start || this.length < end) { throw new RangeError('Out of range index') } if (end <= start) { return this } start = start >>> 0 end = end === undefined ? this.length : end >>> 0 if (!val) val = 0 let i if (typeof val === 'number') { for (i = start; i < end; ++i) { this[i] = val } } else { const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding) const len = bytes.length if (len === 0) { throw new TypeError('The value "' + val + '" is invalid for argument "value"') } for (i = 0; i < end - start; ++i) { this[i + start] = bytes[i % len] } } return this } // CUSTOM ERRORS // ============= // Simplified versions from Node, changed for Buffer-only usage const errors = {} function E (sym, getMessage, Base) { errors[sym] = class NodeError extends Base { constructor () { super() Object.defineProperty(this, 'message', { value: getMessage.apply(this, arguments), writable: true, configurable: true }) // Add the error code to the name to include it in the stack trace. this.name = `${this.name} [${sym}]` // Access the stack to generate the error message including the error code // from the name. this.stack // eslint-disable-line no-unused-expressions // Reset the name to the actual name. delete this.name } get code () { return sym } set code (value) { Object.defineProperty(this, 'code', { configurable: true, enumerable: true, value, writable: true }) } toString () { return `${this.name} [${sym}]: ${this.message}` } } } E('ERR_BUFFER_OUT_OF_BOUNDS', function (name) { if (name) { return `${name} is outside of buffer bounds` } return 'Attempt to access memory outside buffer bounds' }, RangeError) E('ERR_INVALID_ARG_TYPE', function (name, actual) { return `The "${name}" argument must be of type number. Received type ${typeof actual}` }, TypeError) E('ERR_OUT_OF_RANGE', function (str, range, input) { let msg = `The value of "${str}" is out of range.` let received = input if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { received = addNumericalSeparator(String(input)) } else if (typeof input === 'bigint') { received = String(input) if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) { received = addNumericalSeparator(received) } received += 'n' } msg += ` It must be ${range}. Received ${received}` return msg }, RangeError) function addNumericalSeparator (val) { let res = '' let i = val.length const start = val[0] === '-' ? 1 : 0 for (; i >= start + 4; i -= 3) { res = `_${val.slice(i - 3, i)}${res}` } return `${val.slice(0, i)}${res}` } // CHECK FUNCTIONS // =============== function checkBounds (buf, offset, byteLength) { validateNumber(offset, 'offset') if (buf[offset] === undefined || buf[offset + byteLength] === undefined) { boundsError(offset, buf.length - (byteLength + 1)) } } function checkIntBI (value, min, max, buf, offset, byteLength) { if (value > max || value < min) { const n = typeof min === 'bigint' ? 'n' : '' let range if (byteLength > 3) { if (min === 0 || min === BigInt(0)) { range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}` } else { range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}` } } else { range = `>= ${min}${n} and <= ${max}${n}` } throw new errors.ERR_OUT_OF_RANGE('value', range, value) } checkBounds(buf, offset, byteLength) } function validateNumber (value, name) { if (typeof value !== 'number') { throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value) } } function boundsError (value, length, type) { if (Math.floor(value) !== value) { validateNumber(value, type) throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value) } if (length < 0) { throw new errors.ERR_BUFFER_OUT_OF_BOUNDS() } throw new errors.ERR_OUT_OF_RANGE(type || 'offset', `>= ${type ? 1 : 0} and <= ${length}`, value) } // HELPER FUNCTIONS // ================ const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g function base64clean (str) { // Node takes equal signs as end of the Base64 encoding str = str.split('=')[0] // Node strips out invalid characters like \n and \t from the string, base64-js does not str = str.trim().replace(INVALID_BASE64_RE, '') // Node converts strings with length < 2 to '' if (str.length < 2) return '' // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not while (str.length % 4 !== 0) { str = str + '=' } return str } function utf8ToBytes (string, units) { units = units || Infinity let codePoint const length = string.length let leadSurrogate = null const bytes = [] for (let i = 0; i < length; ++i) { codePoint = string.charCodeAt(i) // is surrogate component if (codePoint > 0xD7FF && codePoint < 0xE000) { // last char was a lead if (!leadSurrogate) { // no lead yet if (codePoint > 0xDBFF) { // unexpected trail if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } else if (i + 1 === length) { // unpaired lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } // valid lead leadSurrogate = codePoint continue } // 2 leads in a row if (codePoint < 0xDC00) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) leadSurrogate = codePoint continue } // valid surrogate pair codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 } else if (leadSurrogate) { // valid bmp char, but last char was a lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) } leadSurrogate = null // encode utf8 if (codePoint < 0x80) { if ((units -= 1) < 0) break bytes.push(codePoint) } else if (codePoint < 0x800) { if ((units -= 2) < 0) break bytes.push( codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x10000) { if ((units -= 3) < 0) break bytes.push( codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x110000) { if ((units -= 4) < 0) break bytes.push( codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else { throw new Error('Invalid code point') } } return bytes } function asciiToBytes (str) { const byteArray = [] for (let i = 0; i < str.length; ++i) { // Node's code seems to be doing this and not & 0x7F.. byteArray.push(str.charCodeAt(i) & 0xFF) } return byteArray } function utf16leToBytes (str, units) { let c, hi, lo const byteArray = [] for (let i = 0; i < str.length; ++i) { if ((units -= 2) < 0) break c = str.charCodeAt(i) hi = c >> 8 lo = c % 256 byteArray.push(lo) byteArray.push(hi) } return byteArray } function base64ToBytes (str) { return base64.toByteArray(base64clean(str)) } function blitBuffer (src, dst, offset, length) { let i for (i = 0; i < length; ++i) { if ((i + offset >= dst.length) || (i >= src.length)) break dst[i + offset] = src[i] } return i } // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass // the `instanceof` check but they should be treated as of that type. // See: https://github.com/feross/buffer/issues/166 function isInstance (obj, type) { return obj instanceof type || (obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name) } function numberIsNaN (obj) { // For IE11 support return obj !== obj // eslint-disable-line no-self-compare } // Create lookup table for `toString('hex')` // See: https://github.com/feross/buffer/issues/219 const hexSliceLookupTable = (function () { const alphabet = '0123456789abcdef' const table = new Array(256) for (let i = 0; i < 16; ++i) { const i16 = i * 16 for (let j = 0; j < 16; ++j) { table[i16 + j] = alphabet[i] + alphabet[j] } } return table })() // Return not function with Error if BigInt not supported function defineBigIntMethod (fn) { return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn } function BufferBigIntNotDefined () { throw new Error('BigInt not supported') } /***/ }), /***/ "./node_modules/charenc/charenc.js": /*!*****************************************!*\ !*** ./node_modules/charenc/charenc.js ***! \*****************************************/ /***/ ((module) => { var charenc = { // UTF-8 encoding utf8: { // Convert a string to a byte array stringToBytes: function(str) { return charenc.bin.stringToBytes(unescape(encodeURIComponent(str))); }, // Convert a byte array to a string bytesToString: function(bytes) { return decodeURIComponent(escape(charenc.bin.bytesToString(bytes))); } }, // Binary encoding bin: { // Convert a string to a byte array stringToBytes: function(str) { for (var bytes = [], i = 0; i < str.length; i++) bytes.push(str.charCodeAt(i) & 0xFF); return bytes; }, // Convert a byte array to a string bytesToString: function(bytes) { for (var str = [], i = 0; i < bytes.length; i++) str.push(String.fromCharCode(bytes[i])); return str.join(''); } } }; module.exports = charenc; /***/ }), /***/ "./node_modules/color-convert/conversions.js": /*!***************************************************!*\ !*** ./node_modules/color-convert/conversions.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* MIT license */ /* eslint-disable no-mixed-operators */ const cssKeywords = __webpack_require__(/*! color-name */ "./node_modules/color-name/index.js"); // NOTE: conversions should only return primitive values (i.e. arrays, or // values that give correct `typeof` results). // do not use box values types (i.e. Number(), String(), etc.) const reverseKeywords = {}; for (const key of Object.keys(cssKeywords)) { reverseKeywords[cssKeywords[key]] = key; } const convert = { rgb: {channels: 3, labels: 'rgb'}, hsl: {channels: 3, labels: 'hsl'}, hsv: {channels: 3, labels: 'hsv'}, hwb: {channels: 3, labels: 'hwb'}, cmyk: {channels: 4, labels: 'cmyk'}, xyz: {channels: 3, labels: 'xyz'}, lab: {channels: 3, labels: 'lab'}, lch: {channels: 3, labels: 'lch'}, hex: {channels: 1, labels: ['hex']}, keyword: {channels: 1, labels: ['keyword']}, ansi16: {channels: 1, labels: ['ansi16']}, ansi256: {channels: 1, labels: ['ansi256']}, hcg: {channels: 3, labels: ['h', 'c', 'g']}, apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, gray: {channels: 1, labels: ['gray']} }; module.exports = convert; // Hide .channels and .labels properties for (const model of Object.keys(convert)) { if (!('channels' in convert[model])) { throw new Error('missing channels property: ' + model); } if (!('labels' in convert[model])) { throw new Error('missing channel labels property: ' + model); } if (convert[model].labels.length !== convert[model].channels) { throw new Error('channel and label counts mismatch: ' + model); } const {channels, labels} = convert[model]; delete convert[model].channels; delete convert[model].labels; Object.defineProperty(convert[model], 'channels', {value: channels}); Object.defineProperty(convert[model], 'labels', {value: labels}); } convert.rgb.hsl = function (rgb) { const r = rgb[0] / 255; const g = rgb[1] / 255; const b = rgb[2] / 255; const min = Math.min(r, g, b); const max = Math.max(r, g, b); const delta = max - min; let h; let s; if (max === min) { h = 0; } else if (r === max) { h = (g - b) / delta; } else if (g === max) { h = 2 + (b - r) / delta; } else if (b === max) { h = 4 + (r - g) / delta; } h = Math.min(h * 60, 360); if (h < 0) { h += 360; } const l = (min + max) / 2; if (max === min) { s = 0; } else if (l <= 0.5) { s = delta / (max + min); } else { s = delta / (2 - max - min); } return [h, s * 100, l * 100]; }; convert.rgb.hsv = function (rgb) { let rdif; let gdif; let bdif; let h; let s; const r = rgb[0] / 255; const g = rgb[1] / 255; const b = rgb[2] / 255; const v = Math.max(r, g, b); const diff = v - Math.min(r, g, b); const diffc = function (c) { return (v - c) / 6 / diff + 1 / 2; }; if (diff === 0) { h = 0; s = 0; } else { s = diff / v; rdif = diffc(r); gdif = diffc(g); bdif = diffc(b); if (r === v) { h = bdif - gdif; } else if (g === v) { h = (1 / 3) + rdif - bdif; } else if (b === v) { h = (2 / 3) + gdif - rdif; } if (h < 0) { h += 1; } else if (h > 1) { h -= 1; } } return [ h * 360, s * 100, v * 100 ]; }; convert.rgb.hwb = function (rgb) { const r = rgb[0]; const g = rgb[1]; let b = rgb[2]; const h = convert.rgb.hsl(rgb)[0]; const w = 1 / 255 * Math.min(r, Math.min(g, b)); b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); return [h, w * 100, b * 100]; }; convert.rgb.cmyk = function (rgb) { const r = rgb[0] / 255; const g = rgb[1] / 255; const b = rgb[2] / 255; const k = Math.min(1 - r, 1 - g, 1 - b); const c = (1 - r - k) / (1 - k) || 0; const m = (1 - g - k) / (1 - k) || 0; const y = (1 - b - k) / (1 - k) || 0; return [c * 100, m * 100, y * 100, k * 100]; }; function comparativeDistance(x, y) { /* See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance */ return ( ((x[0] - y[0]) ** 2) + ((x[1] - y[1]) ** 2) + ((x[2] - y[2]) ** 2) ); } convert.rgb.keyword = function (rgb) { const reversed = reverseKeywords[rgb]; if (reversed) { return reversed; } let currentClosestDistance = Infinity; let currentClosestKeyword; for (const keyword of Object.keys(cssKeywords)) { const value = cssKeywords[keyword]; // Compute comparative distance const distance = comparativeDistance(rgb, value); // Check if its less, if so set as closest if (distance < currentClosestDistance) { currentClosestDistance = distance; currentClosestKeyword = keyword; } } return currentClosestKeyword; }; convert.keyword.rgb = function (keyword) { return cssKeywords[keyword]; }; convert.rgb.xyz = function (rgb) { let r = rgb[0] / 255; let g = rgb[1] / 255; let b = rgb[2] / 255; // Assume sRGB r = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92); g = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92); b = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92); const x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); const y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); const z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); return [x * 100, y * 100, z * 100]; }; convert.rgb.lab = function (rgb) { const xyz = convert.rgb.xyz(rgb); let x = xyz[0]; let y = xyz[1]; let z = xyz[2]; x /= 95.047; y /= 100; z /= 108.883; x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116); y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116); z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116); const l = (116 * y) - 16; const a = 500 * (x - y); const b = 200 * (y - z); return [l, a, b]; }; convert.hsl.rgb = function (hsl) { const h = hsl[0] / 360; const s = hsl[1] / 100; const l = hsl[2] / 100; let t2; let t3; let val; if (s === 0) { val = l * 255; return [val, val, val]; } if (l < 0.5) { t2 = l * (1 + s); } else { t2 = l + s - l * s; } const t1 = 2 * l - t2; const rgb = [0, 0, 0]; for (let i = 0; i < 3; i++) { t3 = h + 1 / 3 * -(i - 1); if (t3 < 0) { t3++; } if (t3 > 1) { t3--; } if (6 * t3 < 1) { val = t1 + (t2 - t1) * 6 * t3; } else if (2 * t3 < 1) { val = t2; } else if (3 * t3 < 2) { val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; } else { val = t1; } rgb[i] = val * 255; } return rgb; }; convert.hsl.hsv = function (hsl) { const h = hsl[0]; let s = hsl[1] / 100; let l = hsl[2] / 100; let smin = s; const lmin = Math.max(l, 0.01); l *= 2; s *= (l <= 1) ? l : 2 - l; smin *= lmin <= 1 ? lmin : 2 - lmin; const v = (l + s) / 2; const sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); return [h, sv * 100, v * 100]; }; convert.hsv.rgb = function (hsv) { const h = hsv[0] / 60; const s = hsv[1] / 100; let v = hsv[2] / 100; const hi = Math.floor(h) % 6; const f = h - Math.floor(h); const p = 255 * v * (1 - s); const q = 255 * v * (1 - (s * f)); const t = 255 * v * (1 - (s * (1 - f))); v *= 255; switch (hi) { case 0: return [v, t, p]; case 1: return [q, v, p]; case 2: return [p, v, t]; case 3: return [p, q, v]; case 4: return [t, p, v]; case 5: return [v, p, q]; } }; convert.hsv.hsl = function (hsv) { const h = hsv[0]; const s = hsv[1] / 100; const v = hsv[2] / 100; const vmin = Math.max(v, 0.01); let sl; let l; l = (2 - s) * v; const lmin = (2 - s) * vmin; sl = s * vmin; sl /= (lmin <= 1) ? lmin : 2 - lmin; sl = sl || 0; l /= 2; return [h, sl * 100, l * 100]; }; // http://dev.w3.org/csswg/css-color/#hwb-to-rgb convert.hwb.rgb = function (hwb) { const h = hwb[0] / 360; let wh = hwb[1] / 100; let bl = hwb[2] / 100; const ratio = wh + bl; let f; // Wh + bl cant be > 1 if (ratio > 1) { wh /= ratio; bl /= ratio; } const i = Math.floor(6 * h); const v = 1 - bl; f = 6 * h - i; if ((i & 0x01) !== 0) { f = 1 - f; } const n = wh + f * (v - wh); // Linear interpolation let r; let g; let b; /* eslint-disable max-statements-per-line,no-multi-spaces */ switch (i) { default: case 6: case 0: r = v; g = n; b = wh; break; case 1: r = n; g = v; b = wh; break; case 2: r = wh; g = v; b = n; break; case 3: r = wh; g = n; b = v; break; case 4: r = n; g = wh; b = v; break; case 5: r = v; g = wh; b = n; break; } /* eslint-enable max-statements-per-line,no-multi-spaces */ return [r * 255, g * 255, b * 255]; }; convert.cmyk.rgb = function (cmyk) { const c = cmyk[0] / 100; const m = cmyk[1] / 100; const y = cmyk[2] / 100; const k = cmyk[3] / 100; const r = 1 - Math.min(1, c * (1 - k) + k); const g = 1 - Math.min(1, m * (1 - k) + k); const b = 1 - Math.min(1, y * (1 - k) + k); return [r * 255, g * 255, b * 255]; }; convert.xyz.rgb = function (xyz) { const x = xyz[0] / 100; const y = xyz[1] / 100; const z = xyz[2] / 100; let r; let g; let b; r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); // Assume sRGB r = r > 0.0031308 ? ((1.055 * (r ** (1.0 / 2.4))) - 0.055) : r * 12.92; g = g > 0.0031308 ? ((1.055 * (g ** (1.0 / 2.4))) - 0.055) : g * 12.92; b = b > 0.0031308 ? ((1.055 * (b ** (1.0 / 2.4))) - 0.055) : b * 12.92; r = Math.min(Math.max(0, r), 1); g = Math.min(Math.max(0, g), 1); b = Math.min(Math.max(0, b), 1); return [r * 255, g * 255, b * 255]; }; convert.xyz.lab = function (xyz) { let x = xyz[0]; let y = xyz[1]; let z = xyz[2]; x /= 95.047; y /= 100; z /= 108.883; x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116); y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116); z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116); const l = (116 * y) - 16; const a = 500 * (x - y); const b = 200 * (y - z); return [l, a, b]; }; convert.lab.xyz = function (lab) { const l = lab[0]; const a = lab[1]; const b = lab[2]; let x; let y; let z; y = (l + 16) / 116; x = a / 500 + y; z = y - b / 200; const y2 = y ** 3; const x2 = x ** 3; const z2 = z ** 3; y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; x *= 95.047; y *= 100; z *= 108.883; return [x, y, z]; }; convert.lab.lch = function (lab) { const l = lab[0]; const a = lab[1]; const b = lab[2]; let h; const hr = Math.atan2(b, a); h = hr * 360 / 2 / Math.PI; if (h < 0) { h += 360; } const c = Math.sqrt(a * a + b * b); return [l, c, h]; }; convert.lch.lab = function (lch) { const l = lch[0]; const c = lch[1]; const h = lch[2]; const hr = h / 360 * 2 * Math.PI; const a = c * Math.cos(hr); const b = c * Math.sin(hr); return [l, a, b]; }; convert.rgb.ansi16 = function (args, saturation = null) { const [r, g, b] = args; let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization value = Math.round(value / 50); if (value === 0) { return 30; } let ansi = 30 + ((Math.round(b / 255) << 2) | (Math.round(g / 255) << 1) | Math.round(r / 255)); if (value === 2) { ansi += 60; } return ansi; }; convert.hsv.ansi16 = function (args) { // Optimization here; we already know the value and don't need to get // it converted for us. return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); }; convert.rgb.ansi256 = function (args) { const r = args[0]; const g = args[1]; const b = args[2]; // We use the extended greyscale palette here, with the exception of // black and white. normal palette only has 4 greyscale shades. if (r === g && g === b) { if (r < 8) { return 16; } if (r > 248) { return 231; } return Math.round(((r - 8) / 247) * 24) + 232; } const ansi = 16 + (36 * Math.round(r / 255 * 5)) + (6 * Math.round(g / 255 * 5)) + Math.round(b / 255 * 5); return ansi; }; convert.ansi16.rgb = function (args) { let color = args % 10; // Handle greyscale if (color === 0 || color === 7) { if (args > 50) { color += 3.5; } color = color / 10.5 * 255; return [color, color, color]; } const mult = (~~(args > 50) + 1) * 0.5; const r = ((color & 1) * mult) * 255; const g = (((color >> 1) & 1) * mult) * 255; const b = (((color >> 2) & 1) * mult) * 255; return [r, g, b]; }; convert.ansi256.rgb = function (args) { // Handle greyscale if (args >= 232) { const c = (args - 232) * 10 + 8; return [c, c, c]; } args -= 16; let rem; const r = Math.floor(args / 36) / 5 * 255; const g = Math.floor((rem = args % 36) / 6) / 5 * 255; const b = (rem % 6) / 5 * 255; return [r, g, b]; }; convert.rgb.hex = function (args) { const integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF); const string = integer.toString(16).toUpperCase(); return '000000'.substring(string.length) + string; }; convert.hex.rgb = function (args) { const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); if (!match) { return [0, 0, 0]; } let colorString = match[0]; if (match[0].length === 3) { colorString = colorString.split('').map(char => { return char + char; }).join(''); } const integer = parseInt(colorString, 16); const r = (integer >> 16) & 0xFF; const g = (integer >> 8) & 0xFF; const b = integer & 0xFF; return [r, g, b]; }; convert.rgb.hcg = function (rgb) { const r = rgb[0] / 255; const g = rgb[1] / 255; const b = rgb[2] / 255; const max = Math.max(Math.max(r, g), b); const min = Math.min(Math.min(r, g), b); const chroma = (max - min); let grayscale; let hue; if (chroma < 1) { grayscale = min / (1 - chroma); } else { grayscale = 0; } if (chroma <= 0) { hue = 0; } else if (max === r) { hue = ((g - b) / chroma) % 6; } else if (max === g) { hue = 2 + (b - r) / chroma; } else { hue = 4 + (r - g) / chroma; } hue /= 6; hue %= 1; return [hue * 360, chroma * 100, grayscale * 100]; }; convert.hsl.hcg = function (hsl) { const s = hsl[1] / 100; const l = hsl[2] / 100; const c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l)); let f = 0; if (c < 1.0) { f = (l - 0.5 * c) / (1.0 - c); } return [hsl[0], c * 100, f * 100]; }; convert.hsv.hcg = function (hsv) { const s = hsv[1] / 100; const v = hsv[2] / 100; const c = s * v; let f = 0; if (c < 1.0) { f = (v - c) / (1 - c); } return [hsv[0], c * 100, f * 100]; }; convert.hcg.rgb = function (hcg) { const h = hcg[0] / 360; const c = hcg[1] / 100; const g = hcg[2] / 100; if (c === 0.0) { return [g * 255, g * 255, g * 255]; } const pure = [0, 0, 0]; const hi = (h % 1) * 6; const v = hi % 1; const w = 1 - v; let mg = 0; /* eslint-disable max-statements-per-line */ switch (Math.floor(hi)) { case 0: pure[0] = 1; pure[1] = v; pure[2] = 0; break; case 1: pure[0] = w; pure[1] = 1; pure[2] = 0; break; case 2: pure[0] = 0; pure[1] = 1; pure[2] = v; break; case 3: pure[0] = 0; pure[1] = w; pure[2] = 1; break; case 4: pure[0] = v; pure[1] = 0; pure[2] = 1; break; default: pure[0] = 1; pure[1] = 0; pure[2] = w; } /* eslint-enable max-statements-per-line */ mg = (1.0 - c) * g; return [ (c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255 ]; }; convert.hcg.hsv = function (hcg) { const c = hcg[1] / 100; const g = hcg[2] / 100; const v = c + g * (1.0 - c); let f = 0; if (v > 0.0) { f = c / v; } return [hcg[0], f * 100, v * 100]; }; convert.hcg.hsl = function (hcg) { const c = hcg[1] / 100; const g = hcg[2] / 100; const l = g * (1.0 - c) + 0.5 * c; let s = 0; if (l > 0.0 && l < 0.5) { s = c / (2 * l); } else if (l >= 0.5 && l < 1.0) { s = c / (2 * (1 - l)); } return [hcg[0], s * 100, l * 100]; }; convert.hcg.hwb = function (hcg) { const c = hcg[1] / 100; const g = hcg[2] / 100; const v = c + g * (1.0 - c); return [hcg[0], (v - c) * 100, (1 - v) * 100]; }; convert.hwb.hcg = function (hwb) { const w = hwb[1] / 100; const b = hwb[2] / 100; const v = 1 - b; const c = v - w; let g = 0; if (c < 1) { g = (v - c) / (1 - c); } return [hwb[0], c * 100, g * 100]; }; convert.apple.rgb = function (apple) { return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; }; convert.rgb.apple = function (rgb) { return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; }; convert.gray.rgb = function (args) { return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; }; convert.gray.hsl = function (args) { return [0, 0, args[0]]; }; convert.gray.hsv = convert.gray.hsl; convert.gray.hwb = function (gray) { return [0, 100, gray[0]]; }; convert.gray.cmyk = function (gray) { return [0, 0, 0, gray[0]]; }; convert.gray.lab = function (gray) { return [gray[0], 0, 0]; }; convert.gray.hex = function (gray) { const val = Math.round(gray[0] / 100 * 255) & 0xFF; const integer = (val << 16) + (val << 8) + val; const string = integer.toString(16).toUpperCase(); return '000000'.substring(string.length) + string; }; convert.rgb.gray = function (rgb) { const val = (rgb[0] + rgb[1] + rgb[2]) / 3; return [val / 255 * 100]; }; /***/ }), /***/ "./node_modules/color-convert/index.js": /*!*********************************************!*\ !*** ./node_modules/color-convert/index.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const conversions = __webpack_require__(/*! ./conversions */ "./node_modules/color-convert/conversions.js"); const route = __webpack_require__(/*! ./route */ "./node_modules/color-convert/route.js"); const convert = {}; const models = Object.keys(conversions); function wrapRaw(fn) { const wrappedFn = function (...args) { const arg0 = args[0]; if (arg0 === undefined || arg0 === null) { return arg0; } if (arg0.length > 1) { args = arg0; } return fn(args); }; // Preserve .conversion property if there is one if ('conversion' in fn) { wrappedFn.conversion = fn.conversion; } return wrappedFn; } function wrapRounded(fn) { const wrappedFn = function (...args) { const arg0 = args[0]; if (arg0 === undefined || arg0 === null) { return arg0; } if (arg0.length > 1) { args = arg0; } const result = fn(args); // We're assuming the result is an array here. // see notice in conversions.js; don't use box types // in conversion functions. if (typeof result === 'object') { for (let len = result.length, i = 0; i < len; i++) { result[i] = Math.round(result[i]); } } return result; }; // Preserve .conversion property if there is one if ('conversion' in fn) { wrappedFn.conversion = fn.conversion; } return wrappedFn; } models.forEach(fromModel => { convert[fromModel] = {}; Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); const routes = route(fromModel); const routeModels = Object.keys(routes); routeModels.forEach(toModel => { const fn = routes[toModel]; convert[fromModel][toModel] = wrapRounded(fn); convert[fromModel][toModel].raw = wrapRaw(fn); }); }); module.exports = convert; /***/ }), /***/ "./node_modules/color-convert/route.js": /*!*********************************************!*\ !*** ./node_modules/color-convert/route.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const conversions = __webpack_require__(/*! ./conversions */ "./node_modules/color-convert/conversions.js"); /* This function routes a model to all other models. all functions that are routed have a property `.conversion` attached to the returned synthetic function. This property is an array of strings, each with the steps in between the 'from' and 'to' color models (inclusive). conversions that are not possible simply are not included. */ function buildGraph() { const graph = {}; // https://jsperf.com/object-keys-vs-for-in-with-closure/3 const models = Object.keys(conversions); for (let len = models.length, i = 0; i < len; i++) { graph[models[i]] = { // http://jsperf.com/1-vs-infinity // micro-opt, but this is simple. distance: -1, parent: null }; } return graph; } // https://en.wikipedia.org/wiki/Breadth-first_search function deriveBFS(fromModel) { const graph = buildGraph(); const queue = [fromModel]; // Unshift -> queue -> pop graph[fromModel].distance = 0; while (queue.length) { const current = queue.pop(); const adjacents = Object.keys(conversions[current]); for (let len = adjacents.length, i = 0; i < len; i++) { const adjacent = adjacents[i]; const node = graph[adjacent]; if (node.distance === -1) { node.distance = graph[current].distance + 1; node.parent = current; queue.unshift(adjacent); } } } return graph; } function link(from, to) { return function (args) { return to(from(args)); }; } function wrapConversion(toModel, graph) { const path = [graph[toModel].parent, toModel]; let fn = conversions[graph[toModel].parent][toModel]; let cur = graph[toModel].parent; while (graph[cur].parent) { path.unshift(graph[cur].parent); fn = link(conversions[graph[cur].parent][cur], fn); cur = graph[cur].parent; } fn.conversion = path; return fn; } module.exports = function (fromModel) { const graph = deriveBFS(fromModel); const conversion = {}; const models = Object.keys(graph); for (let len = models.length, i = 0; i < len; i++) { const toModel = models[i]; const node = graph[toModel]; if (node.parent === null) { // No possible conversion, or this node is the source model. continue; } conversion[toModel] = wrapConversion(toModel, graph); } return conversion; }; /***/ }), /***/ "./node_modules/color-name/index.js": /*!******************************************!*\ !*** ./node_modules/color-name/index.js ***! \******************************************/ /***/ ((module) => { "use strict"; module.exports = { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255, 235, 205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategray": [47, 79, 79], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "grey": [128, 128, 128], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "rebeccapurple": [102, 51, 153], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50] }; /***/ }), /***/ "./node_modules/color-string/index.js": /*!********************************************!*\ !*** ./node_modules/color-string/index.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /* MIT license */ var colorNames = __webpack_require__(/*! color-name */ "./node_modules/color-name/index.js"); var swizzle = __webpack_require__(/*! simple-swizzle */ "./node_modules/simple-swizzle/index.js"); var hasOwnProperty = Object.hasOwnProperty; var reverseNames = Object.create(null); // create a list of reverse color names for (var name in colorNames) { if (hasOwnProperty.call(colorNames, name)) { reverseNames[colorNames[name]] = name; } } var cs = module.exports = { to: {}, get: {} }; cs.get = function (string) { var prefix = string.substring(0, 3).toLowerCase(); var val; var model; switch (prefix) { case 'hsl': val = cs.get.hsl(string); model = 'hsl'; break; case 'hwb': val = cs.get.hwb(string); model = 'hwb'; break; default: val = cs.get.rgb(string); model = 'rgb'; break; } if (!val) { return null; } return {model: model, value: val}; }; cs.get.rgb = function (string) { if (!string) { return null; } var abbr = /^#([a-f0-9]{3,4})$/i; var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i; var rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/; var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/; var keyword = /^(\w+)$/; var rgb = [0, 0, 0, 1]; var match; var i; var hexAlpha; if (match = string.match(hex)) { hexAlpha = match[2]; match = match[1]; for (i = 0; i < 3; i++) { // https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19 var i2 = i * 2; rgb[i] = parseInt(match.slice(i2, i2 + 2), 16); } if (hexAlpha) { rgb[3] = parseInt(hexAlpha, 16) / 255; } } else if (match = string.match(abbr)) { match = match[1]; hexAlpha = match[3]; for (i = 0; i < 3; i++) { rgb[i] = parseInt(match[i] + match[i], 16); } if (hexAlpha) { rgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255; } } else if (match = string.match(rgba)) { for (i = 0; i < 3; i++) { rgb[i] = parseInt(match[i + 1], 0); } if (match[4]) { if (match[5]) { rgb[3] = parseFloat(match[4]) * 0.01; } else { rgb[3] = parseFloat(match[4]); } } } else if (match = string.match(per)) { for (i = 0; i < 3; i++) { rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55); } if (match[4]) { if (match[5]) { rgb[3] = parseFloat(match[4]) * 0.01; } else { rgb[3] = parseFloat(match[4]); } } } else if (match = string.match(keyword)) { if (match[1] === 'transparent') { return [0, 0, 0, 0]; } if (!hasOwnProperty.call(colorNames, match[1])) { return null; } rgb = colorNames[match[1]]; rgb[3] = 1; return rgb; } else { return null; } for (i = 0; i < 3; i++) { rgb[i] = clamp(rgb[i], 0, 255); } rgb[3] = clamp(rgb[3], 0, 1); return rgb; }; cs.get.hsl = function (string) { if (!string) { return null; } var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/; var match = string.match(hsl); if (match) { var alpha = parseFloat(match[4]); var h = ((parseFloat(match[1]) % 360) + 360) % 360; var s = clamp(parseFloat(match[2]), 0, 100); var l = clamp(parseFloat(match[3]), 0, 100); var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1); return [h, s, l, a]; } return null; }; cs.get.hwb = function (string) { if (!string) { return null; } var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/; var match = string.match(hwb); if (match) { var alpha = parseFloat(match[4]); var h = ((parseFloat(match[1]) % 360) + 360) % 360; var w = clamp(parseFloat(match[2]), 0, 100); var b = clamp(parseFloat(match[3]), 0, 100); var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1); return [h, w, b, a]; } return null; }; cs.to.hex = function () { var rgba = swizzle(arguments); return ( '#' + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (rgba[3] < 1 ? (hexDouble(Math.round(rgba[3] * 255))) : '') ); }; cs.to.rgb = function () { var rgba = swizzle(arguments); return rgba.length < 4 || rgba[3] === 1 ? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')' : 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')'; }; cs.to.rgb.percent = function () { var rgba = swizzle(arguments); var r = Math.round(rgba[0] / 255 * 100); var g = Math.round(rgba[1] / 255 * 100); var b = Math.round(rgba[2] / 255 * 100); return rgba.length < 4 || rgba[3] === 1 ? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)' : 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')'; }; cs.to.hsl = function () { var hsla = swizzle(arguments); return hsla.length < 4 || hsla[3] === 1 ? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)' : 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')'; }; // hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax // (hwb have alpha optional & 1 is default value) cs.to.hwb = function () { var hwba = swizzle(arguments); var a = ''; if (hwba.length >= 4 && hwba[3] !== 1) { a = ', ' + hwba[3]; } return 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')'; }; cs.to.keyword = function (rgb) { return reverseNames[rgb.slice(0, 3)]; }; // helpers function clamp(num, min, max) { return Math.min(Math.max(min, num), max); } function hexDouble(num) { var str = Math.round(num).toString(16).toUpperCase(); return (str.length < 2) ? '0' + str : str; } /***/ }), /***/ "./node_modules/crypt/crypt.js": /*!*************************************!*\ !*** ./node_modules/crypt/crypt.js ***! \*************************************/ /***/ ((module) => { (function() { var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', crypt = { // Bit-wise rotation left rotl: function(n, b) { return (n << b) | (n >>> (32 - b)); }, // Bit-wise rotation right rotr: function(n, b) { return (n << (32 - b)) | (n >>> b); }, // Swap big-endian to little-endian and vice versa endian: function(n) { // If number given, swap endian if (n.constructor == Number) { return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00; } // Else, assume array and swap all items for (var i = 0; i < n.length; i++) n[i] = crypt.endian(n[i]); return n; }, // Generate an array of any length of random bytes randomBytes: function(n) { for (var bytes = []; n > 0; n--) bytes.push(Math.floor(Math.random() * 256)); return bytes; }, // Convert a byte array to big-endian 32-bit words bytesToWords: function(bytes) { for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) words[b >>> 5] |= bytes[i] << (24 - b % 32); return words; }, // Convert big-endian 32-bit words to a byte array wordsToBytes: function(words) { for (var bytes = [], b = 0; b < words.length * 32; b += 8) bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); return bytes; }, // Convert a byte array to a hex string bytesToHex: function(bytes) { for (var hex = [], i = 0; i < bytes.length; i++) { hex.push((bytes[i] >>> 4).toString(16)); hex.push((bytes[i] & 0xF).toString(16)); } return hex.join(''); }, // Convert a hex string to a byte array hexToBytes: function(hex) { for (var bytes = [], c = 0; c < hex.length; c += 2) bytes.push(parseInt(hex.substr(c, 2), 16)); return bytes; }, // Convert a byte array to a base-64 string bytesToBase64: function(bytes) { for (var base64 = [], i = 0; i < bytes.length; i += 3) { var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; for (var j = 0; j < 4; j++) if (i * 8 + j * 6 <= bytes.length * 8) base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); else base64.push('='); } return base64.join(''); }, // Convert a base-64 string to a byte array base64ToBytes: function(base64) { // Remove non-base-64 characters base64 = base64.replace(/[^A-Z0-9+\/]/ig, ''); for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) { if (imod4 == 0) continue; bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); } return bytes; } }; module.exports = crypt; })(); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-1OlNbSWJ.css": /*!********************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-1OlNbSWJ.css ***! \********************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.availability-day[data-v-1b69eb8d] { padding: 0 10px; position: absolute; } .availability-slots[data-v-1b69eb8d] { max-width: 332px; width: 100%; display: flex; justify-content: flex-start; white-space: nowrap; } .availability-slot[data-v-1b69eb8d] { display: flex; flex-direction: row; align-items: center; } .availability-slot-group[data-v-1b69eb8d] { display: flex; flex-direction: column; } .time-zone[data-v-1b69eb8d] { padding: 32px 12px 12px 0; } .week-day-container[data-v-1b69eb8d] { box-sizing: border-box; margin-bottom: 32px; max-width: 500px; width: 100%; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; } .button[data-v-1b69eb8d] { align-self: flex-end; } .label-weekday[data-v-1b69eb8d] { position: relative; display: flex; align-items: flex-start; min-width: 77px; width: 77px; } .label-weekday > span[data-v-1b69eb8d] { height: 50px; display: flex; align-items: center; } .add-another[data-v-1b69eb8d] { background-color: transparent; border: none; opacity: .5; display: inline-flex; padding: 0; margin: 0 0 3px; } .add-another[data-v-1b69eb8d]:hover { opacity: 1; } .to-text[data-v-1b69eb8d] { padding-right: 12px; } .time-zone-text[data-v-1b69eb8d] { padding-left: 22px; } .empty-content[data-v-1b69eb8d] { color: var(--color-text-lighter); display: inline-flex; align-items: center; } .start-date[data-v-1b69eb8d] { padding-right: 12px; } .day-container[data-v-1b69eb8d] { display: flex; max-width: 500px; width: 100%; gap: 24px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/dialogs/dist/style.css": /*!**********************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/dialogs/dist/style.css ***! \**********************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js"); /* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__); // Imports var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20height=%2716%27%20width=%2716%27%3e%3cpath%20d=%27M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z%27/%3e%3c/svg%3e */ "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20height=%2716%27%20width=%2716%27%3e%3cpath%20d=%27M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z%27/%3e%3c/svg%3e"), __webpack_require__.b); var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20height=%2716%27%20width=%2716%27%3e%3cpath%20d=%27M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z%27%20style=%27fill-opacity:1;fill:%23ffffff%27/%3e%3c/svg%3e */ "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20height=%2716%27%20width=%2716%27%3e%3cpath%20d=%27M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z%27%20style=%27fill-opacity:1;fill:%23ffffff%27/%3e%3c/svg%3e"), __webpack_require__.b); var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); var ___CSS_LOADER_URL_REPLACEMENT_0___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___); var ___CSS_LOADER_URL_REPLACEMENT_1___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 Julius Härtl * * @author Julius Härtl * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ .toastify.dialogs { min-width: 200px; background: none; background-color: var(--color-main-background); color: var(--color-main-text); box-shadow: 0 0 6px 0 var(--color-box-shadow); padding: 0 12px; margin-top: 45px; position: fixed; z-index: 10100; border-radius: var(--border-radius); display: flex; align-items: center; } .toastify.dialogs .toast-undo-container { display: flex; align-items: center; } .toastify.dialogs .toast-undo-button, .toastify.dialogs .toast-close { position: static; overflow: hidden; box-sizing: border-box; min-width: 44px; height: 100%; padding: 12px; white-space: nowrap; background-repeat: no-repeat; background-position: center; background-color: transparent; min-height: 0; } .toastify.dialogs .toast-undo-button.toast-close, .toastify.dialogs .toast-close.toast-close { text-indent: 0; opacity: .4; border: none; min-height: 44px; margin-left: 10px; font-size: 0; } .toastify.dialogs .toast-undo-button.toast-close:before, .toastify.dialogs .toast-close.toast-close:before { background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___}); content: " "; filter: var(--background-invert-if-dark); display: inline-block; width: 16px; height: 16px; } .toastify.dialogs .toast-undo-button.toast-undo-button, .toastify.dialogs .toast-close.toast-undo-button { height: calc(100% - 6px); margin: 3px 3px 3px 12px; } .toastify.dialogs .toast-undo-button:hover, .toastify.dialogs .toast-undo-button:focus, .toastify.dialogs .toast-undo-button:active, .toastify.dialogs .toast-close:hover, .toastify.dialogs .toast-close:focus, .toastify.dialogs .toast-close:active { cursor: pointer; opacity: 1; } .toastify.dialogs.toastify-top { right: 10px; } .toastify.dialogs.toast-with-click { cursor: pointer; } .toastify.dialogs.toast-error { border-left: 3px solid var(--color-error); } .toastify.dialogs.toast-info { border-left: 3px solid var(--color-primary); } .toastify.dialogs.toast-warning { border-left: 3px solid var(--color-warning); } .toastify.dialogs.toast-success, .toastify.dialogs.toast-undo { border-left: 3px solid var(--color-success); } .theme--dark .toastify.dialogs .toast-close.toast-close:before { background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___}); } .dialog[data-v-a37caee5] { height: 100%; width: 100%; display: flex; flex-direction: column; justify-content: space-between; } .dialog__modal[data-v-a37caee5] .modal-container { display: flex !important; flex-direction: column; } .dialog__wrapper[data-v-a37caee5] { margin-inline: 12px; margin-block: 0 12px; display: flex; flex-direction: row; flex: 1; min-height: 0; } .dialog__wrapper--collapsed[data-v-a37caee5] { flex-direction: column; } .dialog__navigation[data-v-a37caee5] { display: flex; flex-shrink: 0; } .dialog__wrapper:not(.dialog__wrapper--collapsed) .dialog__navigation[data-v-a37caee5] { flex-direction: column; overflow: hidden auto; height: 100%; min-width: 200px; margin-inline-end: 20px; } .dialog__wrapper.dialog__wrapper--collapsed .dialog__navigation[data-v-a37caee5] { flex-direction: row; justify-content: space-between; overflow: auto hidden; width: 100%; min-width: 100%; } .dialog__name[data-v-a37caee5] { text-align: center; height: var(--default-clickable-area); min-height: var(--default-clickable-area); line-height: var(--default-clickable-area); margin-block: 4px 12px; } .dialog__content[data-v-a37caee5] { flex: 1; min-height: 0; } .dialog__actions[data-v-a37caee5] { display: flex; gap: 6px; align-content: center; width: fit-content; margin-inline: auto 12px; margin-block: 0 12px; } ._file-picker__file-icon_1vgv4_5 { width: 32px; height: 32px; min-width: 32px; min-height: 32px; background-repeat: no-repeat; background-size: contain; display: flex; justify-content: center; } tr.file-picker__row[data-v-6aded0d9] { height: var(--row-height, 50px); } tr.file-picker__row td[data-v-6aded0d9] { cursor: pointer; overflow: hidden; text-overflow: ellipsis; border-bottom: none; } tr.file-picker__row td[data-v-6aded0d9]:not(.row-checkbox) { padding-inline: 14px 0; } tr.file-picker__row td.row-size[data-v-6aded0d9] { text-align: end; padding-inline: 0 14px; } tr.file-picker__row td.row-name[data-v-6aded0d9] { padding-inline: 2px 0; } @keyframes gradient-6aded0d9 { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } to { background-position: 0% 50%; } } .loading-row .row-checkbox[data-v-6aded0d9] { text-align: center !important; } .loading-row span[data-v-6aded0d9] { display: inline-block; height: 24px; background: linear-gradient(to right, var(--color-background-darker), var(--color-text-maxcontrast), var(--color-background-darker)); background-size: 600px 100%; border-radius: var(--border-radius); animation: gradient-6aded0d9 12s ease infinite; } .loading-row .row-wrapper[data-v-6aded0d9] { display: inline-flex; align-items: center; } .loading-row .row-checkbox span[data-v-6aded0d9] { width: 24px; } .loading-row .row-name span[data-v-6aded0d9]:last-of-type { margin-inline-start: 6px; width: 130px; } .loading-row .row-size span[data-v-6aded0d9] { width: 80px; } .loading-row .row-modified span[data-v-6aded0d9] { width: 90px; } .file-picker__file-icon[data-v-79e0cce3] { width: 32px; height: 32px; min-width: 32px; min-height: 32px; background-repeat: no-repeat; background-size: contain; display: flex; justify-content: center; } tr.file-picker__row[data-v-41f19c11] { height: var(--row-height, 50px); } tr.file-picker__row td[data-v-41f19c11] { cursor: pointer; overflow: hidden; text-overflow: ellipsis; border-bottom: none; } tr.file-picker__row td[data-v-41f19c11]:not(.row-checkbox) { padding-inline: 14px 0; } tr.file-picker__row td.row-size[data-v-41f19c11] { text-align: end; padding-inline: 0 14px; } tr.file-picker__row td.row-name[data-v-41f19c11] { padding-inline: 2px 0; } .file-picker__row--selected[data-v-41f19c11] { background-color: var(--color-background-dark); } .file-picker__row[data-v-41f19c11]:hover { background-color: var(--color-background-hover); } .file-picker__name-container[data-v-41f19c11] { display: flex; justify-content: start; align-items: center; height: 100%; } .file-picker__file-name[data-v-41f19c11] { padding-inline-start: 6px; min-width: 0; overflow: hidden; text-overflow: ellipsis; } .file-picker__file-extension[data-v-41f19c11] { color: var(--color-text-maxcontrast); min-width: fit-content; } .file-picker__header-preview[data-v-83ce6888] { width: 22px; height: 32px; flex: 0 0 auto; } .file-picker__files[data-v-83ce6888] { margin: 2px; margin-inline-start: 12px; overflow: scroll auto; } .file-picker__files table[data-v-83ce6888] { width: 100%; max-height: 100%; table-layout: fixed; } .file-picker__files th[data-v-83ce6888] { position: -webkit-sticky; position: sticky; z-index: 1; top: 0; background-color: var(--color-main-background); padding: 2px; } .file-picker__files th .header-wrapper[data-v-83ce6888] { display: flex; } .file-picker__files th.row-checkbox[data-v-83ce6888] { width: 44px; } .file-picker__files th.row-name[data-v-83ce6888] { width: 230px; } .file-picker__files th.row-size[data-v-83ce6888] { width: 100px; } .file-picker__files th.row-modified[data-v-83ce6888] { width: 120px; } .file-picker__files th[data-v-83ce6888]:not(.row-size) .button-vue__wrapper { justify-content: start; flex-direction: row-reverse; } .file-picker__files th[data-v-83ce6888]:not(.row-size) .button-vue { padding-inline: 16px 4px; } .file-picker__files th.row-size[data-v-83ce6888] .button-vue__wrapper { justify-content: end; } .file-picker__files th[data-v-83ce6888] .button-vue__wrapper { color: var(--color-text-maxcontrast); } .file-picker__files th[data-v-83ce6888] .button-vue__wrapper .button-vue__text { font-weight: 400; } .file-picker__breadcrumbs[data-v-f35f86d4] { flex-grow: 0 !important; } .file-picker__side[data-v-429eb827] { display: flex; flex-direction: column; align-items: start; gap: .5rem; min-width: 200px; padding-block: 2px; overflow: auto; } .file-picker__side[data-v-429eb827] .button-vue__wrapper { justify-content: start; } .file-picker__filter-input[data-v-429eb827] { margin-block: 7px; max-width: 260px; } @media (max-width: 736px) { .file-picker__side[data-v-429eb827] { flex-direction: row; min-width: unset; } } @media (max-width: 512px) { .file-picker__side[data-v-429eb827] { flex-direction: row; min-width: unset; } .file-picker__filter-input[data-v-429eb827] { max-width: unset; } } .file-picker__navigation { padding-inline: 2px; } .file-picker__navigation, .file-picker__navigation * { box-sizing: border-box; } .file-picker__navigation .v-select.select { min-width: 220px; } @media (min-width: 513px) and (max-width: 736px) { .file-picker__navigation { gap: 11px; } } @media (max-width: 512px) { .file-picker__navigation { flex-direction: column-reverse !important; } } .file-picker__view[data-v-f7b6434d] { height: 50px; display: flex; justify-content: start; align-items: center; } .file-picker__view h3[data-v-f7b6434d] { font-weight: 700; height: fit-content; margin: 0; } .file-picker__main[data-v-f7b6434d] { box-sizing: border-box; width: 100%; display: flex; flex-direction: column; min-height: 0; flex: 1; padding-inline: 2px; } .file-picker__main *[data-v-f7b6434d] { box-sizing: border-box; } [data-v-f7b6434d] .dialog.file-picker { height: min(80vh, 800px); } @media (max-width: 512px) { [data-v-f7b6434d] .dialog.file-picker { height: calc(100% - 16px - var(--default-clickable-area)); } } [data-v-f7b6434d] .file-picker__content { display: flex; flex-direction: column; overflow: hidden; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue-select/dist/vue-select.css": /*!******************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue-select/dist/vue-select.css ***! \******************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `:root{--vs-colors--lightest:rgba(60,60,60,0.26);--vs-colors--light:rgba(60,60,60,0.5);--vs-colors--dark:#333;--vs-colors--darkest:rgba(0,0,0,0.15);--vs-search-input-color:inherit;--vs-search-input-bg:#fff;--vs-search-input-placeholder-color:inherit;--vs-font-size:1rem;--vs-line-height:1.4;--vs-state-disabled-bg:#f8f8f8;--vs-state-disabled-color:var(--vs-colors--light);--vs-state-disabled-controls-color:var(--vs-colors--light);--vs-state-disabled-cursor:not-allowed;--vs-border-color:var(--vs-colors--lightest);--vs-border-width:1px;--vs-border-style:solid;--vs-border-radius:4px;--vs-actions-padding:4px 6px 0 3px;--vs-controls-color:var(--vs-colors--light);--vs-controls-size:1;--vs-controls--deselect-text-shadow:0 1px 0 #fff;--vs-selected-bg:#f0f0f0;--vs-selected-color:var(--vs-colors--dark);--vs-selected-border-color:var(--vs-border-color);--vs-selected-border-style:var(--vs-border-style);--vs-selected-border-width:var(--vs-border-width);--vs-dropdown-bg:#fff;--vs-dropdown-color:inherit;--vs-dropdown-z-index:1000;--vs-dropdown-min-width:160px;--vs-dropdown-max-height:350px;--vs-dropdown-box-shadow:0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg:#000;--vs-dropdown-option-color:var(--vs-dropdown-color);--vs-dropdown-option-padding:3px 20px;--vs-dropdown-option--active-bg:#136cfb;--vs-dropdown-option--active-color:#fff;--vs-dropdown-option--kb-focus-box-shadow:inset 0px 0px 0px 2px #949494;--vs-dropdown-option--deselect-bg:#fb5858;--vs-dropdown-option--deselect-color:#fff;--vs-transition-timing-function:cubic-bezier(1,-0.115,0.975,0.855);--vs-transition-duration:150ms}.v-select{font-family:inherit;position:relative}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function:cubic-bezier(1,0.5,0.8,1);--vs-transition-duration:0.15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes vSelectSpinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg:var(--vs-state-disabled-bg);--vs-disabled-color:var(--vs-state-disabled-color);--vs-disabled-cursor:var(--vs-state-disabled-cursor)}.vs--disabled .vs__clear,.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__open-indicator,.vs--disabled .vs__open-indicator-button,.vs--disabled .vs__search,.vs--disabled .vs__selected{background-color:var(--vs-disabled-bg);cursor:var(--vs-disabled-cursor)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--vs-search-input-bg);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);display:flex;padding:0 0 4px;white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;min-width:0;padding:0 2px;position:relative}.vs__actions{align-items:center;display:flex;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator-button{background-color:transparent;border:0;cursor:pointer;padding:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);background-color:transparent;border:0;cursor:pointer;margin-right:8px;padding:0}.vs__dropdown-menu{background:var(--vs-dropdown-bg);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);border-top-style:none;box-shadow:var(--vs-dropdown-box-shadow);box-sizing:border-box;color:var(--vs-dropdown-color);display:block;left:0;list-style:none;margin:0;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;padding:5px 0;position:absolute;text-align:left;top:calc(100% - var(--vs-border-width));width:100%;z-index:var(--vs-dropdown-z-index)}.vs__no-options{text-align:center}.vs__dropdown-option{clear:both;color:var(--vs-dropdown-option-color);cursor:pointer;display:block;line-height:1.42857143;padding:var(--vs-dropdown-option-padding);white-space:nowrap}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--kb-focus{box-shadow:var(--vs-dropdown-option--kb-focus-box-shadow)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);display:flex;line-height:var(--vs-line-height);margin:4px 2px 0;min-width:0;padding:0 .25em;z-index:0}.vs__deselect{fill:var(--vs-controls-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;cursor:pointer;display:inline-flex;margin-left:4px;padding:0;text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--loading .vs__selected,.vs--single.vs--open .vs__selected{max-width:100%;opacity:.4;position:absolute}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-ms-clear,.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration{display:none}.vs__search,.vs__search:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:1px solid transparent;border-left:none;box-shadow:none;color:var(--vs-search-input-color);flex-grow:1;font-size:var(--vs-font-size);line-height:var(--vs-line-height);margin:4px 0 0;max-width:100%;outline:none;padding:0 7px;width:0;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search:-ms-input-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;-webkit-animation:vSelectSpinner 1.1s linear infinite;animation:vSelectSpinner 1.1s linear infinite;border:.9em solid hsla(0,0%,39%,.1);border-left-color:rgba(60,60,60,.45);font-size:5px;opacity:0;overflow:hidden;text-indent:-9999em;transform:translateZ(0) scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;height:5em;transform:scale(var(--vs-controls--spinner-size,var(--vs-controls-size)));width:5em}.vs--loading .vs__spinner{opacity:1}`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButton-rOZFVQA8.css": /*!*******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButton-rOZFVQA8.css ***! \*******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-51d9ee64] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * @author Marco Ambrosini * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ li.action.active[data-v-51d9ee64] { background-color: var(--color-background-hover); border-radius: 6px; padding: 0; } .action--disabled[data-v-51d9ee64] { pointer-events: none; opacity: .5; } .action--disabled[data-v-51d9ee64]:hover, .action--disabled[data-v-51d9ee64]:focus { cursor: default; opacity: .5; } .action--disabled *[data-v-51d9ee64] { opacity: 1 !important; } .action-button[data-v-51d9ee64] { display: flex; align-items: flex-start; width: 100%; height: auto; margin: 0; padding: 0 14px 0 0; box-sizing: border-box; cursor: pointer; white-space: nowrap; color: var(--color-main-text); border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-weight: 400; font-size: var(--default-font-size); line-height: 44px; } .action-button > span[data-v-51d9ee64] { cursor: pointer; white-space: nowrap; } .action-button__icon[data-v-51d9ee64] { width: 44px; height: 44px; opacity: 1; background-position: 14px center; background-size: 16px; background-repeat: no-repeat; } .action-button[data-v-51d9ee64] .material-design-icon { width: 44px; height: 44px; opacity: 1; } .action-button[data-v-51d9ee64] .material-design-icon .material-design-icon__svg { vertical-align: middle; } .action-button__longtext-wrapper[data-v-51d9ee64], .action-button__longtext[data-v-51d9ee64] { max-width: 220px; line-height: 1.6em; padding: 10.8px 0; cursor: pointer; text-align: left; overflow: hidden; text-overflow: ellipsis; } .action-button__longtext[data-v-51d9ee64] { cursor: pointer; white-space: pre-wrap !important; } .action-button__name[data-v-51d9ee64] { font-weight: 700; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; max-width: 100%; display: inline-block; } .action-button__menu-icon[data-v-51d9ee64], .action-button__pressed-icon[data-v-51d9ee64] { margin-left: auto; margin-right: -14px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButtonGroup-oXobVIqQ.css": /*!************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButtonGroup-oXobVIqQ.css ***! \************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .nc-button-group-base > div { text-align: center; color: var(--color-text-maxcontrast); } .nc-button-group-base ul.nc-button-group-content { display: flex; gap: 4px; justify-content: space-between; } .nc-button-group-base ul.nc-button-group-content li { flex: 1 1; } .nc-button-group-base ul.nc-button-group-content .action-button { padding: 0 !important; width: 100%; display: flex; justify-content: center; } .nc-button-group-base ul.nc-button-group-content .action-button.action-button--active { background-color: var(--color-primary-element); border-radius: var(--border-radius-large); color: var(--color-primary-element-text); } .nc-button-group-base ul.nc-button-group-content .action-button.action-button--active:hover, .nc-button-group-base ul.nc-button-group-content .action-button.action-button--active:focus, .nc-button-group-base ul.nc-button-group-content .action-button.action-button--active:focus-within { background-color: var(--color-primary-element-hover); } .nc-button-group-base ul.nc-button-group-content .action-button .action-button__pressed-icon { display: none; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionCaption-afJqyJO6.css": /*!********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionCaption-afJqyJO6.css ***! \********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-7c8f7463] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation-caption[data-v-7c8f7463] { color: var(--color-text-maxcontrast); line-height: 44px; white-space: nowrap; text-overflow: ellipsis; box-shadow: none !important; -webkit-user-select: none; user-select: none; pointer-events: none; margin-left: 12px; padding-right: 14px; height: 44px; display: flex; align-items: center; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionCheckbox-6Pvlr1E7.css": /*!*********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionCheckbox-6Pvlr1E7.css ***! \*********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-24834b9f] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * @author Marco Ambrosini * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ li.action.active[data-v-24834b9f] { background-color: var(--color-background-hover); border-radius: 6px; padding: 0; } .action--disabled[data-v-24834b9f] { pointer-events: none; opacity: .5; } .action--disabled[data-v-24834b9f]:hover, .action--disabled[data-v-24834b9f]:focus { cursor: default; opacity: .5; } .action--disabled *[data-v-24834b9f] { opacity: 1 !important; } .action-checkbox[data-v-24834b9f] { display: flex; align-items: flex-start; width: 100%; height: auto; margin: 0; padding: 0; cursor: pointer; white-space: nowrap; color: var(--color-main-text); border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-weight: 400; line-height: 44px; } .action-checkbox__checkbox[data-v-24834b9f] { position: absolute; top: auto; left: -10000px; overflow: hidden; width: 1px; height: 1px; } .action-checkbox__label[data-v-24834b9f] { display: flex; align-items: center; width: 100%; padding: 0 14px 0 0 !important; } .action-checkbox__label[data-v-24834b9f]:before { margin: 0 14px !important; } .action-checkbox--disabled[data-v-24834b9f], .action-checkbox--disabled .action-checkbox__label[data-v-24834b9f] { cursor: pointer; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionInput-4zSvDkWm.css": /*!******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionInput-4zSvDkWm.css ***! \******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-f55526ee] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ button[data-v-f55526ee]:not(.button-vue), input[data-v-f55526ee]:not([type=range]), textarea[data-v-f55526ee] { margin: 0; padding: 7px 6px; cursor: text; color: var(--color-text-lighter); border: 1px solid var(--color-border-dark); border-radius: var(--border-radius); outline: none; background-color: var(--color-main-background); font-size: 13px; } button[data-v-f55526ee]:not(.button-vue):not(:disabled):not(.primary):hover, button[data-v-f55526ee]:not(.button-vue):not(:disabled):not(.primary):focus, button:not(.button-vue):not(:disabled):not(.primary).active[data-v-f55526ee], input[data-v-f55526ee]:not([type=range]):not(:disabled):not(.primary):hover, input[data-v-f55526ee]:not([type=range]):not(:disabled):not(.primary):focus, input:not([type=range]):not(:disabled):not(.primary).active[data-v-f55526ee], textarea[data-v-f55526ee]:not(:disabled):not(.primary):hover, textarea[data-v-f55526ee]:not(:disabled):not(.primary):focus, textarea:not(:disabled):not(.primary).active[data-v-f55526ee] { border-color: var(--color-primary-element); outline: none; } button[data-v-f55526ee]:not(.button-vue):not(:disabled):not(.primary):active, input[data-v-f55526ee]:not([type=range]):not(:disabled):not(.primary):active, textarea[data-v-f55526ee]:not(:disabled):not(.primary):active { color: var(--color-text-light); outline: none; background-color: var(--color-main-background); } button[data-v-f55526ee]:not(.button-vue):disabled, input[data-v-f55526ee]:not([type=range]):disabled, textarea[data-v-f55526ee]:disabled { cursor: default; opacity: .5; color: var(--color-text-maxcontrast); background-color: var(--color-background-dark); } button[data-v-f55526ee]:not(.button-vue):required, input[data-v-f55526ee]:not([type=range]):required, textarea[data-v-f55526ee]:required { box-shadow: none; } button[data-v-f55526ee]:not(.button-vue):invalid, input[data-v-f55526ee]:not([type=range]):invalid, textarea[data-v-f55526ee]:invalid { border-color: var(--color-error); box-shadow: none !important; } button:not(.button-vue).primary[data-v-f55526ee], input:not([type=range]).primary[data-v-f55526ee], textarea.primary[data-v-f55526ee] { cursor: pointer; color: var(--color-primary-element-text); border-color: var(--color-primary-element); background-color: var(--color-primary-element); } button:not(.button-vue).primary[data-v-f55526ee]:not(:disabled):hover, button:not(.button-vue).primary[data-v-f55526ee]:not(:disabled):focus, button:not(.button-vue).primary[data-v-f55526ee]:not(:disabled):active, input:not([type=range]).primary[data-v-f55526ee]:not(:disabled):hover, input:not([type=range]).primary[data-v-f55526ee]:not(:disabled):focus, input:not([type=range]).primary[data-v-f55526ee]:not(:disabled):active, textarea.primary[data-v-f55526ee]:not(:disabled):hover, textarea.primary[data-v-f55526ee]:not(:disabled):focus, textarea.primary[data-v-f55526ee]:not(:disabled):active { border-color: var(--color-primary-element-light); background-color: var(--color-primary-element-light); } button:not(.button-vue).primary[data-v-f55526ee]:not(:disabled):active, input:not([type=range]).primary[data-v-f55526ee]:not(:disabled):active, textarea.primary[data-v-f55526ee]:not(:disabled):active { color: var(--color-primary-element-text-dark); } button:not(.button-vue).primary[data-v-f55526ee]:disabled, input:not([type=range]).primary[data-v-f55526ee]:disabled, textarea.primary[data-v-f55526ee]:disabled { cursor: default; color: var(--color-primary-element-text-dark); background-color: var(--color-primary-element); } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * @author Marco Ambrosini * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ li.action.active[data-v-f55526ee] { background-color: var(--color-background-hover); border-radius: 6px; padding: 0; } .action--disabled[data-v-f55526ee] { pointer-events: none; opacity: .5; } .action--disabled[data-v-f55526ee]:hover, .action--disabled[data-v-f55526ee]:focus { cursor: default; opacity: .5; } .action--disabled *[data-v-f55526ee] { opacity: 1 !important; } .action-input[data-v-f55526ee] { display: flex; align-items: flex-start; width: 100%; height: auto; margin: 0; padding: 0; cursor: pointer; white-space: nowrap; color: var(--color-main-text); border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-weight: 400; } .action-input__icon-wrapper[data-v-f55526ee] { display: flex; align-self: center; align-items: center; justify-content: center; } .action-input__icon-wrapper[data-v-f55526ee] .material-design-icon { width: 44px; height: 44px; opacity: 1; } .action-input__icon-wrapper[data-v-f55526ee] .material-design-icon .material-design-icon__svg { vertical-align: middle; } .action-input > span[data-v-f55526ee] { cursor: pointer; white-space: nowrap; } .action-input__icon[data-v-f55526ee] { min-width: 0; min-height: 0; padding: 22px 0 22px 44px; background-position: 14px center; background-size: 16px; } .action-input__form[data-v-f55526ee] { display: flex; align-items: center; flex: 1 1 auto; margin: 4px 0; padding-right: 14px; } .action-input__container[data-v-f55526ee] { width: 100%; } .action-input__input-container[data-v-f55526ee] { display: flex; } .action-input__input-container .colorpicker__trigger[data-v-f55526ee], .action-input__input-container .colorpicker__preview[data-v-f55526ee] { width: 100%; } .action-input__input-container .colorpicker__preview[data-v-f55526ee] { width: 100%; height: 36px; border-radius: var(--border-radius-large); border: 2px solid var(--color-border-maxcontrast); box-shadow: none !important; } .action-input__text-label[data-v-f55526ee] { padding: 4px 0; display: block; } .action-input__text-label--hidden[data-v-f55526ee] { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; } .action-input__datetimepicker[data-v-f55526ee] { width: 100%; } .action-input__datetimepicker[data-v-f55526ee] .mx-input { margin: 0; } .action-input__multi[data-v-f55526ee] { width: 100%; } li:last-child > .action-input[data-v-f55526ee] { padding-bottom: 10px; } li:first-child > .action-input[data-v-f55526ee]:not(.action-input--visible-label) { padding-top: 10px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionLink-zdzQgwtH.css": /*!*****************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionLink-zdzQgwtH.css ***! \*****************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-c0bc0588] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * @author Marco Ambrosini * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ li.action.active[data-v-c0bc0588] { background-color: var(--color-background-hover); border-radius: 6px; padding: 0; } .action-link[data-v-c0bc0588] { display: flex; align-items: flex-start; width: 100%; height: auto; margin: 0; padding: 0 14px 0 0; box-sizing: border-box; cursor: pointer; white-space: nowrap; color: var(--color-main-text); border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-weight: 400; font-size: var(--default-font-size); line-height: 44px; } .action-link > span[data-v-c0bc0588] { cursor: pointer; white-space: nowrap; } .action-link__icon[data-v-c0bc0588] { width: 44px; height: 44px; opacity: 1; background-position: 14px center; background-size: 16px; background-repeat: no-repeat; } .action-link[data-v-c0bc0588] .material-design-icon { width: 44px; height: 44px; opacity: 1; } .action-link[data-v-c0bc0588] .material-design-icon .material-design-icon__svg { vertical-align: middle; } .action-link__longtext-wrapper[data-v-c0bc0588], .action-link__longtext[data-v-c0bc0588] { max-width: 220px; line-height: 1.6em; padding: 10.8px 0; cursor: pointer; text-align: left; overflow: hidden; text-overflow: ellipsis; } .action-link__longtext[data-v-c0bc0588] { cursor: pointer; white-space: pre-wrap !important; } .action-link__name[data-v-c0bc0588] { font-weight: 700; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; max-width: 100%; display: inline-block; } .action-link__menu-icon[data-v-c0bc0588] { margin-left: auto; margin-right: -14px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRadio-eOr9Sp-D.css": /*!******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRadio-eOr9Sp-D.css ***! \******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-f482d6e9] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * @author Marco Ambrosini * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ li.action.active[data-v-f482d6e9] { background-color: var(--color-background-hover); border-radius: 6px; padding: 0; } .action--disabled[data-v-f482d6e9] { pointer-events: none; opacity: .5; } .action--disabled[data-v-f482d6e9]:hover, .action--disabled[data-v-f482d6e9]:focus { cursor: default; opacity: .5; } .action--disabled *[data-v-f482d6e9] { opacity: 1 !important; } .action-radio[data-v-f482d6e9] { display: flex; align-items: flex-start; width: 100%; height: auto; margin: 0; padding: 0; cursor: pointer; white-space: nowrap; color: var(--color-main-text); border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-weight: 400; line-height: 44px; } .action-radio__radio[data-v-f482d6e9] { position: absolute; top: auto; left: -10000px; overflow: hidden; width: 1px; height: 1px; } .action-radio__label[data-v-f482d6e9] { display: flex; align-items: center; width: 100%; padding: 0 14px 0 0 !important; } .action-radio__label[data-v-f482d6e9]:before { margin: 0 14px !important; } .action-radio--disabled[data-v-f482d6e9], .action-radio--disabled .action-radio__label[data-v-f482d6e9] { cursor: pointer; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-MFTD6tYI.css": /*!*******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-MFTD6tYI.css ***! \*******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-fdbe574e] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * @author Marco Ambrosini * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ li.action.active[data-v-fdbe574e] { background-color: var(--color-background-hover); border-radius: 6px; padding: 0; } .action-router[data-v-fdbe574e] { display: flex; align-items: flex-start; width: 100%; height: auto; margin: 0; padding: 0 14px 0 0; box-sizing: border-box; cursor: pointer; white-space: nowrap; color: var(--color-main-text); border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-weight: 400; font-size: var(--default-font-size); line-height: 44px; } .action-router > span[data-v-fdbe574e] { cursor: pointer; white-space: nowrap; } .action-router__icon[data-v-fdbe574e] { width: 44px; height: 44px; opacity: 1; background-position: 14px center; background-size: 16px; background-repeat: no-repeat; } .action-router[data-v-fdbe574e] .material-design-icon { width: 44px; height: 44px; opacity: 1; } .action-router[data-v-fdbe574e] .material-design-icon .material-design-icon__svg { vertical-align: middle; } .action-router__longtext-wrapper[data-v-fdbe574e], .action-router__longtext[data-v-fdbe574e] { max-width: 220px; line-height: 1.6em; padding: 10.8px 0; cursor: pointer; text-align: left; overflow: hidden; text-overflow: ellipsis; } .action-router__longtext[data-v-fdbe574e] { cursor: pointer; white-space: pre-wrap !important; } .action-router__name[data-v-fdbe574e] { font-weight: 700; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; max-width: 100%; display: inline-block; } .action-router__menu-icon[data-v-fdbe574e] { margin-left: auto; margin-right: -14px; } .action--disabled[data-v-fdbe574e] { pointer-events: none; opacity: .5; } .action--disabled[data-v-fdbe574e]:hover, .action--disabled[data-v-fdbe574e]:focus { cursor: default; opacity: .5; } .action--disabled *[data-v-fdbe574e] { opacity: 1 !important; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionSeparator-l98xWbiL.css": /*!**********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionSeparator-l98xWbiL.css ***! \**********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-82b7f2ae] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .action-separator[data-v-82b7f2ae] { height: 0; margin: 5px 10px 5px 15px; border-bottom: 1px solid var(--color-border-dark); cursor: default; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionText-GJYwsw_U.css": /*!*****************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionText-GJYwsw_U.css ***! \*****************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-34d9a49c] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * @author Marco Ambrosini * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ li.action.active[data-v-34d9a49c] { background-color: var(--color-background-hover); border-radius: 6px; padding: 0; } .action-text[data-v-34d9a49c] { display: flex; align-items: flex-start; width: 100%; height: auto; margin: 0; padding: 0 14px 0 0; box-sizing: border-box; cursor: pointer; white-space: nowrap; color: var(--color-main-text); border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-weight: 400; font-size: var(--default-font-size); line-height: 44px; } .action-text > span[data-v-34d9a49c] { cursor: pointer; white-space: nowrap; } .action-text__icon[data-v-34d9a49c] { width: 44px; height: 44px; opacity: 1; background-position: 14px center; background-size: 16px; background-repeat: no-repeat; } .action-text[data-v-34d9a49c] .material-design-icon { width: 44px; height: 44px; opacity: 1; } .action-text[data-v-34d9a49c] .material-design-icon .material-design-icon__svg { vertical-align: middle; } .action-text__longtext-wrapper[data-v-34d9a49c], .action-text__longtext[data-v-34d9a49c] { max-width: 220px; line-height: 1.6em; padding: 10.8px 0; cursor: pointer; text-align: left; overflow: hidden; text-overflow: ellipsis; } .action-text__longtext[data-v-34d9a49c] { cursor: pointer; white-space: pre-wrap !important; } .action-text__name[data-v-34d9a49c] { font-weight: 700; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; max-width: 100%; display: inline-block; } .action-text__menu-icon[data-v-34d9a49c] { margin-left: auto; margin-right: -14px; } .action--disabled[data-v-34d9a49c] { pointer-events: none; opacity: .5; } .action--disabled[data-v-34d9a49c]:hover, .action--disabled[data-v-34d9a49c]:focus { cursor: default; opacity: .5; } .action--disabled *[data-v-34d9a49c] { opacity: 1 !important; } .action-text[data-v-34d9a49c], .action-text span[data-v-34d9a49c] { cursor: default; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionTextEditable-JrYuWEDd.css": /*!*************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionTextEditable-JrYuWEDd.css ***! \*************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-b0b05af8] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ button[data-v-b0b05af8]:not(.button-vue), input[data-v-b0b05af8]:not([type=range]), textarea[data-v-b0b05af8] { margin: 0; padding: 7px 6px; cursor: text; color: var(--color-text-lighter); border: 1px solid var(--color-border-dark); border-radius: var(--border-radius); outline: none; background-color: var(--color-main-background); font-size: 13px; } button[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):hover, button[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):focus, button:not(.button-vue):not(:disabled):not(.primary).active[data-v-b0b05af8], input[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):hover, input[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):focus, input:not([type=range]):not(:disabled):not(.primary).active[data-v-b0b05af8], textarea[data-v-b0b05af8]:not(:disabled):not(.primary):hover, textarea[data-v-b0b05af8]:not(:disabled):not(.primary):focus, textarea:not(:disabled):not(.primary).active[data-v-b0b05af8] { border-color: var(--color-primary-element); outline: none; } button[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):active, input[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):active, textarea[data-v-b0b05af8]:not(:disabled):not(.primary):active { color: var(--color-text-light); outline: none; background-color: var(--color-main-background); } button[data-v-b0b05af8]:not(.button-vue):disabled, input[data-v-b0b05af8]:not([type=range]):disabled, textarea[data-v-b0b05af8]:disabled { cursor: default; opacity: .5; color: var(--color-text-maxcontrast); background-color: var(--color-background-dark); } button[data-v-b0b05af8]:not(.button-vue):required, input[data-v-b0b05af8]:not([type=range]):required, textarea[data-v-b0b05af8]:required { box-shadow: none; } button[data-v-b0b05af8]:not(.button-vue):invalid, input[data-v-b0b05af8]:not([type=range]):invalid, textarea[data-v-b0b05af8]:invalid { border-color: var(--color-error); box-shadow: none !important; } button:not(.button-vue).primary[data-v-b0b05af8], input:not([type=range]).primary[data-v-b0b05af8], textarea.primary[data-v-b0b05af8] { cursor: pointer; color: var(--color-primary-element-text); border-color: var(--color-primary-element); background-color: var(--color-primary-element); } button:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):hover, button:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):focus, button:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):active, input:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):hover, input:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):focus, input:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):active, textarea.primary[data-v-b0b05af8]:not(:disabled):hover, textarea.primary[data-v-b0b05af8]:not(:disabled):focus, textarea.primary[data-v-b0b05af8]:not(:disabled):active { border-color: var(--color-primary-element-light); background-color: var(--color-primary-element-light); } button:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):active, input:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):active, textarea.primary[data-v-b0b05af8]:not(:disabled):active { color: var(--color-primary-element-text-dark); } button:not(.button-vue).primary[data-v-b0b05af8]:disabled, input:not([type=range]).primary[data-v-b0b05af8]:disabled, textarea.primary[data-v-b0b05af8]:disabled { cursor: default; color: var(--color-primary-element-text-dark); background-color: var(--color-primary-element); } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * @author Marco Ambrosini * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ li.action.active[data-v-b0b05af8] { background-color: var(--color-background-hover); border-radius: 6px; padding: 0; } .action--disabled[data-v-b0b05af8] { pointer-events: none; opacity: .5; } .action--disabled[data-v-b0b05af8]:hover, .action--disabled[data-v-b0b05af8]:focus { cursor: default; opacity: .5; } .action--disabled *[data-v-b0b05af8] { opacity: 1 !important; } .action-text-editable[data-v-b0b05af8] { display: flex; align-items: flex-start; width: 100%; height: auto; margin: 0; padding: 0; cursor: pointer; white-space: nowrap; color: var(--color-main-text); border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-weight: 400; line-height: 44px; } .action-text-editable > span[data-v-b0b05af8] { cursor: pointer; white-space: nowrap; } .action-text-editable__icon[data-v-b0b05af8] { min-width: 0; min-height: 0; padding: 22px 0 22px 44px; background-position: 14px center; background-size: 16px; } .action-text-editable[data-v-b0b05af8] .material-design-icon { width: 44px; height: 44px; opacity: 1; } .action-text-editable[data-v-b0b05af8] .material-design-icon .material-design-icon__svg { vertical-align: middle; } .action-text-editable__form[data-v-b0b05af8] { display: flex; flex: 1 1 auto; flex-direction: column; position: relative; margin: 4px 0; padding-right: 14px; } .action-text-editable__submit[data-v-b0b05af8] { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; } .action-text-editable__label[data-v-b0b05af8] { display: flex; align-items: center; justify-content: center; position: absolute; right: 15px; bottom: 1px; width: 36px; height: 36px; box-sizing: border-box; margin: 0; padding: 7px 6px; border: 0; border-radius: 50%; background-color: var(--color-main-background); background-clip: padding-box; } .action-text-editable__label[data-v-b0b05af8], .action-text-editable__label *[data-v-b0b05af8] { cursor: pointer; } .action-text-editable__textarea[data-v-b0b05af8] { flex: 1 1 auto; color: inherit; border-color: var(--color-border-maxcontrast); min-height: 80px; max-height: 124px; min-width: 176px; width: 100% !important; margin: 0; } .action-text-editable__textarea[data-v-b0b05af8]:disabled { cursor: default; } .action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid + .action-text-editable__label[data-v-b0b05af8] { background-color: var(--color-error); } .action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:active, .action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:hover, .action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:focus { background-color: var(--color-primary-element); color: var(--color-primary-element-text); } .action-text-editable__textarea:active:not(:disabled) + .action-text-editable__label[data-v-b0b05af8], .action-text-editable__textarea:hover:not(:disabled) + .action-text-editable__label[data-v-b0b05af8], .action-text-editable__textarea:focus:not(:disabled) + .action-text-editable__label[data-v-b0b05af8] { z-index: 2; border-color: var(--color-primary-element); border-left-color: transparent; } li:last-child > .action-text-editable[data-v-b0b05af8] { margin-bottom: 10px; } li:first-child > .action-text-editable[data-v-b0b05af8] { margin-top: 10px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActions-4Gq5bZLW.css": /*!**************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActions-4Gq5bZLW.css ***! \**************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-eae4a464] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .action-items[data-v-eae4a464] { display: flex; align-items: center; } .action-items > button[data-v-eae4a464] { margin-right: 7px; } .action-item[data-v-eae4a464] { --open-background-color: var(--color-background-hover, \$action-background-hover); position: relative; display: inline-block; } .action-item.action-item--primary[data-v-eae4a464] { --open-background-color: var(--color-primary-element-hover); } .action-item.action-item--secondary[data-v-eae4a464] { --open-background-color: var(--color-primary-element-light-hover); } .action-item.action-item--error[data-v-eae4a464] { --open-background-color: var(--color-error-hover); } .action-item.action-item--warning[data-v-eae4a464] { --open-background-color: var(--color-warning-hover); } .action-item.action-item--success[data-v-eae4a464] { --open-background-color: var(--color-success-hover); } .action-item.action-item--tertiary-no-background[data-v-eae4a464] { --open-background-color: transparent; } .action-item.action-item--open .action-item__menutoggle[data-v-eae4a464] { background-color: var(--open-background-color); } .action-item__menutoggle__icon[data-v-eae4a464] { width: 20px; height: 20px; object-fit: contain; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper { border-radius: var(--border-radius-large); overflow: hidden; } .v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner { border-radius: var(--border-radius-large); padding: 4px; max-height: calc(50vh - 16px); overflow: auto; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppContent-SZz3PTd8.css": /*!*****************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppContent-SZz3PTd8.css ***! \*****************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-5244e83e] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-details-toggle[data-v-5244e83e] { position: fixed; width: 44px; height: 44px; padding: 14px; cursor: pointer; opacity: .6; transform: rotate(180deg); background-color: var(--color-main-background); z-index: 2000; } .app-details-toggle[data-v-5244e83e]:active, .app-details-toggle[data-v-5244e83e]:hover, .app-details-toggle[data-v-5244e83e]:focus { opacity: 1; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-27fc3f3a] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-content[data-v-27fc3f3a] { position: initial; z-index: 1000; flex-basis: 100vw; height: 100%; margin: 0 !important; background-color: var(--color-main-background); min-width: 0; } .app-content[data-v-27fc3f3a]:not(.app-content--has-list) { overflow: auto; } .app-content-wrapper[data-v-27fc3f3a] { position: relative; width: 100%; height: 100%; } .app-content-wrapper--mobile.app-content-wrapper--show-list[data-v-27fc3f3a] .app-content-list { display: flex; } .app-content-wrapper--mobile.app-content-wrapper--show-list[data-v-27fc3f3a] .app-content-details, .app-content-wrapper--mobile.app-content-wrapper--show-details[data-v-27fc3f3a] .app-content-list { display: none; } .app-content-wrapper--mobile.app-content-wrapper--show-details[data-v-27fc3f3a] .app-content-details { display: block; } [data-v-27fc3f3a] .splitpanes.default-theme .app-content-list { max-width: none; scrollbar-width: auto; } [data-v-27fc3f3a] .splitpanes.default-theme .splitpanes__pane { background-color: transparent; transition: none; } [data-v-27fc3f3a] .splitpanes.default-theme .splitpanes__pane-list { min-width: 300px; position: sticky; top: var(--header-height); } @media only screen and (width < 1024px) { [data-v-27fc3f3a] .splitpanes.default-theme .splitpanes__pane-list { display: none; } } [data-v-27fc3f3a] .splitpanes.default-theme .splitpanes__pane-details { overflow-y: auto; } @media only screen and (width < 1024px) { [data-v-27fc3f3a] .splitpanes.default-theme .splitpanes__pane-details { min-width: 100%; } } [data-v-27fc3f3a] .splitpanes.default-theme .splitpanes__splitter { width: 9px; margin-left: -5px; background-color: transparent; border-left: none; } [data-v-27fc3f3a] .splitpanes.default-theme .splitpanes__splitter:before, [data-v-27fc3f3a] .splitpanes.default-theme .splitpanes__splitter:after { display: none; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigation-vjqOL-kR.css": /*!********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigation-vjqOL-kR.css ***! \********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation, .app-content { --app-navigation-padding: calc(var(--default-grid-baseline, 4px) * 2); } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-80612854] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation[data-v-80612854] { --color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-text-maxcontrast-default)); transition: transform var(--animation-quick), margin var(--animation-quick); width: 300px; max-width: calc(100vw - (var(--app-navigation-padding) + var(--default-clickable-area) + var(--default-grid-baseline))); position: relative; top: 0; left: 0; padding: 0; z-index: 1800; height: 100%; box-sizing: border-box; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; flex-grow: 0; flex-shrink: 0; background-color: var(--color-main-background-blur, var(--color-main-background)); -webkit-backdrop-filter: var(--filter-background-blur, none); backdrop-filter: var(--filter-background-blur, none); } .app-navigation--close[data-v-80612854] { transform: translate(-100%); position: absolute; } .app-navigation__content > ul[data-v-80612854], .app-navigation__list[data-v-80612854] { position: relative; height: 100%; width: 100%; overflow-x: hidden; overflow-y: auto; box-sizing: border-box; display: flex; flex-direction: column; gap: var(--default-grid-baseline, 4px); padding: var(--app-navigation-padding); } .app-navigation__content[data-v-80612854] { height: 100%; display: flex; flex-direction: column; } [data-themes*=highcontrast] .app-navigation[data-v-80612854] { border-right: 1px solid var(--color-border); } @media only screen and (max-width: 1024px) { .app-navigation[data-v-80612854]:not(.app-navigation--close) { position: absolute; } } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationCaption-l5yRGXZx.css": /*!***************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationCaption-l5yRGXZx.css ***! \***************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-dbde4a28] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation-caption[data-v-dbde4a28] { display: flex; justify-content: space-between; } .app-navigation-caption__name[data-v-dbde4a28] { font-weight: 700; color: var(--color-main-text); font-size: var(--default-font-size); line-height: 44px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; box-shadow: none !important; flex-shrink: 0; padding: 0 calc(var(--default-grid-baseline, 4px) * 2) 0 calc(var(--default-grid-baseline, 4px) * 3); margin-bottom: 12px; } .app-navigation-caption__actions[data-v-dbde4a28] { flex: 0 0 44px; } .app-navigation-caption[data-v-dbde4a28]:not(:first-child) { margin-top: 22px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationIconBullet-Nf3ARMLv.css": /*!******************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationIconBullet-Nf3ARMLv.css ***! \******************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-91580127] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation-entry__icon-bullet[data-v-91580127] { display: block; padding: 15px; } .app-navigation-entry__icon-bullet div[data-v-91580127] { width: 14px; height: 14px; cursor: pointer; transition: background .1s ease-in-out; border: none; border-radius: 50%; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationItem-caMsw_N_.css": /*!************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationItem-caMsw_N_.css ***! \************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-07582bf6] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .button-vue.icon-collapse[data-v-07582bf6] { position: relative; z-index: 105; color: var(--color-main-text); right: 0; } .button-vue.icon-collapse--open[data-v-07582bf6] { color: var(--color-main-text); } .button-vue.icon-collapse--open[data-v-07582bf6]:hover { color: var(--color-primary-element); } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-6a7129ac] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation-entry[data-v-6a7129ac] { position: relative; display: flex; flex-shrink: 0; flex-wrap: wrap; box-sizing: border-box; width: 100%; min-height: 44px; transition: background-color var(--animation-quick) ease-in-out; transition: background-color .2s ease-in-out; border-radius: var(--border-radius-pill); } .app-navigation-entry-wrapper[data-v-6a7129ac] { position: relative; display: flex; flex-shrink: 0; flex-wrap: wrap; box-sizing: border-box; width: 100%; } .app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened) > ul[data-v-6a7129ac] { display: none; } .app-navigation-entry.active[data-v-6a7129ac] { background-color: var(--color-primary-element) !important; } .app-navigation-entry.active[data-v-6a7129ac]:hover { background-color: var(--color-primary-element-hover) !important; } .app-navigation-entry.active .app-navigation-entry-link[data-v-6a7129ac], .app-navigation-entry.active .app-navigation-entry-button[data-v-6a7129ac] { color: var(--color-primary-element-text) !important; } .app-navigation-entry[data-v-6a7129ac]:focus-within, .app-navigation-entry[data-v-6a7129ac]:hover { background-color: var(--color-background-hover); } .app-navigation-entry.active .app-navigation-entry__children[data-v-6a7129ac], .app-navigation-entry:focus-within .app-navigation-entry__children[data-v-6a7129ac], .app-navigation-entry:hover .app-navigation-entry__children[data-v-6a7129ac] { background-color: var(--color-main-background); } .app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-6a7129ac], .app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-6a7129ac], .app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-6a7129ac], .app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-6a7129ac], .app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-6a7129ac] { display: inline-block; } .app-navigation-entry.app-navigation-entry--deleted > ul[data-v-6a7129ac] { display: none; } .app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-6a7129ac], .app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-6a7129ac] { padding-right: 14px; } .app-navigation-entry .app-navigation-entry-link[data-v-6a7129ac], .app-navigation-entry .app-navigation-entry-button[data-v-6a7129ac] { z-index: 100; display: flex; overflow: hidden; flex: 1 1 0; box-sizing: border-box; min-height: 44px; padding: 0; white-space: nowrap; color: var(--color-main-text); background-repeat: no-repeat; background-position: 14px center; background-size: 16px 16px; line-height: 44px; } .app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-6a7129ac], .app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-6a7129ac] { display: flex; align-items: center; flex: 0 0 44px; justify-content: center; width: 44px; height: 44px; background-size: 16px 16px; background-repeat: no-repeat; background-position: 14px center; } .app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-6a7129ac], .app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-6a7129ac] { overflow: hidden; max-width: 100%; white-space: nowrap; text-overflow: ellipsis; } .app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-6a7129ac], .app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-6a7129ac] { width: calc(100% - 44px); margin: auto; } .app-navigation-entry .app-navigation-entry-link[data-v-6a7129ac]:focus-visible, .app-navigation-entry .app-navigation-entry-button[data-v-6a7129ac]:focus-visible { box-shadow: 0 0 0 4px var(--color-main-background); outline: 2px solid var(--color-main-text); border-radius: var(--border-radius-pill); } .app-navigation-entry__children[data-v-6a7129ac] { position: relative; display: flex; flex: 0 1 auto; flex-direction: column; width: 100%; gap: var(--default-grid-baseline, 4px); } .app-navigation-entry__children .app-navigation-entry[data-v-6a7129ac] { display: inline-flex; flex-wrap: wrap; padding-left: 16px; } .app-navigation-entry__deleted[data-v-6a7129ac] { display: inline-flex; flex: 1 1 0; padding-left: 30px !important; } .app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-6a7129ac] { position: relative; overflow: hidden; flex: 1 1 0; white-space: nowrap; text-overflow: ellipsis; line-height: 44px; } .app-navigation-entry__utils[data-v-6a7129ac] { display: flex; min-width: 44px; align-items: center; flex: 0 1 auto; justify-content: flex-end; } .app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-6a7129ac] { display: inline-block; } .app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-6a7129ac] { margin-right: calc(var(--default-grid-baseline) * 3); display: flex; align-items: center; flex: 0 1 auto; } .app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-6a7129ac] { display: none; } .app-navigation-entry--editing .app-navigation-entry-edit[data-v-6a7129ac] { z-index: 250; opacity: 1; } .app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-6a7129ac] { z-index: 250; transform: translate(0); } .app-navigation-entry--pinned[data-v-6a7129ac] { order: 2; margin-top: auto; } .app-navigation-entry--pinned ~ .app-navigation-entry--pinned[data-v-6a7129ac] { margin-top: 0; } [data-themes*=highcontrast] .app-navigation-entry[data-v-6a7129ac]:active { background-color: var(--color-primary-element-light-hover) !important; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNew-joyd78FM.css": /*!***********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNew-joyd78FM.css ***! \***********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-c47dc611] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation-new[data-v-c47dc611] { display: block; padding: calc(var(--default-grid-baseline, 4px) * 2); } .app-navigation-new button[data-v-c47dc611] { width: 100%; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNewItem-ue-H4LQY.css": /*!***************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNewItem-ue-H4LQY.css ***! \***************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-8950be04] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation-entry[data-v-8950be04] { position: relative; display: flex; flex-shrink: 0; flex-wrap: wrap; box-sizing: border-box; width: 100%; min-height: 44px; transition: background-color var(--animation-quick) ease-in-out; transition: background-color .2s ease-in-out; border-radius: var(--border-radius-pill); } .app-navigation-entry-wrapper[data-v-8950be04] { position: relative; display: flex; flex-shrink: 0; flex-wrap: wrap; box-sizing: border-box; width: 100%; } .app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened) > ul[data-v-8950be04] { display: none; } .app-navigation-entry.active[data-v-8950be04] { background-color: var(--color-primary-element) !important; } .app-navigation-entry.active[data-v-8950be04]:hover { background-color: var(--color-primary-element-hover) !important; } .app-navigation-entry.active .app-navigation-entry-link[data-v-8950be04], .app-navigation-entry.active .app-navigation-entry-button[data-v-8950be04] { color: var(--color-primary-element-text) !important; } .app-navigation-entry[data-v-8950be04]:focus-within, .app-navigation-entry[data-v-8950be04]:hover { background-color: var(--color-background-hover); } .app-navigation-entry.active .app-navigation-entry__children[data-v-8950be04], .app-navigation-entry:focus-within .app-navigation-entry__children[data-v-8950be04], .app-navigation-entry:hover .app-navigation-entry__children[data-v-8950be04] { background-color: var(--color-main-background); } .app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04], .app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04], .app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04], .app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04], .app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04] { display: inline-block; } .app-navigation-entry.app-navigation-entry--deleted > ul[data-v-8950be04] { display: none; } .app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-8950be04], .app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-8950be04] { padding-right: 14px; } .app-navigation-entry .app-navigation-entry-link[data-v-8950be04], .app-navigation-entry .app-navigation-entry-button[data-v-8950be04] { z-index: 100; display: flex; overflow: hidden; flex: 1 1 0; box-sizing: border-box; min-height: 44px; padding: 0; white-space: nowrap; color: var(--color-main-text); background-repeat: no-repeat; background-position: 14px center; background-size: 16px 16px; line-height: 44px; } .app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-8950be04], .app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-8950be04] { display: flex; align-items: center; flex: 0 0 44px; justify-content: center; width: 44px; height: 44px; background-size: 16px 16px; background-repeat: no-repeat; background-position: 14px center; } .app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-8950be04], .app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-8950be04] { overflow: hidden; max-width: 100%; white-space: nowrap; text-overflow: ellipsis; } .app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-8950be04], .app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-8950be04] { width: calc(100% - 44px); margin: auto; } .app-navigation-entry .app-navigation-entry-link[data-v-8950be04]:focus-visible, .app-navigation-entry .app-navigation-entry-button[data-v-8950be04]:focus-visible { box-shadow: 0 0 0 4px var(--color-main-background); outline: 2px solid var(--color-main-text); border-radius: var(--border-radius-pill); } .app-navigation-entry__children[data-v-8950be04] { position: relative; display: flex; flex: 0 1 auto; flex-direction: column; width: 100%; gap: var(--default-grid-baseline, 4px); } .app-navigation-entry__children .app-navigation-entry[data-v-8950be04] { display: inline-flex; flex-wrap: wrap; padding-left: 16px; } .app-navigation-entry__deleted[data-v-8950be04] { display: inline-flex; flex: 1 1 0; padding-left: 30px !important; } .app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-8950be04] { position: relative; overflow: hidden; flex: 1 1 0; white-space: nowrap; text-overflow: ellipsis; line-height: 44px; } .app-navigation-entry__utils[data-v-8950be04] { display: flex; min-width: 44px; align-items: center; flex: 0 1 auto; justify-content: flex-end; } .app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-8950be04] { display: inline-block; } .app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-8950be04] { margin-right: calc(var(--default-grid-baseline) * 3); display: flex; align-items: center; flex: 0 1 auto; } .app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-8950be04] { display: none; } .app-navigation-entry--editing .app-navigation-entry-edit[data-v-8950be04] { z-index: 250; opacity: 1; } .app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-8950be04] { z-index: 250; transform: translate(0); } .app-navigation-entry--pinned[data-v-8950be04] { order: 2; margin-top: auto; } .app-navigation-entry--pinned ~ .app-navigation-entry--pinned[data-v-8950be04] { margin-top: 0; } [data-themes*=highcontrast] .app-navigation-entry[data-v-8950be04]:active { background-color: var(--color-primary-element-light-hover) !important; } .app-navigation-new-item__name[data-v-8950be04] { overflow: hidden; max-width: 100%; white-space: nowrap; text-overflow: ellipsis; padding-left: 7px; font-size: 14px; } .newItemContainer[data-v-8950be04] { width: calc(100% - 44px); margin: auto; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSettings-Jx_6RpSn.css": /*!****************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSettings-Jx_6RpSn.css ***! \****************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-4bd59bb1] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } #app-settings[data-v-4bd59bb1] { margin-top: auto; padding: 3px; } #app-settings__header[data-v-4bd59bb1] { box-sizing: border-box; margin: 0 3px 3px; } #app-settings__header .settings-button[data-v-4bd59bb1] { display: flex; flex: 1 1 0; height: 44px; width: 100%; padding: 0 14px 0 0; margin: 0; background-color: var(--color-main-background); box-shadow: none; border: 0; border-radius: var(--border-radius-pill); text-align: left; font-weight: 400; font-size: 100%; color: var(--color-main-text); line-height: 44px; } #app-settings__header .settings-button[data-v-4bd59bb1]:hover, #app-settings__header .settings-button[data-v-4bd59bb1]:focus { background-color: var(--color-background-hover); } #app-settings__header .settings-button__icon[data-v-4bd59bb1] { width: 44px; height: 44px; min-width: 44px; } #app-settings__header .settings-button__label[data-v-4bd59bb1] { overflow: hidden; max-width: 100%; white-space: nowrap; text-overflow: ellipsis; } #app-settings__content[data-v-4bd59bb1] { display: block; padding: 10px; margin-bottom: -3px; max-height: 300px; overflow-y: auto; box-sizing: border-box; } .slide-up-leave-active[data-v-4bd59bb1], .slide-up-enter-active[data-v-4bd59bb1] { transition-duration: var(--animation-slow); transition-property: max-height, padding; overflow-y: hidden !important; } .slide-up-enter[data-v-4bd59bb1], .slide-up-leave-to[data-v-4bd59bb1] { max-height: 0 !important; padding: 0 10px !important; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSpacer-MfL8GeCN.css": /*!**************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSpacer-MfL8GeCN.css ***! \**************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-spacer[data-v-c8233ec5] { flex-shrink: 0; order: 1; height: 22px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationToggle-3vMKtCQL.css": /*!**************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationToggle-3vMKtCQL.css ***! \**************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-e1dc2b3e] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation-toggle-wrapper[data-v-e1dc2b3e] { position: absolute; top: var(--app-navigation-padding); right: calc(0px - var(--app-navigation-padding)); margin-right: -44px; } button.app-navigation-toggle[data-v-e1dc2b3e] { background-color: var(--color-main-background); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsDialog-0eOo3ERv.css": /*!************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsDialog-0eOo3ERv.css ***! \************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-3e0025d1] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } [data-v-3e0025d1] .app-settings__navigation { min-width: 200px; margin-right: 20px; overflow-x: hidden; overflow-y: auto; position: relative; } [data-v-3e0025d1] .app-settings__content { box-sizing: border-box; padding-inline: 16px; } .navigation-list[data-v-3e0025d1] { height: 100%; box-sizing: border-box; overflow-y: auto; padding: 12px; } .navigation-list__link[data-v-3e0025d1] { display: flex; align-content: center; font-size: 16px; height: 44px; margin: 4px 0; line-height: 44px; border-radius: var(--border-radius-pill); font-weight: 700; padding: 0 20px; cursor: pointer; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; background-color: transparent; border: none; } .navigation-list__link[data-v-3e0025d1]:hover, .navigation-list__link[data-v-3e0025d1]:focus { background-color: var(--color-background-hover); } .navigation-list__link--active[data-v-3e0025d1] { background-color: var(--color-primary-element-light) !important; } .navigation-list__link--icon[data-v-3e0025d1] { padding-inline-start: 8px; gap: 4px; } .navigation-list__link-icon[data-v-3e0025d1] { display: flex; justify-content: center; align-content: center; width: 36px; max-width: 36px; } @media only screen and (max-width: 512px) { .app-settings[data-v-3e0025d1] .dialog__name { padding-inline-start: 16px; } } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsSection-ahfdhix_.css": /*!*************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsSection-ahfdhix_.css ***! \*************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-5162e6df] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-settings-section[data-v-5162e6df] { margin-bottom: 80px; } .app-settings-section__name[data-v-5162e6df] { font-size: 20px; margin: 0; padding: 20px 0; font-weight: 700; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSidebar-YHd7DpMW.css": /*!*****************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSidebar-YHd7DpMW.css ***! \*****************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-2ae00fba] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-sidebar-tabs[data-v-2ae00fba] { display: flex; flex-direction: column; min-height: 0; flex: 1 1 100%; } .app-sidebar-tabs__nav[data-v-2ae00fba] { display: flex; justify-content: stretch; margin: 10px 8px 0; border-bottom: 1px solid var(--color-border); } .app-sidebar-tabs__nav[data-v-2ae00fba] .checkbox-radio-switch--button-variant { border: unset !important; border-radius: 0 !important; } .app-sidebar-tabs__nav[data-v-2ae00fba] .checkbox-radio-switch--button-variant .checkbox-content { padding: var(--default-grid-baseline); border-radius: var(--default-grid-baseline) var(--default-grid-baseline) 0 0 !important; margin: 0 !important; border-bottom: var(--default-grid-baseline) solid transparent !important; } .app-sidebar-tabs__nav[data-v-2ae00fba] .checkbox-radio-switch--button-variant .checkbox-content .checkbox-content__icon--checked > * { color: var(--color-main-text) !important; } .app-sidebar-tabs__nav[data-v-2ae00fba] .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content { background: transparent !important; color: var(--color-main-text) !important; border-bottom: var(--default-grid-baseline) solid var(--color-primary-element) !important; } .app-sidebar-tabs__tab[data-v-2ae00fba] { flex: 1 1; } .app-sidebar-tabs__tab.active[data-v-2ae00fba] { color: var(--color-primary-element); } .app-sidebar-tabs__tab-caption[data-v-2ae00fba] { flex: 0 1 100%; width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; text-align: center; } .app-sidebar-tabs__tab-icon[data-v-2ae00fba] { display: flex; align-items: center; justify-content: center; background-size: 20px; } .app-sidebar-tabs__tab[data-v-2ae00fba] .checkbox-radio-switch__content { max-width: unset; } .app-sidebar-tabs__content[data-v-2ae00fba] { position: relative; min-height: 256px; height: 100%; } .app-sidebar-tabs__content--multiple[data-v-2ae00fba] > :not(section) { display: none; } .material-design-icon[data-v-2a227066] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-sidebar[data-v-2a227066] { z-index: 1500; top: 0; right: 0; display: flex; overflow-x: hidden; overflow-y: auto; flex-direction: column; flex-shrink: 0; width: 27vw; min-width: 300px; max-width: 500px; height: 100%; border-left: 1px solid var(--color-border); background: var(--color-main-background); } .app-sidebar .app-sidebar-header > .app-sidebar__close[data-v-2a227066] { position: absolute; z-index: 100; top: 6px; right: 6px; width: 44px; height: 44px; opacity: .7; border-radius: 22px; } .app-sidebar .app-sidebar-header > .app-sidebar__close[data-v-2a227066]:hover, .app-sidebar .app-sidebar-header > .app-sidebar__close[data-v-2a227066]:active, .app-sidebar .app-sidebar-header > .app-sidebar__close[data-v-2a227066]:focus { opacity: 1; background-color: #7f7f7f40; } .app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info[data-v-2a227066] { flex-direction: row; } .app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__figure[data-v-2a227066] { z-index: 2; width: 70px; height: 70px; margin: 9px; border-radius: 3px; flex: 0 0 auto; } .app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc[data-v-2a227066] { padding-left: 0; flex: 1 1 auto; min-width: 0; padding-right: 94px; padding-top: 10px; } .app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-2a227066] { padding-right: 50px; } .app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-2a227066] { z-index: 3; position: absolute; top: 9px; left: -44px; gap: 0; } .app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__menu[data-v-2a227066] { top: 6px; right: 50px; background-color: transparent; position: absolute; } .app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__menu[data-v-2a227066] { position: absolute; top: 6px; right: 50px; } .app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc[data-v-2a227066] { padding-right: 94px; } .app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-2a227066] { padding-right: 50px; } .app-sidebar .app-sidebar-header .app-sidebar-header__info[data-v-2a227066] { display: flex; flex-direction: column; } .app-sidebar .app-sidebar-header__figure[data-v-2a227066] { width: 100%; height: 250px; max-height: 250px; background-repeat: no-repeat; background-position: center; background-size: contain; } .app-sidebar .app-sidebar-header__figure--with-action[data-v-2a227066] { cursor: pointer; } .app-sidebar .app-sidebar-header__desc[data-v-2a227066] { position: relative; display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 18px 6px 18px 9px; gap: 0 4px; } .app-sidebar .app-sidebar-header__desc--with-tertiary-action[data-v-2a227066] { padding-left: 6px; } .app-sidebar .app-sidebar-header__desc--editable .app-sidebar-header__mainname-form[data-v-2a227066], .app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__mainname-form[data-v-2a227066] { margin-top: -2px; margin-bottom: -2px; } .app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__subname[data-v-2a227066] { margin-top: -2px; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-2a227066] { display: flex; height: 44px; width: 44px; justify-content: center; flex: 0 0 auto; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-2a227066] { box-shadow: none; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-2a227066]:not([aria-pressed=true]):hover { box-shadow: none; background-color: var(--color-background-hover); } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container[data-v-2a227066] { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: center; min-width: 0; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container[data-v-2a227066] { display: flex; align-items: center; min-height: 44px; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-2a227066] { padding: 0; min-height: 30px; font-size: 20px; line-height: 30px; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-2a227066] .linkified { cursor: pointer; text-decoration: underline; margin: 0; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form[data-v-2a227066] { display: flex; flex: 1 1 auto; align-items: center; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form input.app-sidebar-header__mainname-input[data-v-2a227066] { flex: 1 1 auto; margin: 0; padding: 7px; font-size: 20px; font-weight: 700; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__menu[data-v-2a227066] { height: 44px; width: 44px; border-radius: 22px; background-color: #7f7f7f40; margin-left: 5px; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname[data-v-2a227066], .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-2a227066] { overflow: hidden; width: 100%; margin: 0; white-space: nowrap; text-overflow: ellipsis; } .app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-2a227066] { padding: 0; opacity: .7; font-size: var(--default-font-size); } .app-sidebar .app-sidebar-header__description[data-v-2a227066] { display: flex; align-items: center; margin: 0 10px; } @media only screen and (max-width: 512px) { .app-sidebar[data-v-2a227066] { width: 100vw; max-width: 100vw; } } .slide-right-leave-active[data-v-2a227066], .slide-right-enter-active[data-v-2a227066] { transition-duration: var(--animation-quick); transition-property: max-width, min-width; } .slide-right-enter-to[data-v-2a227066], .slide-right-leave[data-v-2a227066] { min-width: 300px; max-width: 500px; } .slide-right-enter[data-v-2a227066], .slide-right-leave-to[data-v-2a227066] { min-width: 0 !important; max-width: 0 !important; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-sidebar-header__description button, .app-sidebar-header__description .button, .app-sidebar-header__description input[type=button], .app-sidebar-header__description input[type=submit], .app-sidebar-header__description input[type=reset] { padding: 6px 22px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSidebarTab-FywbKxqo.css": /*!********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSidebarTab-FywbKxqo.css ***! \********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-ef10d14f] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-sidebar__tab[data-v-ef10d14f] { display: none; padding: 10px; min-height: 100%; max-height: 100%; height: 100%; overflow: auto; } .app-sidebar__tab[data-v-ef10d14f]:focus { border-color: var(--color-primary-element); box-shadow: 0 0 .2em var(--color-primary-element); outline: 0; } .app-sidebar__tab--active[data-v-ef10d14f] { display: block; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAvatar-5H9cqcD1.css": /*!*************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAvatar-5H9cqcD1.css ***! \*************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-de3f465f] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .avatardiv[data-v-de3f465f] { position: relative; display: inline-block; width: var(--size); height: var(--size); } .avatardiv--unknown[data-v-de3f465f] { position: relative; background-color: var(--color-main-background); white-space: normal; } .avatardiv[data-v-de3f465f]:not(.avatardiv--unknown) { background-color: var(--color-main-background) !important; box-shadow: 0 0 5px #0000000d inset; } .avatardiv--with-menu[data-v-de3f465f] { cursor: pointer; } .avatardiv--with-menu .action-item[data-v-de3f465f] { position: absolute; top: 0; left: 0; } .avatardiv--with-menu[data-v-de3f465f] .action-item__menutoggle { cursor: pointer; opacity: 0; } .avatardiv--with-menu[data-v-de3f465f]:focus-within .action-item__menutoggle, .avatardiv--with-menu[data-v-de3f465f]:hover .action-item__menutoggle, .avatardiv--with-menu.avatardiv--with-menu-loading[data-v-de3f465f] .action-item__menutoggle { opacity: 1; } .avatardiv--with-menu:focus-within img[data-v-de3f465f], .avatardiv--with-menu:hover img[data-v-de3f465f], .avatardiv--with-menu.avatardiv--with-menu-loading img[data-v-de3f465f] { opacity: .3; } .avatardiv--with-menu[data-v-de3f465f] .action-item__menutoggle, .avatardiv--with-menu img[data-v-de3f465f] { transition: opacity var(--animation-quick); } .avatardiv--with-menu[data-v-de3f465f] .button-vue, .avatardiv--with-menu[data-v-de3f465f] .button-vue__icon { height: var(--size); min-height: var(--size); width: var(--size) !important; min-width: var(--size); } .avatardiv .avatardiv__initials-wrapper[data-v-de3f465f] { display: block; height: var(--size); width: var(--size); background-color: var(--color-main-background); border-radius: 50%; } .avatardiv .avatardiv__initials-wrapper .avatardiv__initials[data-v-de3f465f] { position: absolute; top: 0; left: 0; display: block; width: 100%; text-align: center; font-weight: 400; } .avatardiv img[data-v-de3f465f] { width: 100%; height: 100%; object-fit: cover; } .avatardiv .material-design-icon[data-v-de3f465f] { width: var(--size); height: var(--size); } .avatardiv .avatardiv__user-status[data-v-de3f465f] { box-sizing: border-box; position: absolute; right: -4px; bottom: -4px; min-height: 18px; min-width: 18px; max-height: 18px; max-width: 18px; height: 40%; width: 40%; line-height: 15px; font-size: var(--default-font-size); border: 2px solid var(--color-main-background); background-color: var(--color-main-background); background-repeat: no-repeat; background-size: 16px; background-position: center; border-radius: 50%; } .acli:hover .avatardiv .avatardiv__user-status[data-v-de3f465f] { border-color: var(--color-background-hover); background-color: var(--color-background-hover); } .acli.active .avatardiv .avatardiv__user-status[data-v-de3f465f] { border-color: var(--color-primary-element-light); background-color: var(--color-primary-element-light); } .avatardiv .avatardiv__user-status--icon[data-v-de3f465f] { border: none; background-color: transparent; } .avatardiv .popovermenu-wrapper[data-v-de3f465f] { position: relative; display: inline-block; } .avatar-class-icon[data-v-de3f465f] { display: block; border-radius: 50%; background-color: var(--color-background-darker); height: 100%; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-HspaFygg.css": /*!*****************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-HspaFygg.css ***! \*****************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-fe4740ac] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .vue-crumb[data-v-fe4740ac] { background-image: none; display: inline-flex; height: 44px; padding: 0; } .vue-crumb[data-v-fe4740ac]:last-child { min-width: 0; } .vue-crumb:last-child .vue-crumb__separator[data-v-fe4740ac] { display: none; } .vue-crumb--hidden[data-v-fe4740ac] { display: none; } .vue-crumb__separator[data-v-fe4740ac] { padding: 0; color: var(--color-text-maxcontrast); } .vue-crumb.vue-crumb--hovered[data-v-fe4740ac] .button-vue { background-color: var(--color-background-dark); color: var(--color-main-text); } .vue-crumb[data-v-fe4740ac]:not(:last-child) .button-vue { color: var(--color-text-maxcontrast); } .vue-crumb[data-v-fe4740ac]:not(:last-child) .button-vue:hover, .vue-crumb[data-v-fe4740ac]:not(:last-child) .button-vue:focus { background-color: var(--color-background-dark); color: var(--color-main-text); } .vue-crumb[data-v-fe4740ac]:not(:last-child) .button-vue__text { font-weight: 400; } .vue-crumb[data-v-fe4740ac] .button-vue__text { margin: 0; } .vue-crumb[data-v-fe4740ac]:not(.dropdown) .action-item { max-width: 100%; } .vue-crumb[data-v-fe4740ac]:not(.dropdown) .action-item .button-vue { padding: 0 4px 0 16px; max-width: 100%; } .vue-crumb[data-v-fe4740ac]:not(.dropdown) .action-item .button-vue__wrapper { flex-direction: row-reverse; } .vue-crumb[data-v-fe4740ac]:not(.dropdown) .action-item.action-item--open .action-item__menutoggle { background-color: var(--color-background-dark); color: var(--color-main-text); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-KBV0Jccv.css": /*!******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-KBV0Jccv.css ***! \******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-7d882912] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .breadcrumb[data-v-7d882912] { width: 100%; flex-grow: 1; display: inline-flex; align-items: center; } .breadcrumb--collapsed[data-v-7d882912] .vue-crumb:last-child { min-width: 100px; } .breadcrumb nav[data-v-7d882912] { flex-shrink: 1; min-width: 0; } .breadcrumb .breadcrumb__crumbs[data-v-7d882912] { max-width: 100%; } .breadcrumb .breadcrumb__crumbs[data-v-7d882912], .breadcrumb .breadcrumb__actions[data-v-7d882912] { display: inline-flex; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcButton-4Wj3KJn8.css": /*!*************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcButton-4Wj3KJn8.css ***! \*************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-fe3b5af5] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .button-vue[data-v-fe3b5af5] { position: relative; width: fit-content; overflow: hidden; border: 0; padding: 0; font-size: var(--default-font-size); font-weight: 700; min-height: 44px; min-width: 44px; display: flex; align-items: center; justify-content: center; cursor: pointer; border-radius: 22px; transition-property: color, border-color, background-color; transition-duration: .1s; transition-timing-function: linear; color: var(--color-primary-element-light-text); background-color: var(--color-primary-element-light); } .button-vue *[data-v-fe3b5af5], .button-vue span[data-v-fe3b5af5] { cursor: pointer; } .button-vue[data-v-fe3b5af5]:focus { outline: none; } .button-vue[data-v-fe3b5af5]:disabled { cursor: default; opacity: .5; filter: saturate(.7); } .button-vue:disabled *[data-v-fe3b5af5] { cursor: default; } .button-vue[data-v-fe3b5af5]:hover:not(:disabled) { background-color: var(--color-primary-element-light-hover); } .button-vue[data-v-fe3b5af5]:active { background-color: var(--color-primary-element-light); } .button-vue__wrapper[data-v-fe3b5af5] { display: inline-flex; align-items: center; justify-content: center; width: 100%; } .button-vue--end .button-vue__wrapper[data-v-fe3b5af5] { justify-content: end; } .button-vue--start .button-vue__wrapper[data-v-fe3b5af5] { justify-content: start; } .button-vue--reverse .button-vue__wrapper[data-v-fe3b5af5] { flex-direction: row-reverse; } .button-vue--reverse.button-vue--icon-and-text[data-v-fe3b5af5] { padding-inline: calc(var(--default-grid-baseline) * 4) var(--default-grid-baseline); } .button-vue__icon[data-v-fe3b5af5] { height: 44px; width: 44px; min-height: 44px; min-width: 44px; display: flex; justify-content: center; align-items: center; } .button-vue__text[data-v-fe3b5af5] { font-weight: 700; margin-bottom: 1px; padding: 2px 0; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .button-vue--icon-only[data-v-fe3b5af5] { width: 44px !important; } .button-vue--text-only[data-v-fe3b5af5] { padding: 0 12px; } .button-vue--text-only .button-vue__text[data-v-fe3b5af5] { margin-left: 4px; margin-right: 4px; } .button-vue--icon-and-text[data-v-fe3b5af5] { padding-block: 0; padding-inline: var(--default-grid-baseline) calc(var(--default-grid-baseline) * 4); } .button-vue--wide[data-v-fe3b5af5] { width: 100%; } .button-vue[data-v-fe3b5af5]:focus-visible { outline: 2px solid var(--color-main-text) !important; box-shadow: 0 0 0 4px var(--color-main-background) !important; } .button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-fe3b5af5] { outline: 2px solid var(--color-primary-element-text); border-radius: var(--border-radius); background-color: transparent; } .button-vue--vue-primary[data-v-fe3b5af5] { background-color: var(--color-primary-element); color: var(--color-primary-element-text); } .button-vue--vue-primary[data-v-fe3b5af5]:hover:not(:disabled) { background-color: var(--color-primary-element-hover); } .button-vue--vue-primary[data-v-fe3b5af5]:active { background-color: var(--color-primary-element); } .button-vue--vue-secondary[data-v-fe3b5af5] { color: var(--color-primary-element-light-text); background-color: var(--color-primary-element-light); } .button-vue--vue-secondary[data-v-fe3b5af5]:hover:not(:disabled) { color: var(--color-primary-element-light-text); background-color: var(--color-primary-element-light-hover); } .button-vue--vue-tertiary[data-v-fe3b5af5] { color: var(--color-main-text); background-color: transparent; } .button-vue--vue-tertiary[data-v-fe3b5af5]:hover:not(:disabled) { background-color: var(--color-background-hover); } .button-vue--vue-tertiary-no-background[data-v-fe3b5af5] { color: var(--color-main-text); background-color: transparent; } .button-vue--vue-tertiary-no-background[data-v-fe3b5af5]:hover:not(:disabled) { background-color: transparent; } .button-vue--vue-tertiary-on-primary[data-v-fe3b5af5] { color: var(--color-primary-element-text); background-color: transparent; } .button-vue--vue-tertiary-on-primary[data-v-fe3b5af5]:hover:not(:disabled) { background-color: transparent; } .button-vue--vue-success[data-v-fe3b5af5] { background-color: var(--color-success); color: #fff; } .button-vue--vue-success[data-v-fe3b5af5]:hover:not(:disabled) { background-color: var(--color-success-hover); } .button-vue--vue-success[data-v-fe3b5af5]:active { background-color: var(--color-success); } .button-vue--vue-warning[data-v-fe3b5af5] { background-color: var(--color-warning); color: #fff; } .button-vue--vue-warning[data-v-fe3b5af5]:hover:not(:disabled) { background-color: var(--color-warning-hover); } .button-vue--vue-warning[data-v-fe3b5af5]:active { background-color: var(--color-warning); } .button-vue--vue-error[data-v-fe3b5af5] { background-color: var(--color-error); color: #fff; } .button-vue--vue-error[data-v-fe3b5af5]:hover:not(:disabled) { background-color: var(--color-error-hover); } .button-vue--vue-error[data-v-fe3b5af5]:active { background-color: var(--color-error); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcCheckboxRadioSwitch-mgKotCbU.css": /*!**************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcCheckboxRadioSwitch-mgKotCbU.css ***! \**************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-2672ad1a] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .checkbox-content[data-v-2672ad1a] { display: flex; align-items: center; flex-direction: row; gap: 4px; -webkit-user-select: none; user-select: none; min-height: 44px; border-radius: 44px; padding: 4px calc((44px - var(--icon-height)) / 2); width: 100%; max-width: fit-content; } .checkbox-content__text[data-v-2672ad1a] { flex: 1 0; display: flex; align-items: center; } .checkbox-content__text[data-v-2672ad1a]:empty { display: none; } .checkbox-content__icon > *[data-v-2672ad1a] { width: var(--icon-size); height: var(--icon-size); } .checkbox-content--button-variant .checkbox-content__icon:not(.checkbox-content__icon--checked) > *[data-v-2672ad1a] { color: var(--color-primary-element); } .checkbox-content--button-variant .checkbox-content__icon--checked > *[data-v-2672ad1a] { color: var(--color-primary-element-text); } .checkbox-content--has-text[data-v-2672ad1a] { padding-right: 14px; } .checkbox-content:not(.checkbox-content--button-variant) .checkbox-content__icon > *[data-v-2672ad1a] { color: var(--color-primary-element); } .checkbox-content[data-v-2672ad1a], .checkbox-content *[data-v-2672ad1a] { cursor: pointer; flex-shrink: 0; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-2603be83] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .checkbox-radio-switch[data-v-2603be83] { display: flex; align-items: center; color: var(--color-main-text); background-color: transparent; font-size: var(--default-font-size); line-height: var(--default-line-height); padding: 0; position: relative; } .checkbox-radio-switch__input[data-v-2603be83] { position: absolute; z-index: -1; opacity: 0 !important; width: var(--icon-size); height: var(--icon-size); margin: 4px 14px; } .checkbox-radio-switch__input:focus-visible + .checkbox-radio-switch__content[data-v-2603be83], .checkbox-radio-switch__input[data-v-2603be83]:focus-visible { outline: 2px solid var(--color-main-text); border-color: var(--color-main-background); outline-offset: -2px; } .checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-2603be83] { opacity: .5; } .checkbox-radio-switch--disabled .checkbox-radio-switch__content[data-v-2603be83] .checkbox-radio-switch__icon > * { color: var(--color-main-text); } .checkbox-radio-switch:not(.checkbox-radio-switch--disabled, .checkbox-radio-switch--checked):focus-within .checkbox-radio-switch__content[data-v-2603be83], .checkbox-radio-switch:not(.checkbox-radio-switch--disabled, .checkbox-radio-switch--checked) .checkbox-radio-switch__content[data-v-2603be83]:hover { background-color: var(--color-background-hover); } .checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-2603be83], .checkbox-radio-switch--checked:not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-2603be83]:hover { background-color: var(--color-primary-element-hover); } .checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled):focus-within .checkbox-radio-switch__content[data-v-2603be83], .checkbox-radio-switch--checked:not(.checkbox-radio-switch--button-variant):not(.checkbox-radio-switch--disabled) .checkbox-radio-switch__content[data-v-2603be83]:hover { background-color: var(--color-primary-element-light-hover); } .checkbox-radio-switch-switch[data-v-2603be83]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon > * { color: var(--color-text-maxcontrast); } .checkbox-radio-switch-switch.checkbox-radio-switch--disabled.checkbox-radio-switch--checked[data-v-2603be83] .checkbox-radio-switch__icon > * { color: var(--color-primary-element-light); } .checkbox-radio-switch--button-variant.checkbox-radio-switch[data-v-2603be83] { border: 2px solid var(--color-border-maxcontrast); overflow: hidden; } .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked[data-v-2603be83] { font-weight: 700; } .checkbox-radio-switch--button-variant.checkbox-radio-switch--checked .checkbox-radio-switch__content[data-v-2603be83] { background-color: var(--color-primary-element); color: var(--color-primary-element-text); } .checkbox-radio-switch--button-variant[data-v-2603be83] .checkbox-radio-switch__text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 100%; } .checkbox-radio-switch--button-variant[data-v-2603be83]:not(.checkbox-radio-switch--checked) .checkbox-radio-switch__icon > * { color: var(--color-main-text); } .checkbox-radio-switch--button-variant[data-v-2603be83] .checkbox-radio-switch__icon:empty { display: none; } .checkbox-radio-switch--button-variant[data-v-2603be83]:not(.checkbox-radio-switch--button-variant-v-grouped):not(.checkbox-radio-switch--button-variant-h-grouped), .checkbox-radio-switch--button-variant .checkbox-radio-switch__content[data-v-2603be83] { border-radius: calc(var(--default-clickable-area) / 2); } .checkbox-radio-switch--button-variant-v-grouped .checkbox-radio-switch__content[data-v-2603be83] { flex-basis: 100%; max-width: unset; } .checkbox-radio-switch--button-variant-v-grouped[data-v-2603be83]:first-of-type { border-top-left-radius: calc(var(--default-clickable-area) / 2 + 2px); border-top-right-radius: calc(var(--default-clickable-area) / 2 + 2px); } .checkbox-radio-switch--button-variant-v-grouped[data-v-2603be83]:last-of-type { border-bottom-left-radius: calc(var(--default-clickable-area) / 2 + 2px); border-bottom-right-radius: calc(var(--default-clickable-area) / 2 + 2px); } .checkbox-radio-switch--button-variant-v-grouped[data-v-2603be83]:not(:last-of-type) { border-bottom: 0 !important; } .checkbox-radio-switch--button-variant-v-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-2603be83] { margin-bottom: 2px; } .checkbox-radio-switch--button-variant-v-grouped[data-v-2603be83]:not(:first-of-type) { border-top: 0 !important; } .checkbox-radio-switch--button-variant-h-grouped[data-v-2603be83]:first-of-type { border-top-left-radius: calc(var(--default-clickable-area) / 2 + 2px); border-bottom-left-radius: calc(var(--default-clickable-area) / 2 + 2px); } .checkbox-radio-switch--button-variant-h-grouped[data-v-2603be83]:last-of-type { border-top-right-radius: calc(var(--default-clickable-area) / 2 + 2px); border-bottom-right-radius: calc(var(--default-clickable-area) / 2 + 2px); } .checkbox-radio-switch--button-variant-h-grouped[data-v-2603be83]:not(:last-of-type) { border-right: 0 !important; } .checkbox-radio-switch--button-variant-h-grouped:not(:last-of-type) .checkbox-radio-switch__content[data-v-2603be83] { margin-right: 2px; } .checkbox-radio-switch--button-variant-h-grouped[data-v-2603be83]:not(:first-of-type) { border-left: 0 !important; } .checkbox-radio-switch--button-variant-h-grouped[data-v-2603be83] .checkbox-radio-switch__text { text-align: center; } .checkbox-radio-switch--button-variant-h-grouped .checkbox-radio-switch__content[data-v-2603be83] { flex-direction: column; justify-content: center; width: 100%; margin: 0; gap: 0; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcColorPicker-PzIRM1j1.css": /*!******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcColorPicker-PzIRM1j1.css ***! \******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-ced724c4] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .color-picker[data-v-ced724c4] { display: flex; overflow: hidden; align-content: flex-end; flex-direction: column; justify-content: space-between; box-sizing: content-box !important; width: 176px; padding: 8px; border-radius: 3px; } .color-picker--advanced-fields[data-v-ced724c4] { width: 264px; } .color-picker__simple[data-v-ced724c4] { display: grid; grid-template-columns: repeat(auto-fit, 44px); grid-auto-rows: 44px; } .color-picker__simple-color-circle[data-v-ced724c4] { display: flex; align-items: center; justify-content: center; width: 34px; height: 34px; min-height: 34px; margin: auto; padding: 0; color: #fff; border: 1px solid rgba(0, 0, 0, .25); border-radius: 50%; font-size: 16px; } .color-picker__simple-color-circle[data-v-ced724c4]:focus-within { outline: 2px solid var(--color-main-text); } .color-picker__simple-color-circle[data-v-ced724c4]:hover { opacity: .6; } .color-picker__simple-color-circle--active[data-v-ced724c4] { width: 38px; height: 38px; min-height: 38px; transition: all .1s ease-in-out; opacity: 1 !important; } .color-picker__advanced[data-v-ced724c4] { box-shadow: none !important; } .color-picker__navigation[data-v-ced724c4] { display: flex; flex-direction: row; justify-content: space-between; margin-top: 10px; } [data-v-ced724c4] .vc-chrome { width: unset; background-color: var(--color-main-background); } [data-v-ced724c4] .vc-chrome-color-wrap { width: 30px; height: 30px; } [data-v-ced724c4] .vc-chrome-active-color { width: 34px; height: 34px; border-radius: 17px; } [data-v-ced724c4] .vc-chrome-body { padding: 14px 0 0; background-color: var(--color-main-background); } [data-v-ced724c4] .vc-chrome-body .vc-input__input { box-shadow: none; } [data-v-ced724c4] .vc-chrome-toggle-btn { filter: var(--background-invert-if-dark); } [data-v-ced724c4] .vc-chrome-saturation-wrap { border-radius: 3px; } [data-v-ced724c4] .vc-chrome-saturation-circle { width: 20px; height: 20px; } .slide-enter[data-v-ced724c4] { transform: translate(-50%); opacity: 0; } .slide-enter-to[data-v-ced724c4], .slide-leave[data-v-ced724c4] { transform: translate(0); opacity: 1; } .slide-leave-to[data-v-ced724c4] { transform: translate(-50%); opacity: 0; } .slide-enter-active[data-v-ced724c4], .slide-leave-active[data-v-ced724c4] { transition: all 50ms ease-in-out; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcContent-LWR23l9i.css": /*!**************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcContent-LWR23l9i.css ***! \**************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } #skip-actions.vue-skip-actions:focus-within { top: 0 !important; left: 0 !important; width: 100vw; height: 100vh; padding: var(--body-container-margin) !important; -webkit-backdrop-filter: brightness(50%); backdrop-filter: brightness(50%); } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-cfc84a6c] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .vue-skip-actions__container[data-v-cfc84a6c] { background-color: var(--color-main-background); border-radius: var(--border-radius-large); padding: 22px; } .vue-skip-actions__headline[data-v-cfc84a6c] { font-weight: 700; font-size: 20px; line-height: 30px; margin-bottom: 12px; } .vue-skip-actions__buttons[data-v-cfc84a6c] { display: flex; flex-wrap: wrap; gap: 12px; } .vue-skip-actions__buttons > *[data-v-cfc84a6c] { flex: 1 0 fit-content; } .vue-skip-actions__image[data-v-cfc84a6c] { margin-top: 12px; } .content[data-v-cfc84a6c] { box-sizing: border-box; margin: var(--body-container-margin); margin-top: 50px; display: flex; width: calc(100% - var(--body-container-margin) * 2); border-radius: var(--body-container-radius); height: var(--body-height); overflow: hidden; padding: 0; } .content[data-v-cfc84a6c]:not(.with-sidebar--full) { position: fixed; } .content[data-v-cfc84a6c] * { box-sizing: border-box; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcCounterBubble-rgkmqN46.css": /*!********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcCounterBubble-rgkmqN46.css ***! \********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-b318b0e4] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .counter-bubble__counter[data-v-b318b0e4] { font-size: calc(var(--default-font-size) * .8); overflow: hidden; width: fit-content; max-width: 44px; text-align: center; text-overflow: ellipsis; line-height: 1em; padding: 4px 6px; border-radius: var(--border-radius-pill); background-color: var(--color-primary-element-light); font-weight: 700; color: var(--color-primary-element-light-text); } .counter-bubble__counter .active[data-v-b318b0e4] { color: var(--color-main-background); background-color: var(--color-primary-element-light); } .counter-bubble__counter--highlighted[data-v-b318b0e4] { color: var(--color-primary-element-text); background-color: var(--color-primary-element); } .counter-bubble__counter--highlighted.active[data-v-b318b0e4] { color: var(--color-primary-element); background-color: var(--color-main-background); } .counter-bubble__counter--outlined[data-v-b318b0e4] { color: var(--color-primary-element); background: transparent; box-shadow: inset 0 0 0 2px; } .counter-bubble__counter--outlined.active[data-v-b318b0e4] { color: var(--color-main-background); box-shadow: inset 0 0 0 2px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidget-01deRW9Z.css": /*!**********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidget-01deRW9Z.css ***! \**********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-1efcbeee] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .dashboard-widget[data-v-1efcbeee] .empty-content { text-align: center; padding-top: 5vh; } .dashboard-widget[data-v-1efcbeee] .empty-content.half-screen { padding-top: 0; margin-bottom: 1vh; } .more[data-v-1efcbeee] { display: block; text-align: center; color: var(--color-text-maxcontrast); line-height: 60px; cursor: pointer; } .more[data-v-1efcbeee]:hover, .more[data-v-1efcbeee]:focus { background-color: var(--color-background-hover); border-radius: var(--border-radius-large); color: var(--color-main-text); } .item-list__entry[data-v-1efcbeee] { display: flex; align-items: flex-start; padding: 8px; } .item-list__entry .item-avatar[data-v-1efcbeee] { position: relative; margin-top: auto; margin-bottom: auto; background-color: var(--color-background-dark) !important; } .item-list__entry .item__details[data-v-1efcbeee] { padding-left: 8px; max-height: 44px; flex-grow: 1; overflow: hidden; display: flex; flex-direction: column; } .item-list__entry .item__details h3[data-v-1efcbeee], .item-list__entry .item__details .message[data-v-1efcbeee] { white-space: nowrap; background-color: var(--color-background-dark); } .item-list__entry .item__details h3[data-v-1efcbeee] { font-size: 100%; margin: 0; } .item-list__entry .item__details .message[data-v-1efcbeee] { width: 80%; height: 15px; margin-top: 5px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidgetItem-OL--xR_P.css": /*!**************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidgetItem-OL--xR_P.css ***! \**************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-a688e724] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .item-list__entry[data-v-a688e724] { display: flex; align-items: flex-start; position: relative; padding: 8px; } .item-list__entry[data-v-a688e724]:hover, .item-list__entry[data-v-a688e724]:focus { background-color: var(--color-background-hover); border-radius: var(--border-radius-large); } .item-list__entry .item-avatar[data-v-a688e724] { position: relative; margin-top: auto; margin-bottom: auto; } .item-list__entry .item__details[data-v-a688e724] { padding-left: 8px; max-height: 44px; flex-grow: 1; overflow: hidden; display: flex; flex-direction: column; justify-content: center; min-height: 44px; } .item-list__entry .item__details h3[data-v-a688e724], .item-list__entry .item__details .message[data-v-a688e724] { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .item-list__entry .item__details .message span[data-v-a688e724] { width: 10px; display: inline-block; margin-bottom: -3px; } .item-list__entry .item__details h3[data-v-a688e724] { font-size: 100%; margin: 0; } .item-list__entry .item__details .message[data-v-a688e724] { width: 100%; color: var(--color-text-maxcontrast); } .item-list__entry .item-icon[data-v-a688e724] { position: relative; width: 14px; height: 14px; margin: 27px -3px 0 -7px; } .item-list__entry button.primary[data-v-a688e724] { padding: 21px; margin: 0; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDateTimePicker-TArRbMs-.css": /*!*********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDateTimePicker-TArRbMs-.css ***! \*********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js"); /* harmony import */ var _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__); // Imports var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e */ "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"), __webpack_require__.b); var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e */ "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"), __webpack_require__.b); var ___CSS_LOADER_URL_IMPORT_2___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e */ "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"), __webpack_require__.b); var ___CSS_LOADER_URL_IMPORT_3___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e */ "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"), __webpack_require__.b); var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); var ___CSS_LOADER_URL_REPLACEMENT_0___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___); var ___CSS_LOADER_URL_REPLACEMENT_1___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___); var ___CSS_LOADER_URL_REPLACEMENT_2___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_2___); var ___CSS_LOADER_URL_REPLACEMENT_3___ = _css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_3___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .mx-icon-left:before, .mx-icon-right:before, .mx-icon-double-left:before, .mx-icon-double-right:before, .mx-icon-double-left:after, .mx-icon-double-right:after { content: ""; position: relative; top: -1px; display: inline-block; width: 10px; height: 10px; vertical-align: middle; border-style: solid; border-color: currentColor; border-width: 2px 0 0 2px; border-radius: 1px; box-sizing: border-box; transform-origin: center; transform: rotate(-45deg) scale(.7); } .mx-icon-double-left:after { left: -4px; } .mx-icon-double-right:before { left: 4px; } .mx-icon-right:before, .mx-icon-double-right:before, .mx-icon-double-right:after { transform: rotate(135deg) scale(.7); } .mx-btn { box-sizing: border-box; line-height: 1; font-size: 14px; font-weight: 500; padding: 7px 15px; margin: 0; cursor: pointer; background-color: transparent; outline: none; border: 1px solid rgba(0, 0, 0, .1); border-radius: 4px; color: #73879c; white-space: nowrap; } .mx-btn:hover { border-color: #1284e7; color: #1284e7; } .mx-btn:disabled, .mx-btn.disabled { color: #ccc; cursor: not-allowed; } .mx-btn-text { border: 0; padding: 0 4px; text-align: left; line-height: inherit; } .mx-scrollbar { height: 100%; } .mx-scrollbar:hover .mx-scrollbar-track { opacity: 1; } .mx-scrollbar-wrap { height: 100%; overflow-x: hidden; overflow-y: auto; } .mx-scrollbar-track { position: absolute; top: 2px; right: 2px; bottom: 2px; width: 6px; z-index: 1; border-radius: 4px; opacity: 0; transition: opacity .24s ease-out; } .mx-scrollbar-track .mx-scrollbar-thumb { position: absolute; width: 100%; height: 0; cursor: pointer; border-radius: inherit; background-color: #9093994d; transition: background-color .3s; } .mx-zoom-in-down-enter-active, .mx-zoom-in-down-leave-active { opacity: 1; transform: scaleY(1); transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1); transform-origin: center top; } .mx-zoom-in-down-enter, .mx-zoom-in-down-enter-from, .mx-zoom-in-down-leave-to { opacity: 0; transform: scaleY(0); } .mx-datepicker { position: relative; display: inline-block; width: 210px; } .mx-datepicker svg { width: 1em; height: 1em; vertical-align: -.15em; fill: currentColor; overflow: hidden; } .mx-datepicker-range { width: 320px; } .mx-datepicker-inline { width: auto; } .mx-input-wrapper { position: relative; } .mx-input { display: inline-block; box-sizing: border-box; width: 100%; height: 34px; padding: 6px 30px 6px 10px; font-size: 14px; line-height: 1.4; color: #555; background-color: #fff; border: 1px solid #ccc; border-radius: 4px; box-shadow: inset 0 1px 1px #00000013; } .mx-input:hover, .mx-input:focus { border-color: #409aff; } .mx-input:disabled, .mx-input.disabled { color: #ccc; background-color: #f3f3f3; border-color: #ccc; cursor: not-allowed; } .mx-input:focus { outline: none; } .mx-input::-ms-clear { display: none; } .mx-icon-calendar, .mx-icon-clear { position: absolute; top: 50%; right: 8px; transform: translateY(-50%); font-size: 16px; line-height: 1; color: #00000080; vertical-align: middle; } .mx-icon-clear { cursor: pointer; } .mx-icon-clear:hover { color: #000c; } .mx-datepicker-main { font: 14px/1.5 Helvetica Neue, Helvetica, Arial, Microsoft Yahei, sans-serif; color: #73879c; background-color: #fff; border: 1px solid #e8e8e8; } .mx-datepicker-popup { position: absolute; margin-top: 1px; margin-bottom: 1px; box-shadow: 0 6px 12px #0000002d; z-index: 2001; } .mx-datepicker-sidebar { float: left; box-sizing: border-box; width: 100px; padding: 6px; overflow: auto; } .mx-datepicker-sidebar + .mx-datepicker-content { margin-left: 100px; border-left: 1px solid #e8e8e8; } .mx-datepicker-body { position: relative; -webkit-user-select: none; user-select: none; } .mx-btn-shortcut { display: block; padding: 0 6px; line-height: 24px; } .mx-range-wrapper { display: flex; } @media (max-width: 750px) { .mx-range-wrapper { flex-direction: column; } } .mx-datepicker-header { padding: 6px 8px; border-bottom: 1px solid #e8e8e8; } .mx-datepicker-footer { padding: 6px 8px; text-align: right; border-top: 1px solid #e8e8e8; } .mx-calendar { box-sizing: border-box; width: 248px; padding: 6px 12px; } .mx-calendar + .mx-calendar { border-left: 1px solid #e8e8e8; } .mx-calendar-header, .mx-time-header { box-sizing: border-box; height: 34px; line-height: 34px; text-align: center; overflow: hidden; } .mx-btn-icon-left, .mx-btn-icon-double-left { float: left; } .mx-btn-icon-right, .mx-btn-icon-double-right { float: right; } .mx-calendar-header-label { font-size: 14px; } .mx-calendar-decade-separator { margin: 0 2px; } .mx-calendar-decade-separator:after { content: "~"; } .mx-calendar-content { position: relative; height: 224px; box-sizing: border-box; } .mx-calendar-content .cell { cursor: pointer; } .mx-calendar-content .cell:hover { color: #73879c; background-color: #f3f9fe; } .mx-calendar-content .cell.active { color: #fff; background-color: #1284e7; } .mx-calendar-content .cell.in-range, .mx-calendar-content .cell.hover-in-range { color: #73879c; background-color: #dbedfb; } .mx-calendar-content .cell.disabled { cursor: not-allowed; color: #ccc; background-color: #f3f3f3; } .mx-calendar-week-mode .mx-date-row { cursor: pointer; } .mx-calendar-week-mode .mx-date-row:hover { background-color: #f3f9fe; } .mx-calendar-week-mode .mx-date-row.mx-active-week { background-color: #dbedfb; } .mx-calendar-week-mode .mx-date-row .cell:hover, .mx-calendar-week-mode .mx-date-row .cell.active { color: inherit; background-color: transparent; } .mx-week-number { opacity: .5; } .mx-table { table-layout: fixed; border-collapse: separate; border-spacing: 0; width: 100%; height: 100%; box-sizing: border-box; text-align: center; } .mx-table th { padding: 0; font-weight: 500; vertical-align: middle; } .mx-table td { padding: 0; vertical-align: middle; } .mx-table-date td, .mx-table-date th { height: 32px; font-size: 12px; } .mx-table-date .today { color: #2a90e9; } .mx-table-date .cell.not-current-month { color: #ccc; background: none; } .mx-time { flex: 1; width: 224px; background: #fff; } .mx-time + .mx-time { border-left: 1px solid #e8e8e8; } .mx-calendar-time { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .mx-time-header { border-bottom: 1px solid #e8e8e8; } .mx-time-content { height: 224px; box-sizing: border-box; overflow: hidden; } .mx-time-columns { display: flex; width: 100%; height: 100%; overflow: hidden; } .mx-time-column { flex: 1; position: relative; border-left: 1px solid #e8e8e8; text-align: center; } .mx-time-column:first-child { border-left: 0; } .mx-time-column .mx-time-list { margin: 0; padding: 0; list-style: none; } .mx-time-column .mx-time-list:after { content: ""; display: block; height: 192px; } .mx-time-column .mx-time-item { cursor: pointer; font-size: 12px; height: 32px; line-height: 32px; } .mx-time-column .mx-time-item:hover { color: #73879c; background-color: #f3f9fe; } .mx-time-column .mx-time-item.active { color: #1284e7; background-color: transparent; font-weight: 700; } .mx-time-column .mx-time-item.disabled { cursor: not-allowed; color: #ccc; background-color: #f3f3f3; } .mx-time-option { cursor: pointer; padding: 8px 10px; font-size: 14px; line-height: 20px; } .mx-time-option:hover { color: #73879c; background-color: #f3f9fe; } .mx-time-option.active { color: #1284e7; background-color: transparent; font-weight: 700; } .mx-time-option.disabled { cursor: not-allowed; color: #ccc; background-color: #f3f3f3; } .mx-datepicker[data-v-98ecc7d] { -webkit-user-select: none; user-select: none; color: var(--color-main-text); } .mx-datepicker[data-v-98ecc7d] svg { fill: var(--color-main-text); } .mx-datepicker[data-v-98ecc7d] .mx-input-wrapper .mx-input { width: 100%; border: 2px solid var(--color-border-maxcontrast); background-color: var(--color-main-background); background-clip: content-box; } .mx-datepicker[data-v-98ecc7d] .mx-input-wrapper .mx-input:active:not(.disabled), .mx-datepicker[data-v-98ecc7d] .mx-input-wrapper .mx-input:hover:not(.disabled), .mx-datepicker[data-v-98ecc7d] .mx-input-wrapper .mx-input:focus:not(.disabled) { border-color: var(--color-primary-element); } .mx-datepicker[data-v-98ecc7d] .mx-input-wrapper:disabled, .mx-datepicker[data-v-98ecc7d] .mx-input-wrapper.disabled { cursor: not-allowed; opacity: .7; } .mx-datepicker[data-v-98ecc7d] .mx-input-wrapper .mx-icon-calendar, .mx-datepicker[data-v-98ecc7d] .mx-input-wrapper .mx-icon-clear { color: var(--color-text-lighter); } .mx-datepicker-main { color: var(--color-main-text); border: 1px solid var(--color-border); background-color: var(--color-main-background); font-family: var(--font-face) !important; line-height: 1.5; } .mx-datepicker-main svg { fill: var(--color-main-text); } .mx-datepicker-main.mx-datepicker-popup { z-index: 2000; box-shadow: none; } .mx-datepicker-main.mx-datepicker-popup .mx-datepicker-sidebar + .mx-datepicker-content { border-left: 1px solid var(--color-border); } .mx-datepicker-main.show-week-number .mx-calendar { width: 296px; } .mx-datepicker-main .mx-datepicker-header { border-bottom: 1px solid var(--color-border); } .mx-datepicker-main .mx-datepicker-footer { border-top: 1px solid var(--color-border); } .mx-datepicker-main .mx-datepicker-btn-confirm { background-color: var(--color-primary-element); border-color: var(--color-primary-element); color: var(--color-primary-element-text) !important; opacity: 1 !important; } .mx-datepicker-main .mx-datepicker-btn-confirm:hover { background-color: var(--color-primary-element-light) !important; border-color: var(--color-primary-element-light) !important; } .mx-datepicker-main .mx-calendar { width: 264px; padding: 5px; } .mx-datepicker-main .mx-calendar.mx-calendar-week-mode { width: 296px; } .mx-datepicker-main .mx-time + .mx-time, .mx-datepicker-main .mx-calendar + .mx-calendar { border-left: 1px solid var(--color-border); } .mx-datepicker-main .mx-range-wrapper { display: flex; overflow: hidden; } .mx-datepicker-main .mx-range-wrapper .mx-calendar-content .mx-table-date .cell.active { border-radius: var(--border-radius) 0 0 var(--border-radius); } .mx-datepicker-main .mx-range-wrapper .mx-calendar-content .mx-table-date .cell.in-range + .cell.active { border-radius: 0 var(--border-radius) var(--border-radius) 0; } .mx-datepicker-main .mx-table { text-align: center; } .mx-datepicker-main .mx-table thead > tr > th { text-align: center; opacity: .5; color: var(--color-text-lighter); } .mx-datepicker-main .mx-table tr:focus, .mx-datepicker-main .mx-table tr:hover, .mx-datepicker-main .mx-table tr:active { background-color: transparent; } .mx-datepicker-main .mx-table .cell { transition: all .1s ease-in-out; text-align: center; opacity: .7; border-radius: 50px; } .mx-datepicker-main .mx-table .cell > * { cursor: pointer; } .mx-datepicker-main .mx-table .cell.today { opacity: 1; color: var(--color-primary-element); font-weight: 700; } .mx-datepicker-main .mx-table .cell.today:hover, .mx-datepicker-main .mx-table .cell.today:focus { color: var(--color-primary-element-text); } .mx-datepicker-main .mx-table .cell.in-range, .mx-datepicker-main .mx-table .cell.disabled { border-radius: 0; font-weight: 400; } .mx-datepicker-main .mx-table .cell.in-range { opacity: .7; } .mx-datepicker-main .mx-table .cell.not-current-month { opacity: .5; color: var(--color-text-lighter); } .mx-datepicker-main .mx-table .cell.not-current-month:hover, .mx-datepicker-main .mx-table .cell.not-current-month:focus { opacity: 1; } .mx-datepicker-main .mx-table .cell:hover, .mx-datepicker-main .mx-table .cell:focus, .mx-datepicker-main .mx-table .cell.actived, .mx-datepicker-main .mx-table .cell.active, .mx-datepicker-main .mx-table .cell.in-range { opacity: 1; color: var(--color-primary-element-text); background-color: var(--color-primary-element); font-weight: 700; } .mx-datepicker-main .mx-table .cell.disabled { opacity: .5; color: var(--color-text-lighter); border-radius: 0; background-color: var(--color-background-darker); } .mx-datepicker-main .mx-table .mx-week-number { text-align: center; opacity: .7; border-radius: 50px; } .mx-datepicker-main .mx-table span.mx-week-number, .mx-datepicker-main .mx-table li.mx-week-number, .mx-datepicker-main .mx-table span.cell, .mx-datepicker-main .mx-table li.cell { min-height: 32px; } .mx-datepicker-main .mx-table.mx-table-date thead, .mx-datepicker-main .mx-table.mx-table-date tbody, .mx-datepicker-main .mx-table.mx-table-year, .mx-datepicker-main .mx-table.mx-table-month { display: flex; flex-direction: column; justify-content: space-around; } .mx-datepicker-main .mx-table.mx-table-date thead tr, .mx-datepicker-main .mx-table.mx-table-date tbody tr, .mx-datepicker-main .mx-table.mx-table-year tr, .mx-datepicker-main .mx-table.mx-table-month tr { display: inline-flex; align-items: center; flex: 1 1 32px; justify-content: space-around; min-height: 32px; } .mx-datepicker-main .mx-table.mx-table-date thead th, .mx-datepicker-main .mx-table.mx-table-date thead td, .mx-datepicker-main .mx-table.mx-table-date tbody th, .mx-datepicker-main .mx-table.mx-table-date tbody td, .mx-datepicker-main .mx-table.mx-table-year th, .mx-datepicker-main .mx-table.mx-table-year td, .mx-datepicker-main .mx-table.mx-table-month th, .mx-datepicker-main .mx-table.mx-table-month td { display: flex; align-items: center; flex: 0 1 32%; justify-content: center; min-width: 32px; height: 95%; min-height: 32px; transition: background .1s ease-in-out; } .mx-datepicker-main .mx-table.mx-table-year tr th, .mx-datepicker-main .mx-table.mx-table-year tr td { flex-basis: 48%; } .mx-datepicker-main .mx-table.mx-table-date tr th, .mx-datepicker-main .mx-table.mx-table-date tr td { flex-basis: 32px; } .mx-datepicker-main .mx-btn { min-width: 32px; height: 32px; margin: 0 2px !important; padding: 7px 10px; cursor: pointer; text-decoration: none; opacity: .5; color: var(--color-text-lighter); border-radius: 32px; line-height: 20px; } .mx-datepicker-main .mx-btn:hover, .mx-datepicker-main .mx-btn:focus { opacity: 1; color: var(--color-main-text); background-color: var(--color-background-darker); } .mx-datepicker-main .mx-calendar-header, .mx-datepicker-main .mx-time-header { display: inline-flex; align-items: center; justify-content: space-between; width: 100%; height: 44px; margin-bottom: 4px; } .mx-datepicker-main .mx-calendar-header button, .mx-datepicker-main .mx-time-header button { min-width: 32px; min-height: 32px; margin: 0; cursor: pointer; text-align: center; text-decoration: none; opacity: .7; color: var(--color-main-text); border-radius: 32px; line-height: 20px; } .mx-datepicker-main .mx-calendar-header button:hover, .mx-datepicker-main .mx-time-header button:hover, .mx-datepicker-main .mx-calendar-header button:focus, .mx-datepicker-main .mx-time-header button:focus { opacity: 1; color: var(--color-main-text); background-color: var(--color-background-darker); } .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-left, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left, .mx-datepicker-main .mx-time-header button.mx-btn-icon-left, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right, .mx-datepicker-main .mx-time-header button.mx-btn-icon-right, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-right { align-items: center; justify-content: center; width: 32px; padding: 0; } .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left > i, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-left > i, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left > i, .mx-datepicker-main .mx-time-header button.mx-btn-icon-left > i, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right > i, .mx-datepicker-main .mx-time-header button.mx-btn-icon-right > i, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right > i, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-right > i { background-repeat: no-repeat; background-size: 16px; background-position: center; filter: var(--background-invert-if-dark); display: inline-block; width: 32px; height: 32px; } .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left > i:after, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-left > i:after, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-left > i:before, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-left > i:before, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left > i:after, .mx-datepicker-main .mx-time-header button.mx-btn-icon-left > i:after, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-left > i:before, .mx-datepicker-main .mx-time-header button.mx-btn-icon-left > i:before, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right > i:after, .mx-datepicker-main .mx-time-header button.mx-btn-icon-right > i:after, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right > i:before, .mx-datepicker-main .mx-time-header button.mx-btn-icon-right > i:before, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right > i:after, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-right > i:after, .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right > i:before, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-right > i:before { content: none; } .mx-datepicker-main .mx-calendar-header button.mx-btn-text, .mx-datepicker-main .mx-time-header button.mx-btn-text { line-height: initial; } .mx-datepicker-main .mx-calendar-header .mx-calendar-header-label, .mx-datepicker-main .mx-time-header .mx-calendar-header-label { display: flex; } .mx-datepicker-main .mx-calendar-header .mx-btn-icon-double-left > i, .mx-datepicker-main .mx-time-header .mx-btn-icon-double-left > i { background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___}); } .mx-datepicker-main .mx-calendar-header .mx-btn-icon-left > i, .mx-datepicker-main .mx-time-header .mx-btn-icon-left > i { background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___}); } .mx-datepicker-main .mx-calendar-header .mx-btn-icon-right > i, .mx-datepicker-main .mx-time-header .mx-btn-icon-right > i { background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___}); } .mx-datepicker-main .mx-calendar-header .mx-btn-icon-double-right > i, .mx-datepicker-main .mx-time-header .mx-btn-icon-double-right > i { background-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___}); } .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-right, .mx-datepicker-main .mx-time-header button.mx-btn-icon-right { order: 2; } .mx-datepicker-main .mx-calendar-header button.mx-btn-icon-double-right, .mx-datepicker-main .mx-time-header button.mx-btn-icon-double-right { order: 3; } .mx-datepicker-main .mx-calendar-week-mode .mx-date-row .mx-week-number { font-weight: 700; } .mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover, .mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week { opacity: 1; border-radius: 50px; background-color: var(--color-background-dark); } .mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td, .mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td { background-color: transparent; } .mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td, .mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td:hover, .mx-datepicker-main .mx-calendar-week-mode .mx-date-row:hover td:focus, .mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td, .mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td:hover, .mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td:focus { color: inherit; } .mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week { color: var(--color-primary-element-text); background-color: var(--color-primary-element); } .mx-datepicker-main .mx-calendar-week-mode .mx-date-row.mx-active-week td { opacity: .7; font-weight: 400; } .mx-datepicker-main .mx-time { background-color: var(--color-main-background); } .mx-datepicker-main .mx-time .mx-time-header { justify-content: center; border-bottom: 1px solid var(--color-border); } .mx-datepicker-main .mx-time .mx-time-column { border-left: 1px solid var(--color-border); } .mx-datepicker-main .mx-time .mx-time-option.active, .mx-datepicker-main .mx-time .mx-time-option:hover, .mx-datepicker-main .mx-time .mx-time-item.active, .mx-datepicker-main .mx-time .mx-time-item:hover { color: var(--color-primary-element-text); background-color: var(--color-primary-element); } .mx-datepicker-main .mx-time .mx-time-option.disabled, .mx-datepicker-main .mx-time .mx-time-item.disabled { cursor: not-allowed; opacity: .5; color: var(--color-main-text); background-color: var(--color-main-background); } .material-design-icon[data-v-56b96a48] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .mx-datepicker[data-v-56b96a48] .mx-input-wrapper .mx-input { background-clip: border-box; } .datetime-picker-inline-icon[data-v-56b96a48] { opacity: .3; border: none; background-color: transparent; border-radius: 0; padding: 0 !important; margin: 0; } .datetime-picker-inline-icon--highlighted[data-v-56b96a48] { opacity: .7; } .datetime-picker-inline-icon[data-v-56b96a48]:focus, .datetime-picker-inline-icon[data-v-56b96a48]:hover { opacity: 1; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper { border-radius: var(--border-radius-large); } .v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner { padding: 4px; border-radius: var(--border-radius-large); } .v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__label { padding: 4px 0 4px 14px; } .v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select .vs__dropdown-toggle { border-radius: calc(var(--border-radius-large) - 4px); } .v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select.vs--open .vs__dropdown-toggle { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .v-popper--theme-dropdown.v-popper__popper.timezone-select__popper .v-popper__wrapper .v-popper__inner .timezone-popover-wrapper__timezone-select.v-select.vs--open.select--drop-up .vs__dropdown-toggle { border-radius: 0 0 calc(var(--border-radius-large) - 4px) calc(var(--border-radius-large) - 4px); } .vs__dropdown-menu--floating { z-index: 100001 !important; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDateTimePickerNative-5yybtvfx.css": /*!***************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDateTimePickerNative-5yybtvfx.css ***! \***************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-7b246f90] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .native-datetime-picker[data-v-7b246f90] { display: flex; flex-direction: column; } .native-datetime-picker .native-datetime-picker--input[data-v-7b246f90] { width: 100%; flex: 0 0 auto; padding-right: 4px; } [data-theme-light] .native-datetime-picker--input[data-v-7b246f90], [data-themes*=light] .native-datetime-picker--input[data-v-7b246f90] { color-scheme: light; } [data-theme-dark] .native-datetime-picker--input[data-v-7b246f90], [data-themes*=dark] .native-datetime-picker--input[data-v-7b246f90] { color-scheme: dark; } @media (prefers-color-scheme: light) { [data-theme-default] .native-datetime-picker--input[data-v-7b246f90], [data-themes*=default] .native-datetime-picker--input[data-v-7b246f90] { color-scheme: light; } } @media (prefers-color-scheme: dark) { [data-theme-default] .native-datetime-picker--input[data-v-7b246f90], [data-themes*=default] .native-datetime-picker--input[data-v-7b246f90] { color-scheme: dark; } } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDialog-DN-rY-55.css": /*!*************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDialog-DN-rY-55.css ***! \*************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } @media only screen and (max-width: 512px) { .dialog__modal .modal-wrapper--small .modal-container { width: fit-content; height: unset; max-height: 90%; position: relative; top: unset; border-radius: var(--border-radius-large); } } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-40a87f52] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .dialog[data-v-40a87f52] { height: 100%; width: 100%; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; } .dialog__modal[data-v-40a87f52] .modal-wrapper .modal-container { display: flex !important; padding-block: 4px 0; padding-inline: 12px 0; } .dialog__modal[data-v-40a87f52] .modal-wrapper .modal-container__content { display: flex; flex-direction: column; overflow: hidden; } .dialog__wrapper[data-v-40a87f52] { display: flex; flex-direction: row; flex: 1; min-height: 0; overflow: hidden; } .dialog__wrapper--collapsed[data-v-40a87f52] { flex-direction: column; } .dialog__navigation[data-v-40a87f52] { display: flex; flex-shrink: 0; } .dialog__wrapper:not(.dialog__wrapper--collapsed) .dialog__navigation[data-v-40a87f52] { flex-direction: column; overflow: hidden auto; height: 100%; min-width: 200px; margin-inline-end: 20px; } .dialog__wrapper.dialog__wrapper--collapsed .dialog__navigation[data-v-40a87f52] { flex-direction: row; justify-content: space-between; overflow: auto hidden; width: 100%; min-width: 100%; } .dialog__name[data-v-40a87f52] { text-align: center; height: fit-content; min-height: var(--default-clickable-area); line-height: var(--default-clickable-area); overflow-wrap: break-word; margin-block-end: 12px; } .dialog__content[data-v-40a87f52] { flex: 1; min-height: 0; overflow: auto; padding-inline-end: 12px; } .dialog__text[data-v-40a87f52] { padding-block-end: 6px; } .dialog__actions[data-v-40a87f52] { display: flex; gap: 6px; align-content: center; width: fit-content; margin-inline: auto 12px; margin-block: 0; } .dialog__actions[data-v-40a87f52]:not(:empty) { margin-block: 6px 12px; } @media only screen and (max-width: 512px) { .dialog__name[data-v-40a87f52] { text-align: start; margin-inline-end: var(--default-clickable-area); } } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEllipsisedOption-eoI10kvc.css": /*!***********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEllipsisedOption-eoI10kvc.css ***! \***********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-08c4259e] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .name-parts[data-v-08c4259e] { display: flex; max-width: 100%; cursor: inherit; } .name-parts__first[data-v-08c4259e] { overflow: hidden; text-overflow: ellipsis; } .name-parts__first[data-v-08c4259e], .name-parts__last[data-v-08c4259e] { white-space: pre; cursor: inherit; } .name-parts__first strong[data-v-08c4259e], .name-parts__last strong[data-v-08c4259e] { font-weight: 700; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEmojiPicker-wTIbvcrG.css": /*!******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEmojiPicker-wTIbvcrG.css ***! \******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .emoji-mart, .emoji-mart * { box-sizing: border-box; line-height: 1.15; } .emoji-mart { font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, sans-serif; font-size: 16px; display: flex; flex-direction: column; height: 420px; color: #222427; border: 1px solid #d9d9d9; border-radius: 5px; background: #fff; } .emoji-mart-emoji { padding: 6px; position: relative; display: inline-block; font-size: 0; border: none; background: none; box-shadow: none; } .emoji-mart-emoji span { display: inline-block; } .emoji-mart-preview-emoji .emoji-mart-emoji span { width: 38px; height: 38px; font-size: 32px; } .emoji-type-native { font-family: "Segoe UI Emoji", Segoe UI Symbol, Segoe UI, "Apple Color Emoji", Twemoji Mozilla, "Noto Color Emoji", EmojiOne Color, "Android Emoji"; word-break: keep-all; } .emoji-type-image { background-size: 6100%; } .emoji-type-image.emoji-set-apple { background-image: url(https://unpkg.com/emoji-datasource-apple@15.0.1/img/apple/sheets-256/64.png); } .emoji-type-image.emoji-set-facebook { background-image: url(https://unpkg.com/emoji-datasource-facebook@15.0.1/img/facebook/sheets-256/64.png); } .emoji-type-image.emoji-set-google { background-image: url(https://unpkg.com/emoji-datasource-google@15.0.1/img/google/sheets-256/64.png); } .emoji-type-image.emoji-set-twitter { background-image: url(https://unpkg.com/emoji-datasource-twitter@15.0.1/img/twitter/sheets-256/64.png); } .emoji-mart-bar { border: 0 solid #d9d9d9; } .emoji-mart-bar:first-child { border-bottom-width: 1px; border-top-left-radius: 5px; border-top-right-radius: 5px; } .emoji-mart-bar:last-child { border-top-width: 1px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; } .emoji-mart-scroll { position: relative; overflow-y: scroll; flex: 1; padding: 0 6px 6px; z-index: 0; will-change: transform; -webkit-overflow-scrolling: touch; } .emoji-mart-anchors { display: flex; flex-direction: row; justify-content: space-between; padding: 0 6px; color: #858585; line-height: 0; } .emoji-mart-anchor { position: relative; display: block; flex: 1 1 auto; text-align: center; padding: 12px 4px; overflow: hidden; transition: color .1s ease-out; border: none; background: none; box-shadow: none; } .emoji-mart-anchor:hover, .emoji-mart-anchor-selected { color: #464646; } .emoji-mart-anchor-selected .emoji-mart-anchor-bar { bottom: 0; } .emoji-mart-anchor-bar { position: absolute; bottom: -3px; left: 0; width: 100%; height: 3px; background-color: #464646; } .emoji-mart-anchors i { display: inline-block; width: 100%; max-width: 22px; } .emoji-mart-anchors svg { fill: currentColor; max-height: 18px; } .emoji-mart .scroller { height: 250px; position: relative; flex: 1; padding: 0 6px 6px; z-index: 0; will-change: transform; -webkit-overflow-scrolling: touch; } .emoji-mart-search { margin-top: 6px; padding: 0 6px; } .emoji-mart-search input { font-size: 16px; display: block; width: 100%; padding: .2em .6em; border-radius: 25px; border: 1px solid #d9d9d9; outline: 0; } .emoji-mart-search-results { height: 250px; overflow-y: scroll; } .emoji-mart-category { position: relative; } .emoji-mart-category .emoji-mart-emoji span { z-index: 1; position: relative; text-align: center; cursor: default; } .emoji-mart-category .emoji-mart-emoji:hover:before, .emoji-mart-emoji-selected:before { z-index: 0; content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #f4f4f4; border-radius: 100%; opacity: 0; } .emoji-mart-category .emoji-mart-emoji:hover:before, .emoji-mart-emoji-selected:before { opacity: 1; } .emoji-mart-category-label { position: sticky; top: 0; } .emoji-mart-static .emoji-mart-category-label { z-index: 2; position: relative; } .emoji-mart-category-label h3 { display: block; font-size: 16px; width: 100%; font-weight: 500; padding: 5px 6px; background-color: #fff; background-color: #fffffff2; } .emoji-mart-emoji { position: relative; display: inline-block; font-size: 0; } .emoji-mart-no-results { font-size: 14px; text-align: center; padding-top: 70px; color: #858585; } .emoji-mart-no-results .emoji-mart-category-label { display: none; } .emoji-mart-no-results .emoji-mart-no-results-label { margin-top: .2em; } .emoji-mart-no-results .emoji-mart-emoji:hover:before { content: none; } .emoji-mart-preview { position: relative; height: 70px; } .emoji-mart-preview-emoji, .emoji-mart-preview-data, .emoji-mart-preview-skins { position: absolute; top: 50%; transform: translateY(-50%); } .emoji-mart-preview-emoji { left: 12px; } .emoji-mart-preview-data { left: 68px; right: 12px; word-break: break-all; } .emoji-mart-preview-skins { right: 30px; text-align: right; } .emoji-mart-preview-name { font-size: 14px; } .emoji-mart-preview-shortname { font-size: 12px; color: #888; } .emoji-mart-preview-shortname + .emoji-mart-preview-shortname, .emoji-mart-preview-shortname + .emoji-mart-preview-emoticon, .emoji-mart-preview-emoticon + .emoji-mart-preview-emoticon { margin-left: .5em; } .emoji-mart-preview-emoticon { font-size: 11px; color: #bbb; } .emoji-mart-title span { display: inline-block; vertical-align: middle; } .emoji-mart-title .emoji-mart-emoji { padding: 0; } .emoji-mart-title-label { color: #999a9c; font-size: 21px; font-weight: 300; } .emoji-mart-skin-swatches { font-size: 0; padding: 2px 0; border: 1px solid #d9d9d9; border-radius: 12px; background-color: #fff; } .emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch { width: 16px; padding: 0 2px; } .emoji-mart-skin-swatches-opened .emoji-mart-skin-swatch-selected:after { opacity: .75; } .emoji-mart-skin-swatch { display: inline-block; width: 0; vertical-align: middle; transition-property: width, padding; transition-duration: .125s; transition-timing-function: ease-out; } .emoji-mart-skin-swatch:nth-child(1) { transition-delay: 0s; } .emoji-mart-skin-swatch:nth-child(2) { transition-delay: .03s; } .emoji-mart-skin-swatch:nth-child(3) { transition-delay: .06s; } .emoji-mart-skin-swatch:nth-child(4) { transition-delay: .09s; } .emoji-mart-skin-swatch:nth-child(5) { transition-delay: .12s; } .emoji-mart-skin-swatch:nth-child(6) { transition-delay: .15s; } .emoji-mart-skin-swatch-selected { position: relative; width: 16px; padding: 0 2px; } .emoji-mart-skin-swatch-selected:after { content: ""; position: absolute; top: 50%; left: 50%; width: 4px; height: 4px; margin: -2px 0 0 -2px; background-color: #fff; border-radius: 100%; pointer-events: none; opacity: 0; transition: opacity .2s ease-out; } .emoji-mart-skin { display: inline-block; width: 100%; padding-top: 100%; max-width: 12px; border-radius: 100%; } .emoji-mart-skin-tone-1 { background-color: #ffc93a; } .emoji-mart-skin-tone-2 { background-color: #fadcbc; } .emoji-mart-skin-tone-3 { background-color: #e0bb95; } .emoji-mart-skin-tone-4 { background-color: #bf8f68; } .emoji-mart-skin-tone-5 { background-color: #9b643d; } .emoji-mart-skin-tone-6 { background-color: #594539; } .emoji-mart .vue-recycle-scroller { position: relative; } .emoji-mart .vue-recycle-scroller.direction-vertical:not(.page-mode) { overflow-y: auto; } .emoji-mart .vue-recycle-scroller.direction-horizontal:not(.page-mode) { overflow-x: auto; } .emoji-mart .vue-recycle-scroller.direction-horizontal { display: flex; } .emoji-mart .vue-recycle-scroller__slot { flex: auto 0 0; } .emoji-mart .vue-recycle-scroller__item-wrapper { flex: 1; box-sizing: border-box; overflow: hidden; position: relative; } .emoji-mart .vue-recycle-scroller.ready .vue-recycle-scroller__item-view { position: absolute; top: 0; left: 0; will-change: transform; } .emoji-mart .vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper { width: 100%; } .emoji-mart .vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper { height: 100%; } .emoji-mart .vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view { width: 100%; } .emoji-mart .vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view { height: 100%; } .emoji-mart .resize-observer[data-v-b329ee4c] { position: absolute; top: 0; left: 0; z-index: -1; width: 100%; height: 100%; border: none; background-color: transparent; pointer-events: none; display: block; overflow: hidden; opacity: 0; } .emoji-mart .resize-observer[data-v-b329ee4c] object { display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1; } .emoji-mart-search .hidden { display: none; visibility: hidden; } .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .emoji-mart { background-color: var(--color-main-background) !important; border: 0; color: var(--color-main-text) !important; } .emoji-mart button { margin: 0; padding: 0; border: none; background: transparent; font-size: inherit; height: 36px; width: auto; } .emoji-mart button * { cursor: pointer !important; } .emoji-mart .emoji-mart-bar, .emoji-mart .emoji-mart-anchors, .emoji-mart .emoji-mart-search, .emoji-mart .emoji-mart-search input, .emoji-mart .emoji-mart-category, .emoji-mart .emoji-mart-category-label, .emoji-mart .emoji-mart-category-label span, .emoji-mart .emoji-mart-skin-swatches { background-color: transparent !important; border-color: var(--color-border) !important; color: inherit !important; } .emoji-mart .emoji-mart-search input:focus-visible { box-shadow: inset 0 0 0 2px var(--color-primary-element); outline: none; } .emoji-mart .emoji-mart-bar:first-child { border-top-left-radius: var(--border-radius) !important; border-top-right-radius: var(--border-radius) !important; } .emoji-mart .emoji-mart-anchors button { border-radius: 0; padding: 12px 4px; height: auto; } .emoji-mart .emoji-mart-anchors button:focus-visible { outline: 2px solid var(--color-primary-element); } .emoji-mart .emoji-mart-category { display: flex; flex-direction: row; flex-wrap: wrap; justify-content: start; } .emoji-mart .emoji-mart-category .emoji-mart-category-label, .emoji-mart .emoji-mart-category .emoji-mart-emoji { -webkit-user-select: none; user-select: none; flex-grow: 0; flex-shrink: 0; } .emoji-mart .emoji-mart-category .emoji-mart-category-label { flex-basis: 100%; margin: 0; } .emoji-mart .emoji-mart-category .emoji-mart-emoji { flex-basis: 12.5%; text-align: center; } .emoji-mart .emoji-mart-category .emoji-mart-emoji:hover:before, .emoji-mart .emoji-mart-category .emoji-mart-emoji.emoji-mart-emoji-selected:before { background-color: var(--color-background-hover) !important; outline: 2px solid var(--color-primary-element); } .emoji-mart .emoji-mart-category button:focus-visible { background-color: var(--color-background-hover); border: 2px solid var(--color-primary-element) !important; border-radius: 50%; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-2075d0ec] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .search__wrapper[data-v-2075d0ec] { display: flex; flex-direction: row; gap: 4px; align-items: end; padding: 4px 8px; } .row-selected button[data-v-2075d0ec], .row-selected span[data-v-2075d0ec] { vertical-align: middle; } .emoji-delete[data-v-2075d0ec] { vertical-align: top; margin-left: -21px; margin-top: -3px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEmptyContent-pSz7F6Oe.css": /*!*******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEmptyContent-pSz7F6Oe.css ***! \*******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-458108e7] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .empty-content[data-v-458108e7] { display: flex; align-items: center; flex-direction: column; justify-content: center; flex-grow: 1; } .modal-wrapper .empty-content[data-v-458108e7] { margin-top: 5vh; margin-bottom: 5vh; } .empty-content__icon[data-v-458108e7] { display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; margin: 0 auto 15px; opacity: .4; background-repeat: no-repeat; background-position: center; background-size: 64px; } .empty-content__icon[data-v-458108e7] svg { width: 64px !important; height: 64px !important; max-width: 64px !important; max-height: 64px !important; } .empty-content__name[data-v-458108e7] { margin-bottom: 10px; text-align: center; font-weight: 700; font-size: 20px; line-height: 30px; } .empty-content__description[data-v-458108e7] { color: var(--color-text-maxcontrast); } .empty-content__action[data-v-458108e7] { margin-top: 8px; } .modal-wrapper .empty-content__action[data-v-458108e7] { margin-top: 20px; display: flex; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcGuestContent-mGGTzI2_.css": /*!*******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcGuestContent-mGGTzI2_.css ***! \*******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-36ad47ca] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } #guest-content-vue[data-v-36ad47ca] { color: var(--color-main-text); background-color: var(--color-main-background); min-width: 0; border-radius: var(--border-radius-large); box-shadow: 0 0 10px var(--color-box-shadow); height: fit-content; padding: 15px; margin: 20px auto; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } #content.nc-guest-content { overflow: auto; margin-bottom: 0; height: calc(var(--body-height) + var(--body-container-margin)); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcHeaderMenu-Srn5iXdL.css": /*!*****************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcHeaderMenu-Srn5iXdL.css ***! \*****************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-7103b917] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .header-menu[data-v-7103b917] { position: relative; width: var(--header-height); height: var(--header-height); } .header-menu .header-menu__trigger[data-v-7103b917] { width: 100% !important; height: var(--header-height); opacity: .85; filter: none !important; color: var(--color-primary-text) !important; } .header-menu--opened .header-menu__trigger[data-v-7103b917], .header-menu__trigger[data-v-7103b917]:hover, .header-menu__trigger[data-v-7103b917]:focus, .header-menu__trigger[data-v-7103b917]:active { opacity: 1; } .header-menu .header-menu__trigger[data-v-7103b917]:focus-visible { outline: none !important; box-shadow: none !important; } .header-menu__wrapper[data-v-7103b917] { position: fixed; z-index: 2000; top: 50px; inset-inline-end: 0; box-sizing: border-box; margin: 0 8px; padding: 8px; border-radius: 0 0 var(--border-radius) var(--border-radius); border-radius: var(--border-radius-large); background-color: var(--color-main-background); filter: drop-shadow(0 1px 5px var(--color-box-shadow)); } .header-menu__carret[data-v-7103b917] { position: absolute; z-index: 2001; bottom: 0; inset-inline-start: calc(50% - 10px); width: 0; height: 0; content: " "; pointer-events: none; border: 10px solid transparent; border-bottom-color: var(--color-main-background); } .header-menu__content[data-v-7103b917] { overflow: auto; width: 350px; max-width: calc(100vw - 16px); min-height: 66px; max-height: calc(100vh - 100px); } .header-menu__content[data-v-7103b917] .empty-content { margin: 12vh 10px; } @media only screen and (max-width: 512px) { .header-menu[data-v-7103b917] { width: 44px; } } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcIconSvgWrapper-arqrq5Bj.css": /*!*********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcIconSvgWrapper-arqrq5Bj.css ***! \*********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-ba0d787a] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .icon-vue[data-v-ba0d787a] { display: flex; justify-content: center; align-items: center; min-width: 44px; min-height: 44px; opacity: 1; } .icon-vue[data-v-ba0d787a] svg { fill: currentColor; width: var(--101514ee); height: var(--101514ee); max-width: var(--101514ee); max-height: var(--101514ee); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcInputConfirmCancel-ks8z8dIn.css": /*!*************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcInputConfirmCancel-ks8z8dIn.css ***! \*************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-dcf0becf] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .app-navigation-input-confirm[data-v-dcf0becf] { flex: 1 0 100%; width: 100%; } .app-navigation-input-confirm form[data-v-dcf0becf] { display: flex; } .app-navigation-input-confirm__input[data-v-dcf0becf] { height: 34px; flex: 1 1 100%; font-size: 100% !important; margin: 5px 5px 5px -8px !important; padding: 7px !important; } .app-navigation-input-confirm__input[data-v-dcf0becf]:active, .app-navigation-input-confirm__input[data-v-dcf0becf]:focus, .app-navigation-input-confirm__input[data-v-dcf0becf]:hover { outline: none; background-color: var(--color-main-background); color: var(--color-main-text); border-color: var(--color-primary-element); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcInputField-L2Lld_iG.css": /*!*****************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcInputField-L2Lld_iG.css ***! \*****************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-b312d183] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .input-field[data-v-b312d183] { position: relative; width: 100%; border-radius: var(--border-radius-large); margin-block-start: 6px; } .input-field__main-wrapper[data-v-b312d183] { height: var(--default-clickable-area); position: relative; } .input-field--disabled[data-v-b312d183] { opacity: .4; filter: saturate(.4); } .input-field__input[data-v-b312d183] { margin: 0; padding-inline: 12px 6px; height: var(--default-clickable-area) !important; width: 100%; font-size: var(--default-font-size); text-overflow: ellipsis; background-color: var(--color-main-background); color: var(--color-main-text); border: 2px solid var(--color-border-maxcontrast); border-radius: var(--border-radius-large); cursor: pointer; -webkit-appearance: textfield !important; -moz-appearance: textfield !important; } .input-field__input--label-outside[data-v-b312d183] { padding-block: 0; } .input-field__input[data-v-b312d183]:active:not([disabled]), .input-field__input[data-v-b312d183]:hover:not([disabled]), .input-field__input[data-v-b312d183]:focus:not([disabled]) { border-color: 2px solid var(--color-main-text) !important; box-shadow: 0 0 0 2px var(--color-main-background) !important; } .input-field__input:focus + .input-field__label[data-v-b312d183], .input-field__input:hover:not(:placeholder-shown) + .input-field__label[data-v-b312d183] { color: var(--color-main-text); } .input-field__input[data-v-b312d183]:not(:focus, .input-field__input--label-outside)::placeholder { opacity: 0; } .input-field__input[data-v-b312d183]:focus { cursor: text; } .input-field__input[data-v-b312d183]:disabled { cursor: default; } .input-field__input[data-v-b312d183]:focus-visible { box-shadow: unset !important; } .input-field__input--leading-icon[data-v-b312d183] { padding-inline-start: var(--default-clickable-area); } .input-field__input--trailing-icon[data-v-b312d183] { padding-inline-end: var(--default-clickable-area); } .input-field__input--success[data-v-b312d183] { border-color: var(--color-success) !important; } .input-field__input--success[data-v-b312d183]:focus-visible { box-shadow: #f8fafc 0 0 0 2px, var(--color-primary-element) 0 0 0 4px, #0000000d 0 1px 2px; } .input-field__input--error[data-v-b312d183] { border-color: var(--color-error) !important; } .input-field__input--error[data-v-b312d183]:focus-visible { box-shadow: #f8fafc 0 0 0 2px, var(--color-primary-element) 0 0 0 4px, #0000000d 0 1px 2px; } .input-field__input--pill[data-v-b312d183] { border-radius: var(--border-radius-pill); } .input-field__label[data-v-b312d183] { position: absolute; margin-inline: 14px 0; max-width: fit-content; inset-block-start: 11px; inset-inline: 0; color: var(--color-text-maxcontrast); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; transition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick), background-color var(--animation-quick) var(--animation-slow); } .input-field__label--leading-icon[data-v-b312d183] { margin-inline-start: var(--default-clickable-area); } .input-field__label--trailing-icon[data-v-b312d183] { margin-inline-end: var(--default-clickable-area); } .input-field__input:focus + .input-field__label[data-v-b312d183], .input-field__input:not(:placeholder-shown) + .input-field__label[data-v-b312d183] { inset-block-start: -10px; line-height: 1.5; font-size: 13px; font-weight: 500; border-radius: var(--default-grid-baseline) var(--default-grid-baseline) 0 0; background-color: var(--color-main-background); padding-inline: 5px; margin-inline-start: 9px; transition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick); } .input-field__input:focus + .input-field__label--leading-icon[data-v-b312d183], .input-field__input:not(:placeholder-shown) + .input-field__label--leading-icon[data-v-b312d183] { margin-inline-start: 41px; } .input-field__icon[data-v-b312d183] { position: absolute; height: var(--default-clickable-area); width: var(--default-clickable-area); display: flex; align-items: center; justify-content: center; opacity: .7; } .input-field__icon--leading[data-v-b312d183] { inset-block-end: 0; inset-inline-start: 2px; } .input-field__icon--trailing[data-v-b312d183] { inset-block-end: 0; inset-inline-end: 2px; } .input-field__trailing-button.button-vue[data-v-b312d183] { position: absolute; top: 0; right: 0; border-radius: var(--border-radius-large); } .input-field__trailing-button--pill.button-vue[data-v-b312d183] { border-radius: var(--border-radius-pill); } .input-field__helper-text-message[data-v-b312d183] { padding-block: 4px; display: flex; align-items: center; } .input-field__helper-text-message__icon[data-v-b312d183] { margin-inline-end: 8px; } .input-field__helper-text-message--error[data-v-b312d183] { color: var(--color-error-text); } .input-field__helper-text-message--success[data-v-b312d183] { color: var(--color-success-text); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcListItem-L8LeGwpe.css": /*!***************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcListItem-L8LeGwpe.css ***! \***************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-b4e3d453] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .list-item__wrapper[data-v-b4e3d453] { display: flex; position: relative; width: 100%; } .list-item__wrapper--active .list-item[data-v-b4e3d453], .list-item__wrapper.active .list-item[data-v-b4e3d453] { background-color: var(--color-primary-element); } .list-item__wrapper--active .list-item[data-v-b4e3d453]:hover, .list-item__wrapper--active .list-item[data-v-b4e3d453]:focus-within, .list-item__wrapper--active .list-item[data-v-b4e3d453]:has(:focus-visible), .list-item__wrapper--active .list-item[data-v-b4e3d453]:has(:active), .list-item__wrapper.active .list-item[data-v-b4e3d453]:hover, .list-item__wrapper.active .list-item[data-v-b4e3d453]:focus-within, .list-item__wrapper.active .list-item[data-v-b4e3d453]:has(:focus-visible), .list-item__wrapper.active .list-item[data-v-b4e3d453]:has(:active) { background-color: var(--color-primary-element-hover); } .list-item__wrapper--active .line-one__name[data-v-b4e3d453], .list-item__wrapper--active .line-one__details[data-v-b4e3d453], .list-item__wrapper.active .line-one__name[data-v-b4e3d453], .list-item__wrapper.active .line-one__details[data-v-b4e3d453], .list-item__wrapper--active .line-two__subname[data-v-b4e3d453], .list-item__wrapper.active .line-two__subname[data-v-b4e3d453] { color: var(--color-primary-element-text) !important; } .list-item[data-v-b4e3d453] { box-sizing: border-box; display: flex; position: relative; flex: 0 0 auto; justify-content: flex-start; padding: 8px 10px; margin: 4px; width: calc(100% - 8px); border-radius: 32px; cursor: pointer; transition: background-color var(--animation-quick) ease-in-out; list-style: none; } .list-item[data-v-b4e3d453]:hover, .list-item[data-v-b4e3d453]:focus-within, .list-item[data-v-b4e3d453]:has(:active), .list-item[data-v-b4e3d453]:has(:focus-visible) { background-color: var(--color-background-hover); } .list-item[data-v-b4e3d453]:has(.list-item__anchor:focus-visible) { outline: 2px solid var(--color-main-text); box-shadow: 0 0 0 4px var(--color-main-background); } .list-item--compact[data-v-b4e3d453] { padding: 4px 10px; } .list-item--compact .list-item__anchor .line-one[data-v-b4e3d453], .list-item--compact .list-item__anchor .line-two[data-v-b4e3d453] { margin-block: -4px; } .list-item__anchor[data-v-b4e3d453] { display: flex; flex: 1 0 auto; align-items: center; height: var(--default-clickable-area); } .list-item__anchor[data-v-b4e3d453]:focus-visible { outline: none; } .list-item-content[data-v-b4e3d453] { display: flex; flex: 1 1 auto; justify-content: space-between; padding-left: 8px; } .list-item-content__main[data-v-b4e3d453] { flex: 1 1 auto; width: 0; margin: auto 0; } .list-item-content__main--oneline[data-v-b4e3d453] { display: flex; } .list-item-content__actions[data-v-b4e3d453] { flex: 0 0 auto; align-self: center; justify-content: center; margin-left: 4px; } .list-item__extra[data-v-b4e3d453] { margin-top: 4px; } .line-one[data-v-b4e3d453] { display: flex; align-items: center; justify-content: space-between; white-space: nowrap; margin: 0 auto 0 0; overflow: hidden; } .line-one__name[data-v-b4e3d453] { overflow: hidden; flex-grow: 1; cursor: pointer; text-overflow: ellipsis; color: var(--color-main-text); font-weight: 700; } .line-one__details[data-v-b4e3d453] { color: var(--color-text-maxcontrast); margin: 0 9px; font-weight: 400; } .line-two[data-v-b4e3d453] { display: flex; align-items: flex-start; justify-content: space-between; white-space: nowrap; } .line-two--bold[data-v-b4e3d453] { font-weight: 700; } .line-two__subname[data-v-b4e3d453] { overflow: hidden; flex-grow: 1; cursor: pointer; white-space: nowrap; text-overflow: ellipsis; color: var(--color-text-maxcontrast); } .line-two__additional_elements[data-v-b4e3d453] { margin: 2px 4px 0; display: flex; align-items: center; } .line-two__indicator[data-v-b4e3d453] { margin: 0 5px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcListItemIcon-PQ2s6ZqX.css": /*!*******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcListItemIcon-PQ2s6ZqX.css ***! \*******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-562c32c6] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .option[data-v-562c32c6] { display: flex; align-items: center; width: 100%; height: var(--height); cursor: inherit; } .option__avatar[data-v-562c32c6] { margin-right: var(--margin); } .option__details[data-v-562c32c6] { display: flex; flex: 1 1; flex-direction: column; justify-content: center; min-width: 0; } .option__lineone[data-v-562c32c6] { color: var(--color-main-text); } .option__linetwo[data-v-562c32c6] { color: var(--color-text-maxcontrast); } .option__lineone[data-v-562c32c6], .option__linetwo[data-v-562c32c6] { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; line-height: 1.1em; } .option__lineone strong[data-v-562c32c6], .option__linetwo strong[data-v-562c32c6] { font-weight: 700; } .option__icon[data-v-562c32c6] { width: 44px; height: 44px; color: var(--color-text-maxcontrast); } .option__icon.icon[data-v-562c32c6] { flex: 0 0 44px; opacity: .7; background-position: center; background-size: 16px; } .option__details[data-v-562c32c6], .option__lineone[data-v-562c32c6], .option__linetwo[data-v-562c32c6], .option__icon[data-v-562c32c6] { cursor: inherit; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcLoadingIcon-hZn7TJM8.css": /*!******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcLoadingIcon-hZn7TJM8.css ***! \******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-626664cd] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .loading-icon svg[data-v-626664cd] { animation: rotate var(--animation-duration, .8s) linear infinite; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcMentionBubble-YYl1ib_F.css": /*!********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcMentionBubble-YYl1ib_F.css ***! \********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-9c74f2e0] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .mention-bubble--primary .mention-bubble__content[data-v-9c74f2e0] { color: var(--color-primary-element-text); background-color: var(--color-primary-element); } .mention-bubble__wrapper[data-v-9c74f2e0] { max-width: 150px; height: 18px; vertical-align: text-bottom; display: inline-flex; align-items: center; } .mention-bubble__content[data-v-9c74f2e0] { display: inline-flex; overflow: hidden; align-items: center; max-width: 100%; height: 20px; -webkit-user-select: none; user-select: none; padding-right: 6px; padding-left: 2px; border-radius: 10px; background-color: var(--color-background-dark); } .mention-bubble__icon[data-v-9c74f2e0] { position: relative; width: 16px; height: 16px; border-radius: 8px; background-color: var(--color-background-darker); background-repeat: no-repeat; background-position: center; background-size: 12px; } .mention-bubble__icon--with-avatar[data-v-9c74f2e0] { color: inherit; background-size: cover; } .mention-bubble__title[data-v-9c74f2e0] { overflow: hidden; margin-left: 2px; white-space: nowrap; text-overflow: ellipsis; } .mention-bubble__title[data-v-9c74f2e0]:before { content: attr(title); } .mention-bubble__select[data-v-9c74f2e0] { position: absolute; z-index: -1; left: -1000px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcModal-sIK5sUoC.css": /*!************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcModal-sIK5sUoC.css ***! \************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-1ea9d450] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .modal-mask[data-v-1ea9d450] { position: fixed; z-index: 9998; top: 0; left: 0; display: block; width: 100%; height: 100%; background-color: #00000080; } .modal-mask--dark[data-v-1ea9d450] { background-color: #000000eb; } .modal-header[data-v-1ea9d450] { position: absolute; z-index: 10001; top: 0; right: 0; left: 0; display: flex !important; align-items: center; justify-content: center; width: 100%; height: 50px; overflow: hidden; transition: opacity .25s, visibility .25s; } .modal-header .modal-name[data-v-1ea9d450] { overflow-x: hidden; box-sizing: border-box; width: 100%; padding: 0 132px 0 12px; transition: padding ease .1s; white-space: nowrap; text-overflow: ellipsis; color: #fff; font-size: 14px; margin-bottom: 0; } @media only screen and (min-width: 1024px) { .modal-header .modal-name[data-v-1ea9d450] { padding-left: 132px; text-align: center; } } .modal-header .icons-menu[data-v-1ea9d450] { position: absolute; right: 0; display: flex; align-items: center; justify-content: flex-end; } .modal-header .icons-menu .header-close[data-v-1ea9d450] { display: flex; align-items: center; justify-content: center; box-sizing: border-box; margin: 3px; padding: 0; } .modal-header .icons-menu .play-pause-icons[data-v-1ea9d450] { position: relative; width: 50px; height: 50px; margin: 0; padding: 0; cursor: pointer; border: none; background-color: transparent; } .modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__play[data-v-1ea9d450], .modal-header .icons-menu .play-pause-icons:hover .play-pause-icons__pause[data-v-1ea9d450], .modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__play[data-v-1ea9d450], .modal-header .icons-menu .play-pause-icons:focus .play-pause-icons__pause[data-v-1ea9d450] { opacity: 1; border-radius: 22px; background-color: #7f7f7f40; } .modal-header .icons-menu .play-pause-icons__play[data-v-1ea9d450], .modal-header .icons-menu .play-pause-icons__pause[data-v-1ea9d450] { box-sizing: border-box; width: 44px; height: 44px; margin: 3px; cursor: pointer; opacity: .7; } .modal-header .icons-menu .header-actions[data-v-1ea9d450] { color: #fff; } .modal-header .icons-menu[data-v-1ea9d450] .action-item { margin: 3px; } .modal-header .icons-menu[data-v-1ea9d450] .action-item--single { box-sizing: border-box; width: 44px; height: 44px; cursor: pointer; background-position: center; background-size: 22px; } .modal-header .icons-menu[data-v-1ea9d450] button { color: #fff; } .modal-header .icons-menu[data-v-1ea9d450] .action-item__menutoggle { padding: 0; } .modal-header .icons-menu[data-v-1ea9d450] .action-item__menutoggle span, .modal-header .icons-menu[data-v-1ea9d450] .action-item__menutoggle svg { width: var(--icon-size); height: var(--icon-size); } .modal-wrapper[data-v-1ea9d450] { display: flex; align-items: center; justify-content: center; box-sizing: border-box; width: 100%; height: 100%; } .modal-wrapper .prev[data-v-1ea9d450], .modal-wrapper .next[data-v-1ea9d450] { z-index: 10000; height: 35vh; min-height: 300px; position: absolute; transition: opacity .25s; color: #fff; } .modal-wrapper .prev[data-v-1ea9d450]:focus-visible, .modal-wrapper .next[data-v-1ea9d450]:focus-visible { box-shadow: 0 0 0 2px var(--color-primary-element-text); background-color: var(--color-box-shadow); } .modal-wrapper .prev[data-v-1ea9d450] { left: 2px; } .modal-wrapper .next[data-v-1ea9d450] { right: 2px; } .modal-wrapper .modal-container[data-v-1ea9d450] { position: relative; display: flex; padding: 0; transition: transform .3s ease; border-radius: var(--border-radius-large); background-color: var(--color-main-background); color: var(--color-main-text); box-shadow: 0 0 40px #0003; } .modal-wrapper .modal-container__close[data-v-1ea9d450] { z-index: 1; position: absolute; top: 4px; right: 4px; } .modal-wrapper .modal-container__content[data-v-1ea9d450] { width: 100%; min-height: 52px; overflow: auto; } .modal-wrapper--small > .modal-container[data-v-1ea9d450] { width: 400px; max-width: 90%; max-height: min(90%, 100% - 100px); } .modal-wrapper--normal > .modal-container[data-v-1ea9d450] { max-width: 90%; width: 600px; max-height: min(90%, 100% - 100px); } .modal-wrapper--large > .modal-container[data-v-1ea9d450] { max-width: 90%; width: 900px; max-height: min(90%, 100% - 100px); } .modal-wrapper--full > .modal-container[data-v-1ea9d450] { width: 100%; height: calc(100% - var(--header-height)); position: absolute; top: 50px; border-radius: 0; } @media only screen and ((max-width: 512px) or (max-height: 400px)) { .modal-wrapper .modal-container[data-v-1ea9d450] { max-width: initial; width: 100%; max-height: initial; height: calc(100% - var(--header-height)); position: absolute; top: 50px; border-radius: 0; } } .fade-enter-active[data-v-1ea9d450], .fade-leave-active[data-v-1ea9d450] { transition: opacity .25s; } .fade-enter[data-v-1ea9d450], .fade-leave-to[data-v-1ea9d450] { opacity: 0; } .fade-visibility-enter[data-v-1ea9d450], .fade-visibility-leave-to[data-v-1ea9d450] { visibility: hidden; opacity: 0; } .modal-in-enter-active[data-v-1ea9d450], .modal-in-leave-active[data-v-1ea9d450], .modal-out-enter-active[data-v-1ea9d450], .modal-out-leave-active[data-v-1ea9d450] { transition: opacity .25s; } .modal-in-enter[data-v-1ea9d450], .modal-in-leave-to[data-v-1ea9d450], .modal-out-enter[data-v-1ea9d450], .modal-out-leave-to[data-v-1ea9d450] { opacity: 0; } .modal-in-enter .modal-container[data-v-1ea9d450], .modal-in-leave-to .modal-container[data-v-1ea9d450] { transform: scale(.9); } .modal-out-enter .modal-container[data-v-1ea9d450], .modal-out-leave-to .modal-container[data-v-1ea9d450] { transform: scale(1.1); } .modal-mask .play-pause-icons .progress-ring[data-v-1ea9d450] { position: absolute; top: 0; left: 0; transform: rotate(-90deg); } .modal-mask .play-pause-icons .progress-ring .progress-ring__circle[data-v-1ea9d450] { transition: .1s stroke-dashoffset; transform-origin: 50% 50%; animation: progressring-1ea9d450 linear var(--slideshow-duration) infinite; stroke-linecap: round; stroke-dashoffset: 94.2477796077; stroke-dasharray: 94.2477796077; } .modal-mask .play-pause-icons--paused .icon-pause[data-v-1ea9d450] { animation: breath-1ea9d450 2s cubic-bezier(.4, 0, .2, 1) infinite; } .modal-mask .play-pause-icons--paused .progress-ring__circle[data-v-1ea9d450] { animation-play-state: paused !important; } @keyframes progressring-1ea9d450 { 0% { stroke-dashoffset: 94.2477796077; } to { stroke-dashoffset: 0; } } @keyframes breath-1ea9d450 { 0% { opacity: 1; } 50% { opacity: 0; } to { opacity: 1; } } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcNoteCard-f0NZpwjL.css": /*!***************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcNoteCard-f0NZpwjL.css ***! \***************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-722d543a] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .notecard[data-v-722d543a] { color: var(--color-main-text) !important; background-color: var(--note-background) !important; border-inline-start: 4px solid var(--note-theme); border-radius: var(--border-radius); margin: 1rem 0; padding: 1rem; display: flex; flex-direction: row; gap: 1rem; } .notecard__icon--heading[data-v-722d543a] { margin-bottom: auto; margin-top: .3rem; } .notecard--success[data-v-722d543a] { --note-background: rgba(var(--color-success-rgb), .1); --note-theme: var(--color-success); } .notecard--info[data-v-722d543a] { --note-background: rgba(var(--color-info-rgb), .1); --note-theme: var(--color-info); } .notecard--error[data-v-722d543a] { --note-background: rgba(var(--color-error-rgb), .1); --note-theme: var(--color-error); } .notecard--warning[data-v-722d543a] { --note-background: rgba(var(--color-warning-rgb), .1); --note-theme: var(--color-warning); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcPopover-MK4GcuPY.css": /*!**************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcPopover-MK4GcuPY.css ***! \**************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .resize-observer { position: absolute; top: 0; left: 0; z-index: -1; width: 100%; height: 100%; border: none; background-color: transparent; pointer-events: none; display: block; overflow: hidden; opacity: 0; } .resize-observer object { display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1; } .v-popper--theme-dropdown.v-popper__popper { z-index: 100000; top: 0; left: 0; display: block !important; filter: drop-shadow(0 1px 10px var(--color-box-shadow)); } .v-popper--theme-dropdown.v-popper__popper .v-popper__inner { padding: 0; color: var(--color-main-text); border-radius: var(--border-radius-large); overflow: hidden; background: var(--color-main-background); } .v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container { position: absolute; z-index: 1; width: 0; height: 0; border-style: solid; border-color: transparent; border-width: 10px; } .v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container { bottom: -10px; border-bottom-width: 0; border-top-color: var(--color-main-background); } .v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container { top: -10px; border-top-width: 0; border-bottom-color: var(--color-main-background); } .v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container { left: -10px; border-left-width: 0; border-right-color: var(--color-main-background); } .v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container { right: -10px; border-right-width: 0; border-left-color: var(--color-main-background); } .v-popper--theme-dropdown.v-popper__popper[aria-hidden=true] { visibility: hidden; transition: opacity var(--animation-quick), visibility var(--animation-quick); opacity: 0; } .v-popper--theme-dropdown.v-popper__popper[aria-hidden=false] { visibility: visible; transition: opacity var(--animation-quick); opacity: 1; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcProgressBar-w4-G5gQR.css": /*!******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcProgressBar-w4-G5gQR.css ***! \******************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-bfe47e7c] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .progress-bar[data-v-bfe47e7c] { display: block; height: var(--progress-bar-height); --progress-bar-color: var(--0f3d9b00); } .progress-bar--linear[data-v-bfe47e7c] { width: 100%; overflow: hidden; border: 0; padding: 0; background: var(--color-background-dark); border-radius: calc(var(--progress-bar-height) / 2); } .progress-bar--linear[data-v-bfe47e7c]::-webkit-progress-bar { height: var(--progress-bar-height); background-color: transparent; } .progress-bar--linear[data-v-bfe47e7c]::-webkit-progress-value { background: var(--progress-bar-color, var(--gradient-primary-background)); border-radius: calc(var(--progress-bar-height) / 2); } .progress-bar--linear[data-v-bfe47e7c]::-moz-progress-bar { background: var(--progress-bar-color, var(--gradient-primary-background)); border-radius: calc(var(--progress-bar-height) / 2); } .progress-bar--circular[data-v-bfe47e7c] { width: var(--progress-bar-height); color: var(--progress-bar-color, var(--color-primary-element)); } .progress-bar--error[data-v-bfe47e7c] { color: var(--color-error) !important; } .progress-bar--error[data-v-bfe47e7c]::-moz-progress-bar { background: var(--color-error) !important; } .progress-bar--error[data-v-bfe47e7c]::-webkit-progress-value { background: var(--color-error) !important; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRelatedResourcesPanel-m3uf_nvH.css": /*!****************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRelatedResourcesPanel-m3uf_nvH.css ***! \****************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-1a960bef] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .resource[data-v-1a960bef] { display: flex; align-items: center; height: 44px; } .resource__button[data-v-1a960bef] { width: 100% !important; justify-content: flex-start !important; padding: 0 !important; } .resource__button[data-v-1a960bef] .button-vue__wrapper { justify-content: flex-start !important; } .resource__button[data-v-1a960bef] .button-vue__wrapper .button-vue__text { font-weight: 400 !important; margin-left: 2px !important; } .resource__icon[data-v-1a960bef] { width: 32px; height: 32px; background-color: var(--color-text-maxcontrast); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .resource__icon img[data-v-1a960bef] { width: 16px; height: 16px; filter: var(--background-invert-if-dark); } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-dc5c8227] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .related-resources__header[data-v-dc5c8227] { margin: 0 0 10px 46px; } .related-resources__header h5[data-v-dc5c8227] { font-weight: 700; } .related-resources__header p[data-v-dc5c8227] { color: var(--color-text-maxcontrast); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRichContenteditable-CuR1YKTU.css": /*!**************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRichContenteditable-CuR1YKTU.css ***! \**************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-9cff39ed] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .autocomplete-result[data-v-9cff39ed] { display: flex; height: var(--default-clickable-area); padding: var(--default-grid-baseline) 0; } .autocomplete-result__icon[data-v-9cff39ed] { position: relative; flex: 0 0 var(--default-clickable-area); width: var(--default-clickable-area); min-width: var(--default-clickable-area); height: var(--default-clickable-area); border-radius: var(--default-clickable-area); background-color: var(--color-background-darker); background-repeat: no-repeat; background-position: center; background-size: contain; } .autocomplete-result__icon--with-avatar[data-v-9cff39ed] { color: inherit; background-size: cover; } .autocomplete-result__status[data-v-9cff39ed] { box-sizing: border-box; position: absolute; right: -4px; bottom: -4px; min-width: 18px; min-height: 18px; width: 18px; height: 18px; border: 2px solid var(--color-main-background); border-radius: 50%; background-color: var(--color-main-background); font-size: var(--default-font-size); line-height: 15px; background-repeat: no-repeat; background-size: 16px; background-position: center; } .autocomplete-result__status--icon[data-v-9cff39ed] { border: none; background-color: transparent; } .autocomplete-result__content[data-v-9cff39ed] { display: flex; flex: 1 1 100%; flex-direction: column; justify-content: center; min-width: 0; padding-left: calc(var(--default-grid-baseline) * 2); } .autocomplete-result__title[data-v-9cff39ed], .autocomplete-result__subline[data-v-9cff39ed] { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .autocomplete-result__subline[data-v-9cff39ed] { color: var(--color-text-maxcontrast); } .material-design-icon[data-v-b659b434] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .rich-contenteditable[data-v-b659b434] { position: relative; width: auto; } .rich-contenteditable__label[data-v-b659b434] { position: absolute; margin-inline: 14px 0; max-width: fit-content; inset-block-start: 11px; inset-inline: 0; color: var(--color-text-maxcontrast); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; transition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick), background-color var(--animation-quick) var(--animation-slow); } .rich-contenteditable__input:focus + .rich-contenteditable__label[data-v-b659b434], .rich-contenteditable__input:not(.rich-contenteditable__input--empty) + .rich-contenteditable__label[data-v-b659b434] { inset-block-start: -10px; line-height: 1.5; font-size: 13px; font-weight: 500; border-radius: var(--default-grid-baseline) var(--default-grid-baseline) 0 0; background-color: var(--color-main-background); padding-inline: 5px; margin-inline-start: 9px; transition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick); } .rich-contenteditable__input[data-v-b659b434] { overflow-y: auto; width: auto; margin: 0; padding: 8px; cursor: text; white-space: pre-wrap; word-break: break-word; color: var(--color-main-text); border: 2px solid var(--color-border-maxcontrast); border-radius: var(--border-radius-large); outline: none; background-color: var(--color-main-background); font-family: var(--font-face); font-size: inherit; min-height: 44px; max-height: 242px; } .rich-contenteditable__input--has-label[data-v-b659b434] { margin-top: 10px; } .rich-contenteditable__input--empty[data-v-b659b434]:focus:before, .rich-contenteditable__input--empty[data-v-b659b434]:not(.rich-contenteditable__input--has-label):before { content: attr(aria-placeholder); color: var(--color-text-maxcontrast); position: absolute; } .rich-contenteditable__input[contenteditable=false][data-v-b659b434]:not(.rich-contenteditable__input--disabled) { cursor: default; background-color: transparent; color: var(--color-main-text); border-color: transparent; opacity: 1; border-radius: 0; } .rich-contenteditable__input--multiline[data-v-b659b434] { min-height: 132px; max-height: none; } .rich-contenteditable__input--disabled[data-v-b659b434] { opacity: .5; color: var(--color-text-maxcontrast); border: 2px solid var(--color-background-darker); border-radius: var(--border-radius); background-color: var(--color-background-dark); } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ ._material-design-icon_pq0s6_26 { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } ._tribute-container_pq0s6_34 { z-index: 9000; overflow: auto; position: absolute; left: -10000px; margin: var(--default-grid-baseline) 0; padding: var(--default-grid-baseline); color: var(--color-text-maxcontrast); border-radius: var(--border-radius); background: var(--color-main-background); box-shadow: 0 1px 5px var(--color-box-shadow); } ._tribute-container_pq0s6_34 ._tribute-container__item_pq0s6_46 { color: var(--color-text-maxcontrast); border-radius: var(--border-radius); padding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline)); margin-bottom: var(--default-grid-baseline); cursor: pointer; } ._tribute-container_pq0s6_34 ._tribute-container__item_pq0s6_46:last-child { margin-bottom: 0; } ._tribute-container_pq0s6_34 ._tribute-container__item_pq0s6_46.highlight { color: var(--color-main-text); background: var(--color-background-hover); } ._tribute-container_pq0s6_34 ._tribute-container__item_pq0s6_46.highlight, ._tribute-container_pq0s6_34 ._tribute-container__item_pq0s6_46.highlight * { cursor: pointer; } ._tribute-container_pq0s6_34._tribute-container--focus-visible_pq0s6_63 .highlight._tribute-container__item_pq0s6_46 { outline: 2px solid var(--color-main-text) !important; } ._tribute-container-autocomplete_pq0s6_67 { min-width: 250px; max-width: 300px; max-height: calc((var(--default-clickable-area) + 5 * var(--default-grid-baseline)) * 4.5 - 1.5 * var(--default-grid-baseline)); } ._tribute-container-emoji_pq0s6_73, ._tribute-container-link_pq0s6_74 { min-width: 200px; max-width: 200px; max-height: calc((24px + 3 * var(--default-grid-baseline)) * 5.5 - 1.5 * var(--default-grid-baseline)); } ._tribute-container-emoji_pq0s6_73 ._tribute-item_pq0s6_79, ._tribute-container-link_pq0s6_74 ._tribute-item_pq0s6_79 { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } ._tribute-container-emoji_pq0s6_73 ._tribute-item__emoji_pq0s6_85, ._tribute-container-link_pq0s6_74 ._tribute-item__emoji_pq0s6_85 { padding-right: calc(var(--default-grid-baseline) * 2); } ._tribute-container-link_pq0s6_74 { min-width: 200px; max-width: 300px; } ._tribute-container-link_pq0s6_74 ._tribute-item_pq0s6_79 { display: flex; align-items: center; } ._tribute-container-link_pq0s6_74 ._tribute-item__title_pq0s6_98 { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } ._tribute-container-link_pq0s6_74 ._tribute-item__icon_pq0s6_103 { margin: auto 0; width: 20px; height: 20px; object-fit: contain; padding-right: calc(var(--default-grid-baseline) * 2); filter: var(--background-invert-if-dark); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRichText-Pw6kTpnR.css": /*!***************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRichText-Pw6kTpnR.css ***! \***************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-ce89eeda] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .widgets--list.icon-loading[data-v-ce89eeda] { min-height: 44px; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-0f33c076] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .rich-text--wrapper[data-v-0f33c076] { word-break: break-word; line-height: 1.5; } .rich-text--wrapper .rich-text--fallback[data-v-0f33c076], .rich-text--wrapper .rich-text-component[data-v-0f33c076] { display: inline; } .rich-text--wrapper .rich-text--external-link[data-v-0f33c076] { text-decoration: underline; } .rich-text--wrapper .rich-text--external-link[data-v-0f33c076]:after { content: " ↗"; } .rich-text--wrapper .rich-text--ordered-list .rich-text--list-item[data-v-0f33c076] { list-style: decimal; } .rich-text--wrapper .rich-text--un-ordered-list .rich-text--list-item[data-v-0f33c076] { list-style: initial; } .rich-text--wrapper .rich-text--list-item[data-v-0f33c076] { white-space: initial; color: var(--color-text-light); padding: initial; margin-left: 20px; } .rich-text--wrapper .rich-text--list-item.task-list-item[data-v-0f33c076] { list-style: none; white-space: initial; color: var(--color-text-light); } .rich-text--wrapper .rich-text--list-item.task-list-item input[data-v-0f33c076] { min-height: initial; } .rich-text--wrapper .rich-text--strong[data-v-0f33c076] { white-space: initial; font-weight: 700; color: var(--color-text-light); } .rich-text--wrapper .rich-text--italic[data-v-0f33c076] { white-space: initial; font-style: italic; color: var(--color-text-light); } .rich-text--wrapper .rich-text--heading[data-v-0f33c076] { white-space: initial; font-size: initial; color: var(--color-text-light); margin-bottom: 5px; margin-top: 5px; font-weight: 700; } .rich-text--wrapper .rich-text--heading.rich-text--heading-1[data-v-0f33c076] { font-size: 20px; } .rich-text--wrapper .rich-text--heading.rich-text--heading-2[data-v-0f33c076] { font-size: 19px; } .rich-text--wrapper .rich-text--heading.rich-text--heading-3[data-v-0f33c076] { font-size: 18px; } .rich-text--wrapper .rich-text--heading.rich-text--heading-4[data-v-0f33c076] { font-size: 17px; } .rich-text--wrapper .rich-text--heading.rich-text--heading-5[data-v-0f33c076] { font-size: 16px; } .rich-text--wrapper .rich-text--heading.rich-text--heading-6[data-v-0f33c076] { font-size: 15px; } .rich-text--wrapper .rich-text--hr[data-v-0f33c076] { border-top: 1px solid var(--color-border-dark); border-bottom: 0; } .rich-text--wrapper .rich-text--pre[data-v-0f33c076] { border: 1px solid var(--color-border-dark); background-color: var(--color-background-dark); padding: 5px; } .rich-text--wrapper .rich-text--code[data-v-0f33c076] { background-color: var(--color-background-dark); } .rich-text--wrapper .rich-text--blockquote[data-v-0f33c076] { border-left: 3px solid var(--color-border-dark); padding-left: 5px; } .rich-text--wrapper .rich-text--table[data-v-0f33c076] { border-collapse: collapse; } .rich-text--wrapper .rich-text--table thead tr th[data-v-0f33c076] { border: 1px solid var(--color-border-dark); font-weight: 700; padding: 6px 13px; } .rich-text--wrapper .rich-text--table tbody tr td[data-v-0f33c076] { border: 1px solid var(--color-border-dark); padding: 6px 13px; } .rich-text--wrapper .rich-text--table tbody tr[data-v-0f33c076]:nth-child(2n) { background-color: var(--color-background-dark); } .rich-text--wrapper-markdown div > *[data-v-0f33c076]:first-child, .rich-text--wrapper-markdown blockquote > *[data-v-0f33c076]:first-child { margin-top: 0 !important; } .rich-text--wrapper-markdown div > *[data-v-0f33c076]:last-child, .rich-text--wrapper-markdown blockquote > *[data-v-0f33c076]:last-child { margin-bottom: 0 !important; } .rich-text--wrapper-markdown h1[data-v-0f33c076], .rich-text--wrapper-markdown h2[data-v-0f33c076], .rich-text--wrapper-markdown h3[data-v-0f33c076], .rich-text--wrapper-markdown h4[data-v-0f33c076], .rich-text--wrapper-markdown h5[data-v-0f33c076], .rich-text--wrapper-markdown h6[data-v-0f33c076], .rich-text--wrapper-markdown p[data-v-0f33c076], .rich-text--wrapper-markdown ul[data-v-0f33c076], .rich-text--wrapper-markdown ol[data-v-0f33c076], .rich-text--wrapper-markdown blockquote[data-v-0f33c076], .rich-text--wrapper-markdown pre[data-v-0f33c076] { margin-top: 0; margin-bottom: 1em; } .rich-text--wrapper-markdown h1[data-v-0f33c076], .rich-text--wrapper-markdown h2[data-v-0f33c076], .rich-text--wrapper-markdown h3[data-v-0f33c076], .rich-text--wrapper-markdown h4[data-v-0f33c076], .rich-text--wrapper-markdown h5[data-v-0f33c076], .rich-text--wrapper-markdown h6[data-v-0f33c076] { font-weight: 700; } .rich-text--wrapper-markdown h1[data-v-0f33c076] { font-size: 30px; } .rich-text--wrapper-markdown ul[data-v-0f33c076], .rich-text--wrapper-markdown ol[data-v-0f33c076] { padding-left: 15px; } .rich-text--wrapper-markdown ul[data-v-0f33c076] { list-style-type: disc; } .rich-text--wrapper-markdown ul.contains-task-list[data-v-0f33c076] { list-style-type: none; padding: 0; } .rich-text--wrapper-markdown table[data-v-0f33c076] { border-collapse: collapse; border: 2px solid var(--color-border-maxcontrast); } .rich-text--wrapper-markdown table th[data-v-0f33c076], .rich-text--wrapper-markdown table td[data-v-0f33c076] { padding: var(--default-grid-baseline); border: 1px solid var(--color-border-maxcontrast); } .rich-text--wrapper-markdown table th[data-v-0f33c076]:first-child, .rich-text--wrapper-markdown table td[data-v-0f33c076]:first-child { border-left: 0; } .rich-text--wrapper-markdown table th[data-v-0f33c076]:last-child, .rich-text--wrapper-markdown table td[data-v-0f33c076]:last-child { border-right: 0; } .rich-text--wrapper-markdown table tr:first-child th[data-v-0f33c076] { border-top: 0; } .rich-text--wrapper-markdown table tr:last-child td[data-v-0f33c076] { border-bottom: 0; } .rich-text--wrapper-markdown blockquote[data-v-0f33c076] { padding-left: 13px; border-left: 2px solid var(--color-border-dark); color: var(--color-text-lighter); } a[data-v-0f33c076]:not(.rich-text--component) { text-decoration: underline; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSelect-GsLmwj9w.css": /*!*************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSelect-GsLmwj9w.css ***! \*************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } body { --vs-search-input-color: var(--color-main-text); --vs-search-input-bg: var(--color-main-background); --vs-search-input-placeholder-color: var(--color-text-maxcontrast); --vs-font-size: var(--default-font-size); --vs-line-height: var(--default-line-height); --vs-state-disabled-bg: var(--color-background-hover); --vs-state-disabled-color: var(--color-text-maxcontrast); --vs-state-disabled-controls-color: var(--color-text-maxcontrast); --vs-state-disabled-cursor: not-allowed; --vs-disabled-bg: var(--color-background-hover); --vs-disabled-color: var(--color-text-maxcontrast); --vs-disabled-cursor: not-allowed; --vs-border-color: var(--color-border-maxcontrast); --vs-border-width: 2px; --vs-border-style: solid; --vs-border-radius: var(--border-radius-large); --vs-controls-color: var(--color-main-text); --vs-selected-bg: var(--color-background-hover); --vs-selected-color: var(--color-main-text); --vs-selected-border-color: var(--vs-border-color); --vs-selected-border-style: var(--vs-border-style); --vs-selected-border-width: var(--vs-border-width); --vs-dropdown-bg: var(--color-main-background); --vs-dropdown-color: var(--color-main-text); --vs-dropdown-z-index: 9999; --vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow); --vs-dropdown-option-padding: 8px 20px; --vs-dropdown-option--active-bg: var(--color-background-hover); --vs-dropdown-option--active-color: var(--color-main-text); --vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color); --vs-dropdown-option--deselect-bg: var(--color-error); --vs-dropdown-option--deselect-color: #fff; --vs-transition-duration: 0ms; --vs-actions-padding: 0 8px 0 4px; } .v-select.select { min-height: 44px; min-width: 260px; margin: 0; } .v-select.select .select__label { display: block; margin-bottom: 2px; } .v-select.select .vs__selected { height: 32px; padding: 0 8px 0 12px; border-radius: 18px !important; background: var(--color-primary-element-light); border: none; } .v-select.select .vs__search, .v-select.select .vs__search:focus { margin: 2px 0 0; } .v-select.select .vs__dropdown-toggle { padding: 0; } .v-select.select .vs__clear { margin-right: 2px; } .v-select.select.vs--open .vs__dropdown-toggle { outline: 2px solid var(--color-main-background); border-color: var(--color-main-text); border-bottom-color: transparent; } .v-select.select:not(.vs--disabled, .vs--open) .vs__dropdown-toggle:hover { outline: 2px solid var(--color-main-background); border-color: var(--color-main-text); } .v-select.select.vs--disabled .vs__search, .v-select.select.vs--disabled .vs__selected { color: var(--color-text-maxcontrast); } .v-select.select.vs--disabled .vs__clear, .v-select.select.vs--disabled .vs__deselect { display: none; } .v-select.select--no-wrap .vs__selected-options { flex-wrap: nowrap; overflow: auto; min-width: unset; } .v-select.select--no-wrap .vs__selected-options .vs__selected { min-width: unset; } .v-select.select--drop-up.vs--open .vs__dropdown-toggle { border-radius: 0 0 var(--vs-border-radius) var(--vs-border-radius); border-top-color: transparent; border-bottom-color: var(--color-main-text); } .v-select.select .vs__selected-options { min-height: 40px; } .v-select.select .vs__selected-options .vs__selected ~ .vs__search[readonly] { position: absolute; } .v-select.select.vs--single.vs--loading .vs__selected, .v-select.select.vs--single.vs--open .vs__selected { max-width: 100%; opacity: 1; color: var(--color-text-maxcontrast); } .v-select.select.vs--single .vs__selected-options { flex-wrap: nowrap; } .v-select.select.vs--single .vs__selected { background: unset !important; } .vs__dropdown-menu { border-color: var(--color-main-text) !important; outline: none !important; box-shadow: -2px 0 0 var(--color-main-background), 0 2px 0 var(--color-main-background), 2px 0 0 var(--color-main-background), !important; padding: 4px !important; } .vs__dropdown-menu--floating { width: max-content; position: absolute; top: 0; left: 0; } .vs__dropdown-menu--floating-placement-top { border-radius: var(--vs-border-radius) var(--vs-border-radius) 0 0 !important; border-top-style: var(--vs-border-style) !important; border-bottom-style: none !important; box-shadow: 0 -2px 0 var(--color-main-background), -2px 0 0 var(--color-main-background), 2px 0 0 var(--color-main-background), !important; } .vs__dropdown-menu .vs__dropdown-option { border-radius: 6px !important; } .vs__dropdown-menu .vs__no-options { color: var(--color-text-lighter) !important; } .user-select .vs__selected { padding: 0 2px !important; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsInputText-MPi6a3Yy.css": /*!************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsInputText-MPi6a3Yy.css ***! \************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-5b140fb6] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .input-wrapper[data-v-5b140fb6] { display: flex; align-items: center; flex-wrap: wrap; width: 100%; max-width: 400px; } .input-wrapper .action-input__label[data-v-5b140fb6] { margin-right: 12px; } .input-wrapper[data-v-5b140fb6]:disabled { cursor: default; } .input-wrapper .hint[data-v-5b140fb6] { color: var(--color-text-maxcontrast); margin-left: 8px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsSection-PEWm0eeL.css": /*!**********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsSection-PEWm0eeL.css ***! \**********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-f51cf2d3] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .settings-section[data-v-f51cf2d3] { display: block; margin-bottom: auto; padding: 30px; } .settings-section[data-v-f51cf2d3]:not(:last-child) { border-bottom: 1px solid var(--color-border); } .settings-section--limit-width > *[data-v-f51cf2d3] { max-width: 900px; } .settings-section__name[data-v-f51cf2d3] { display: inline-flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; max-width: 900px; } .settings-section__info[data-v-f51cf2d3] { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: -14px -14px -14px 0; color: var(--color-text-maxcontrast); } .settings-section__info[data-v-f51cf2d3]:hover, .settings-section__info[data-v-f51cf2d3]:focus, .settings-section__info[data-v-f51cf2d3]:active { color: var(--color-main-text); } .settings-section__desc[data-v-f51cf2d3] { margin-top: -.2em; margin-bottom: 1em; color: var(--color-text-maxcontrast); max-width: 900px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsSelectGroup-_Jpb8yE3.css": /*!**************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsSelectGroup-_Jpb8yE3.css ***! \**************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-6d99b3e0] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .select-group-error[data-v-6d99b3e0] { color: var(--color-error); font-size: 13px; padding-inline-start: var(--border-radius-large); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcTextArea-4rVwq6GK.css": /*!***************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcTextArea-4rVwq6GK.css ***! \***************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-219a1ffb] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .textarea[data-v-219a1ffb] { position: relative; width: 100%; border-radius: var(--border-radius-large); margin-block-start: 6px; resize: vertical; } .textarea__main-wrapper[data-v-219a1ffb] { position: relative; } .textarea--disabled[data-v-219a1ffb] { opacity: .7; filter: saturate(.7); } .textarea__input[data-v-219a1ffb] { margin: 0; padding-inline: 10px 6px; width: 100%; font-size: var(--default-font-size); text-overflow: ellipsis; background-color: var(--color-main-background); color: var(--color-main-text); border: 2px solid var(--color-border-maxcontrast); border-radius: var(--border-radius-large); cursor: pointer; } .textarea__input[data-v-219a1ffb]:active:not([disabled]), .textarea__input[data-v-219a1ffb]:hover:not([disabled]), .textarea__input[data-v-219a1ffb]:focus:not([disabled]) { border-color: 2px solid var(--color-main-text) !important; box-shadow: 0 0 0 2px var(--color-main-background) !important; } .textarea__input[data-v-219a1ffb]:not(:focus, .textarea__input--label-outside)::placeholder { opacity: 0; } .textarea__input[data-v-219a1ffb]:focus { cursor: text; } .textarea__input[data-v-219a1ffb]:disabled { cursor: default; } .textarea__input[data-v-219a1ffb]:focus-visible { box-shadow: unset !important; } .textarea__input--success[data-v-219a1ffb] { border-color: var(--color-success) !important; } .textarea__input--success[data-v-219a1ffb]:focus-visible { box-shadow: #f8fafc 0 0 0 2px, var(--color-primary-element) 0 0 0 4px, #0000000d 0 1px 2px; } .textarea__input--error[data-v-219a1ffb] { border-color: var(--color-error) !important; } .textarea__input--error[data-v-219a1ffb]:focus-visible { box-shadow: #f8fafc 0 0 0 2px, var(--color-primary-element) 0 0 0 4px, #0000000d 0 1px 2px; } .textarea__label[data-v-219a1ffb] { position: absolute; margin-inline: 12px 0; max-width: fit-content; inset-block-start: 11px; inset-inline: 0; color: var(--color-text-maxcontrast); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; transition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick), background-color var(--animation-quick) var(--animation-slow); } .textarea__input:focus + .textarea__label[data-v-219a1ffb], .textarea__input:not(:placeholder-shown) + .textarea__label[data-v-219a1ffb] { inset-block-start: -10px; line-height: 1.5; font-size: 13px; font-weight: 500; color: var(--color-main-text); background-color: var(--color-main-background); padding-inline: 4px; margin-inline-start: 8px; transition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick); } .textarea__helper-text-message[data-v-219a1ffb] { padding-block: 4px; display: flex; align-items: center; } .textarea__helper-text-message__icon[data-v-219a1ffb] { margin-inline-end: 8px; } .textarea__helper-text-message--error[data-v-219a1ffb] { color: var(--color-error-text); } .textarea__helper-text-message--success[data-v-219a1ffb] { color: var(--color-success-text); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcUserBubble-jjzI5imn.css": /*!*****************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcUserBubble-jjzI5imn.css ***! \*****************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-8f0fbaf1] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .user-bubble__wrapper[data-v-8f0fbaf1] { display: inline-block; vertical-align: middle; min-width: 0; max-width: 100%; } .user-bubble__content[data-v-8f0fbaf1] { display: inline-flex; max-width: 100%; background-color: var(--color-background-dark); } .user-bubble__content--primary[data-v-8f0fbaf1] { color: var(--color-primary-element-text); background-color: var(--color-primary-element); } .user-bubble__content[data-v-8f0fbaf1] > :last-child { padding-right: 8px; } .user-bubble__avatar[data-v-8f0fbaf1] { align-self: center; } .user-bubble__name[data-v-8f0fbaf1] { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .user-bubble__name[data-v-8f0fbaf1], .user-bubble__secondary[data-v-8f0fbaf1] { padding: 0 0 0 4px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcUserStatusIcon-62u43_6P.css": /*!*********************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcUserStatusIcon-62u43_6P.css ***! \*********************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-b17810e4] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .user-status-icon[data-v-b17810e4] { display: flex; justify-content: center; align-items: center; min-width: 16px; min-height: 16px; max-width: 20px; max-height: 20px; } .user-status-icon--invisible[data-v-b17810e4] { filter: var(--background-invert-if-dark); } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/Tooltip-wOLIuz0Q.css": /*!************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/Tooltip-wOLIuz0Q.css ***! \************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .v-popper--theme-tooltip.v-popper__popper { position: absolute; z-index: 100000; top: 0; right: auto; left: auto; display: block; margin: 0; padding: 0; text-align: left; text-align: start; opacity: 0; line-height: 1.6; line-break: auto; filter: drop-shadow(0 1px 10px var(--color-box-shadow)); } .v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container { bottom: -10px; border-bottom-width: 0; border-top-color: var(--color-main-background); } .v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container { top: -10px; border-top-width: 0; border-bottom-color: var(--color-main-background); } .v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container { right: 100%; border-left-width: 0; border-right-color: var(--color-main-background); } .v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container { left: 100%; border-right-width: 0; border-left-color: var(--color-main-background); } .v-popper--theme-tooltip.v-popper__popper[aria-hidden=true] { visibility: hidden; transition: opacity .15s, visibility .15s; opacity: 0; } .v-popper--theme-tooltip.v-popper__popper[aria-hidden=false] { visibility: visible; transition: opacity .15s; opacity: 1; } .v-popper--theme-tooltip .v-popper__inner { max-width: 350px; padding: 5px 8px; text-align: center; color: var(--color-main-text); border-radius: var(--border-radius); background-color: var(--color-main-background); } .v-popper--theme-tooltip .v-popper__arrow-container { position: absolute; z-index: 1; width: 0; height: 0; margin: 0; border-style: solid; border-color: transparent; border-width: 10px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/referencePickerModal-A0PlFUEI.css": /*!*************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/referencePickerModal-A0PlFUEI.css ***! \*************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; .material-design-icon[data-v-38b1d56a] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .widget-custom[data-v-38b1d56a] { width: 100%; margin: auto; margin-bottom: calc(var(--default-grid-baseline, 4px) * 3); margin-top: calc(var(--default-grid-baseline, 4px) * 3); overflow: hidden; border: 2px solid var(--color-border); border-radius: var(--border-radius-large); background-color: transparent; display: flex; } .widget-access[data-v-38b1d56a] { width: 100%; margin: auto; margin-bottom: calc(var(--default-grid-baseline, 4px) * 3); margin-top: calc(var(--default-grid-baseline, 4px) * 3); overflow: hidden; border: 2px solid var(--color-border); border-radius: var(--border-radius-large); background-color: transparent; display: flex; padding: calc(var(--default-grid-baseline, 4px) * 3); } .widget-default[data-v-38b1d56a] { width: 100%; margin: auto; margin-bottom: calc(var(--default-grid-baseline, 4px) * 3); margin-top: calc(var(--default-grid-baseline, 4px) * 3); overflow: hidden; border: 2px solid var(--color-border); border-radius: var(--border-radius-large); background-color: transparent; display: flex; } .widget-default--compact[data-v-38b1d56a] { flex-direction: column; } .widget-default--compact .widget-default--image[data-v-38b1d56a] { width: 100%; height: 150px; } .widget-default--compact .widget-default--details[data-v-38b1d56a] { width: 100%; padding-top: calc(var(--default-grid-baseline, 4px) * 2); padding-bottom: calc(var(--default-grid-baseline, 4px) * 2); } .widget-default--compact .widget-default--description[data-v-38b1d56a] { display: none; } .widget-default--image[data-v-38b1d56a] { width: 40%; background-position: center; background-size: cover; background-repeat: no-repeat; } .widget-default--name[data-v-38b1d56a] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; } .widget-default--details[data-v-38b1d56a] { padding: calc(var(--default-grid-baseline, 4px) * 3); width: 60%; } .widget-default--details p[data-v-38b1d56a] { margin: 0; padding: 0; } .widget-default--description[data-v-38b1d56a] { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical; } .widget-default--link[data-v-38b1d56a] { color: var(--color-text-maxcontrast); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .material-design-icon[data-v-25f1cef8], .material-design-icon[data-v-e880790e] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .provider-list[data-v-e880790e] { width: 100%; min-height: 400px; padding: 0 16px 16px; display: flex; flex-direction: column; } .provider-list--select[data-v-e880790e] { width: 100%; } .provider-list--select .provider[data-v-e880790e] { display: flex; align-items: center; height: 28px; overflow: hidden; } .provider-list--select .provider .link-icon[data-v-e880790e] { margin-right: 8px; } .provider-list--select .provider .provider-icon[data-v-e880790e] { width: 20px; height: 20px; object-fit: contain; margin-right: 8px; filter: var(--background-invert-if-dark); } .provider-list--select .provider .option-text[data-v-e880790e] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .material-design-icon[data-v-d0ba247a] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .raw-link[data-v-d0ba247a] { width: 100%; min-height: 350px; display: flex; flex-direction: column; overflow-y: auto; padding: 0 16px 16px; } .raw-link .input-wrapper[data-v-d0ba247a] { width: 100%; } .raw-link .reference-widget[data-v-d0ba247a] { display: flex; } .raw-link--empty-content .provider-icon[data-v-d0ba247a] { width: 150px; height: 150px; object-fit: contain; filter: var(--background-invert-if-dark); } .raw-link--input[data-v-d0ba247a] { width: 99%; } .material-design-icon[data-v-7a394a58] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .result[data-v-7a394a58] { display: flex; align-items: center; height: 44px; overflow: hidden; } .result--icon-class[data-v-7a394a58], .result--image[data-v-7a394a58] { width: 40px; min-width: 40px; height: 40px; object-fit: contain; } .result--icon-class.rounded[data-v-7a394a58], .result--image.rounded[data-v-7a394a58] { border-radius: 50%; } .result--content[data-v-7a394a58] { display: flex; flex-direction: column; padding-left: 10px; overflow: hidden; } .result--content--name[data-v-7a394a58], .result--content--subline[data-v-7a394a58] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .material-design-icon[data-v-97d196f0] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .smart-picker-search[data-v-97d196f0] { width: 100%; display: flex; flex-direction: column; padding: 0 16px 16px; } .smart-picker-search.with-empty-content[data-v-97d196f0] { min-height: 400px; } .smart-picker-search .provider-icon[data-v-97d196f0] { width: 150px; height: 150px; object-fit: contain; filter: var(--background-invert-if-dark); } .smart-picker-search--select[data-v-97d196f0], .smart-picker-search--select .search-result[data-v-97d196f0] { width: 100%; } .smart-picker-search--select .group-name-icon[data-v-97d196f0], .smart-picker-search--select .option-simple-icon[data-v-97d196f0] { width: 20px; height: 20px; margin: 0 20px 0 10px; } .smart-picker-search--select .custom-option[data-v-97d196f0] { height: 44px; display: flex; align-items: center; overflow: hidden; } .smart-picker-search--select .option-text[data-v-97d196f0] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .material-design-icon[data-v-12c38c93] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .reference-picker[data-v-12c38c93], .reference-picker .custom-element-wrapper[data-v-12c38c93] { display: flex; overflow-y: auto; width: 100%; } .material-design-icon { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .reference-picker-modal .modal-container { display: flex !important; } /** * @copyright Copyright (c) 2019 John Molakvoæ * * @author John Molakvoæ * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ .material-design-icon[data-v-ab09ebaa] { display: flex; align-self: center; justify-self: center; align-items: center; justify-content: center; } .reference-picker-modal--content[data-v-ab09ebaa] { width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; overflow-y: auto; } .reference-picker-modal--content .close-button[data-v-ab09ebaa], .reference-picker-modal--content .back-button[data-v-ab09ebaa] { position: absolute; top: 4px; } .reference-picker-modal--content .back-button[data-v-ab09ebaa] { left: 4px; } .reference-picker-modal--content .close-button[data-v-ab09ebaa] { right: 4px; } .reference-picker-modal--content > h2[data-v-ab09ebaa] { display: flex; margin: 12px 0 20px; } .reference-picker-modal--content > h2 .icon[data-v-ab09ebaa] { margin-right: 8px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./css/calendar.scss": /*!***************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./css/calendar.scss ***! \***************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8"; /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ /** * Calendar App * * @copyright 2016 Raghu Nayyar * @copyright 2018 Georg Ehrke * @copyright 2017 John Molakvoæ * * @author Raghu Nayyar * @author Georg Ehrke * @author John Molakvoæ * @author Richard Steinmetz * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ .app-calendar .datepicker-button-section, .app-calendar .today-button-section, .app-calendar .view-button-section { display: flex; } .app-calendar .datepicker-button-section .button, .app-calendar .today-button-section .button, .app-calendar .view-button-section .button { border-radius: 0; font-weight: normal; margin: 0 0 var(--default-grid-baseline) 0; flex-grow: 1; } .app-calendar .datepicker-button-section .button:first-child:not(:only-of-type), .app-calendar .today-button-section .button:first-child:not(:only-of-type), .app-calendar .view-button-section .button:first-child:not(:only-of-type) { border-radius: var(--border-radius-pill) 0 0 var(--border-radius-pill); } .app-calendar .datepicker-button-section .button:last-child:not(:only-of-type), .app-calendar .today-button-section .button:last-child:not(:only-of-type), .app-calendar .view-button-section .button:last-child:not(:only-of-type) { border-radius: 0 var(--border-radius-pill) var(--border-radius-pill) 0; } .app-calendar .datepicker-button-section .button:not(:only-of-type):not(:first-child):not(:last-child), .app-calendar .today-button-section .button:not(:only-of-type):not(:first-child):not(:last-child), .app-calendar .view-button-section .button:not(:only-of-type):not(:first-child):not(:last-child) { border-radius: 0; } .app-calendar .datepicker-button-section .button:only-child, .app-calendar .today-button-section .button:only-child, .app-calendar .view-button-section .button:only-child { border-radius: var(--border-radius-pill); } .app-calendar .datepicker-button-section .button:hover, .app-calendar .datepicker-button-section .button:focus, .app-calendar .datepicker-button-section .button.active, .app-calendar .today-button-section .button:hover, .app-calendar .today-button-section .button:focus, .app-calendar .today-button-section .button.active, .app-calendar .view-button-section .button:hover, .app-calendar .view-button-section .button:focus, .app-calendar .view-button-section .button.active { z-index: 50; } .app-calendar .datepicker-button-section__datepicker-label { flex-grow: 4 !important; text-align: center; } .app-calendar .datepicker-button-section__datepicker { margin-left: 26px; margin-top: 48px; position: absolute !important; width: 0 !important; } .app-calendar .datepicker-button-section__datepicker .mx-input-wrapper { display: none !important; } .app-calendar .datepicker-button-section__previous, .app-calendar .datepicker-button-section__next { background-size: 10px; flex-grow: 0 !important; width: 34px; padding: 0 6px !important; } .app-calendar .app-navigation-header { padding: calc(var(--default-grid-baseline, 4px) * 2); } .app-calendar .new-event-today-view-section { display: flex; } .app-calendar .new-event-today-view-section .button { margin: 0 var(--default-grid-baseline) 0 0; } .app-calendar .new-event-today-view-section .new-event { flex-grow: 5; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } .app-calendar .new-event-today-view-section .today { flex-grow: 1; font-weight: normal !important; } .app-calendar .app-navigation-toggle { background-color: var(--color-main-background) !important; } .app-calendar .app-navigation button.icon-share { opacity: 0.3 !important; } .app-calendar .app-navigation button.icon-shared, .app-calendar .app-navigation button.icon-public { opacity: 0.7 !important; } .app-calendar .app-navigation button.icon-share:active, .app-calendar .app-navigation button.icon-share:focus, .app-calendar .app-navigation button.icon-share:hover, .app-calendar .app-navigation button.icon-shared:active, .app-calendar .app-navigation button.icon-shared:focus, .app-calendar .app-navigation button.icon-shared:hover, .app-calendar .app-navigation button.icon-public:active, .app-calendar .app-navigation button.icon-public:focus, .app-calendar .app-navigation button.icon-public:hover { opacity: 1 !important; } .app-calendar .app-navigation #calendars-list { display: block !important; } .app-calendar .app-navigation li.app-navigation-loading-placeholder-entry div.icon.icon-loading { min-height: 44px; } .app-calendar .app-navigation .app-navigation-entry-wrapper.deleted .app-navigation-entry__name { text-decoration: line-through; } .app-calendar .app-navigation .app-navigation-entry-wrapper.open-sharing { box-shadow: inset 4px 0 var(--color-primary-element) !important; margin-left: -6px; padding-left: 6px; } .app-calendar .app-navigation .app-navigation-entry-wrapper.disabled .app-navigation-entry__name { color: var(--color-text-lighter) !important; } .app-calendar .app-navigation .app-navigation-entry-wrapper .app-navigation-entry__children .app-navigation-entry { padding-left: 0 !important; } .app-calendar .app-navigation .app-navigation-entry-wrapper .app-navigation-entry__children .app-navigation-entry .avatar { width: 32px; height: 32px; background-color: var(--color-border-dark); background-size: 16px; } .app-calendar .app-navigation .app-navigation-entry-wrapper .app-navigation-entry__children .app-navigation-entry .avatar.published { background-color: var(--color-primary-element); color: white; } .app-calendar .app-navigation .app-navigation-entry__multiselect { padding: 0 8px; } .app-calendar .app-navigation .app-navigation-entry__multiselect .multiselect { width: 100%; border-radius: var(--border-radius-large); } .app-calendar .app-navigation .app-navigation-entry__multiselect .multiselect__content-wrapper { z-index: 200 !important; } .app-calendar .app-navigation .app-navigation-entry__utils .action-checkbox__label { padding-right: 0 !important; } .app-calendar .app-navigation .app-navigation-entry__utils .action-checkbox__label::before { margin: 0 4px 0 !important; } .app-calendar .app-navigation .app-navigation-entry-new-calendar .app-navigation-entry__name { color: var(--color-text-maxcontrast) !important; } .app-calendar .app-navigation .app-navigation-entry-new-calendar:hover .app-navigation-entry__name, .app-calendar .app-navigation .app-navigation-entry-new-calendar--open .app-navigation-entry__name { color: var(--color-text-light) !important; } .app-calendar .app-navigation .app-navigation-entry-new-calendar .action-item:not(.action-item--open) .action-item__menutoggle:not(:hover):not(:focus):not(:active) { opacity: 0.5; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section div.multiselect { width: calc(100% - 14px); max-width: none; z-index: 105; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .oneline { white-space: nowrap; position: relative; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList { list-style-type: none; display: flex; flex-direction: column; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li { height: 44px; white-space: normal; display: inline-flex; align-items: center; position: relative; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li .username { padding: 0 8px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup { margin-left: auto; display: flex; align-items: center; white-space: nowrap; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > a:hover, .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > a:focus, .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .share-menu > a:hover, .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .share-menu > a:focus { box-shadow: none !important; opacity: 1 !important; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .icon:not(.hidden), .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .share-menu .icon:not(.hidden) { padding: 14px; height: 44px; width: 44px; opacity: 0.5; display: block; cursor: pointer; } .app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .share-menu { position: relative; display: block; } .app-calendar .app-navigation ul .appointment-config-list .app-navigation-caption { margin-top: 22px; } .app-calendar .app-navigation ul .appointment-config-list .app-navigation-entry-link, .app-calendar .app-navigation ul .appointment-config-list .app-navigation-entry-link * { cursor: default; } /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * @author Richard Steinmetz * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ .app-calendar .app-sidebar .editor-invitee-list-empty-message, .app-calendar .app-sidebar .editor-reminders-list-empty-message, .app-calendar .app-sidebar .editor-invitee-list-no-email-configured-message, .event-popover .event-popover__inner .editor-invitee-list-empty-message, .event-popover .event-popover__inner .editor-reminders-list-empty-message, .event-popover .event-popover__inner .editor-invitee-list-no-email-configured-message { margin-top: 20px; } .app-calendar .app-sidebar .editor-invitee-list-empty-message__icon, .app-calendar .app-sidebar .editor-reminders-list-empty-message__icon, .app-calendar .app-sidebar .editor-invitee-list-no-email-configured-message__icon, .event-popover .event-popover__inner .editor-invitee-list-empty-message__icon, .event-popover .event-popover__inner .editor-reminders-list-empty-message__icon, .event-popover .event-popover__inner .editor-invitee-list-no-email-configured-message__icon { background-size: 50px; height: 50px; width: 50px; margin: 0 auto; opacity: 0.5; } .app-calendar .app-sidebar .editor-invitee-list-empty-message__caption, .app-calendar .app-sidebar .editor-reminders-list-empty-message__caption, .app-calendar .app-sidebar .editor-invitee-list-no-email-configured-message__caption, .event-popover .event-popover__inner .editor-invitee-list-empty-message__caption, .event-popover .event-popover__inner .editor-reminders-list-empty-message__caption, .event-popover .event-popover__inner .editor-invitee-list-no-email-configured-message__caption { margin-top: 8px; text-align: center; color: var(--color-text-lighter); } .app-calendar .app-sidebar .editor-invitee-list-no-email-configured-message__icon, .event-popover .event-popover__inner .editor-invitee-list-no-email-configured-message__icon { font-size: 50px; line-height: 1em; user-select: none; } .app-calendar .app-sidebar .editor-reminders-list-new-button, .event-popover .event-popover__inner .editor-reminders-list-new-button { width: 100%; background-position-x: 8px; } .app-calendar .app-sidebar .app-sidebar-tab, .event-popover .event-popover__inner .app-sidebar-tab { overflow: unset !important; max-height: unset !important; height: auto !important; } .app-calendar .app-sidebar .app-sidebar-tab__buttons, .event-popover .event-popover__inner .app-sidebar-tab__buttons { position: fixed; bottom: var(--body-container-margin); z-index: 2; width: calc(27vw - 11px); min-width: 289px; max-width: 489px; background-color: var(--color-main-background); border-radius: 0 0 var(--body-container-radius) 0; padding: 0 8px 6px 0; } .app-calendar .app-sidebar .app-sidebar-tab__buttons button, .event-popover .event-popover__inner .app-sidebar-tab__buttons button { width: 100%; height: 44px; } .app-calendar .app-sidebar .app-sidebar-tab__content, .event-popover .event-popover__inner .app-sidebar-tab__content { margin-bottom: 120px; } .app-calendar .app-sidebar .property-title-time-picker-loading-placeholder, .event-popover .event-popover__inner .property-title-time-picker-loading-placeholder { width: 100%; } .app-calendar .app-sidebar .property-title-time-picker-loading-placeholder__icon, .event-popover .event-popover__inner .property-title-time-picker-loading-placeholder__icon { margin: 0 auto; height: 62px; width: 62px; background-size: 62px; } .app-calendar .app-sidebar .app-sidebar__loading-indicator, .event-popover .event-popover__inner .app-sidebar__loading-indicator { width: 100%; margin-top: 20vh; } .app-calendar .app-sidebar .app-sidebar__loading-indicator__icon, .event-popover .event-popover__inner .app-sidebar__loading-indicator__icon { margin: 0 auto; height: 44px; width: 44px; background-size: 44px; } .app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section:not(:first-of-type), .event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section:not(:first-of-type) { margin-top: 20px; } .app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section--on-the-select, .event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section--on-the-select { display: flex; align-items: center; } .app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section--on-the-select .v-select, .event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section--on-the-select .v-select { width: 100%; min-width: 100px !important; } .app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section__title, .event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section__title { list-style: none; } .app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section__grid, .event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section__grid { display: grid; grid-gap: 0; } .app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section__grid .repeat-option-set-section-grid-item, .event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section__grid .repeat-option-set-section-grid-item { padding: 8px; border: 1px solid var(--color-border-dark); text-align: center; margin: 0; border-radius: 0; } .app-calendar .app-sidebar .repeat-option-set--weekly .repeat-option-set-section__grid, .app-calendar .app-sidebar .repeat-option-set--monthly .repeat-option-set-section__grid, .event-popover .event-popover__inner .repeat-option-set--weekly .repeat-option-set-section__grid, .event-popover .event-popover__inner .repeat-option-set--monthly .repeat-option-set-section__grid { grid-template-columns: repeat(7, auto); } .app-calendar .app-sidebar .repeat-option-set--yearly .repeat-option-set-section__grid, .event-popover .event-popover__inner .repeat-option-set--yearly .repeat-option-set-section__grid { grid-template-columns: repeat(4, auto); } .app-calendar .app-sidebar .repeat-option-set--interval-freq, .event-popover .event-popover__inner .repeat-option-set--interval-freq { display: flex; align-items: center; } .app-calendar .app-sidebar .repeat-option-set--interval-freq .multiselect, .app-calendar .app-sidebar .repeat-option-set--interval-freq input[type=number], .event-popover .event-popover__inner .repeat-option-set--interval-freq .multiselect, .event-popover .event-popover__inner .repeat-option-set--interval-freq input[type=number] { min-width: 100px; width: 25%; } .app-calendar .app-sidebar .repeat-option-set--end, .event-popover .event-popover__inner .repeat-option-set--end { margin-top: 20px; display: flex; align-items: center; } .app-calendar .app-sidebar .repeat-option-set--end .repeat-option-end__label, .app-calendar .app-sidebar .repeat-option-set--end .repeat-option-end__end-type-select, .event-popover .event-popover__inner .repeat-option-set--end .repeat-option-end__label, .event-popover .event-popover__inner .repeat-option-set--end .repeat-option-end__end-type-select { display: block; min-width: 160px; width: 25%; } .app-calendar .app-sidebar .repeat-option-set--end .repeat-option-end__until, .event-popover .event-popover__inner .repeat-option-set--end .repeat-option-end__until { min-width: 75px; width: 50%; } .app-calendar .app-sidebar .repeat-option-set--end .repeat-option-end__count, .event-popover .event-popover__inner .repeat-option-set--end .repeat-option-end__count { min-width: 75px; width: 25%; } .app-calendar .app-sidebar .repeat-option-set__label, .event-popover .event-popover__inner .repeat-option-set__label { margin-right: auto; } .app-calendar .app-sidebar .repeat-option-warning, .event-popover .event-popover__inner .repeat-option-warning { text-align: center; } .app-calendar .app-sidebar .property-title-time-picker, .event-popover .event-popover__inner .property-title-time-picker { width: 100%; } .app-calendar .app-sidebar .property-title-time-picker--readonly, .event-popover .event-popover__inner .property-title-time-picker--readonly { display: flex; align-items: center; } .app-calendar .app-sidebar .property-title-time-picker__icon, .event-popover .event-popover__inner .property-title-time-picker__icon { width: 34px; height: 34px; margin-left: -5px; margin-right: 5px; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers, .app-calendar .app-sidebar .property-title-time-picker__all-day, .event-popover .event-popover__inner .property-title-time-picker__time-pickers, .event-popover .event-popover__inner .property-title-time-picker__all-day { display: flex; align-items: center; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers, .event-popover .event-popover__inner .property-title-time-picker__time-pickers { flex-wrap: wrap; justify-content: space-between; gap: 5px; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers .mx-datepicker, .event-popover .event-popover__inner .property-title-time-picker__time-pickers .mx-datepicker { flex: 1 auto; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers .mx-datepicker .mx-input-append, .event-popover .event-popover__inner .property-title-time-picker__time-pickers .mx-datepicker .mx-input-append { background-color: transparent !important; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly, .event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly { justify-content: start; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper, .event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper { display: flex; align-items: center; padding: 8px 7px; background-color: var(--color-main-background); color: var(--color-main-text); outline: none; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper--start-date, .event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper--start-date { padding-right: 0; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper--end-date, .event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper--end-date { padding-left: 0; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon, .event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon { margin-left: 8px; height: 16px; width: 16px; opacity: 0.3; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon--highlighted, .event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon--highlighted { opacity: 0.7; } .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon:focus, .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon:hover, .event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon:focus, .event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon:hover { opacity: 1; } .app-calendar .app-sidebar .property-title-time-picker__all-day, .event-popover .event-popover__inner .property-title-time-picker__all-day { padding-left: 3px; margin-top: 5px; } .app-calendar .app-sidebar .property-title-time-picker__all-day .checkbox-radio-switch__label, .event-popover .event-popover__inner .property-title-time-picker__all-day .checkbox-radio-switch__label { min-height: 32px; } .app-calendar .app-sidebar .property-title-time-picker .datetime-picker-inline-icon, .event-popover .event-popover__inner .property-title-time-picker .datetime-picker-inline-icon { margin-top: 17px; opacity: 0.3; border: none; background-color: transparent; border-radius: 0; padding: 6px !important; } .app-calendar .app-sidebar .property-title-time-picker .datetime-picker-inline-icon--highlighted, .event-popover .event-popover__inner .property-title-time-picker .datetime-picker-inline-icon--highlighted { opacity: 0.7; } .app-calendar .app-sidebar .property-title-time-picker .datetime-picker-inline-icon:focus, .app-calendar .app-sidebar .property-title-time-picker .datetime-picker-inline-icon:hover, .event-popover .event-popover__inner .property-title-time-picker .datetime-picker-inline-icon:focus, .event-popover .event-popover__inner .property-title-time-picker .datetime-picker-inline-icon:hover { opacity: 1; } .app-calendar .app-sidebar .property-alarm-list, .event-popover .event-popover__inner .property-alarm-list { width: 100%; } .app-calendar .app-sidebar .property-alarm-item, .event-popover .event-popover__inner .property-alarm-item { display: flex; align-items: center; min-height: 44px; } .app-calendar .app-sidebar .property-alarm-item__icon, .event-popover .event-popover__inner .property-alarm-item__icon { align-self: flex-start; } .app-calendar .app-sidebar .property-alarm-item__icon--hidden, .event-popover .event-popover__inner .property-alarm-item__icon--hidden { visibility: hidden; } .app-calendar .app-sidebar .property-alarm-item__icon .icon, .event-popover .event-popover__inner .property-alarm-item__icon .icon { width: 34px; height: 44px; margin-left: -5px; margin-right: 5px; } .app-calendar .app-sidebar .property-alarm-item__label, .event-popover .event-popover__inner .property-alarm-item__label { padding: 0 7px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; align-self: center; } .app-calendar .app-sidebar .property-alarm-item__options, .event-popover .event-popover__inner .property-alarm-item__options { margin-left: auto; display: flex; align-items: center; white-space: nowrap; } .app-calendar .app-sidebar .property-alarm-item__edit, .event-popover .event-popover__inner .property-alarm-item__edit { display: flex; align-items: center; width: 100%; min-width: 0; padding-right: 8px; } .app-calendar .app-sidebar .property-alarm-item__edit input[type=number], .event-popover .event-popover__inner .property-alarm-item__edit input[type=number] { width: 4em; } .app-calendar .app-sidebar .property-alarm-item__edit .multiselect, .event-popover .event-popover__inner .property-alarm-item__edit .multiselect { flex: 1 auto; height: 34px; min-width: 0; } .app-calendar .app-sidebar .property-alarm-item__edit .mx-datepicker, .event-popover .event-popover__inner .property-alarm-item__edit .mx-datepicker { flex: 1 auto; } .app-calendar .app-sidebar .property-alarm-item__edit--all-day, .event-popover .event-popover__inner .property-alarm-item__edit--all-day { flex-wrap: wrap; margin-bottom: 5px; gap: 0 5px; } .app-calendar .app-sidebar .property-alarm-item__edit--all-day__distance, .app-calendar .app-sidebar .property-alarm-item__edit--all-day__time, .event-popover .event-popover__inner .property-alarm-item__edit--all-day__distance, .event-popover .event-popover__inner .property-alarm-item__edit--all-day__time { display: flex; flex: 1; align-items: center; } .app-calendar .app-sidebar .property-alarm-item__edit--all-day__distance .multiselect, .event-popover .event-popover__inner .property-alarm-item__edit--all-day__distance .multiselect { width: 6em; } .app-calendar .app-sidebar .property-alarm-item__edit--all-day__time__before-at-label, .event-popover .event-popover__inner .property-alarm-item__edit--all-day__time__before-at-label { flex: 0 0 auto; margin-right: 5px; } .app-calendar .app-sidebar .property-alarm-item__edit--all-day__time .mx-datepicker, .event-popover .event-popover__inner .property-alarm-item__edit--all-day__time .mx-datepicker { width: 7em; } .app-calendar .app-sidebar .property-alarm-item__edit--absolute .mx-datepicker, .event-popover .event-popover__inner .property-alarm-item__edit--absolute .mx-datepicker { width: unset; } .app-calendar .app-sidebar .property-repeat, .event-popover .event-popover__inner .property-repeat { width: 100%; } .app-calendar .app-sidebar .property-repeat__summary, .event-popover .event-popover__inner .property-repeat__summary { display: flex; align-items: center; } .app-calendar .app-sidebar .property-repeat__summary__icon, .event-popover .event-popover__inner .property-repeat__summary__icon { width: 34px; height: 34px; margin-left: -5px; margin-right: 5px; } .app-calendar .app-sidebar .property-repeat__summary__content, .event-popover .event-popover__inner .property-repeat__summary__content { flex: 1 auto; padding: 8px 7px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .app-calendar .app-sidebar .property-repeat__options, .event-popover .event-popover__inner .property-repeat__options { margin-bottom: 5px; } .app-calendar .app-sidebar .resource-list-item, .app-calendar .app-sidebar .invitees-list-item, .event-popover .event-popover__inner .resource-list-item, .event-popover .event-popover__inner .invitees-list-item { display: flex; align-items: center; min-height: 44px; } .app-calendar .app-sidebar .resource-list-item__displayname, .app-calendar .app-sidebar .invitees-list-item__displayname, .event-popover .event-popover__inner .resource-list-item__displayname, .event-popover .event-popover__inner .invitees-list-item__displayname { margin-left: 8px; } .app-calendar .app-sidebar .resource-list-item__actions, .app-calendar .app-sidebar .invitees-list-item__actions, .event-popover .event-popover__inner .resource-list-item__actions, .event-popover .event-popover__inner .invitees-list-item__actions { margin-left: auto; } .app-calendar .app-sidebar .resource-list-item__organizer-hint, .app-calendar .app-sidebar .invitees-list-item__organizer-hint, .event-popover .event-popover__inner .resource-list-item__organizer-hint, .event-popover .event-popover__inner .invitees-list-item__organizer-hint { color: var(--color-text-maxcontrast); font-weight: 300; margin-left: 5px; } .app-calendar .app-sidebar .resource-search__capacity, .event-popover .event-popover__inner .resource-search__capacity { display: flex; align-items: center; } .app-calendar .app-sidebar .resource-search__capacity__actions, .event-popover .event-popover__inner .resource-search__capacity__actions { margin-left: 5px; } .app-calendar .app-sidebar .avatar-participation-status, .event-popover .event-popover__inner .avatar-participation-status { position: relative; height: 38px; width: 38px; } .app-calendar .app-sidebar .avatar-participation-status__indicator, .event-popover .event-popover__inner .avatar-participation-status__indicator { position: absolute; bottom: 0; right: 0; background-size: 10px; height: 15px; width: 15px; border-radius: 50%; } .app-calendar .app-sidebar .avatar-participation-status__indicator.accepted, .event-popover .event-popover__inner .avatar-participation-status__indicator.accepted { background-color: #2fb130; } .app-calendar .app-sidebar .avatar-participation-status__indicator.declined, .event-popover .event-popover__inner .avatar-participation-status__indicator.declined { background-color: #ff0000; } .app-calendar .app-sidebar .avatar-participation-status__indicator.tentative, .event-popover .event-popover__inner .avatar-participation-status__indicator.tentative { background-color: #ffa704; } .app-calendar .app-sidebar .avatar-participation-status__indicator.delegated, .app-calendar .app-sidebar .avatar-participation-status__indicator.no-response, .event-popover .event-popover__inner .avatar-participation-status__indicator.delegated, .event-popover .event-popover__inner .avatar-participation-status__indicator.no-response { background-color: grey; } .app-calendar .app-sidebar .property-text, .app-calendar .app-sidebar .property-select, .app-calendar .app-sidebar .property-color, .app-calendar .app-sidebar .property-select-multiple, .app-calendar .app-sidebar .property-title, .app-calendar .app-sidebar .resource-capacity, .app-calendar .app-sidebar .resource-room-type, .event-popover .event-popover__inner .property-text, .event-popover .event-popover__inner .property-select, .event-popover .event-popover__inner .property-color, .event-popover .event-popover__inner .property-select-multiple, .event-popover .event-popover__inner .property-title, .event-popover .event-popover__inner .resource-capacity, .event-popover .event-popover__inner .resource-room-type { display: flex; width: 100%; align-items: flex-start; } .app-calendar .app-sidebar .property-text__icon, .app-calendar .app-sidebar .property-text__info, .app-calendar .app-sidebar .property-select__icon, .app-calendar .app-sidebar .property-select__info, .app-calendar .app-sidebar .property-color__icon, .app-calendar .app-sidebar .property-color__info, .app-calendar .app-sidebar .property-select-multiple__icon, .app-calendar .app-sidebar .property-select-multiple__info, .app-calendar .app-sidebar .property-title__icon, .app-calendar .app-sidebar .property-title__info, .app-calendar .app-sidebar .resource-capacity__icon, .app-calendar .app-sidebar .resource-capacity__info, .app-calendar .app-sidebar .resource-room-type__icon, .app-calendar .app-sidebar .resource-room-type__info, .event-popover .event-popover__inner .property-text__icon, .event-popover .event-popover__inner .property-text__info, .event-popover .event-popover__inner .property-select__icon, .event-popover .event-popover__inner .property-select__info, .event-popover .event-popover__inner .property-color__icon, .event-popover .event-popover__inner .property-color__info, .event-popover .event-popover__inner .property-select-multiple__icon, .event-popover .event-popover__inner .property-select-multiple__info, .event-popover .event-popover__inner .property-title__icon, .event-popover .event-popover__inner .property-title__info, .event-popover .event-popover__inner .resource-capacity__icon, .event-popover .event-popover__inner .resource-capacity__info, .event-popover .event-popover__inner .resource-room-type__icon, .event-popover .event-popover__inner .resource-room-type__info { height: 34px; width: 34px; } .app-calendar .app-sidebar .property-text__icon--hidden, .app-calendar .app-sidebar .property-select__icon--hidden, .app-calendar .app-sidebar .property-color__icon--hidden, .app-calendar .app-sidebar .property-select-multiple__icon--hidden, .app-calendar .app-sidebar .property-title__icon--hidden, .app-calendar .app-sidebar .resource-capacity__icon--hidden, .app-calendar .app-sidebar .resource-room-type__icon--hidden, .event-popover .event-popover__inner .property-text__icon--hidden, .event-popover .event-popover__inner .property-select__icon--hidden, .event-popover .event-popover__inner .property-color__icon--hidden, .event-popover .event-popover__inner .property-select-multiple__icon--hidden, .event-popover .event-popover__inner .property-title__icon--hidden, .event-popover .event-popover__inner .resource-capacity__icon--hidden, .event-popover .event-popover__inner .resource-room-type__icon--hidden { visibility: hidden; } .app-calendar .app-sidebar .property-text__info, .app-calendar .app-sidebar .property-select__info, .app-calendar .app-sidebar .property-color__info, .app-calendar .app-sidebar .property-select-multiple__info, .app-calendar .app-sidebar .property-title__info, .app-calendar .app-sidebar .resource-capacity__info, .app-calendar .app-sidebar .resource-room-type__info, .event-popover .event-popover__inner .property-text__info, .event-popover .event-popover__inner .property-select__info, .event-popover .event-popover__inner .property-color__info, .event-popover .event-popover__inner .property-select-multiple__info, .event-popover .event-popover__inner .property-title__info, .event-popover .event-popover__inner .resource-capacity__info, .event-popover .event-popover__inner .resource-room-type__info { display: flex; justify-content: center; flex-shrink: 0; opacity: 0.5; } .app-calendar .app-sidebar .property-text__info:hover, .app-calendar .app-sidebar .property-select__info:hover, .app-calendar .app-sidebar .property-color__info:hover, .app-calendar .app-sidebar .property-select-multiple__info:hover, .app-calendar .app-sidebar .property-title__info:hover, .app-calendar .app-sidebar .resource-capacity__info:hover, .app-calendar .app-sidebar .resource-room-type__info:hover, .event-popover .event-popover__inner .property-text__info:hover, .event-popover .event-popover__inner .property-select__info:hover, .event-popover .event-popover__inner .property-color__info:hover, .event-popover .event-popover__inner .property-select-multiple__info:hover, .event-popover .event-popover__inner .property-title__info:hover, .event-popover .event-popover__inner .resource-capacity__info:hover, .event-popover .event-popover__inner .resource-room-type__info:hover { opacity: 1; } .app-calendar .app-sidebar .property-text__icon, .app-calendar .app-sidebar .property-select__icon, .app-calendar .app-sidebar .property-color__icon, .app-calendar .app-sidebar .property-select-multiple__icon, .app-calendar .app-sidebar .property-title__icon, .app-calendar .app-sidebar .resource-capacity__icon, .app-calendar .app-sidebar .resource-room-type__icon, .event-popover .event-popover__inner .property-text__icon, .event-popover .event-popover__inner .property-select__icon, .event-popover .event-popover__inner .property-color__icon, .event-popover .event-popover__inner .property-select-multiple__icon, .event-popover .event-popover__inner .property-title__icon, .event-popover .event-popover__inner .resource-capacity__icon, .event-popover .event-popover__inner .resource-room-type__icon { flex-shrink: 0; margin-left: -5px; margin-right: 5px; } .app-calendar .app-sidebar .property-text__input, .app-calendar .app-sidebar .property-select__input, .app-calendar .app-sidebar .property-color__input, .app-calendar .app-sidebar .property-select-multiple__input, .app-calendar .app-sidebar .property-title__input, .app-calendar .app-sidebar .resource-capacity__input, .app-calendar .app-sidebar .resource-room-type__input, .event-popover .event-popover__inner .property-text__input, .event-popover .event-popover__inner .property-select__input, .event-popover .event-popover__inner .property-color__input, .event-popover .event-popover__inner .property-select-multiple__input, .event-popover .event-popover__inner .property-title__input, .event-popover .event-popover__inner .resource-capacity__input, .event-popover .event-popover__inner .resource-room-type__input { flex-grow: 2; } .app-calendar .app-sidebar .property-text__input textarea, .app-calendar .app-sidebar .property-text__input input, .app-calendar .app-sidebar .property-text__input div.v-select, .app-calendar .app-sidebar .property-select__input textarea, .app-calendar .app-sidebar .property-select__input input, .app-calendar .app-sidebar .property-select__input div.v-select, .app-calendar .app-sidebar .property-color__input textarea, .app-calendar .app-sidebar .property-color__input input, .app-calendar .app-sidebar .property-color__input div.v-select, .app-calendar .app-sidebar .property-select-multiple__input textarea, .app-calendar .app-sidebar .property-select-multiple__input input, .app-calendar .app-sidebar .property-select-multiple__input div.v-select, .app-calendar .app-sidebar .property-title__input textarea, .app-calendar .app-sidebar .property-title__input input, .app-calendar .app-sidebar .property-title__input div.v-select, .app-calendar .app-sidebar .resource-capacity__input textarea, .app-calendar .app-sidebar .resource-capacity__input input, .app-calendar .app-sidebar .resource-capacity__input div.v-select, .app-calendar .app-sidebar .resource-room-type__input textarea, .app-calendar .app-sidebar .resource-room-type__input input, .app-calendar .app-sidebar .resource-room-type__input div.v-select, .event-popover .event-popover__inner .property-text__input textarea, .event-popover .event-popover__inner .property-text__input input, .event-popover .event-popover__inner .property-text__input div.v-select, .event-popover .event-popover__inner .property-select__input textarea, .event-popover .event-popover__inner .property-select__input input, .event-popover .event-popover__inner .property-select__input div.v-select, .event-popover .event-popover__inner .property-color__input textarea, .event-popover .event-popover__inner .property-color__input input, .event-popover .event-popover__inner .property-color__input div.v-select, .event-popover .event-popover__inner .property-select-multiple__input textarea, .event-popover .event-popover__inner .property-select-multiple__input input, .event-popover .event-popover__inner .property-select-multiple__input div.v-select, .event-popover .event-popover__inner .property-title__input textarea, .event-popover .event-popover__inner .property-title__input input, .event-popover .event-popover__inner .property-title__input div.v-select, .event-popover .event-popover__inner .resource-capacity__input textarea, .event-popover .event-popover__inner .resource-capacity__input input, .event-popover .event-popover__inner .resource-capacity__input div.v-select, .event-popover .event-popover__inner .resource-room-type__input textarea, .event-popover .event-popover__inner .resource-room-type__input input, .event-popover .event-popover__inner .resource-room-type__input div.v-select { width: 100%; } .app-calendar .app-sidebar .property-text__input textarea, .app-calendar .app-sidebar .property-select__input textarea, .app-calendar .app-sidebar .property-color__input textarea, .app-calendar .app-sidebar .property-select-multiple__input textarea, .app-calendar .app-sidebar .property-title__input textarea, .app-calendar .app-sidebar .resource-capacity__input textarea, .app-calendar .app-sidebar .resource-room-type__input textarea, .event-popover .event-popover__inner .property-text__input textarea, .event-popover .event-popover__inner .property-select__input textarea, .event-popover .event-popover__inner .property-color__input textarea, .event-popover .event-popover__inner .property-select-multiple__input textarea, .event-popover .event-popover__inner .property-title__input textarea, .event-popover .event-popover__inner .resource-capacity__input textarea, .event-popover .event-popover__inner .resource-room-type__input textarea { max-height: calc(100vh - 500px); vertical-align: top; margin: 0; } .app-calendar .app-sidebar .property-text__input--readonly div, .app-calendar .app-sidebar .property-select__input--readonly div, .app-calendar .app-sidebar .property-color__input--readonly div, .app-calendar .app-sidebar .property-select-multiple__input--readonly div, .app-calendar .app-sidebar .property-title__input--readonly div, .app-calendar .app-sidebar .resource-capacity__input--readonly div, .app-calendar .app-sidebar .resource-room-type__input--readonly div, .event-popover .event-popover__inner .property-text__input--readonly div, .event-popover .event-popover__inner .property-select__input--readonly div, .event-popover .event-popover__inner .property-color__input--readonly div, .event-popover .event-popover__inner .property-select-multiple__input--readonly div, .event-popover .event-popover__inner .property-title__input--readonly div, .event-popover .event-popover__inner .resource-capacity__input--readonly div, .event-popover .event-popover__inner .resource-room-type__input--readonly div { width: calc(100% - 8px); /* for typical (thin) scrollbar size */ white-space: pre-line; padding: 8px 7px; background-color: var(--color-main-background); color: var(--color-main-text); outline: none; overflow-y: scroll; word-break: break-word; /* allows breaking on long URLs */ max-height: 30vh; } .app-calendar .app-sidebar .property-text__input--readonly-calendar-picker div.calendar-picker-option, .app-calendar .app-sidebar .property-select__input--readonly-calendar-picker div.calendar-picker-option, .app-calendar .app-sidebar .property-color__input--readonly-calendar-picker div.calendar-picker-option, .app-calendar .app-sidebar .property-select-multiple__input--readonly-calendar-picker div.calendar-picker-option, .app-calendar .app-sidebar .property-title__input--readonly-calendar-picker div.calendar-picker-option, .app-calendar .app-sidebar .resource-capacity__input--readonly-calendar-picker div.calendar-picker-option, .app-calendar .app-sidebar .resource-room-type__input--readonly-calendar-picker div.calendar-picker-option, .event-popover .event-popover__inner .property-text__input--readonly-calendar-picker div.calendar-picker-option, .event-popover .event-popover__inner .property-select__input--readonly-calendar-picker div.calendar-picker-option, .event-popover .event-popover__inner .property-color__input--readonly-calendar-picker div.calendar-picker-option, .event-popover .event-popover__inner .property-select-multiple__input--readonly-calendar-picker div.calendar-picker-option, .event-popover .event-popover__inner .property-title__input--readonly-calendar-picker div.calendar-picker-option, .event-popover .event-popover__inner .resource-capacity__input--readonly-calendar-picker div.calendar-picker-option, .event-popover .event-popover__inner .resource-room-type__input--readonly-calendar-picker div.calendar-picker-option { padding: 8px 7px; } .app-calendar .app-sidebar .property-text, .app-calendar .app-sidebar .property-select, .app-calendar .app-sidebar .property-color, .app-calendar .app-sidebar .property-select-multiple, .app-calendar .app-sidebar .property-title, .app-calendar .app-sidebar .property-repeat, .app-calendar .app-sidebar .resource-capacity, .app-calendar .app-sidebar .resource-room-type, .event-popover .event-popover__inner .property-text, .event-popover .event-popover__inner .property-select, .event-popover .event-popover__inner .property-color, .event-popover .event-popover__inner .property-select-multiple, .event-popover .event-popover__inner .property-title, .event-popover .event-popover__inner .property-repeat, .event-popover .event-popover__inner .resource-capacity, .event-popover .event-popover__inner .resource-room-type { margin-bottom: 5px; } .app-calendar .app-sidebar .property-text--readonly, .app-calendar .app-sidebar .property-select--readonly, .app-calendar .app-sidebar .property-color--readonly, .app-calendar .app-sidebar .property-select-multiple--readonly, .app-calendar .app-sidebar .property-title--readonly, .app-calendar .app-sidebar .property-repeat--readonly, .app-calendar .app-sidebar .resource-capacity--readonly, .app-calendar .app-sidebar .resource-room-type--readonly, .event-popover .event-popover__inner .property-text--readonly, .event-popover .event-popover__inner .property-select--readonly, .event-popover .event-popover__inner .property-color--readonly, .event-popover .event-popover__inner .property-select-multiple--readonly, .event-popover .event-popover__inner .property-title--readonly, .event-popover .event-popover__inner .property-repeat--readonly, .event-popover .event-popover__inner .resource-capacity--readonly, .event-popover .event-popover__inner .resource-room-type--readonly { margin-bottom: 0; } .app-calendar .app-sidebar .property-select, .app-calendar .app-sidebar .property-select-multiple, .event-popover .event-popover__inner .property-select, .event-popover .event-popover__inner .property-select-multiple { align-items: center; } .app-calendar .app-sidebar .property-select .v-select, .app-calendar .app-sidebar .property-select-multiple .v-select, .event-popover .event-popover__inner .property-select .v-select, .event-popover .event-popover__inner .property-select-multiple .v-select { min-width: unset !important; } .app-calendar .app-sidebar .property-color__input, .event-popover .event-popover__inner .property-color__input { display: flex; gap: 5px; margin-bottom: 5px; } .app-calendar .app-sidebar .property-color__input--readonly, .event-popover .event-popover__inner .property-color__input--readonly { margin: 3px 0 3px 7px; } .app-calendar .app-sidebar .property-color__color-preview, .event-popover .event-popover__inner .property-color__color-preview { width: 44px !important; height: 44px !important; border-radius: 44px; } .app-calendar .app-sidebar .property-text__icon, .event-popover .event-popover__inner .property-text__icon { height: unset; align-self: flex-start; padding-top: 12px; } .app-calendar .app-sidebar .property-text--readonly .property-text__icon, .event-popover .event-popover__inner .property-text--readonly .property-text__icon { padding-top: 10px; } .app-calendar .app-sidebar .property-text__input--readonly, .event-popover .event-popover__inner .property-text__input--readonly { line-height: 1; padding-top: calc(var(--default-line-height) / 2 - 0.5lh); } .app-calendar .app-sidebar .property-text__input textarea, .event-popover .event-popover__inner .property-text__input textarea { resize: none; } .app-calendar .app-sidebar .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly, .event-popover .event-popover__inner .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly { width: 100%; } .app-calendar .app-sidebar .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly .property-select-multiple-colored-tag-wrapper, .event-popover .event-popover__inner .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly .property-select-multiple-colored-tag-wrapper { align-items: center; overflow: hidden; max-width: 100%; position: relative; padding: 3px 5px; } .app-calendar .app-sidebar .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly .property-select-multiple-colored-tag-wrapper .multiselect__tag, .event-popover .event-popover__inner .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly .property-select-multiple-colored-tag-wrapper .multiselect__tag { line-height: 20px; padding: 1px 5px; background-image: none; display: inline-flex; align-items: center; border-radius: 3px; max-width: fit-content; margin: 3px; } .app-calendar .app-sidebar .property-title__input, .app-calendar .app-sidebar .property-title input, .event-popover .event-popover__inner .property-title__input, .event-popover .event-popover__inner .property-title input { font-weight: bold; } .app-calendar .app-sidebar .property-title__input--readonly, .event-popover .event-popover__inner .property-title__input--readonly { font-size: 18px; } .app-calendar .app-sidebar .property-title input, .app-calendar .app-sidebar .property-title-time-picker input, .event-popover .event-popover__inner .property-title input, .event-popover .event-popover__inner .property-title-time-picker input { margin: 0; } .app-calendar .app-sidebar .resource-room-type, .event-popover .event-popover__inner .resource-room-type { margin-bottom: 5px; } .event-popover .event-popover__inner .event-popover__response-buttons { margin-top: 8px; margin-bottom: 0; } .event-popover .event-popover__inner .property-text__icon, .event-popover .event-popover__inner .property-title-time-picker__icon { margin: 0 !important; } .timezone-popover-wrapper .popover__inner { padding: 20px; } .timezone-popover-wrapper__title { margin-bottom: 8px; } .timezone-popover-wrapper__timezone-select { min-width: 200px; } .event-popover .v-popper__inner { overflow: unset !important; } .event-popover .event-popover__inner { text-align: left; max-width: 480px; width: 480px; padding: 5px 10px 10px 10px; } .event-popover .event-popover__inner .empty-content { margin-top: 0 !important; padding: 50px 0; } .event-popover .event-popover__inner .property-title-time-picker:not(.property-title-time-picker--readonly) { margin-bottom: 12px; } .event-popover .event-popover__inner .event-popover__invitees .avatar-participation-status__text { bottom: 22px; } .event-popover .event-popover__inner .event-popover__buttons { margin-top: 8px; } .event-popover .event-popover__inner .event-popover__top-right-actions { display: flex; gap: var(--default-grid-baseline); position: absolute !important; top: var(--default-grid-baseline) !important; right: var(--default-grid-baseline) !important; z-index: 100 !important; opacity: 0.7 !important; border-radius: 22px !important; } .event-popover .event-popover__inner .event-popover__top-right-actions .action-item.action-item--single { width: 44px !important; height: 44px !important; } .event-popover .event-popover__inner .popover-loading-indicator { width: 100%; } .event-popover .event-popover__inner .popover-loading-indicator__icon { margin: 0 auto; height: 62px; width: 62px; background-size: 62px; } .event-popover[x-out-of-boundaries] { margin-top: 75px; } .event-popover[x-placement^=bottom] .popover__arrow { border-bottom-color: var(--color-background-dark); } .calendar-picker-option { display: flex; align-items: center; overflow: hidden; } .calendar-picker-option__color-indicator { width: 12px; height: 12px; border-radius: 50%; border: none; margin-right: 8px; flex-basis: 12px; flex-shrink: 0; } .calendar-picker-option__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex-grow: 1; } .calendar-picker-option__avatar { flex-basis: 18px; flex-shrink: 0; } .property-select-multiple-colored-tag { width: 100%; display: flex; align-items: center; } .property-select-multiple-colored-tag__color-indicator { width: 12px; height: 12px; border-radius: 50%; border: none; margin-right: 8px; flex-shrink: 0; } .property-select-multiple-colored-tag .icon { margin-left: 4px; scale: 0.8; } .resource-list-button-group, .invitees-list-button-group { width: 100%; display: flex; justify-content: space-between; align-items: center; } .resource-list-button-group:not(:empty), .invitees-list-button-group:not(:empty) { margin-top: 20px; } .vs__dropdown-option span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .resource-search-list-item, .invitees-search-list-item { display: flex; align-items: center; width: 100%; padding-right: 32px; } .resource-search-list-item__label, .invitees-search-list-item__label { width: 100%; padding: 0 8px; } .resource-search-list-item__label__availability, .invitees-search-list-item__label__availability { color: var(--color-text-maxcontrast); } .resource-search-list-item__label div, .invitees-search-list-item__label div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .resource-search-list-item__label div:nth-child(1), .invitees-search-list-item__label div:nth-child(1) { color: var(--color-main-text); } .resource-search-list-item__label div:nth-child(2), .invitees-search-list-item__label div:nth-child(2) { color: var(--color-text-lighter); line-height: 1; } .resource-search__multiselect, .invitees-search__multiselect { width: 100%; } /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ #app-settings .settings-fieldset-interior-item { padding: 5px 0; } #app-settings .settings-fieldset-interior-item .action-checkbox { line-height: unset !important; white-space: unset !important; } #app-settings .settings-fieldset-interior-item .action-checkbox__label::before { margin: 0 6px 3px 3px !important; flex-shrink: 0; } #app-settings .settings-fieldset-interior-item .action-button { min-height: unset !important; } #app-settings .settings-fieldset-interior-item .action-button__icon { margin: 0 6px 3px 3px !important; height: 14px !important; width: 14px !important; background-position: unset !important; } #app-settings .settings-fieldset-interior-item .action-button__longtext { width: unset !important; padding: 0 !important; } #app-settings .settings-fieldset-interior-item__import-button { display: block; text-align: center; background-position-x: 8px; position: relative; } #app-settings .settings-fieldset-interior-item__import-button .material-design-icon { position: absolute; } #app-settings .settings-fieldset-interior-item--slotDuration, #app-settings .settings-fieldset-interior-item--defaultReminder { display: table; } #app-settings .settings-fieldset-interior-item--slotDuration label, #app-settings .settings-fieldset-interior-item--defaultReminder label { display: block; } #app-settings .settings-fieldset-interior-item--slotDuration .multiselect, #app-settings .settings-fieldset-interior-item--defaultReminder .multiselect { display: block; } #app-settings .settings-fieldset-interior-item--timezone, #app-settings .settings-fieldset-interior-item--default-calendar { width: 100%; } #app-settings .settings-fieldset-interior-item--timezone .multiselect, #app-settings .settings-fieldset-interior-item--default-calendar .multiselect { width: 100%; } .shortcut-overview-modal .modal-container { display: flex !important; flex-wrap: wrap; padding: 0 12px 12px 12px !important; } .shortcut-overview-modal .modal-container * { box-sizing: border-box; } .shortcut-overview-modal .modal-container .shortcut-section { width: 50%; flex-grow: 0; flex-shrink: 0; padding: 10px; } .shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item { width: 100%; display: grid; grid-template-columns: 33% 67%; column-gap: 10px; } .shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item:not(:first-child) { margin-top: 10px; } .shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item__keys { display: block; text-align: right; } .shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item__label { display: block; text-align: left; padding-top: 5px; } .shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item__spacer { margin: 0 3px; } @media screen and (max-width: 800px) { .shortcut-overview-modal .modal-container .shortcut-section { width: 100%; } } /** * Calendar App * * @copyright 2021 Richard Steinmetz * * @author Richard Steinmetz * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ .appointment-config-modal { padding: 2vw; } .appointment-config-modal__form { display: flex; flex-direction: column; width: 100%; } .appointment-config-modal__form fieldset { padding: 20px 0; } .appointment-config-modal__form fieldset header { font-size: 16px; margin-bottom: 3px; } .appointment-config-modal__form .availability-select, .appointment-config-modal__form .calendar-select { display: flex; flex-direction: column; } .appointment-config-modal__form__row--wrapped { display: flex; flex-wrap: wrap; gap: 10px 50px; } .appointment-config-modal__form__row--wrapped > div { flex: 1 200px; } .appointment-config-modal__form__row--local { display: flex; flex-direction: column; } .appointment-config-modal__form__row + .appointment-config-modal__form__row { margin-top: 10px; } .appointment-config-modal__form .multiselect__tags { height: unset !important; margin: 0 !important; } .appointment-config-modal__submit-button { margin-top: 20px; } .app-config-modal-confirmation .empty-content { margin-top: 0 !important; margin-bottom: 20px; } .app-config-modal-confirmation__buttons { display: flex; justify-content: center; gap: 0 10px; } /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ .modal--scheduler { position: relative; } .modal--scheduler .fc-bgevent { opacity: 0.8; } .modal--scheduler .blocking-event-free-busy { border-color: var(--color-primary-element); border-style: solid; border-left-width: 2px; border-right-width: 2px; background-color: transparent !important; opacity: 0.7 !important; z-index: 2; } .modal--scheduler .blocking-event-free-busy.blocking-event-free-busy--first-row { border-radius: var(--border-radius) var(--border-radius) 0 0; border-top-width: 2px; } .modal--scheduler .blocking-event-free-busy.blocking-event-free-busy--last-row { border-radius: 0 0 var(--border-radius) var(--border-radius); border-bottom-width: 2px; } .modal--scheduler .loading-indicator { width: 100%; position: absolute; top: 0; height: 50px; margin-top: 75px; } .freebusy-caption { margin-top: 10px; } .freebusy-caption__calendar-user-types, .freebusy-caption__colors { width: 50%; display: flex; } .freebusy-caption__colors { width: 100%; display: flex; flex-direction: column; padding: 5px; } .freebusy-caption__colors .freebusy-caption-item { display: flex; align-items: center; margin-right: 30px; } .freebusy-caption__colors .freebusy-caption-item__color { height: 1em; width: 2em; display: block; border: 1px solid var(--color-border-dark); opacity: 0.8; } .freebusy-caption__colors .freebusy-caption-item__label { margin-left: 5px; } /** * Calendar App * * @copyright 2020 Georg Ehrke * * @author Georg Ehrke * @author René Gieling * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ /** Override some FullCalendar CSS vars: */ .fc { --fc-small-font-size: 0.875em; --fc-page-bg-color: var(--color-main-background) !important; --fc-neutral-bg-color: var(--color-background-dark) !important; --fc-neutral-text-color: var(--color-text-lighter) !important; --fc-border-color: var(--color-border) !important; --fc-daygrid-event-dot-width: 10px !important; --fc-event-bg-color: var(--color-primary-element); --fc-event-border-color: var(--color-primary-element-text); --fc-event-text-color: var(--color-primary-element-text); --fc-event-selected-overlay-color: var(--color-box-shadow); --fc-event-resizer-thickness: 8px; --fc-event-resizer-dot-total-width: 8px; --fc-event-resizer-dot-border-width: 1px; --fc-non-business-color: var(--color-background-dark); --fc-bg-event-color: var(--color-primary-element); --fc-bg-event-opacity: 0.3; --fc-highlight-color: rgba(188, 232, 241, 0.3); --fc-today-bg-color: var(--color-main-background) !important; --fc-now-indicator-color: red; --fc-list-event-hover-bg-color: var(--color-background-hover) !important; } .fc { font-family: var(--font-face) !important; } .fc-timegrid-axis-frame, .fc-timegrid-slot-label, .fc-col-header-cell a { color: var(--color-text-lighter) !important; } .fc .fc-timegrid-slot-minor { border-top-style: none !important; } .fc-daygrid-day-top { justify-content: center; } .fc-state-highlight.fc-day-number, .fc tbody tr, .fc tbody tr:hover, .fc tbody tr:focus { background: inherit !important; } .fc-day-today.fc-col-header-cell a, .fc-day-today.fc-col-header-cell span { padding: 2px 6px; font-weight: bold; background-color: var(--color-primary-element); color: var(--color-primary-element-text) !important; border-radius: var(--border-radius-pill); } .fc-day-today .fc-event { box-shadow: 0px 0px 0px 1px var(--color-primary-element-light) !important; } .fc-day-today .fc-daygrid-day-top .fc-daygrid-day-number { margin: 4px; width: 24px; height: 24px; text-align: center; font-weight: bold !important; padding: 0 !important; background: var(--color-primary-element); color: var(--color-primary-element-text); border-radius: 50%; } .fc-list-table td { white-space: normal; word-break: break-word; } .fc .fc-list-sticky .fc-list-day > * { z-index: 1; } .fc-list-table .fc-list-day-cushion { padding-left: calc(var(--default-clickable-area) + var(--default-grid-baseline) * 2); } .fc-timeGridWeek-view .fc-col-header-cell.fc-day-today, .fc-timeGridWeek-view .fc-daygrid-day.fc-day-today, .fc-timeGridWeek-view .fc-timegrid-col.fc-day-today, .fc-dayGridMonth-view .fc-col-header-cell.fc-day-today, .fc-dayGridMonth-view .fc-daygrid-day.fc-day-today, .fc-dayGridMonth-view .fc-timegrid-col.fc-day-today { background-color: var(--color-primary-element-light) !important; } .fc-daygrid-day.fc-day.fc-day-other, .fc .fc-daygrid-day.fc-day-today.fc-day-other { background-color: var(--color-background-dark) !important; border: 1px solid var(--color-background-darker); } .fc-daygrid-day.fc-day.fc-day-other .fc-daygrid-day-top, .fc .fc-daygrid-day.fc-day-today.fc-day-other .fc-daygrid-day-top { opacity: 0.6; } .fc-event { padding-left: 3px; } .fc-event.fc-event-nc-task-completed, .fc-event.fc-event-nc-tentative, .fc-event.fc-event-nc-cancelled { opacity: 0.5; } .fc-event.fc-event-nc-task-completed .fc-event-title, .fc-event.fc-event-nc-task-completed .fc-list-event-title, .fc-event.fc-event-nc-cancelled .fc-event-title, .fc-event.fc-event-nc-cancelled .fc-list-event-title { text-decoration: line-through !important; } .fc-event .fc-event-title { text-overflow: ellipsis; } .fc-event .fc-event-nc-alarms .icon-event-reminder { background-color: inherit; background-position: right; position: absolute; top: 0; right: 0; } .fc-event .fc-event-nc-alarms .icon-event-reminder--light { background-image: var(--icon-calendar-reminder-fffffe); } .fc-event .fc-event-nc-alarms .icon-event-reminder--dark { background-image: var(--icon-calendar-reminder-000001); } .fc-event .fc-event-title-container { display: flex; align-content: center; } .fc-event .fc-event-title-container .fc-event-title-checkbox { margin: 4px 4px 0 0; line-height: 1; } .fc-event .fc-list-event-checkbox { margin: 2px 4px 0 -2px; line-height: 1; } .fc-event .fc-daygrid-event-checkbox { margin: 2px 4px 0 4px; line-height: 1; } .fc-event .fc-list-event-location span, .fc-event .fc-list-event-description span { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; white-space: pre-wrap; max-width: 25vw; } @media only screen and (max-width: 767px) { .fc-event .fc-list-event-location, .fc-event .fc-list-event-description { display: none; } } .fc-list-empty .fc-list-empty-cushion { display: none; } .fc-list-empty .empty-content { margin-top: 0 !important; } .fc-col-header-cell { word-break: break-word; white-space: normal; } .fc-timeGridWeek-view .fc-daygrid-more-link { word-break: break-all; white-space: normal; } .fc-timeGridWeek-view .fc-event-main { flex-wrap: wrap; } .fc-v-event { min-height: 4em; } .fc-v-event.fc-timegrid-event-short { min-height: 2em; } .fc-v-event .fc-event-title { white-space: initial; } .fc-dayGridMonth-view .fc-daygrid-more-link { word-break: break-word; white-space: normal; } .fc-dayGridMonth-view .fc-daygrid-day-frame { min-height: 150px !important; } .fc-daygrid-day-events { position: relative !important; } .fc-col-header-cell { padding-top: 10px !important; } .fc-timegrid-axis-cushion { margin-top: 44px; } .fc-timegrid-axis.fc-scrollgrid-shrink { height: 65px; } /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ .toast-calendar-multiline { white-space: pre-wrap; } .content.app-calendar > div.app-content { overflow-x: hidden; } .pending-event .fc-event-title-container { position: relative; } .pending-event .fc-event-title-container::after { content: ""; position: absolute; top: 50%; left: 0; width: 100%; height: 1px; background: rgb(23, 23, 23); transform: scaleY(0.5); } .pending-event .fc-event-title { position: relative; } .pending-event .fc-event-title::after { content: ""; position: absolute; top: 50%; left: 0; width: 100%; height: 1px; background: rgb(23, 23, 23); transform: scaleY(0.5); } .pending-event .fc-list-event-time { color: black; } .pending-event .fc-list-event-title { position: relative; color: black; } .pending-event .fc-list-event-title::after { content: ""; position: absolute; top: 50%; left: 0; width: 100%; height: 1px; background: rgb(23, 23, 23); transform: scaleY(0.5); } /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ .import-modal .modal-container { padding: 24px !important; min-width: 50%; overflow: visible !important; } .import-modal .modal-container .import-modal__title, .import-modal .modal-container .import-modal__subtitle { text-align: center; } .import-modal .modal-container .import-modal__actions { display: flex; gap: 5px; } .import-modal .modal-container .import-modal-file-item { display: flex; padding-top: 10px; } .import-modal .modal-container .import-modal-file-item--header { font-weight: bold; } .import-modal .modal-container .import-modal-file-item__filename { flex: 2 1 0; } .import-modal .modal-container .import-modal-file-item__calendar-select { flex: 1 1 0; } /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ @media print { .app-navigation { display: none; } } /** * Calendar App * * @copyright 2019 Georg Ehrke * * @author Georg Ehrke * @author Richard Steinmetz * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * */ #emptycontent-container #emptycontent { color: #a9a9a9 !important; } .content.app-calendar.app-calendar-public-embedded #embed-header { position: fixed; top: 0; left: 0; height: 50px; width: 100%; box-sizing: border-box; background-color: var(--color-main-background); border-bottom: 1px solid var(--color-border); overflow: visible; z-index: 2000; display: flex; justify-content: space-between; } .content.app-calendar.app-calendar-public-embedded #embed-header .embed-header__date-section, .content.app-calendar.app-calendar-public-embedded #embed-header .embed-header__share-section { display: flex; gap: 5px; } .content.app-calendar.app-calendar-public-embedded #embed-header .view-button-section .button { min-width: 75px; } .content.app-calendar.app-calendar-public-embedded #embed-header .datepicker-button-section__datepicker-label { min-width: 150px; } .content.app-calendar.app-calendar-public-embedded .app-content { margin-top: 44px; } #body-public input#initial-state-calendar-is_embed ~ header#header { display: none; } #body-public .app-calendar-public + footer { border-radius: 0 0 var(--border-radius-large) var(--border-radius-large); } #body-public .app-calendar-public .app-content { height: calc(100% - 65px) !important; } .property-text__input--linkify { flex-basis: min-content; } .linkify-links { border: 2px solid var(--color-border-maxcontrast); border-radius: var(--border-radius-large); cursor: text; width: 100% !important; box-sizing: border-box; padding: 12px; white-space: pre-line; overflow: auto; line-height: normal; word-break: break-word; display: inline-block; vertical-align: top; max-height: 16em; max-height: calc(100vh - 500px); } .linkify-links a.linkified { text-decoration: underline; margin: 0; } .linkify-links a.linkified::after { content: " ↗"; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/splitpanes/dist/splitpanes.css": /*!*******************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/splitpanes/dist/splitpanes.css ***! \*******************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.splitpanes{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}.splitpanes--vertical{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.splitpanes--horizontal{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{-webkit-transition:width .2s ease-out;-o-transition:width .2s ease-out;transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{-webkit-transition:height .2s ease-out;-o-transition:height .2s ease-out;transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{-webkit-transition:none;-o-transition:none;transition:none}.splitpanes__splitter{-ms-touch-action:none;touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;-ms-flex-negative:0;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px} `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue?vue&type=style&index=0&id=e8250812&lang=scss": /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderDatePicker.vue?vue&type=style&index=0&id=e8250812&lang=scss ***! \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.datepicker-widget { width: 135px; margin: 2px 5px 5px 5px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItem.vue?vue&type=style&index=0&id=a7253930&lang=scss&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/CalendarListItem.vue?vue&type=style&index=0&id=a7253930&lang=scss&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.actions-icon-avatar[data-v-a7253930] { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; } [data-v-a7253930] .app-navigation-entry:hover .app-navigation-entry__counter-wrapper { display: none; } .app-navigation-entry__counter-wrapper .action-item.sharing .material-design-icon.share[data-v-a7253930] { opacity: 0.3; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Trashbin.vue?vue&type=style&index=0&id=7cd8fdf0&lang=scss&scoped=true": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/CalendarList/Trashbin.vue?vue&type=style&index=0&id=7cd8fdf0&lang=scss&scoped=true ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.modal__content[data-v-7cd8fdf0] { margin: 2vw; } .modal__content__loading[data-v-7cd8fdf0], .modal__content__empty[data-v-7cd8fdf0] { margin-top: 25px !important; } [data-v-7cd8fdf0] .modal-wrapper .modal-container { overflow-y: auto; overflow-x: auto; } table[data-v-7cd8fdf0] { width: 100%; } th[data-v-7cd8fdf0], td[data-v-7cd8fdf0] { padding: 4px; } th[data-v-7cd8fdf0] { color: var(--color-text-maxcontrast); } .item[data-v-7cd8fdf0] { display: flex; } .item .item-name[data-v-7cd8fdf0] { white-space: normal; } .item .item-subline[data-v-7cd8fdf0] { color: var(--color-text-maxcontrast); } .item-actions[data-v-7cd8fdf0] { display: flex; justify-content: flex-end; gap: 5px; } .deletedAt[data-v-7cd8fdf0] { text-align: right; } .footer[data-v-7cd8fdf0] { display: flex; flex-direction: column; align-items: center; color: var(--color-text-lighter); font-size: small; margin-top: 16px; } .footer > p[data-v-7cd8fdf0] { margin-bottom: 12px; } .color-dot[data-v-7cd8fdf0] { display: inline-block; vertical-align: middle; width: 14px; height: 14px; margin-right: 14px; border: none; border-radius: 50%; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal.vue?vue&type=style&index=0&id=5a0e780b&lang=scss&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal.vue?vue&type=style&index=0&id=5a0e780b&lang=scss&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.edit-calendar-modal[data-v-5a0e780b] { padding: 20px; display: flex; flex-direction: column; } .edit-calendar-modal__name-and-color[data-v-5a0e780b] { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; } .edit-calendar-modal__name-and-color__color__dot[data-v-5a0e780b] { width: 24px; height: 24px; border-radius: 12px; } .edit-calendar-modal__name-and-color__name[data-v-5a0e780b] { flex: 1 auto; } .edit-calendar-modal__actions[data-v-5a0e780b] { display: flex; gap: 10px; margin-top: 10px; } .edit-calendar-modal__actions button[data-v-5a0e780b]:last-of-type { margin-left: auto; } .edit-calendar-modal__sharing-header[data-v-5a0e780b] { margin-top: 10px; } .edit-calendar-modal__sharing[data-v-5a0e780b] { display: flex; flex-direction: column; gap: 5px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/InternalLink.vue?vue&type=style&index=0&id=1d0631aa&lang=scss&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/InternalLink.vue?vue&type=style&index=0&id=1d0631aa&lang=scss&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.internal-link[data-v-1d0631aa] { display: flex; align-items: center; gap: 10px; } .internal-link__icon[data-v-1d0631aa] { display: flex; width: 32px; height: 32px; border-radius: 16px; color: white; background-color: var(--color-text-maxcontrast); align-items: center; justify-content: center; } .internal-link__label[data-v-1d0631aa] { display: flex; flex-direction: column; flex: 1 auto; line-height: 1.2em; } .internal-link__label__hint[data-v-1d0631aa] { color: var(--color-text-maxcontrast); }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue?vue&type=style&index=0&id=58de5449&lang=scss&scoped=true": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/PublishCalendar.vue?vue&type=style&index=0&id=58de5449&lang=scss&scoped=true ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.publish-calendar[data-v-58de5449] { display: flex; align-items: center; gap: 10px; } .publish-calendar__icon[data-v-58de5449] { display: flex; width: 32px; height: 32px; border-radius: 16px; color: white; background-color: var(--color-primary-element); align-items: center; justify-content: center; } .publish-calendar__label[data-v-58de5449] { flex: 1 auto; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/ShareItem.vue?vue&type=style&index=0&id=5a34d6ee&lang=scss&scoped=true": /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/ShareItem.vue?vue&type=style&index=0&id=5a34d6ee&lang=scss&scoped=true ***! \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.share-item[data-v-5a34d6ee] { display: flex; align-items: center; gap: 10px; } .share-item__group-icon[data-v-5a34d6ee] { width: 32px; height: 32px; border-radius: 16px; color: white; background-color: var(--color-text-maxcontrast); } .share-item__label[data-v-5a34d6ee] { flex: 1 auto; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/SharingSearch.vue?vue&type=style&index=0&id=2c8ef200&lang=scss&scoped=true": /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EditCalendarModal/SharingSearch.vue?vue&type=style&index=0&id=2c8ef200&lang=scss&scoped=true ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.sharing-search[data-v-2c8ef200] { display: flex; } .sharing-search__select[data-v-2c8ef200] { flex: 1 auto; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedTopNavigation.vue?vue&type=style&index=0&id=1461310c&lang=scss": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/EmbedTopNavigation.vue?vue&type=style&index=0&id=1461310c&lang=scss ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `#widget-header { top: 0; left: 0; height: 50px; width: 100%; box-sizing: border-box; background-color: var(--color-main-background); border-bottom: 1px solid var(--color-border); overflow: visible; z-index: 2000; display: flex; } #widget-header .widget-header__date-section { display: flex; gap: 5px; } #widget-header .view-button-section { display: flex; } #widget-header .datepicker-button-section { display: flex; } #widget-header .datepicker-button-section__datepicker-label { min-width: 150px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal.vue?vue&type=style&index=0&id=37b978c8&lang=scss&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal.vue?vue&type=style&index=0&id=37b978c8&lang=scss&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.appointment-config-modal__talk-room-description[data-v-37b978c8] { color: var(--color-text-maxcontrast); }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/CheckedDurationSelect.vue?vue&type=style&index=0&id=107bb2e4&lang=scss&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/CheckedDurationSelect.vue?vue&type=style&index=0&id=107bb2e4&lang=scss&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.checked-duration-select__checkbox-row[data-v-107bb2e4] { display: flex; align-items: center; } .checked-duration-select__checkbox-row__input-wrapper[data-v-107bb2e4] { flex: 0 0 20px; } .checked-duration-select__checkbox-row__input-wrapper input[type=checkbox][data-v-107bb2e4] { margin: 0; min-height: unset; cursor: pointer; } .checked-duration-select__checkbox-row input[data-v-107bb2e4], .checked-duration-select__checkbox-row label[data-v-107bb2e4] { display: block; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationInput.vue?vue&type=style&index=0&id=610c2bc3&lang=scss&scoped=true": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/DurationInput.vue?vue&type=style&index=0&id=610c2bc3&lang=scss&scoped=true ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.duration-input .input[data-v-610c2bc3] { display: flex; align-items: center; } .duration-input .input input[data-v-610c2bc3] { flex: 1 auto; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NoEmailAddressWarning.vue?vue&type=style&index=0&id=df46dc20&lang=scss&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NoEmailAddressWarning.vue?vue&type=style&index=0&id=df46dc20&lang=scss&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `[data-v-df46dc20] .app-navigation-entry-link { align-items: center; line-height: unset !important; white-space: unset !important; } [data-v-df46dc20] .app-navigation-entry__name { overflow: unset !important; white-space: unset !important; text-overflow: unset !important; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NumberInput.vue?vue&type=style&index=0&id=0b9f9aee&lang=scss&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/NumberInput.vue?vue&type=style&index=0&id=0b9f9aee&lang=scss&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.number-input input[data-v-0b9f9aee] { width: 100%; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/SelectWrapper.vue?vue&type=style&index=0&id=629bb0a4&lang=scss&scoped=true": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/SelectWrapper.vue?vue&type=style&index=0&id=629bb0a4&lang=scss&scoped=true ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `select[data-v-629bb0a4] { width: 100%; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextArea.vue?vue&type=style&index=0&id=97af0b86&lang=scss&scoped=true": /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextArea.vue?vue&type=style&index=0&id=97af0b86&lang=scss&scoped=true ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.text-area textarea[data-v-97af0b86] { display: block; width: 100%; resize: none; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextInput.vue?vue&type=style&index=0&id=3f44c2ca&lang=scss&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppointmentConfigModal/TextInput.vue?vue&type=style&index=0&id=3f44c2ca&lang=scss&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.text-input input[data-v-3f44c2ca] { width: 100%; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/CalendarGrid.vue?vue&type=style&index=0&id=27464dd4&scoped=true&lang=scss": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/CalendarGrid.vue?vue&type=style&index=0&id=27464dd4&scoped=true&lang=scss ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.calendar-grid-checkbox[data-v-27464dd4] { border-style: solid; border-width: 2px; border-radius: 4px; height: 16px; width: 16px; } .calendar-grid-checkbox-checked[data-v-27464dd4] { border-style: solid; border-width: 8px; border-radius: 4px; height: 16px; width: 16px; } .fullcalendar-widget[data-v-27464dd4] { min-height: 500px; } .fullcalendar-widget[data-v-27464dd4] .fc-col-header-cell-cushion { font-size: 9px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Attachments/AttachmentsList.vue?vue&type=style&index=0&id=5efccc46&lang=scss&scoped=true": /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Attachments/AttachmentsList.vue?vue&type=style&index=0&id=5efccc46&lang=scss&scoped=true ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.attachments-input[data-v-5efccc46] { display: none; } .attachments-summary[data-v-5efccc46] { display: flex; align-items: center; justify-content: space-between; padding-left: 6px; } .attachments-summary .attachments-summary-inner[data-v-5efccc46] { display: flex; align-items: center; } .attachments-summary .attachments-summary-inner span[data-v-5efccc46] { width: 34px; height: 34px; margin-left: -10px; margin-right: 5px; } .attachments-summary .attachments-summary-inner .attachments-summary-inner-label[data-v-5efccc46] { padding: 0 7px; font-weight: bold; } .attachments-list[data-v-5efccc46] { margin: 0 -8px; } .attachments-list .attachments-list-item[data-v-5efccc46] .list-item { padding: 0 8px; } .attachments-list .attachments-list-item[data-v-5efccc46] .list-item-content__wrapper { height: 44px; } .attachments-list .attachments-list-item[data-v-5efccc46] .list-item-content { padding-left: 18px; } .attachments-list .attachments-list-item[data-v-5efccc46] .line-one__title { font-weight: unset; } #attachments .empty-content[data-v-5efccc46] { margin-top: 1rem; text-align: center; } .button-group[data-v-5efccc46] { display: flex; align-content: center; justify-content: center; } .button-group button[data-v-5efccc46]:first-child { margin-right: 6px; } .attachment-icon[data-v-5efccc46] { width: 24px; height: 24px; border-radius: var(--border-radius); } .external-link-message[data-v-5efccc46] { overflow-wrap: break-word; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/AvatarParticipationStatus.vue?vue&type=style&index=0&id=7117b730&lang=scss&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/AvatarParticipationStatus.vue?vue&type=style&index=0&id=7117b730&lang=scss&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `[data-v-7117b730] .avatar-participation-status__indicator { bottom: 20px; left: 43px; position: relative; opacity: 0.8; } .avatar-participation-status__text[data-v-7117b730] { opacity: 0.45; left: 63px; bottom: 21px; white-space: nowrap; position: relative; min-width: 220px; text-overflow: ellipsis; overflow: hidden; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/CalendarPickerHeader.vue?vue&type=style&index=0&id=e5da09ca&lang=scss": /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/CalendarPickerHeader.vue?vue&type=style&index=0&id=e5da09ca&lang=scss ***! \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.event-popover .calendar-picker-header button { margin-left: -9px; } .event-popover .calendar-picker-header button .button-vue__text { margin-left: 0; } .event-popover .calendar-picker-header--readonly button .button-vue__text { margin-left: 2px; } .app-sidebar .calendar-picker-header button { margin-left: -14px; } .app-sidebar .calendar-picker-header button .button-vue__text { margin-left: 10px; } .app-sidebar .calendar-picker-header--readonly button .button-vue__text { margin-left: 6px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/CalendarPickerHeader.vue?vue&type=style&index=1&id=e5da09ca&lang=scss&scoped=true": /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/CalendarPickerHeader.vue?vue&type=style&index=1&id=e5da09ca&lang=scss&scoped=true ***! \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.calendar-picker-header[data-v-e5da09ca] { display: flex; align-self: flex-start; margin-bottom: 5px; max-width: calc(100% - 79px); } .calendar-picker-header__picker[data-v-e5da09ca] { display: flex; min-width: 0; } .calendar-picker-header__picker[data-v-e5da09ca] .v-popper { display: flex; min-width: 0; } .calendar-picker-header__picker[data-v-e5da09ca]:disabled, .calendar-picker-header__picker[data-v-e5da09ca] :disabled { opacity: 1 !important; filter: unset !important; } .calendar-picker-header__icon[data-v-e5da09ca] { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; } .calendar-picker-header__icon__dot[data-v-e5da09ca] { width: 16px; height: 16px; border-radius: 16px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/FreeBusy/FreeBusy.vue?vue&type=style&index=0&id=a60f3f46&lang=scss&scoped=true": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/FreeBusy/FreeBusy.vue?vue&type=style&index=0&id=a60f3f46&lang=scss&scoped=true ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.icon-close[data-v-a60f3f46] { display: block; height: 100%; } .modal__content[data-v-a60f3f46] { padding: 50px; margin-bottom: 95px; } .modal__content__actions[data-v-a60f3f46] { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .modal__content__actions__select[data-v-a60f3f46] { width: 260px; } .modal__content__actions__date[data-v-a60f3f46] { display: flex; justify-content: space-between; align-items: center; } .modal__content__actions__date > *[data-v-a60f3f46] { margin-left: 5px; } .modal__content__header[data-v-a60f3f46] { margin-bottom: 20px; } .modal__content__header h3[data-v-a60f3f46] { font-weight: 500; } .modal__content__header__attendees__user-bubble[data-v-a60f3f46] { margin-right: 5px; } .modal__content__footer[data-v-a60f3f46] { display: flex; justify-content: space-between; align-items: center; margin-top: 20px; } .modal__content__footer__title h3[data-v-a60f3f46] { font-weight: 500; } .modal__content__footer__title__timezone[data-v-a60f3f46] { color: var(--color-text-lighter); } [data-v-a60f3f46] .vs__search { text-overflow: ellipsis; } [data-v-a60f3f46] .mx-input { height: 38px !important; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/FreeBusy/FreeBusy.vue?vue&type=style&index=1&id=a60f3f46&lang=scss": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/FreeBusy/FreeBusy.vue?vue&type=style&index=1&id=a60f3f46&lang=scss ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.blocking-event-free-busy { z-index: 3 !important; } .free-busy-block { opacity: 0.7 !important; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/InvitationResponseButtons.vue?vue&type=style&index=0&id=bc1cb2d6&lang=scss&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/InvitationResponseButtons.vue?vue&type=style&index=0&id=bc1cb2d6&lang=scss&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.invitation-response-buttons[data-v-bc1cb2d6] { display: flex; justify-content: flex-end; gap: 5px; margin-bottom: 8px; } .invitation-response-buttons--grow[data-v-bc1cb2d6] { width: 100%; } .invitation-response-buttons--grow .invitation-response-buttons__button[data-v-bc1cb2d6] { flex: 1 auto; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesList.vue?vue&type=style&index=0&id=51e2fbdb&lang=scss&scoped=true": /*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesList.vue?vue&type=style&index=0&id=51e2fbdb&lang=scss&scoped=true ***! \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.invitees-list[data-v-51e2fbdb] { margin-top: 12px; } .invitees-list__header[data-v-51e2fbdb] { display: flex; gap: 5px; padding: 5px 5px 5px 6px; } .invitees-list__more[data-v-51e2fbdb] { padding: 15px 0 0 46px; font-weight: bold; opacity: 0.75; } .invitees-list .invitees-list-button-group[data-v-51e2fbdb] { display: flex; flex-wrap: wrap; gap: 5px; } .invitees-list .invitees-list-button-group__button[data-v-51e2fbdb] { flex: 1 0 200px; } .invitees-list .invitees-list-button-group__button[data-v-51e2fbdb] .button-vue__text { white-space: unset !important; overflow: unset !important; text-overflow: unset !important; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListItem.vue?vue&type=style&index=0&id=43ae7fe4&lang=scss&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/InviteesListItem.vue?vue&type=style&index=0&id=43ae7fe4&lang=scss&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.invitees-list-item[data-v-43ae7fe4] { flex-wrap: wrap; } .invitees-list-item__actions[data-v-43ae7fe4] { display: flex; } .invitees-list-item__displayname[data-v-43ae7fe4] { margin-bottom: 17px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } .invitees-list-item__groupname[data-v-43ae7fe4] { margin-bottom: 0px; } .avatar-participation-status[data-v-43ae7fe4] { margin-top: 5px; } .invitees-list-item__member-count[data-v-43ae7fe4] { color: var(--color-text-maxcontrast); font-weight: 300; } .member-list[data-v-43ae7fe4] { height: auto; max-height: 0; flex-basis: 100%; overflow: hidden; transition: all 0.3s ease; padding: 0; opacity: 0; } .member-list--open[data-v-43ae7fe4] { max-height: 1000px; transition: all 0.3s ease; padding: 0 0 10px 15px; opacity: 1; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/OrganizerListItem.vue?vue&type=style&index=0&id=e4bd912c&lang=scss&scoped=true": /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Invitees/OrganizerListItem.vue?vue&type=style&index=0&id=e4bd912c&lang=scss&scoped=true ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.invitees-list-item__displayname[data-v-e4bd912c] { margin-bottom: 13px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } .invitees-list-item__organizer-hint[data-v-e4bd912c] { margin-bottom: 14px; } .avatar-participation-status[data-v-e4bd912c] { margin-top: 10px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=style&index=0&id=04aa9fca&lang=scss&scoped=true": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelect.vue?vue&type=style&index=0&id=04aa9fca&lang=scss&scoped=true ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.property-select__input[data-v-04aa9fca] { width: calc(100% - 34px - 34px); }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=style&index=0&id=3787864a&lang=scss&scoped=true": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectAjax.vue?vue&type=style&index=0&id=3787864a&lang=scss&scoped=true ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.property-select__input[data-v-3787864a] { width: calc(100% - 34px - 34px); }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectClient.vue?vue&type=style&index=0&id=d3ad9774&lang=scss&scoped=true": /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectClient.vue?vue&type=style&index=0&id=d3ad9774&lang=scss&scoped=true ***! \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.property-select__input[data-v-d3ad9774] { width: calc(100% - 34px - 34px); }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectLieu.vue?vue&type=style&index=0&id=2cac0b28&lang=scss&scoped=true": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertySelectLieu.vue?vue&type=style&index=0&id=2cac0b28&lang=scss&scoped=true ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.property-select__input[data-v-2cac0b28] { width: calc(100% - 34px - 34px); }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListItem.vue?vue&type=style&index=0&id=1372f36a&lang=scss&scoped=true": /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListItem.vue?vue&type=style&index=0&id=1372f36a&lang=scss&scoped=true ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.resource-list-item__displayname[data-v-1372f36a] { margin-bottom: 17px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } .avatar-participation-status[data-v-1372f36a] { margin-top: 5px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListSearch.vue?vue&type=style&index=0&id=1c201660&lang=scss&scoped=true": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceListSearch.vue?vue&type=style&index=0&id=1c201660&lang=scss&scoped=true ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.resource-search__multiselect[data-v-1c201660] { padding-bottom: 5px !important; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/SaveButtons.vue?vue&type=style&index=0&id=8f0b8a9c&lang=scss&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/SaveButtons.vue?vue&type=style&index=0&id=8f0b8a9c&lang=scss&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.save-buttons[data-v-8f0b8a9c] { display: flex; gap: 5px; flex-wrap: wrap; justify-content: center; } .save-buttons--grow button[data-v-8f0b8a9c] { flex: 1 fit-content; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPicker.vue?vue&type=style&index=0&id=271fa576&lang=scss&scoped=true": /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPicker.vue?vue&type=style&index=0&id=271fa576&lang=scss&scoped=true ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `[data-v-271fa576] .multiselect__tags { margin: 3px 0; } .calendar-picker__tag[data-v-271fa576] { border: 1px solid var(--color-border); border-radius: var(--border-radius); padding: 0 5px; } .calendar-picker__tag + .calendar-picker__tag[data-v-271fa576] { margin-left: 5px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPicker.vue?vue&type=style&index=1&id=271fa576&lang=scss": /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/CalendarPicker.vue?vue&type=style&index=1&id=271fa576&lang=scss ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.vs__search { flex-basis: 0; } .vs__dropdown-menu { z-index: 10000010 !important; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/DatePicker.vue?vue&type=style&index=0&id=4ccb5234&lang=scss&scoped=true": /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Shared/DatePicker.vue?vue&type=style&index=0&id=4ccb5234&lang=scss&scoped=true ***! \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.highlighted-timezone-icon[data-v-4ccb5234] { opacity: 0.7; } [data-v-4ccb5234] .mx-icon-calendar { right: 0; } [data-v-4ccb5234] .multiselect__content-wrapper { border: none !important; position: relative !important; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Calendar.vue?vue&type=style&index=0&id=1eedbe78&lang=scss": /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/Calendar.vue?vue&type=style&index=0&id=1eedbe78&lang=scss ***! \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.calendar-Widget { width: 100%; background-color: red; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSidebar.vue?vue&type=style&index=0&id=581304a8&lang=scss&scoped=true": /*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/EditSidebar.vue?vue&type=style&index=0&id=581304a8&lang=scss&scoped=true ***! \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.modal-content[data-v-581304a8] { padding: 16px; position: relative; } .modal-content .modal-content-preloader[data-v-581304a8] { position: absolute; top: 0; left: 0; right: 0; height: 6px; } .modal-content .modal-content-preloader div[data-v-581304a8] { position: absolute; top: 0; left: 0; background: var(--color-primary-element); height: 6px; transition: width 0.3s linear; } .modal-subtitle[data-v-581304a8] { font-weight: bold; font-size: 16px; margin-top: 16px; } .modal-h[data-v-581304a8] { font-size: 24px; font-weight: bold; margin: 10px 0; } .modal-footer[data-v-581304a8] { display: flex; align-items: center; justify-content: space-between; } .modal-footer .modal-footer-buttons[data-v-581304a8] { display: flex; } .modal-footer .modal-footer-buttons[data-v-581304a8] :first-child { margin-right: 6px; } .attachments[data-v-581304a8], .users[data-v-581304a8] { display: flex; flex-wrap: wrap; } .attachment-list-item[data-v-581304a8], .user-list-item[data-v-581304a8] { width: 50%; } .attachment-icon[data-v-581304a8] { width: 40px; height: auto; border-radius: var(--border-radius); } .property-location[data-v-581304a8] { margin-top: 10px; } .property-description[data-v-581304a8] { margin-bottom: 10px; } [data-v-581304a8] .app-sidebar-header__action { margin-top: 0 !important; max-height: none !important; flex-wrap: wrap; } [data-v-581304a8] .app-sidebar-header__action div { flex-shrink: 0; } [data-v-581304a8] .app-sidebar-header__desc { height: 0 !important; padding: 0 !important; margin: 0 !important; } [data-v-581304a8] .app-sidebar-header__desc .app-sidebar-header__menu { z-index: 1; } [data-v-581304a8] .app-sidebar-header__description { flex-direction: column; padding-top: 5px; } [data-v-581304a8] .app-sidebar-header__description .vs__open-indicator-button { padding: 0; } [data-v-581304a8] .app-sidebar-header__description .vs__clear { padding: 0; } [data-v-581304a8] .empty-content { height: 100vh; padding: 0 20px; }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css": /*!************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css ***! \************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, ` .button.primary.new-event[data-v-673844b5] { display: flex; align-items: center; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css": /*!******************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css ***! \******************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, ` .checkbox-container[data-v-6aff0820] { display: flex; align-items: center; gap: 8px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css": /*!********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css ***! \********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, ` .checkbox-container[data-v-56b63a1e] { display: flex; align-items: center; gap: 8px; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=style&index=0&id=5448722f&scoped=true&lang=css": /*!********************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=style&index=0&id=5448722f&scoped=true&lang=css ***! \********************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, ` [data-v-5448722f] #value { width: 0; } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/css-loader/dist/runtime/api.js": /*!*****************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/api.js ***! \*****************************************************/ /***/ ((module) => { "use strict"; /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ module.exports = function (cssWithMappingToString) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = ""; var needLayer = typeof item[5] !== "undefined"; if (item[4]) { content += "@supports (".concat(item[4], ") {"); } if (item[2]) { content += "@media ".concat(item[2], " {"); } if (needLayer) { content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); } content += cssWithMappingToString(item); if (needLayer) { content += "}"; } if (item[2]) { content += "}"; } if (item[4]) { content += "}"; } return content; }).join(""); }; // import a list of modules into the list list.i = function i(modules, media, dedupe, supports, layer) { if (typeof modules === "string") { modules = [[null, modules, undefined]]; } var alreadyImportedModules = {}; if (dedupe) { for (var k = 0; k < this.length; k++) { var id = this[k][0]; if (id != null) { alreadyImportedModules[id] = true; } } } for (var _k = 0; _k < modules.length; _k++) { var item = [].concat(modules[_k]); if (dedupe && alreadyImportedModules[item[0]]) { continue; } if (typeof layer !== "undefined") { if (typeof item[5] === "undefined") { item[5] = layer; } else { item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); item[5] = layer; } } if (media) { if (!item[2]) { item[2] = media; } else { item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); item[2] = media; } } if (supports) { if (!item[4]) { item[4] = "".concat(supports); } else { item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); item[4] = supports; } } list.push(item); } }; return list; }; /***/ }), /***/ "./node_modules/css-loader/dist/runtime/getUrl.js": /*!********************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***! \********************************************************/ /***/ ((module) => { "use strict"; module.exports = function (url, options) { if (!options) { options = {}; } if (!url) { return url; } url = String(url.__esModule ? url.default : url); // If url is already wrapped in quotes, remove them if (/^['"].*['"]$/.test(url)) { url = url.slice(1, -1); } if (options.hash) { url += options.hash; } // Should url be wrapped? // See https://drafts.csswg.org/css-values-3/#urls if (/["'() \t\n]|(%20)/.test(url) || options.needQuotes) { return "\"".concat(url.replace(/"/g, '\\"').replace(/\n/g, "\\n"), "\""); } return url; }; /***/ }), /***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js": /*!**************************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***! \**************************************************************/ /***/ ((module) => { "use strict"; module.exports = function (i) { return i[1]; }; /***/ }), /***/ "./node_modules/date-format-parse/es/format.js": /*!*****************************************************!*\ !*** ./node_modules/date-format-parse/es/format.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ format: () => (/* binding */ format) /* harmony export */ }); /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./node_modules/date-format-parse/es/util.js"); /* harmony import */ var _locale_en__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale/en */ "./node_modules/date-format-parse/es/locale/en.js"); var REGEX_FORMAT = /\[([^\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g; function pad(val) { var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; var output = "".concat(Math.abs(val)); var sign = val < 0 ? '-' : ''; while (output.length < len) { output = "0".concat(output); } return sign + output; } function getOffset(date) { return Math.round(date.getTimezoneOffset() / 15) * 15; } function formatTimezone(offset) { var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; var sign = offset > 0 ? '-' : '+'; var absOffset = Math.abs(offset); var hours = Math.floor(absOffset / 60); var minutes = absOffset % 60; return sign + pad(hours, 2) + delimeter + pad(minutes, 2); } var meridiem = function meridiem(h, _, isLowercase) { var word = h < 12 ? 'AM' : 'PM'; return isLowercase ? word.toLocaleLowerCase() : word; }; var formatFlags = { Y: function Y(date) { var y = date.getFullYear(); return y <= 9999 ? "".concat(y) : "+".concat(y); }, // Year: 00, 01, ..., 99 YY: function YY(date) { return pad(date.getFullYear(), 4).substr(2); }, // Year: 1900, 1901, ..., 2099 YYYY: function YYYY(date) { return pad(date.getFullYear(), 4); }, // Month: 1, 2, ..., 12 M: function M(date) { return date.getMonth() + 1; }, // Month: 01, 02, ..., 12 MM: function MM(date) { return pad(date.getMonth() + 1, 2); }, MMM: function MMM(date, locale) { return locale.monthsShort[date.getMonth()]; }, MMMM: function MMMM(date, locale) { return locale.months[date.getMonth()]; }, // Day of month: 1, 2, ..., 31 D: function D(date) { return date.getDate(); }, // Day of month: 01, 02, ..., 31 DD: function DD(date) { return pad(date.getDate(), 2); }, // Hour: 0, 1, ... 23 H: function H(date) { return date.getHours(); }, // Hour: 00, 01, ..., 23 HH: function HH(date) { return pad(date.getHours(), 2); }, // Hour: 1, 2, ..., 12 h: function h(date) { var hours = date.getHours(); if (hours === 0) { return 12; } if (hours > 12) { return hours % 12; } return hours; }, // Hour: 01, 02, ..., 12 hh: function hh() { var hours = formatFlags.h.apply(formatFlags, arguments); return pad(hours, 2); }, // Minute: 0, 1, ..., 59 m: function m(date) { return date.getMinutes(); }, // Minute: 00, 01, ..., 59 mm: function mm(date) { return pad(date.getMinutes(), 2); }, // Second: 0, 1, ..., 59 s: function s(date) { return date.getSeconds(); }, // Second: 00, 01, ..., 59 ss: function ss(date) { return pad(date.getSeconds(), 2); }, // 1/10 of second: 0, 1, ..., 9 S: function S(date) { return Math.floor(date.getMilliseconds() / 100); }, // 1/100 of second: 00, 01, ..., 99 SS: function SS(date) { return pad(Math.floor(date.getMilliseconds() / 10), 2); }, // Millisecond: 000, 001, ..., 999 SSS: function SSS(date) { return pad(date.getMilliseconds(), 3); }, // Day of week: 0, 1, ..., 6 d: function d(date) { return date.getDay(); }, // Day of week: 'Su', 'Mo', ..., 'Sa' dd: function dd(date, locale) { return locale.weekdaysMin[date.getDay()]; }, // Day of week: 'Sun', 'Mon',..., 'Sat' ddd: function ddd(date, locale) { return locale.weekdaysShort[date.getDay()]; }, // Day of week: 'Sunday', 'Monday', ...,'Saturday' dddd: function dddd(date, locale) { return locale.weekdays[date.getDay()]; }, // AM, PM A: function A(date, locale) { var meridiemFunc = locale.meridiem || meridiem; return meridiemFunc(date.getHours(), date.getMinutes(), false); }, // am, pm a: function a(date, locale) { var meridiemFunc = locale.meridiem || meridiem; return meridiemFunc(date.getHours(), date.getMinutes(), true); }, // Timezone: -01:00, +00:00, ... +12:00 Z: function Z(date) { return formatTimezone(getOffset(date), ':'); }, // Timezone: -0100, +0000, ... +1200 ZZ: function ZZ(date) { return formatTimezone(getOffset(date)); }, // Seconds timestamp: 512969520 X: function X(date) { return Math.floor(date.getTime() / 1000); }, // Milliseconds timestamp: 512969520900 x: function x(date) { return date.getTime(); }, w: function w(date, locale) { return (0,_util__WEBPACK_IMPORTED_MODULE_0__.getWeek)(date, { firstDayOfWeek: locale.firstDayOfWeek, firstWeekContainsDate: locale.firstWeekContainsDate }); }, ww: function ww(date, locale) { return pad(formatFlags.w(date, locale), 2); } }; function format(val, str) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ'; var date = (0,_util__WEBPACK_IMPORTED_MODULE_0__.toDate)(val); if (!(0,_util__WEBPACK_IMPORTED_MODULE_0__.isValidDate)(date)) { return 'Invalid Date'; } var locale = options.locale || _locale_en__WEBPACK_IMPORTED_MODULE_1__["default"]; return formatStr.replace(REGEX_FORMAT, function (match, p1) { if (p1) { return p1; } if (typeof formatFlags[match] === 'function') { return "".concat(formatFlags[match](date, locale)); } return match; }); } /***/ }), /***/ "./node_modules/date-format-parse/es/index.js": /*!****************************************************!*\ !*** ./node_modules/date-format-parse/es/index.js ***! \****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ format: () => (/* reexport safe */ _format__WEBPACK_IMPORTED_MODULE_0__.format), /* harmony export */ getWeek: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_2__.getWeek), /* harmony export */ isDate: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_2__.isDate), /* harmony export */ isValidDate: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_2__.isValidDate), /* harmony export */ parse: () => (/* reexport safe */ _parse__WEBPACK_IMPORTED_MODULE_1__.parse), /* harmony export */ toDate: () => (/* reexport safe */ _util__WEBPACK_IMPORTED_MODULE_2__.toDate) /* harmony export */ }); /* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./format */ "./node_modules/date-format-parse/es/format.js"); /* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse */ "./node_modules/date-format-parse/es/parse.js"); /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./node_modules/date-format-parse/es/util.js"); /***/ }), /***/ "./node_modules/date-format-parse/es/locale/en.js": /*!********************************************************!*\ !*** ./node_modules/date-format-parse/es/locale/en.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); var locale = { months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], firstDayOfWeek: 0, firstWeekContainsDate: 1 }; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (locale); /***/ }), /***/ "./node_modules/date-format-parse/es/parse.js": /*!****************************************************!*\ !*** ./node_modules/date-format-parse/es/parse.js ***! \****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ parse: () => (/* binding */ parse) /* harmony export */ }); /* harmony import */ var _locale_en__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale/en */ "./node_modules/date-format-parse/es/locale/en.js"); /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./node_modules/date-format-parse/es/util.js"); function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 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; } var formattingTokens = /(\[[^\[]*\])|(MM?M?M?|Do|DD?|ddd?d?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|S{1,3}|x|X|ZZ?|.)/g; var match1 = /\d/; // 0 - 9 var match2 = /\d\d/; // 00 - 99 var match3 = /\d{3}/; // 000 - 999 var match4 = /\d{4}/; // 0000 - 9999 var match1to2 = /\d\d?/; // 0 - 99 var matchShortOffset = /[+-]\d\d:?\d\d/; // +00:00 -00:00 +0000 or -0000 var matchSigned = /[+-]?\d+/; // -inf - inf var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 // const matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; // Word var YEAR = 'year'; var MONTH = 'month'; var DAY = 'day'; var HOUR = 'hour'; var MINUTE = 'minute'; var SECOND = 'second'; var MILLISECOND = 'millisecond'; var parseFlags = {}; var addParseFlag = function addParseFlag(token, regex, callback) { var tokens = Array.isArray(token) ? token : [token]; var func; if (typeof callback === 'string') { func = function func(input) { var value = parseInt(input, 10); return _defineProperty({}, callback, value); }; } else { func = callback; } tokens.forEach(function (key) { parseFlags[key] = [regex, func]; }); }; var escapeStringRegExp = function escapeStringRegExp(str) { return str.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&'); }; var matchWordRegExp = function matchWordRegExp(localeKey) { return function (locale) { var array = locale[localeKey]; if (!Array.isArray(array)) { throw new Error("Locale[".concat(localeKey, "] need an array")); } return new RegExp(array.map(escapeStringRegExp).join('|')); }; }; var matchWordCallback = function matchWordCallback(localeKey, key) { return function (input, locale) { var array = locale[localeKey]; if (!Array.isArray(array)) { throw new Error("Locale[".concat(localeKey, "] need an array")); } var index = array.indexOf(input); if (index < 0) { throw new Error('Invalid Word'); } return _defineProperty({}, key, index); }; }; addParseFlag('Y', matchSigned, YEAR); addParseFlag('YY', match2, function (input) { var year = new Date().getFullYear(); var cent = Math.floor(year / 100); var value = parseInt(input, 10); value = (value > 68 ? cent - 1 : cent) * 100 + value; return _defineProperty({}, YEAR, value); }); addParseFlag('YYYY', match4, YEAR); addParseFlag('M', match1to2, function (input) { return _defineProperty({}, MONTH, parseInt(input, 10) - 1); }); addParseFlag('MM', match2, function (input) { return _defineProperty({}, MONTH, parseInt(input, 10) - 1); }); addParseFlag('MMM', matchWordRegExp('monthsShort'), matchWordCallback('monthsShort', MONTH)); addParseFlag('MMMM', matchWordRegExp('months'), matchWordCallback('months', MONTH)); addParseFlag('D', match1to2, DAY); addParseFlag('DD', match2, DAY); addParseFlag(['H', 'h'], match1to2, HOUR); addParseFlag(['HH', 'hh'], match2, HOUR); addParseFlag('m', match1to2, MINUTE); addParseFlag('mm', match2, MINUTE); addParseFlag('s', match1to2, SECOND); addParseFlag('ss', match2, SECOND); addParseFlag('S', match1, function (input) { return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 100); }); addParseFlag('SS', match2, function (input) { return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 10); }); addParseFlag('SSS', match3, MILLISECOND); function matchMeridiem(locale) { return locale.meridiemParse || /[ap]\.?m?\.?/i; } function defaultIsPM(input) { return "".concat(input).toLowerCase().charAt(0) === 'p'; } addParseFlag(['A', 'a'], matchMeridiem, function (input, locale) { var isPM = typeof locale.isPM === 'function' ? locale.isPM(input) : defaultIsPM(input); return { isPM: isPM }; }); function offsetFromString(str) { var _ref8 = str.match(/([+-]|\d\d)/g) || ['-', '0', '0'], _ref9 = _slicedToArray(_ref8, 3), symbol = _ref9[0], hour = _ref9[1], minute = _ref9[2]; var minutes = parseInt(hour, 10) * 60 + parseInt(minute, 10); if (minutes === 0) { return 0; } return symbol === '+' ? -minutes : +minutes; } addParseFlag(['Z', 'ZZ'], matchShortOffset, function (input) { return { offset: offsetFromString(input) }; }); addParseFlag('x', matchSigned, function (input) { return { date: new Date(parseInt(input, 10)) }; }); addParseFlag('X', matchTimestamp, function (input) { return { date: new Date(parseFloat(input) * 1000) }; }); addParseFlag('d', match1, 'weekday'); addParseFlag('dd', matchWordRegExp('weekdaysMin'), matchWordCallback('weekdaysMin', 'weekday')); addParseFlag('ddd', matchWordRegExp('weekdaysShort'), matchWordCallback('weekdaysShort', 'weekday')); addParseFlag('dddd', matchWordRegExp('weekdays'), matchWordCallback('weekdays', 'weekday')); addParseFlag('w', match1to2, 'week'); addParseFlag('ww', match2, 'week'); function to24hour(hour, isPM) { if (hour !== undefined && isPM !== undefined) { if (isPM) { if (hour < 12) { return hour + 12; } } else if (hour === 12) { return 0; } } return hour; } function getFullInputArray(input) { var backupDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); var result = [0, 0, 1, 0, 0, 0, 0]; var backupArr = [backupDate.getFullYear(), backupDate.getMonth(), backupDate.getDate(), backupDate.getHours(), backupDate.getMinutes(), backupDate.getSeconds(), backupDate.getMilliseconds()]; var useBackup = true; for (var i = 0; i < 7; i++) { if (input[i] === undefined) { result[i] = useBackup ? backupArr[i] : result[i]; } else { result[i] = input[i]; useBackup = false; } } return result; } function createDate(y, m, d, h, M, s, ms) { var date; if (y < 100 && y >= 0) { date = new Date(y + 400, m, d, h, M, s, ms); if (isFinite(date.getFullYear())) { date.setFullYear(y); } } else { date = new Date(y, m, d, h, M, s, ms); } return date; } function createUTCDate() { var date; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var y = args[0]; if (y < 100 && y >= 0) { args[0] += 400; date = new Date(Date.UTC.apply(Date, args)); // eslint-disable-next-line no-restricted-globals if (isFinite(date.getUTCFullYear())) { date.setUTCFullYear(y); } } else { date = new Date(Date.UTC.apply(Date, args)); } return date; } function makeParser(dateString, format, locale) { var tokens = format.match(formattingTokens); if (!tokens) { throw new Error(); } var length = tokens.length; var mark = {}; for (var i = 0; i < length; i += 1) { var token = tokens[i]; var parseTo = parseFlags[token]; if (!parseTo) { var word = token.replace(/^\[|\]$/g, ''); if (dateString.indexOf(word) === 0) { dateString = dateString.substr(word.length); } else { throw new Error('not match'); } } else { var regex = typeof parseTo[0] === 'function' ? parseTo[0](locale) : parseTo[0]; var parser = parseTo[1]; var value = (regex.exec(dateString) || [])[0]; var obj = parser(value, locale); mark = _objectSpread({}, mark, {}, obj); dateString = dateString.replace(value, ''); } } return mark; } function parse(str, format) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; try { var _options$locale = options.locale, _locale = _options$locale === void 0 ? _locale_en__WEBPACK_IMPORTED_MODULE_0__["default"] : _options$locale, _options$backupDate = options.backupDate, backupDate = _options$backupDate === void 0 ? new Date() : _options$backupDate; var parseResult = makeParser(str, format, _locale); var year = parseResult.year, month = parseResult.month, day = parseResult.day, hour = parseResult.hour, minute = parseResult.minute, second = parseResult.second, millisecond = parseResult.millisecond, isPM = parseResult.isPM, date = parseResult.date, offset = parseResult.offset, weekday = parseResult.weekday, week = parseResult.week; if (date) { return date; } var inputArray = [year, month, day, hour, minute, second, millisecond]; inputArray[3] = to24hour(inputArray[3], isPM); // check week if (week !== undefined && month === undefined && day === undefined) { // new Date(year, 3) make sure in current year var firstDate = (0,_util__WEBPACK_IMPORTED_MODULE_1__.startOfWeekYear)(year === undefined ? backupDate : new Date(year, 3), { firstDayOfWeek: _locale.firstDayOfWeek, firstWeekContainsDate: _locale.firstWeekContainsDate }); return new Date(firstDate.getTime() + (week - 1) * 7 * 24 * 3600 * 1000); } var parsedDate; var result = getFullInputArray(inputArray, backupDate); if (offset !== undefined) { result[6] += offset * 60 * 1000; parsedDate = createUTCDate.apply(void 0, _toConsumableArray(result)); } else { parsedDate = createDate.apply(void 0, _toConsumableArray(result)); } // check weekday if (weekday !== undefined && parsedDate.getDay() !== weekday) { return new Date(NaN); } return parsedDate; } catch (e) { return new Date(NaN); } } /***/ }), /***/ "./node_modules/date-format-parse/es/util.js": /*!***************************************************!*\ !*** ./node_modules/date-format-parse/es/util.js ***! \***************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getWeek: () => (/* binding */ getWeek), /* harmony export */ isDate: () => (/* binding */ isDate), /* harmony export */ isValidDate: () => (/* binding */ isValidDate), /* harmony export */ startOfWeek: () => (/* binding */ startOfWeek), /* harmony export */ startOfWeekYear: () => (/* binding */ startOfWeekYear), /* harmony export */ toDate: () => (/* binding */ toDate) /* harmony export */ }); function isDate(value) { return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]'; } function toDate(value) { if (isDate(value)) { return new Date(value.getTime()); } if (value == null) { return new Date(NaN); } return new Date(value); } function isValidDate(value) { return isDate(value) && !isNaN(value.getTime()); } function startOfWeek(value) { var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; if (!(firstDayOfWeek >= 0 && firstDayOfWeek <= 6)) { throw new RangeError('weekStartsOn must be between 0 and 6'); } var date = toDate(value); var day = date.getDay(); var diff = (day + 7 - firstDayOfWeek) % 7; date.setDate(date.getDate() - diff); date.setHours(0, 0, 0, 0); return date; } function startOfWeekYear(value) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref$firstDayOfWeek = _ref.firstDayOfWeek, firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek, _ref$firstWeekContain = _ref.firstWeekContainsDate, firstWeekContainsDate = _ref$firstWeekContain === void 0 ? 1 : _ref$firstWeekContain; if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) { throw new RangeError('firstWeekContainsDate must be between 1 and 7'); } var date = toDate(value); var year = date.getFullYear(); var firstDateOfFirstWeek = new Date(0); for (var i = year + 1; i >= year - 1; i--) { firstDateOfFirstWeek.setFullYear(i, 0, firstWeekContainsDate); firstDateOfFirstWeek.setHours(0, 0, 0, 0); firstDateOfFirstWeek = startOfWeek(firstDateOfFirstWeek, firstDayOfWeek); if (date.getTime() >= firstDateOfFirstWeek.getTime()) { break; } } return firstDateOfFirstWeek; } function getWeek(value) { var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref2$firstDayOfWeek = _ref2.firstDayOfWeek, firstDayOfWeek = _ref2$firstDayOfWeek === void 0 ? 0 : _ref2$firstDayOfWeek, _ref2$firstWeekContai = _ref2.firstWeekContainsDate, firstWeekContainsDate = _ref2$firstWeekContai === void 0 ? 1 : _ref2$firstWeekContai; var date = toDate(value); var firstDateOfThisWeek = startOfWeek(date, firstDayOfWeek); var firstDateOfFirstWeek = startOfWeekYear(date, { firstDayOfWeek: firstDayOfWeek, firstWeekContainsDate: firstWeekContainsDate }); var diff = firstDateOfThisWeek.getTime() - firstDateOfFirstWeek.getTime(); return Math.round(diff / (7 * 24 * 3600 * 1000)) + 1; } /***/ }), /***/ "./node_modules/debounce/index.js": /*!****************************************!*\ !*** ./node_modules/debounce/index.js ***! \****************************************/ /***/ ((module) => { function debounce(function_, wait = 100, options = {}) { if (typeof function_ !== 'function') { throw new TypeError(`Expected the first parameter to be a function, got \`${typeof function_}\`.`); } if (wait < 0) { throw new RangeError('`wait` must not be negative.'); } // TODO: Deprecate the boolean parameter at some point. const {immediate} = typeof options === 'boolean' ? {immediate: options} : options; let storedContext; let storedArguments; let timeoutId; let timestamp; let result; function later() { const last = Date.now() - timestamp; if (last < wait && last >= 0) { timeoutId = setTimeout(later, wait - last); } else { timeoutId = undefined; if (!immediate) { const callContext = storedContext; const callArguments = storedArguments; storedContext = undefined; storedArguments = undefined; result = function_.apply(callContext, callArguments); } } } const debounced = function (...arguments_) { if (storedContext && this !== storedContext) { throw new Error('Debounced method called with different contexts.'); } storedContext = this; // eslint-disable-line unicorn/no-this-assignment storedArguments = arguments_; timestamp = Date.now(); const callNow = immediate && !timeoutId; if (!timeoutId) { timeoutId = setTimeout(later, wait); } if (callNow) { const callContext = storedContext; const callArguments = storedArguments; storedContext = undefined; storedArguments = undefined; result = function_.apply(callContext, callArguments); } return result; }; debounced.clear = () => { if (!timeoutId) { return; } clearTimeout(timeoutId); timeoutId = undefined; }; debounced.flush = () => { if (!timeoutId) { return; } const callContext = storedContext; const callArguments = storedArguments; storedContext = undefined; storedArguments = undefined; result = function_.apply(callContext, callArguments); clearTimeout(timeoutId); timeoutId = undefined; }; return debounced; } // Adds compatibility for ES modules module.exports.debounce = debounce; module.exports = debounce; /***/ }), /***/ "./node_modules/debug/src/browser.js": /*!*******************************************!*\ !*** ./node_modules/debug/src/browser.js ***! \*******************************************/ /***/ ((module, exports, __webpack_require__) => { /* provided dependency */ var process = __webpack_require__(/*! ./node_modules/process/browser.js */ "./node_modules/process/browser.js"); /* eslint-env browser */ /** * This is the web browser implementation of `debug()`. */ exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.storage = localstorage(); exports.destroy = (() => { let warned = false; return () => { if (!warned) { warned = true; console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); } }; })(); /** * Colors. */ exports.colors = [ '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33' ]; /** * Currently only WebKit-based Web Inspectors, Firefox >= v31, * and the Firebug extension (any Firefox version) are known * to support "%c" CSS customizations. * * TODO: add a `localStorage` variable to explicitly enable/disable colors */ // eslint-disable-next-line complexity function useColors() { // NB: In an Electron preload script, document will be defined but not fully // initialized. Since we know we're in Chrome, we'll just detect this case // explicitly if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { return true; } // Internet Explorer and Edge do not support colors. if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } // Is webkit? http://stackoverflow.com/a/16459606/376773 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || // Is firebug? http://stackoverflow.com/a/398120/376773 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || // Is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || // Double check webkit in userAgent just in case we are in a worker (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); } /** * Colorize log arguments if enabled. * * @api public */ function formatArgs(args) { args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); if (!this.useColors) { return; } const c = 'color: ' + this.color; args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other // arguments passed either before or after the %c, so we need to // figure out the correct index to insert the CSS into let index = 0; let lastC = 0; args[0].replace(/%[a-zA-Z%]/g, match => { if (match === '%%') { return; } index++; if (match === '%c') { // We only are interested in the *last* %c // (the user may have provided their own) lastC = index; } }); args.splice(lastC, 0, c); } /** * Invokes `console.debug()` when available. * No-op when `console.debug` is not a "function". * If `console.debug` is not available, falls back * to `console.log`. * * @api public */ exports.log = console.debug || console.log || (() => {}); /** * Save `namespaces`. * * @param {String} namespaces * @api private */ function save(namespaces) { try { if (namespaces) { exports.storage.setItem('debug', namespaces); } else { exports.storage.removeItem('debug'); } } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } } /** * Load `namespaces`. * * @return {String} returns the previously persisted debug modes * @api private */ function load() { let r; try { r = exports.storage.getItem('debug'); } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } // If debug isn't set in LS, and we're in Electron, try to load $DEBUG if (!r && typeof process !== 'undefined' && 'env' in process) { r = process.env.DEBUG; } return r; } /** * Localstorage attempts to return the localstorage. * * This is necessary because safari throws * when a user disables cookies/localstorage * and you attempt to access it. * * @return {LocalStorage} * @api private */ function localstorage() { try { // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context // The Browser also has localStorage in the global context. return localStorage; } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } } module.exports = __webpack_require__(/*! ./common */ "./node_modules/debug/src/common.js")(exports); const {formatters} = module.exports; /** * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. */ formatters.j = function (v) { try { return JSON.stringify(v); } catch (error) { return '[UnexpectedJSONParseError]: ' + error.message; } }; /***/ }), /***/ "./node_modules/debug/src/common.js": /*!******************************************!*\ !*** ./node_modules/debug/src/common.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * This is the common logic for both the Node.js and web browser * implementations of `debug()`. */ function setup(env) { createDebug.debug = createDebug; createDebug.default = createDebug; createDebug.coerce = coerce; createDebug.disable = disable; createDebug.enable = enable; createDebug.enabled = enabled; createDebug.humanize = __webpack_require__(/*! ms */ "./node_modules/ms/index.js"); createDebug.destroy = destroy; Object.keys(env).forEach(key => { createDebug[key] = env[key]; }); /** * The currently active debug mode names, and names to skip. */ createDebug.names = []; createDebug.skips = []; /** * Map of special "%n" handling functions, for the debug "format" argument. * * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". */ createDebug.formatters = {}; /** * Selects a color for a debug namespace * @param {String} namespace The namespace string for the debug instance to be colored * @return {Number|String} An ANSI color code for the given namespace * @api private */ function selectColor(namespace) { let hash = 0; for (let i = 0; i < namespace.length; i++) { hash = ((hash << 5) - hash) + namespace.charCodeAt(i); hash |= 0; // Convert to 32bit integer } return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; } createDebug.selectColor = selectColor; /** * Create a debugger with the given `namespace`. * * @param {String} namespace * @return {Function} * @api public */ function createDebug(namespace) { let prevTime; let enableOverride = null; let namespacesCache; let enabledCache; function debug(...args) { // Disabled? if (!debug.enabled) { return; } const self = debug; // Set `diff` timestamp const curr = Number(new Date()); const ms = curr - (prevTime || curr); self.diff = ms; self.prev = prevTime; self.curr = curr; prevTime = curr; args[0] = createDebug.coerce(args[0]); if (typeof args[0] !== 'string') { // Anything else let's inspect with %O args.unshift('%O'); } // Apply any `formatters` transformations let index = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { // If we encounter an escaped % then don't increase the array index if (match === '%%') { return '%'; } index++; const formatter = createDebug.formatters[format]; if (typeof formatter === 'function') { const val = args[index]; match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` args.splice(index, 1); index--; } return match; }); // Apply env-specific formatting (colors, etc.) createDebug.formatArgs.call(self, args); const logFn = self.log || createDebug.log; logFn.apply(self, args); } debug.namespace = namespace; debug.useColors = createDebug.useColors(); debug.color = createDebug.selectColor(namespace); debug.extend = extend; debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. Object.defineProperty(debug, 'enabled', { enumerable: true, configurable: false, get: () => { if (enableOverride !== null) { return enableOverride; } if (namespacesCache !== createDebug.namespaces) { namespacesCache = createDebug.namespaces; enabledCache = createDebug.enabled(namespace); } return enabledCache; }, set: v => { enableOverride = v; } }); // Env-specific initialization logic for debug instances if (typeof createDebug.init === 'function') { createDebug.init(debug); } return debug; } function extend(namespace, delimiter) { const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); newDebug.log = this.log; return newDebug; } /** * Enables a debug mode by namespaces. This can include modes * separated by a colon and wildcards. * * @param {String} namespaces * @api public */ function enable(namespaces) { createDebug.save(namespaces); createDebug.namespaces = namespaces; createDebug.names = []; createDebug.skips = []; let i; const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); const len = split.length; for (i = 0; i < len; i++) { if (!split[i]) { // ignore empty strings continue; } namespaces = split[i].replace(/\*/g, '.*?'); if (namespaces[0] === '-') { createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); } else { createDebug.names.push(new RegExp('^' + namespaces + '$')); } } } /** * Disable debug output. * * @return {String} namespaces * @api public */ function disable() { const namespaces = [ ...createDebug.names.map(toNamespace), ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) ].join(','); createDebug.enable(''); return namespaces; } /** * Returns true if the given mode name is enabled, false otherwise. * * @param {String} name * @return {Boolean} * @api public */ function enabled(name) { if (name[name.length - 1] === '*') { return true; } let i; let len; for (i = 0, len = createDebug.skips.length; i < len; i++) { if (createDebug.skips[i].test(name)) { return false; } } for (i = 0, len = createDebug.names.length; i < len; i++) { if (createDebug.names[i].test(name)) { return true; } } return false; } /** * Convert regexp to namespace * * @param {RegExp} regxep * @return {String} namespace * @api private */ function toNamespace(regexp) { return regexp.toString() .substring(2, regexp.toString().length - 2) .replace(/\.\*\?$/, '*'); } /** * Coerce `val`. * * @param {Mixed} val * @return {Mixed} * @api private */ function coerce(val) { if (val instanceof Error) { return val.stack || val.message; } return val; } /** * XXX DO NOT USE. This is a temporary stub function. * XXX It WILL be removed in the next major release. */ function destroy() { console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); } createDebug.enable(createDebug.load()); return createDebug; } module.exports = setup; /***/ }), /***/ "./node_modules/dompurify/dist/purify.js": /*!***********************************************!*\ !*** ./node_modules/dompurify/dist/purify.js ***! \***********************************************/ /***/ (function(module) { /*! @license DOMPurify 3.0.8 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.8/LICENSE */ (function (global, factory) { true ? module.exports = factory() : 0; })(this, (function () { 'use strict'; const { entries, setPrototypeOf, isFrozen, getPrototypeOf, getOwnPropertyDescriptor } = Object; let { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports let { apply, construct } = typeof Reflect !== 'undefined' && Reflect; if (!freeze) { freeze = function freeze(x) { return x; }; } if (!seal) { seal = function seal(x) { return x; }; } if (!apply) { apply = function apply(fun, thisValue, args) { return fun.apply(thisValue, args); }; } if (!construct) { construct = function construct(Func, args) { return new Func(...args); }; } const arrayForEach = unapply(Array.prototype.forEach); const arrayPop = unapply(Array.prototype.pop); const arrayPush = unapply(Array.prototype.push); const stringToLowerCase = unapply(String.prototype.toLowerCase); const stringToString = unapply(String.prototype.toString); const stringMatch = unapply(String.prototype.match); const stringReplace = unapply(String.prototype.replace); const stringIndexOf = unapply(String.prototype.indexOf); const stringTrim = unapply(String.prototype.trim); const regExpTest = unapply(RegExp.prototype.test); const typeErrorCreate = unconstruct(TypeError); /** * Creates a new function that calls the given function with a specified thisArg and arguments. * * @param {Function} func - The function to be wrapped and called. * @returns {Function} A new function that calls the given function with a specified thisArg and arguments. */ function unapply(func) { return function (thisArg) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return apply(func, thisArg, args); }; } /** * Creates a new function that constructs an instance of the given constructor function with the provided arguments. * * @param {Function} func - The constructor function to be wrapped and called. * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments. */ function unconstruct(func) { return function () { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return construct(func, args); }; } /** * Add properties to a lookup table * * @param {Object} set - The set to which elements will be added. * @param {Array} array - The array containing elements to be added to the set. * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set. * @returns {Object} The modified set with added elements. */ function addToSet(set, array) { let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase; if (setPrototypeOf) { // Make 'in' and truthy checks like Boolean(set.constructor) // independent of any properties defined on Object.prototype. // Prevent prototype setters from intercepting set as a this value. setPrototypeOf(set, null); } let l = array.length; while (l--) { let element = array[l]; if (typeof element === 'string') { const lcElement = transformCaseFunc(element); if (lcElement !== element) { // Config presets (e.g. tags.js, attrs.js) are immutable. if (!isFrozen(array)) { array[l] = lcElement; } element = lcElement; } } set[element] = true; } return set; } /** * Clean up an array to harden against CSPP * * @param {Array} array - The array to be cleaned. * @returns {Array} The cleaned version of the array */ function cleanArray(array) { for (let index = 0; index < array.length; index++) { if (getOwnPropertyDescriptor(array, index) === undefined) { array[index] = null; } } return array; } /** * Shallow clone an object * * @param {Object} object - The object to be cloned. * @returns {Object} A new object that copies the original. */ function clone(object) { const newObject = create(null); for (const [property, value] of entries(object)) { if (getOwnPropertyDescriptor(object, property) !== undefined) { if (Array.isArray(value)) { newObject[property] = cleanArray(value); } else if (value && typeof value === 'object' && value.constructor === Object) { newObject[property] = clone(value); } else { newObject[property] = value; } } } return newObject; } /** * This method automatically checks if the prop is function or getter and behaves accordingly. * * @param {Object} object - The object to look up the getter function in its prototype chain. * @param {String} prop - The property name for which to find the getter function. * @returns {Function} The getter function found in the prototype chain or a fallback function. */ function lookupGetter(object, prop) { while (object !== null) { const desc = getOwnPropertyDescriptor(object, prop); if (desc) { if (desc.get) { return unapply(desc.get); } if (typeof desc.value === 'function') { return unapply(desc.value); } } object = getPrototypeOf(object); } function fallbackValue(element) { console.warn('fallback value for', element); return null; } return fallbackValue; } const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']); const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default. // We still need to know them so that we can do namespace // checks properly in case one wants to add them to // allow-list. const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']); const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); // Similarly to SVG, we want to know all MathML elements, // even those that we disallow by default. const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']); const text = freeze(['#text']); const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']); const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']); const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']); const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']); // eslint-disable-next-line unicorn/better-regex const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); const TMPLIT_EXPR = seal(/\${[\w\W]*}/gm); const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape ); const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex ); const DOCTYPE_NAME = seal(/^html$/i); var EXPRESSIONS = /*#__PURE__*/Object.freeze({ __proto__: null, MUSTACHE_EXPR: MUSTACHE_EXPR, ERB_EXPR: ERB_EXPR, TMPLIT_EXPR: TMPLIT_EXPR, DATA_ATTR: DATA_ATTR, ARIA_ATTR: ARIA_ATTR, IS_ALLOWED_URI: IS_ALLOWED_URI, IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA, ATTR_WHITESPACE: ATTR_WHITESPACE, DOCTYPE_NAME: DOCTYPE_NAME }); const getGlobal = function getGlobal() { return typeof window === 'undefined' ? null : window; }; /** * Creates a no-op policy for internal use only. * Don't export this function outside this module! * @param {TrustedTypePolicyFactory} trustedTypes The policy factory. * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix). * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types * are not supported or creating the policy failed). */ const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) { if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') { return null; } // Allow the callers to control the unique policy name // by adding a data-tt-policy-suffix to the script element with the DOMPurify. // Policy creation with duplicate names throws in Trusted Types. let suffix = null; const ATTR_NAME = 'data-tt-policy-suffix'; if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) { suffix = purifyHostElement.getAttribute(ATTR_NAME); } const policyName = 'dompurify' + (suffix ? '#' + suffix : ''); try { return trustedTypes.createPolicy(policyName, { createHTML(html) { return html; }, createScriptURL(scriptUrl) { return scriptUrl; } }); } catch (_) { // Policy creation failed (most likely another DOMPurify script has // already run). Skip creating the policy, as this will only cause errors // if TT are enforced. console.warn('TrustedTypes policy ' + policyName + ' could not be created.'); return null; } }; function createDOMPurify() { let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal(); const DOMPurify = root => createDOMPurify(root); /** * Version label, exposed for easier checks * if DOMPurify is up to date or not */ DOMPurify.version = '3.0.8'; /** * Array of elements that DOMPurify removed during sanitation. * Empty if nothing was removed. */ DOMPurify.removed = []; if (!window || !window.document || window.document.nodeType !== 9) { // Not running in a browser, provide a factory function // so that you can pass your own Window DOMPurify.isSupported = false; return DOMPurify; } let { document } = window; const originalDocument = document; const currentScript = originalDocument.currentScript; const { DocumentFragment, HTMLTemplateElement, Node, Element, NodeFilter, NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap, HTMLFormElement, DOMParser, trustedTypes } = window; const ElementPrototype = Element.prototype; const cloneNode = lookupGetter(ElementPrototype, 'cloneNode'); const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling'); const getChildNodes = lookupGetter(ElementPrototype, 'childNodes'); const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a // new document created via createHTMLDocument. As per the spec // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries) // a new empty registry is used when creating a template contents owner // document, so we use that as our parent document to ensure nothing // is inherited. if (typeof HTMLTemplateElement === 'function') { const template = document.createElement('template'); if (template.content && template.content.ownerDocument) { document = template.content.ownerDocument; } } let trustedTypesPolicy; let emptyHTML = ''; const { implementation, createNodeIterator, createDocumentFragment, getElementsByTagName } = document; const { importNode } = originalDocument; let hooks = {}; /** * Expose whether this browser supports running the full DOMPurify. */ DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined; const { MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR, DATA_ATTR, ARIA_ATTR, IS_SCRIPT_OR_DATA, ATTR_WHITESPACE } = EXPRESSIONS; let { IS_ALLOWED_URI: IS_ALLOWED_URI$1 } = EXPRESSIONS; /** * We consider the elements and attributes below to be safe. Ideally * don't add any new ones but feel free to remove unwanted ones. */ /* allowed element names */ let ALLOWED_TAGS = null; const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]); /* Allowed attribute names */ let ALLOWED_ATTR = null; const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]); /* * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements. * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements) * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list) * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`. */ let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, { tagNameCheck: { writable: true, configurable: false, enumerable: true, value: null }, attributeNameCheck: { writable: true, configurable: false, enumerable: true, value: null }, allowCustomizedBuiltInElements: { writable: true, configurable: false, enumerable: true, value: false } })); /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */ let FORBID_TAGS = null; /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */ let FORBID_ATTR = null; /* Decide if ARIA attributes are okay */ let ALLOW_ARIA_ATTR = true; /* Decide if custom data attributes are okay */ let ALLOW_DATA_ATTR = true; /* Decide if unknown protocols are okay */ let ALLOW_UNKNOWN_PROTOCOLS = false; /* Decide if self-closing tags in attributes are allowed. * Usually removed due to a mXSS issue in jQuery 3.0 */ let ALLOW_SELF_CLOSE_IN_ATTR = true; /* Output should be safe for common template engines. * This means, DOMPurify removes data attributes, mustaches and ERB */ let SAFE_FOR_TEMPLATES = false; /* Decide if document with ... should be returned */ let WHOLE_DOCUMENT = false; /* Track whether config is already set on this instance of DOMPurify. */ let SET_CONFIG = false; /* Decide if all elements (e.g. style, script) must be children of * document.body. By default, browsers might move them to document.head */ let FORCE_BODY = false; /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html * string (or a TrustedHTML object if Trusted Types are supported). * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead */ let RETURN_DOM = false; /* Decide if a DOM `DocumentFragment` should be returned, instead of a html * string (or a TrustedHTML object if Trusted Types are supported) */ let RETURN_DOM_FRAGMENT = false; /* Try to return a Trusted Type object instead of a string, return a string in * case Trusted Types are not supported */ let RETURN_TRUSTED_TYPE = false; /* Output should be free from DOM clobbering attacks? * This sanitizes markups named with colliding, clobberable built-in DOM APIs. */ let SANITIZE_DOM = true; /* Achieve full DOM Clobbering protection by isolating the namespace of named * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules. * * HTML/DOM spec rules that enable DOM Clobbering: * - Named Access on Window (§7.3.3) * - DOM Tree Accessors (§3.1.5) * - Form Element Parent-Child Relations (§4.10.3) * - Iframe srcdoc / Nested WindowProxies (§4.8.5) * - HTMLCollection (§4.2.10.2) * * Namespace isolation is implemented by prefixing `id` and `name` attributes * with a constant string, i.e., `user-content-` */ let SANITIZE_NAMED_PROPS = false; const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-'; /* Keep element content when removing element? */ let KEEP_CONTENT = true; /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead * of importing it into a new Document and returning a sanitized copy */ let IN_PLACE = false; /* Allow usage of profiles like html, svg and mathMl */ let USE_PROFILES = {}; /* Tags to ignore content of when KEEP_CONTENT is true */ let FORBID_CONTENTS = null; const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']); /* Tags that are safe for data: URIs */ let DATA_URI_TAGS = null; const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']); /* Attributes safe for values like "javascript:" */ let URI_SAFE_ATTRIBUTES = null; const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']); const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'; const SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; /* Document namespace */ let NAMESPACE = HTML_NAMESPACE; let IS_EMPTY_INPUT = false; /* Allowed XHTML+XML namespaces */ let ALLOWED_NAMESPACES = null; const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString); /* Parsing of strict XHTML documents */ let PARSER_MEDIA_TYPE = null; const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html']; const DEFAULT_PARSER_MEDIA_TYPE = 'text/html'; let transformCaseFunc = null; /* Keep a reference to config to pass to hooks */ let CONFIG = null; /* Ideally, do not touch anything below this line */ /* ______________________________________________ */ const formElement = document.createElement('form'); const isRegexOrFunction = function isRegexOrFunction(testValue) { return testValue instanceof RegExp || testValue instanceof Function; }; /** * _parseConfig * * @param {Object} cfg optional config literal */ // eslint-disable-next-line complexity const _parseConfig = function _parseConfig() { let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (CONFIG && CONFIG === cfg) { return; } /* Shield configuration object from tampering */ if (!cfg || typeof cfg !== 'object') { cfg = {}; } /* Shield configuration object from prototype pollution */ cfg = clone(cfg); PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is. transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase; /* Set configuration parameters */ ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent transformCaseFunc // eslint-disable-line indent ) // eslint-disable-line indent : DEFAULT_URI_SAFE_ATTRIBUTES; DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent transformCaseFunc // eslint-disable-line indent ) // eslint-disable-line indent : DEFAULT_DATA_URI_TAGS; FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {}; FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {}; USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false; ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false RETURN_DOM = cfg.RETURN_DOM || false; // Default false RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false FORCE_BODY = cfg.FORCE_BODY || false; // Default false SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true IN_PLACE = cfg.IN_PLACE || false; // Default false IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI; NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) { CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; } if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) { CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; } if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') { CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; } if (SAFE_FOR_TEMPLATES) { ALLOW_DATA_ATTR = false; } if (RETURN_DOM_FRAGMENT) { RETURN_DOM = true; } /* Parse profile info */ if (USE_PROFILES) { ALLOWED_TAGS = addToSet({}, text); ALLOWED_ATTR = []; if (USE_PROFILES.html === true) { addToSet(ALLOWED_TAGS, html$1); addToSet(ALLOWED_ATTR, html); } if (USE_PROFILES.svg === true) { addToSet(ALLOWED_TAGS, svg$1); addToSet(ALLOWED_ATTR, svg); addToSet(ALLOWED_ATTR, xml); } if (USE_PROFILES.svgFilters === true) { addToSet(ALLOWED_TAGS, svgFilters); addToSet(ALLOWED_ATTR, svg); addToSet(ALLOWED_ATTR, xml); } if (USE_PROFILES.mathMl === true) { addToSet(ALLOWED_TAGS, mathMl$1); addToSet(ALLOWED_ATTR, mathMl); addToSet(ALLOWED_ATTR, xml); } } /* Merge configuration parameters */ if (cfg.ADD_TAGS) { if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) { ALLOWED_TAGS = clone(ALLOWED_TAGS); } addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); } if (cfg.ADD_ATTR) { if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) { ALLOWED_ATTR = clone(ALLOWED_ATTR); } addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); } if (cfg.ADD_URI_SAFE_ATTR) { addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); } if (cfg.FORBID_CONTENTS) { if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) { FORBID_CONTENTS = clone(FORBID_CONTENTS); } addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); } /* Add #text in case KEEP_CONTENT is set to true */ if (KEEP_CONTENT) { ALLOWED_TAGS['#text'] = true; } /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */ if (WHOLE_DOCUMENT) { addToSet(ALLOWED_TAGS, ['html', 'head', 'body']); } /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */ if (ALLOWED_TAGS.table) { addToSet(ALLOWED_TAGS, ['tbody']); delete FORBID_TAGS.tbody; } if (cfg.TRUSTED_TYPES_POLICY) { if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') { throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); } if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') { throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); } // Overwrite existing TrustedTypes policy. trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; // Sign local variables required by `sanitize`. emptyHTML = trustedTypesPolicy.createHTML(''); } else { // Uninitialized policy, attempt to initialize the internal dompurify policy. if (trustedTypesPolicy === undefined) { trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript); } // If creating the internal policy succeeded sign internal variables. if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') { emptyHTML = trustedTypesPolicy.createHTML(''); } } // Prevent further manipulation of configuration. // Not available in IE8, Safari 5, etc. if (freeze) { freeze(cfg); } CONFIG = cfg; }; const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); const HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML // namespace. We need to specify them explicitly // so that they don't get erroneously deleted from // HTML namespace. const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']); /* Keep track of all possible SVG and MathML tags * so that we can perform the namespace checks * correctly. */ const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]); const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]); /** * @param {Element} element a DOM element whose namespace is being checked * @returns {boolean} Return false if the element has a * namespace that a spec-compliant parser would never * return. Return true otherwise. */ const _checkValidNamespace = function _checkValidNamespace(element) { let parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode // can be null. We just simulate parent in this case. if (!parent || !parent.tagName) { parent = { namespaceURI: NAMESPACE, tagName: 'template' }; } const tagName = stringToLowerCase(element.tagName); const parentTagName = stringToLowerCase(parent.tagName); if (!ALLOWED_NAMESPACES[element.namespaceURI]) { return false; } if (element.namespaceURI === SVG_NAMESPACE) { // The only way to switch from HTML namespace to SVG // is via . If it happens via any other tag, then // it should be killed. if (parent.namespaceURI === HTML_NAMESPACE) { return tagName === 'svg'; } // The only way to switch from MathML to SVG is via` // svg if parent is either or MathML // text integration points. if (parent.namespaceURI === MATHML_NAMESPACE) { return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); } // We only allow elements that are defined in SVG // spec. All others are disallowed in SVG namespace. return Boolean(ALL_SVG_TAGS[tagName]); } if (element.namespaceURI === MATHML_NAMESPACE) { // The only way to switch from HTML namespace to MathML // is via . If it happens via any other tag, then // it should be killed. if (parent.namespaceURI === HTML_NAMESPACE) { return tagName === 'math'; } // The only way to switch from SVG to MathML is via // and HTML integration points if (parent.namespaceURI === SVG_NAMESPACE) { return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName]; } // We only allow elements that are defined in MathML // spec. All others are disallowed in MathML namespace. return Boolean(ALL_MATHML_TAGS[tagName]); } if (element.namespaceURI === HTML_NAMESPACE) { // The only way to switch from SVG to HTML is via // HTML integration points, and from MathML to HTML // is via MathML text integration points if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) { return false; } if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) { return false; } // We disallow tags that are specific for MathML // or SVG and should never appear in HTML namespace return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); } // For XHTML and XML documents that support custom namespaces if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) { return true; } // The code should never reach this place (this means // that the element somehow got namespace that is not // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES). // Return false just in case. return false; }; /** * _forceRemove * * @param {Node} node a DOM node */ const _forceRemove = function _forceRemove(node) { arrayPush(DOMPurify.removed, { element: node }); try { // eslint-disable-next-line unicorn/prefer-dom-node-remove node.parentNode.removeChild(node); } catch (_) { node.remove(); } }; /** * _removeAttribute * * @param {String} name an Attribute name * @param {Node} node a DOM node */ const _removeAttribute = function _removeAttribute(name, node) { try { arrayPush(DOMPurify.removed, { attribute: node.getAttributeNode(name), from: node }); } catch (_) { arrayPush(DOMPurify.removed, { attribute: null, from: node }); } node.removeAttribute(name); // We void attribute values for unremovable "is"" attributes if (name === 'is' && !ALLOWED_ATTR[name]) { if (RETURN_DOM || RETURN_DOM_FRAGMENT) { try { _forceRemove(node); } catch (_) {} } else { try { node.setAttribute(name, ''); } catch (_) {} } } }; /** * _initDocument * * @param {String} dirty a string of dirty markup * @return {Document} a DOM, filled with the dirty markup */ const _initDocument = function _initDocument(dirty) { /* Create a HTML document */ let doc = null; let leadingWhitespace = null; if (FORCE_BODY) { dirty = '' + dirty; } else { /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */ const matches = stringMatch(dirty, /^[\r\n\t ]+/); leadingWhitespace = matches && matches[0]; } if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) { // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict) dirty = '' + dirty + ''; } const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; /* * Use the DOMParser API by default, fallback later if needs be * DOMParser not work for svg when has multiple root element. */ if (NAMESPACE === HTML_NAMESPACE) { try { doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); } catch (_) {} } /* Use createHTMLDocument in case DOMParser is not available */ if (!doc || !doc.documentElement) { doc = implementation.createDocument(NAMESPACE, 'template', null); try { doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; } catch (_) { // Syntax error if dirtyPayload is invalid xml } } const body = doc.body || doc.documentElement; if (dirty && leadingWhitespace) { body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null); } /* Work on whole document or just its body */ if (NAMESPACE === HTML_NAMESPACE) { return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0]; } return WHOLE_DOCUMENT ? doc.documentElement : body; }; /** * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document. * * @param {Node} root The root element or node to start traversing on. * @return {NodeIterator} The created NodeIterator */ const _createNodeIterator = function _createNodeIterator(root) { return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null); }; /** * _isClobbered * * @param {Node} elm element to check for clobbering attacks * @return {Boolean} true if clobbered, false if safe */ const _isClobbered = function _isClobbered(elm) { return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function'); }; /** * Checks whether the given object is a DOM node. * * @param {Node} object object to check whether it's a DOM node * @return {Boolean} true is object is a DOM node */ const _isNode = function _isNode(object) { return typeof Node === 'function' && object instanceof Node; }; /** * _executeHook * Execute user configurable hooks * * @param {String} entryPoint Name of the hook's entry point * @param {Node} currentNode node to work on with the hook * @param {Object} data additional hook parameters */ const _executeHook = function _executeHook(entryPoint, currentNode, data) { if (!hooks[entryPoint]) { return; } arrayForEach(hooks[entryPoint], hook => { hook.call(DOMPurify, currentNode, data, CONFIG); }); }; /** * _sanitizeElements * * @protect nodeName * @protect textContent * @protect removeChild * * @param {Node} currentNode to check for permission to exist * @return {Boolean} true if node was killed, false if left alive */ const _sanitizeElements = function _sanitizeElements(currentNode) { let content = null; /* Execute a hook if present */ _executeHook('beforeSanitizeElements', currentNode, null); /* Check if element is clobbered or can clobber */ if (_isClobbered(currentNode)) { _forceRemove(currentNode); return true; } /* Now let's check the element's type and name */ const tagName = transformCaseFunc(currentNode.nodeName); /* Execute a hook if present */ _executeHook('uponSanitizeElement', currentNode, { tagName, allowedTags: ALLOWED_TAGS }); /* Detect mXSS attempts abusing namespace confusion */ if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) { _forceRemove(currentNode); return true; } /* Remove element if anything forbids its presence */ if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { /* Check if we have a custom element to handle */ if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) { if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) { return false; } if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) { return false; } } /* Keep content except for bad-listed elements */ if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) { const parentNode = getParentNode(currentNode) || currentNode.parentNode; const childNodes = getChildNodes(currentNode) || currentNode.childNodes; if (childNodes && parentNode) { const childCount = childNodes.length; for (let i = childCount - 1; i >= 0; --i) { parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode)); } } } _forceRemove(currentNode); return true; } /* Check whether element has a valid namespace */ if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) { _forceRemove(currentNode); return true; } /* Make sure that older browsers don't get fallback-tag mXSS */ if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) { _forceRemove(currentNode); return true; } /* Sanitize element content to be template-safe */ if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) { /* Get the element's text content */ content = currentNode.textContent; arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { content = stringReplace(content, expr, ' '); }); if (currentNode.textContent !== content) { arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() }); currentNode.textContent = content; } } /* Execute a hook if present */ _executeHook('afterSanitizeElements', currentNode, null); return false; }; /** * _isValidAttribute * * @param {string} lcTag Lowercase tag name of containing element. * @param {string} lcName Lowercase attribute name. * @param {string} value Attribute value. * @return {Boolean} Returns true if `value` is valid, otherwise false. */ // eslint-disable-next-line complexity const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { /* Make sure attribute cannot clobber */ if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) { return false; } /* Allow valid data-* attributes: At least one character after "-" (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes) XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804) We don't need to check the value; it's always URI safe. */ if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) { if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else { return false; } /* Check value is safe. First, is attr inert? If so, is safe */ } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) { return false; } else ; return true; }; /** * _isBasicCustomElement * checks if at least one dash is included in tagName, and it's not the first char * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name * * @param {string} tagName name of the tag of the node to sanitize * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false. */ const _isBasicCustomElement = function _isBasicCustomElement(tagName) { return tagName.indexOf('-') > 0; }; /** * _sanitizeAttributes * * @protect attributes * @protect nodeName * @protect removeAttribute * @protect setAttribute * * @param {Node} currentNode to sanitize */ const _sanitizeAttributes = function _sanitizeAttributes(currentNode) { /* Execute a hook if present */ _executeHook('beforeSanitizeAttributes', currentNode, null); const { attributes } = currentNode; /* Check if we have attributes; if not we might have a text node */ if (!attributes) { return; } const hookEvent = { attrName: '', attrValue: '', keepAttr: true, allowedAttributes: ALLOWED_ATTR }; let l = attributes.length; /* Go backwards over all attributes; safely remove bad ones */ while (l--) { const attr = attributes[l]; const { name, namespaceURI, value: attrValue } = attr; const lcName = transformCaseFunc(name); let value = name === 'value' ? attrValue : stringTrim(attrValue); /* Execute a hook if present */ hookEvent.attrName = lcName; hookEvent.attrValue = value; hookEvent.keepAttr = true; hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set _executeHook('uponSanitizeAttribute', currentNode, hookEvent); value = hookEvent.attrValue; /* Did the hooks approve of the attribute? */ if (hookEvent.forceKeepAttr) { continue; } /* Remove attribute */ _removeAttribute(name, currentNode); /* Did the hooks approve of the attribute? */ if (!hookEvent.keepAttr) { continue; } /* Work around a security issue in jQuery 3.0 */ if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) { _removeAttribute(name, currentNode); continue; } /* Sanitize attribute content to be template-safe */ if (SAFE_FOR_TEMPLATES) { arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { value = stringReplace(value, expr, ' '); }); } /* Is `value` valid for this attribute? */ const lcTag = transformCaseFunc(currentNode.nodeName); if (!_isValidAttribute(lcTag, lcName, value)) { continue; } /* Full DOM Clobbering protection via namespace isolation, * Prefix id and name attributes with `user-content-` */ if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) { // Remove the attribute with this value _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value value = SANITIZE_NAMED_PROPS_PREFIX + value; } /* Handle attributes that require Trusted Types */ if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') { if (namespaceURI) ; else { switch (trustedTypes.getAttributeType(lcTag, lcName)) { case 'TrustedHTML': { value = trustedTypesPolicy.createHTML(value); break; } case 'TrustedScriptURL': { value = trustedTypesPolicy.createScriptURL(value); break; } } } } /* Handle invalid data-* attribute set by try-catching it */ try { if (namespaceURI) { currentNode.setAttributeNS(namespaceURI, name, value); } else { /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */ currentNode.setAttribute(name, value); } arrayPop(DOMPurify.removed); } catch (_) {} } /* Execute a hook if present */ _executeHook('afterSanitizeAttributes', currentNode, null); }; /** * _sanitizeShadowDOM * * @param {DocumentFragment} fragment to iterate over recursively */ const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) { let shadowNode = null; const shadowIterator = _createNodeIterator(fragment); /* Execute a hook if present */ _executeHook('beforeSanitizeShadowDOM', fragment, null); while (shadowNode = shadowIterator.nextNode()) { /* Execute a hook if present */ _executeHook('uponSanitizeShadowNode', shadowNode, null); /* Sanitize tags and elements */ if (_sanitizeElements(shadowNode)) { continue; } /* Deep shadow DOM detected */ if (shadowNode.content instanceof DocumentFragment) { _sanitizeShadowDOM(shadowNode.content); } /* Check attributes, sanitize if necessary */ _sanitizeAttributes(shadowNode); } /* Execute a hook if present */ _executeHook('afterSanitizeShadowDOM', fragment, null); }; /** * Sanitize * Public method providing core sanitation functionality * * @param {String|Node} dirty string or DOM node * @param {Object} cfg object */ // eslint-disable-next-line complexity DOMPurify.sanitize = function (dirty) { let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; let body = null; let importedNode = null; let currentNode = null; let returnNode = null; /* Make sure we have a string to sanitize. DO NOT return early, as this will return the wrong type if the user has requested a DOM object rather than a string */ IS_EMPTY_INPUT = !dirty; if (IS_EMPTY_INPUT) { dirty = ''; } /* Stringify, in case dirty is an object */ if (typeof dirty !== 'string' && !_isNode(dirty)) { if (typeof dirty.toString === 'function') { dirty = dirty.toString(); if (typeof dirty !== 'string') { throw typeErrorCreate('dirty is not a string, aborting'); } } else { throw typeErrorCreate('toString is not a function'); } } /* Return dirty HTML if DOMPurify cannot run */ if (!DOMPurify.isSupported) { return dirty; } /* Assign config vars */ if (!SET_CONFIG) { _parseConfig(cfg); } /* Clean up removed elements */ DOMPurify.removed = []; /* Check if dirty is correctly typed for IN_PLACE */ if (typeof dirty === 'string') { IN_PLACE = false; } if (IN_PLACE) { /* Do some early pre-sanitization to avoid unsafe root nodes */ if (dirty.nodeName) { const tagName = transformCaseFunc(dirty.nodeName); if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place'); } } } else if (dirty instanceof Node) { /* If dirty is a DOM element, append to an empty document to avoid elements being stripped by the parser */ body = _initDocument(''); importedNode = body.ownerDocument.importNode(dirty, true); if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') { /* Node is already a body, use as is */ body = importedNode; } else if (importedNode.nodeName === 'HTML') { body = importedNode; } else { // eslint-disable-next-line unicorn/prefer-dom-node-append body.appendChild(importedNode); } } else { /* Exit directly if we have nothing to do */ if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes dirty.indexOf('<') === -1) { return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty; } /* Initialize the document to work on */ body = _initDocument(dirty); /* Check we have a DOM node from the data */ if (!body) { return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ''; } } /* Remove first element node (ours) if FORCE_BODY is set */ if (body && FORCE_BODY) { _forceRemove(body.firstChild); } /* Get node iterator */ const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body); /* Now start iterating over the created document */ while (currentNode = nodeIterator.nextNode()) { /* Sanitize tags and elements */ if (_sanitizeElements(currentNode)) { continue; } /* Shadow DOM detected, sanitize it */ if (currentNode.content instanceof DocumentFragment) { _sanitizeShadowDOM(currentNode.content); } /* Check attributes, sanitize if necessary */ _sanitizeAttributes(currentNode); } /* If we sanitized `dirty` in-place, return it. */ if (IN_PLACE) { return dirty; } /* Return sanitized string or DOM */ if (RETURN_DOM) { if (RETURN_DOM_FRAGMENT) { returnNode = createDocumentFragment.call(body.ownerDocument); while (body.firstChild) { // eslint-disable-next-line unicorn/prefer-dom-node-append returnNode.appendChild(body.firstChild); } } else { returnNode = body; } if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) { /* AdoptNode() is not used because internal state is not reset (e.g. the past names map of a HTMLFormElement), this is safe in theory but we would rather not risk another attack vector. The state that is cloned by importNode() is explicitly defined by the specs. */ returnNode = importNode.call(originalDocument, returnNode, true); } return returnNode; } let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML; /* Serialize doctype if allowed */ if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) { serializedHTML = '\n' + serializedHTML; } /* Sanitize final string template-safe */ if (SAFE_FOR_TEMPLATES) { arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { serializedHTML = stringReplace(serializedHTML, expr, ' '); }); } return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML; }; /** * Public method to set the configuration once * setConfig * * @param {Object} cfg configuration object */ DOMPurify.setConfig = function () { let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _parseConfig(cfg); SET_CONFIG = true; }; /** * Public method to remove the configuration * clearConfig * */ DOMPurify.clearConfig = function () { CONFIG = null; SET_CONFIG = false; }; /** * Public method to check if an attribute value is valid. * Uses last set config, if any. Otherwise, uses config defaults. * isValidAttribute * * @param {String} tag Tag name of containing element. * @param {String} attr Attribute name. * @param {String} value Attribute value. * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false. */ DOMPurify.isValidAttribute = function (tag, attr, value) { /* Initialize shared config vars if necessary. */ if (!CONFIG) { _parseConfig({}); } const lcTag = transformCaseFunc(tag); const lcName = transformCaseFunc(attr); return _isValidAttribute(lcTag, lcName, value); }; /** * AddHook * Public method to add DOMPurify hooks * * @param {String} entryPoint entry point for the hook to add * @param {Function} hookFunction function to execute */ DOMPurify.addHook = function (entryPoint, hookFunction) { if (typeof hookFunction !== 'function') { return; } hooks[entryPoint] = hooks[entryPoint] || []; arrayPush(hooks[entryPoint], hookFunction); }; /** * RemoveHook * Public method to remove a DOMPurify hook at a given entryPoint * (pops it from the stack of hooks if more are present) * * @param {String} entryPoint entry point for the hook to remove * @return {Function} removed(popped) hook */ DOMPurify.removeHook = function (entryPoint) { if (hooks[entryPoint]) { return arrayPop(hooks[entryPoint]); } }; /** * RemoveHooks * Public method to remove all DOMPurify hooks at a given entryPoint * * @param {String} entryPoint entry point for the hooks to remove */ DOMPurify.removeHooks = function (entryPoint) { if (hooks[entryPoint]) { hooks[entryPoint] = []; } }; /** * RemoveAllHooks * Public method to remove all DOMPurify hooks */ DOMPurify.removeAllHooks = function () { hooks = {}; }; return DOMPurify; } var purify = createDOMPurify(); return purify; })); //# sourceMappingURL=purify.js.map /***/ }), /***/ "./node_modules/emoji-mart-vue-fast/dist/emoji-mart.js": /*!*************************************************************!*\ !*** ./node_modules/emoji-mart-vue-fast/dist/emoji-mart.js ***! \*************************************************************/ /***/ (function(module) { !function(e,t){ true?module.exports=t():0}("undefined"!=typeof self?self:this,(function(){return function(){var e={661:function(){"undefined"!=typeof window&&function(){for(var e=0,t=["ms","moz","webkit","o"],i=0;ie.length)&&(t=e.length);for(var i=0,n=new Array(t);i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,s=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return s=e.done,e},e:function(e){a=!0,r=e},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}(Object.getOwnPropertyNames(e));try{for(i.s();!(t=i.n()).done;){var n=t.value,o=e[n];e[n]=o&&"object"===u(o)?d(o):o}}catch(e){i.e(e)}finally{i.f()}return Object.freeze(e)}var f,p,v=function(e){if(!e.compressed)return e;for(var t in e.compressed=!1,e.emojis){var i=e.emojis[t];for(var n in h)i[n]=i[h[n]],delete i[h[n]];i.short_names||(i.short_names=[]),i.short_names.unshift(t),i.sheet_x=i.sheet[0],i.sheet_y=i.sheet[1],delete i.sheet,i.text||(i.text=""),i.added_in||(i.added_in=6),i.added_in=i.added_in.toFixed(1),i.search=m(i)}return d(e)},j=["+1","grinning","kissing_heart","heart_eyes","laughing","stuck_out_tongue_winking_eye","sweat_smile","joy","scream","disappointed","unamused","weary","sob","sunglasses","heart","hankey"],y={};function g(){p=!0,f=c.get("frequently")}var w={add:function(e){p||g();var t=e.id;f||(f=y),f[t]||(f[t]=0),f[t]+=1,c.set("last",t),c.set("frequently",f)},get:function(e){if(p||g(),!f){y={};for(var t=[],i=Math.min(e,j.length),n=0;n',custom:'',flags:'',foods:'',nature:'',objects:'',smileys:'',people:' ',places:'',recent:'',symbols:''};function C(e,t,i,n,o,r,s,a){var c,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),r&&(u._scopeId="data-v-"+r),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},u._ssrRegister=c):o&&(c=a?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(e,t){return c.call(t),l(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:u}}var b=C({props:{i18n:{type:Object,required:!0},color:{type:String},categories:{type:Array,required:!0},activeCategory:{type:Object,default:function(){return{}}}},created:function(){this.svgs=_}},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"emoji-mart-anchors",attrs:{role:"tablist"}},e._l(e.categories,(function(t){return i("button",{key:t.id,class:{"emoji-mart-anchor":!0,"emoji-mart-anchor-selected":t.id==e.activeCategory.id},style:{color:t.id==e.activeCategory.id?e.color:""},attrs:{role:"tab",type:"button","aria-label":t.name,"aria-selected":t.id==e.activeCategory.id,"data-title":e.i18n.categories[t.id]},on:{click:function(i){return e.$emit("click",t)}}},[i("div",{attrs:{"aria-hidden":"true"},domProps:{innerHTML:e._s(e.svgs[t.id])}}),e._v(" "),i("span",{staticClass:"emoji-mart-anchor-bar",style:{backgroundColor:e.color},attrs:{"aria-hidden":"true"}})])})),0)}),[],!1,null,null,null),k=b.exports;function E(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function S(e,t){for(var i=0;i1114111||Math.floor(s)!=s)throw RangeError("Invalid code point: "+s);s<=65535?i.push(s):(e=55296+((s-=65536)>>10),t=s%1024+56320,i.push(e,t)),(n+1===o||i.length>16384)&&(r+=String.fromCharCode.apply(null,i),i.length=0)}return r};function P(e){var t=e.split("-").map((function(e){return"0x".concat(e)}));return O.apply(null,t)}function A(e){return e.reduce((function(e,t){return-1===e.indexOf(t)&&e.push(t),e}),[])}function M(e,t){var i=A(e),n=A(t);return i.filter((function(e){return n.indexOf(e)>=0}))}function I(e,t){var i={};for(var n in e){var o=e[n],r=o;t.hasOwnProperty(n)&&(r=t[n]),"object"===u(r)&&(r=I(o,r)),i[n]=r}return i}function F(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return z(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?z(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,s=!0,a=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return s=e.done,e},e:function(e){a=!0,r=e},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i1&&void 0!==arguments[1]?arguments[1]:{},n=i.emojisToShowFilter,o=i.include,r=i.exclude,s=i.custom,a=i.recent,c=i.recentLength,u=void 0===c?20:c;E(this,e),this._data=v(t),this._emojisFilter=n||null,this._include=o||null,this._exclude=r||null,this._custom=s||[],this._recent=a||w.get(u),this._emojis={},this._nativeEmojis={},this._emoticons={},this._categories=[],this._recentCategory={id:"recent",name:"Recent",emojis:[]},this._customCategory={id:"custom",name:"Custom",emojis:[]},this._searchIndex={},this.buildIndex(),Object.freeze(this)}return x(e,[{key:"buildIndex",value:function(){var e=this,t=this._data.categories;if(this._include&&(t=(t=t.filter((function(t){return e._include.includes(t.id)}))).sort((function(t,i){var n=e._include.indexOf(t.id),o=e._include.indexOf(i.id);return no?1:0}))),t.forEach((function(t){if(e.isCategoryNeeded(t.id)){var i={id:t.id,name:t.name,emojis:[]};t.emojis.forEach((function(t){var n=e.addEmoji(t);n&&i.emojis.push(n)})),i.emojis.length&&e._categories.push(i)}})),this.isCategoryNeeded("custom")){if(this._custom.length>0){var i,n=F(this._custom);try{for(n.s();!(i=n.n()).done;){var o=i.value;this.addCustomEmoji(o)}}catch(e){n.e(e)}finally{n.f()}}this._customCategory.emojis.length&&this._categories.push(this._customCategory)}this.isCategoryNeeded("recent")&&(this._recent.length&&this._recent.map((function(t){var i,n=F(e._customCategory.emojis);try{for(n.s();!(i=n.n()).done;){var o=i.value;if(o.id===t)return void e._recentCategory.emojis.push(o)}}catch(e){n.e(e)}finally{n.f()}e.hasEmoji(t)&&e._recentCategory.emojis.push(e.emoji(t))})),this._recentCategory.emojis.length&&this._categories.unshift(this._recentCategory))}},{key:"findEmoji",value:function(e,t){var i=e.match(L);if(i&&(e=i[1],i[2]&&(t=parseInt(i[2],10))),this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),this._emojis.hasOwnProperty(e)){var n=this._emojis[e];return t?n.getSkin(t):n}return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}},{key:"categories",value:function(){return this._categories}},{key:"emoji",value:function(e){this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]);var t=this._emojis[e];if(!t)throw new Error("Can not find emoji by id: "+e);return t}},{key:"firstEmoji",value:function(){var e=this._emojis[Object.keys(this._emojis)[0]];if(!e)throw new Error("Can not get first emoji");return e}},{key:"hasEmoji",value:function(e){return this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),!!this._emojis[e]}},{key:"nativeEmoji",value:function(e){return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}},{key:"search",value:function(e,t){var i=this;if(t||(t=75),!e.length)return null;if("-"==e||"-1"==e)return[this.emoji("-1")];var n,o=e.toLowerCase().split(/[\s|,|\-|_]+/);o.length>2&&(o=[o[0],o[1]]),n=o.map((function(e){for(var t=i._emojis,n=i._searchIndex,o=0,r=0;r1?M.apply(null,n):n.length?n[0]:[])&&r.length>t&&(r=r.slice(0,t)),r}},{key:"addCustomEmoji",value:function(e){var t=Object.assign({},e,{id:e.short_names[0],custom:!0});t.search||(t.search=m(t));var i=new $(t);return this._emojis[i.id]=i,this._customCategory.emojis.push(i),i}},{key:"addEmoji",value:function(e){var t=this,i=this._data.emojis[e];if(!this.isEmojiNeeded(i))return!1;var n=new $(i);if(this._emojis[e]=n,n.native&&(this._nativeEmojis[n.native]=n),n._skins)for(var o in n._skins){var r=n._skins[o];r.native&&(this._nativeEmojis[r.native]=r)}return n.emoticons&&n.emoticons.forEach((function(i){t._emoticons[i]||(t._emoticons[i]=e)})),n}},{key:"isCategoryNeeded",value:function(e){var t=!this._include||!this._include.length||this._include.indexOf(e)>-1,i=!(!this._exclude||!this._exclude.length)&&this._exclude.indexOf(e)>-1;return!(!t||i)}},{key:"isEmojiNeeded",value:function(e){return!this._emojisFilter||this._emojisFilter(e)}}]),e}(),$=function(){function e(t){if(E(this,e),this._data=Object.assign({},t),this._skins=null,this._data.skin_variations)for(var i in this._skins=[],T){var n=T[i],o=this._data.skin_variations[n],r=Object.assign({},t);for(var s in o)r[s]=o[s];delete r.skin_variations,r.skin_tone=parseInt(i)+1,this._skins.push(new e(r))}for(var a in this._sanitized=N(this._data),this._sanitized)this[a]=this._sanitized[a];this.short_names=this._data.short_names,this.short_name=this._data.short_names[0],Object.freeze(this)}return x(e,[{key:"getSkin",value:function(e){return e&&"native"!=e&&this._skins?this._skins[e-1]:this}},{key:"getPosition",value:function(){var e=+(100/60*this._data.sheet_x).toFixed(2),t=+(100/60*this._data.sheet_y).toFixed(2);return"".concat(e,"% ").concat(t,"%")}},{key:"ariaLabel",value:function(){return[this.native].concat(this.short_names).filter(Boolean).join(", ")}}]),e}(),R=function(){function e(t,i,n,o,r,s,a){E(this,e),this._emoji=t,this._native=o,this._skin=i,this._set=n,this._fallback=r,this.canRender=this._canRender(),this.cssClass=this._cssClass(),this.cssStyle=this._cssStyle(a),this.content=this._content(),this.title=!0===s?t.short_name:null,this.ariaLabel=t.ariaLabel(),Object.freeze(this)}return x(e,[{key:"getEmoji",value:function(){return this._emoji.getSkin(this._skin)}},{key:"_canRender",value:function(){return this._isCustom()||this._isNative()||this._hasEmoji()||this._fallback}},{key:"_cssClass",value:function(){return["emoji-set-"+this._set,"emoji-type-"+this._emojiType()]}},{key:"_cssStyle",value:function(e){var t={};return this._isCustom()?t={backgroundImage:"url("+this.getEmoji()._data.imageUrl+")",backgroundSize:"100%",width:e+"px",height:e+"px"}:this._hasEmoji()&&!this._isNative()&&(t={backgroundPosition:this.getEmoji().getPosition()}),e&&(t=this._isNative()?Object.assign(t,{fontSize:Math.round(.95*e*10)/10+"px"}):Object.assign(t,{width:e+"px",height:e+"px"})),t}},{key:"_content",value:function(){return this._isCustom()?"":this._isNative()?this.getEmoji().native:this._hasEmoji()?"":this._fallback?this._fallback(this.getEmoji()):null}},{key:"_isNative",value:function(){return this._native}},{key:"_isCustom",value:function(){return this.getEmoji().custom}},{key:"_hasEmoji",value:function(){if(!this.getEmoji()._data)return!1;var e=this.getEmoji()._data["has_img_"+this._set];return void 0===e||e}},{key:"_emojiType",value:function(){return this._isCustom()?"custom":this._isNative()?"native":this._hasEmoji()?"image":"fallback"}}]),e}();function N(e){var t=e.name,i=e.short_names,n=e.skin_tone,o=e.skin_variations,r=e.emoticons,s=e.unified,a=e.custom,c=e.imageUrl,u=e.id||i[0],l=":".concat(u,":");return a?{id:u,name:t,colons:l,emoticons:r,custom:a,imageUrl:c}:(n&&(l+=":skin-tone-".concat(n,":")),{id:u,name:t,colons:l,emoticons:r,unified:s.toLowerCase(),skin:n||(o?1:null),native:P(s)})}function D(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var B={native:{type:Boolean,default:!1},tooltip:{type:Boolean,default:!1},fallback:{type:Function},skin:{type:Number,default:1},set:{type:String,default:"apple"},emoji:{type:[String,Object],required:!0},size:{type:Number,default:null},tag:{type:String,default:"span"}},H={perLine:{type:Number,default:9},maxSearchResults:{type:Number,default:75},emojiSize:{type:Number,default:24},title:{type:String,default:"Emoji Mart™"},emoji:{type:String,default:"department_store"},color:{type:String,default:"#ae65c5"},set:{type:String,default:"apple"},skin:{type:Number,default:null},defaultSkin:{type:Number,default:1},native:{type:Boolean,default:!1},emojiTooltip:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},i18n:{type:Object,default:function(){return{}}},showPreview:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showCategories:{type:Boolean,default:!0},showSkinTones:{type:Boolean,default:!0},infiniteScroll:{type:Boolean,default:!0},pickerStyles:{type:Object,default:function(){return{}}}};function U(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function V(e){for(var t=1;t0},emojiObjects:function(){var e=this;return this.emojis.map((function(t){return{emojiObject:t,emojiView:new R(t,e.emojiProps.skin,e.emojiProps.set,e.emojiProps.native,e.emojiProps.fallback,e.emojiProps.emojiTooltip,e.emojiProps.emojiSize)}}))}},components:{Emoji:W}},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.isVisible&&(e.isSearch||e.hasResults)?i("section",{class:{"emoji-mart-category":!0,"emoji-mart-no-results":!e.hasResults},attrs:{"aria-label":e.i18n.categories[e.id]}},[i("div",{staticClass:"emoji-mart-category-label"},[i("h3",{staticClass:"emoji-mart-category-label"},[e._v(e._s(e.i18n.categories[e.id]))])]),e._v(" "),e._l(e.emojiObjects,(function(t){var n=t.emojiObject,o=t.emojiView;return[o.canRender?i("button",{key:n.id,staticClass:"emoji-mart-emoji",class:e.activeClass(n),attrs:{"aria-label":o.ariaLabel,role:"option","aria-selected":"false","aria-posinset":"1","aria-setsize":"1812",type:"button","data-title":n.short_name,title:o.title},on:{mouseenter:function(t){e.emojiProps.onEnter(o.getEmoji())},mouseleave:function(t){e.emojiProps.onLeave(o.getEmoji())},click:function(t){e.emojiProps.onClick(o.getEmoji())}}},[i("span",{class:o.cssClass,style:o.cssStyle},[e._v(e._s(o.content))])]):e._e()]})),e._v(" "),e.hasResults?e._e():i("div",[i("emoji",{attrs:{data:e.data,emoji:"sleuth_or_spy",native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}}),e._v(" "),i("div",{staticClass:"emoji-mart-no-results-label"},[e._v(e._s(e.i18n.notfound))])],1)],2):e._e()}),[],!1,null,null,null).exports,X=C({props:{skin:{type:Number,required:!0}},data:function(){return{opened:!1}},methods:{onClick:function(e){this.opened&&e!=this.skin&&this.$emit("change",e),this.opened=!this.opened}}},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:{"emoji-mart-skin-swatches":!0,"emoji-mart-skin-swatches-opened":e.opened}},e._l(6,(function(t){return i("span",{key:t,class:{"emoji-mart-skin-swatch":!0,"emoji-mart-skin-swatch-selected":e.skin==t}},[i("span",{class:"emoji-mart-skin emoji-mart-skin-tone-"+t,on:{click:function(i){return e.onClick(t)}}})])})),0)}),[],!1,null,null,null).exports,Z=C({props:{data:{type:Object,required:!0},title:{type:String,required:!0},emoji:{type:[String,Object]},idleEmoji:{type:[String,Object],required:!0},showSkinTones:{type:Boolean,default:!0},emojiProps:{type:Object,required:!0},skinProps:{type:Object,required:!0},onSkinChange:{type:Function,required:!0}},computed:{emojiData:function(){return this.emoji?this.emoji:{}},emojiShortNames:function(){return this.emojiData.short_names},emojiEmoticons:function(){return this.emojiData.emoticons}},components:{Emoji:W,Skins:X}},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"emoji-mart-preview"},[e.emoji?[i("div",{staticClass:"emoji-mart-preview-emoji"},[i("emoji",{attrs:{data:e.data,emoji:e.emoji,native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}})],1),e._v(" "),i("div",{staticClass:"emoji-mart-preview-data"},[i("div",{staticClass:"emoji-mart-preview-name"},[e._v(e._s(e.emoji.name))]),e._v(" "),i("div",{staticClass:"emoji-mart-preview-shortnames"},e._l(e.emojiShortNames,(function(t){return i("span",{key:t,staticClass:"emoji-mart-preview-shortname"},[e._v(":"+e._s(t)+":")])})),0),e._v(" "),i("div",{staticClass:"emoji-mart-preview-emoticons"},e._l(e.emojiEmoticons,(function(t){return i("span",{key:t,staticClass:"emoji-mart-preview-emoticon"},[e._v(e._s(t))])})),0)])]:[i("div",{staticClass:"emoji-mart-preview-emoji"},[i("emoji",{attrs:{data:e.data,emoji:e.idleEmoji,native:e.emojiProps.native,skin:e.emojiProps.skin,set:e.emojiProps.set}})],1),e._v(" "),i("div",{staticClass:"emoji-mart-preview-data"},[i("span",{staticClass:"emoji-mart-title-label"},[e._v(e._s(e.title))])]),e._v(" "),e.showSkinTones?i("div",{staticClass:"emoji-mart-preview-skins"},[i("skins",{attrs:{skin:e.skinProps.skin},on:{change:function(t){return e.onSkinChange(t)}}})],1):e._e()]],2)}),[],!1,null,null,null).exports,G=C({props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},autoFocus:{type:Boolean,default:!1},onSearch:{type:Function,required:!0},onArrowLeft:{type:Function,required:!1},onArrowRight:{type:Function,required:!1},onArrowDown:{type:Function,required:!1},onArrowUp:{type:Function,required:!1},onEnter:{type:Function,required:!1}},data:function(){return{value:""}},computed:{emojiIndex:function(){return this.data}},watch:{value:function(){this.$emit("search",this.value)}},methods:{clear:function(){this.value=""}},mounted:function(){var e=this.$el.querySelector("input");this.autoFocus&&e.focus()}},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"emoji-mart-search"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],attrs:{type:"text",placeholder:e.i18n.search,role:"textbox","aria-autocomplete":"list","aria-owns":"emoji-mart-list","aria-label":"Search for an emoji","aria-describedby":"emoji-mart-search-description"},domProps:{value:e.value},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:function(t){return e.$emit("arrowLeft",t)}.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:function(){return e.$emit("arrowRight")}.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:function(){return e.$emit("arrowDown")}.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:function(t){return e.$emit("arrowUp",t)}.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:function(){return e.$emit("enter")}.apply(null,arguments)}],input:function(t){t.target.composing||(e.value=t.target.value)}}}),e._v(" "),i("span",{staticClass:"hidden",attrs:{id:"emoji-picker-search-description"}},[e._v("Use the left, right, up and down arrow keys to navigate the emoji search\n results.")])])}),[],!1,null,null,null),K=G.exports;function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i0})),this._categories[0].first=!0,Object.freeze(this._categories),this.activeCategory=this._categories[0],this.searchEmojis=null,this.previewEmoji=null,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=-1}return x(e,[{key:"onScroll",value:function(){for(var e=this._vm.$refs.scroll.scrollTop,t=this.filteredCategories[0],i=0,n=this.filteredCategories.length;ie)break;t=o}this.activeCategory=t}},{key:"allCategories",get:function(){return this._categories}},{key:"filteredCategories",get:function(){return this.searchEmojis?[{id:"search",name:"Search",emojis:this.searchEmojis}]:this._categories.filter((function(e){return e.emojis.length>0}))}},{key:"previewEmojiCategory",get:function(){return this.previewEmojiCategoryIdx>=0?this.filteredCategories[this.previewEmojiCategoryIdx]:null}},{key:"onAnchorClick",value:function(e){var t=this;if(!this.searchEmojis){var i=this.filteredCategories.indexOf(e),n=this._vm.getCategoryComponent(i);this._vm.infiniteScroll?function(){if(n){var i=n.$el.offsetTop;e.first&&(i=0),t._vm.$refs.scroll.scrollTop=i}}():this.activeCategory=this.filteredCategories[i]}}},{key:"onSearch",value:function(e){var t=this._data.search(e,this.maxSearchResults);this.searchEmojis=t,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=0,this.updatePreviewEmoji()}},{key:"onEmojiEnter",value:function(e){this.previewEmoji=e,this.previewEmojiIdx=-1,this.previewEmojiCategoryIdx=-1}},{key:"onEmojiLeave",value:function(e){this.previewEmoji=null}},{key:"onArrowLeft",value:function(){this.previewEmojiIdx>0?this.previewEmojiIdx-=1:(this.previewEmojiCategoryIdx-=1,this.previewEmojiCategoryIdx<0?this.previewEmojiCategoryIdx=0:this.previewEmojiIdx=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length-1),this.updatePreviewEmoji()}},{key:"onArrowRight",value:function(){this.previewEmojiIdx=this.filteredCategories.length?this.previewEmojiCategoryIdx=this.filteredCategories.length-1:this.previewEmojiIdx=0),this.updatePreviewEmoji()}},{key:"onArrowDown",value:function(){if(-1==this.previewEmojiIdx)return this.onArrowRight();var e=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length,t=this._perLine;this.previewEmojiIdx+t>e&&(t=e%this._perLine);for(var i=0;i0?this.filteredCategories[this.previewEmojiCategoryIdx-1].emojis.length%this._perLine:0);for(var t=0;tn+t.scrollTop&&(t.scrollTop+=i.offsetHeight),i&&i.offsetTop { "use strict"; /*! * escape-html * Copyright(c) 2012-2013 TJ Holowaychuk * Copyright(c) 2015 Andreas Lubbe * Copyright(c) 2015 Tiancheng "Timothy" Gu * MIT Licensed */ /** * Module variables. * @private */ var matchHtmlRegExp = /["'&<>]/; /** * Module exports. * @public */ module.exports = escapeHtml; /** * Escape special characters in the given string of html. * * @param {string} string The string to escape for inserting into HTML * @return {string} * @public */ function escapeHtml(string) { var str = '' + string; var match = matchHtmlRegExp.exec(str); if (!match) { return str; } var escape; var html = ''; var index = 0; var lastIndex = 0; for (index = match.index; index < str.length; index++) { switch (str.charCodeAt(index)) { case 34: // " escape = '"'; break; case 38: // & escape = '&'; break; case 39: // ' escape = '''; break; case 60: // < escape = '<'; break; case 62: // > escape = '>'; break; default: continue; } if (lastIndex !== index) { html += str.substring(lastIndex, index); } lastIndex = index + 1; html += escape; } return lastIndex !== index ? html + str.substring(lastIndex, index) : html; } /***/ }), /***/ "./node_modules/extend/index.js": /*!**************************************!*\ !*** ./node_modules/extend/index.js ***! \**************************************/ /***/ ((module) => { "use strict"; var hasOwn = Object.prototype.hasOwnProperty; var toStr = Object.prototype.toString; var defineProperty = Object.defineProperty; var gOPD = Object.getOwnPropertyDescriptor; var isArray = function isArray(arr) { if (typeof Array.isArray === 'function') { return Array.isArray(arr); } return toStr.call(arr) === '[object Array]'; }; var isPlainObject = function isPlainObject(obj) { if (!obj || toStr.call(obj) !== '[object Object]') { return false; } var hasOwnConstructor = hasOwn.call(obj, 'constructor'); var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { return false; } // Own properties are enumerated firstly, so to speed up, // if last one is own, then all properties are own. var key; for (key in obj) { /**/ } return typeof key === 'undefined' || hasOwn.call(obj, key); }; // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target var setProperty = function setProperty(target, options) { if (defineProperty && options.name === '__proto__') { defineProperty(target, options.name, { enumerable: true, configurable: true, value: options.newValue, writable: true }); } else { target[options.name] = options.newValue; } }; // Return undefined instead of __proto__ if '__proto__' is not an own property var getProperty = function getProperty(obj, name) { if (name === '__proto__') { if (!hasOwn.call(obj, name)) { return void 0; } else if (gOPD) { // In early versions of node, obj['__proto__'] is buggy when obj has // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. return gOPD(obj, name).value; } } return obj[name]; }; module.exports = function extend() { var options, name, src, copy, copyIsArray, clone; var target = arguments[0]; var i = 1; var length = arguments.length; var deep = false; // Handle a deep copy situation if (typeof target === 'boolean') { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { target = {}; } for (; i < length; ++i) { options = arguments[i]; // Only deal with non-null/undefined values if (options != null) { // Extend the base object for (name in options) { src = getProperty(target, name); copy = getProperty(options, name); // Prevent never-ending loop if (target !== copy) { // Recurse if we're merging plain objects or arrays if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && isArray(src) ? src : []; } else { clone = src && isPlainObject(src) ? src : {}; } // Never move original objects, clone them setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); // Don't bring in undefined values } else if (typeof copy !== 'undefined') { setProperty(target, { name: name, newValue: copy }); } } } } } // Return the modified object return target; }; /***/ }), /***/ "./node_modules/floating-vue/dist/floating-vue.es.js": /*!***********************************************************!*\ !*** ./node_modules/floating-vue/dist/floating-vue.es.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Dropdown: () => (/* binding */ Dropdown), /* harmony export */ HIDE_EVENT_MAP: () => (/* binding */ HIDE_EVENT_MAP), /* harmony export */ Menu: () => (/* binding */ Menu), /* harmony export */ Popper: () => (/* binding */ Popper), /* harmony export */ PopperContent: () => (/* binding */ PopperContent), /* harmony export */ PopperMethods: () => (/* binding */ PopperMethods), /* harmony export */ PopperWrapper: () => (/* binding */ PopperWrapper), /* harmony export */ SHOW_EVENT_MAP: () => (/* binding */ SHOW_EVENT_MAP), /* harmony export */ ThemeClass: () => (/* binding */ ThemeClass), /* harmony export */ Tooltip: () => (/* binding */ Tooltip), /* harmony export */ TooltipDirective: () => (/* binding */ TooltipDirective), /* harmony export */ VClosePopper: () => (/* binding */ VClosePopper), /* harmony export */ VTooltip: () => (/* binding */ VTooltip), /* harmony export */ createTooltip: () => (/* binding */ createTooltip), /* harmony export */ "default": () => (/* binding */ plugin), /* harmony export */ destroyTooltip: () => (/* binding */ destroyTooltip), /* harmony export */ hideAllPoppers: () => (/* binding */ hideAllPoppers), /* harmony export */ install: () => (/* binding */ install), /* harmony export */ options: () => (/* binding */ options), /* harmony export */ placements: () => (/* binding */ placements) /* harmony export */ }); /* harmony import */ var _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @floating-ui/dom */ "./node_modules/@floating-ui/core/dist/floating-ui.core.esm.js"); /* harmony import */ var _floating_ui_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @floating-ui/dom */ "./node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js"); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; function assign(to, from) { for (const key in from) { if (Object.prototype.hasOwnProperty.call(from, key)) { if (typeof from[key] === "object" && to[key]) { assign(to[key], from[key]); } else { to[key] = from[key]; } } } } const config = { disabled: false, distance: 5, skidding: 0, container: "body", boundary: void 0, instantMove: false, disposeTimeout: 5e3, popperTriggers: [], strategy: "absolute", preventOverflow: true, flip: true, shift: true, overflowPadding: 0, arrowPadding: 0, arrowOverflow: true, themes: { tooltip: { placement: "top", triggers: ["hover", "focus", "touch"], hideTriggers: (events) => [...events, "click"], delay: { show: 200, hide: 0 }, handleResize: false, html: false, loadingContent: "..." }, dropdown: { placement: "bottom", triggers: ["click"], delay: 0, handleResize: true, autoHide: true }, menu: { $extend: "dropdown", triggers: ["hover", "focus"], popperTriggers: ["hover", "focus"], delay: { show: 0, hide: 400 } } } }; function getDefaultConfig(theme, key) { let themeConfig = config.themes[theme] || {}; let value; do { value = themeConfig[key]; if (typeof value === "undefined") { if (themeConfig.$extend) { themeConfig = config.themes[themeConfig.$extend] || {}; } else { themeConfig = null; value = config[key]; } } else { themeConfig = null; } } while (themeConfig); return value; } function getThemeClasses(theme) { const result = [theme]; let themeConfig = config.themes[theme] || {}; do { if (themeConfig.$extend && !themeConfig.$resetCss) { result.push(themeConfig.$extend); themeConfig = config.themes[themeConfig.$extend] || {}; } else { themeConfig = null; } } while (themeConfig); return result.map((c) => `v-popper--theme-${c}`); } function getAllParentThemes(theme) { const result = [theme]; let themeConfig = config.themes[theme] || {}; do { if (themeConfig.$extend) { result.push(themeConfig.$extend); themeConfig = config.themes[themeConfig.$extend] || {}; } else { themeConfig = null; } } while (themeConfig); return result; } var vueResize = ""; let supportsPassive = false; if (typeof window !== "undefined") { supportsPassive = false; try { const opts = Object.defineProperty({}, "passive", { get() { supportsPassive = true; } }); window.addEventListener("test", null, opts); } catch (e) { } } let isIOS = false; if (typeof window !== "undefined" && typeof navigator !== "undefined") { isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; } const placements = ["auto", "top", "bottom", "left", "right"].reduce((acc, base) => acc.concat([ base, `${base}-start`, `${base}-end` ]), []); const SHOW_EVENT_MAP = { hover: "mouseenter", focus: "focus", click: "click", touch: "touchstart" }; const HIDE_EVENT_MAP = { hover: "mouseleave", focus: "blur", click: "click", touch: "touchend" }; function removeFromArray(array, item) { const index = array.indexOf(item); if (index !== -1) { array.splice(index, 1); } } function nextFrame() { return new Promise((resolve) => requestAnimationFrame(() => { requestAnimationFrame(resolve); })); } const shownPoppers = []; let hidingPopper = null; const shownPoppersByTheme = {}; function getShownPoppersByTheme(theme) { let list = shownPoppersByTheme[theme]; if (!list) { list = shownPoppersByTheme[theme] = []; } return list; } let Element = function() { }; if (typeof window !== "undefined") { Element = window.Element; } function defaultPropFactory(prop) { return function() { const props = this.$props; return getDefaultConfig(props.theme, prop); }; } const PROVIDE_KEY = "__floating-vue__popper"; var PrivatePopper = () => ({ name: "VPopper", props: { theme: { type: String, required: true }, targetNodes: { type: Function, required: true }, referenceNode: { type: Function, required: true }, popperNode: { type: Function, required: true }, shown: { type: Boolean, default: false }, showGroup: { type: String, default: null }, ariaId: { default: null }, disabled: { type: Boolean, default: defaultPropFactory("disabled") }, positioningDisabled: { type: Boolean, default: defaultPropFactory("positioningDisabled") }, placement: { type: String, default: defaultPropFactory("placement"), validator: (value) => placements.includes(value) }, delay: { type: [String, Number, Object], default: defaultPropFactory("delay") }, distance: { type: [Number, String], default: defaultPropFactory("distance") }, skidding: { type: [Number, String], default: defaultPropFactory("skidding") }, triggers: { type: Array, default: defaultPropFactory("triggers") }, showTriggers: { type: [Array, Function], default: defaultPropFactory("showTriggers") }, hideTriggers: { type: [Array, Function], default: defaultPropFactory("hideTriggers") }, popperTriggers: { type: Array, default: defaultPropFactory("popperTriggers") }, popperShowTriggers: { type: [Array, Function], default: defaultPropFactory("popperShowTriggers") }, popperHideTriggers: { type: [Array, Function], default: defaultPropFactory("popperHideTriggers") }, container: { type: [String, Object, Element, Boolean], default: defaultPropFactory("container") }, boundary: { type: [String, Element], default: defaultPropFactory("boundary") }, strategy: { type: String, validator: (value) => ["absolute", "fixed"].includes(value), default: defaultPropFactory("strategy") }, autoHide: { type: [Boolean, Function], default: defaultPropFactory("autoHide") }, handleResize: { type: Boolean, default: defaultPropFactory("handleResize") }, instantMove: { type: Boolean, default: defaultPropFactory("instantMove") }, eagerMount: { type: Boolean, default: defaultPropFactory("eagerMount") }, popperClass: { type: [String, Array, Object], default: defaultPropFactory("popperClass") }, computeTransformOrigin: { type: Boolean, default: defaultPropFactory("computeTransformOrigin") }, autoMinSize: { type: Boolean, default: defaultPropFactory("autoMinSize") }, autoSize: { type: [Boolean, String], default: defaultPropFactory("autoSize") }, autoMaxSize: { type: Boolean, default: defaultPropFactory("autoMaxSize") }, autoBoundaryMaxSize: { type: Boolean, default: defaultPropFactory("autoBoundaryMaxSize") }, preventOverflow: { type: Boolean, default: defaultPropFactory("preventOverflow") }, overflowPadding: { type: [Number, String], default: defaultPropFactory("overflowPadding") }, arrowPadding: { type: [Number, String], default: defaultPropFactory("arrowPadding") }, arrowOverflow: { type: Boolean, default: defaultPropFactory("arrowOverflow") }, flip: { type: Boolean, default: defaultPropFactory("flip") }, shift: { type: Boolean, default: defaultPropFactory("shift") }, shiftCrossAxis: { type: Boolean, default: defaultPropFactory("shiftCrossAxis") }, noAutoFocus: { type: Boolean, default: defaultPropFactory("noAutoFocus") } }, provide() { return { [PROVIDE_KEY]: { parentPopper: this } }; }, inject: { [PROVIDE_KEY]: { default: null } }, data() { return { isShown: false, isMounted: false, skipTransition: false, classes: { showFrom: false, showTo: false, hideFrom: false, hideTo: true }, result: { x: 0, y: 0, placement: "", strategy: this.strategy, arrow: { x: 0, y: 0, centerOffset: 0 }, transformOrigin: null }, shownChildren: /* @__PURE__ */ new Set(), lastAutoHide: true }; }, computed: { popperId() { return this.ariaId != null ? this.ariaId : this.randomId; }, shouldMountContent() { return this.eagerMount || this.isMounted; }, slotData() { return { popperId: this.popperId, isShown: this.isShown, shouldMountContent: this.shouldMountContent, skipTransition: this.skipTransition, autoHide: typeof this.autoHide === "function" ? this.lastAutoHide : this.autoHide, show: this.show, hide: this.hide, handleResize: this.handleResize, onResize: this.onResize, classes: __spreadProps(__spreadValues({}, this.classes), { popperClass: this.popperClass }), result: this.positioningDisabled ? null : this.result }; }, parentPopper() { var _a; return (_a = this[PROVIDE_KEY]) == null ? void 0 : _a.parentPopper; }, hasPopperShowTriggerHover() { var _a, _b; return ((_a = this.popperTriggers) == null ? void 0 : _a.includes("hover")) || ((_b = this.popperShowTriggers) == null ? void 0 : _b.includes("hover")); } }, watch: __spreadValues(__spreadValues({ shown: "$_autoShowHide", disabled(value) { if (value) { this.dispose(); } else { this.init(); } }, async container() { if (this.isShown) { this.$_ensureTeleport(); await this.$_computePosition(); } } }, [ "triggers", "positioningDisabled" ].reduce((acc, prop) => { acc[prop] = "$_refreshListeners"; return acc; }, {})), [ "placement", "distance", "skidding", "boundary", "strategy", "overflowPadding", "arrowPadding", "preventOverflow", "shift", "shiftCrossAxis", "flip" ].reduce((acc, prop) => { acc[prop] = "$_computePosition"; return acc; }, {})), created() { this.$_isDisposed = true; this.randomId = `popper_${[Math.random(), Date.now()].map((n) => n.toString(36).substring(2, 10)).join("_")}`; if (this.autoMinSize) { console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'); } if (this.autoMaxSize) { console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead."); } }, mounted() { this.init(); this.$_detachPopperNode(); }, activated() { this.$_autoShowHide(); }, deactivated() { this.hide(); }, beforeDestroy() { this.dispose(); }, methods: { show({ event = null, skipDelay = false, force = false } = {}) { var _a, _b; if (((_a = this.parentPopper) == null ? void 0 : _a.lockedChild) && this.parentPopper.lockedChild !== this) return; this.$_pendingHide = false; if (force || !this.disabled) { if (((_b = this.parentPopper) == null ? void 0 : _b.lockedChild) === this) { this.parentPopper.lockedChild = null; } this.$_scheduleShow(event, skipDelay); this.$emit("show"); this.$_showFrameLocked = true; requestAnimationFrame(() => { this.$_showFrameLocked = false; }); } this.$emit("update:shown", true); }, hide({ event = null, skipDelay = false, skipAiming = false } = {}) { var _a; if (this.$_hideInProgress) return; if (this.shownChildren.size > 0) { this.$_pendingHide = true; return; } if (!skipAiming && this.hasPopperShowTriggerHover && this.$_isAimingPopper()) { if (this.parentPopper) { this.parentPopper.lockedChild = this; clearTimeout(this.parentPopper.lockedChildTimer); this.parentPopper.lockedChildTimer = setTimeout(() => { if (this.parentPopper.lockedChild === this) { this.parentPopper.lockedChild.hide({ skipDelay }); this.parentPopper.lockedChild = null; } }, 1e3); } return; } if (((_a = this.parentPopper) == null ? void 0 : _a.lockedChild) === this) { this.parentPopper.lockedChild = null; } this.$_pendingHide = false; this.$_scheduleHide(event, skipDelay); this.$emit("hide"); this.$emit("update:shown", false); }, init() { if (!this.$_isDisposed) return; this.$_isDisposed = false; this.isMounted = false; this.$_events = []; this.$_preventShow = false; this.$_referenceNode = this.referenceNode(); this.$_targetNodes = this.targetNodes().filter((e) => e.nodeType === e.ELEMENT_NODE); this.$_popperNode = this.popperNode(); this.$_innerNode = this.$_popperNode.querySelector(".v-popper__inner"); this.$_arrowNode = this.$_popperNode.querySelector(".v-popper__arrow-container"); this.$_swapTargetAttrs("title", "data-original-title"); this.$_detachPopperNode(); if (this.triggers.length) { this.$_addEventListeners(); } if (this.shown) { this.show(); } }, dispose() { if (this.$_isDisposed) return; this.$_isDisposed = true; this.$_removeEventListeners(); this.hide({ skipDelay: true }); this.$_detachPopperNode(); this.isMounted = false; this.isShown = false; this.$_updateParentShownChildren(false); this.$_swapTargetAttrs("data-original-title", "title"); this.$emit("dispose"); }, async onResize() { if (this.isShown) { await this.$_computePosition(); this.$emit("resize"); } }, async $_computePosition() { var _a; if (this.$_isDisposed || this.positioningDisabled) return; const options2 = { strategy: this.strategy, middleware: [] }; if (this.distance || this.skidding) { options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.offset)({ mainAxis: this.distance, crossAxis: this.skidding })); } const isPlacementAuto = this.placement.startsWith("auto"); if (isPlacementAuto) { options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.autoPlacement)({ alignment: (_a = this.placement.split("-")[1]) != null ? _a : "" })); } else { options2.placement = this.placement; } if (this.preventOverflow) { if (this.shift) { options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.shift)({ padding: this.overflowPadding, boundary: this.boundary, crossAxis: this.shiftCrossAxis })); } if (!isPlacementAuto && this.flip) { options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.flip)({ padding: this.overflowPadding, boundary: this.boundary })); } } options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.arrow)({ element: this.$_arrowNode, padding: this.arrowPadding })); if (this.arrowOverflow) { options2.middleware.push({ name: "arrowOverflow", fn: ({ placement, rects, middlewareData }) => { let overflow; const { centerOffset } = middlewareData.arrow; if (placement.startsWith("top") || placement.startsWith("bottom")) { overflow = Math.abs(centerOffset) > rects.reference.width / 2; } else { overflow = Math.abs(centerOffset) > rects.reference.height / 2; } return { data: { overflow } }; } }); } if (this.autoMinSize || this.autoSize) { const autoSize = this.autoSize ? this.autoSize : this.autoMinSize ? "min" : null; options2.middleware.push({ name: "autoSize", fn: ({ rects, placement, middlewareData }) => { var _a2; if ((_a2 = middlewareData.autoSize) == null ? void 0 : _a2.skip) { return {}; } let width; let height; if (placement.startsWith("top") || placement.startsWith("bottom")) { width = rects.reference.width; } else { height = rects.reference.height; } this.$_innerNode.style[autoSize === "min" ? "minWidth" : autoSize === "max" ? "maxWidth" : "width"] = width != null ? `${width}px` : null; this.$_innerNode.style[autoSize === "min" ? "minHeight" : autoSize === "max" ? "maxHeight" : "height"] = height != null ? `${height}px` : null; return { data: { skip: true }, reset: { rects: true } }; } }); } if (this.autoMaxSize || this.autoBoundaryMaxSize) { this.$_innerNode.style.maxWidth = null; this.$_innerNode.style.maxHeight = null; options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.size)({ boundary: this.boundary, padding: this.overflowPadding, apply: ({ width, height }) => { this.$_innerNode.style.maxWidth = width != null ? `${width}px` : null; this.$_innerNode.style.maxHeight = height != null ? `${height}px` : null; } })); } const data = await (0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_1__.computePosition)(this.$_referenceNode, this.$_popperNode, options2); Object.assign(this.result, { x: data.x, y: data.y, placement: data.placement, strategy: data.strategy, arrow: __spreadValues(__spreadValues({}, data.middlewareData.arrow), data.middlewareData.arrowOverflow) }); }, $_scheduleShow(event = null, skipDelay = false) { this.$_updateParentShownChildren(true); this.$_hideInProgress = false; clearTimeout(this.$_scheduleTimer); if (hidingPopper && this.instantMove && hidingPopper.instantMove && hidingPopper !== this.parentPopper) { hidingPopper.$_applyHide(true); this.$_applyShow(true); return; } if (skipDelay) { this.$_applyShow(); } else { this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay("show")); } }, $_scheduleHide(event = null, skipDelay = false) { if (this.shownChildren.size > 0) { this.$_pendingHide = true; return; } this.$_updateParentShownChildren(false); this.$_hideInProgress = true; clearTimeout(this.$_scheduleTimer); if (this.isShown) { hidingPopper = this; } if (skipDelay) { this.$_applyHide(); } else { this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay("hide")); } }, $_computeDelay(type) { const delay = this.delay; return parseInt(delay && delay[type] || delay || 0); }, async $_applyShow(skipTransition = false) { clearTimeout(this.$_disposeTimer); clearTimeout(this.$_scheduleTimer); this.skipTransition = skipTransition; if (this.isShown) { return; } this.$_ensureTeleport(); await nextFrame(); await this.$_computePosition(); await this.$_applyShowEffect(); if (!this.positioningDisabled) { this.$_registerEventListeners([ ...(0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_1__.getScrollParents)(this.$_referenceNode), ...(0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_1__.getScrollParents)(this.$_popperNode) ], "scroll", () => { this.$_computePosition(); }); } }, async $_applyShowEffect() { if (this.$_hideInProgress) return; if (this.computeTransformOrigin) { const bounds = this.$_referenceNode.getBoundingClientRect(); const popperWrapper = this.$_popperNode.querySelector(".v-popper__wrapper"); const parentBounds = popperWrapper.parentNode.getBoundingClientRect(); const x = bounds.x + bounds.width / 2 - (parentBounds.left + popperWrapper.offsetLeft); const y = bounds.y + bounds.height / 2 - (parentBounds.top + popperWrapper.offsetTop); this.result.transformOrigin = `${x}px ${y}px`; } this.isShown = true; this.$_applyAttrsToTarget({ "aria-describedby": this.popperId, "data-popper-shown": "" }); const showGroup = this.showGroup; if (showGroup) { let popover; for (let i = 0; i < shownPoppers.length; i++) { popover = shownPoppers[i]; if (popover.showGroup !== showGroup) { popover.hide(); popover.$emit("close-group"); } } } shownPoppers.push(this); document.body.classList.add("v-popper--some-open"); for (const theme of getAllParentThemes(this.theme)) { getShownPoppersByTheme(theme).push(this); document.body.classList.add(`v-popper--some-open--${theme}`); } this.$emit("apply-show"); this.classes.showFrom = true; this.classes.showTo = false; this.classes.hideFrom = false; this.classes.hideTo = false; await nextFrame(); this.classes.showFrom = false; this.classes.showTo = true; if (!this.noAutoFocus) this.$_popperNode.focus(); }, async $_applyHide(skipTransition = false) { if (this.shownChildren.size > 0) { this.$_pendingHide = true; this.$_hideInProgress = false; return; } clearTimeout(this.$_scheduleTimer); if (!this.isShown) { return; } this.skipTransition = skipTransition; removeFromArray(shownPoppers, this); if (shownPoppers.length === 0) { document.body.classList.remove("v-popper--some-open"); } for (const theme of getAllParentThemes(this.theme)) { const list = getShownPoppersByTheme(theme); removeFromArray(list, this); if (list.length === 0) { document.body.classList.remove(`v-popper--some-open--${theme}`); } } if (hidingPopper === this) { hidingPopper = null; } this.isShown = false; this.$_applyAttrsToTarget({ "aria-describedby": void 0, "data-popper-shown": void 0 }); clearTimeout(this.$_disposeTimer); const disposeTime = getDefaultConfig(this.theme, "disposeTimeout"); if (disposeTime !== null) { this.$_disposeTimer = setTimeout(() => { if (this.$_popperNode) { this.$_detachPopperNode(); this.isMounted = false; } }, disposeTime); } this.$_removeEventListeners("scroll"); this.$emit("apply-hide"); this.classes.showFrom = false; this.classes.showTo = false; this.classes.hideFrom = true; this.classes.hideTo = false; await nextFrame(); this.classes.hideFrom = false; this.classes.hideTo = true; }, $_autoShowHide() { if (this.shown) { this.show(); } else { this.hide(); } }, $_ensureTeleport() { if (this.$_isDisposed) return; let container = this.container; if (typeof container === "string") { container = window.document.querySelector(container); } else if (container === false) { container = this.$_targetNodes[0].parentNode; } if (!container) { throw new Error("No container for popover: " + this.container); } container.appendChild(this.$_popperNode); this.isMounted = true; }, $_addEventListeners() { const handleShow = (event) => { if (this.isShown && !this.$_hideInProgress) { return; } event.usedByTooltip = true; !this.$_preventShow && this.show({ event }); }; this.$_registerTriggerListeners(this.$_targetNodes, SHOW_EVENT_MAP, this.triggers, this.showTriggers, handleShow); this.$_registerTriggerListeners([this.$_popperNode], SHOW_EVENT_MAP, this.popperTriggers, this.popperShowTriggers, handleShow); const handleHide = (skipAiming) => (event) => { if (event.usedByTooltip) { return; } this.hide({ event, skipAiming }); }; this.$_registerTriggerListeners(this.$_targetNodes, HIDE_EVENT_MAP, this.triggers, this.hideTriggers, handleHide(false)); this.$_registerTriggerListeners([this.$_popperNode], HIDE_EVENT_MAP, this.popperTriggers, this.popperHideTriggers, handleHide(true)); }, $_registerEventListeners(targetNodes, eventType, handler) { this.$_events.push({ targetNodes, eventType, handler }); targetNodes.forEach((node) => node.addEventListener(eventType, handler, supportsPassive ? { passive: true } : void 0)); }, $_registerTriggerListeners(targetNodes, eventMap, commonTriggers, customTrigger, handler) { let triggers = commonTriggers; if (customTrigger != null) { triggers = typeof customTrigger === "function" ? customTrigger(triggers) : customTrigger; } triggers.forEach((trigger) => { const eventType = eventMap[trigger]; if (eventType) { this.$_registerEventListeners(targetNodes, eventType, handler); } }); }, $_removeEventListeners(filterEventType) { const newList = []; this.$_events.forEach((listener) => { const { targetNodes, eventType, handler } = listener; if (!filterEventType || filterEventType === eventType) { targetNodes.forEach((node) => node.removeEventListener(eventType, handler)); } else { newList.push(listener); } }); this.$_events = newList; }, $_refreshListeners() { if (!this.$_isDisposed) { this.$_removeEventListeners(); this.$_addEventListeners(); } }, $_handleGlobalClose(event, touch = false) { if (this.$_showFrameLocked) return; this.hide({ event }); if (event.closePopover) { this.$emit("close-directive"); } else { this.$emit("auto-hide"); } if (touch) { this.$_preventShow = true; setTimeout(() => { this.$_preventShow = false; }, 300); } }, $_detachPopperNode() { this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode); }, $_swapTargetAttrs(attrFrom, attrTo) { for (const el of this.$_targetNodes) { const value = el.getAttribute(attrFrom); if (value) { el.removeAttribute(attrFrom); el.setAttribute(attrTo, value); } } }, $_applyAttrsToTarget(attrs) { for (const el of this.$_targetNodes) { for (const n in attrs) { const value = attrs[n]; if (value == null) { el.removeAttribute(n); } else { el.setAttribute(n, value); } } } }, $_updateParentShownChildren(value) { let parent = this.parentPopper; while (parent) { if (value) { parent.shownChildren.add(this.randomId); } else { parent.shownChildren.delete(this.randomId); if (parent.$_pendingHide) { parent.hide(); } } parent = parent.parentPopper; } }, $_isAimingPopper() { const referenceBounds = this.$el.getBoundingClientRect(); if (mouseX >= referenceBounds.left && mouseX <= referenceBounds.right && mouseY >= referenceBounds.top && mouseY <= referenceBounds.bottom) { const popperBounds = this.$_popperNode.getBoundingClientRect(); const vectorX = mouseX - mousePreviousX; const vectorY = mouseY - mousePreviousY; const distance = popperBounds.left + popperBounds.width / 2 - mousePreviousX + (popperBounds.top + popperBounds.height / 2) - mousePreviousY; const newVectorLength = distance + popperBounds.width + popperBounds.height; const edgeX = mousePreviousX + vectorX * newVectorLength; const edgeY = mousePreviousY + vectorY * newVectorLength; return lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.top, popperBounds.left, popperBounds.bottom) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.top, popperBounds.right, popperBounds.top) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.right, popperBounds.top, popperBounds.right, popperBounds.bottom) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.bottom, popperBounds.right, popperBounds.bottom); } return false; } }, render() { return this.$scopedSlots.default(this.slotData)[0]; } }); if (typeof document !== "undefined" && typeof window !== "undefined") { if (isIOS) { document.addEventListener("touchstart", handleGlobalMousedown, supportsPassive ? { passive: true, capture: true } : true); document.addEventListener("touchend", handleGlobalTouchend, supportsPassive ? { passive: true, capture: true } : true); } else { window.addEventListener("mousedown", handleGlobalMousedown, true); window.addEventListener("click", handleGlobalClick, true); } window.addEventListener("resize", computePositionAllShownPoppers); } function handleGlobalMousedown(event) { for (let i = 0; i < shownPoppers.length; i++) { const popper = shownPoppers[i]; try { const popperContent = popper.popperNode(); popper.$_mouseDownContains = popperContent.contains(event.target); } catch (e) { } } } function handleGlobalClick(event) { handleGlobalClose(event); } function handleGlobalTouchend(event) { handleGlobalClose(event, true); } function handleGlobalClose(event, touch = false) { const preventClose = {}; for (let i = shownPoppers.length - 1; i >= 0; i--) { const popper = shownPoppers[i]; try { const contains = popper.$_containsGlobalTarget = isContainingEventTarget(popper, event); popper.$_pendingHide = false; requestAnimationFrame(() => { popper.$_pendingHide = false; if (preventClose[popper.randomId]) return; if (shouldAutoHide(popper, contains, event)) { popper.$_handleGlobalClose(event, touch); if (!event.closeAllPopover && event.closePopover && contains) { let parent2 = popper.parentPopper; while (parent2) { preventClose[parent2.randomId] = true; parent2 = parent2.parentPopper; } return; } let parent = popper.parentPopper; while (parent) { if (shouldAutoHide(parent, parent.$_containsGlobalTarget, event)) { parent.$_handleGlobalClose(event, touch); } else { break; } parent = parent.parentPopper; } } }); } catch (e) { } } } function isContainingEventTarget(popper, event) { const popperContent = popper.popperNode(); return popper.$_mouseDownContains || popperContent.contains(event.target); } function shouldAutoHide(popper, contains, event) { return event.closeAllPopover || event.closePopover && contains || getAutoHideResult(popper, event) && !contains; } function getAutoHideResult(popper, event) { if (typeof popper.autoHide === "function") { const result = popper.autoHide(event); popper.lastAutoHide = result; return result; } return popper.autoHide; } function computePositionAllShownPoppers(event) { for (let i = 0; i < shownPoppers.length; i++) { const popper = shownPoppers[i]; popper.$_computePosition(event); } } function hideAllPoppers() { for (let i = 0; i < shownPoppers.length; i++) { const popper = shownPoppers[i]; popper.hide(); } } let mousePreviousX = 0; let mousePreviousY = 0; let mouseX = 0; let mouseY = 0; if (typeof window !== "undefined") { window.addEventListener("mousemove", (event) => { mousePreviousX = mouseX; mousePreviousY = mouseY; mouseX = event.clientX; mouseY = event.clientY; }, supportsPassive ? { passive: true } : void 0); } function lineIntersectsLine(x1, y1, x2, y2, x3, y3, x4, y4) { const uA = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)); const uB = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)); return uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1; } function getInternetExplorerVersion() { var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie > 0) { return parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)), 10); } var trident = ua.indexOf("Trident/"); if (trident > 0) { var rv = ua.indexOf("rv:"); return parseInt(ua.substring(rv + 3, ua.indexOf(".", rv)), 10); } var edge = ua.indexOf("Edge/"); if (edge > 0) { return parseInt(ua.substring(edge + 5, ua.indexOf(".", edge)), 10); } return -1; } var isIE; function initCompat() { if (!initCompat.init) { initCompat.init = true; isIE = getInternetExplorerVersion() !== -1; } } var script = { name: "ResizeObserver", props: { emitOnMount: { type: Boolean, default: false }, ignoreWidth: { type: Boolean, default: false }, ignoreHeight: { type: Boolean, default: false } }, mounted: function mounted() { var _this = this; initCompat(); this.$nextTick(function() { _this._w = _this.$el.offsetWidth; _this._h = _this.$el.offsetHeight; if (_this.emitOnMount) { _this.emitSize(); } }); var object = document.createElement("object"); this._resizeObject = object; object.setAttribute("aria-hidden", "true"); object.setAttribute("tabindex", -1); object.onload = this.addResizeHandlers; object.type = "text/html"; if (isIE) { this.$el.appendChild(object); } object.data = "about:blank"; if (!isIE) { this.$el.appendChild(object); } }, beforeDestroy: function beforeDestroy() { this.removeResizeHandlers(); }, methods: { compareAndNotify: function compareAndNotify() { if (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) { this._w = this.$el.offsetWidth; this._h = this.$el.offsetHeight; this.emitSize(); } }, emitSize: function emitSize() { this.$emit("notify", { width: this._w, height: this._h }); }, addResizeHandlers: function addResizeHandlers() { this._resizeObject.contentDocument.defaultView.addEventListener("resize", this.compareAndNotify); this.compareAndNotify(); }, removeResizeHandlers: function removeResizeHandlers() { if (this._resizeObject && this._resizeObject.onload) { if (!isIE && this._resizeObject.contentDocument) { this._resizeObject.contentDocument.defaultView.removeEventListener("resize", this.compareAndNotify); } this.$el.removeChild(this._resizeObject); this._resizeObject.onload = null; this._resizeObject = null; } } } }; function normalizeComponent$1(template, style, script2, scopeId, isFunctionalTemplate, moduleIdentifier, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) { if (typeof shadowMode !== "boolean") { createInjectorSSR = createInjector; createInjector = shadowMode; shadowMode = false; } var options2 = typeof script2 === "function" ? script2.options : script2; if (template && template.render) { options2.render = template.render; options2.staticRenderFns = template.staticRenderFns; options2._compiled = true; if (isFunctionalTemplate) { options2.functional = true; } } if (scopeId) { options2._scopeId = scopeId; } var hook; if (moduleIdentifier) { hook = function hook2(context) { context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") { context = __VUE_SSR_CONTEXT__; } if (style) { style.call(this, createInjectorSSR(context)); } if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier); } }; options2._ssrRegister = hook; } else if (style) { hook = shadowMode ? function(context) { style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot)); } : function(context) { style.call(this, createInjector(context)); }; } if (hook) { if (options2.functional) { var originalRender = options2.render; options2.render = function renderWithStyleInjection(h, context) { hook.call(context); return originalRender(h, context); }; } else { var existing = options2.beforeCreate; options2.beforeCreate = existing ? [].concat(existing, hook) : [hook]; } } return script2; } var __vue_script__ = script; var __vue_render__ = function __vue_render__2() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("div", { staticClass: "resize-observer", attrs: { tabindex: "-1" } }); }; var __vue_staticRenderFns__ = []; __vue_render__._withStripped = true; var __vue_inject_styles__ = void 0; var __vue_scope_id__ = "data-v-8859cc6c"; var __vue_module_identifier__ = void 0; var __vue_is_functional_template__ = false; var __vue_component__ = /* @__PURE__ */ normalizeComponent$1({ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, void 0, void 0, void 0); function install$1(Vue2) { Vue2.component("resize-observer", __vue_component__); Vue2.component("ResizeObserver", __vue_component__); } var plugin$1 = { version: "1.0.1", install: install$1 }; var GlobalVue$1 = null; if (typeof window !== "undefined") { GlobalVue$1 = window.Vue; } else if (typeof __webpack_require__.g !== "undefined") { GlobalVue$1 = __webpack_require__.g.Vue; } if (GlobalVue$1) { GlobalVue$1.use(plugin$1); } var PrivateThemeClass = { computed: { themeClass() { return getThemeClasses(this.theme); } } }; var __vue2_script$5 = { name: "VPopperContent", components: { ResizeObserver: __vue_component__ }, mixins: [ PrivateThemeClass ], props: { popperId: String, theme: String, shown: Boolean, mounted: Boolean, skipTransition: Boolean, autoHide: Boolean, handleResize: Boolean, classes: Object, result: Object }, methods: { toPx(value) { if (value != null && !isNaN(value)) { return `${value}px`; } return null; } } }; var render$2 = function() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("div", { ref: "popover", staticClass: "v-popper__popper", class: [ _vm.themeClass, _vm.classes.popperClass, { "v-popper__popper--shown": _vm.shown, "v-popper__popper--hidden": !_vm.shown, "v-popper__popper--show-from": _vm.classes.showFrom, "v-popper__popper--show-to": _vm.classes.showTo, "v-popper__popper--hide-from": _vm.classes.hideFrom, "v-popper__popper--hide-to": _vm.classes.hideTo, "v-popper__popper--skip-transition": _vm.skipTransition, "v-popper__popper--arrow-overflow": _vm.result && _vm.result.arrow.overflow, "v-popper__popper--no-positioning": !_vm.result } ], style: _vm.result ? { position: _vm.result.strategy, transform: "translate3d(" + Math.round(_vm.result.x) + "px," + Math.round(_vm.result.y) + "px,0)" } : void 0, attrs: { "id": _vm.popperId, "aria-hidden": _vm.shown ? "false" : "true", "tabindex": _vm.autoHide ? 0 : void 0, "data-popper-placement": _vm.result ? _vm.result.placement : void 0 }, on: { "keyup": function($event) { if (!$event.type.indexOf("key") && _vm._k($event.keyCode, "esc", 27, $event.key, ["Esc", "Escape"])) { return null; } _vm.autoHide && _vm.$emit("hide"); } } }, [_c("div", { staticClass: "v-popper__backdrop", on: { "click": function($event) { _vm.autoHide && _vm.$emit("hide"); } } }), _c("div", { staticClass: "v-popper__wrapper", style: _vm.result ? { transformOrigin: _vm.result.transformOrigin } : void 0 }, [_c("div", { ref: "inner", staticClass: "v-popper__inner" }, [_vm.mounted ? [_c("div", [_vm._t("default")], 2), _vm.handleResize ? _c("ResizeObserver", { on: { "notify": function($event) { return _vm.$emit("resize", $event); } } }) : _vm._e()] : _vm._e()], 2), _c("div", { ref: "arrow", staticClass: "v-popper__arrow-container", style: _vm.result ? { left: _vm.toPx(_vm.result.arrow.x), top: _vm.toPx(_vm.result.arrow.y) } : void 0 }, [_c("div", { staticClass: "v-popper__arrow-outer" }), _c("div", { staticClass: "v-popper__arrow-inner" })])])]); }; var staticRenderFns$2 = []; var PopperContent_vue_vue_type_style_index_0_lang = ""; function normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { var options2 = typeof scriptExports === "function" ? scriptExports.options : scriptExports; if (render2) { options2.render = render2; options2.staticRenderFns = staticRenderFns2; options2._compiled = true; } if (functionalTemplate) { options2.functional = true; } if (scopeId) { options2._scopeId = "data-v-" + scopeId; } var hook; if (moduleIdentifier) { hook = function(context) { context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") { context = __VUE_SSR_CONTEXT__; } if (injectStyles) { injectStyles.call(this, context); } if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier); } }; options2._ssrRegister = hook; } else if (injectStyles) { hook = shadowMode ? function() { injectStyles.call(this, (options2.functional ? this.parent : this).$root.$options.shadowRoot); } : injectStyles; } if (hook) { if (options2.functional) { options2._injectStyles = hook; var originalRender = options2.render; options2.render = function renderWithStyleInjection(h, context) { hook.call(context); return originalRender(h, context); }; } else { var existing = options2.beforeCreate; options2.beforeCreate = existing ? [].concat(existing, hook) : [hook]; } } return { exports: scriptExports, options: options2 }; } const __cssModules$5 = {}; var __component__$5 = /* @__PURE__ */ normalizeComponent(__vue2_script$5, render$2, staticRenderFns$2, false, __vue2_injectStyles$5, null, null, null); function __vue2_injectStyles$5(context) { for (let o in __cssModules$5) { this[o] = __cssModules$5[o]; } } var PrivatePopperContent = /* @__PURE__ */ function() { return __component__$5.exports; }(); var PrivatePopperMethods = { methods: { show(...args) { return this.$refs.popper.show(...args); }, hide(...args) { return this.$refs.popper.hide(...args); }, dispose(...args) { return this.$refs.popper.dispose(...args); }, onResize(...args) { return this.$refs.popper.onResize(...args); } } }; var __vue2_script$4 = { name: "VPopperWrapper", components: { Popper: PrivatePopper(), PopperContent: PrivatePopperContent }, mixins: [ PrivatePopperMethods, PrivateThemeClass ], inheritAttrs: false, props: { theme: { type: String, default() { return this.$options.vPopperTheme; } } }, methods: { getTargetNodes() { return Array.from(this.$refs.reference.children).filter((node) => node !== this.$refs.popperContent.$el); } } }; var render$1 = function() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("Popper", _vm._g(_vm._b({ ref: "popper", attrs: { "theme": _vm.theme, "target-nodes": _vm.getTargetNodes, "reference-node": function() { return _vm.$refs.reference; }, "popper-node": function() { return _vm.$refs.popperContent.$el; } }, scopedSlots: _vm._u([{ key: "default", fn: function(ref) { var popperId = ref.popperId; var isShown = ref.isShown; var shouldMountContent = ref.shouldMountContent; var skipTransition = ref.skipTransition; var autoHide = ref.autoHide; var show = ref.show; var hide = ref.hide; var handleResize = ref.handleResize; var onResize = ref.onResize; var classes = ref.classes; var result = ref.result; return [_c("div", { ref: "reference", staticClass: "v-popper", class: [ _vm.themeClass, { "v-popper--shown": isShown } ] }, [_vm._t("default", null, { "shown": isShown, "show": show, "hide": hide }), _c("PopperContent", { ref: "popperContent", attrs: { "popper-id": popperId, "theme": _vm.theme, "shown": isShown, "mounted": shouldMountContent, "skip-transition": skipTransition, "auto-hide": autoHide, "handle-resize": handleResize, "classes": classes, "result": result }, on: { "hide": hide, "resize": onResize } }, [_vm._t("popper", null, { "shown": isShown, "hide": hide })], 2)], 2)]; } }], null, true) }, "Popper", _vm.$attrs, false), _vm.$listeners)); }; var staticRenderFns$1 = []; const __cssModules$4 = {}; var __component__$4 = /* @__PURE__ */ normalizeComponent(__vue2_script$4, render$1, staticRenderFns$1, false, __vue2_injectStyles$4, null, null, null); function __vue2_injectStyles$4(context) { for (let o in __cssModules$4) { this[o] = __cssModules$4[o]; } } var PrivatePopperWrapper = /* @__PURE__ */ function() { return __component__$4.exports; }(); var __vue2_script$3 = __spreadProps(__spreadValues({}, PrivatePopperWrapper), { name: "VDropdown", vPopperTheme: "dropdown" }); var Dropdown_vue_vue_type_style_index_0_lang = ""; let __vue2_render$2, __vue2_staticRenderFns$2; const __cssModules$3 = {}; var __component__$3 = /* @__PURE__ */ normalizeComponent(__vue2_script$3, __vue2_render$2, __vue2_staticRenderFns$2, false, __vue2_injectStyles$3, null, null, null); function __vue2_injectStyles$3(context) { for (let o in __cssModules$3) { this[o] = __cssModules$3[o]; } } var PrivateDropdown = /* @__PURE__ */ function() { return __component__$3.exports; }(); var __vue2_script$2 = __spreadProps(__spreadValues({}, PrivatePopperWrapper), { name: "VMenu", vPopperTheme: "menu" }); let __vue2_render$1, __vue2_staticRenderFns$1; const __cssModules$2 = {}; var __component__$2 = /* @__PURE__ */ normalizeComponent(__vue2_script$2, __vue2_render$1, __vue2_staticRenderFns$1, false, __vue2_injectStyles$2, null, null, null); function __vue2_injectStyles$2(context) { for (let o in __cssModules$2) { this[o] = __cssModules$2[o]; } } var PrivateMenu = /* @__PURE__ */ function() { return __component__$2.exports; }(); var __vue2_script$1 = __spreadProps(__spreadValues({}, PrivatePopperWrapper), { name: "VTooltip", vPopperTheme: "tooltip" }); var Tooltip_vue_vue_type_style_index_0_lang = ""; let __vue2_render, __vue2_staticRenderFns; const __cssModules$1 = {}; var __component__$1 = /* @__PURE__ */ normalizeComponent(__vue2_script$1, __vue2_render, __vue2_staticRenderFns, false, __vue2_injectStyles$1, null, null, null); function __vue2_injectStyles$1(context) { for (let o in __cssModules$1) { this[o] = __cssModules$1[o]; } } var PrivateTooltip = /* @__PURE__ */ function() { return __component__$1.exports; }(); var __vue2_script = { name: "VTooltipDirective", components: { Popper: PrivatePopper(), PopperContent: PrivatePopperContent }, mixins: [ PrivatePopperMethods ], inheritAttrs: false, props: { theme: { type: String, default: "tooltip" }, html: { type: Boolean, default() { return getDefaultConfig(this.theme, "html"); } }, content: { type: [String, Number, Function], default: null }, loadingContent: { type: String, default() { return getDefaultConfig(this.theme, "loadingContent"); } } }, data() { return { asyncContent: null }; }, computed: { isContentAsync() { return typeof this.content === "function"; }, loading() { return this.isContentAsync && this.asyncContent == null; }, finalContent() { if (this.isContentAsync) { return this.loading ? this.loadingContent : this.asyncContent; } return this.content; } }, watch: { content: { handler() { this.fetchContent(true); }, immediate: true }, async finalContent(value) { await this.$nextTick(); this.$refs.popper.onResize(); } }, created() { this.$_fetchId = 0; }, methods: { fetchContent(force) { if (typeof this.content === "function" && this.$_isShown && (force || !this.$_loading && this.asyncContent == null)) { this.asyncContent = null; this.$_loading = true; const fetchId = ++this.$_fetchId; const result = this.content(this); if (result.then) { result.then((res) => this.onResult(fetchId, res)); } else { this.onResult(fetchId, result); } } }, onResult(fetchId, result) { if (fetchId !== this.$_fetchId) return; this.$_loading = false; this.asyncContent = result; }, onShow() { this.$_isShown = true; this.fetchContent(); }, onHide() { this.$_isShown = false; } } }; var render = function() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("Popper", _vm._g(_vm._b({ ref: "popper", attrs: { "theme": _vm.theme, "popper-node": function() { return _vm.$refs.popperContent.$el; } }, on: { "apply-show": _vm.onShow, "apply-hide": _vm.onHide }, scopedSlots: _vm._u([{ key: "default", fn: function(ref) { var popperId = ref.popperId; var isShown = ref.isShown; var shouldMountContent = ref.shouldMountContent; var skipTransition = ref.skipTransition; var autoHide = ref.autoHide; var hide = ref.hide; var handleResize = ref.handleResize; var onResize = ref.onResize; var classes = ref.classes; var result = ref.result; return [_c("PopperContent", { ref: "popperContent", class: { "v-popper--tooltip-loading": _vm.loading }, attrs: { "popper-id": popperId, "theme": _vm.theme, "shown": isShown, "mounted": shouldMountContent, "skip-transition": skipTransition, "auto-hide": autoHide, "handle-resize": handleResize, "classes": classes, "result": result }, on: { "hide": hide, "resize": onResize } }, [_vm.html ? _c("div", { domProps: { "innerHTML": _vm._s(_vm.finalContent) } }) : _c("div", { domProps: { "textContent": _vm._s(_vm.finalContent) } })])]; } }]) }, "Popper", _vm.$attrs, false), _vm.$listeners)); }; var staticRenderFns = []; const __cssModules = {}; var __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles, null, null, null); function __vue2_injectStyles(context) { for (let o in __cssModules) { this[o] = __cssModules[o]; } } var PrivateTooltipDirective = /* @__PURE__ */ function() { return __component__.exports; }(); const TARGET_CLASS = "v-popper--has-tooltip"; function getPlacement(options2, modifiers) { let result = options2.placement; if (!result && modifiers) { for (const pos of placements) { if (modifiers[pos]) { result = pos; } } } if (!result) { result = getDefaultConfig(options2.theme || "tooltip", "placement"); } return result; } function getOptions(el, value, modifiers) { let options2; const type = typeof value; if (type === "string") { options2 = { content: value }; } else if (value && type === "object") { options2 = value; } else { options2 = { content: false }; } options2.placement = getPlacement(options2, modifiers); options2.targetNodes = () => [el]; options2.referenceNode = () => el; return options2; } function createTooltip(el, value, modifiers) { const options2 = getOptions(el, value, modifiers); const tooltipApp = el.$_popper = new vue__WEBPACK_IMPORTED_MODULE_2__["default"]({ mixins: [ PrivatePopperMethods ], data() { return { options: options2 }; }, render(h) { const _a = this.options, { theme, html, content, loadingContent } = _a, otherOptions = __objRest(_a, [ "theme", "html", "content", "loadingContent" ]); return h(PrivateTooltipDirective, { props: { theme, html, content, loadingContent }, attrs: otherOptions, ref: "popper" }); }, devtools: { hide: true } }); const mountTarget = document.createElement("div"); document.body.appendChild(mountTarget); tooltipApp.$mount(mountTarget); if (el.classList) { el.classList.add(TARGET_CLASS); } return tooltipApp; } function destroyTooltip(el) { if (el.$_popper) { el.$_popper.$destroy(); delete el.$_popper; delete el.$_popperOldShown; } if (el.classList) { el.classList.remove(TARGET_CLASS); } } function bind(el, { value, oldValue, modifiers }) { const options2 = getOptions(el, value, modifiers); if (!options2.content || getDefaultConfig(options2.theme || "tooltip", "disabled")) { destroyTooltip(el); } else { let tooltipApp; if (el.$_popper) { tooltipApp = el.$_popper; tooltipApp.options = options2; } else { tooltipApp = createTooltip(el, value, modifiers); } if (typeof value.shown !== "undefined" && value.shown !== el.$_popperOldShown) { el.$_popperOldShown = value.shown; value.shown ? tooltipApp.show() : tooltipApp.hide(); } } } var PrivateVTooltip = { bind, update: bind, unbind(el) { destroyTooltip(el); } }; function addListeners(el) { el.addEventListener("click", onClick); el.addEventListener("touchstart", onTouchStart, supportsPassive ? { passive: true } : false); } function removeListeners(el) { el.removeEventListener("click", onClick); el.removeEventListener("touchstart", onTouchStart); el.removeEventListener("touchend", onTouchEnd); el.removeEventListener("touchcancel", onTouchCancel); } function onClick(event) { const el = event.currentTarget; event.closePopover = !el.$_vclosepopover_touch; event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all; } function onTouchStart(event) { if (event.changedTouches.length === 1) { const el = event.currentTarget; el.$_vclosepopover_touch = true; const touch = event.changedTouches[0]; el.$_vclosepopover_touchPoint = touch; el.addEventListener("touchend", onTouchEnd); el.addEventListener("touchcancel", onTouchCancel); } } function onTouchEnd(event) { const el = event.currentTarget; el.$_vclosepopover_touch = false; if (event.changedTouches.length === 1) { const touch = event.changedTouches[0]; const firstTouch = el.$_vclosepopover_touchPoint; event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20; event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all; } } function onTouchCancel(event) { const el = event.currentTarget; el.$_vclosepopover_touch = false; } var PrivateVClosePopper = { bind(el, { value, modifiers }) { el.$_closePopoverModifiers = modifiers; if (typeof value === "undefined" || value) { addListeners(el); } }, update(el, { value, oldValue, modifiers }) { el.$_closePopoverModifiers = modifiers; if (value !== oldValue) { if (typeof value === "undefined" || value) { addListeners(el); } else { removeListeners(el); } } }, unbind(el) { removeListeners(el); } }; const options = config; const VTooltip = PrivateVTooltip; const VClosePopper = PrivateVClosePopper; const Dropdown = PrivateDropdown; const Menu = PrivateMenu; const Popper = PrivatePopper; const PopperContent = PrivatePopperContent; const PopperMethods = PrivatePopperMethods; const PopperWrapper = PrivatePopperWrapper; const ThemeClass = PrivateThemeClass; const Tooltip = PrivateTooltip; const TooltipDirective = PrivateTooltipDirective; function install(app, options2 = {}) { if (app.$_vTooltipInstalled) return; app.$_vTooltipInstalled = true; assign(config, options2); app.directive("tooltip", PrivateVTooltip); app.directive("close-popper", PrivateVClosePopper); app.component("v-tooltip", PrivateTooltip); app.component("VTooltip", PrivateTooltip); app.component("v-dropdown", PrivateDropdown); app.component("VDropdown", PrivateDropdown); app.component("v-menu", PrivateMenu); app.component("VMenu", PrivateMenu); } const plugin = { version: "1.0.0-beta.19", install, options: config }; let GlobalVue = null; if (typeof window !== "undefined") { GlobalVue = window.Vue; } else if (typeof __webpack_require__.g !== "undefined") { GlobalVue = __webpack_require__.g.Vue; } if (GlobalVue) { GlobalVue.use(plugin); } /***/ }), /***/ "./node_modules/focus-trap/dist/focus-trap.esm.js": /*!********************************************************!*\ !*** ./node_modules/focus-trap/dist/focus-trap.esm.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createFocusTrap: () => (/* binding */ createFocusTrap) /* harmony export */ }); /* harmony import */ var tabbable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tabbable */ "./node_modules/tabbable/dist/index.esm.js"); /*! * focus-trap 7.5.2 * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE */ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } var activeFocusTraps = { activateTrap: function activateTrap(trapStack, trap) { if (trapStack.length > 0) { var activeTrap = trapStack[trapStack.length - 1]; if (activeTrap !== trap) { activeTrap.pause(); } } var trapIndex = trapStack.indexOf(trap); if (trapIndex === -1) { trapStack.push(trap); } else { // move this existing trap to the front of the queue trapStack.splice(trapIndex, 1); trapStack.push(trap); } }, deactivateTrap: function deactivateTrap(trapStack, trap) { var trapIndex = trapStack.indexOf(trap); if (trapIndex !== -1) { trapStack.splice(trapIndex, 1); } if (trapStack.length > 0) { trapStack[trapStack.length - 1].unpause(); } } }; var isSelectableInput = function isSelectableInput(node) { return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function'; }; var isEscapeEvent = function isEscapeEvent(e) { return (e === null || e === void 0 ? void 0 : e.key) === 'Escape' || (e === null || e === void 0 ? void 0 : e.key) === 'Esc' || (e === null || e === void 0 ? void 0 : e.keyCode) === 27; }; var isTabEvent = function isTabEvent(e) { return (e === null || e === void 0 ? void 0 : e.key) === 'Tab' || (e === null || e === void 0 ? void 0 : e.keyCode) === 9; }; // checks for TAB by default var isKeyForward = function isKeyForward(e) { return isTabEvent(e) && !e.shiftKey; }; // checks for SHIFT+TAB by default var isKeyBackward = function isKeyBackward(e) { return isTabEvent(e) && e.shiftKey; }; var delay = function delay(fn) { return setTimeout(fn, 0); }; // Array.find/findIndex() are not supported on IE; this replicates enough // of Array.findIndex() for our needs var findIndex = function findIndex(arr, fn) { var idx = -1; arr.every(function (value, i) { if (fn(value)) { idx = i; return false; // break } return true; // next }); return idx; }; /** * Get an option's value when it could be a plain value, or a handler that provides * the value. * @param {*} value Option's value to check. * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function. * @returns {*} The `value`, or the handler's returned value. */ var valueOrHandler = function valueOrHandler(value) { for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { params[_key - 1] = arguments[_key]; } return typeof value === 'function' ? value.apply(void 0, params) : value; }; var getActualTarget = function getActualTarget(event) { // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the // shadow host. However, event.target.composedPath() will be an array of // nodes "clicked" from inner-most (the actual element inside the shadow) to // outer-most (the host HTML document). If we have access to composedPath(), // then use its first element; otherwise, fall back to event.target (and // this only works for an _open_ shadow DOM; otherwise, // composedPath()[0] === event.target always). return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target; }; // NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this // current instance use the same stack if `userOptions.trapStack` isn't specified var internalTrapStack = []; var createFocusTrap = function createFocusTrap(elements, userOptions) { // SSR: a live trap shouldn't be created in this type of environment so this // should be safe code to execute if the `document` option isn't specified var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document; var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack; var config = _objectSpread2({ returnFocusOnDeactivate: true, escapeDeactivates: true, delayInitialFocus: true, isKeyForward: isKeyForward, isKeyBackward: isKeyBackward }, userOptions); var state = { // containers given to createFocusTrap() // @type {Array} containers: [], // list of objects identifying tabbable nodes in `containers` in the trap // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap // is active, but the trap should never get to a state where there isn't at least one group // with at least one tabbable node in it (that would lead to an error condition that would // result in an error being thrown) // @type {Array<{ // container: HTMLElement, // tabbableNodes: Array, // empty if none // focusableNodes: Array, // empty if none // posTabIndexesFound: boolean, // firstTabbableNode: HTMLElement|undefined, // lastTabbableNode: HTMLElement|undefined, // firstDomTabbableNode: HTMLElement|undefined, // lastDomTabbableNode: HTMLElement|undefined, // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined // }>} containerGroups: [], // same order/length as `containers` list // references to objects in `containerGroups`, but only those that actually have // tabbable nodes in them // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__ // the same length tabbableGroups: [], nodeFocusedBeforeActivation: null, mostRecentlyFocusedNode: null, active: false, paused: false, // timer ID for when delayInitialFocus is true and initial focus in this trap // has been delayed during activation delayInitialFocusTimer: undefined, // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any recentNavEvent: undefined }; var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later /** * Gets a configuration option value. * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set, * value will be taken from this object. Otherwise, value will be taken from base configuration. * @param {string} optionName Name of the option whose value is sought. * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName` * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used. */ var getOption = function getOption(configOverrideOptions, optionName, configOptionName) { return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName]; }; /** * Finds the index of the container that contains the element. * @param {HTMLElement} element * @param {Event} [event] If available, and `element` isn't directly found in any container, * the event's composed path is used to see if includes any known trap containers in the * case where the element is inside a Shadow DOM. * @returns {number} Index of the container in either `state.containers` or * `state.containerGroups` (the order/length of these lists are the same); -1 * if the element isn't found. */ var findContainerIndex = function findContainerIndex(element, event) { var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === 'function' ? event.composedPath() : undefined; // NOTE: search `containerGroups` because it's possible a group contains no tabbable // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`) // and we still need to find the element in there return state.containerGroups.findIndex(function (_ref) { var container = _ref.container, tabbableNodes = _ref.tabbableNodes; return container.contains(element) || ( // fall back to explicit tabbable search which will take into consideration any // web components if the `tabbableOptions.getShadowRoot` option was used for // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't // look inside web components even if open) composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function (node) { return node === element; }); }); }; /** * Gets the node for the given option, which is expected to be an option that * can be either a DOM node, a string that is a selector to get a node, `false` * (if a node is explicitly NOT given), or a function that returns any of these * values. * @param {string} optionName * @returns {undefined | false | HTMLElement | SVGElement} Returns * `undefined` if the option is not specified; `false` if the option * resolved to `false` (node explicitly not given); otherwise, the resolved * DOM node. * @throws {Error} If the option is set, not `false`, and is not, or does not * resolve to a node. */ var getNodeForOption = function getNodeForOption(optionName) { var optionValue = config[optionName]; if (typeof optionValue === 'function') { for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { params[_key2 - 1] = arguments[_key2]; } optionValue = optionValue.apply(void 0, params); } if (optionValue === true) { optionValue = undefined; // use default value } if (!optionValue) { if (optionValue === undefined || optionValue === false) { return optionValue; } // else, empty string (invalid), null (invalid), 0 (invalid) throw new Error("`".concat(optionName, "` was specified but was not a node, or did not return a node")); } var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point if (typeof optionValue === 'string') { node = doc.querySelector(optionValue); // resolve to node, or null if fails if (!node) { throw new Error("`".concat(optionName, "` as selector refers to no known node")); } } return node; }; var getInitialFocusNode = function getInitialFocusNode() { var node = getNodeForOption('initialFocus'); // false explicitly indicates we want no initialFocus at all if (node === false) { return false; } if (node === undefined || !(0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isFocusable)(node, config.tabbableOptions)) { // option not specified nor focusable: use fallback options if (findContainerIndex(doc.activeElement) >= 0) { node = doc.activeElement; } else { var firstTabbableGroup = state.tabbableGroups[0]; var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode; // NOTE: `fallbackFocus` option function cannot return `false` (not supported) node = firstTabbableNode || getNodeForOption('fallbackFocus'); } } if (!node) { throw new Error('Your focus-trap needs to have at least one focusable element'); } return node; }; var updateTabbableNodes = function updateTabbableNodes() { state.containerGroups = state.containers.map(function (container) { var tabbableNodes = (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.tabbable)(container, config.tabbableOptions); // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes // are a superset of tabbable nodes since nodes with negative `tabindex` attributes // are focusable but not tabbable var focusableNodes = (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.focusable)(container, config.tabbableOptions); var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : undefined; var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : undefined; var firstDomTabbableNode = focusableNodes.find(function (node) { return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(node); }); var lastDomTabbableNode = focusableNodes.slice().reverse().find(function (node) { return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(node); }); var posTabIndexesFound = !!tabbableNodes.find(function (node) { return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(node) > 0; }); return { container: container, tabbableNodes: tabbableNodes, focusableNodes: focusableNodes, /** True if at least one node with positive `tabindex` was found in this container. */ posTabIndexesFound: posTabIndexesFound, /** First tabbable node in container, __tabindex__ order; `undefined` if none. */ firstTabbableNode: firstTabbableNode, /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */ lastTabbableNode: lastTabbableNode, // NOTE: DOM order is NOT NECESSARILY "document position" order, but figuring that out // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition // because that API doesn't work with Shadow DOM as well as it should (@see // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far, // to address an edge case related to positive tabindex support, this seems like a much easier, // "close enough most of the time" alternative for positive tabindexes which should generally // be avoided anyway... /** First tabbable node in container, __DOM__ order; `undefined` if none. */ firstDomTabbableNode: firstDomTabbableNode, /** Last tabbable node in container, __DOM__ order; `undefined` if none. */ lastDomTabbableNode: lastDomTabbableNode, /** * Finds the __tabbable__ node that follows the given node in the specified direction, * in this container, if any. * @param {HTMLElement} node * @param {boolean} [forward] True if going in forward tab order; false if going * in reverse. * @returns {HTMLElement|undefined} The next tabbable node, if any. */ nextTabbableNode: function nextTabbableNode(node) { var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var nodeIdx = tabbableNodes.indexOf(node); if (nodeIdx < 0) { // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex): // since `node` should at least have been focusable, we assume that's the case and mimic // what browsers do, which is set focus to the next node in __document position order__, // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to // basic DOM order if (forward) { return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function (el) { return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(el); }); } return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function (el) { return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(el); }); } return tabbableNodes[nodeIdx + (forward ? 1 : -1)]; } }; }); state.tabbableGroups = state.containerGroups.filter(function (group) { return group.tabbableNodes.length > 0; }); // throw if no groups have tabbable nodes and we don't have a fallback focus node either if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option ) { throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times'); } // NOTE: Positive tabindexes are only properly supported in single-container traps because // doing it across multiple containers where tabindexes could be all over the place // would require Tabbable to support multiple containers, would require additional // specialized Shadow DOM support, and would require Tabbable's multi-container support // to look at those containers in document position order rather than user-provided // order (as they are treated in Focus-trap, for legacy reasons). See discussion on // https://github.com/focus-trap/focus-trap/issues/375 for more details. if (state.containerGroups.find(function (g) { return g.posTabIndexesFound; }) && state.containerGroups.length > 1) { throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps."); } }; var tryFocus = function tryFocus(node) { if (node === false) { return; } if (node === doc.activeElement) { return; } if (!node || !node.focus) { tryFocus(getInitialFocusNode()); return; } node.focus({ preventScroll: !!config.preventScroll }); // NOTE: focus() API does not trigger focusIn event so set MRU node manually state.mostRecentlyFocusedNode = node; if (isSelectableInput(node)) { node.select(); } }; var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) { var node = getNodeForOption('setReturnFocus', previousActiveElement); return node ? node : node === false ? false : previousActiveElement; }; /** * Finds the next node (in either direction) where focus should move according to a * keyboard focus-in event. * @param {Object} params * @param {Node} [params.target] Known target __from which__ to navigate, if any. * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event * will be used to determine the `target`). Ignored if `target` is specified. * @param {boolean} [params.isBackward] True if focus should move backward. * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be * determined given the current state of the trap. */ var findNextNavNode = function findNextNavNode(_ref2) { var target = _ref2.target, event = _ref2.event, _ref2$isBackward = _ref2.isBackward, isBackward = _ref2$isBackward === void 0 ? false : _ref2$isBackward; target = target || getActualTarget(event); updateTabbableNodes(); var destinationNode = null; if (state.tabbableGroups.length > 0) { // make sure the target is actually contained in a group // NOTE: the target may also be the container itself if it's focusable // with tabIndex='-1' and was given initial focus var containerIndex = findContainerIndex(target, event); var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined; if (containerIndex < 0) { // target not found in any group: quite possible focus has escaped the trap, // so bring it back into... if (isBackward) { // ...the last node in the last group destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode; } else { // ...the first node in the first group destinationNode = state.tabbableGroups[0].firstTabbableNode; } } else if (isBackward) { // REVERSE // is the target the first tabbable node in a group? var startOfGroupIndex = findIndex(state.tabbableGroups, function (_ref3) { var firstTabbableNode = _ref3.firstTabbableNode; return target === firstTabbableNode; }); if (startOfGroupIndex < 0 && (containerGroup.container === target || (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isFocusable)(target, config.tabbableOptions) && !(0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) { // an exception case where the target is either the container itself, or // a non-tabbable node that was given focus (i.e. tabindex is negative // and user clicked on it or node was programmatically given focus) // and is not followed by any other tabbable node, in which // case, we should handle shift+tab as if focus were on the container's // first tabbable node, and go to the last tabbable node of the LAST group startOfGroupIndex = containerIndex; } if (startOfGroupIndex >= 0) { // YES: then shift+tab should go to the last tabbable node in the // previous group (and wrap around to the last tabbable node of // the LAST group if it's the first tabbable node of the FIRST group) var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1; var destinationGroup = state.tabbableGroups[destinationGroupIndex]; destinationNode = (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode; } else if (!isTabEvent(event)) { // user must have customized the nav keys so we have to move focus manually _within_ // the active group: do this based on the order determined by tabbable() destinationNode = containerGroup.nextTabbableNode(target, false); } } else { // FORWARD // is the target the last tabbable node in a group? var lastOfGroupIndex = findIndex(state.tabbableGroups, function (_ref4) { var lastTabbableNode = _ref4.lastTabbableNode; return target === lastTabbableNode; }); if (lastOfGroupIndex < 0 && (containerGroup.container === target || (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isFocusable)(target, config.tabbableOptions) && !(0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) { // an exception case where the target is the container itself, or // a non-tabbable node that was given focus (i.e. tabindex is negative // and user clicked on it or node was programmatically given focus) // and is not followed by any other tabbable node, in which // case, we should handle tab as if focus were on the container's // last tabbable node, and go to the first tabbable node of the FIRST group lastOfGroupIndex = containerIndex; } if (lastOfGroupIndex >= 0) { // YES: then tab should go to the first tabbable node in the next // group (and wrap around to the first tabbable node of the FIRST // group if it's the last tabbable node of the LAST group) var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1; var _destinationGroup = state.tabbableGroups[_destinationGroupIndex]; destinationNode = (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode; } else if (!isTabEvent(event)) { // user must have customized the nav keys so we have to move focus manually _within_ // the active group: do this based on the order determined by tabbable() destinationNode = containerGroup.nextTabbableNode(target); } } } else { // no groups available // NOTE: the fallbackFocus option does not support returning false to opt-out destinationNode = getNodeForOption('fallbackFocus'); } return destinationNode; }; // This needs to be done on mousedown and touchstart instead of click // so that it precedes the focus event. var checkPointerDown = function checkPointerDown(e) { var target = getActualTarget(e); if (findContainerIndex(target, e) >= 0) { // allow the click since it ocurred inside the trap return; } if (valueOrHandler(config.clickOutsideDeactivates, e)) { // immediately deactivate the trap trap.deactivate({ // NOTE: by setting `returnFocus: false`, deactivate() will do nothing, // which will result in the outside click setting focus to the node // that was clicked (and if not focusable, to "nothing"); by setting // `returnFocus: true`, we'll attempt to re-focus the node originally-focused // on activation (or the configured `setReturnFocus` node), whether the // outside click was on a focusable node or not returnFocus: config.returnFocusOnDeactivate }); return; } // This is needed for mobile devices. // (If we'll only let `click` events through, // then on mobile they will be blocked anyways if `touchstart` is blocked.) if (valueOrHandler(config.allowOutsideClick, e)) { // allow the click outside the trap to take place return; } // otherwise, prevent the click e.preventDefault(); }; // In case focus escapes the trap for some strange reason, pull it back in. // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected // scrolling if the node that got focused was out of view; there's nothing we can do to // prevent that from happening by the time we discover that focus escaped var checkFocusIn = function checkFocusIn(event) { var target = getActualTarget(event); var targetContained = findContainerIndex(target, event) >= 0; // In Firefox when you Tab out of an iframe the Document is briefly focused. if (targetContained || target instanceof Document) { if (targetContained) { state.mostRecentlyFocusedNode = target; } } else { // escaped! pull it back in to where it just left event.stopImmediatePropagation(); // focus will escape if the MRU node had a positive tab index and user tried to nav forward; // it will also escape if the MRU node had a 0 tab index and user tried to nav backward // toward a node with a positive tab index var nextNode; // next node to focus, if we find one var navAcrossContainers = true; if (state.mostRecentlyFocusedNode) { if ((0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(state.mostRecentlyFocusedNode) > 0) { // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node... var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode); // there MAY not be any tabbable nodes in the container if there are at least 2 containers // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container // with at least one tabbable node in order to function, so this could be the other container // with nothing tabbable in it) var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes; if (tabbableNodes.length > 0) { // MRU tab index MAY not be found if the MRU node is focusable but not tabbable var mruTabIdx = tabbableNodes.findIndex(function (node) { return node === state.mostRecentlyFocusedNode; }); if (mruTabIdx >= 0) { if (config.isKeyForward(state.recentNavEvent)) { if (mruTabIdx + 1 < tabbableNodes.length) { nextNode = tabbableNodes[mruTabIdx + 1]; navAcrossContainers = false; } // else, don't wrap within the container as focus should move to next/previous // container } else { if (mruTabIdx - 1 >= 0) { nextNode = tabbableNodes[mruTabIdx - 1]; navAcrossContainers = false; } // else, don't wrap within the container as focus should move to next/previous // container } // else, don't find in container order without considering direction too } } // else, no tabbable nodes in that container (which means we must have at least one other // container with at least one tabbable node in it, otherwise focus-trap would've thrown // an error the last time updateTabbableNodes() was run): find next node among all known // containers } else { // check to see if there's at least one tabbable node with a positive tab index inside // the trap because focus seems to escape when navigating backward from a tabbable node // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with // the greatest positive tab index like it should) if (!state.containerGroups.some(function (g) { return g.tabbableNodes.some(function (n) { return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(n) > 0; }); })) { // no containers with tabbable nodes with positive tab indexes which means the focus // escaped for some other reason and we should just execute the fallback to the // MRU node or initial focus node, if any navAcrossContainers = false; } } } else { // no MRU node means we're likely in some initial condition when the trap has just // been activated and initial focus hasn't been given yet, in which case we should // fall through to trying to focus the initial focus node, which is what should // happen below at this point in the logic navAcrossContainers = false; } if (navAcrossContainers) { nextNode = findNextNavNode({ // move FROM the MRU node, not event-related node (which will be the node that is // outside the trap causing the focus escape we're trying to fix) target: state.mostRecentlyFocusedNode, isBackward: config.isKeyBackward(state.recentNavEvent) }); } if (nextNode) { tryFocus(nextNode); } else { tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode()); } } state.recentNavEvent = undefined; // clear }; // Hijack key nav events on the first and last focusable nodes of the trap, // in order to prevent focus from escaping. If it escapes for even a // moment it can end up scrolling the page and causing confusion so we // kind of need to capture the action at the keydown phase. var checkKeyNav = function checkKeyNav(event) { var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; state.recentNavEvent = event; var destinationNode = findNextNavNode({ event: event, isBackward: isBackward }); if (destinationNode) { if (isTabEvent(event)) { // since tab natively moves focus, we wouldn't have a destination node unless we // were on the edge of a container and had to move to the next/previous edge, in // which case we want to prevent default to keep the browser from moving focus // to where it normally would event.preventDefault(); } tryFocus(destinationNode); } // else, let the browser take care of [shift+]tab and move the focus }; var checkKey = function checkKey(event) { if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) { event.preventDefault(); trap.deactivate(); return; } if (config.isKeyForward(event) || config.isKeyBackward(event)) { checkKeyNav(event, config.isKeyBackward(event)); } }; var checkClick = function checkClick(e) { var target = getActualTarget(e); if (findContainerIndex(target, e) >= 0) { return; } if (valueOrHandler(config.clickOutsideDeactivates, e)) { return; } if (valueOrHandler(config.allowOutsideClick, e)) { return; } e.preventDefault(); e.stopImmediatePropagation(); }; // // EVENT LISTENERS // var addListeners = function addListeners() { if (!state.active) { return; } // There can be only one listening focus trap at a time activeFocusTraps.activateTrap(trapStack, trap); // Delay ensures that the focused element doesn't capture the event // that caused the focus trap activation. state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function () { tryFocus(getInitialFocusNode()); }) : tryFocus(getInitialFocusNode()); doc.addEventListener('focusin', checkFocusIn, true); doc.addEventListener('mousedown', checkPointerDown, { capture: true, passive: false }); doc.addEventListener('touchstart', checkPointerDown, { capture: true, passive: false }); doc.addEventListener('click', checkClick, { capture: true, passive: false }); doc.addEventListener('keydown', checkKey, { capture: true, passive: false }); return trap; }; var removeListeners = function removeListeners() { if (!state.active) { return; } doc.removeEventListener('focusin', checkFocusIn, true); doc.removeEventListener('mousedown', checkPointerDown, true); doc.removeEventListener('touchstart', checkPointerDown, true); doc.removeEventListener('click', checkClick, true); doc.removeEventListener('keydown', checkKey, true); return trap; }; // // MUTATION OBSERVER // var checkDomRemoval = function checkDomRemoval(mutations) { var isFocusedNodeRemoved = mutations.some(function (mutation) { var removedNodes = Array.from(mutation.removedNodes); return removedNodes.some(function (node) { return node === state.mostRecentlyFocusedNode; }); }); // If the currently focused is removed then browsers will move focus to the // element. If this happens, try to move focus back into the trap. if (isFocusedNodeRemoved) { tryFocus(getInitialFocusNode()); } }; // Use MutationObserver - if supported - to detect if focused node is removed // from the DOM. var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined; var updateObservedNodes = function updateObservedNodes() { if (!mutationObserver) { return; } mutationObserver.disconnect(); if (state.active && !state.paused) { state.containers.map(function (container) { mutationObserver.observe(container, { subtree: true, childList: true }); }); } }; // // TRAP DEFINITION // trap = { get active() { return state.active; }, get paused() { return state.paused; }, activate: function activate(activateOptions) { if (state.active) { return this; } var onActivate = getOption(activateOptions, 'onActivate'); var onPostActivate = getOption(activateOptions, 'onPostActivate'); var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap'); if (!checkCanFocusTrap) { updateTabbableNodes(); } state.active = true; state.paused = false; state.nodeFocusedBeforeActivation = doc.activeElement; onActivate === null || onActivate === void 0 ? void 0 : onActivate(); var finishActivation = function finishActivation() { if (checkCanFocusTrap) { updateTabbableNodes(); } addListeners(); updateObservedNodes(); onPostActivate === null || onPostActivate === void 0 ? void 0 : onPostActivate(); }; if (checkCanFocusTrap) { checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation); return this; } finishActivation(); return this; }, deactivate: function deactivate(deactivateOptions) { if (!state.active) { return this; } var options = _objectSpread2({ onDeactivate: config.onDeactivate, onPostDeactivate: config.onPostDeactivate, checkCanReturnFocus: config.checkCanReturnFocus }, deactivateOptions); clearTimeout(state.delayInitialFocusTimer); // noop if undefined state.delayInitialFocusTimer = undefined; removeListeners(); state.active = false; state.paused = false; updateObservedNodes(); activeFocusTraps.deactivateTrap(trapStack, trap); var onDeactivate = getOption(options, 'onDeactivate'); var onPostDeactivate = getOption(options, 'onPostDeactivate'); var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus'); var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate'); onDeactivate === null || onDeactivate === void 0 ? void 0 : onDeactivate(); var finishDeactivation = function finishDeactivation() { delay(function () { if (returnFocus) { tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)); } onPostDeactivate === null || onPostDeactivate === void 0 ? void 0 : onPostDeactivate(); }); }; if (returnFocus && checkCanReturnFocus) { checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation); return this; } finishDeactivation(); return this; }, pause: function pause(pauseOptions) { if (state.paused || !state.active) { return this; } var onPause = getOption(pauseOptions, 'onPause'); var onPostPause = getOption(pauseOptions, 'onPostPause'); state.paused = true; onPause === null || onPause === void 0 ? void 0 : onPause(); removeListeners(); updateObservedNodes(); onPostPause === null || onPostPause === void 0 ? void 0 : onPostPause(); return this; }, unpause: function unpause(unpauseOptions) { if (!state.paused || !state.active) { return this; } var onUnpause = getOption(unpauseOptions, 'onUnpause'); var onPostUnpause = getOption(unpauseOptions, 'onPostUnpause'); state.paused = false; onUnpause === null || onUnpause === void 0 ? void 0 : onUnpause(); updateTabbableNodes(); addListeners(); updateObservedNodes(); onPostUnpause === null || onPostUnpause === void 0 ? void 0 : onPostUnpause(); return this; }, updateContainerElements: function updateContainerElements(containerElements) { var elementsAsArray = [].concat(containerElements).filter(Boolean); state.containers = elementsAsArray.map(function (element) { return typeof element === 'string' ? doc.querySelector(element) : element; }); if (state.active) { updateTabbableNodes(); } updateObservedNodes(); return this; } }; // initialize container elements trap.updateContainerElements(elements); return trap; }; //# sourceMappingURL=focus-trap.esm.js.map /***/ }), /***/ "./node_modules/html-entities/lib/index.js": /*!*************************************************!*\ !*** ./node_modules/html-entities/lib/index.js ***! \*************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i'"&]/g,nonAscii:/[<>'"&\u0080-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,nonAsciiPrintable:/[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,nonAsciiPrintableOnly:/[\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,extensive:/[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g};var defaultEncodeOptions={mode:"specialChars",level:"all",numeric:"decimal"};function encode(text,_a){var _b=_a===void 0?defaultEncodeOptions:_a,_c=_b.mode,mode=_c===void 0?"specialChars":_c,_d=_b.numeric,numeric=_d===void 0?"decimal":_d,_e=_b.level,level=_e===void 0?"all":_e;if(!text){return""}var encodeRegExp=encodeRegExps[mode];var references=allNamedReferences[level].characters;var isHex=numeric==="hexadecimal";return replaceUsingRegExp(text,encodeRegExp,(function(input){var result=references[input];if(!result){var code=input.length>1?surrogate_pairs_1.getCodePoint(input,0):input.charCodeAt(0);result=(isHex?"&#x"+code.toString(16):"&#"+code)+";"}return result}))}exports.encode=encode;var defaultDecodeOptions={scope:"body",level:"all"};var strict=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g;var attribute=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g;var baseDecodeRegExps={xml:{strict:strict,attribute:attribute,body:named_references_1.bodyRegExps.xml},html4:{strict:strict,attribute:attribute,body:named_references_1.bodyRegExps.html4},html5:{strict:strict,attribute:attribute,body:named_references_1.bodyRegExps.html5}};var decodeRegExps=__assign(__assign({},baseDecodeRegExps),{all:baseDecodeRegExps.html5});var fromCharCode=String.fromCharCode;var outOfBoundsChar=fromCharCode(65533);var defaultDecodeEntityOptions={level:"all"};function getDecodedEntity(entity,references,isAttribute,isStrict){var decodeResult=entity;var decodeEntityLastChar=entity[entity.length-1];if(isAttribute&&decodeEntityLastChar==="="){decodeResult=entity}else if(isStrict&&decodeEntityLastChar!==";"){decodeResult=entity}else{var decodeResultByReference=references[entity];if(decodeResultByReference){decodeResult=decodeResultByReference}else if(entity[0]==="&"&&entity[1]==="#"){var decodeSecondChar=entity[2];var decodeCode=decodeSecondChar=="x"||decodeSecondChar=="X"?parseInt(entity.substr(3),16):parseInt(entity.substr(2));decodeResult=decodeCode>=1114111?outOfBoundsChar:decodeCode>65535?surrogate_pairs_1.fromCodePoint(decodeCode):fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode]||decodeCode)}}return decodeResult}function decodeEntity(entity,_a){var _b=(_a===void 0?defaultDecodeEntityOptions:_a).level,level=_b===void 0?"all":_b;if(!entity){return""}return getDecodedEntity(entity,allNamedReferences[level].entities,false,false)}exports.decodeEntity=decodeEntity;function decode(text,_a){var _b=_a===void 0?defaultDecodeOptions:_a,_c=_b.level,level=_c===void 0?"all":_c,_d=_b.scope,scope=_d===void 0?level==="xml"?"strict":"body":_d;if(!text){return""}var decodeRegExp=decodeRegExps[level][scope];var references=allNamedReferences[level].entities;var isAttribute=scope==="attribute";var isStrict=scope==="strict";return replaceUsingRegExp(text,decodeRegExp,(function(entity){return getDecodedEntity(entity,references,isAttribute,isStrict)}))}exports.decode=decode; //# sourceMappingURL=./index.js.map /***/ }), /***/ "./node_modules/html-entities/lib/named-references.js": /*!************************************************************!*\ !*** ./node_modules/html-entities/lib/named-references.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({value:true}));exports.bodyRegExps={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g};exports.namedReferences={xml:{entities:{"<":"<",">":">",""":'"',"'":"'","&":"&"},characters:{"<":"<",">":">",'"':""","'":"'","&":"&"}},html4:{entities:{"'":"'"," ":" "," ":" ","¡":"¡","¡":"¡","¢":"¢","¢":"¢","£":"£","£":"£","¤":"¤","¤":"¤","¥":"¥","¥":"¥","¦":"¦","¦":"¦","§":"§","§":"§","¨":"¨","¨":"¨","©":"©","©":"©","ª":"ª","ª":"ª","«":"«","«":"«","¬":"¬","¬":"¬","­":"­","­":"­","®":"®","®":"®","¯":"¯","¯":"¯","°":"°","°":"°","±":"±","±":"±","²":"²","²":"²","³":"³","³":"³","´":"´","´":"´","µ":"µ","µ":"µ","¶":"¶","¶":"¶","·":"·","·":"·","¸":"¸","¸":"¸","¹":"¹","¹":"¹","º":"º","º":"º","»":"»","»":"»","¼":"¼","¼":"¼","½":"½","½":"½","¾":"¾","¾":"¾","¿":"¿","¿":"¿","À":"À","À":"À","Á":"Á","Á":"Á","Â":"Â","Â":"Â","Ã":"Ã","Ã":"Ã","Ä":"Ä","Ä":"Ä","Å":"Å","Å":"Å","Æ":"Æ","Æ":"Æ","Ç":"Ç","Ç":"Ç","È":"È","È":"È","É":"É","É":"É","Ê":"Ê","Ê":"Ê","Ë":"Ë","Ë":"Ë","Ì":"Ì","Ì":"Ì","Í":"Í","Í":"Í","Î":"Î","Î":"Î","Ï":"Ï","Ï":"Ï","Ð":"Ð","Ð":"Ð","Ñ":"Ñ","Ñ":"Ñ","Ò":"Ò","Ò":"Ò","Ó":"Ó","Ó":"Ó","Ô":"Ô","Ô":"Ô","Õ":"Õ","Õ":"Õ","Ö":"Ö","Ö":"Ö","×":"×","×":"×","Ø":"Ø","Ø":"Ø","Ù":"Ù","Ù":"Ù","Ú":"Ú","Ú":"Ú","Û":"Û","Û":"Û","Ü":"Ü","Ü":"Ü","Ý":"Ý","Ý":"Ý","Þ":"Þ","Þ":"Þ","ß":"ß","ß":"ß","à":"à","à":"à","á":"á","á":"á","â":"â","â":"â","ã":"ã","ã":"ã","ä":"ä","ä":"ä","å":"å","å":"å","æ":"æ","æ":"æ","ç":"ç","ç":"ç","è":"è","è":"è","é":"é","é":"é","ê":"ê","ê":"ê","ë":"ë","ë":"ë","ì":"ì","ì":"ì","í":"í","í":"í","î":"î","î":"î","ï":"ï","ï":"ï","ð":"ð","ð":"ð","ñ":"ñ","ñ":"ñ","ò":"ò","ò":"ò","ó":"ó","ó":"ó","ô":"ô","ô":"ô","õ":"õ","õ":"õ","ö":"ö","ö":"ö","÷":"÷","÷":"÷","ø":"ø","ø":"ø","ù":"ù","ù":"ù","ú":"ú","ú":"ú","û":"û","û":"û","ü":"ü","ü":"ü","ý":"ý","ý":"ý","þ":"þ","þ":"þ","ÿ":"ÿ","ÿ":"ÿ",""":'"',""":'"',"&":"&","&":"&","<":"<","<":"<",">":">",">":">","Œ":"Œ","œ":"œ","Š":"Š","š":"š","Ÿ":"Ÿ","ˆ":"ˆ","˜":"˜"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","–":"–","—":"—","‘":"‘","’":"’","‚":"‚","“":"“","”":"”","„":"„","†":"†","‡":"‡","‰":"‰","‹":"‹","›":"›","€":"€","ƒ":"ƒ","Α":"Α","Β":"Β","Γ":"Γ","Δ":"Δ","Ε":"Ε","Ζ":"Ζ","Η":"Η","Θ":"Θ","Ι":"Ι","Κ":"Κ","Λ":"Λ","Μ":"Μ","Ν":"Ν","Ξ":"Ξ","Ο":"Ο","Π":"Π","Ρ":"Ρ","Σ":"Σ","Τ":"Τ","Υ":"Υ","Φ":"Φ","Χ":"Χ","Ψ":"Ψ","Ω":"Ω","α":"α","β":"β","γ":"γ","δ":"δ","ε":"ε","ζ":"ζ","η":"η","θ":"θ","ι":"ι","κ":"κ","λ":"λ","μ":"μ","ν":"ν","ξ":"ξ","ο":"ο","π":"π","ρ":"ρ","ς":"ς","σ":"σ","τ":"τ","υ":"υ","φ":"φ","χ":"χ","ψ":"ψ","ω":"ω","ϑ":"ϑ","ϒ":"ϒ","ϖ":"ϖ","•":"•","…":"…","′":"′","″":"″","‾":"‾","⁄":"⁄","℘":"℘","ℑ":"ℑ","ℜ":"ℜ","™":"™","ℵ":"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","−":"−","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","⟨":"〈","⟩":"〉","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"},characters:{"'":"'"," ":" ","¡":"¡","¢":"¢","£":"£","¤":"¤","¥":"¥","¦":"¦","§":"§","¨":"¨","©":"©","ª":"ª","«":"«","¬":"¬","­":"­","®":"®","¯":"¯","°":"°","±":"±","²":"²","³":"³","´":"´","µ":"µ","¶":"¶","·":"·","¸":"¸","¹":"¹","º":"º","»":"»","¼":"¼","½":"½","¾":"¾","¿":"¿","À":"À","Á":"Á","Â":"Â","Ã":"Ã","Ä":"Ä","Å":"Å","Æ":"Æ","Ç":"Ç","È":"È","É":"É","Ê":"Ê","Ë":"Ë","Ì":"Ì","Í":"Í","Î":"Î","Ï":"Ï","Ð":"Ð","Ñ":"Ñ","Ò":"Ò","Ó":"Ó","Ô":"Ô","Õ":"Õ","Ö":"Ö","×":"×","Ø":"Ø","Ù":"Ù","Ú":"Ú","Û":"Û","Ü":"Ü","Ý":"Ý","Þ":"Þ","ß":"ß","à":"à","á":"á","â":"â","ã":"ã","ä":"ä","å":"å","æ":"æ","ç":"ç","è":"è","é":"é","ê":"ê","ë":"ë","ì":"ì","í":"í","î":"î","ï":"ï","ð":"ð","ñ":"ñ","ò":"ò","ó":"ó","ô":"ô","õ":"õ","ö":"ö","÷":"÷","ø":"ø","ù":"ù","ú":"ú","û":"û","ü":"ü","ý":"ý","þ":"þ","ÿ":"ÿ",'"':""","&":"&","<":"<",">":">","Œ":"Œ","œ":"œ","Š":"Š","š":"š","Ÿ":"Ÿ","ˆ":"ˆ","˜":"˜"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","–":"–","—":"—","‘":"‘","’":"’","‚":"‚","“":"“","”":"”","„":"„","†":"†","‡":"‡","‰":"‰","‹":"‹","›":"›","€":"€","ƒ":"ƒ","Α":"Α","Β":"Β","Γ":"Γ","Δ":"Δ","Ε":"Ε","Ζ":"Ζ","Η":"Η","Θ":"Θ","Ι":"Ι","Κ":"Κ","Λ":"Λ","Μ":"Μ","Ν":"Ν","Ξ":"Ξ","Ο":"Ο","Π":"Π","Ρ":"Ρ","Σ":"Σ","Τ":"Τ","Υ":"Υ","Φ":"Φ","Χ":"Χ","Ψ":"Ψ","Ω":"Ω","α":"α","β":"β","γ":"γ","δ":"δ","ε":"ε","ζ":"ζ","η":"η","θ":"θ","ι":"ι","κ":"κ","λ":"λ","μ":"μ","ν":"ν","ξ":"ξ","ο":"ο","π":"π","ρ":"ρ","ς":"ς","σ":"σ","τ":"τ","υ":"υ","φ":"φ","χ":"χ","ψ":"ψ","ω":"ω","ϑ":"ϑ","ϒ":"ϒ","ϖ":"ϖ","•":"•","…":"…","′":"′","″":"″","‾":"‾","⁄":"⁄","℘":"℘","ℑ":"ℑ","ℜ":"ℜ","™":"™","ℵ":"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","−":"−","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","〈":"⟨","〉":"⟩","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"}},html5:{entities:{"Æ":"Æ","Æ":"Æ","&":"&","&":"&","Á":"Á","Á":"Á","Ă":"Ă","Â":"Â","Â":"Â","А":"А","𝔄":"𝔄","À":"À","À":"À","Α":"Α","Ā":"Ā","⩓":"⩓","Ą":"Ą","𝔸":"𝔸","⁡":"⁡","Å":"Å","Å":"Å","𝒜":"𝒜","≔":"≔","Ã":"Ã","Ã":"Ã","Ä":"Ä","Ä":"Ä","∖":"∖","⫧":"⫧","⌆":"⌆","Б":"Б","∵":"∵","ℬ":"ℬ","Β":"Β","𝔅":"𝔅","𝔹":"𝔹","˘":"˘","ℬ":"ℬ","≎":"≎","Ч":"Ч","©":"©","©":"©","Ć":"Ć","⋒":"⋒","ⅅ":"ⅅ","ℭ":"ℭ","Č":"Č","Ç":"Ç","Ç":"Ç","Ĉ":"Ĉ","∰":"∰","Ċ":"Ċ","¸":"¸","·":"·","ℭ":"ℭ","Χ":"Χ","⊙":"⊙","⊖":"⊖","⊕":"⊕","⊗":"⊗","∲":"∲","”":"”","’":"’","∷":"∷","⩴":"⩴","≡":"≡","∯":"∯","∮":"∮","ℂ":"ℂ","∐":"∐","∳":"∳","⨯":"⨯","𝒞":"𝒞","⋓":"⋓","≍":"≍","ⅅ":"ⅅ","⤑":"⤑","Ђ":"Ђ","Ѕ":"Ѕ","Џ":"Џ","‡":"‡","↡":"↡","⫤":"⫤","Ď":"Ď","Д":"Д","∇":"∇","Δ":"Δ","𝔇":"𝔇","´":"´","˙":"˙","˝":"˝","`":"`","˜":"˜","⋄":"⋄","ⅆ":"ⅆ","𝔻":"𝔻","¨":"¨","⃜":"⃜","≐":"≐","∯":"∯","¨":"¨","⇓":"⇓","⇐":"⇐","⇔":"⇔","⫤":"⫤","⟸":"⟸","⟺":"⟺","⟹":"⟹","⇒":"⇒","⊨":"⊨","⇑":"⇑","⇕":"⇕","∥":"∥","↓":"↓","⤓":"⤓","⇵":"⇵","̑":"̑","⥐":"⥐","⥞":"⥞","↽":"↽","⥖":"⥖","⥟":"⥟","⇁":"⇁","⥗":"⥗","⊤":"⊤","↧":"↧","⇓":"⇓","𝒟":"𝒟","Đ":"Đ","Ŋ":"Ŋ","Ð":"Ð","Ð":"Ð","É":"É","É":"É","Ě":"Ě","Ê":"Ê","Ê":"Ê","Э":"Э","Ė":"Ė","𝔈":"𝔈","È":"È","È":"È","∈":"∈","Ē":"Ē","◻":"◻","▫":"▫","Ę":"Ę","𝔼":"𝔼","Ε":"Ε","⩵":"⩵","≂":"≂","⇌":"⇌","ℰ":"ℰ","⩳":"⩳","Η":"Η","Ë":"Ë","Ë":"Ë","∃":"∃","ⅇ":"ⅇ","Ф":"Ф","𝔉":"𝔉","◼":"◼","▪":"▪","𝔽":"𝔽","∀":"∀","ℱ":"ℱ","ℱ":"ℱ","Ѓ":"Ѓ",">":">",">":">","Γ":"Γ","Ϝ":"Ϝ","Ğ":"Ğ","Ģ":"Ģ","Ĝ":"Ĝ","Г":"Г","Ġ":"Ġ","𝔊":"𝔊","⋙":"⋙","𝔾":"𝔾","≥":"≥","⋛":"⋛","≧":"≧","⪢":"⪢","≷":"≷","⩾":"⩾","≳":"≳","𝒢":"𝒢","≫":"≫","Ъ":"Ъ","ˇ":"ˇ","^":"^","Ĥ":"Ĥ","ℌ":"ℌ","ℋ":"ℋ","ℍ":"ℍ","─":"─","ℋ":"ℋ","Ħ":"Ħ","≎":"≎","≏":"≏","Е":"Е","IJ":"IJ","Ё":"Ё","Í":"Í","Í":"Í","Î":"Î","Î":"Î","И":"И","İ":"İ","ℑ":"ℑ","Ì":"Ì","Ì":"Ì","ℑ":"ℑ","Ī":"Ī","ⅈ":"ⅈ","⇒":"⇒","∬":"∬","∫":"∫","⋂":"⋂","⁣":"⁣","⁢":"⁢","Į":"Į","𝕀":"𝕀","Ι":"Ι","ℐ":"ℐ","Ĩ":"Ĩ","І":"І","Ï":"Ï","Ï":"Ï","Ĵ":"Ĵ","Й":"Й","𝔍":"𝔍","𝕁":"𝕁","𝒥":"𝒥","Ј":"Ј","Є":"Є","Х":"Х","Ќ":"Ќ","Κ":"Κ","Ķ":"Ķ","К":"К","𝔎":"𝔎","𝕂":"𝕂","𝒦":"𝒦","Љ":"Љ","<":"<","<":"<","Ĺ":"Ĺ","Λ":"Λ","⟪":"⟪","ℒ":"ℒ","↞":"↞","Ľ":"Ľ","Ļ":"Ļ","Л":"Л","⟨":"⟨","←":"←","⇤":"⇤","⇆":"⇆","⌈":"⌈","⟦":"⟦","⥡":"⥡","⇃":"⇃","⥙":"⥙","⌊":"⌊","↔":"↔","⥎":"⥎","⊣":"⊣","↤":"↤","⥚":"⥚","⊲":"⊲","⧏":"⧏","⊴":"⊴","⥑":"⥑","⥠":"⥠","↿":"↿","⥘":"⥘","↼":"↼","⥒":"⥒","⇐":"⇐","⇔":"⇔","⋚":"⋚","≦":"≦","≶":"≶","⪡":"⪡","⩽":"⩽","≲":"≲","𝔏":"𝔏","⋘":"⋘","⇚":"⇚","Ŀ":"Ŀ","⟵":"⟵","⟷":"⟷","⟶":"⟶","⟸":"⟸","⟺":"⟺","⟹":"⟹","𝕃":"𝕃","↙":"↙","↘":"↘","ℒ":"ℒ","↰":"↰","Ł":"Ł","≪":"≪","⤅":"⤅","М":"М"," ":" ","ℳ":"ℳ","𝔐":"𝔐","∓":"∓","𝕄":"𝕄","ℳ":"ℳ","Μ":"Μ","Њ":"Њ","Ń":"Ń","Ň":"Ň","Ņ":"Ņ","Н":"Н","​":"​","​":"​","​":"​","​":"​","≫":"≫","≪":"≪"," ":"\n","𝔑":"𝔑","⁠":"⁠"," ":" ","ℕ":"ℕ","⫬":"⫬","≢":"≢","≭":"≭","∦":"∦","∉":"∉","≠":"≠","≂̸":"≂̸","∄":"∄","≯":"≯","≱":"≱","≧̸":"≧̸","≫̸":"≫̸","≹":"≹","⩾̸":"⩾̸","≵":"≵","≎̸":"≎̸","≏̸":"≏̸","⋪":"⋪","⧏̸":"⧏̸","⋬":"⋬","≮":"≮","≰":"≰","≸":"≸","≪̸":"≪̸","⩽̸":"⩽̸","≴":"≴","⪢̸":"⪢̸","⪡̸":"⪡̸","⊀":"⊀","⪯̸":"⪯̸","⋠":"⋠","∌":"∌","⋫":"⋫","⧐̸":"⧐̸","⋭":"⋭","⊏̸":"⊏̸","⋢":"⋢","⊐̸":"⊐̸","⋣":"⋣","⊂⃒":"⊂⃒","⊈":"⊈","⊁":"⊁","⪰̸":"⪰̸","⋡":"⋡","≿̸":"≿̸","⊃⃒":"⊃⃒","⊉":"⊉","≁":"≁","≄":"≄","≇":"≇","≉":"≉","∤":"∤","𝒩":"𝒩","Ñ":"Ñ","Ñ":"Ñ","Ν":"Ν","Œ":"Œ","Ó":"Ó","Ó":"Ó","Ô":"Ô","Ô":"Ô","О":"О","Ő":"Ő","𝔒":"𝔒","Ò":"Ò","Ò":"Ò","Ō":"Ō","Ω":"Ω","Ο":"Ο","𝕆":"𝕆","“":"“","‘":"‘","⩔":"⩔","𝒪":"𝒪","Ø":"Ø","Ø":"Ø","Õ":"Õ","Õ":"Õ","⨷":"⨷","Ö":"Ö","Ö":"Ö","‾":"‾","⏞":"⏞","⎴":"⎴","⏜":"⏜","∂":"∂","П":"П","𝔓":"𝔓","Φ":"Φ","Π":"Π","±":"±","ℌ":"ℌ","ℙ":"ℙ","⪻":"⪻","≺":"≺","⪯":"⪯","≼":"≼","≾":"≾","″":"″","∏":"∏","∷":"∷","∝":"∝","𝒫":"𝒫","Ψ":"Ψ",""":'"',""":'"',"𝔔":"𝔔","ℚ":"ℚ","𝒬":"𝒬","⤐":"⤐","®":"®","®":"®","Ŕ":"Ŕ","⟫":"⟫","↠":"↠","⤖":"⤖","Ř":"Ř","Ŗ":"Ŗ","Р":"Р","ℜ":"ℜ","∋":"∋","⇋":"⇋","⥯":"⥯","ℜ":"ℜ","Ρ":"Ρ","⟩":"⟩","→":"→","⇥":"⇥","⇄":"⇄","⌉":"⌉","⟧":"⟧","⥝":"⥝","⇂":"⇂","⥕":"⥕","⌋":"⌋","⊢":"⊢","↦":"↦","⥛":"⥛","⊳":"⊳","⧐":"⧐","⊵":"⊵","⥏":"⥏","⥜":"⥜","↾":"↾","⥔":"⥔","⇀":"⇀","⥓":"⥓","⇒":"⇒","ℝ":"ℝ","⥰":"⥰","⇛":"⇛","ℛ":"ℛ","↱":"↱","⧴":"⧴","Щ":"Щ","Ш":"Ш","Ь":"Ь","Ś":"Ś","⪼":"⪼","Š":"Š","Ş":"Ş","Ŝ":"Ŝ","С":"С","𝔖":"𝔖","↓":"↓","←":"←","→":"→","↑":"↑","Σ":"Σ","∘":"∘","𝕊":"𝕊","√":"√","□":"□","⊓":"⊓","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊔":"⊔","𝒮":"𝒮","⋆":"⋆","⋐":"⋐","⋐":"⋐","⊆":"⊆","≻":"≻","⪰":"⪰","≽":"≽","≿":"≿","∋":"∋","∑":"∑","⋑":"⋑","⊃":"⊃","⊇":"⊇","⋑":"⋑","Þ":"Þ","Þ":"Þ","™":"™","Ћ":"Ћ","Ц":"Ц"," ":"\t","Τ":"Τ","Ť":"Ť","Ţ":"Ţ","Т":"Т","𝔗":"𝔗","∴":"∴","Θ":"Θ","  ":"  "," ":" ","∼":"∼","≃":"≃","≅":"≅","≈":"≈","𝕋":"𝕋","⃛":"⃛","𝒯":"𝒯","Ŧ":"Ŧ","Ú":"Ú","Ú":"Ú","↟":"↟","⥉":"⥉","Ў":"Ў","Ŭ":"Ŭ","Û":"Û","Û":"Û","У":"У","Ű":"Ű","𝔘":"𝔘","Ù":"Ù","Ù":"Ù","Ū":"Ū","_":"_","⏟":"⏟","⎵":"⎵","⏝":"⏝","⋃":"⋃","⊎":"⊎","Ų":"Ų","𝕌":"𝕌","↑":"↑","⤒":"⤒","⇅":"⇅","↕":"↕","⥮":"⥮","⊥":"⊥","↥":"↥","⇑":"⇑","⇕":"⇕","↖":"↖","↗":"↗","ϒ":"ϒ","Υ":"Υ","Ů":"Ů","𝒰":"𝒰","Ũ":"Ũ","Ü":"Ü","Ü":"Ü","⊫":"⊫","⫫":"⫫","В":"В","⊩":"⊩","⫦":"⫦","⋁":"⋁","‖":"‖","‖":"‖","∣":"∣","|":"|","❘":"❘","≀":"≀"," ":" ","𝔙":"𝔙","𝕍":"𝕍","𝒱":"𝒱","⊪":"⊪","Ŵ":"Ŵ","⋀":"⋀","𝔚":"𝔚","𝕎":"𝕎","𝒲":"𝒲","𝔛":"𝔛","Ξ":"Ξ","𝕏":"𝕏","𝒳":"𝒳","Я":"Я","Ї":"Ї","Ю":"Ю","Ý":"Ý","Ý":"Ý","Ŷ":"Ŷ","Ы":"Ы","𝔜":"𝔜","𝕐":"𝕐","𝒴":"𝒴","Ÿ":"Ÿ","Ж":"Ж","Ź":"Ź","Ž":"Ž","З":"З","Ż":"Ż","​":"​","Ζ":"Ζ","ℨ":"ℨ","ℤ":"ℤ","𝒵":"𝒵","á":"á","á":"á","ă":"ă","∾":"∾","∾̳":"∾̳","∿":"∿","â":"â","â":"â","´":"´","´":"´","а":"а","æ":"æ","æ":"æ","⁡":"⁡","𝔞":"𝔞","à":"à","à":"à","ℵ":"ℵ","ℵ":"ℵ","α":"α","ā":"ā","⨿":"⨿","&":"&","&":"&","∧":"∧","⩕":"⩕","⩜":"⩜","⩘":"⩘","⩚":"⩚","∠":"∠","⦤":"⦤","∠":"∠","∡":"∡","⦨":"⦨","⦩":"⦩","⦪":"⦪","⦫":"⦫","⦬":"⦬","⦭":"⦭","⦮":"⦮","⦯":"⦯","∟":"∟","⊾":"⊾","⦝":"⦝","∢":"∢","Å":"Å","⍼":"⍼","ą":"ą","𝕒":"𝕒","≈":"≈","⩰":"⩰","⩯":"⩯","≊":"≊","≋":"≋","'":"'","≈":"≈","≊":"≊","å":"å","å":"å","𝒶":"𝒶","*":"*","≈":"≈","≍":"≍","ã":"ã","ã":"ã","ä":"ä","ä":"ä","∳":"∳","⨑":"⨑","⫭":"⫭","≌":"≌","϶":"϶","‵":"‵","∽":"∽","⋍":"⋍","⊽":"⊽","⌅":"⌅","⌅":"⌅","⎵":"⎵","⎶":"⎶","≌":"≌","б":"б","„":"„","∵":"∵","∵":"∵","⦰":"⦰","϶":"϶","ℬ":"ℬ","β":"β","ℶ":"ℶ","≬":"≬","𝔟":"𝔟","⋂":"⋂","◯":"◯","⋃":"⋃","⨀":"⨀","⨁":"⨁","⨂":"⨂","⨆":"⨆","★":"★","▽":"▽","△":"△","⨄":"⨄","⋁":"⋁","⋀":"⋀","⤍":"⤍","⧫":"⧫","▪":"▪","▴":"▴","▾":"▾","◂":"◂","▸":"▸","␣":"␣","▒":"▒","░":"░","▓":"▓","█":"█","=⃥":"=⃥","≡⃥":"≡⃥","⌐":"⌐","𝕓":"𝕓","⊥":"⊥","⊥":"⊥","⋈":"⋈","╗":"╗","╔":"╔","╖":"╖","╓":"╓","═":"═","╦":"╦","╩":"╩","╤":"╤","╧":"╧","╝":"╝","╚":"╚","╜":"╜","╙":"╙","║":"║","╬":"╬","╣":"╣","╠":"╠","╫":"╫","╢":"╢","╟":"╟","⧉":"⧉","╕":"╕","╒":"╒","┐":"┐","┌":"┌","─":"─","╥":"╥","╨":"╨","┬":"┬","┴":"┴","⊟":"⊟","⊞":"⊞","⊠":"⊠","╛":"╛","╘":"╘","┘":"┘","└":"└","│":"│","╪":"╪","╡":"╡","╞":"╞","┼":"┼","┤":"┤","├":"├","‵":"‵","˘":"˘","¦":"¦","¦":"¦","𝒷":"𝒷","⁏":"⁏","∽":"∽","⋍":"⋍","\":"\\","⧅":"⧅","⟈":"⟈","•":"•","•":"•","≎":"≎","⪮":"⪮","≏":"≏","≏":"≏","ć":"ć","∩":"∩","⩄":"⩄","⩉":"⩉","⩋":"⩋","⩇":"⩇","⩀":"⩀","∩︀":"∩︀","⁁":"⁁","ˇ":"ˇ","⩍":"⩍","č":"č","ç":"ç","ç":"ç","ĉ":"ĉ","⩌":"⩌","⩐":"⩐","ċ":"ċ","¸":"¸","¸":"¸","⦲":"⦲","¢":"¢","¢":"¢","·":"·","𝔠":"𝔠","ч":"ч","✓":"✓","✓":"✓","χ":"χ","○":"○","⧃":"⧃","ˆ":"ˆ","≗":"≗","↺":"↺","↻":"↻","®":"®","Ⓢ":"Ⓢ","⊛":"⊛","⊚":"⊚","⊝":"⊝","≗":"≗","⨐":"⨐","⫯":"⫯","⧂":"⧂","♣":"♣","♣":"♣",":":":","≔":"≔","≔":"≔",",":",","@":"@","∁":"∁","∘":"∘","∁":"∁","ℂ":"ℂ","≅":"≅","⩭":"⩭","∮":"∮","𝕔":"𝕔","∐":"∐","©":"©","©":"©","℗":"℗","↵":"↵","✗":"✗","𝒸":"𝒸","⫏":"⫏","⫑":"⫑","⫐":"⫐","⫒":"⫒","⋯":"⋯","⤸":"⤸","⤵":"⤵","⋞":"⋞","⋟":"⋟","↶":"↶","⤽":"⤽","∪":"∪","⩈":"⩈","⩆":"⩆","⩊":"⩊","⊍":"⊍","⩅":"⩅","∪︀":"∪︀","↷":"↷","⤼":"⤼","⋞":"⋞","⋟":"⋟","⋎":"⋎","⋏":"⋏","¤":"¤","¤":"¤","↶":"↶","↷":"↷","⋎":"⋎","⋏":"⋏","∲":"∲","∱":"∱","⌭":"⌭","⇓":"⇓","⥥":"⥥","†":"†","ℸ":"ℸ","↓":"↓","‐":"‐","⊣":"⊣","⤏":"⤏","˝":"˝","ď":"ď","д":"д","ⅆ":"ⅆ","‡":"‡","⇊":"⇊","⩷":"⩷","°":"°","°":"°","δ":"δ","⦱":"⦱","⥿":"⥿","𝔡":"𝔡","⇃":"⇃","⇂":"⇂","⋄":"⋄","⋄":"⋄","♦":"♦","♦":"♦","¨":"¨","ϝ":"ϝ","⋲":"⋲","÷":"÷","÷":"÷","÷":"÷","⋇":"⋇","⋇":"⋇","ђ":"ђ","⌞":"⌞","⌍":"⌍","$":"$","𝕕":"𝕕","˙":"˙","≐":"≐","≑":"≑","∸":"∸","∔":"∔","⊡":"⊡","⌆":"⌆","↓":"↓","⇊":"⇊","⇃":"⇃","⇂":"⇂","⤐":"⤐","⌟":"⌟","⌌":"⌌","𝒹":"𝒹","ѕ":"ѕ","⧶":"⧶","đ":"đ","⋱":"⋱","▿":"▿","▾":"▾","⇵":"⇵","⥯":"⥯","⦦":"⦦","џ":"џ","⟿":"⟿","⩷":"⩷","≑":"≑","é":"é","é":"é","⩮":"⩮","ě":"ě","≖":"≖","ê":"ê","ê":"ê","≕":"≕","э":"э","ė":"ė","ⅇ":"ⅇ","≒":"≒","𝔢":"𝔢","⪚":"⪚","è":"è","è":"è","⪖":"⪖","⪘":"⪘","⪙":"⪙","⏧":"⏧","ℓ":"ℓ","⪕":"⪕","⪗":"⪗","ē":"ē","∅":"∅","∅":"∅","∅":"∅"," ":" "," ":" "," ":" ","ŋ":"ŋ"," ":" ","ę":"ę","𝕖":"𝕖","⋕":"⋕","⧣":"⧣","⩱":"⩱","ε":"ε","ε":"ε","ϵ":"ϵ","≖":"≖","≕":"≕","≂":"≂","⪖":"⪖","⪕":"⪕","=":"=","≟":"≟","≡":"≡","⩸":"⩸","⧥":"⧥","≓":"≓","⥱":"⥱","ℯ":"ℯ","≐":"≐","≂":"≂","η":"η","ð":"ð","ð":"ð","ë":"ë","ë":"ë","€":"€","!":"!","∃":"∃","ℰ":"ℰ","ⅇ":"ⅇ","≒":"≒","ф":"ф","♀":"♀","ffi":"ffi","ff":"ff","ffl":"ffl","𝔣":"𝔣","fi":"fi","fj":"fj","♭":"♭","fl":"fl","▱":"▱","ƒ":"ƒ","𝕗":"𝕗","∀":"∀","⋔":"⋔","⫙":"⫙","⨍":"⨍","½":"½","½":"½","⅓":"⅓","¼":"¼","¼":"¼","⅕":"⅕","⅙":"⅙","⅛":"⅛","⅔":"⅔","⅖":"⅖","¾":"¾","¾":"¾","⅗":"⅗","⅜":"⅜","⅘":"⅘","⅚":"⅚","⅝":"⅝","⅞":"⅞","⁄":"⁄","⌢":"⌢","𝒻":"𝒻","≧":"≧","⪌":"⪌","ǵ":"ǵ","γ":"γ","ϝ":"ϝ","⪆":"⪆","ğ":"ğ","ĝ":"ĝ","г":"г","ġ":"ġ","≥":"≥","⋛":"⋛","≥":"≥","≧":"≧","⩾":"⩾","⩾":"⩾","⪩":"⪩","⪀":"⪀","⪂":"⪂","⪄":"⪄","⋛︀":"⋛︀","⪔":"⪔","𝔤":"𝔤","≫":"≫","⋙":"⋙","ℷ":"ℷ","ѓ":"ѓ","≷":"≷","⪒":"⪒","⪥":"⪥","⪤":"⪤","≩":"≩","⪊":"⪊","⪊":"⪊","⪈":"⪈","⪈":"⪈","≩":"≩","⋧":"⋧","𝕘":"𝕘","`":"`","ℊ":"ℊ","≳":"≳","⪎":"⪎","⪐":"⪐",">":">",">":">","⪧":"⪧","⩺":"⩺","⋗":"⋗","⦕":"⦕","⩼":"⩼","⪆":"⪆","⥸":"⥸","⋗":"⋗","⋛":"⋛","⪌":"⪌","≷":"≷","≳":"≳","≩︀":"≩︀","≩︀":"≩︀","⇔":"⇔"," ":" ","½":"½","ℋ":"ℋ","ъ":"ъ","↔":"↔","⥈":"⥈","↭":"↭","ℏ":"ℏ","ĥ":"ĥ","♥":"♥","♥":"♥","…":"…","⊹":"⊹","𝔥":"𝔥","⤥":"⤥","⤦":"⤦","⇿":"⇿","∻":"∻","↩":"↩","↪":"↪","𝕙":"𝕙","―":"―","𝒽":"𝒽","ℏ":"ℏ","ħ":"ħ","⁃":"⁃","‐":"‐","í":"í","í":"í","⁣":"⁣","î":"î","î":"î","и":"и","е":"е","¡":"¡","¡":"¡","⇔":"⇔","𝔦":"𝔦","ì":"ì","ì":"ì","ⅈ":"ⅈ","⨌":"⨌","∭":"∭","⧜":"⧜","℩":"℩","ij":"ij","ī":"ī","ℑ":"ℑ","ℐ":"ℐ","ℑ":"ℑ","ı":"ı","⊷":"⊷","Ƶ":"Ƶ","∈":"∈","℅":"℅","∞":"∞","⧝":"⧝","ı":"ı","∫":"∫","⊺":"⊺","ℤ":"ℤ","⊺":"⊺","⨗":"⨗","⨼":"⨼","ё":"ё","į":"į","𝕚":"𝕚","ι":"ι","⨼":"⨼","¿":"¿","¿":"¿","𝒾":"𝒾","∈":"∈","⋹":"⋹","⋵":"⋵","⋴":"⋴","⋳":"⋳","∈":"∈","⁢":"⁢","ĩ":"ĩ","і":"і","ï":"ï","ï":"ï","ĵ":"ĵ","й":"й","𝔧":"𝔧","ȷ":"ȷ","𝕛":"𝕛","𝒿":"𝒿","ј":"ј","є":"є","κ":"κ","ϰ":"ϰ","ķ":"ķ","к":"к","𝔨":"𝔨","ĸ":"ĸ","х":"х","ќ":"ќ","𝕜":"𝕜","𝓀":"𝓀","⇚":"⇚","⇐":"⇐","⤛":"⤛","⤎":"⤎","≦":"≦","⪋":"⪋","⥢":"⥢","ĺ":"ĺ","⦴":"⦴","ℒ":"ℒ","λ":"λ","⟨":"⟨","⦑":"⦑","⟨":"⟨","⪅":"⪅","«":"«","«":"«","←":"←","⇤":"⇤","⤟":"⤟","⤝":"⤝","↩":"↩","↫":"↫","⤹":"⤹","⥳":"⥳","↢":"↢","⪫":"⪫","⤙":"⤙","⪭":"⪭","⪭︀":"⪭︀","⤌":"⤌","❲":"❲","{":"{","[":"[","⦋":"⦋","⦏":"⦏","⦍":"⦍","ľ":"ľ","ļ":"ļ","⌈":"⌈","{":"{","л":"л","⤶":"⤶","“":"“","„":"„","⥧":"⥧","⥋":"⥋","↲":"↲","≤":"≤","←":"←","↢":"↢","↽":"↽","↼":"↼","⇇":"⇇","↔":"↔","⇆":"⇆","⇋":"⇋","↭":"↭","⋋":"⋋","⋚":"⋚","≤":"≤","≦":"≦","⩽":"⩽","⩽":"⩽","⪨":"⪨","⩿":"⩿","⪁":"⪁","⪃":"⪃","⋚︀":"⋚︀","⪓":"⪓","⪅":"⪅","⋖":"⋖","⋚":"⋚","⪋":"⪋","≶":"≶","≲":"≲","⥼":"⥼","⌊":"⌊","𝔩":"𝔩","≶":"≶","⪑":"⪑","↽":"↽","↼":"↼","⥪":"⥪","▄":"▄","љ":"љ","≪":"≪","⇇":"⇇","⌞":"⌞","⥫":"⥫","◺":"◺","ŀ":"ŀ","⎰":"⎰","⎰":"⎰","≨":"≨","⪉":"⪉","⪉":"⪉","⪇":"⪇","⪇":"⪇","≨":"≨","⋦":"⋦","⟬":"⟬","⇽":"⇽","⟦":"⟦","⟵":"⟵","⟷":"⟷","⟼":"⟼","⟶":"⟶","↫":"↫","↬":"↬","⦅":"⦅","𝕝":"𝕝","⨭":"⨭","⨴":"⨴","∗":"∗","_":"_","◊":"◊","◊":"◊","⧫":"⧫","(":"(","⦓":"⦓","⇆":"⇆","⌟":"⌟","⇋":"⇋","⥭":"⥭","‎":"‎","⊿":"⊿","‹":"‹","𝓁":"𝓁","↰":"↰","≲":"≲","⪍":"⪍","⪏":"⪏","[":"[","‘":"‘","‚":"‚","ł":"ł","<":"<","<":"<","⪦":"⪦","⩹":"⩹","⋖":"⋖","⋋":"⋋","⋉":"⋉","⥶":"⥶","⩻":"⩻","⦖":"⦖","◃":"◃","⊴":"⊴","◂":"◂","⥊":"⥊","⥦":"⥦","≨︀":"≨︀","≨︀":"≨︀","∺":"∺","¯":"¯","¯":"¯","♂":"♂","✠":"✠","✠":"✠","↦":"↦","↦":"↦","↧":"↧","↤":"↤","↥":"↥","▮":"▮","⨩":"⨩","м":"м","—":"—","∡":"∡","𝔪":"𝔪","℧":"℧","µ":"µ","µ":"µ","∣":"∣","*":"*","⫰":"⫰","·":"·","·":"·","−":"−","⊟":"⊟","∸":"∸","⨪":"⨪","⫛":"⫛","…":"…","∓":"∓","⊧":"⊧","𝕞":"𝕞","∓":"∓","𝓂":"𝓂","∾":"∾","μ":"μ","⊸":"⊸","⊸":"⊸","⋙̸":"⋙̸","≫⃒":"≫⃒","≫̸":"≫̸","⇍":"⇍","⇎":"⇎","⋘̸":"⋘̸","≪⃒":"≪⃒","≪̸":"≪̸","⇏":"⇏","⊯":"⊯","⊮":"⊮","∇":"∇","ń":"ń","∠⃒":"∠⃒","≉":"≉","⩰̸":"⩰̸","≋̸":"≋̸","ʼn":"ʼn","≉":"≉","♮":"♮","♮":"♮","ℕ":"ℕ"," ":" "," ":" ","≎̸":"≎̸","≏̸":"≏̸","⩃":"⩃","ň":"ň","ņ":"ņ","≇":"≇","⩭̸":"⩭̸","⩂":"⩂","н":"н","–":"–","≠":"≠","⇗":"⇗","⤤":"⤤","↗":"↗","↗":"↗","≐̸":"≐̸","≢":"≢","⤨":"⤨","≂̸":"≂̸","∄":"∄","∄":"∄","𝔫":"𝔫","≧̸":"≧̸","≱":"≱","≱":"≱","≧̸":"≧̸","⩾̸":"⩾̸","⩾̸":"⩾̸","≵":"≵","≯":"≯","≯":"≯","⇎":"⇎","↮":"↮","⫲":"⫲","∋":"∋","⋼":"⋼","⋺":"⋺","∋":"∋","њ":"њ","⇍":"⇍","≦̸":"≦̸","↚":"↚","‥":"‥","≰":"≰","↚":"↚","↮":"↮","≰":"≰","≦̸":"≦̸","⩽̸":"⩽̸","⩽̸":"⩽̸","≮":"≮","≴":"≴","≮":"≮","⋪":"⋪","⋬":"⋬","∤":"∤","𝕟":"𝕟","¬":"¬","¬":"¬","∉":"∉","⋹̸":"⋹̸","⋵̸":"⋵̸","∉":"∉","⋷":"⋷","⋶":"⋶","∌":"∌","∌":"∌","⋾":"⋾","⋽":"⋽","∦":"∦","∦":"∦","⫽⃥":"⫽⃥","∂̸":"∂̸","⨔":"⨔","⊀":"⊀","⋠":"⋠","⪯̸":"⪯̸","⊀":"⊀","⪯̸":"⪯̸","⇏":"⇏","↛":"↛","⤳̸":"⤳̸","↝̸":"↝̸","↛":"↛","⋫":"⋫","⋭":"⋭","⊁":"⊁","⋡":"⋡","⪰̸":"⪰̸","𝓃":"𝓃","∤":"∤","∦":"∦","≁":"≁","≄":"≄","≄":"≄","∤":"∤","∦":"∦","⋢":"⋢","⋣":"⋣","⊄":"⊄","⫅̸":"⫅̸","⊈":"⊈","⊂⃒":"⊂⃒","⊈":"⊈","⫅̸":"⫅̸","⊁":"⊁","⪰̸":"⪰̸","⊅":"⊅","⫆̸":"⫆̸","⊉":"⊉","⊃⃒":"⊃⃒","⊉":"⊉","⫆̸":"⫆̸","≹":"≹","ñ":"ñ","ñ":"ñ","≸":"≸","⋪":"⋪","⋬":"⋬","⋫":"⋫","⋭":"⋭","ν":"ν","#":"#","№":"№"," ":" ","⊭":"⊭","⤄":"⤄","≍⃒":"≍⃒","⊬":"⊬","≥⃒":"≥⃒",">⃒":">⃒","⧞":"⧞","⤂":"⤂","≤⃒":"≤⃒","<⃒":"<⃒","⊴⃒":"⊴⃒","⤃":"⤃","⊵⃒":"⊵⃒","∼⃒":"∼⃒","⇖":"⇖","⤣":"⤣","↖":"↖","↖":"↖","⤧":"⤧","Ⓢ":"Ⓢ","ó":"ó","ó":"ó","⊛":"⊛","⊚":"⊚","ô":"ô","ô":"ô","о":"о","⊝":"⊝","ő":"ő","⨸":"⨸","⊙":"⊙","⦼":"⦼","œ":"œ","⦿":"⦿","𝔬":"𝔬","˛":"˛","ò":"ò","ò":"ò","⧁":"⧁","⦵":"⦵","Ω":"Ω","∮":"∮","↺":"↺","⦾":"⦾","⦻":"⦻","‾":"‾","⧀":"⧀","ō":"ō","ω":"ω","ο":"ο","⦶":"⦶","⊖":"⊖","𝕠":"𝕠","⦷":"⦷","⦹":"⦹","⊕":"⊕","∨":"∨","↻":"↻","⩝":"⩝","ℴ":"ℴ","ℴ":"ℴ","ª":"ª","ª":"ª","º":"º","º":"º","⊶":"⊶","⩖":"⩖","⩗":"⩗","⩛":"⩛","ℴ":"ℴ","ø":"ø","ø":"ø","⊘":"⊘","õ":"õ","õ":"õ","⊗":"⊗","⨶":"⨶","ö":"ö","ö":"ö","⌽":"⌽","∥":"∥","¶":"¶","¶":"¶","∥":"∥","⫳":"⫳","⫽":"⫽","∂":"∂","п":"п","%":"%",".":".","‰":"‰","⊥":"⊥","‱":"‱","𝔭":"𝔭","φ":"φ","ϕ":"ϕ","ℳ":"ℳ","☎":"☎","π":"π","⋔":"⋔","ϖ":"ϖ","ℏ":"ℏ","ℎ":"ℎ","ℏ":"ℏ","+":"+","⨣":"⨣","⊞":"⊞","⨢":"⨢","∔":"∔","⨥":"⨥","⩲":"⩲","±":"±","±":"±","⨦":"⨦","⨧":"⨧","±":"±","⨕":"⨕","𝕡":"𝕡","£":"£","£":"£","≺":"≺","⪳":"⪳","⪷":"⪷","≼":"≼","⪯":"⪯","≺":"≺","⪷":"⪷","≼":"≼","⪯":"⪯","⪹":"⪹","⪵":"⪵","⋨":"⋨","≾":"≾","′":"′","ℙ":"ℙ","⪵":"⪵","⪹":"⪹","⋨":"⋨","∏":"∏","⌮":"⌮","⌒":"⌒","⌓":"⌓","∝":"∝","∝":"∝","≾":"≾","⊰":"⊰","𝓅":"𝓅","ψ":"ψ"," ":" ","𝔮":"𝔮","⨌":"⨌","𝕢":"𝕢","⁗":"⁗","𝓆":"𝓆","ℍ":"ℍ","⨖":"⨖","?":"?","≟":"≟",""":'"',""":'"',"⇛":"⇛","⇒":"⇒","⤜":"⤜","⤏":"⤏","⥤":"⥤","∽̱":"∽̱","ŕ":"ŕ","√":"√","⦳":"⦳","⟩":"⟩","⦒":"⦒","⦥":"⦥","⟩":"⟩","»":"»","»":"»","→":"→","⥵":"⥵","⇥":"⇥","⤠":"⤠","⤳":"⤳","⤞":"⤞","↪":"↪","↬":"↬","⥅":"⥅","⥴":"⥴","↣":"↣","↝":"↝","⤚":"⤚","∶":"∶","ℚ":"ℚ","⤍":"⤍","❳":"❳","}":"}","]":"]","⦌":"⦌","⦎":"⦎","⦐":"⦐","ř":"ř","ŗ":"ŗ","⌉":"⌉","}":"}","р":"р","⤷":"⤷","⥩":"⥩","”":"”","”":"”","↳":"↳","ℜ":"ℜ","ℛ":"ℛ","ℜ":"ℜ","ℝ":"ℝ","▭":"▭","®":"®","®":"®","⥽":"⥽","⌋":"⌋","𝔯":"𝔯","⇁":"⇁","⇀":"⇀","⥬":"⥬","ρ":"ρ","ϱ":"ϱ","→":"→","↣":"↣","⇁":"⇁","⇀":"⇀","⇄":"⇄","⇌":"⇌","⇉":"⇉","↝":"↝","⋌":"⋌","˚":"˚","≓":"≓","⇄":"⇄","⇌":"⇌","‏":"‏","⎱":"⎱","⎱":"⎱","⫮":"⫮","⟭":"⟭","⇾":"⇾","⟧":"⟧","⦆":"⦆","𝕣":"𝕣","⨮":"⨮","⨵":"⨵",")":")","⦔":"⦔","⨒":"⨒","⇉":"⇉","›":"›","𝓇":"𝓇","↱":"↱","]":"]","’":"’","’":"’","⋌":"⋌","⋊":"⋊","▹":"▹","⊵":"⊵","▸":"▸","⧎":"⧎","⥨":"⥨","℞":"℞","ś":"ś","‚":"‚","≻":"≻","⪴":"⪴","⪸":"⪸","š":"š","≽":"≽","⪰":"⪰","ş":"ş","ŝ":"ŝ","⪶":"⪶","⪺":"⪺","⋩":"⋩","⨓":"⨓","≿":"≿","с":"с","⋅":"⋅","⊡":"⊡","⩦":"⩦","⇘":"⇘","⤥":"⤥","↘":"↘","↘":"↘","§":"§","§":"§",";":";","⤩":"⤩","∖":"∖","∖":"∖","✶":"✶","𝔰":"𝔰","⌢":"⌢","♯":"♯","щ":"щ","ш":"ш","∣":"∣","∥":"∥","­":"­","­":"­","σ":"σ","ς":"ς","ς":"ς","∼":"∼","⩪":"⩪","≃":"≃","≃":"≃","⪞":"⪞","⪠":"⪠","⪝":"⪝","⪟":"⪟","≆":"≆","⨤":"⨤","⥲":"⥲","←":"←","∖":"∖","⨳":"⨳","⧤":"⧤","∣":"∣","⌣":"⌣","⪪":"⪪","⪬":"⪬","⪬︀":"⪬︀","ь":"ь","/":"/","⧄":"⧄","⌿":"⌿","𝕤":"𝕤","♠":"♠","♠":"♠","∥":"∥","⊓":"⊓","⊓︀":"⊓︀","⊔":"⊔","⊔︀":"⊔︀","⊏":"⊏","⊑":"⊑","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊐":"⊐","⊒":"⊒","□":"□","□":"□","▪":"▪","▪":"▪","→":"→","𝓈":"𝓈","∖":"∖","⌣":"⌣","⋆":"⋆","☆":"☆","★":"★","ϵ":"ϵ","ϕ":"ϕ","¯":"¯","⊂":"⊂","⫅":"⫅","⪽":"⪽","⊆":"⊆","⫃":"⫃","⫁":"⫁","⫋":"⫋","⊊":"⊊","⪿":"⪿","⥹":"⥹","⊂":"⊂","⊆":"⊆","⫅":"⫅","⊊":"⊊","⫋":"⫋","⫇":"⫇","⫕":"⫕","⫓":"⫓","≻":"≻","⪸":"⪸","≽":"≽","⪰":"⪰","⪺":"⪺","⪶":"⪶","⋩":"⋩","≿":"≿","∑":"∑","♪":"♪","¹":"¹","¹":"¹","²":"²","²":"²","³":"³","³":"³","⊃":"⊃","⫆":"⫆","⪾":"⪾","⫘":"⫘","⊇":"⊇","⫄":"⫄","⟉":"⟉","⫗":"⫗","⥻":"⥻","⫂":"⫂","⫌":"⫌","⊋":"⊋","⫀":"⫀","⊃":"⊃","⊇":"⊇","⫆":"⫆","⊋":"⊋","⫌":"⫌","⫈":"⫈","⫔":"⫔","⫖":"⫖","⇙":"⇙","⤦":"⤦","↙":"↙","↙":"↙","⤪":"⤪","ß":"ß","ß":"ß","⌖":"⌖","τ":"τ","⎴":"⎴","ť":"ť","ţ":"ţ","т":"т","⃛":"⃛","⌕":"⌕","𝔱":"𝔱","∴":"∴","∴":"∴","θ":"θ","ϑ":"ϑ","ϑ":"ϑ","≈":"≈","∼":"∼"," ":" ","≈":"≈","∼":"∼","þ":"þ","þ":"þ","˜":"˜","×":"×","×":"×","⊠":"⊠","⨱":"⨱","⨰":"⨰","∭":"∭","⤨":"⤨","⊤":"⊤","⌶":"⌶","⫱":"⫱","𝕥":"𝕥","⫚":"⫚","⤩":"⤩","‴":"‴","™":"™","▵":"▵","▿":"▿","◃":"◃","⊴":"⊴","≜":"≜","▹":"▹","⊵":"⊵","◬":"◬","≜":"≜","⨺":"⨺","⨹":"⨹","⧍":"⧍","⨻":"⨻","⏢":"⏢","𝓉":"𝓉","ц":"ц","ћ":"ћ","ŧ":"ŧ","≬":"≬","↞":"↞","↠":"↠","⇑":"⇑","⥣":"⥣","ú":"ú","ú":"ú","↑":"↑","ў":"ў","ŭ":"ŭ","û":"û","û":"û","у":"у","⇅":"⇅","ű":"ű","⥮":"⥮","⥾":"⥾","𝔲":"𝔲","ù":"ù","ù":"ù","↿":"↿","↾":"↾","▀":"▀","⌜":"⌜","⌜":"⌜","⌏":"⌏","◸":"◸","ū":"ū","¨":"¨","¨":"¨","ų":"ų","𝕦":"𝕦","↑":"↑","↕":"↕","↿":"↿","↾":"↾","⊎":"⊎","υ":"υ","ϒ":"ϒ","υ":"υ","⇈":"⇈","⌝":"⌝","⌝":"⌝","⌎":"⌎","ů":"ů","◹":"◹","𝓊":"𝓊","⋰":"⋰","ũ":"ũ","▵":"▵","▴":"▴","⇈":"⇈","ü":"ü","ü":"ü","⦧":"⦧","⇕":"⇕","⫨":"⫨","⫩":"⫩","⊨":"⊨","⦜":"⦜","ϵ":"ϵ","ϰ":"ϰ","∅":"∅","ϕ":"ϕ","ϖ":"ϖ","∝":"∝","↕":"↕","ϱ":"ϱ","ς":"ς","⊊︀":"⊊︀","⫋︀":"⫋︀","⊋︀":"⊋︀","⫌︀":"⫌︀","ϑ":"ϑ","⊲":"⊲","⊳":"⊳","в":"в","⊢":"⊢","∨":"∨","⊻":"⊻","≚":"≚","⋮":"⋮","|":"|","|":"|","𝔳":"𝔳","⊲":"⊲","⊂⃒":"⊂⃒","⊃⃒":"⊃⃒","𝕧":"𝕧","∝":"∝","⊳":"⊳","𝓋":"𝓋","⫋︀":"⫋︀","⊊︀":"⊊︀","⫌︀":"⫌︀","⊋︀":"⊋︀","⦚":"⦚","ŵ":"ŵ","⩟":"⩟","∧":"∧","≙":"≙","℘":"℘","𝔴":"𝔴","𝕨":"𝕨","℘":"℘","≀":"≀","≀":"≀","𝓌":"𝓌","⋂":"⋂","◯":"◯","⋃":"⋃","▽":"▽","𝔵":"𝔵","⟺":"⟺","⟷":"⟷","ξ":"ξ","⟸":"⟸","⟵":"⟵","⟼":"⟼","⋻":"⋻","⨀":"⨀","𝕩":"𝕩","⨁":"⨁","⨂":"⨂","⟹":"⟹","⟶":"⟶","𝓍":"𝓍","⨆":"⨆","⨄":"⨄","△":"△","⋁":"⋁","⋀":"⋀","ý":"ý","ý":"ý","я":"я","ŷ":"ŷ","ы":"ы","¥":"¥","¥":"¥","𝔶":"𝔶","ї":"ї","𝕪":"𝕪","𝓎":"𝓎","ю":"ю","ÿ":"ÿ","ÿ":"ÿ","ź":"ź","ž":"ž","з":"з","ż":"ż","ℨ":"ℨ","ζ":"ζ","𝔷":"𝔷","ж":"ж","⇝":"⇝","𝕫":"𝕫","𝓏":"𝓏","‍":"‍","‌":"‌"},characters:{"Æ":"Æ","&":"&","Á":"Á","Ă":"Ă","Â":"Â","А":"А","𝔄":"𝔄","À":"À","Α":"Α","Ā":"Ā","⩓":"⩓","Ą":"Ą","𝔸":"𝔸","⁡":"⁡","Å":"Å","𝒜":"𝒜","≔":"≔","Ã":"Ã","Ä":"Ä","∖":"∖","⫧":"⫧","⌆":"⌆","Б":"Б","∵":"∵","ℬ":"ℬ","Β":"Β","𝔅":"𝔅","𝔹":"𝔹","˘":"˘","≎":"≎","Ч":"Ч","©":"©","Ć":"Ć","⋒":"⋒","ⅅ":"ⅅ","ℭ":"ℭ","Č":"Č","Ç":"Ç","Ĉ":"Ĉ","∰":"∰","Ċ":"Ċ","¸":"¸","·":"·","Χ":"Χ","⊙":"⊙","⊖":"⊖","⊕":"⊕","⊗":"⊗","∲":"∲","”":"”","’":"’","∷":"∷","⩴":"⩴","≡":"≡","∯":"∯","∮":"∮","ℂ":"ℂ","∐":"∐","∳":"∳","⨯":"⨯","𝒞":"𝒞","⋓":"⋓","≍":"≍","⤑":"⤑","Ђ":"Ђ","Ѕ":"Ѕ","Џ":"Џ","‡":"‡","↡":"↡","⫤":"⫤","Ď":"Ď","Д":"Д","∇":"∇","Δ":"Δ","𝔇":"𝔇","´":"´","˙":"˙","˝":"˝","`":"`","˜":"˜","⋄":"⋄","ⅆ":"ⅆ","𝔻":"𝔻","¨":"¨","⃜":"⃜","≐":"≐","⇓":"⇓","⇐":"⇐","⇔":"⇔","⟸":"⟸","⟺":"⟺","⟹":"⟹","⇒":"⇒","⊨":"⊨","⇑":"⇑","⇕":"⇕","∥":"∥","↓":"↓","⤓":"⤓","⇵":"⇵","̑":"̑","⥐":"⥐","⥞":"⥞","↽":"↽","⥖":"⥖","⥟":"⥟","⇁":"⇁","⥗":"⥗","⊤":"⊤","↧":"↧","𝒟":"𝒟","Đ":"Đ","Ŋ":"Ŋ","Ð":"Ð","É":"É","Ě":"Ě","Ê":"Ê","Э":"Э","Ė":"Ė","𝔈":"𝔈","È":"È","∈":"∈","Ē":"Ē","◻":"◻","▫":"▫","Ę":"Ę","𝔼":"𝔼","Ε":"Ε","⩵":"⩵","≂":"≂","⇌":"⇌","ℰ":"ℰ","⩳":"⩳","Η":"Η","Ë":"Ë","∃":"∃","ⅇ":"ⅇ","Ф":"Ф","𝔉":"𝔉","◼":"◼","▪":"▪","𝔽":"𝔽","∀":"∀","ℱ":"ℱ","Ѓ":"Ѓ",">":">","Γ":"Γ","Ϝ":"Ϝ","Ğ":"Ğ","Ģ":"Ģ","Ĝ":"Ĝ","Г":"Г","Ġ":"Ġ","𝔊":"𝔊","⋙":"⋙","𝔾":"𝔾","≥":"≥","⋛":"⋛","≧":"≧","⪢":"⪢","≷":"≷","⩾":"⩾","≳":"≳","𝒢":"𝒢","≫":"≫","Ъ":"Ъ","ˇ":"ˇ","^":"^","Ĥ":"Ĥ","ℌ":"ℌ","ℋ":"ℋ","ℍ":"ℍ","─":"─","Ħ":"Ħ","≏":"≏","Е":"Е","IJ":"IJ","Ё":"Ё","Í":"Í","Î":"Î","И":"И","İ":"İ","ℑ":"ℑ","Ì":"Ì","Ī":"Ī","ⅈ":"ⅈ","∬":"∬","∫":"∫","⋂":"⋂","⁣":"⁣","⁢":"⁢","Į":"Į","𝕀":"𝕀","Ι":"Ι","ℐ":"ℐ","Ĩ":"Ĩ","І":"І","Ï":"Ï","Ĵ":"Ĵ","Й":"Й","𝔍":"𝔍","𝕁":"𝕁","𝒥":"𝒥","Ј":"Ј","Є":"Є","Х":"Х","Ќ":"Ќ","Κ":"Κ","Ķ":"Ķ","К":"К","𝔎":"𝔎","𝕂":"𝕂","𝒦":"𝒦","Љ":"Љ","<":"<","Ĺ":"Ĺ","Λ":"Λ","⟪":"⟪","ℒ":"ℒ","↞":"↞","Ľ":"Ľ","Ļ":"Ļ","Л":"Л","⟨":"⟨","←":"←","⇤":"⇤","⇆":"⇆","⌈":"⌈","⟦":"⟦","⥡":"⥡","⇃":"⇃","⥙":"⥙","⌊":"⌊","↔":"↔","⥎":"⥎","⊣":"⊣","↤":"↤","⥚":"⥚","⊲":"⊲","⧏":"⧏","⊴":"⊴","⥑":"⥑","⥠":"⥠","↿":"↿","⥘":"⥘","↼":"↼","⥒":"⥒","⋚":"⋚","≦":"≦","≶":"≶","⪡":"⪡","⩽":"⩽","≲":"≲","𝔏":"𝔏","⋘":"⋘","⇚":"⇚","Ŀ":"Ŀ","⟵":"⟵","⟷":"⟷","⟶":"⟶","𝕃":"𝕃","↙":"↙","↘":"↘","↰":"↰","Ł":"Ł","≪":"≪","⤅":"⤅","М":"М"," ":" ","ℳ":"ℳ","𝔐":"𝔐","∓":"∓","𝕄":"𝕄","Μ":"Μ","Њ":"Њ","Ń":"Ń","Ň":"Ň","Ņ":"Ņ","Н":"Н","​":"​","\n":" ","𝔑":"𝔑","⁠":"⁠"," ":" ","ℕ":"ℕ","⫬":"⫬","≢":"≢","≭":"≭","∦":"∦","∉":"∉","≠":"≠","≂̸":"≂̸","∄":"∄","≯":"≯","≱":"≱","≧̸":"≧̸","≫̸":"≫̸","≹":"≹","⩾̸":"⩾̸","≵":"≵","≎̸":"≎̸","≏̸":"≏̸","⋪":"⋪","⧏̸":"⧏̸","⋬":"⋬","≮":"≮","≰":"≰","≸":"≸","≪̸":"≪̸","⩽̸":"⩽̸","≴":"≴","⪢̸":"⪢̸","⪡̸":"⪡̸","⊀":"⊀","⪯̸":"⪯̸","⋠":"⋠","∌":"∌","⋫":"⋫","⧐̸":"⧐̸","⋭":"⋭","⊏̸":"⊏̸","⋢":"⋢","⊐̸":"⊐̸","⋣":"⋣","⊂⃒":"⊂⃒","⊈":"⊈","⊁":"⊁","⪰̸":"⪰̸","⋡":"⋡","≿̸":"≿̸","⊃⃒":"⊃⃒","⊉":"⊉","≁":"≁","≄":"≄","≇":"≇","≉":"≉","∤":"∤","𝒩":"𝒩","Ñ":"Ñ","Ν":"Ν","Œ":"Œ","Ó":"Ó","Ô":"Ô","О":"О","Ő":"Ő","𝔒":"𝔒","Ò":"Ò","Ō":"Ō","Ω":"Ω","Ο":"Ο","𝕆":"𝕆","“":"“","‘":"‘","⩔":"⩔","𝒪":"𝒪","Ø":"Ø","Õ":"Õ","⨷":"⨷","Ö":"Ö","‾":"‾","⏞":"⏞","⎴":"⎴","⏜":"⏜","∂":"∂","П":"П","𝔓":"𝔓","Φ":"Φ","Π":"Π","±":"±","ℙ":"ℙ","⪻":"⪻","≺":"≺","⪯":"⪯","≼":"≼","≾":"≾","″":"″","∏":"∏","∝":"∝","𝒫":"𝒫","Ψ":"Ψ",'"':""","𝔔":"𝔔","ℚ":"ℚ","𝒬":"𝒬","⤐":"⤐","®":"®","Ŕ":"Ŕ","⟫":"⟫","↠":"↠","⤖":"⤖","Ř":"Ř","Ŗ":"Ŗ","Р":"Р","ℜ":"ℜ","∋":"∋","⇋":"⇋","⥯":"⥯","Ρ":"Ρ","⟩":"⟩","→":"→","⇥":"⇥","⇄":"⇄","⌉":"⌉","⟧":"⟧","⥝":"⥝","⇂":"⇂","⥕":"⥕","⌋":"⌋","⊢":"⊢","↦":"↦","⥛":"⥛","⊳":"⊳","⧐":"⧐","⊵":"⊵","⥏":"⥏","⥜":"⥜","↾":"↾","⥔":"⥔","⇀":"⇀","⥓":"⥓","ℝ":"ℝ","⥰":"⥰","⇛":"⇛","ℛ":"ℛ","↱":"↱","⧴":"⧴","Щ":"Щ","Ш":"Ш","Ь":"Ь","Ś":"Ś","⪼":"⪼","Š":"Š","Ş":"Ş","Ŝ":"Ŝ","С":"С","𝔖":"𝔖","↑":"↑","Σ":"Σ","∘":"∘","𝕊":"𝕊","√":"√","□":"□","⊓":"⊓","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊔":"⊔","𝒮":"𝒮","⋆":"⋆","⋐":"⋐","⊆":"⊆","≻":"≻","⪰":"⪰","≽":"≽","≿":"≿","∑":"∑","⋑":"⋑","⊃":"⊃","⊇":"⊇","Þ":"Þ","™":"™","Ћ":"Ћ","Ц":"Ц","\t":" ","Τ":"Τ","Ť":"Ť","Ţ":"Ţ","Т":"Т","𝔗":"𝔗","∴":"∴","Θ":"Θ","  ":"  "," ":" ","∼":"∼","≃":"≃","≅":"≅","≈":"≈","𝕋":"𝕋","⃛":"⃛","𝒯":"𝒯","Ŧ":"Ŧ","Ú":"Ú","↟":"↟","⥉":"⥉","Ў":"Ў","Ŭ":"Ŭ","Û":"Û","У":"У","Ű":"Ű","𝔘":"𝔘","Ù":"Ù","Ū":"Ū",_:"_","⏟":"⏟","⎵":"⎵","⏝":"⏝","⋃":"⋃","⊎":"⊎","Ų":"Ų","𝕌":"𝕌","⤒":"⤒","⇅":"⇅","↕":"↕","⥮":"⥮","⊥":"⊥","↥":"↥","↖":"↖","↗":"↗","ϒ":"ϒ","Υ":"Υ","Ů":"Ů","𝒰":"𝒰","Ũ":"Ũ","Ü":"Ü","⊫":"⊫","⫫":"⫫","В":"В","⊩":"⊩","⫦":"⫦","⋁":"⋁","‖":"‖","∣":"∣","|":"|","❘":"❘","≀":"≀"," ":" ","𝔙":"𝔙","𝕍":"𝕍","𝒱":"𝒱","⊪":"⊪","Ŵ":"Ŵ","⋀":"⋀","𝔚":"𝔚","𝕎":"𝕎","𝒲":"𝒲","𝔛":"𝔛","Ξ":"Ξ","𝕏":"𝕏","𝒳":"𝒳","Я":"Я","Ї":"Ї","Ю":"Ю","Ý":"Ý","Ŷ":"Ŷ","Ы":"Ы","𝔜":"𝔜","𝕐":"𝕐","𝒴":"𝒴","Ÿ":"Ÿ","Ж":"Ж","Ź":"Ź","Ž":"Ž","З":"З","Ż":"Ż","Ζ":"Ζ","ℨ":"ℨ","ℤ":"ℤ","𝒵":"𝒵","á":"á","ă":"ă","∾":"∾","∾̳":"∾̳","∿":"∿","â":"â","а":"а","æ":"æ","𝔞":"𝔞","à":"à","ℵ":"ℵ","α":"α","ā":"ā","⨿":"⨿","∧":"∧","⩕":"⩕","⩜":"⩜","⩘":"⩘","⩚":"⩚","∠":"∠","⦤":"⦤","∡":"∡","⦨":"⦨","⦩":"⦩","⦪":"⦪","⦫":"⦫","⦬":"⦬","⦭":"⦭","⦮":"⦮","⦯":"⦯","∟":"∟","⊾":"⊾","⦝":"⦝","∢":"∢","⍼":"⍼","ą":"ą","𝕒":"𝕒","⩰":"⩰","⩯":"⩯","≊":"≊","≋":"≋","'":"'","å":"å","𝒶":"𝒶","*":"*","ã":"ã","ä":"ä","⨑":"⨑","⫭":"⫭","≌":"≌","϶":"϶","‵":"‵","∽":"∽","⋍":"⋍","⊽":"⊽","⌅":"⌅","⎶":"⎶","б":"б","„":"„","⦰":"⦰","β":"β","ℶ":"ℶ","≬":"≬","𝔟":"𝔟","◯":"◯","⨀":"⨀","⨁":"⨁","⨂":"⨂","⨆":"⨆","★":"★","▽":"▽","△":"△","⨄":"⨄","⤍":"⤍","⧫":"⧫","▴":"▴","▾":"▾","◂":"◂","▸":"▸","␣":"␣","▒":"▒","░":"░","▓":"▓","█":"█","=⃥":"=⃥","≡⃥":"≡⃥","⌐":"⌐","𝕓":"𝕓","⋈":"⋈","╗":"╗","╔":"╔","╖":"╖","╓":"╓","═":"═","╦":"╦","╩":"╩","╤":"╤","╧":"╧","╝":"╝","╚":"╚","╜":"╜","╙":"╙","║":"║","╬":"╬","╣":"╣","╠":"╠","╫":"╫","╢":"╢","╟":"╟","⧉":"⧉","╕":"╕","╒":"╒","┐":"┐","┌":"┌","╥":"╥","╨":"╨","┬":"┬","┴":"┴","⊟":"⊟","⊞":"⊞","⊠":"⊠","╛":"╛","╘":"╘","┘":"┘","└":"└","│":"│","╪":"╪","╡":"╡","╞":"╞","┼":"┼","┤":"┤","├":"├","¦":"¦","𝒷":"𝒷","⁏":"⁏","\\":"\","⧅":"⧅","⟈":"⟈","•":"•","⪮":"⪮","ć":"ć","∩":"∩","⩄":"⩄","⩉":"⩉","⩋":"⩋","⩇":"⩇","⩀":"⩀","∩︀":"∩︀","⁁":"⁁","⩍":"⩍","č":"č","ç":"ç","ĉ":"ĉ","⩌":"⩌","⩐":"⩐","ċ":"ċ","⦲":"⦲","¢":"¢","𝔠":"𝔠","ч":"ч","✓":"✓","χ":"χ","○":"○","⧃":"⧃","ˆ":"ˆ","≗":"≗","↺":"↺","↻":"↻","Ⓢ":"Ⓢ","⊛":"⊛","⊚":"⊚","⊝":"⊝","⨐":"⨐","⫯":"⫯","⧂":"⧂","♣":"♣",":":":",",":",","@":"@","∁":"∁","⩭":"⩭","𝕔":"𝕔","℗":"℗","↵":"↵","✗":"✗","𝒸":"𝒸","⫏":"⫏","⫑":"⫑","⫐":"⫐","⫒":"⫒","⋯":"⋯","⤸":"⤸","⤵":"⤵","⋞":"⋞","⋟":"⋟","↶":"↶","⤽":"⤽","∪":"∪","⩈":"⩈","⩆":"⩆","⩊":"⩊","⊍":"⊍","⩅":"⩅","∪︀":"∪︀","↷":"↷","⤼":"⤼","⋎":"⋎","⋏":"⋏","¤":"¤","∱":"∱","⌭":"⌭","⥥":"⥥","†":"†","ℸ":"ℸ","‐":"‐","⤏":"⤏","ď":"ď","д":"д","⇊":"⇊","⩷":"⩷","°":"°","δ":"δ","⦱":"⦱","⥿":"⥿","𝔡":"𝔡","♦":"♦","ϝ":"ϝ","⋲":"⋲","÷":"÷","⋇":"⋇","ђ":"ђ","⌞":"⌞","⌍":"⌍",$:"$","𝕕":"𝕕","≑":"≑","∸":"∸","∔":"∔","⊡":"⊡","⌟":"⌟","⌌":"⌌","𝒹":"𝒹","ѕ":"ѕ","⧶":"⧶","đ":"đ","⋱":"⋱","▿":"▿","⦦":"⦦","џ":"џ","⟿":"⟿","é":"é","⩮":"⩮","ě":"ě","≖":"≖","ê":"ê","≕":"≕","э":"э","ė":"ė","≒":"≒","𝔢":"𝔢","⪚":"⪚","è":"è","⪖":"⪖","⪘":"⪘","⪙":"⪙","⏧":"⏧","ℓ":"ℓ","⪕":"⪕","⪗":"⪗","ē":"ē","∅":"∅"," ":" "," ":" "," ":" ","ŋ":"ŋ"," ":" ","ę":"ę","𝕖":"𝕖","⋕":"⋕","⧣":"⧣","⩱":"⩱","ε":"ε","ϵ":"ϵ","=":"=","≟":"≟","⩸":"⩸","⧥":"⧥","≓":"≓","⥱":"⥱","ℯ":"ℯ","η":"η","ð":"ð","ë":"ë","€":"€","!":"!","ф":"ф","♀":"♀","ffi":"ffi","ff":"ff","ffl":"ffl","𝔣":"𝔣","fi":"fi",fj:"fj","♭":"♭","fl":"fl","▱":"▱","ƒ":"ƒ","𝕗":"𝕗","⋔":"⋔","⫙":"⫙","⨍":"⨍","½":"½","⅓":"⅓","¼":"¼","⅕":"⅕","⅙":"⅙","⅛":"⅛","⅔":"⅔","⅖":"⅖","¾":"¾","⅗":"⅗","⅜":"⅜","⅘":"⅘","⅚":"⅚","⅝":"⅝","⅞":"⅞","⁄":"⁄","⌢":"⌢","𝒻":"𝒻","⪌":"⪌","ǵ":"ǵ","γ":"γ","⪆":"⪆","ğ":"ğ","ĝ":"ĝ","г":"г","ġ":"ġ","⪩":"⪩","⪀":"⪀","⪂":"⪂","⪄":"⪄","⋛︀":"⋛︀","⪔":"⪔","𝔤":"𝔤","ℷ":"ℷ","ѓ":"ѓ","⪒":"⪒","⪥":"⪥","⪤":"⪤","≩":"≩","⪊":"⪊","⪈":"⪈","⋧":"⋧","𝕘":"𝕘","ℊ":"ℊ","⪎":"⪎","⪐":"⪐","⪧":"⪧","⩺":"⩺","⋗":"⋗","⦕":"⦕","⩼":"⩼","⥸":"⥸","≩︀":"≩︀","ъ":"ъ","⥈":"⥈","↭":"↭","ℏ":"ℏ","ĥ":"ĥ","♥":"♥","…":"…","⊹":"⊹","𝔥":"𝔥","⤥":"⤥","⤦":"⤦","⇿":"⇿","∻":"∻","↩":"↩","↪":"↪","𝕙":"𝕙","―":"―","𝒽":"𝒽","ħ":"ħ","⁃":"⁃","í":"í","î":"î","и":"и","е":"е","¡":"¡","𝔦":"𝔦","ì":"ì","⨌":"⨌","∭":"∭","⧜":"⧜","℩":"℩","ij":"ij","ī":"ī","ı":"ı","⊷":"⊷","Ƶ":"Ƶ","℅":"℅","∞":"∞","⧝":"⧝","⊺":"⊺","⨗":"⨗","⨼":"⨼","ё":"ё","į":"į","𝕚":"𝕚","ι":"ι","¿":"¿","𝒾":"𝒾","⋹":"⋹","⋵":"⋵","⋴":"⋴","⋳":"⋳","ĩ":"ĩ","і":"і","ï":"ï","ĵ":"ĵ","й":"й","𝔧":"𝔧","ȷ":"ȷ","𝕛":"𝕛","𝒿":"𝒿","ј":"ј","є":"є","κ":"κ","ϰ":"ϰ","ķ":"ķ","к":"к","𝔨":"𝔨","ĸ":"ĸ","х":"х","ќ":"ќ","𝕜":"𝕜","𝓀":"𝓀","⤛":"⤛","⤎":"⤎","⪋":"⪋","⥢":"⥢","ĺ":"ĺ","⦴":"⦴","λ":"λ","⦑":"⦑","⪅":"⪅","«":"«","⤟":"⤟","⤝":"⤝","↫":"↫","⤹":"⤹","⥳":"⥳","↢":"↢","⪫":"⪫","⤙":"⤙","⪭":"⪭","⪭︀":"⪭︀","⤌":"⤌","❲":"❲","{":"{","[":"[","⦋":"⦋","⦏":"⦏","⦍":"⦍","ľ":"ľ","ļ":"ļ","л":"л","⤶":"⤶","⥧":"⥧","⥋":"⥋","↲":"↲","≤":"≤","⇇":"⇇","⋋":"⋋","⪨":"⪨","⩿":"⩿","⪁":"⪁","⪃":"⪃","⋚︀":"⋚︀","⪓":"⪓","⋖":"⋖","⥼":"⥼","𝔩":"𝔩","⪑":"⪑","⥪":"⥪","▄":"▄","љ":"љ","⥫":"⥫","◺":"◺","ŀ":"ŀ","⎰":"⎰","≨":"≨","⪉":"⪉","⪇":"⪇","⋦":"⋦","⟬":"⟬","⇽":"⇽","⟼":"⟼","↬":"↬","⦅":"⦅","𝕝":"𝕝","⨭":"⨭","⨴":"⨴","∗":"∗","◊":"◊","(":"(","⦓":"⦓","⥭":"⥭","‎":"‎","⊿":"⊿","‹":"‹","𝓁":"𝓁","⪍":"⪍","⪏":"⪏","‚":"‚","ł":"ł","⪦":"⪦","⩹":"⩹","⋉":"⋉","⥶":"⥶","⩻":"⩻","⦖":"⦖","◃":"◃","⥊":"⥊","⥦":"⥦","≨︀":"≨︀","∺":"∺","¯":"¯","♂":"♂","✠":"✠","▮":"▮","⨩":"⨩","м":"м","—":"—","𝔪":"𝔪","℧":"℧","µ":"µ","⫰":"⫰","−":"−","⨪":"⨪","⫛":"⫛","⊧":"⊧","𝕞":"𝕞","𝓂":"𝓂","μ":"μ","⊸":"⊸","⋙̸":"⋙̸","≫⃒":"≫⃒","⇍":"⇍","⇎":"⇎","⋘̸":"⋘̸","≪⃒":"≪⃒","⇏":"⇏","⊯":"⊯","⊮":"⊮","ń":"ń","∠⃒":"∠⃒","⩰̸":"⩰̸","≋̸":"≋̸","ʼn":"ʼn","♮":"♮","⩃":"⩃","ň":"ň","ņ":"ņ","⩭̸":"⩭̸","⩂":"⩂","н":"н","–":"–","⇗":"⇗","⤤":"⤤","≐̸":"≐̸","⤨":"⤨","𝔫":"𝔫","↮":"↮","⫲":"⫲","⋼":"⋼","⋺":"⋺","њ":"њ","≦̸":"≦̸","↚":"↚","‥":"‥","𝕟":"𝕟","¬":"¬","⋹̸":"⋹̸","⋵̸":"⋵̸","⋷":"⋷","⋶":"⋶","⋾":"⋾","⋽":"⋽","⫽⃥":"⫽⃥","∂̸":"∂̸","⨔":"⨔","↛":"↛","⤳̸":"⤳̸","↝̸":"↝̸","𝓃":"𝓃","⊄":"⊄","⫅̸":"⫅̸","⊅":"⊅","⫆̸":"⫆̸","ñ":"ñ","ν":"ν","#":"#","№":"№"," ":" ","⊭":"⊭","⤄":"⤄","≍⃒":"≍⃒","⊬":"⊬","≥⃒":"≥⃒",">⃒":">⃒","⧞":"⧞","⤂":"⤂","≤⃒":"≤⃒","<⃒":"<⃒","⊴⃒":"⊴⃒","⤃":"⤃","⊵⃒":"⊵⃒","∼⃒":"∼⃒","⇖":"⇖","⤣":"⤣","⤧":"⤧","ó":"ó","ô":"ô","о":"о","ő":"ő","⨸":"⨸","⦼":"⦼","œ":"œ","⦿":"⦿","𝔬":"𝔬","˛":"˛","ò":"ò","⧁":"⧁","⦵":"⦵","⦾":"⦾","⦻":"⦻","⧀":"⧀","ō":"ō","ω":"ω","ο":"ο","⦶":"⦶","𝕠":"𝕠","⦷":"⦷","⦹":"⦹","∨":"∨","⩝":"⩝","ℴ":"ℴ","ª":"ª","º":"º","⊶":"⊶","⩖":"⩖","⩗":"⩗","⩛":"⩛","ø":"ø","⊘":"⊘","õ":"õ","⨶":"⨶","ö":"ö","⌽":"⌽","¶":"¶","⫳":"⫳","⫽":"⫽","п":"п","%":"%",".":".","‰":"‰","‱":"‱","𝔭":"𝔭","φ":"φ","ϕ":"ϕ","☎":"☎","π":"π","ϖ":"ϖ","ℎ":"ℎ","+":"+","⨣":"⨣","⨢":"⨢","⨥":"⨥","⩲":"⩲","⨦":"⨦","⨧":"⨧","⨕":"⨕","𝕡":"𝕡","£":"£","⪳":"⪳","⪷":"⪷","⪹":"⪹","⪵":"⪵","⋨":"⋨","′":"′","⌮":"⌮","⌒":"⌒","⌓":"⌓","⊰":"⊰","𝓅":"𝓅","ψ":"ψ"," ":" ","𝔮":"𝔮","𝕢":"𝕢","⁗":"⁗","𝓆":"𝓆","⨖":"⨖","?":"?","⤜":"⤜","⥤":"⥤","∽̱":"∽̱","ŕ":"ŕ","⦳":"⦳","⦒":"⦒","⦥":"⦥","»":"»","⥵":"⥵","⤠":"⤠","⤳":"⤳","⤞":"⤞","⥅":"⥅","⥴":"⥴","↣":"↣","↝":"↝","⤚":"⤚","∶":"∶","❳":"❳","}":"}","]":"]","⦌":"⦌","⦎":"⦎","⦐":"⦐","ř":"ř","ŗ":"ŗ","р":"р","⤷":"⤷","⥩":"⥩","↳":"↳","▭":"▭","⥽":"⥽","𝔯":"𝔯","⥬":"⥬","ρ":"ρ","ϱ":"ϱ","⇉":"⇉","⋌":"⋌","˚":"˚","‏":"‏","⎱":"⎱","⫮":"⫮","⟭":"⟭","⇾":"⇾","⦆":"⦆","𝕣":"𝕣","⨮":"⨮","⨵":"⨵",")":")","⦔":"⦔","⨒":"⨒","›":"›","𝓇":"𝓇","⋊":"⋊","▹":"▹","⧎":"⧎","⥨":"⥨","℞":"℞","ś":"ś","⪴":"⪴","⪸":"⪸","š":"š","ş":"ş","ŝ":"ŝ","⪶":"⪶","⪺":"⪺","⋩":"⋩","⨓":"⨓","с":"с","⋅":"⋅","⩦":"⩦","⇘":"⇘","§":"§",";":";","⤩":"⤩","✶":"✶","𝔰":"𝔰","♯":"♯","щ":"щ","ш":"ш","­":"­","σ":"σ","ς":"ς","⩪":"⩪","⪞":"⪞","⪠":"⪠","⪝":"⪝","⪟":"⪟","≆":"≆","⨤":"⨤","⥲":"⥲","⨳":"⨳","⧤":"⧤","⌣":"⌣","⪪":"⪪","⪬":"⪬","⪬︀":"⪬︀","ь":"ь","/":"/","⧄":"⧄","⌿":"⌿","𝕤":"𝕤","♠":"♠","⊓︀":"⊓︀","⊔︀":"⊔︀","𝓈":"𝓈","☆":"☆","⊂":"⊂","⫅":"⫅","⪽":"⪽","⫃":"⫃","⫁":"⫁","⫋":"⫋","⊊":"⊊","⪿":"⪿","⥹":"⥹","⫇":"⫇","⫕":"⫕","⫓":"⫓","♪":"♪","¹":"¹","²":"²","³":"³","⫆":"⫆","⪾":"⪾","⫘":"⫘","⫄":"⫄","⟉":"⟉","⫗":"⫗","⥻":"⥻","⫂":"⫂","⫌":"⫌","⊋":"⊋","⫀":"⫀","⫈":"⫈","⫔":"⫔","⫖":"⫖","⇙":"⇙","⤪":"⤪","ß":"ß","⌖":"⌖","τ":"τ","ť":"ť","ţ":"ţ","т":"т","⌕":"⌕","𝔱":"𝔱","θ":"θ","ϑ":"ϑ","þ":"þ","×":"×","⨱":"⨱","⨰":"⨰","⌶":"⌶","⫱":"⫱","𝕥":"𝕥","⫚":"⫚","‴":"‴","▵":"▵","≜":"≜","◬":"◬","⨺":"⨺","⨹":"⨹","⧍":"⧍","⨻":"⨻","⏢":"⏢","𝓉":"𝓉","ц":"ц","ћ":"ћ","ŧ":"ŧ","⥣":"⥣","ú":"ú","ў":"ў","ŭ":"ŭ","û":"û","у":"у","ű":"ű","⥾":"⥾","𝔲":"𝔲","ù":"ù","▀":"▀","⌜":"⌜","⌏":"⌏","◸":"◸","ū":"ū","ų":"ų","𝕦":"𝕦","υ":"υ","⇈":"⇈","⌝":"⌝","⌎":"⌎","ů":"ů","◹":"◹","𝓊":"𝓊","⋰":"⋰","ũ":"ũ","ü":"ü","⦧":"⦧","⫨":"⫨","⫩":"⫩","⦜":"⦜","⊊︀":"⊊︀","⫋︀":"⫋︀","⊋︀":"⊋︀","⫌︀":"⫌︀","в":"в","⊻":"⊻","≚":"≚","⋮":"⋮","𝔳":"𝔳","𝕧":"𝕧","𝓋":"𝓋","⦚":"⦚","ŵ":"ŵ","⩟":"⩟","≙":"≙","℘":"℘","𝔴":"𝔴","𝕨":"𝕨","𝓌":"𝓌","𝔵":"𝔵","ξ":"ξ","⋻":"⋻","𝕩":"𝕩","𝓍":"𝓍","ý":"ý","я":"я","ŷ":"ŷ","ы":"ы","¥":"¥","𝔶":"𝔶","ї":"ї","𝕪":"𝕪","𝓎":"𝓎","ю":"ю","ÿ":"ÿ","ź":"ź","ž":"ž","з":"з","ż":"ż","ζ":"ζ","𝔷":"𝔷","ж":"ж","⇝":"⇝","𝕫":"𝕫","𝓏":"𝓏","‍":"‍","‌":"‌"}}}; //# sourceMappingURL=./named-references.js.map /***/ }), /***/ "./node_modules/html-entities/lib/numeric-unicode-map.js": /*!***************************************************************!*\ !*** ./node_modules/html-entities/lib/numeric-unicode-map.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({value:true}));exports.numericUnicodeMap={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}; //# sourceMappingURL=./numeric-unicode-map.js.map /***/ }), /***/ "./node_modules/html-entities/lib/surrogate-pairs.js": /*!***********************************************************!*\ !*** ./node_modules/html-entities/lib/surrogate-pairs.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({value:true}));exports.fromCodePoint=String.fromCodePoint||function(astralCodePoint){return String.fromCharCode(Math.floor((astralCodePoint-65536)/1024)+55296,(astralCodePoint-65536)%1024+56320)};exports.getCodePoint=String.prototype.codePointAt?function(input,position){return input.codePointAt(position)}:function(input,position){return(input.charCodeAt(position)-55296)*1024+input.charCodeAt(position+1)-56320+65536};exports.highSurrogateFrom=55296;exports.highSurrogateTo=56319; //# sourceMappingURL=./surrogate-pairs.js.map /***/ }), /***/ "./node_modules/ical.js/build/ical.js": /*!********************************************!*\ !*** ./node_modules/ical.js/build/ical.js ***! \********************************************/ /***/ ((module) => { /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2021 */ /* jshint ignore:start */ var ICAL; (function() { /* istanbul ignore next */ if (true) { // CommonJS, where exports may be different each time. ICAL = module.exports; } else {} })(); /* jshint ignore:end */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * The number of characters before iCalendar line folding should occur * @type {Number} * @default 75 */ ICAL.foldLength = 75; /** * The character(s) to be used for a newline. The default value is provided by * rfc5545. * @type {String} * @default "\r\n" */ ICAL.newLineChar = '\r\n'; /** * Helper functions used in various places within ical.js * @namespace */ ICAL.helpers = { /** * Compiles a list of all referenced TZIDs in all subcomponents and * removes any extra VTIMEZONE subcomponents. In addition, if any TZIDs * are referenced by a component, but a VTIMEZONE does not exist, * an attempt will be made to generate a VTIMEZONE using ICAL.TimezoneService. * * @param {ICAL.Component} vcal The top-level VCALENDAR component. * @return {ICAL.Component} The ICAL.Component that was passed in. */ updateTimezones: function(vcal) { var allsubs, properties, vtimezones, reqTzid, i, tzid; if (!vcal || vcal.name !== "vcalendar") { //not a top-level vcalendar component return vcal; } //Store vtimezone subcomponents in an object reference by tzid. //Store properties from everything else in another array allsubs = vcal.getAllSubcomponents(); properties = []; vtimezones = {}; for (i = 0; i < allsubs.length; i++) { if (allsubs[i].name === "vtimezone") { tzid = allsubs[i].getFirstProperty("tzid").getFirstValue(); vtimezones[tzid] = allsubs[i]; } else { properties = properties.concat(allsubs[i].getAllProperties()); } } //create an object with one entry for each required tz reqTzid = {}; for (i = 0; i < properties.length; i++) { if ((tzid = properties[i].getParameter("tzid"))) { reqTzid[tzid] = true; } } //delete any vtimezones that are not on the reqTzid list. for (i in vtimezones) { if (vtimezones.hasOwnProperty(i) && !reqTzid[i]) { vcal.removeSubcomponent(vtimezones[i]); } } //create any missing, but registered timezones for (i in reqTzid) { if ( reqTzid.hasOwnProperty(i) && !vtimezones[i] && ICAL.TimezoneService.has(i) ) { vcal.addSubcomponent(ICAL.TimezoneService.get(i).component); } } return vcal; }, /** * Checks if the given type is of the number type and also NaN. * * @param {Number} number The number to check * @return {Boolean} True, if the number is strictly NaN */ isStrictlyNaN: function(number) { return typeof(number) === 'number' && isNaN(number); }, /** * Parses a string value that is expected to be an integer, when the valid is * not an integer throws a decoration error. * * @param {String} string Raw string input * @return {Number} Parsed integer */ strictParseInt: function(string) { var result = parseInt(string, 10); if (ICAL.helpers.isStrictlyNaN(result)) { throw new Error( 'Could not extract integer from "' + string + '"' ); } return result; }, /** * Creates or returns a class instance of a given type with the initialization * data if the data is not already an instance of the given type. * * @example * var time = new ICAL.Time(...); * var result = ICAL.helpers.formatClassType(time, ICAL.Time); * * (result instanceof ICAL.Time) * // => true * * result = ICAL.helpers.formatClassType({}, ICAL.Time); * (result isntanceof ICAL.Time) * // => true * * * @param {Object} data object initialization data * @param {Object} type object type (like ICAL.Time) * @return {?} An instance of the found type. */ formatClassType: function formatClassType(data, type) { if (typeof(data) === 'undefined') { return undefined; } if (data instanceof type) { return data; } return new type(data); }, /** * Identical to indexOf but will only match values when they are not preceded * by a backslash character. * * @param {String} buffer String to search * @param {String} search Value to look for * @param {Number} pos Start position * @return {Number} The position, or -1 if not found */ unescapedIndexOf: function(buffer, search, pos) { while ((pos = buffer.indexOf(search, pos)) !== -1) { if (pos > 0 && buffer[pos - 1] === '\\') { pos += 1; } else { return pos; } } return -1; }, /** * Find the index for insertion using binary search. * * @param {Array} list The list to search * @param {?} seekVal The value to insert * @param {function(?,?)} cmpfunc The comparison func, that can * compare two seekVals * @return {Number} The insert position */ binsearchInsert: function(list, seekVal, cmpfunc) { if (!list.length) return 0; var low = 0, high = list.length - 1, mid, cmpval; while (low <= high) { mid = low + Math.floor((high - low) / 2); cmpval = cmpfunc(seekVal, list[mid]); if (cmpval < 0) high = mid - 1; else if (cmpval > 0) low = mid + 1; else break; } if (cmpval < 0) return mid; // insertion is displacing, so use mid outright. else if (cmpval > 0) return mid + 1; else return mid; }, /** * Convenience function for debug output * @private */ dumpn: /* istanbul ignore next */ function() { if (!ICAL.debug) { return; } if (typeof (console) !== 'undefined' && 'log' in console) { ICAL.helpers.dumpn = function consoleDumpn(input) { console.log(input); }; } else { ICAL.helpers.dumpn = function geckoDumpn(input) { dump(input + '\n'); }; } ICAL.helpers.dumpn(arguments[0]); }, /** * Clone the passed object or primitive. By default a shallow clone will be * executed. * * @param {*} aSrc The thing to clone * @param {Boolean=} aDeep If true, a deep clone will be performed * @return {*} The copy of the thing */ clone: function(aSrc, aDeep) { if (!aSrc || typeof aSrc != "object") { return aSrc; } else if (aSrc instanceof Date) { return new Date(aSrc.getTime()); } else if ("clone" in aSrc) { return aSrc.clone(); } else if (Array.isArray(aSrc)) { var arr = []; for (var i = 0; i < aSrc.length; i++) { arr.push(aDeep ? ICAL.helpers.clone(aSrc[i], true) : aSrc[i]); } return arr; } else { var obj = {}; for (var name in aSrc) { // uses prototype method to allow use of Object.create(null); /* istanbul ignore else */ if (Object.prototype.hasOwnProperty.call(aSrc, name)) { if (aDeep) { obj[name] = ICAL.helpers.clone(aSrc[name], true); } else { obj[name] = aSrc[name]; } } } return obj; } }, /** * Performs iCalendar line folding. A line ending character is inserted and * the next line begins with a whitespace. * * @example * SUMMARY:This line will be fold * ed right in the middle of a word. * * @param {String} aLine The line to fold * @return {String} The folded line */ foldline: function foldline(aLine) { var result = ""; var line = aLine || "", pos = 0, line_length = 0; //pos counts position in line for the UTF-16 presentation //line_length counts the bytes for the UTF-8 presentation while (line.length) { var cp = line.codePointAt(pos); if (cp < 128) ++line_length; else if (cp < 2048) line_length += 2;//needs 2 UTF-8 bytes else if (cp < 65536) line_length += 3; else line_length += 4; //cp is less than 1114112 if (line_length < ICAL.foldLength + 1) pos += cp > 65535 ? 2 : 1; else { result += ICAL.newLineChar + " " + line.substring(0, pos); line = line.substring(pos); pos = line_length = 0; } } return result.substr(ICAL.newLineChar.length + 1); }, /** * Pads the given string or number with zeros so it will have at least two * characters. * * @param {String|Number} data The string or number to pad * @return {String} The number padded as a string */ pad2: function pad(data) { if (typeof(data) !== 'string') { // handle fractions. if (typeof(data) === 'number') { data = parseInt(data); } data = String(data); } var len = data.length; switch (len) { case 0: return '00'; case 1: return '0' + data; default: return data; } }, /** * Truncates the given number, correctly handling negative numbers. * * @param {Number} number The number to truncate * @return {Number} The truncated number */ trunc: function trunc(number) { return (number < 0 ? Math.ceil(number) : Math.floor(number)); }, /** * Poor-man's cross-browser inheritance for JavaScript. Doesn't support all * the features, but enough for our usage. * * @param {Function} base The base class constructor function. * @param {Function} child The child class constructor function. * @param {Object} extra Extends the prototype with extra properties * and methods */ inherits: function(base, child, extra) { function F() {} F.prototype = base.prototype; child.prototype = new F(); if (extra) { ICAL.helpers.extend(extra, child.prototype); } }, /** * Poor-man's cross-browser object extension. Doesn't support all the * features, but enough for our usage. Note that the target's properties are * not overwritten with the source properties. * * @example * var child = ICAL.helpers.extend(parent, { * "bar": 123 * }); * * @param {Object} source The object to extend * @param {Object} target The object to extend with * @return {Object} Returns the target. */ extend: function(source, target) { for (var key in source) { var descr = Object.getOwnPropertyDescriptor(source, key); if (descr && !Object.getOwnPropertyDescriptor(target, key)) { Object.defineProperty(target, key, descr); } } return target; } }; /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** @namespace ICAL */ /** * This symbol is further described later on * @ignore */ ICAL.design = (function() { 'use strict'; var FROM_ICAL_NEWLINE = /\\\\|\\;|\\,|\\[Nn]/g; var TO_ICAL_NEWLINE = /\\|;|,|\n/g; var FROM_VCARD_NEWLINE = /\\\\|\\,|\\[Nn]/g; var TO_VCARD_NEWLINE = /\\|,|\n/g; function createTextType(fromNewline, toNewline) { var result = { matches: /.*/, fromICAL: function(aValue, structuredEscape) { return replaceNewline(aValue, fromNewline, structuredEscape); }, toICAL: function(aValue, structuredEscape) { var regEx = toNewline; if (structuredEscape) regEx = new RegExp(regEx.source + '|' + structuredEscape); return aValue.replace(regEx, function(str) { switch (str) { case "\\": return "\\\\"; case ";": return "\\;"; case ",": return "\\,"; case "\n": return "\\n"; /* istanbul ignore next */ default: return str; } }); } }; return result; } // default types used multiple times var DEFAULT_TYPE_TEXT = { defaultType: "text" }; var DEFAULT_TYPE_TEXT_MULTI = { defaultType: "text", multiValue: "," }; var DEFAULT_TYPE_TEXT_STRUCTURED = { defaultType: "text", structuredValue: ";" }; var DEFAULT_TYPE_INTEGER = { defaultType: "integer" }; var DEFAULT_TYPE_DATETIME_DATE = { defaultType: "date-time", allowedTypes: ["date-time", "date"] }; var DEFAULT_TYPE_DATETIME = { defaultType: "date-time" }; var DEFAULT_TYPE_URI = { defaultType: "uri" }; var DEFAULT_TYPE_UTCOFFSET = { defaultType: "utc-offset" }; var DEFAULT_TYPE_RECUR = { defaultType: "recur" }; var DEFAULT_TYPE_DATE_ANDOR_TIME = { defaultType: "date-and-or-time", allowedTypes: ["date-time", "date", "text"] }; function replaceNewlineReplace(string) { switch (string) { case "\\\\": return "\\"; case "\\;": return ";"; case "\\,": return ","; case "\\n": case "\\N": return "\n"; /* istanbul ignore next */ default: return string; } } function replaceNewline(value, newline, structuredEscape) { // avoid regex when possible. if (value.indexOf('\\') === -1) { return value; } if (structuredEscape) newline = new RegExp(newline.source + '|\\\\' + structuredEscape); return value.replace(newline, replaceNewlineReplace); } var commonProperties = { "categories": DEFAULT_TYPE_TEXT_MULTI, "url": DEFAULT_TYPE_URI, "version": DEFAULT_TYPE_TEXT, "uid": DEFAULT_TYPE_TEXT }; var commonValues = { "boolean": { values: ["TRUE", "FALSE"], fromICAL: function(aValue) { switch (aValue) { case 'TRUE': return true; case 'FALSE': return false; default: //TODO: parser warning return false; } }, toICAL: function(aValue) { if (aValue) { return 'TRUE'; } return 'FALSE'; } }, float: { matches: /^[+-]?\d+\.\d+$/, fromICAL: function(aValue) { var parsed = parseFloat(aValue); if (ICAL.helpers.isStrictlyNaN(parsed)) { // TODO: parser warning return 0.0; } return parsed; }, toICAL: function(aValue) { return String(aValue); } }, integer: { fromICAL: function(aValue) { var parsed = parseInt(aValue); if (ICAL.helpers.isStrictlyNaN(parsed)) { return 0; } return parsed; }, toICAL: function(aValue) { return String(aValue); } }, "utc-offset": { toICAL: function(aValue) { if (aValue.length < 7) { // no seconds // -0500 return aValue.substr(0, 3) + aValue.substr(4, 2); } else { // seconds // -050000 return aValue.substr(0, 3) + aValue.substr(4, 2) + aValue.substr(7, 2); } }, fromICAL: function(aValue) { if (aValue.length < 6) { // no seconds // -05:00 return aValue.substr(0, 3) + ':' + aValue.substr(3, 2); } else { // seconds // -05:00:00 return aValue.substr(0, 3) + ':' + aValue.substr(3, 2) + ':' + aValue.substr(5, 2); } }, decorate: function(aValue) { return ICAL.UtcOffset.fromString(aValue); }, undecorate: function(aValue) { return aValue.toString(); } } }; var icalParams = { // Although the syntax is DQUOTE uri DQUOTE, I don't think we should // enfoce anything aside from it being a valid content line. // // At least some params require - if multi values are used - DQUOTEs // for each of its values - e.g. delegated-from="uri1","uri2" // To indicate this, I introduced the new k/v pair // multiValueSeparateDQuote: true // // "ALTREP": { ... }, // CN just wants a param-value // "CN": { ... } "cutype": { values: ["INDIVIDUAL", "GROUP", "RESOURCE", "ROOM", "UNKNOWN"], allowXName: true, allowIanaToken: true }, "delegated-from": { valueType: "cal-address", multiValue: ",", multiValueSeparateDQuote: true }, "delegated-to": { valueType: "cal-address", multiValue: ",", multiValueSeparateDQuote: true }, // "DIR": { ... }, // See ALTREP "encoding": { values: ["8BIT", "BASE64"] }, // "FMTTYPE": { ... }, // See ALTREP "fbtype": { values: ["FREE", "BUSY", "BUSY-UNAVAILABLE", "BUSY-TENTATIVE"], allowXName: true, allowIanaToken: true }, // "LANGUAGE": { ... }, // See ALTREP "member": { valueType: "cal-address", multiValue: ",", multiValueSeparateDQuote: true }, "partstat": { // TODO These values are actually different per-component values: ["NEEDS-ACTION", "ACCEPTED", "DECLINED", "TENTATIVE", "DELEGATED", "COMPLETED", "IN-PROCESS"], allowXName: true, allowIanaToken: true }, "range": { values: ["THISANDFUTURE"] }, "related": { values: ["START", "END"] }, "reltype": { values: ["PARENT", "CHILD", "SIBLING"], allowXName: true, allowIanaToken: true }, "role": { values: ["REQ-PARTICIPANT", "CHAIR", "OPT-PARTICIPANT", "NON-PARTICIPANT"], allowXName: true, allowIanaToken: true }, "rsvp": { values: ["TRUE", "FALSE"] }, "sent-by": { valueType: "cal-address" }, "tzid": { matches: /^\// }, "value": { // since the value here is a 'type' lowercase is used. values: ["binary", "boolean", "cal-address", "date", "date-time", "duration", "float", "integer", "period", "recur", "text", "time", "uri", "utc-offset"], allowXName: true, allowIanaToken: true } }; // When adding a value here, be sure to add it to the parameter types! var icalValues = ICAL.helpers.extend(commonValues, { text: createTextType(FROM_ICAL_NEWLINE, TO_ICAL_NEWLINE), uri: { // TODO /* ... */ }, "binary": { decorate: function(aString) { return ICAL.Binary.fromString(aString); }, undecorate: function(aBinary) { return aBinary.toString(); } }, "cal-address": { // needs to be an uri }, "date": { decorate: function(aValue, aProp) { if (design.strict) { return ICAL.Time.fromDateString(aValue, aProp); } else { return ICAL.Time.fromString(aValue, aProp); } }, /** * undecorates a time object. */ undecorate: function(aValue) { return aValue.toString(); }, fromICAL: function(aValue) { // from: 20120901 // to: 2012-09-01 if (!design.strict && aValue.length >= 15) { // This is probably a date-time, e.g. 20120901T130000Z return icalValues["date-time"].fromICAL(aValue); } else { return aValue.substr(0, 4) + '-' + aValue.substr(4, 2) + '-' + aValue.substr(6, 2); } }, toICAL: function(aValue) { // from: 2012-09-01 // to: 20120901 var len = aValue.length; if (len == 10) { return aValue.substr(0, 4) + aValue.substr(5, 2) + aValue.substr(8, 2); } else if (len >= 19) { return icalValues["date-time"].toICAL(aValue); } else { //TODO: serialize warning? return aValue; } } }, "date-time": { fromICAL: function(aValue) { // from: 20120901T130000 // to: 2012-09-01T13:00:00 if (!design.strict && aValue.length == 8) { // This is probably a date, e.g. 20120901 return icalValues.date.fromICAL(aValue); } else { var result = aValue.substr(0, 4) + '-' + aValue.substr(4, 2) + '-' + aValue.substr(6, 2) + 'T' + aValue.substr(9, 2) + ':' + aValue.substr(11, 2) + ':' + aValue.substr(13, 2); if (aValue[15] && aValue[15] === 'Z') { result += 'Z'; } return result; } }, toICAL: function(aValue) { // from: 2012-09-01T13:00:00 // to: 20120901T130000 var len = aValue.length; if (len == 10 && !design.strict) { return icalValues.date.toICAL(aValue); } else if (len >= 19) { var result = aValue.substr(0, 4) + aValue.substr(5, 2) + // grab the (DDTHH) segment aValue.substr(8, 5) + // MM aValue.substr(14, 2) + // SS aValue.substr(17, 2); if (aValue[19] && aValue[19] === 'Z') { result += 'Z'; } return result; } else { // TODO: error return aValue; } }, decorate: function(aValue, aProp) { if (design.strict) { return ICAL.Time.fromDateTimeString(aValue, aProp); } else { return ICAL.Time.fromString(aValue, aProp); } }, undecorate: function(aValue) { return aValue.toString(); } }, duration: { decorate: function(aValue) { return ICAL.Duration.fromString(aValue); }, undecorate: function(aValue) { return aValue.toString(); } }, period: { fromICAL: function(string) { var parts = string.split('/'); parts[0] = icalValues['date-time'].fromICAL(parts[0]); if (!ICAL.Duration.isValueString(parts[1])) { parts[1] = icalValues['date-time'].fromICAL(parts[1]); } return parts; }, toICAL: function(parts) { if (!design.strict && parts[0].length == 10) { parts[0] = icalValues.date.toICAL(parts[0]); } else { parts[0] = icalValues['date-time'].toICAL(parts[0]); } if (!ICAL.Duration.isValueString(parts[1])) { if (!design.strict && parts[1].length == 10) { parts[1] = icalValues.date.toICAL(parts[1]); } else { parts[1] = icalValues['date-time'].toICAL(parts[1]); } } return parts.join("/"); }, decorate: function(aValue, aProp) { return ICAL.Period.fromJSON(aValue, aProp, !design.strict); }, undecorate: function(aValue) { return aValue.toJSON(); } }, recur: { fromICAL: function(string) { return ICAL.Recur._stringToData(string, true); }, toICAL: function(data) { var str = ""; for (var k in data) { /* istanbul ignore if */ if (!Object.prototype.hasOwnProperty.call(data, k)) { continue; } var val = data[k]; if (k == "until") { if (val.length > 10) { val = icalValues['date-time'].toICAL(val); } else { val = icalValues.date.toICAL(val); } } else if (k == "wkst") { if (typeof val === 'number') { val = ICAL.Recur.numericDayToIcalDay(val); } } else if (Array.isArray(val)) { val = val.join(","); } str += k.toUpperCase() + "=" + val + ";"; } return str.substr(0, str.length - 1); }, decorate: function decorate(aValue) { return ICAL.Recur.fromData(aValue); }, undecorate: function(aRecur) { return aRecur.toJSON(); } }, time: { fromICAL: function(aValue) { // from: MMHHSS(Z)? // to: HH:MM:SS(Z)? if (aValue.length < 6) { // TODO: parser exception? return aValue; } // HH::MM::SSZ? var result = aValue.substr(0, 2) + ':' + aValue.substr(2, 2) + ':' + aValue.substr(4, 2); if (aValue[6] === 'Z') { result += 'Z'; } return result; }, toICAL: function(aValue) { // from: HH:MM:SS(Z)? // to: MMHHSS(Z)? if (aValue.length < 8) { //TODO: error return aValue; } var result = aValue.substr(0, 2) + aValue.substr(3, 2) + aValue.substr(6, 2); if (aValue[8] === 'Z') { result += 'Z'; } return result; } } }); var icalProperties = ICAL.helpers.extend(commonProperties, { "action": DEFAULT_TYPE_TEXT, "attach": { defaultType: "uri" }, "attendee": { defaultType: "cal-address" }, "calscale": DEFAULT_TYPE_TEXT, "class": DEFAULT_TYPE_TEXT, "comment": DEFAULT_TYPE_TEXT, "completed": DEFAULT_TYPE_DATETIME, "contact": DEFAULT_TYPE_TEXT, "created": DEFAULT_TYPE_DATETIME, "description": DEFAULT_TYPE_TEXT, "dtend": DEFAULT_TYPE_DATETIME_DATE, "dtstamp": DEFAULT_TYPE_DATETIME, "dtstart": DEFAULT_TYPE_DATETIME_DATE, "due": DEFAULT_TYPE_DATETIME_DATE, "duration": { defaultType: "duration" }, "exdate": { defaultType: "date-time", allowedTypes: ["date-time", "date"], multiValue: ',' }, "exrule": DEFAULT_TYPE_RECUR, "freebusy": { defaultType: "period", multiValue: "," }, "geo": { defaultType: "float", structuredValue: ";" }, "last-modified": DEFAULT_TYPE_DATETIME, "location": DEFAULT_TYPE_TEXT, "method": DEFAULT_TYPE_TEXT, "organizer": { defaultType: "cal-address" }, "percent-complete": DEFAULT_TYPE_INTEGER, "priority": DEFAULT_TYPE_INTEGER, "prodid": DEFAULT_TYPE_TEXT, "related-to": DEFAULT_TYPE_TEXT, "repeat": DEFAULT_TYPE_INTEGER, "rdate": { defaultType: "date-time", allowedTypes: ["date-time", "date", "period"], multiValue: ',', detectType: function(string) { if (string.indexOf('/') !== -1) { return 'period'; } return (string.indexOf('T') === -1) ? 'date' : 'date-time'; } }, "recurrence-id": DEFAULT_TYPE_DATETIME_DATE, "resources": DEFAULT_TYPE_TEXT_MULTI, "request-status": DEFAULT_TYPE_TEXT_STRUCTURED, "rrule": DEFAULT_TYPE_RECUR, "sequence": DEFAULT_TYPE_INTEGER, "status": DEFAULT_TYPE_TEXT, "summary": DEFAULT_TYPE_TEXT, "transp": DEFAULT_TYPE_TEXT, "trigger": { defaultType: "duration", allowedTypes: ["duration", "date-time"] }, "tzoffsetfrom": DEFAULT_TYPE_UTCOFFSET, "tzoffsetto": DEFAULT_TYPE_UTCOFFSET, "tzurl": DEFAULT_TYPE_URI, "tzid": DEFAULT_TYPE_TEXT, "tzname": DEFAULT_TYPE_TEXT }); // When adding a value here, be sure to add it to the parameter types! var vcardValues = ICAL.helpers.extend(commonValues, { text: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE), uri: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE), date: { decorate: function(aValue) { return ICAL.VCardTime.fromDateAndOrTimeString(aValue, "date"); }, undecorate: function(aValue) { return aValue.toString(); }, fromICAL: function(aValue) { if (aValue.length == 8) { return icalValues.date.fromICAL(aValue); } else if (aValue[0] == '-' && aValue.length == 6) { return aValue.substr(0, 4) + '-' + aValue.substr(4); } else { return aValue; } }, toICAL: function(aValue) { if (aValue.length == 10) { return icalValues.date.toICAL(aValue); } else if (aValue[0] == '-' && aValue.length == 7) { return aValue.substr(0, 4) + aValue.substr(5); } else { return aValue; } } }, time: { decorate: function(aValue) { return ICAL.VCardTime.fromDateAndOrTimeString("T" + aValue, "time"); }, undecorate: function(aValue) { return aValue.toString(); }, fromICAL: function(aValue) { var splitzone = vcardValues.time._splitZone(aValue, true); var zone = splitzone[0], value = splitzone[1]; //console.log("SPLIT: ",splitzone); if (value.length == 6) { value = value.substr(0, 2) + ':' + value.substr(2, 2) + ':' + value.substr(4, 2); } else if (value.length == 4 && value[0] != '-') { value = value.substr(0, 2) + ':' + value.substr(2, 2); } else if (value.length == 5) { value = value.substr(0, 3) + ':' + value.substr(3, 2); } if (zone.length == 5 && (zone[0] == '-' || zone[0] == '+')) { zone = zone.substr(0, 3) + ':' + zone.substr(3); } return value + zone; }, toICAL: function(aValue) { var splitzone = vcardValues.time._splitZone(aValue); var zone = splitzone[0], value = splitzone[1]; if (value.length == 8) { value = value.substr(0, 2) + value.substr(3, 2) + value.substr(6, 2); } else if (value.length == 5 && value[0] != '-') { value = value.substr(0, 2) + value.substr(3, 2); } else if (value.length == 6) { value = value.substr(0, 3) + value.substr(4, 2); } if (zone.length == 6 && (zone[0] == '-' || zone[0] == '+')) { zone = zone.substr(0, 3) + zone.substr(4); } return value + zone; }, _splitZone: function(aValue, isFromIcal) { var lastChar = aValue.length - 1; var signChar = aValue.length - (isFromIcal ? 5 : 6); var sign = aValue[signChar]; var zone, value; if (aValue[lastChar] == 'Z') { zone = aValue[lastChar]; value = aValue.substr(0, lastChar); } else if (aValue.length > 6 && (sign == '-' || sign == '+')) { zone = aValue.substr(signChar); value = aValue.substr(0, signChar); } else { zone = ""; value = aValue; } return [zone, value]; } }, "date-time": { decorate: function(aValue) { return ICAL.VCardTime.fromDateAndOrTimeString(aValue, "date-time"); }, undecorate: function(aValue) { return aValue.toString(); }, fromICAL: function(aValue) { return vcardValues['date-and-or-time'].fromICAL(aValue); }, toICAL: function(aValue) { return vcardValues['date-and-or-time'].toICAL(aValue); } }, "date-and-or-time": { decorate: function(aValue) { return ICAL.VCardTime.fromDateAndOrTimeString(aValue, "date-and-or-time"); }, undecorate: function(aValue) { return aValue.toString(); }, fromICAL: function(aValue) { var parts = aValue.split('T'); return (parts[0] ? vcardValues.date.fromICAL(parts[0]) : '') + (parts[1] ? 'T' + vcardValues.time.fromICAL(parts[1]) : ''); }, toICAL: function(aValue) { var parts = aValue.split('T'); return vcardValues.date.toICAL(parts[0]) + (parts[1] ? 'T' + vcardValues.time.toICAL(parts[1]) : ''); } }, timestamp: icalValues['date-time'], "language-tag": { matches: /^[a-zA-Z0-9-]+$/ // Could go with a more strict regex here } }); var vcardParams = { "type": { valueType: "text", multiValue: "," }, "value": { // since the value here is a 'type' lowercase is used. values: ["text", "uri", "date", "time", "date-time", "date-and-or-time", "timestamp", "boolean", "integer", "float", "utc-offset", "language-tag"], allowXName: true, allowIanaToken: true } }; var vcardProperties = ICAL.helpers.extend(commonProperties, { "adr": { defaultType: "text", structuredValue: ";", multiValue: "," }, "anniversary": DEFAULT_TYPE_DATE_ANDOR_TIME, "bday": DEFAULT_TYPE_DATE_ANDOR_TIME, "caladruri": DEFAULT_TYPE_URI, "caluri": DEFAULT_TYPE_URI, "clientpidmap": DEFAULT_TYPE_TEXT_STRUCTURED, "email": DEFAULT_TYPE_TEXT, "fburl": DEFAULT_TYPE_URI, "fn": DEFAULT_TYPE_TEXT, "gender": DEFAULT_TYPE_TEXT_STRUCTURED, "geo": DEFAULT_TYPE_URI, "impp": DEFAULT_TYPE_URI, "key": DEFAULT_TYPE_URI, "kind": DEFAULT_TYPE_TEXT, "lang": { defaultType: "language-tag" }, "logo": DEFAULT_TYPE_URI, "member": DEFAULT_TYPE_URI, "n": { defaultType: "text", structuredValue: ";", multiValue: "," }, "nickname": DEFAULT_TYPE_TEXT_MULTI, "note": DEFAULT_TYPE_TEXT, "org": { defaultType: "text", structuredValue: ";" }, "photo": DEFAULT_TYPE_URI, "related": DEFAULT_TYPE_URI, "rev": { defaultType: "timestamp" }, "role": DEFAULT_TYPE_TEXT, "sound": DEFAULT_TYPE_URI, "source": DEFAULT_TYPE_URI, "tel": { defaultType: "uri", allowedTypes: ["uri", "text"] }, "title": DEFAULT_TYPE_TEXT, "tz": { defaultType: "text", allowedTypes: ["text", "utc-offset", "uri"] }, "xml": DEFAULT_TYPE_TEXT }); var vcard3Values = ICAL.helpers.extend(commonValues, { binary: icalValues.binary, date: vcardValues.date, "date-time": vcardValues["date-time"], "phone-number": { // TODO /* ... */ }, uri: icalValues.uri, text: icalValues.text, time: icalValues.time, vcard: icalValues.text, "utc-offset": { toICAL: function(aValue) { return aValue.substr(0, 7); }, fromICAL: function(aValue) { return aValue.substr(0, 7); }, decorate: function(aValue) { return ICAL.UtcOffset.fromString(aValue); }, undecorate: function(aValue) { return aValue.toString(); } } }); var vcard3Params = { "type": { valueType: "text", multiValue: "," }, "value": { // since the value here is a 'type' lowercase is used. values: ["text", "uri", "date", "date-time", "phone-number", "time", "boolean", "integer", "float", "utc-offset", "vcard", "binary"], allowXName: true, allowIanaToken: true } }; var vcard3Properties = ICAL.helpers.extend(commonProperties, { fn: DEFAULT_TYPE_TEXT, n: { defaultType: "text", structuredValue: ";", multiValue: "," }, nickname: DEFAULT_TYPE_TEXT_MULTI, photo: { defaultType: "binary", allowedTypes: ["binary", "uri"] }, bday: { defaultType: "date-time", allowedTypes: ["date-time", "date"], detectType: function(string) { return (string.indexOf('T') === -1) ? 'date' : 'date-time'; } }, adr: { defaultType: "text", structuredValue: ";", multiValue: "," }, label: DEFAULT_TYPE_TEXT, tel: { defaultType: "phone-number" }, email: DEFAULT_TYPE_TEXT, mailer: DEFAULT_TYPE_TEXT, tz: { defaultType: "utc-offset", allowedTypes: ["utc-offset", "text"] }, geo: { defaultType: "float", structuredValue: ";" }, title: DEFAULT_TYPE_TEXT, role: DEFAULT_TYPE_TEXT, logo: { defaultType: "binary", allowedTypes: ["binary", "uri"] }, agent: { defaultType: "vcard", allowedTypes: ["vcard", "text", "uri"] }, org: DEFAULT_TYPE_TEXT_STRUCTURED, note: DEFAULT_TYPE_TEXT_MULTI, prodid: DEFAULT_TYPE_TEXT, rev: { defaultType: "date-time", allowedTypes: ["date-time", "date"], detectType: function(string) { return (string.indexOf('T') === -1) ? 'date' : 'date-time'; } }, "sort-string": DEFAULT_TYPE_TEXT, sound: { defaultType: "binary", allowedTypes: ["binary", "uri"] }, class: DEFAULT_TYPE_TEXT, key: { defaultType: "binary", allowedTypes: ["binary", "text"] } }); /** * iCalendar design set * @type {ICAL.design.designSet} */ var icalSet = { value: icalValues, param: icalParams, property: icalProperties }; /** * vCard 4.0 design set * @type {ICAL.design.designSet} */ var vcardSet = { value: vcardValues, param: vcardParams, property: vcardProperties }; /** * vCard 3.0 design set * @type {ICAL.design.designSet} */ var vcard3Set = { value: vcard3Values, param: vcard3Params, property: vcard3Properties }; /** * The design data, used by the parser to determine types for properties and * other metadata needed to produce correct jCard/jCal data. * * @alias ICAL.design * @namespace */ var design = { /** * A designSet describes value, parameter and property data. It is used by * ther parser and stringifier in components and properties to determine they * should be represented. * * @typedef {Object} designSet * @memberOf ICAL.design * @property {Object} value Definitions for value types, keys are type names * @property {Object} param Definitions for params, keys are param names * @property {Object} property Defintions for properties, keys are property names */ /** * Can be set to false to make the parser more lenient. */ strict: true, /** * The default set for new properties and components if none is specified. * @type {ICAL.design.designSet} */ defaultSet: icalSet, /** * The default type for unknown properties * @type {String} */ defaultType: 'unknown', /** * Holds the design set for known top-level components * * @type {Object} * @property {ICAL.design.designSet} vcard vCard VCARD * @property {ICAL.design.designSet} vevent iCalendar VEVENT * @property {ICAL.design.designSet} vtodo iCalendar VTODO * @property {ICAL.design.designSet} vjournal iCalendar VJOURNAL * @property {ICAL.design.designSet} valarm iCalendar VALARM * @property {ICAL.design.designSet} vtimezone iCalendar VTIMEZONE * @property {ICAL.design.designSet} daylight iCalendar DAYLIGHT * @property {ICAL.design.designSet} standard iCalendar STANDARD * * @example * var propertyName = 'fn'; * var componentDesign = ICAL.design.components.vcard; * var propertyDetails = componentDesign.property[propertyName]; * if (propertyDetails.defaultType == 'text') { * // Yep, sure is... * } */ components: { vcard: vcardSet, vcard3: vcard3Set, vevent: icalSet, vtodo: icalSet, vjournal: icalSet, valarm: icalSet, vtimezone: icalSet, daylight: icalSet, standard: icalSet }, /** * The design set for iCalendar (rfc5545/rfc7265) components. * @type {ICAL.design.designSet} */ icalendar: icalSet, /** * The design set for vCard (rfc6350/rfc7095) components. * @type {ICAL.design.designSet} */ vcard: vcardSet, /** * The design set for vCard (rfc2425/rfc2426/rfc7095) components. * @type {ICAL.design.designSet} */ vcard3: vcard3Set, /** * Gets the design set for the given component name. * * @param {String} componentName The name of the component * @return {ICAL.design.designSet} The design set for the component */ getDesignSet: function(componentName) { var isInDesign = componentName && componentName in design.components; return isInDesign ? design.components[componentName] : design.defaultSet; } }; return design; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * Contains various functions to convert jCal and jCard data back into * iCalendar and vCard. * @namespace */ ICAL.stringify = (function() { 'use strict'; var LINE_ENDING = '\r\n'; var DEFAULT_VALUE_TYPE = 'unknown'; var design = ICAL.design; var helpers = ICAL.helpers; /** * Convert a full jCal/jCard array into a iCalendar/vCard string. * * @function ICAL.stringify * @variation function * @param {Array} jCal The jCal/jCard document * @return {String} The stringified iCalendar/vCard document */ function stringify(jCal) { if (typeof jCal[0] == "string") { // This is a single component jCal = [jCal]; } var i = 0; var len = jCal.length; var result = ''; for (; i < len; i++) { result += stringify.component(jCal[i]) + LINE_ENDING; } return result; } /** * Converts an jCal component array into a ICAL string. * Recursive will resolve sub-components. * * Exact component/property order is not saved all * properties will come before subcomponents. * * @function ICAL.stringify.component * @param {Array} component * jCal/jCard fragment of a component * @param {ICAL.design.designSet} designSet * The design data to use for this component * @return {String} The iCalendar/vCard string */ stringify.component = function(component, designSet) { var name = component[0].toUpperCase(); var result = 'BEGIN:' + name + LINE_ENDING; var props = component[1]; var propIdx = 0; var propLen = props.length; var designSetName = component[0]; // rfc6350 requires that in vCard 4.0 the first component is the VERSION // component with as value 4.0, note that 3.0 does not have this requirement. if (designSetName === 'vcard' && component[1].length > 0 && !(component[1][0][0] === "version" && component[1][0][3] === "4.0")) { designSetName = "vcard3"; } designSet = designSet || design.getDesignSet(designSetName); for (; propIdx < propLen; propIdx++) { result += stringify.property(props[propIdx], designSet) + LINE_ENDING; } // Ignore subcomponents if none exist, e.g. in vCard. var comps = component[2] || []; var compIdx = 0; var compLen = comps.length; for (; compIdx < compLen; compIdx++) { result += stringify.component(comps[compIdx], designSet) + LINE_ENDING; } result += 'END:' + name; return result; }; /** * Converts a single jCal/jCard property to a iCalendar/vCard string. * * @function ICAL.stringify.property * @param {Array} property * jCal/jCard property array * @param {ICAL.design.designSet} designSet * The design data to use for this property * @param {Boolean} noFold * If true, the line is not folded * @return {String} The iCalendar/vCard string */ stringify.property = function(property, designSet, noFold) { var name = property[0].toUpperCase(); var jsName = property[0]; var params = property[1]; var line = name; var paramName; for (paramName in params) { var value = params[paramName]; /* istanbul ignore else */ if (params.hasOwnProperty(paramName)) { var multiValue = (paramName in designSet.param) && designSet.param[paramName].multiValue; if (multiValue && Array.isArray(value)) { if (designSet.param[paramName].multiValueSeparateDQuote) { multiValue = '"' + multiValue + '"'; } value = value.map(stringify._rfc6868Unescape); value = stringify.multiValue(value, multiValue, "unknown", null, designSet); } else { value = stringify._rfc6868Unescape(value); } line += ';' + paramName.toUpperCase(); line += '=' + stringify.propertyValue(value); } } if (property.length === 3) { // If there are no values, we must assume a blank value return line + ':'; } var valueType = property[2]; if (!designSet) { designSet = design.defaultSet; } var propDetails; var multiValue = false; var structuredValue = false; var isDefault = false; if (jsName in designSet.property) { propDetails = designSet.property[jsName]; if ('multiValue' in propDetails) { multiValue = propDetails.multiValue; } if (('structuredValue' in propDetails) && Array.isArray(property[3])) { structuredValue = propDetails.structuredValue; } if ('defaultType' in propDetails) { if (valueType === propDetails.defaultType) { isDefault = true; } } else { if (valueType === DEFAULT_VALUE_TYPE) { isDefault = true; } } } else { if (valueType === DEFAULT_VALUE_TYPE) { isDefault = true; } } // push the VALUE property if type is not the default // for the current property. if (!isDefault) { // value will never contain ;/:/, so we don't escape it here. line += ';VALUE=' + valueType.toUpperCase(); } line += ':'; if (multiValue && structuredValue) { line += stringify.multiValue( property[3], structuredValue, valueType, multiValue, designSet, structuredValue ); } else if (multiValue) { line += stringify.multiValue( property.slice(3), multiValue, valueType, null, designSet, false ); } else if (structuredValue) { line += stringify.multiValue( property[3], structuredValue, valueType, null, designSet, structuredValue ); } else { line += stringify.value(property[3], valueType, designSet, false); } return noFold ? line : ICAL.helpers.foldline(line); }; /** * Handles escaping of property values that may contain: * * COLON (:), SEMICOLON (;), or COMMA (,) * * If any of the above are present the result is wrapped * in double quotes. * * @function ICAL.stringify.propertyValue * @param {String} value Raw property value * @return {String} Given or escaped value when needed */ stringify.propertyValue = function(value) { if ((helpers.unescapedIndexOf(value, ',') === -1) && (helpers.unescapedIndexOf(value, ':') === -1) && (helpers.unescapedIndexOf(value, ';') === -1)) { return value; } return '"' + value + '"'; }; /** * Converts an array of ical values into a single * string based on a type and a delimiter value (like ","). * * @function ICAL.stringify.multiValue * @param {Array} values List of values to convert * @param {String} delim Used to join the values (",", ";", ":") * @param {String} type Lowecase ical value type * (like boolean, date-time, etc..) * @param {?String} innerMulti If set, each value will again be processed * Used for structured values * @param {ICAL.design.designSet} designSet * The design data to use for this property * * @return {String} iCalendar/vCard string for value */ stringify.multiValue = function(values, delim, type, innerMulti, designSet, structuredValue) { var result = ''; var len = values.length; var i = 0; for (; i < len; i++) { if (innerMulti && Array.isArray(values[i])) { result += stringify.multiValue(values[i], innerMulti, type, null, designSet, structuredValue); } else { result += stringify.value(values[i], type, designSet, structuredValue); } if (i !== (len - 1)) { result += delim; } } return result; }; /** * Processes a single ical value runs the associated "toICAL" method from the * design value type if available to convert the value. * * @function ICAL.stringify.value * @param {String|Number} value A formatted value * @param {String} type Lowercase iCalendar/vCard value type * (like boolean, date-time, etc..) * @return {String} iCalendar/vCard value for single value */ stringify.value = function(value, type, designSet, structuredValue) { if (type in designSet.value && 'toICAL' in designSet.value[type]) { return designSet.value[type].toICAL(value, structuredValue); } return value; }; /** * Internal helper for rfc6868. Exposing this on ICAL.stringify so that * hackers can disable the rfc6868 parsing if the really need to. * * @param {String} val The value to unescape * @return {String} The escaped value */ stringify._rfc6868Unescape = function(val) { return val.replace(/[\n^"]/g, function(x) { return RFC6868_REPLACE_MAP[x]; }); }; var RFC6868_REPLACE_MAP = { '"': "^'", "\n": "^n", "^": "^^" }; return stringify; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * Contains various functions to parse iCalendar and vCard data. * @namespace */ ICAL.parse = (function() { 'use strict'; var CHAR = /[^ \t]/; var MULTIVALUE_DELIMITER = ','; var VALUE_DELIMITER = ':'; var PARAM_DELIMITER = ';'; var PARAM_NAME_DELIMITER = '='; var DEFAULT_VALUE_TYPE = 'unknown'; var DEFAULT_PARAM_TYPE = 'text'; var design = ICAL.design; var helpers = ICAL.helpers; /** * An error that occurred during parsing. * * @param {String} message The error message * @memberof ICAL.parse * @extends {Error} * @class */ function ParserError(message) { this.message = message; this.name = 'ParserError'; try { throw new Error(); } catch (e) { if (e.stack) { var split = e.stack.split('\n'); split.shift(); this.stack = split.join('\n'); } } } ParserError.prototype = Error.prototype; /** * Parses iCalendar or vCard data into a raw jCal object. Consult * documentation on the {@tutorial layers|layers of parsing} for more * details. * * @function ICAL.parse * @variation function * @todo Fix the API to be more clear on the return type * @param {String} input The string data to parse * @return {Object|Object[]} A single jCal object, or an array thereof */ function parser(input) { var state = {}; var root = state.component = []; state.stack = [root]; parser._eachLine(input, function(err, line) { parser._handleContentLine(line, state); }); // when there are still items on the stack // throw a fatal error, a component was not closed // correctly in that case. if (state.stack.length > 1) { throw new ParserError( 'invalid ical body. component began but did not end' ); } state = null; return (root.length == 1 ? root[0] : root); } /** * Parse an iCalendar property value into the jCal for a single property * * @function ICAL.parse.property * @param {String} str * The iCalendar property string to parse * @param {ICAL.design.designSet=} designSet * The design data to use for this property * @return {Object} * The jCal Object containing the property */ parser.property = function(str, designSet) { var state = { component: [[], []], designSet: designSet || design.defaultSet }; parser._handleContentLine(str, state); return state.component[1][0]; }; /** * Convenience method to parse a component. You can use ICAL.parse() directly * instead. * * @function ICAL.parse.component * @see ICAL.parse(function) * @param {String} str The iCalendar component string to parse * @return {Object} The jCal Object containing the component */ parser.component = function(str) { return parser(str); }; // classes & constants parser.ParserError = ParserError; /** * The state for parsing content lines from an iCalendar/vCard string. * * @private * @memberof ICAL.parse * @typedef {Object} parserState * @property {ICAL.design.designSet} designSet The design set to use for parsing * @property {ICAL.Component[]} stack The stack of components being processed * @property {ICAL.Component} component The currently active component */ /** * Handles a single line of iCalendar/vCard, updating the state. * * @private * @function ICAL.parse._handleContentLine * @param {String} line The content line to process * @param {ICAL.parse.parserState} The current state of the line parsing */ parser._handleContentLine = function(line, state) { // break up the parts of the line var valuePos = line.indexOf(VALUE_DELIMITER); var paramPos = line.indexOf(PARAM_DELIMITER); var lastParamIndex; var lastValuePos; // name of property or begin/end var name; var value; // params is only overridden if paramPos !== -1. // we can't do params = params || {} later on // because it sacrifices ops. var params = {}; /** * Different property cases * * * 1. RRULE:FREQ=foo * // FREQ= is not a param but the value * * 2. ATTENDEE;ROLE=REQ-PARTICIPANT; * // ROLE= is a param because : has not happened yet */ // when the parameter delimiter is after the // value delimiter then it is not a parameter. if ((paramPos !== -1 && valuePos !== -1)) { // when the parameter delimiter is after the // value delimiter then it is not a parameter. if (paramPos > valuePos) { paramPos = -1; } } var parsedParams; if (paramPos !== -1) { name = line.substring(0, paramPos).toLowerCase(); parsedParams = parser._parseParameters(line.substring(paramPos), 0, state.designSet); if (parsedParams[2] == -1) { throw new ParserError("Invalid parameters in '" + line + "'"); } params = parsedParams[0]; lastParamIndex = parsedParams[1].length + parsedParams[2] + paramPos; if ((lastValuePos = line.substring(lastParamIndex).indexOf(VALUE_DELIMITER)) !== -1) { value = line.substring(lastParamIndex + lastValuePos + 1); } else { throw new ParserError("Missing parameter value in '" + line + "'"); } } else if (valuePos !== -1) { // without parmeters (BEGIN:VCAENDAR, CLASS:PUBLIC) name = line.substring(0, valuePos).toLowerCase(); value = line.substring(valuePos + 1); if (name === 'begin') { var newComponent = [value.toLowerCase(), [], []]; if (state.stack.length === 1) { state.component.push(newComponent); } else { state.component[2].push(newComponent); } state.stack.push(state.component); state.component = newComponent; if (!state.designSet) { state.designSet = design.getDesignSet(state.component[0]); } return; } else if (name === 'end') { state.component = state.stack.pop(); return; } // If it is not begin/end, then this is a property with an empty value, // which should be considered valid. } else { /** * Invalid line. * The rational to throw an error is we will * never be certain that the rest of the file * is sane and it is unlikely that we can serialize * the result correctly either. */ throw new ParserError( 'invalid line (no token ";" or ":") "' + line + '"' ); } var valueType; var multiValue = false; var structuredValue = false; var propertyDetails; if (name in state.designSet.property) { propertyDetails = state.designSet.property[name]; if ('multiValue' in propertyDetails) { multiValue = propertyDetails.multiValue; } if ('structuredValue' in propertyDetails) { structuredValue = propertyDetails.structuredValue; } if (value && 'detectType' in propertyDetails) { valueType = propertyDetails.detectType(value); } } // attempt to determine value if (!valueType) { if (!('value' in params)) { if (propertyDetails) { valueType = propertyDetails.defaultType; } else { valueType = DEFAULT_VALUE_TYPE; } } else { // possible to avoid this? valueType = params.value.toLowerCase(); } } delete params.value; /** * Note on `var result` juggling: * * I observed that building the array in pieces has adverse * effects on performance, so where possible we inline the creation. * It is a little ugly but resulted in ~2000 additional ops/sec. */ var result; if (multiValue && structuredValue) { value = parser._parseMultiValue(value, structuredValue, valueType, [], multiValue, state.designSet, structuredValue); result = [name, params, valueType, value]; } else if (multiValue) { result = [name, params, valueType]; parser._parseMultiValue(value, multiValue, valueType, result, null, state.designSet, false); } else if (structuredValue) { value = parser._parseMultiValue(value, structuredValue, valueType, [], null, state.designSet, structuredValue); result = [name, params, valueType, value]; } else { value = parser._parseValue(value, valueType, state.designSet, false); result = [name, params, valueType, value]; } // rfc6350 requires that in vCard 4.0 the first component is the VERSION // component with as value 4.0, note that 3.0 does not have this requirement. if (state.component[0] === 'vcard' && state.component[1].length === 0 && !(name === 'version' && value === '4.0')) { state.designSet = design.getDesignSet("vcard3"); } state.component[1].push(result); }; /** * Parse a value from the raw value into the jCard/jCal value. * * @private * @function ICAL.parse._parseValue * @param {String} value Original value * @param {String} type Type of value * @param {Object} designSet The design data to use for this value * @return {Object} varies on type */ parser._parseValue = function(value, type, designSet, structuredValue) { if (type in designSet.value && 'fromICAL' in designSet.value[type]) { return designSet.value[type].fromICAL(value, structuredValue); } return value; }; /** * Parse parameters from a string to object. * * @function ICAL.parse._parseParameters * @private * @param {String} line A single unfolded line * @param {Numeric} start Position to start looking for properties * @param {Object} designSet The design data to use for this property * @return {Object} key/value pairs */ parser._parseParameters = function(line, start, designSet) { var lastParam = start; var pos = 0; var delim = PARAM_NAME_DELIMITER; var result = {}; var name, lcname; var value, valuePos = -1; var type, multiValue, mvdelim; // find the next '=' sign // use lastParam and pos to find name // check if " is used if so get value from "->" // then increment pos to find next ; while ((pos !== false) && (pos = helpers.unescapedIndexOf(line, delim, pos + 1)) !== -1) { name = line.substr(lastParam + 1, pos - lastParam - 1); if (name.length == 0) { throw new ParserError("Empty parameter name in '" + line + "'"); } lcname = name.toLowerCase(); mvdelim = false; multiValue = false; if (lcname in designSet.param && designSet.param[lcname].valueType) { type = designSet.param[lcname].valueType; } else { type = DEFAULT_PARAM_TYPE; } if (lcname in designSet.param) { multiValue = designSet.param[lcname].multiValue; if (designSet.param[lcname].multiValueSeparateDQuote) { mvdelim = parser._rfc6868Escape('"' + multiValue + '"'); } } var nextChar = line[pos + 1]; if (nextChar === '"') { valuePos = pos + 2; pos = helpers.unescapedIndexOf(line, '"', valuePos); if (multiValue && pos != -1) { var extendedValue = true; while (extendedValue) { if (line[pos + 1] == multiValue && line[pos + 2] == '"') { pos = helpers.unescapedIndexOf(line, '"', pos + 3); } else { extendedValue = false; } } } if (pos === -1) { throw new ParserError( 'invalid line (no matching double quote) "' + line + '"' ); } value = line.substr(valuePos, pos - valuePos); lastParam = helpers.unescapedIndexOf(line, PARAM_DELIMITER, pos); if (lastParam === -1) { pos = false; } } else { valuePos = pos + 1; // move to next ";" var nextPos = helpers.unescapedIndexOf(line, PARAM_DELIMITER, valuePos); var propValuePos = helpers.unescapedIndexOf(line, VALUE_DELIMITER, valuePos); if (propValuePos !== -1 && nextPos > propValuePos) { // this is a delimiter in the property value, let's stop here nextPos = propValuePos; pos = false; } else if (nextPos === -1) { // no ";" if (propValuePos === -1) { nextPos = line.length; } else { nextPos = propValuePos; } pos = false; } else { lastParam = nextPos; pos = nextPos; } value = line.substr(valuePos, nextPos - valuePos); } value = parser._rfc6868Escape(value); if (multiValue) { var delimiter = mvdelim || multiValue; value = parser._parseMultiValue(value, delimiter, type, [], null, designSet); } else { value = parser._parseValue(value, type, designSet); } if (multiValue && (lcname in result)) { if (Array.isArray(result[lcname])) { result[lcname].push(value); } else { result[lcname] = [ result[lcname], value ]; } } else { result[lcname] = value; } } return [result, value, valuePos]; }; /** * Internal helper for rfc6868. Exposing this on ICAL.parse so that * hackers can disable the rfc6868 parsing if the really need to. * * @function ICAL.parse._rfc6868Escape * @param {String} val The value to escape * @return {String} The escaped value */ parser._rfc6868Escape = function(val) { return val.replace(/\^['n^]/g, function(x) { return RFC6868_REPLACE_MAP[x]; }); }; var RFC6868_REPLACE_MAP = { "^'": '"', "^n": "\n", "^^": "^" }; /** * Parse a multi value string. This function is used either for parsing * actual multi-value property's values, or for handling parameter values. It * can be used for both multi-value properties and structured value properties. * * @private * @function ICAL.parse._parseMultiValue * @param {String} buffer The buffer containing the full value * @param {String} delim The multi-value delimiter * @param {String} type The value type to be parsed * @param {Array.} result The array to append results to, varies on value type * @param {String} innerMulti The inner delimiter to split each value with * @param {ICAL.design.designSet} designSet The design data for this value * @return {?|Array.} Either an array of results, or the first result */ parser._parseMultiValue = function(buffer, delim, type, result, innerMulti, designSet, structuredValue) { var pos = 0; var lastPos = 0; var value; if (delim.length === 0) { return buffer; } // split each piece while ((pos = helpers.unescapedIndexOf(buffer, delim, lastPos)) !== -1) { value = buffer.substr(lastPos, pos - lastPos); if (innerMulti) { value = parser._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue); } else { value = parser._parseValue(value, type, designSet, structuredValue); } result.push(value); lastPos = pos + delim.length; } // on the last piece take the rest of string value = buffer.substr(lastPos); if (innerMulti) { value = parser._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue); } else { value = parser._parseValue(value, type, designSet, structuredValue); } result.push(value); return result.length == 1 ? result[0] : result; }; /** * Process a complete buffer of iCalendar/vCard data line by line, correctly * unfolding content. Each line will be processed with the given callback * * @private * @function ICAL.parse._eachLine * @param {String} buffer The buffer to process * @param {function(?String, String)} callback The callback for each line */ parser._eachLine = function(buffer, callback) { var len = buffer.length; var lastPos = buffer.search(CHAR); var pos = lastPos; var line; var firstChar; var newlineOffset; do { pos = buffer.indexOf('\n', lastPos) + 1; if (pos > 1 && buffer[pos - 2] === '\r') { newlineOffset = 2; } else { newlineOffset = 1; } if (pos === 0) { pos = len; newlineOffset = 0; } firstChar = buffer[lastPos]; if (firstChar === ' ' || firstChar === '\t') { // add to line line += buffer.substr( lastPos + 1, pos - lastPos - (newlineOffset + 1) ); } else { if (line) callback(null, line); // push line line = buffer.substr( lastPos, pos - lastPos - newlineOffset ); } lastPos = pos; } while (pos !== len); // extra ending line line = line.trim(); if (line.length) callback(null, line); }; return parser; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.Component = (function() { 'use strict'; var PROPERTY_INDEX = 1; var COMPONENT_INDEX = 2; var NAME_INDEX = 0; /** * @classdesc * Wraps a jCal component, adding convenience methods to add, remove and * update subcomponents and properties. * * @class * @alias ICAL.Component * @param {Array|String} jCal Raw jCal component data OR name of new * component * @param {ICAL.Component} parent Parent component to associate */ function Component(jCal, parent) { if (typeof(jCal) === 'string') { // jCal spec (name, properties, components) jCal = [jCal, [], []]; } // mostly for legacy reasons. this.jCal = jCal; this.parent = parent || null; } Component.prototype = { /** * Hydrated properties are inserted into the _properties array at the same * position as in the jCal array, so it is possible that the array contains * undefined values for unhydrdated properties. To avoid iterating the * array when checking if all properties have been hydrated, we save the * count here. * * @type {Number} * @private */ _hydratedPropertyCount: 0, /** * The same count as for _hydratedPropertyCount, but for subcomponents * * @type {Number} * @private */ _hydratedComponentCount: 0, /** * The name of this component * @readonly */ get name() { return this.jCal[NAME_INDEX]; }, /** * The design set for this component, e.g. icalendar vs vcard * * @type {ICAL.design.designSet} * @private */ get _designSet() { var parentDesign = this.parent && this.parent._designSet; return parentDesign || ICAL.design.getDesignSet(this.name); }, _hydrateComponent: function(index) { if (!this._components) { this._components = []; this._hydratedComponentCount = 0; } if (this._components[index]) { return this._components[index]; } var comp = new Component( this.jCal[COMPONENT_INDEX][index], this ); this._hydratedComponentCount++; return (this._components[index] = comp); }, _hydrateProperty: function(index) { if (!this._properties) { this._properties = []; this._hydratedPropertyCount = 0; } if (this._properties[index]) { return this._properties[index]; } var prop = new ICAL.Property( this.jCal[PROPERTY_INDEX][index], this ); this._hydratedPropertyCount++; return (this._properties[index] = prop); }, /** * Finds first sub component, optionally filtered by name. * * @param {String=} name Optional name to filter by * @return {?ICAL.Component} The found subcomponent */ getFirstSubcomponent: function(name) { if (name) { var i = 0; var comps = this.jCal[COMPONENT_INDEX]; var len = comps.length; for (; i < len; i++) { if (comps[i][NAME_INDEX] === name) { var result = this._hydrateComponent(i); return result; } } } else { if (this.jCal[COMPONENT_INDEX].length) { return this._hydrateComponent(0); } } // ensure we return a value (strict mode) return null; }, /** * Finds all sub components, optionally filtering by name. * * @param {String=} name Optional name to filter by * @return {ICAL.Component[]} The found sub components */ getAllSubcomponents: function(name) { var jCalLen = this.jCal[COMPONENT_INDEX].length; var i = 0; if (name) { var comps = this.jCal[COMPONENT_INDEX]; var result = []; for (; i < jCalLen; i++) { if (name === comps[i][NAME_INDEX]) { result.push( this._hydrateComponent(i) ); } } return result; } else { if (!this._components || (this._hydratedComponentCount !== jCalLen)) { for (; i < jCalLen; i++) { this._hydrateComponent(i); } } return this._components || []; } }, /** * Returns true when a named property exists. * * @param {String} name The property name * @return {Boolean} True, when property is found */ hasProperty: function(name) { var props = this.jCal[PROPERTY_INDEX]; var len = props.length; var i = 0; for (; i < len; i++) { // 0 is property name if (props[i][NAME_INDEX] === name) { return true; } } return false; }, /** * Finds the first property, optionally with the given name. * * @param {String=} name Lowercase property name * @return {?ICAL.Property} The found property */ getFirstProperty: function(name) { if (name) { var i = 0; var props = this.jCal[PROPERTY_INDEX]; var len = props.length; for (; i < len; i++) { if (props[i][NAME_INDEX] === name) { var result = this._hydrateProperty(i); return result; } } } else { if (this.jCal[PROPERTY_INDEX].length) { return this._hydrateProperty(0); } } return null; }, /** * Returns first property's value, if available. * * @param {String=} name Lowercase property name * @return {?String} The found property value. */ getFirstPropertyValue: function(name) { var prop = this.getFirstProperty(name); if (prop) { return prop.getFirstValue(); } return null; }, /** * Get all properties in the component, optionally filtered by name. * * @param {String=} name Lowercase property name * @return {ICAL.Property[]} List of properties */ getAllProperties: function(name) { var jCalLen = this.jCal[PROPERTY_INDEX].length; var i = 0; if (name) { var props = this.jCal[PROPERTY_INDEX]; var result = []; for (; i < jCalLen; i++) { if (name === props[i][NAME_INDEX]) { result.push( this._hydrateProperty(i) ); } } return result; } else { if (!this._properties || (this._hydratedPropertyCount !== jCalLen)) { for (; i < jCalLen; i++) { this._hydrateProperty(i); } } return this._properties || []; } }, _removeObjectByIndex: function(jCalIndex, cache, index) { cache = cache || []; // remove cached version if (cache[index]) { var obj = cache[index]; if ("parent" in obj) { obj.parent = null; } } cache.splice(index, 1); // remove it from the jCal this.jCal[jCalIndex].splice(index, 1); }, _removeObject: function(jCalIndex, cache, nameOrObject) { var i = 0; var objects = this.jCal[jCalIndex]; var len = objects.length; var cached = this[cache]; if (typeof(nameOrObject) === 'string') { for (; i < len; i++) { if (objects[i][NAME_INDEX] === nameOrObject) { this._removeObjectByIndex(jCalIndex, cached, i); return true; } } } else if (cached) { for (; i < len; i++) { if (cached[i] && cached[i] === nameOrObject) { this._removeObjectByIndex(jCalIndex, cached, i); return true; } } } return false; }, _removeAllObjects: function(jCalIndex, cache, name) { var cached = this[cache]; // Unfortunately we have to run through all children to reset their // parent property. var objects = this.jCal[jCalIndex]; var i = objects.length - 1; // descending search required because splice // is used and will effect the indices. for (; i >= 0; i--) { if (!name || objects[i][NAME_INDEX] === name) { this._removeObjectByIndex(jCalIndex, cached, i); } } }, /** * Adds a single sub component. * * @param {ICAL.Component} component The component to add * @return {ICAL.Component} The passed in component */ addSubcomponent: function(component) { if (!this._components) { this._components = []; this._hydratedComponentCount = 0; } if (component.parent) { component.parent.removeSubcomponent(component); } var idx = this.jCal[COMPONENT_INDEX].push(component.jCal); this._components[idx - 1] = component; this._hydratedComponentCount++; component.parent = this; return component; }, /** * Removes a single component by name or the instance of a specific * component. * * @param {ICAL.Component|String} nameOrComp Name of component, or component * @return {Boolean} True when comp is removed */ removeSubcomponent: function(nameOrComp) { var removed = this._removeObject(COMPONENT_INDEX, '_components', nameOrComp); if (removed) { this._hydratedComponentCount--; } return removed; }, /** * Removes all components or (if given) all components by a particular * name. * * @param {String=} name Lowercase component name */ removeAllSubcomponents: function(name) { var removed = this._removeAllObjects(COMPONENT_INDEX, '_components', name); this._hydratedComponentCount = 0; return removed; }, /** * Adds an {@link ICAL.Property} to the component. * * @param {ICAL.Property} property The property to add * @return {ICAL.Property} The passed in property */ addProperty: function(property) { if (!(property instanceof ICAL.Property)) { throw new TypeError('must instance of ICAL.Property'); } if (!this._properties) { this._properties = []; this._hydratedPropertyCount = 0; } if (property.parent) { property.parent.removeProperty(property); } var idx = this.jCal[PROPERTY_INDEX].push(property.jCal); this._properties[idx - 1] = property; this._hydratedPropertyCount++; property.parent = this; return property; }, /** * Helper method to add a property with a value to the component. * * @param {String} name Property name to add * @param {String|Number|Object} value Property value * @return {ICAL.Property} The created property */ addPropertyWithValue: function(name, value) { var prop = new ICAL.Property(name); prop.setValue(value); this.addProperty(prop); return prop; }, /** * Helper method that will update or create a property of the given name * and sets its value. If multiple properties with the given name exist, * only the first is updated. * * @param {String} name Property name to update * @param {String|Number|Object} value Property value * @return {ICAL.Property} The created property */ updatePropertyWithValue: function(name, value) { var prop = this.getFirstProperty(name); if (prop) { prop.setValue(value); } else { prop = this.addPropertyWithValue(name, value); } return prop; }, /** * Removes a single property by name or the instance of the specific * property. * * @param {String|ICAL.Property} nameOrProp Property name or instance to remove * @return {Boolean} True, when deleted */ removeProperty: function(nameOrProp) { var removed = this._removeObject(PROPERTY_INDEX, '_properties', nameOrProp); if (removed) { this._hydratedPropertyCount--; } return removed; }, /** * Removes all properties associated with this component, optionally * filtered by name. * * @param {String=} name Lowercase property name * @return {Boolean} True, when deleted */ removeAllProperties: function(name) { var removed = this._removeAllObjects(PROPERTY_INDEX, '_properties', name); this._hydratedPropertyCount = 0; return removed; }, /** * Returns the Object representation of this component. The returned object * is a live jCal object and should be cloned if modified. * @return {Object} */ toJSON: function() { return this.jCal; }, /** * The string representation of this component. * @return {String} */ toString: function() { return ICAL.stringify.component( this.jCal, this._designSet ); } }; /** * Create an {@link ICAL.Component} by parsing the passed iCalendar string. * * @param {String} str The iCalendar string to parse */ Component.fromString = function(str) { return new Component(ICAL.parse.component(str)); }; return Component; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.Property = (function() { 'use strict'; var NAME_INDEX = 0; var PROP_INDEX = 1; var TYPE_INDEX = 2; var VALUE_INDEX = 3; var design = ICAL.design; /** * @classdesc * Provides a layer on top of the raw jCal object for manipulating a single * property, with its parameters and value. * * @description * It is important to note that mutations done in the wrapper * directly mutate the jCal object used to initialize. * * Can also be used to create new properties by passing * the name of the property (as a String). * * @class * @alias ICAL.Property * @param {Array|String} jCal Raw jCal representation OR * the new name of the property * * @param {ICAL.Component=} parent Parent component */ function Property(jCal, parent) { this._parent = parent || null; if (typeof(jCal) === 'string') { // We are creating the property by name and need to detect the type this.jCal = [jCal, {}, design.defaultType]; this.jCal[TYPE_INDEX] = this.getDefaultType(); } else { this.jCal = jCal; } this._updateType(); } Property.prototype = { /** * The value type for this property * @readonly * @type {String} */ get type() { return this.jCal[TYPE_INDEX]; }, /** * The name of this property, in lowercase. * @readonly * @type {String} */ get name() { return this.jCal[NAME_INDEX]; }, /** * The parent component for this property. * @type {ICAL.Component} */ get parent() { return this._parent; }, set parent(p) { // Before setting the parent, check if the design set has changed. If it // has, we later need to update the type if it was unknown before. var designSetChanged = !this._parent || (p && p._designSet != this._parent._designSet); this._parent = p; if (this.type == design.defaultType && designSetChanged) { this.jCal[TYPE_INDEX] = this.getDefaultType(); this._updateType(); } return p; }, /** * The design set for this property, e.g. icalendar vs vcard * * @type {ICAL.design.designSet} * @private */ get _designSet() { return this.parent ? this.parent._designSet : design.defaultSet; }, /** * Updates the type metadata from the current jCal type and design set. * * @private */ _updateType: function() { var designSet = this._designSet; if (this.type in designSet.value) { var designType = designSet.value[this.type]; if ('decorate' in designSet.value[this.type]) { this.isDecorated = true; } else { this.isDecorated = false; } if (this.name in designSet.property) { this.isMultiValue = ('multiValue' in designSet.property[this.name]); this.isStructuredValue = ('structuredValue' in designSet.property[this.name]); } } }, /** * Hydrate a single value. The act of hydrating means turning the raw jCal * value into a potentially wrapped object, for example {@link ICAL.Time}. * * @private * @param {Number} index The index of the value to hydrate * @return {Object} The decorated value. */ _hydrateValue: function(index) { if (this._values && this._values[index]) { return this._values[index]; } // for the case where there is no value. if (this.jCal.length <= (VALUE_INDEX + index)) { return null; } if (this.isDecorated) { if (!this._values) { this._values = []; } return (this._values[index] = this._decorate( this.jCal[VALUE_INDEX + index] )); } else { return this.jCal[VALUE_INDEX + index]; } }, /** * Decorate a single value, returning its wrapped object. This is used by * the hydrate function to actually wrap the value. * * @private * @param {?} value The value to decorate * @return {Object} The decorated value */ _decorate: function(value) { return this._designSet.value[this.type].decorate(value, this); }, /** * Undecorate a single value, returning its raw jCal data. * * @private * @param {Object} value The value to undecorate * @return {?} The undecorated value */ _undecorate: function(value) { return this._designSet.value[this.type].undecorate(value, this); }, /** * Sets the value at the given index while also hydrating it. The passed * value can either be a decorated or undecorated value. * * @private * @param {?} value The value to set * @param {Number} index The index to set it at */ _setDecoratedValue: function(value, index) { if (!this._values) { this._values = []; } if (typeof(value) === 'object' && 'icaltype' in value) { // decorated value this.jCal[VALUE_INDEX + index] = this._undecorate(value); this._values[index] = value; } else { // undecorated value this.jCal[VALUE_INDEX + index] = value; this._values[index] = this._decorate(value); } }, /** * Gets a parameter on the property. * * @param {String} name Parameter name (lowercase) * @return {Array|String} Parameter value */ getParameter: function(name) { if (name in this.jCal[PROP_INDEX]) { return this.jCal[PROP_INDEX][name]; } else { return undefined; } }, /** * Gets first parameter on the property. * * @param {String} name Parameter name (lowercase) * @return {String} Parameter value */ getFirstParameter: function(name) { var parameters = this.getParameter(name); if (Array.isArray(parameters)) { return parameters[0]; } return parameters; }, /** * Sets a parameter on the property. * * @param {String} name The parameter name * @param {Array|String} value The parameter value */ setParameter: function(name, value) { var lcname = name.toLowerCase(); if (typeof value === "string" && lcname in this._designSet.param && 'multiValue' in this._designSet.param[lcname]) { value = [value]; } this.jCal[PROP_INDEX][name] = value; }, /** * Removes a parameter * * @param {String} name The parameter name */ removeParameter: function(name) { delete this.jCal[PROP_INDEX][name]; }, /** * Get the default type based on this property's name. * * @return {String} The default type for this property */ getDefaultType: function() { var name = this.jCal[NAME_INDEX]; var designSet = this._designSet; if (name in designSet.property) { var details = designSet.property[name]; if ('defaultType' in details) { return details.defaultType; } } return design.defaultType; }, /** * Sets type of property and clears out any existing values of the current * type. * * @param {String} type New iCAL type (see design.*.values) */ resetType: function(type) { this.removeAllValues(); this.jCal[TYPE_INDEX] = type; this._updateType(); }, /** * Finds the first property value. * * @return {String} First property value */ getFirstValue: function() { return this._hydrateValue(0); }, /** * Gets all values on the property. * * NOTE: this creates an array during each call. * * @return {Array} List of values */ getValues: function() { var len = this.jCal.length - VALUE_INDEX; if (len < 1) { // it is possible for a property to have no value. return []; } var i = 0; var result = []; for (; i < len; i++) { result[i] = this._hydrateValue(i); } return result; }, /** * Removes all values from this property */ removeAllValues: function() { if (this._values) { this._values.length = 0; } this.jCal.length = 3; }, /** * Sets the values of the property. Will overwrite the existing values. * This can only be used for multi-value properties. * * @param {Array} values An array of values */ setValues: function(values) { if (!this.isMultiValue) { throw new Error( this.name + ': does not not support mulitValue.\n' + 'override isMultiValue' ); } var len = values.length; var i = 0; this.removeAllValues(); if (len > 0 && typeof(values[0]) === 'object' && 'icaltype' in values[0]) { this.resetType(values[0].icaltype); } if (this.isDecorated) { for (; i < len; i++) { this._setDecoratedValue(values[i], i); } } else { for (; i < len; i++) { this.jCal[VALUE_INDEX + i] = values[i]; } } }, /** * Sets the current value of the property. If this is a multi-value * property, all other values will be removed. * * @param {String|Object} value New property value. */ setValue: function(value) { this.removeAllValues(); if (typeof(value) === 'object' && 'icaltype' in value) { this.resetType(value.icaltype); } if (this.isDecorated) { this._setDecoratedValue(value, 0); } else { this.jCal[VALUE_INDEX] = value; } }, /** * Returns the Object representation of this component. The returned object * is a live jCal object and should be cloned if modified. * @return {Object} */ toJSON: function() { return this.jCal; }, /** * The string representation of this component. * @return {String} */ toICALString: function() { return ICAL.stringify.property( this.jCal, this._designSet, true ); } }; /** * Create an {@link ICAL.Property} by parsing the passed iCalendar string. * * @param {String} str The iCalendar string to parse * @param {ICAL.design.designSet=} designSet The design data to use for this property * @return {ICAL.Property} The created iCalendar property */ Property.fromString = function(str, designSet) { return new Property(ICAL.parse.property(str, designSet)); }; return Property; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.UtcOffset = (function() { /** * @classdesc * This class represents the "duration" value type, with various calculation * and manipulation methods. * * @class * @alias ICAL.UtcOffset * @param {Object} aData An object with members of the utc offset * @param {Number=} aData.hours The hours for the utc offset * @param {Number=} aData.minutes The minutes in the utc offset * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1 */ function UtcOffset(aData) { this.fromData(aData); } UtcOffset.prototype = { /** * The hours in the utc-offset * @type {Number} */ hours: 0, /** * The minutes in the utc-offset * @type {Number} */ minutes: 0, /** * The sign of the utc offset, 1 for positive offset, -1 for negative * offsets. * @type {Number} */ factor: 1, /** * The type name, to be used in the jCal object. * @constant * @type {String} * @default "utc-offset" */ icaltype: "utc-offset", /** * Returns a clone of the utc offset object. * * @return {ICAL.UtcOffset} The cloned object */ clone: function() { return ICAL.UtcOffset.fromSeconds(this.toSeconds()); }, /** * Sets up the current instance using members from the passed data object. * * @param {Object} aData An object with members of the utc offset * @param {Number=} aData.hours The hours for the utc offset * @param {Number=} aData.minutes The minutes in the utc offset * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1 */ fromData: function(aData) { if (aData) { for (var key in aData) { /* istanbul ignore else */ if (aData.hasOwnProperty(key)) { this[key] = aData[key]; } } } this._normalize(); }, /** * Sets up the current instance from the given seconds value. The seconds * value is truncated to the minute. Offsets are wrapped when the world * ends, the hour after UTC+14:00 is UTC-12:00. * * @param {Number} aSeconds The seconds to convert into an offset */ fromSeconds: function(aSeconds) { var secs = Math.abs(aSeconds); this.factor = aSeconds < 0 ? -1 : 1; this.hours = ICAL.helpers.trunc(secs / 3600); secs -= (this.hours * 3600); this.minutes = ICAL.helpers.trunc(secs / 60); return this; }, /** * Convert the current offset to a value in seconds * * @return {Number} The offset in seconds */ toSeconds: function() { return this.factor * (60 * this.minutes + 3600 * this.hours); }, /** * Compare this utc offset with another one. * * @param {ICAL.UtcOffset} other The other offset to compare with * @return {Number} -1, 0 or 1 for less/equal/greater */ compare: function icaltime_compare(other) { var a = this.toSeconds(); var b = other.toSeconds(); return (a > b) - (b > a); }, _normalize: function() { // Range: 97200 seconds (with 1 hour inbetween) var secs = this.toSeconds(); var factor = this.factor; while (secs < -43200) { // = UTC-12:00 secs += 97200; } while (secs > 50400) { // = UTC+14:00 secs -= 97200; } this.fromSeconds(secs); // Avoid changing the factor when on zero seconds if (secs == 0) { this.factor = factor; } }, /** * The iCalendar string representation of this utc-offset. * @return {String} */ toICALString: function() { return ICAL.design.icalendar.value['utc-offset'].toICAL(this.toString()); }, /** * The string representation of this utc-offset. * @return {String} */ toString: function toString() { return (this.factor == 1 ? "+" : "-") + ICAL.helpers.pad2(this.hours) + ':' + ICAL.helpers.pad2(this.minutes); } }; /** * Creates a new {@link ICAL.UtcOffset} instance from the passed string. * * @param {String} aString The string to parse * @return {ICAL.Duration} The created utc-offset instance */ UtcOffset.fromString = function(aString) { // -05:00 var options = {}; //TODO: support seconds per rfc5545 ? options.factor = (aString[0] === '+') ? 1 : -1; options.hours = ICAL.helpers.strictParseInt(aString.substr(1, 2)); options.minutes = ICAL.helpers.strictParseInt(aString.substr(4, 2)); return new ICAL.UtcOffset(options); }; /** * Creates a new {@link ICAL.UtcOffset} instance from the passed seconds * value. * * @param {Number} aSeconds The number of seconds to convert */ UtcOffset.fromSeconds = function(aSeconds) { var instance = new UtcOffset(); instance.fromSeconds(aSeconds); return instance; }; return UtcOffset; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.Binary = (function() { /** * @classdesc * Represents the BINARY value type, which contains extra methods for * encoding and decoding. * * @class * @alias ICAL.Binary * @param {String} aValue The binary data for this value */ function Binary(aValue) { this.value = aValue; } Binary.prototype = { /** * The type name, to be used in the jCal object. * @default "binary" * @constant */ icaltype: "binary", /** * Base64 decode the current value * * @return {String} The base64-decoded value */ decodeValue: function decodeValue() { return this._b64_decode(this.value); }, /** * Encodes the passed parameter with base64 and sets the internal * value to the result. * * @param {String} aValue The raw binary value to encode */ setEncodedValue: function setEncodedValue(aValue) { this.value = this._b64_encode(aValue); }, _b64_encode: function base64_encode(data) { // http://kevin.vanzonneveld.net // + original by: Tyler Akins (http://rumkin.com) // + improved by: Bayron Guevara // + improved by: Thunder.m // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Pellentesque Malesuada // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Rafał Kukawski (http://kukawski.pl) // * example 1: base64_encode('Kevin van Zonneveld'); // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' // mozilla has this native // - but breaks in 2.0.0.12! //if (typeof this.window['atob'] == 'function') { // return atob(data); //} var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc = "", tmp_arr = []; if (!data) { return data; } do { // pack three octets into four hexets o1 = data.charCodeAt(i++); o2 = data.charCodeAt(i++); o3 = data.charCodeAt(i++); bits = o1 << 16 | o2 << 8 | o3; h1 = bits >> 18 & 0x3f; h2 = bits >> 12 & 0x3f; h3 = bits >> 6 & 0x3f; h4 = bits & 0x3f; // use hexets to index into b64, and append result to encoded string tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); } while (i < data.length); enc = tmp_arr.join(''); var r = data.length % 3; return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); }, _b64_decode: function base64_decode(data) { // http://kevin.vanzonneveld.net // + original by: Tyler Akins (http://rumkin.com) // + improved by: Thunder.m // + input by: Aman Gupta // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Onno Marsman // + bugfixed by: Pellentesque Malesuada // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + input by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); // * returns 1: 'Kevin van Zonneveld' // mozilla has this native // - but breaks in 2.0.0.12! //if (typeof this.window['btoa'] == 'function') { // return btoa(data); //} var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; if (!data) { return data; } data += ''; do { // unpack four hexets into three octets using index points in b64 h1 = b64.indexOf(data.charAt(i++)); h2 = b64.indexOf(data.charAt(i++)); h3 = b64.indexOf(data.charAt(i++)); h4 = b64.indexOf(data.charAt(i++)); bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; o1 = bits >> 16 & 0xff; o2 = bits >> 8 & 0xff; o3 = bits & 0xff; if (h3 == 64) { tmp_arr[ac++] = String.fromCharCode(o1); } else if (h4 == 64) { tmp_arr[ac++] = String.fromCharCode(o1, o2); } else { tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); } } while (i < data.length); dec = tmp_arr.join(''); return dec; }, /** * The string representation of this value * @return {String} */ toString: function() { return this.value; } }; /** * Creates a binary value from the given string. * * @param {String} aString The binary value string * @return {ICAL.Binary} The binary value instance */ Binary.fromString = function(aString) { return new Binary(aString); }; return Binary; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ (function() { /** * @classdesc * This class represents the "period" value type, with various calculation * and manipulation methods. * * @description * The passed data object cannot contain both and end date and a duration. * * @class * @param {Object} aData An object with members of the period * @param {ICAL.Time=} aData.start The start of the period * @param {ICAL.Time=} aData.end The end of the period * @param {ICAL.Duration=} aData.duration The duration of the period */ ICAL.Period = function icalperiod(aData) { this.wrappedJSObject = this; if (aData && 'start' in aData) { if (aData.start && !(aData.start instanceof ICAL.Time)) { throw new TypeError('.start must be an instance of ICAL.Time'); } this.start = aData.start; } if (aData && aData.end && aData.duration) { throw new Error('cannot accept both end and duration'); } if (aData && 'end' in aData) { if (aData.end && !(aData.end instanceof ICAL.Time)) { throw new TypeError('.end must be an instance of ICAL.Time'); } this.end = aData.end; } if (aData && 'duration' in aData) { if (aData.duration && !(aData.duration instanceof ICAL.Duration)) { throw new TypeError('.duration must be an instance of ICAL.Duration'); } this.duration = aData.duration; } }; ICAL.Period.prototype = { /** * The start of the period * @type {ICAL.Time} */ start: null, /** * The end of the period * @type {ICAL.Time} */ end: null, /** * The duration of the period * @type {ICAL.Duration} */ duration: null, /** * The class identifier. * @constant * @type {String} * @default "icalperiod" */ icalclass: "icalperiod", /** * The type name, to be used in the jCal object. * @constant * @type {String} * @default "period" */ icaltype: "period", /** * Returns a clone of the duration object. * * @return {ICAL.Period} The cloned object */ clone: function() { return ICAL.Period.fromData({ start: this.start ? this.start.clone() : null, end: this.end ? this.end.clone() : null, duration: this.duration ? this.duration.clone() : null }); }, /** * Calculates the duration of the period, either directly or by subtracting * start from end date. * * @return {ICAL.Duration} The calculated duration */ getDuration: function duration() { if (this.duration) { return this.duration; } else { return this.end.subtractDate(this.start); } }, /** * Calculates the end date of the period, either directly or by adding * duration to start date. * * @return {ICAL.Time} The calculated end date */ getEnd: function() { if (this.end) { return this.end; } else { var end = this.start.clone(); end.addDuration(this.duration); return end; } }, /** * The string representation of this period. * @return {String} */ toString: function toString() { return this.start + "/" + (this.end || this.duration); }, /** * The jCal representation of this period type. * @return {Object} */ toJSON: function() { return [this.start.toString(), (this.end || this.duration).toString()]; }, /** * The iCalendar string representation of this period. * @return {String} */ toICALString: function() { return this.start.toICALString() + "/" + (this.end || this.duration).toICALString(); } }; /** * Creates a new {@link ICAL.Period} instance from the passed string. * * @param {String} str The string to parse * @param {ICAL.Property} prop The property this period will be on * @return {ICAL.Period} The created period instance */ ICAL.Period.fromString = function fromString(str, prop) { var parts = str.split('/'); if (parts.length !== 2) { throw new Error( 'Invalid string value: "' + str + '" must contain a "/" char.' ); } var options = { start: ICAL.Time.fromDateTimeString(parts[0], prop) }; var end = parts[1]; if (ICAL.Duration.isValueString(end)) { options.duration = ICAL.Duration.fromString(end); } else { options.end = ICAL.Time.fromDateTimeString(end, prop); } return new ICAL.Period(options); }; /** * Creates a new {@link ICAL.Period} instance from the given data object. * The passed data object cannot contain both and end date and a duration. * * @param {Object} aData An object with members of the period * @param {ICAL.Time=} aData.start The start of the period * @param {ICAL.Time=} aData.end The end of the period * @param {ICAL.Duration=} aData.duration The duration of the period * @return {ICAL.Period} The period instance */ ICAL.Period.fromData = function fromData(aData) { return new ICAL.Period(aData); }; /** * Returns a new period instance from the given jCal data array. The first * member is always the start date string, the second member is either a * duration or end date string. * * @param {Array} aData The jCal data array * @param {ICAL.Property} aProp The property this jCal data is on * @param {Boolean} aLenient If true, data value can be both date and date-time * @return {ICAL.Period} The period instance */ ICAL.Period.fromJSON = function(aData, aProp, aLenient) { function fromDateOrDateTimeString(aValue, aProp) { if (aLenient) { return ICAL.Time.fromString(aValue, aProp); } else { return ICAL.Time.fromDateTimeString(aValue, aProp); } } if (ICAL.Duration.isValueString(aData[1])) { return ICAL.Period.fromData({ start: fromDateOrDateTimeString(aData[0], aProp), duration: ICAL.Duration.fromString(aData[1]) }); } else { return ICAL.Period.fromData({ start: fromDateOrDateTimeString(aData[0], aProp), end: fromDateOrDateTimeString(aData[1], aProp) }); } }; })(); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ (function() { var DURATION_LETTERS = /([PDWHMTS]{1,1})/; /** * @classdesc * This class represents the "duration" value type, with various calculation * and manipulation methods. * * @class * @alias ICAL.Duration * @param {Object} data An object with members of the duration * @param {Number} data.weeks Duration in weeks * @param {Number} data.days Duration in days * @param {Number} data.hours Duration in hours * @param {Number} data.minutes Duration in minutes * @param {Number} data.seconds Duration in seconds * @param {Boolean} data.isNegative If true, the duration is negative */ ICAL.Duration = function icalduration(data) { this.wrappedJSObject = this; this.fromData(data); }; ICAL.Duration.prototype = { /** * The weeks in this duration * @type {Number} * @default 0 */ weeks: 0, /** * The days in this duration * @type {Number} * @default 0 */ days: 0, /** * The days in this duration * @type {Number} * @default 0 */ hours: 0, /** * The minutes in this duration * @type {Number} * @default 0 */ minutes: 0, /** * The seconds in this duration * @type {Number} * @default 0 */ seconds: 0, /** * The seconds in this duration * @type {Boolean} * @default false */ isNegative: false, /** * The class identifier. * @constant * @type {String} * @default "icalduration" */ icalclass: "icalduration", /** * The type name, to be used in the jCal object. * @constant * @type {String} * @default "duration" */ icaltype: "duration", /** * Returns a clone of the duration object. * * @return {ICAL.Duration} The cloned object */ clone: function clone() { return ICAL.Duration.fromData(this); }, /** * The duration value expressed as a number of seconds. * * @return {Number} The duration value in seconds */ toSeconds: function toSeconds() { var seconds = this.seconds + 60 * this.minutes + 3600 * this.hours + 86400 * this.days + 7 * 86400 * this.weeks; return (this.isNegative ? -seconds : seconds); }, /** * Reads the passed seconds value into this duration object. Afterwards, * members like {@link ICAL.Duration#days days} and {@link ICAL.Duration#weeks weeks} will be set up * accordingly. * * @param {Number} aSeconds The duration value in seconds * @return {ICAL.Duration} Returns this instance */ fromSeconds: function fromSeconds(aSeconds) { var secs = Math.abs(aSeconds); this.isNegative = (aSeconds < 0); this.days = ICAL.helpers.trunc(secs / 86400); // If we have a flat number of weeks, use them. if (this.days % 7 == 0) { this.weeks = this.days / 7; this.days = 0; } else { this.weeks = 0; } secs -= (this.days + 7 * this.weeks) * 86400; this.hours = ICAL.helpers.trunc(secs / 3600); secs -= this.hours * 3600; this.minutes = ICAL.helpers.trunc(secs / 60); secs -= this.minutes * 60; this.seconds = secs; return this; }, /** * Sets up the current instance using members from the passed data object. * * @param {Object} aData An object with members of the duration * @param {Number} aData.weeks Duration in weeks * @param {Number} aData.days Duration in days * @param {Number} aData.hours Duration in hours * @param {Number} aData.minutes Duration in minutes * @param {Number} aData.seconds Duration in seconds * @param {Boolean} aData.isNegative If true, the duration is negative */ fromData: function fromData(aData) { var propsToCopy = ["weeks", "days", "hours", "minutes", "seconds", "isNegative"]; for (var key in propsToCopy) { /* istanbul ignore if */ if (!propsToCopy.hasOwnProperty(key)) { continue; } var prop = propsToCopy[key]; if (aData && prop in aData) { this[prop] = aData[prop]; } else { this[prop] = 0; } } }, /** * Resets the duration instance to the default values, i.e. PT0S */ reset: function reset() { this.isNegative = false; this.weeks = 0; this.days = 0; this.hours = 0; this.minutes = 0; this.seconds = 0; }, /** * Compares the duration instance with another one. * * @param {ICAL.Duration} aOther The instance to compare with * @return {Number} -1, 0 or 1 for less/equal/greater */ compare: function compare(aOther) { var thisSeconds = this.toSeconds(); var otherSeconds = aOther.toSeconds(); return (thisSeconds > otherSeconds) - (thisSeconds < otherSeconds); }, /** * Normalizes the duration instance. For example, a duration with a value * of 61 seconds will be normalized to 1 minute and 1 second. */ normalize: function normalize() { this.fromSeconds(this.toSeconds()); }, /** * The string representation of this duration. * @return {String} */ toString: function toString() { if (this.toSeconds() == 0) { return "PT0S"; } else { var str = ""; if (this.isNegative) str += "-"; str += "P"; if (this.weeks) str += this.weeks + "W"; if (this.days) str += this.days + "D"; if (this.hours || this.minutes || this.seconds) { str += "T"; if (this.hours) str += this.hours + "H"; if (this.minutes) str += this.minutes + "M"; if (this.seconds) str += this.seconds + "S"; } return str; } }, /** * The iCalendar string representation of this duration. * @return {String} */ toICALString: function() { return this.toString(); } }; /** * Returns a new ICAL.Duration instance from the passed seconds value. * * @param {Number} aSeconds The seconds to create the instance from * @return {ICAL.Duration} The newly created duration instance */ ICAL.Duration.fromSeconds = function icalduration_from_seconds(aSeconds) { return (new ICAL.Duration()).fromSeconds(aSeconds); }; /** * Internal helper function to handle a chunk of a duration. * * @param {String} letter type of duration chunk * @param {String} number numeric value or -/+ * @param {Object} dict target to assign values to */ function parseDurationChunk(letter, number, object) { var type; switch (letter) { case 'P': if (number && number === '-') { object.isNegative = true; } else { object.isNegative = false; } // period break; case 'D': type = 'days'; break; case 'W': type = 'weeks'; break; case 'H': type = 'hours'; break; case 'M': type = 'minutes'; break; case 'S': type = 'seconds'; break; default: // Not a valid chunk return 0; } if (type) { if (!number && number !== 0) { throw new Error( 'invalid duration value: Missing number before "' + letter + '"' ); } var num = parseInt(number, 10); if (ICAL.helpers.isStrictlyNaN(num)) { throw new Error( 'invalid duration value: Invalid number "' + number + '" before "' + letter + '"' ); } object[type] = num; } return 1; } /** * Checks if the given string is an iCalendar duration value. * * @param {String} value The raw ical value * @return {Boolean} True, if the given value is of the * duration ical type */ ICAL.Duration.isValueString = function(string) { return (string[0] === 'P' || string[1] === 'P'); }; /** * Creates a new {@link ICAL.Duration} instance from the passed string. * * @param {String} aStr The string to parse * @return {ICAL.Duration} The created duration instance */ ICAL.Duration.fromString = function icalduration_from_string(aStr) { var pos = 0; var dict = Object.create(null); var chunks = 0; while ((pos = aStr.search(DURATION_LETTERS)) !== -1) { var type = aStr[pos]; var numeric = aStr.substr(0, pos); aStr = aStr.substr(pos + 1); chunks += parseDurationChunk(type, numeric, dict); } if (chunks < 2) { // There must be at least a chunk with "P" and some unit chunk throw new Error( 'invalid duration value: Not enough duration components in "' + aStr + '"' ); } return new ICAL.Duration(dict); }; /** * Creates a new ICAL.Duration instance from the given data object. * * @param {Object} aData An object with members of the duration * @param {Number} aData.weeks Duration in weeks * @param {Number} aData.days Duration in days * @param {Number} aData.hours Duration in hours * @param {Number} aData.minutes Duration in minutes * @param {Number} aData.seconds Duration in seconds * @param {Boolean} aData.isNegative If true, the duration is negative * @return {ICAL.Duration} The createad duration instance */ ICAL.Duration.fromData = function icalduration_from_data(aData) { return new ICAL.Duration(aData); }; })(); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2012 */ (function() { var OPTIONS = ["tzid", "location", "tznames", "latitude", "longitude"]; /** * @classdesc * Timezone representation, created by passing in a tzid and component. * * @example * var vcalendar; * var timezoneComp = vcalendar.getFirstSubcomponent('vtimezone'); * var tzid = timezoneComp.getFirstPropertyValue('tzid'); * * var timezone = new ICAL.Timezone({ * component: timezoneComp, * tzid * }); * * @class * @param {ICAL.Component|Object} data options for class * @param {String|ICAL.Component} data.component * If data is a simple object, then this member can be set to either a * string containing the component data, or an already parsed * ICAL.Component * @param {String} data.tzid The timezone identifier * @param {String} data.location The timezone locationw * @param {String} data.tznames An alternative string representation of the * timezone * @param {Number} data.latitude The latitude of the timezone * @param {Number} data.longitude The longitude of the timezone */ ICAL.Timezone = function icaltimezone(data) { this.wrappedJSObject = this; this.fromData(data); }; ICAL.Timezone.prototype = { /** * Timezone identifier * @type {String} */ tzid: "", /** * Timezone location * @type {String} */ location: "", /** * Alternative timezone name, for the string representation * @type {String} */ tznames: "", /** * The primary latitude for the timezone. * @type {Number} */ latitude: 0.0, /** * The primary longitude for the timezone. * @type {Number} */ longitude: 0.0, /** * The vtimezone component for this timezone. * @type {ICAL.Component} */ component: null, /** * The year this timezone has been expanded to. All timezone transition * dates until this year are known and can be used for calculation * * @private * @type {Number} */ expandedUntilYear: 0, /** * The class identifier. * @constant * @type {String} * @default "icaltimezone" */ icalclass: "icaltimezone", /** * Sets up the current instance using members from the passed data object. * * @param {ICAL.Component|Object} aData options for class * @param {String|ICAL.Component} aData.component * If aData is a simple object, then this member can be set to either a * string containing the component data, or an already parsed * ICAL.Component * @param {String} aData.tzid The timezone identifier * @param {String} aData.location The timezone locationw * @param {String} aData.tznames An alternative string representation of the * timezone * @param {Number} aData.latitude The latitude of the timezone * @param {Number} aData.longitude The longitude of the timezone */ fromData: function fromData(aData) { this.expandedUntilYear = 0; this.changes = []; if (aData instanceof ICAL.Component) { // Either a component is passed directly this.component = aData; } else { // Otherwise the component may be in the data object if (aData && "component" in aData) { if (typeof aData.component == "string") { // If a string was passed, parse it as a component var jCal = ICAL.parse(aData.component); this.component = new ICAL.Component(jCal); } else if (aData.component instanceof ICAL.Component) { // If it was a component already, then just set it this.component = aData.component; } else { // Otherwise just null out the component this.component = null; } } // Copy remaining passed properties for (var key in OPTIONS) { /* istanbul ignore else */ if (OPTIONS.hasOwnProperty(key)) { var prop = OPTIONS[key]; if (aData && prop in aData) { this[prop] = aData[prop]; } } } } // If we have a component but no TZID, attempt to get it from the // component's properties. if (this.component instanceof ICAL.Component && !this.tzid) { this.tzid = this.component.getFirstPropertyValue('tzid'); } return this; }, /** * Finds the utcOffset the given time would occur in this timezone. * * @param {ICAL.Time} tt The time to check for * @return {Number} utc offset in seconds */ utcOffset: function utcOffset(tt) { if (this == ICAL.Timezone.utcTimezone || this == ICAL.Timezone.localTimezone) { return 0; } this._ensureCoverage(tt.year); if (!this.changes.length) { return 0; } var tt_change = { year: tt.year, month: tt.month, day: tt.day, hour: tt.hour, minute: tt.minute, second: tt.second }; var change_num = this._findNearbyChange(tt_change); var change_num_to_use = -1; var step = 1; // TODO: replace with bin search? for (;;) { var change = ICAL.helpers.clone(this.changes[change_num], true); if (change.utcOffset < change.prevUtcOffset) { ICAL.Timezone.adjust_change(change, 0, 0, 0, change.utcOffset); } else { ICAL.Timezone.adjust_change(change, 0, 0, 0, change.prevUtcOffset); } var cmp = ICAL.Timezone._compare_change_fn(tt_change, change); if (cmp >= 0) { change_num_to_use = change_num; } else { step = -1; } if (step == -1 && change_num_to_use != -1) { break; } change_num += step; if (change_num < 0) { return 0; } if (change_num >= this.changes.length) { break; } } var zone_change = this.changes[change_num_to_use]; var utcOffset_change = zone_change.utcOffset - zone_change.prevUtcOffset; if (utcOffset_change < 0 && change_num_to_use > 0) { var tmp_change = ICAL.helpers.clone(zone_change, true); ICAL.Timezone.adjust_change(tmp_change, 0, 0, 0, tmp_change.prevUtcOffset); if (ICAL.Timezone._compare_change_fn(tt_change, tmp_change) < 0) { var prev_zone_change = this.changes[change_num_to_use - 1]; var want_daylight = false; // TODO if (zone_change.is_daylight != want_daylight && prev_zone_change.is_daylight == want_daylight) { zone_change = prev_zone_change; } } } // TODO return is_daylight? return zone_change.utcOffset; }, _findNearbyChange: function icaltimezone_find_nearby_change(change) { // find the closest match var idx = ICAL.helpers.binsearchInsert( this.changes, change, ICAL.Timezone._compare_change_fn ); if (idx >= this.changes.length) { return this.changes.length - 1; } return idx; }, _ensureCoverage: function(aYear) { if (ICAL.Timezone._minimumExpansionYear == -1) { var today = ICAL.Time.now(); ICAL.Timezone._minimumExpansionYear = today.year; } var changesEndYear = aYear; if (changesEndYear < ICAL.Timezone._minimumExpansionYear) { changesEndYear = ICAL.Timezone._minimumExpansionYear; } changesEndYear += ICAL.Timezone.EXTRA_COVERAGE; if (changesEndYear > ICAL.Timezone.MAX_YEAR) { changesEndYear = ICAL.Timezone.MAX_YEAR; } if (!this.changes.length || this.expandedUntilYear < aYear) { var subcomps = this.component.getAllSubcomponents(); var compLen = subcomps.length; var compIdx = 0; for (; compIdx < compLen; compIdx++) { this._expandComponent( subcomps[compIdx], changesEndYear, this.changes ); } this.changes.sort(ICAL.Timezone._compare_change_fn); this.expandedUntilYear = changesEndYear; } }, _expandComponent: function(aComponent, aYear, changes) { if (!aComponent.hasProperty("dtstart") || !aComponent.hasProperty("tzoffsetto") || !aComponent.hasProperty("tzoffsetfrom")) { return null; } var dtstart = aComponent.getFirstProperty("dtstart").getFirstValue(); var change; function convert_tzoffset(offset) { return offset.factor * (offset.hours * 3600 + offset.minutes * 60); } function init_changes() { var changebase = {}; changebase.is_daylight = (aComponent.name == "daylight"); changebase.utcOffset = convert_tzoffset( aComponent.getFirstProperty("tzoffsetto").getFirstValue() ); changebase.prevUtcOffset = convert_tzoffset( aComponent.getFirstProperty("tzoffsetfrom").getFirstValue() ); return changebase; } if (!aComponent.hasProperty("rrule") && !aComponent.hasProperty("rdate")) { change = init_changes(); change.year = dtstart.year; change.month = dtstart.month; change.day = dtstart.day; change.hour = dtstart.hour; change.minute = dtstart.minute; change.second = dtstart.second; ICAL.Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset); changes.push(change); } else { var props = aComponent.getAllProperties("rdate"); for (var rdatekey in props) { /* istanbul ignore if */ if (!props.hasOwnProperty(rdatekey)) { continue; } var rdate = props[rdatekey]; var time = rdate.getFirstValue(); change = init_changes(); change.year = time.year; change.month = time.month; change.day = time.day; if (time.isDate) { change.hour = dtstart.hour; change.minute = dtstart.minute; change.second = dtstart.second; if (dtstart.zone != ICAL.Timezone.utcTimezone) { ICAL.Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset); } } else { change.hour = time.hour; change.minute = time.minute; change.second = time.second; if (time.zone != ICAL.Timezone.utcTimezone) { ICAL.Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset); } } changes.push(change); } var rrule = aComponent.getFirstProperty("rrule"); if (rrule) { rrule = rrule.getFirstValue(); change = init_changes(); if (rrule.until && rrule.until.zone == ICAL.Timezone.utcTimezone) { rrule.until.adjust(0, 0, 0, change.prevUtcOffset); rrule.until.zone = ICAL.Timezone.localTimezone; } var iterator = rrule.iterator(dtstart); var occ; while ((occ = iterator.next())) { change = init_changes(); if (occ.year > aYear || !occ) { break; } change.year = occ.year; change.month = occ.month; change.day = occ.day; change.hour = occ.hour; change.minute = occ.minute; change.second = occ.second; change.isDate = occ.isDate; ICAL.Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset); changes.push(change); } } } return changes; }, /** * The string representation of this timezone. * @return {String} */ toString: function toString() { return (this.tznames ? this.tznames : this.tzid); } }; ICAL.Timezone._compare_change_fn = function icaltimezone_compare_change_fn(a, b) { if (a.year < b.year) return -1; else if (a.year > b.year) return 1; if (a.month < b.month) return -1; else if (a.month > b.month) return 1; if (a.day < b.day) return -1; else if (a.day > b.day) return 1; if (a.hour < b.hour) return -1; else if (a.hour > b.hour) return 1; if (a.minute < b.minute) return -1; else if (a.minute > b.minute) return 1; if (a.second < b.second) return -1; else if (a.second > b.second) return 1; return 0; }; /** * Convert the date/time from one zone to the next. * * @param {ICAL.Time} tt The time to convert * @param {ICAL.Timezone} from_zone The source zone to convert from * @param {ICAL.Timezone} to_zone The target zone to convert to * @return {ICAL.Time} The converted date/time object */ ICAL.Timezone.convert_time = function icaltimezone_convert_time(tt, from_zone, to_zone) { if (tt.isDate || from_zone.tzid == to_zone.tzid || from_zone == ICAL.Timezone.localTimezone || to_zone == ICAL.Timezone.localTimezone) { tt.zone = to_zone; return tt; } var utcOffset = from_zone.utcOffset(tt); tt.adjust(0, 0, 0, - utcOffset); utcOffset = to_zone.utcOffset(tt); tt.adjust(0, 0, 0, utcOffset); return null; }; /** * Creates a new ICAL.Timezone instance from the passed data object. * * @param {ICAL.Component|Object} aData options for class * @param {String|ICAL.Component} aData.component * If aData is a simple object, then this member can be set to either a * string containing the component data, or an already parsed * ICAL.Component * @param {String} aData.tzid The timezone identifier * @param {String} aData.location The timezone locationw * @param {String} aData.tznames An alternative string representation of the * timezone * @param {Number} aData.latitude The latitude of the timezone * @param {Number} aData.longitude The longitude of the timezone */ ICAL.Timezone.fromData = function icaltimezone_fromData(aData) { var tt = new ICAL.Timezone(); return tt.fromData(aData); }; /** * The instance describing the UTC timezone * @type {ICAL.Timezone} * @constant * @instance */ ICAL.Timezone.utcTimezone = ICAL.Timezone.fromData({ tzid: "UTC" }); /** * The instance describing the local timezone * @type {ICAL.Timezone} * @constant * @instance */ ICAL.Timezone.localTimezone = ICAL.Timezone.fromData({ tzid: "floating" }); /** * Adjust a timezone change object. * @private * @param {Object} change The timezone change object * @param {Number} days The extra amount of days * @param {Number} hours The extra amount of hours * @param {Number} minutes The extra amount of minutes * @param {Number} seconds The extra amount of seconds */ ICAL.Timezone.adjust_change = function icaltimezone_adjust_change(change, days, hours, minutes, seconds) { return ICAL.Time.prototype.adjust.call( change, days, hours, minutes, seconds, change ); }; ICAL.Timezone._minimumExpansionYear = -1; ICAL.Timezone.MAX_YEAR = 2035; // TODO this is because of time_t, which we don't need. Still usefull? ICAL.Timezone.EXTRA_COVERAGE = 5; })(); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.TimezoneService = (function() { var zones; /** * @classdesc * Singleton class to contain timezones. Right now it is all manual registry in * the future we may use this class to download timezone information or handle * loading pre-expanded timezones. * * @namespace * @alias ICAL.TimezoneService */ var TimezoneService = { get count() { return Object.keys(zones).length; }, reset: function() { zones = Object.create(null); var utc = ICAL.Timezone.utcTimezone; zones.Z = utc; zones.UTC = utc; zones.GMT = utc; }, /** * Checks if timezone id has been registered. * * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles) * @return {Boolean} False, when not present */ has: function(tzid) { return !!zones[tzid]; }, /** * Returns a timezone by its tzid if present. * * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles) * @return {?ICAL.Timezone} The timezone, or null if not found */ get: function(tzid) { return zones[tzid]; }, /** * Registers a timezone object or component. * * @param {String=} name * The name of the timezone. Defaults to the component's TZID if not * passed. * @param {ICAL.Component|ICAL.Timezone} zone * The initialized zone or vtimezone. */ register: function(name, timezone) { if (name instanceof ICAL.Component) { if (name.name === 'vtimezone') { timezone = new ICAL.Timezone(name); name = timezone.tzid; } } if (timezone instanceof ICAL.Timezone) { zones[name] = timezone; } else { throw new TypeError('timezone must be ICAL.Timezone or ICAL.Component'); } }, /** * Removes a timezone by its tzid from the list. * * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles) * @return {?ICAL.Timezone} The removed timezone, or null if not registered */ remove: function(tzid) { return (delete zones[tzid]); } }; // initialize defaults TimezoneService.reset(); return TimezoneService; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ (function() { /** * @classdesc * iCalendar Time representation (similar to JS Date object). Fully * independent of system (OS) timezone / time. Unlike JS Date, the month * January is 1, not zero. * * @example * var time = new ICAL.Time({ * year: 2012, * month: 10, * day: 11 * minute: 0, * second: 0, * isDate: false * }); * * * @alias ICAL.Time * @class * @param {Object} data Time initialization * @param {Number=} data.year The year for this date * @param {Number=} data.month The month for this date * @param {Number=} data.day The day for this date * @param {Number=} data.hour The hour for this date * @param {Number=} data.minute The minute for this date * @param {Number=} data.second The second for this date * @param {Boolean=} data.isDate If true, the instance represents a date (as * opposed to a date-time) * @param {ICAL.Timezone} zone timezone this position occurs in */ ICAL.Time = function icaltime(data, zone) { this.wrappedJSObject = this; var time = this._time = Object.create(null); /* time defaults */ time.year = 0; time.month = 1; time.day = 1; time.hour = 0; time.minute = 0; time.second = 0; time.isDate = false; this.fromData(data, zone); }; ICAL.Time._dowCache = {}; ICAL.Time._wnCache = {}; ICAL.Time.prototype = { /** * The class identifier. * @constant * @type {String} * @default "icaltime" */ icalclass: "icaltime", _cachedUnixTime: null, /** * The type name, to be used in the jCal object. This value may change and * is strictly defined by the {@link ICAL.Time#isDate isDate} member. * @readonly * @type {String} * @default "date-time" */ get icaltype() { return this.isDate ? 'date' : 'date-time'; }, /** * The timezone for this time. * @type {ICAL.Timezone} */ zone: null, /** * Internal uses to indicate that a change has been made and the next read * operation must attempt to normalize the value (for example changing the * day to 33). * * @type {Boolean} * @private */ _pendingNormalization: false, /** * Returns a clone of the time object. * * @return {ICAL.Time} The cloned object */ clone: function() { return new ICAL.Time(this._time, this.zone); }, /** * Reset the time instance to epoch time */ reset: function icaltime_reset() { this.fromData(ICAL.Time.epochTime); this.zone = ICAL.Timezone.utcTimezone; }, /** * Reset the time instance to the given date/time values. * * @param {Number} year The year to set * @param {Number} month The month to set * @param {Number} day The day to set * @param {Number} hour The hour to set * @param {Number} minute The minute to set * @param {Number} second The second to set * @param {ICAL.Timezone} timezone The timezone to set */ resetTo: function icaltime_resetTo(year, month, day, hour, minute, second, timezone) { this.fromData({ year: year, month: month, day: day, hour: hour, minute: minute, second: second, zone: timezone }); }, /** * Set up the current instance from the Javascript date value. * * @param {?Date} aDate The Javascript Date to read, or null to reset * @param {Boolean} useUTC If true, the UTC values of the date will be used */ fromJSDate: function icaltime_fromJSDate(aDate, useUTC) { if (!aDate) { this.reset(); } else { if (useUTC) { this.zone = ICAL.Timezone.utcTimezone; this.year = aDate.getUTCFullYear(); this.month = aDate.getUTCMonth() + 1; this.day = aDate.getUTCDate(); this.hour = aDate.getUTCHours(); this.minute = aDate.getUTCMinutes(); this.second = aDate.getUTCSeconds(); } else { this.zone = ICAL.Timezone.localTimezone; this.year = aDate.getFullYear(); this.month = aDate.getMonth() + 1; this.day = aDate.getDate(); this.hour = aDate.getHours(); this.minute = aDate.getMinutes(); this.second = aDate.getSeconds(); } } this._cachedUnixTime = null; return this; }, /** * Sets up the current instance using members from the passed data object. * * @param {Object} aData Time initialization * @param {Number=} aData.year The year for this date * @param {Number=} aData.month The month for this date * @param {Number=} aData.day The day for this date * @param {Number=} aData.hour The hour for this date * @param {Number=} aData.minute The minute for this date * @param {Number=} aData.second The second for this date * @param {Boolean=} aData.isDate If true, the instance represents a date * (as opposed to a date-time) * @param {ICAL.Timezone=} aZone Timezone this position occurs in */ fromData: function fromData(aData, aZone) { if (aData) { for (var key in aData) { /* istanbul ignore else */ if (Object.prototype.hasOwnProperty.call(aData, key)) { // ical type cannot be set if (key === 'icaltype') continue; this[key] = aData[key]; } } } if (aZone) { this.zone = aZone; } if (aData && !("isDate" in aData)) { this.isDate = !("hour" in aData); } else if (aData && ("isDate" in aData)) { this.isDate = aData.isDate; } if (aData && "timezone" in aData) { var zone = ICAL.TimezoneService.get( aData.timezone ); this.zone = zone || ICAL.Timezone.localTimezone; } if (aData && "zone" in aData) { this.zone = aData.zone; } if (!this.zone) { this.zone = ICAL.Timezone.localTimezone; } this._cachedUnixTime = null; return this; }, /** * Calculate the day of week. * @param {ICAL.Time.weekDay=} aWeekStart * The week start weekday, defaults to SUNDAY * @return {ICAL.Time.weekDay} */ dayOfWeek: function icaltime_dayOfWeek(aWeekStart) { var firstDow = aWeekStart || ICAL.Time.SUNDAY; var dowCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + firstDow; if (dowCacheKey in ICAL.Time._dowCache) { return ICAL.Time._dowCache[dowCacheKey]; } // Using Zeller's algorithm var q = this.day; var m = this.month + (this.month < 3 ? 12 : 0); var Y = this.year - (this.month < 3 ? 1 : 0); var h = (q + Y + ICAL.helpers.trunc(((m + 1) * 26) / 10) + ICAL.helpers.trunc(Y / 4)); /* istanbul ignore else */ if (true /* gregorian */) { h += ICAL.helpers.trunc(Y / 100) * 6 + ICAL.helpers.trunc(Y / 400); } else {} // Normalize to 1 = wkst h = ((h + 7 - firstDow) % 7) + 1; ICAL.Time._dowCache[dowCacheKey] = h; return h; }, /** * Calculate the day of year. * @return {Number} */ dayOfYear: function dayOfYear() { var is_leap = (ICAL.Time.isLeapYear(this.year) ? 1 : 0); var diypm = ICAL.Time.daysInYearPassedMonth; return diypm[is_leap][this.month - 1] + this.day; }, /** * Returns a copy of the current date/time, rewound to the start of the * week. The resulting ICAL.Time instance is of icaltype date, even if this * is a date-time. * * @param {ICAL.Time.weekDay=} aWeekStart * The week start weekday, defaults to SUNDAY * @return {ICAL.Time} The start of the week (cloned) */ startOfWeek: function startOfWeek(aWeekStart) { var firstDow = aWeekStart || ICAL.Time.SUNDAY; var result = this.clone(); result.day -= ((this.dayOfWeek() + 7 - firstDow) % 7); result.isDate = true; result.hour = 0; result.minute = 0; result.second = 0; return result; }, /** * Returns a copy of the current date/time, shifted to the end of the week. * The resulting ICAL.Time instance is of icaltype date, even if this is a * date-time. * * @param {ICAL.Time.weekDay=} aWeekStart * The week start weekday, defaults to SUNDAY * @return {ICAL.Time} The end of the week (cloned) */ endOfWeek: function endOfWeek(aWeekStart) { var firstDow = aWeekStart || ICAL.Time.SUNDAY; var result = this.clone(); result.day += (7 - this.dayOfWeek() + firstDow - ICAL.Time.SUNDAY) % 7; result.isDate = true; result.hour = 0; result.minute = 0; result.second = 0; return result; }, /** * Returns a copy of the current date/time, rewound to the start of the * month. The resulting ICAL.Time instance is of icaltype date, even if * this is a date-time. * * @return {ICAL.Time} The start of the month (cloned) */ startOfMonth: function startOfMonth() { var result = this.clone(); result.day = 1; result.isDate = true; result.hour = 0; result.minute = 0; result.second = 0; return result; }, /** * Returns a copy of the current date/time, shifted to the end of the * month. The resulting ICAL.Time instance is of icaltype date, even if * this is a date-time. * * @return {ICAL.Time} The end of the month (cloned) */ endOfMonth: function endOfMonth() { var result = this.clone(); result.day = ICAL.Time.daysInMonth(result.month, result.year); result.isDate = true; result.hour = 0; result.minute = 0; result.second = 0; return result; }, /** * Returns a copy of the current date/time, rewound to the start of the * year. The resulting ICAL.Time instance is of icaltype date, even if * this is a date-time. * * @return {ICAL.Time} The start of the year (cloned) */ startOfYear: function startOfYear() { var result = this.clone(); result.day = 1; result.month = 1; result.isDate = true; result.hour = 0; result.minute = 0; result.second = 0; return result; }, /** * Returns a copy of the current date/time, shifted to the end of the * year. The resulting ICAL.Time instance is of icaltype date, even if * this is a date-time. * * @return {ICAL.Time} The end of the year (cloned) */ endOfYear: function endOfYear() { var result = this.clone(); result.day = 31; result.month = 12; result.isDate = true; result.hour = 0; result.minute = 0; result.second = 0; return result; }, /** * First calculates the start of the week, then returns the day of year for * this date. If the day falls into the previous year, the day is zero or negative. * * @param {ICAL.Time.weekDay=} aFirstDayOfWeek * The week start weekday, defaults to SUNDAY * @return {Number} The calculated day of year */ startDoyWeek: function startDoyWeek(aFirstDayOfWeek) { var firstDow = aFirstDayOfWeek || ICAL.Time.SUNDAY; var delta = this.dayOfWeek() - firstDow; if (delta < 0) delta += 7; return this.dayOfYear() - delta; }, /** * Get the dominical letter for the current year. Letters range from A - G * for common years, and AG to GF for leap years. * * @param {Number} yr The year to retrieve the letter for * @return {String} The dominical letter. */ getDominicalLetter: function() { return ICAL.Time.getDominicalLetter(this.year); }, /** * Finds the nthWeekDay relative to the current month (not day). The * returned value is a day relative the month that this month belongs to so * 1 would indicate the first of the month and 40 would indicate a day in * the following month. * * @param {Number} aDayOfWeek Day of the week see the day name constants * @param {Number} aPos Nth occurrence of a given week day values * of 1 and 0 both indicate the first weekday of that type. aPos may * be either positive or negative * * @return {Number} numeric value indicating a day relative * to the current month of this time object */ nthWeekDay: function icaltime_nthWeekDay(aDayOfWeek, aPos) { var daysInMonth = ICAL.Time.daysInMonth(this.month, this.year); var weekday; var pos = aPos; var start = 0; var otherDay = this.clone(); if (pos >= 0) { otherDay.day = 1; // because 0 means no position has been given // 1 and 0 indicate the same day. if (pos != 0) { // remove the extra numeric value pos--; } // set current start offset to current day. start = otherDay.day; // find the current day of week var startDow = otherDay.dayOfWeek(); // calculate the difference between current // day of the week and desired day of the week var offset = aDayOfWeek - startDow; // if the offset goes into the past // week we add 7 so it goes into the next // week. We only want to go forward in time here. if (offset < 0) // this is really important otherwise we would // end up with dates from in the past. offset += 7; // add offset to start so start is the same // day of the week as the desired day of week. start += offset; // because we are going to add (and multiply) // the numeric value of the day we subtract it // from the start position so not to add it twice. start -= aDayOfWeek; // set week day weekday = aDayOfWeek; } else { // then we set it to the last day in the current month otherDay.day = daysInMonth; // find the ends weekday var endDow = otherDay.dayOfWeek(); pos++; weekday = (endDow - aDayOfWeek); if (weekday < 0) { weekday += 7; } weekday = daysInMonth - weekday; } weekday += pos * 7; return start + weekday; }, /** * Checks if current time is the nth weekday, relative to the current * month. Will always return false when rule resolves outside of current * month. * * @param {ICAL.Time.weekDay} aDayOfWeek Day of week to check * @param {Number} aPos Relative position * @return {Boolean} True, if it is the nth weekday */ isNthWeekDay: function(aDayOfWeek, aPos) { var dow = this.dayOfWeek(); if (aPos === 0 && dow === aDayOfWeek) { return true; } // get pos var day = this.nthWeekDay(aDayOfWeek, aPos); if (day === this.day) { return true; } return false; }, /** * Calculates the ISO 8601 week number. The first week of a year is the * week that contains the first Thursday. The year can have 53 weeks, if * January 1st is a Friday. * * Note there are regions where the first week of the year is the one that * starts on January 1st, which may offset the week number. Also, if a * different week start is specified, this will also affect the week * number. * * @see ICAL.Time.weekOneStarts * @param {ICAL.Time.weekDay} aWeekStart The weekday the week starts with * @return {Number} The ISO week number */ weekNumber: function weekNumber(aWeekStart) { var wnCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + aWeekStart; if (wnCacheKey in ICAL.Time._wnCache) { return ICAL.Time._wnCache[wnCacheKey]; } // This function courtesty of Julian Bucknall, published under the MIT license // http://www.boyet.com/articles/publishedarticles/calculatingtheisoweeknumb.html // plus some fixes to be able to use different week starts. var week1; var dt = this.clone(); dt.isDate = true; var isoyear = this.year; if (dt.month == 12 && dt.day > 25) { week1 = ICAL.Time.weekOneStarts(isoyear + 1, aWeekStart); if (dt.compare(week1) < 0) { week1 = ICAL.Time.weekOneStarts(isoyear, aWeekStart); } else { isoyear++; } } else { week1 = ICAL.Time.weekOneStarts(isoyear, aWeekStart); if (dt.compare(week1) < 0) { week1 = ICAL.Time.weekOneStarts(--isoyear, aWeekStart); } } var daysBetween = (dt.subtractDate(week1).toSeconds() / 86400); var answer = ICAL.helpers.trunc(daysBetween / 7) + 1; ICAL.Time._wnCache[wnCacheKey] = answer; return answer; }, /** * Adds the duration to the current time. The instance is modified in * place. * * @param {ICAL.Duration} aDuration The duration to add */ addDuration: function icaltime_add(aDuration) { var mult = (aDuration.isNegative ? -1 : 1); // because of the duration optimizations it is much // more efficient to grab all the values up front // then set them directly (which will avoid a normalization call). // So we don't actually normalize until we need it. var second = this.second; var minute = this.minute; var hour = this.hour; var day = this.day; second += mult * aDuration.seconds; minute += mult * aDuration.minutes; hour += mult * aDuration.hours; day += mult * aDuration.days; day += mult * 7 * aDuration.weeks; this.second = second; this.minute = minute; this.hour = hour; this.day = day; this._cachedUnixTime = null; }, /** * Subtract the date details (_excluding_ timezone). Useful for finding * the relative difference between two time objects excluding their * timezone differences. * * @param {ICAL.Time} aDate The date to substract * @return {ICAL.Duration} The difference as a duration */ subtractDate: function icaltime_subtract(aDate) { var unixTime = this.toUnixTime() + this.utcOffset(); var other = aDate.toUnixTime() + aDate.utcOffset(); return ICAL.Duration.fromSeconds(unixTime - other); }, /** * Subtract the date details, taking timezones into account. * * @param {ICAL.Time} aDate The date to subtract * @return {ICAL.Duration} The difference in duration */ subtractDateTz: function icaltime_subtract_abs(aDate) { var unixTime = this.toUnixTime(); var other = aDate.toUnixTime(); return ICAL.Duration.fromSeconds(unixTime - other); }, /** * Compares the ICAL.Time instance with another one. * * @param {ICAL.Duration} aOther The instance to compare with * @return {Number} -1, 0 or 1 for less/equal/greater */ compare: function icaltime_compare(other) { var a = this.toUnixTime(); var b = other.toUnixTime(); if (a > b) return 1; if (b > a) return -1; return 0; }, /** * Compares only the date part of this instance with another one. * * @param {ICAL.Duration} other The instance to compare with * @param {ICAL.Timezone} tz The timezone to compare in * @return {Number} -1, 0 or 1 for less/equal/greater */ compareDateOnlyTz: function icaltime_compareDateOnlyTz(other, tz) { function cmp(attr) { return ICAL.Time._cmp_attr(a, b, attr); } var a = this.convertToZone(tz); var b = other.convertToZone(tz); var rc = 0; if ((rc = cmp("year")) != 0) return rc; if ((rc = cmp("month")) != 0) return rc; if ((rc = cmp("day")) != 0) return rc; return rc; }, /** * Convert the instance into another timezone. The returned ICAL.Time * instance is always a copy. * * @param {ICAL.Timezone} zone The zone to convert to * @return {ICAL.Time} The copy, converted to the zone */ convertToZone: function convertToZone(zone) { var copy = this.clone(); var zone_equals = (this.zone.tzid == zone.tzid); if (!this.isDate && !zone_equals) { ICAL.Timezone.convert_time(copy, this.zone, zone); } copy.zone = zone; return copy; }, /** * Calculates the UTC offset of the current date/time in the timezone it is * in. * * @return {Number} UTC offset in seconds */ utcOffset: function utc_offset() { if (this.zone == ICAL.Timezone.localTimezone || this.zone == ICAL.Timezone.utcTimezone) { return 0; } else { return this.zone.utcOffset(this); } }, /** * Returns an RFC 5545 compliant ical representation of this object. * * @return {String} ical date/date-time */ toICALString: function() { var string = this.toString(); if (string.length > 10) { return ICAL.design.icalendar.value['date-time'].toICAL(string); } else { return ICAL.design.icalendar.value.date.toICAL(string); } }, /** * The string representation of this date/time, in jCal form * (including : and - separators). * @return {String} */ toString: function toString() { var result = this.year + '-' + ICAL.helpers.pad2(this.month) + '-' + ICAL.helpers.pad2(this.day); if (!this.isDate) { result += 'T' + ICAL.helpers.pad2(this.hour) + ':' + ICAL.helpers.pad2(this.minute) + ':' + ICAL.helpers.pad2(this.second); if (this.zone === ICAL.Timezone.utcTimezone) { result += 'Z'; } } return result; }, /** * Converts the current instance to a Javascript date * @return {Date} */ toJSDate: function toJSDate() { if (this.zone == ICAL.Timezone.localTimezone) { if (this.isDate) { return new Date(this.year, this.month - 1, this.day); } else { return new Date(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, 0); } } else { return new Date(this.toUnixTime() * 1000); } }, _normalize: function icaltime_normalize() { var isDate = this._time.isDate; if (this._time.isDate) { this._time.hour = 0; this._time.minute = 0; this._time.second = 0; } this.adjust(0, 0, 0, 0); return this; }, /** * Adjust the date/time by the given offset * * @param {Number} aExtraDays The extra amount of days * @param {Number} aExtraHours The extra amount of hours * @param {Number} aExtraMinutes The extra amount of minutes * @param {Number} aExtraSeconds The extra amount of seconds * @param {Number=} aTime The time to adjust, defaults to the * current instance. */ adjust: function icaltime_adjust(aExtraDays, aExtraHours, aExtraMinutes, aExtraSeconds, aTime) { var minutesOverflow, hoursOverflow, daysOverflow = 0, yearsOverflow = 0; var second, minute, hour, day; var daysInMonth; var time = aTime || this._time; if (!time.isDate) { second = time.second + aExtraSeconds; time.second = second % 60; minutesOverflow = ICAL.helpers.trunc(second / 60); if (time.second < 0) { time.second += 60; minutesOverflow--; } minute = time.minute + aExtraMinutes + minutesOverflow; time.minute = minute % 60; hoursOverflow = ICAL.helpers.trunc(minute / 60); if (time.minute < 0) { time.minute += 60; hoursOverflow--; } hour = time.hour + aExtraHours + hoursOverflow; time.hour = hour % 24; daysOverflow = ICAL.helpers.trunc(hour / 24); if (time.hour < 0) { time.hour += 24; daysOverflow--; } } // Adjust month and year first, because we need to know what month the day // is in before adjusting it. if (time.month > 12) { yearsOverflow = ICAL.helpers.trunc((time.month - 1) / 12); } else if (time.month < 1) { yearsOverflow = ICAL.helpers.trunc(time.month / 12) - 1; } time.year += yearsOverflow; time.month -= 12 * yearsOverflow; // Now take care of the days (and adjust month if needed) day = time.day + aExtraDays + daysOverflow; if (day > 0) { for (;;) { daysInMonth = ICAL.Time.daysInMonth(time.month, time.year); if (day <= daysInMonth) { break; } time.month++; if (time.month > 12) { time.year++; time.month = 1; } day -= daysInMonth; } } else { while (day <= 0) { if (time.month == 1) { time.year--; time.month = 12; } else { time.month--; } day += ICAL.Time.daysInMonth(time.month, time.year); } } time.day = day; this._cachedUnixTime = null; return this; }, /** * Sets up the current instance from unix time, the number of seconds since * January 1st, 1970. * * @param {Number} seconds The seconds to set up with */ fromUnixTime: function fromUnixTime(seconds) { this.zone = ICAL.Timezone.utcTimezone; var epoch = ICAL.Time.epochTime.clone(); epoch.adjust(0, 0, 0, seconds); this.year = epoch.year; this.month = epoch.month; this.day = epoch.day; this.hour = epoch.hour; this.minute = epoch.minute; this.second = Math.floor(epoch.second); this._cachedUnixTime = null; }, /** * Converts the current instance to seconds since January 1st 1970. * * @return {Number} Seconds since 1970 */ toUnixTime: function toUnixTime() { if (this._cachedUnixTime !== null) { return this._cachedUnixTime; } var offset = this.utcOffset(); // we use the offset trick to ensure // that we are getting the actual UTC time var ms = Date.UTC( this.year, this.month - 1, this.day, this.hour, this.minute, this.second - offset ); // seconds this._cachedUnixTime = ms / 1000; return this._cachedUnixTime; }, /** * Converts time to into Object which can be serialized then re-created * using the constructor. * * @example * // toJSON will automatically be called * var json = JSON.stringify(mytime); * * var deserialized = JSON.parse(json); * * var time = new ICAL.Time(deserialized); * * @return {Object} */ toJSON: function() { var copy = [ 'year', 'month', 'day', 'hour', 'minute', 'second', 'isDate' ]; var result = Object.create(null); var i = 0; var len = copy.length; var prop; for (; i < len; i++) { prop = copy[i]; result[prop] = this[prop]; } if (this.zone) { result.timezone = this.zone.tzid; } return result; } }; (function setupNormalizeAttributes() { // This needs to run before any instances are created! function defineAttr(attr) { Object.defineProperty(ICAL.Time.prototype, attr, { get: function getTimeAttr() { if (this._pendingNormalization) { this._normalize(); this._pendingNormalization = false; } return this._time[attr]; }, set: function setTimeAttr(val) { // Check if isDate will be set and if was not set to normalize date. // This avoids losing days when seconds, minutes and hours are zeroed // what normalize will do when time is a date. if (attr === "isDate" && val && !this._time.isDate) { this.adjust(0, 0, 0, 0); } this._cachedUnixTime = null; this._pendingNormalization = true; this._time[attr] = val; return val; } }); } /* istanbul ignore else */ if ("defineProperty" in Object) { defineAttr("year"); defineAttr("month"); defineAttr("day"); defineAttr("hour"); defineAttr("minute"); defineAttr("second"); defineAttr("isDate"); } })(); /** * Returns the days in the given month * * @param {Number} month The month to check * @param {Number} year The year to check * @return {Number} The number of days in the month */ ICAL.Time.daysInMonth = function icaltime_daysInMonth(month, year) { var _daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var days = 30; if (month < 1 || month > 12) return days; days = _daysInMonth[month]; if (month == 2) { days += ICAL.Time.isLeapYear(year); } return days; }; /** * Checks if the year is a leap year * * @param {Number} year The year to check * @return {Boolean} True, if the year is a leap year */ ICAL.Time.isLeapYear = function isLeapYear(year) { if (year <= 1752) { return ((year % 4) == 0); } else { return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } }; /** * Create a new ICAL.Time from the day of year and year. The date is returned * in floating timezone. * * @param {Number} aDayOfYear The day of year * @param {Number} aYear The year to create the instance in * @return {ICAL.Time} The created instance with the calculated date */ ICAL.Time.fromDayOfYear = function icaltime_fromDayOfYear(aDayOfYear, aYear) { var year = aYear; var doy = aDayOfYear; var tt = new ICAL.Time(); tt.auto_normalize = false; var is_leap = (ICAL.Time.isLeapYear(year) ? 1 : 0); if (doy < 1) { year--; is_leap = (ICAL.Time.isLeapYear(year) ? 1 : 0); doy += ICAL.Time.daysInYearPassedMonth[is_leap][12]; return ICAL.Time.fromDayOfYear(doy, year); } else if (doy > ICAL.Time.daysInYearPassedMonth[is_leap][12]) { is_leap = (ICAL.Time.isLeapYear(year) ? 1 : 0); doy -= ICAL.Time.daysInYearPassedMonth[is_leap][12]; year++; return ICAL.Time.fromDayOfYear(doy, year); } tt.year = year; tt.isDate = true; for (var month = 11; month >= 0; month--) { if (doy > ICAL.Time.daysInYearPassedMonth[is_leap][month]) { tt.month = month + 1; tt.day = doy - ICAL.Time.daysInYearPassedMonth[is_leap][month]; break; } } tt.auto_normalize = true; return tt; }; /** * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02. * * @deprecated Use {@link ICAL.Time.fromDateString} instead * @param {String} str The string to create from * @return {ICAL.Time} The date/time instance */ ICAL.Time.fromStringv2 = function fromString(str) { return new ICAL.Time({ year: parseInt(str.substr(0, 4), 10), month: parseInt(str.substr(5, 2), 10), day: parseInt(str.substr(8, 2), 10), isDate: true }); }; /** * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02. * * @param {String} aValue The string to create from * @return {ICAL.Time} The date/time instance */ ICAL.Time.fromDateString = function(aValue) { // Dates should have no timezone. // Google likes to sometimes specify Z on dates // we specifically ignore that to avoid issues. // YYYY-MM-DD // 2012-10-10 return new ICAL.Time({ year: ICAL.helpers.strictParseInt(aValue.substr(0, 4)), month: ICAL.helpers.strictParseInt(aValue.substr(5, 2)), day: ICAL.helpers.strictParseInt(aValue.substr(8, 2)), isDate: true }); }; /** * Returns a new ICAL.Time instance from a date-time string, e.g * 2015-01-02T03:04:05. If a property is specified, the timezone is set up * from the property's TZID parameter. * * @param {String} aValue The string to create from * @param {ICAL.Property=} prop The property the date belongs to * @return {ICAL.Time} The date/time instance */ ICAL.Time.fromDateTimeString = function(aValue, prop) { if (aValue.length < 19) { throw new Error( 'invalid date-time value: "' + aValue + '"' ); } var zone; if (aValue[19] && aValue[19] === 'Z') { zone = 'Z'; } else if (prop) { zone = prop.getParameter('tzid'); } // 2012-10-10T10:10:10(Z)? var time = new ICAL.Time({ year: ICAL.helpers.strictParseInt(aValue.substr(0, 4)), month: ICAL.helpers.strictParseInt(aValue.substr(5, 2)), day: ICAL.helpers.strictParseInt(aValue.substr(8, 2)), hour: ICAL.helpers.strictParseInt(aValue.substr(11, 2)), minute: ICAL.helpers.strictParseInt(aValue.substr(14, 2)), second: ICAL.helpers.strictParseInt(aValue.substr(17, 2)), timezone: zone }); return time; }; /** * Returns a new ICAL.Time instance from a date or date-time string, * * @param {String} aValue The string to create from * @param {ICAL.Property=} prop The property the date belongs to * @return {ICAL.Time} The date/time instance */ ICAL.Time.fromString = function fromString(aValue, aProperty) { if (aValue.length > 10) { return ICAL.Time.fromDateTimeString(aValue, aProperty); } else { return ICAL.Time.fromDateString(aValue); } }; /** * Creates a new ICAL.Time instance from the given Javascript Date. * * @param {?Date} aDate The Javascript Date to read, or null to reset * @param {Boolean} useUTC If true, the UTC values of the date will be used */ ICAL.Time.fromJSDate = function fromJSDate(aDate, useUTC) { var tt = new ICAL.Time(); return tt.fromJSDate(aDate, useUTC); }; /** * Creates a new ICAL.Time instance from the the passed data object. * * @param {Object} aData Time initialization * @param {Number=} aData.year The year for this date * @param {Number=} aData.month The month for this date * @param {Number=} aData.day The day for this date * @param {Number=} aData.hour The hour for this date * @param {Number=} aData.minute The minute for this date * @param {Number=} aData.second The second for this date * @param {Boolean=} aData.isDate If true, the instance represents a date * (as opposed to a date-time) * @param {ICAL.Timezone=} aZone Timezone this position occurs in */ ICAL.Time.fromData = function fromData(aData, aZone) { var t = new ICAL.Time(); return t.fromData(aData, aZone); }; /** * Creates a new ICAL.Time instance from the current moment. * The instance is “floating” - has no timezone relation. * To create an instance considering the time zone, call * ICAL.Time.fromJSDate(new Date(), true) * @return {ICAL.Time} */ ICAL.Time.now = function icaltime_now() { return ICAL.Time.fromJSDate(new Date(), false); }; /** * Returns the date on which ISO week number 1 starts. * * @see ICAL.Time#weekNumber * @param {Number} aYear The year to search in * @param {ICAL.Time.weekDay=} aWeekStart The week start weekday, used for calculation. * @return {ICAL.Time} The date on which week number 1 starts */ ICAL.Time.weekOneStarts = function weekOneStarts(aYear, aWeekStart) { var t = ICAL.Time.fromData({ year: aYear, month: 1, day: 1, isDate: true }); var dow = t.dayOfWeek(); var wkst = aWeekStart || ICAL.Time.DEFAULT_WEEK_START; if (dow > ICAL.Time.THURSDAY) { t.day += 7; } if (wkst > ICAL.Time.THURSDAY) { t.day -= 7; } t.day -= dow - wkst; return t; }; /** * Get the dominical letter for the given year. Letters range from A - G for * common years, and AG to GF for leap years. * * @param {Number} yr The year to retrieve the letter for * @return {String} The dominical letter. */ ICAL.Time.getDominicalLetter = function(yr) { var LTRS = "GFEDCBA"; var dom = (yr + (yr / 4 | 0) + (yr / 400 | 0) - (yr / 100 | 0) - 1) % 7; var isLeap = ICAL.Time.isLeapYear(yr); if (isLeap) { return LTRS[(dom + 6) % 7] + LTRS[dom]; } else { return LTRS[dom]; } }; /** * January 1st, 1970 as an ICAL.Time. * @type {ICAL.Time} * @constant * @instance */ ICAL.Time.epochTime = ICAL.Time.fromData({ year: 1970, month: 1, day: 1, hour: 0, minute: 0, second: 0, isDate: false, timezone: "Z" }); ICAL.Time._cmp_attr = function _cmp_attr(a, b, attr) { if (a[attr] > b[attr]) return 1; if (a[attr] < b[attr]) return -1; return 0; }; /** * The days that have passed in the year after a given month. The array has * two members, one being an array of passed days for non-leap years, the * other analog for leap years. * @example * var isLeapYear = ICAL.Time.isLeapYear(year); * var passedDays = ICAL.Time.daysInYearPassedMonth[isLeapYear][month]; * @type {Array.>} */ ICAL.Time.daysInYearPassedMonth = [ [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365], [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366] ]; /** * The weekday, 1 = SUNDAY, 7 = SATURDAY. Access via * ICAL.Time.MONDAY, ICAL.Time.TUESDAY, ... * * @typedef {Number} weekDay * @memberof ICAL.Time */ ICAL.Time.SUNDAY = 1; ICAL.Time.MONDAY = 2; ICAL.Time.TUESDAY = 3; ICAL.Time.WEDNESDAY = 4; ICAL.Time.THURSDAY = 5; ICAL.Time.FRIDAY = 6; ICAL.Time.SATURDAY = 7; /** * The default weekday for the WKST part. * @constant * @default ICAL.Time.MONDAY */ ICAL.Time.DEFAULT_WEEK_START = ICAL.Time.MONDAY; })(); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2015 */ (function() { /** * Describes a vCard time, which has slight differences to the ICAL.Time. * Properties can be null if not specified, for example for dates with * reduced accuracy or truncation. * * Note that currently not all methods are correctly re-implemented for * VCardTime. For example, comparison will have undefined results when some * members are null. * * Also, normalization is not yet implemented for this class! * * @alias ICAL.VCardTime * @class * @extends {ICAL.Time} * @param {Object} data The data for the time instance * @param {Number=} data.year The year for this date * @param {Number=} data.month The month for this date * @param {Number=} data.day The day for this date * @param {Number=} data.hour The hour for this date * @param {Number=} data.minute The minute for this date * @param {Number=} data.second The second for this date * @param {ICAL.Timezone|ICAL.UtcOffset} zone The timezone to use * @param {String} icaltype The type for this date/time object */ ICAL.VCardTime = function(data, zone, icaltype) { this.wrappedJSObject = this; var time = this._time = Object.create(null); time.year = null; time.month = null; time.day = null; time.hour = null; time.minute = null; time.second = null; this.icaltype = icaltype || "date-and-or-time"; this.fromData(data, zone); }; ICAL.helpers.inherits(ICAL.Time, ICAL.VCardTime, /** @lends ICAL.VCardTime */ { /** * The class identifier. * @constant * @type {String} * @default "vcardtime" */ icalclass: "vcardtime", /** * The type name, to be used in the jCal object. * @type {String} * @default "date-and-or-time" */ icaltype: "date-and-or-time", /** * The timezone. This can either be floating, UTC, or an instance of * ICAL.UtcOffset. * @type {ICAL.Timezone|ICAL.UtcOFfset} */ zone: null, /** * Returns a clone of the vcard date/time object. * * @return {ICAL.VCardTime} The cloned object */ clone: function() { return new ICAL.VCardTime(this._time, this.zone, this.icaltype); }, _normalize: function() { return this; }, /** * @inheritdoc */ utcOffset: function() { if (this.zone instanceof ICAL.UtcOffset) { return this.zone.toSeconds(); } else { return ICAL.Time.prototype.utcOffset.apply(this, arguments); } }, /** * Returns an RFC 6350 compliant representation of this object. * * @return {String} vcard date/time string */ toICALString: function() { return ICAL.design.vcard.value[this.icaltype].toICAL(this.toString()); }, /** * The string representation of this date/time, in jCard form * (including : and - separators). * @return {String} */ toString: function toString() { var p2 = ICAL.helpers.pad2; var y = this.year, m = this.month, d = this.day; var h = this.hour, mm = this.minute, s = this.second; var hasYear = y !== null, hasMonth = m !== null, hasDay = d !== null; var hasHour = h !== null, hasMinute = mm !== null, hasSecond = s !== null; var datepart = (hasYear ? p2(y) + (hasMonth || hasDay ? '-' : '') : (hasMonth || hasDay ? '--' : '')) + (hasMonth ? p2(m) : '') + (hasDay ? '-' + p2(d) : ''); var timepart = (hasHour ? p2(h) : '-') + (hasHour && hasMinute ? ':' : '') + (hasMinute ? p2(mm) : '') + (!hasHour && !hasMinute ? '-' : '') + (hasMinute && hasSecond ? ':' : '') + (hasSecond ? p2(s) : ''); var zone; if (this.zone === ICAL.Timezone.utcTimezone) { zone = 'Z'; } else if (this.zone instanceof ICAL.UtcOffset) { zone = this.zone.toString(); } else if (this.zone === ICAL.Timezone.localTimezone) { zone = ''; } else if (this.zone instanceof ICAL.Timezone) { var offset = ICAL.UtcOffset.fromSeconds(this.zone.utcOffset(this)); zone = offset.toString(); } else { zone = ''; } switch (this.icaltype) { case "time": return timepart + zone; case "date-and-or-time": case "date-time": return datepart + (timepart == '--' ? '' : 'T' + timepart + zone); case "date": return datepart; } return null; } }); /** * Returns a new ICAL.VCardTime instance from a date and/or time string. * * @param {String} aValue The string to create from * @param {String} aIcalType The type for this instance, e.g. date-and-or-time * @return {ICAL.VCardTime} The date/time instance */ ICAL.VCardTime.fromDateAndOrTimeString = function(aValue, aIcalType) { function part(v, s, e) { return v ? ICAL.helpers.strictParseInt(v.substr(s, e)) : null; } var parts = aValue.split('T'); var dt = parts[0], tmz = parts[1]; var splitzone = tmz ? ICAL.design.vcard.value.time._splitZone(tmz) : []; var zone = splitzone[0], tm = splitzone[1]; var stoi = ICAL.helpers.strictParseInt; var dtlen = dt ? dt.length : 0; var tmlen = tm ? tm.length : 0; var hasDashDate = dt && dt[0] == '-' && dt[1] == '-'; var hasDashTime = tm && tm[0] == '-'; var o = { year: hasDashDate ? null : part(dt, 0, 4), month: hasDashDate && (dtlen == 4 || dtlen == 7) ? part(dt, 2, 2) : dtlen == 7 ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 5, 2) : null, day: dtlen == 5 ? part(dt, 3, 2) : dtlen == 7 && hasDashDate ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 8, 2) : null, hour: hasDashTime ? null : part(tm, 0, 2), minute: hasDashTime && tmlen == 3 ? part(tm, 1, 2) : tmlen > 4 ? hasDashTime ? part(tm, 1, 2) : part(tm, 3, 2) : null, second: tmlen == 4 ? part(tm, 2, 2) : tmlen == 6 ? part(tm, 4, 2) : tmlen == 8 ? part(tm, 6, 2) : null }; if (zone == 'Z') { zone = ICAL.Timezone.utcTimezone; } else if (zone && zone[3] == ':') { zone = ICAL.UtcOffset.fromString(zone); } else { zone = null; } return new ICAL.VCardTime(o, zone, aIcalType); }; })(); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ (function() { var DOW_MAP = { SU: ICAL.Time.SUNDAY, MO: ICAL.Time.MONDAY, TU: ICAL.Time.TUESDAY, WE: ICAL.Time.WEDNESDAY, TH: ICAL.Time.THURSDAY, FR: ICAL.Time.FRIDAY, SA: ICAL.Time.SATURDAY }; var REVERSE_DOW_MAP = {}; for (var key in DOW_MAP) { /* istanbul ignore else */ if (DOW_MAP.hasOwnProperty(key)) { REVERSE_DOW_MAP[DOW_MAP[key]] = key; } } var COPY_PARTS = ["BYSECOND", "BYMINUTE", "BYHOUR", "BYDAY", "BYMONTHDAY", "BYYEARDAY", "BYWEEKNO", "BYMONTH", "BYSETPOS"]; /** * @classdesc * This class represents the "recur" value type, with various calculation * and manipulation methods. * * @class * @alias ICAL.Recur * @param {Object} data An object with members of the recurrence * @param {ICAL.Recur.frequencyValues=} data.freq The frequency value * @param {Number=} data.interval The INTERVAL value * @param {ICAL.Time.weekDay=} data.wkst The week start value * @param {ICAL.Time=} data.until The end of the recurrence set * @param {Number=} data.count The number of occurrences * @param {Array.=} data.bysecond The seconds for the BYSECOND part * @param {Array.=} data.byminute The minutes for the BYMINUTE part * @param {Array.=} data.byhour The hours for the BYHOUR part * @param {Array.=} data.byday The BYDAY values * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part * @param {Array.=} data.byyearday The days for the BYYEARDAY part * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part * @param {Array.=} data.bymonth The month for the BYMONTH part * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part */ ICAL.Recur = function icalrecur(data) { this.wrappedJSObject = this; this.parts = {}; if (data && typeof(data) === 'object') { this.fromData(data); } }; ICAL.Recur.prototype = { /** * An object holding the BY-parts of the recurrence rule * @type {Object} */ parts: null, /** * The interval value for the recurrence rule. * @type {Number} */ interval: 1, /** * The week start day * * @type {ICAL.Time.weekDay} * @default ICAL.Time.MONDAY */ wkst: ICAL.Time.MONDAY, /** * The end of the recurrence * @type {?ICAL.Time} */ until: null, /** * The maximum number of occurrences * @type {?Number} */ count: null, /** * The frequency value. * @type {ICAL.Recur.frequencyValues} */ freq: null, /** * The class identifier. * @constant * @type {String} * @default "icalrecur" */ icalclass: "icalrecur", /** * The type name, to be used in the jCal object. * @constant * @type {String} * @default "recur" */ icaltype: "recur", /** * Create a new iterator for this recurrence rule. The passed start date * must be the start date of the event, not the start of the range to * search in. * * @example * var recur = comp.getFirstPropertyValue('rrule'); * var dtstart = comp.getFirstPropertyValue('dtstart'); * var iter = recur.iterator(dtstart); * for (var next = iter.next(); next; next = iter.next()) { * if (next.compare(rangeStart) < 0) { * continue; * } * console.log(next.toString()); * } * * @param {ICAL.Time} aStart The item's start date * @return {ICAL.RecurIterator} The recurrence iterator */ iterator: function(aStart) { return new ICAL.RecurIterator({ rule: this, dtstart: aStart }); }, /** * Returns a clone of the recurrence object. * * @return {ICAL.Recur} The cloned object */ clone: function clone() { return new ICAL.Recur(this.toJSON()); }, /** * Checks if the current rule is finite, i.e. has a count or until part. * * @return {Boolean} True, if the rule is finite */ isFinite: function isfinite() { return !!(this.count || this.until); }, /** * Checks if the current rule has a count part, and not limited by an until * part. * * @return {Boolean} True, if the rule is by count */ isByCount: function isbycount() { return !!(this.count && !this.until); }, /** * Adds a component (part) to the recurrence rule. This is not a component * in the sense of {@link ICAL.Component}, but a part of the recurrence * rule, i.e. BYMONTH. * * @param {String} aType The name of the component part * @param {Array|String} aValue The component value */ addComponent: function addPart(aType, aValue) { var ucname = aType.toUpperCase(); if (ucname in this.parts) { this.parts[ucname].push(aValue); } else { this.parts[ucname] = [aValue]; } }, /** * Sets the component value for the given by-part. * * @param {String} aType The component part name * @param {Array} aValues The component values */ setComponent: function setComponent(aType, aValues) { this.parts[aType.toUpperCase()] = aValues.slice(); }, /** * Gets (a copy) of the requested component value. * * @param {String} aType The component part name * @return {Array} The component part value */ getComponent: function getComponent(aType) { var ucname = aType.toUpperCase(); return (ucname in this.parts ? this.parts[ucname].slice() : []); }, /** * Retrieves the next occurrence after the given recurrence id. See the * guide on {@tutorial terminology} for more details. * * NOTE: Currently, this method iterates all occurrences from the start * date. It should not be called in a loop for performance reasons. If you * would like to get more than one occurrence, you can iterate the * occurrences manually, see the example on the * {@link ICAL.Recur#iterator iterator} method. * * @param {ICAL.Time} aStartTime The start of the event series * @param {ICAL.Time} aRecurrenceId The date of the last occurrence * @return {ICAL.Time} The next occurrence after */ getNextOccurrence: function getNextOccurrence(aStartTime, aRecurrenceId) { var iter = this.iterator(aStartTime); var next, cdt; do { next = iter.next(); } while (next && next.compare(aRecurrenceId) <= 0); if (next && aRecurrenceId.zone) { next.zone = aRecurrenceId.zone; } return next; }, /** * Sets up the current instance using members from the passed data object. * * @param {Object} data An object with members of the recurrence * @param {ICAL.Recur.frequencyValues=} data.freq The frequency value * @param {Number=} data.interval The INTERVAL value * @param {ICAL.Time.weekDay=} data.wkst The week start value * @param {ICAL.Time=} data.until The end of the recurrence set * @param {Number=} data.count The number of occurrences * @param {Array.=} data.bysecond The seconds for the BYSECOND part * @param {Array.=} data.byminute The minutes for the BYMINUTE part * @param {Array.=} data.byhour The hours for the BYHOUR part * @param {Array.=} data.byday The BYDAY values * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part * @param {Array.=} data.byyearday The days for the BYYEARDAY part * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part * @param {Array.=} data.bymonth The month for the BYMONTH part * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part */ fromData: function(data) { for (var key in data) { var uckey = key.toUpperCase(); if (uckey in partDesign) { if (Array.isArray(data[key])) { this.parts[uckey] = data[key]; } else { this.parts[uckey] = [data[key]]; } } else { this[key] = data[key]; } } if (this.interval && typeof this.interval != "number") { optionDesign.INTERVAL(this.interval, this); } if (this.wkst && typeof this.wkst != "number") { this.wkst = ICAL.Recur.icalDayToNumericDay(this.wkst); } if (this.until && !(this.until instanceof ICAL.Time)) { this.until = ICAL.Time.fromString(this.until); } }, /** * The jCal representation of this recurrence type. * @return {Object} */ toJSON: function() { var res = Object.create(null); res.freq = this.freq; if (this.count) { res.count = this.count; } if (this.interval > 1) { res.interval = this.interval; } for (var k in this.parts) { /* istanbul ignore if */ if (!this.parts.hasOwnProperty(k)) { continue; } var kparts = this.parts[k]; if (Array.isArray(kparts) && kparts.length == 1) { res[k.toLowerCase()] = kparts[0]; } else { res[k.toLowerCase()] = ICAL.helpers.clone(this.parts[k]); } } if (this.until) { res.until = this.until.toString(); } if ('wkst' in this && this.wkst !== ICAL.Time.DEFAULT_WEEK_START) { res.wkst = ICAL.Recur.numericDayToIcalDay(this.wkst); } return res; }, /** * The string representation of this recurrence rule. * @return {String} */ toString: function icalrecur_toString() { // TODO retain order var str = "FREQ=" + this.freq; if (this.count) { str += ";COUNT=" + this.count; } if (this.interval > 1) { str += ";INTERVAL=" + this.interval; } for (var k in this.parts) { /* istanbul ignore else */ if (this.parts.hasOwnProperty(k)) { str += ";" + k + "=" + this.parts[k]; } } if (this.until) { str += ';UNTIL=' + this.until.toICALString(); } if ('wkst' in this && this.wkst !== ICAL.Time.DEFAULT_WEEK_START) { str += ';WKST=' + ICAL.Recur.numericDayToIcalDay(this.wkst); } return str; } }; function parseNumericValue(type, min, max, value) { var result = value; if (value[0] === '+') { result = value.substr(1); } result = ICAL.helpers.strictParseInt(result); if (min !== undefined && value < min) { throw new Error( type + ': invalid value "' + value + '" must be > ' + min ); } if (max !== undefined && value > max) { throw new Error( type + ': invalid value "' + value + '" must be < ' + min ); } return result; } /** * Convert an ical representation of a day (SU, MO, etc..) * into a numeric value of that day. * * @param {String} string The iCalendar day name * @param {ICAL.Time.weekDay=} aWeekStart * The week start weekday, defaults to SUNDAY * @return {Number} Numeric value of given day */ ICAL.Recur.icalDayToNumericDay = function toNumericDay(string, aWeekStart) { //XXX: this is here so we can deal // with possibly invalid string values. var firstDow = aWeekStart || ICAL.Time.SUNDAY; return ((DOW_MAP[string] - firstDow + 7) % 7) + 1; }; /** * Convert a numeric day value into its ical representation (SU, MO, etc..) * * @param {Number} num Numeric value of given day * @param {ICAL.Time.weekDay=} aWeekStart * The week start weekday, defaults to SUNDAY * @return {String} The ICAL day value, e.g SU,MO,... */ ICAL.Recur.numericDayToIcalDay = function toIcalDay(num, aWeekStart) { //XXX: this is here so we can deal with possibly invalid number values. // Also, this allows consistent mapping between day numbers and day // names for external users. var firstDow = aWeekStart || ICAL.Time.SUNDAY; var dow = (num + firstDow - ICAL.Time.SUNDAY); if (dow > 7) { dow -= 7; } return REVERSE_DOW_MAP[dow]; }; var VALID_DAY_NAMES = /^(SU|MO|TU|WE|TH|FR|SA)$/; var VALID_BYDAY_PART = /^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/; /** * Possible frequency values for the FREQ part * (YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY) * * @typedef {String} frequencyValues * @memberof ICAL.Recur */ var ALLOWED_FREQ = ['SECONDLY', 'MINUTELY', 'HOURLY', 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY']; var optionDesign = { FREQ: function(value, dict, fmtIcal) { // yes this is actually equal or faster then regex. // upside here is we can enumerate the valid values. if (ALLOWED_FREQ.indexOf(value) !== -1) { dict.freq = value; } else { throw new Error( 'invalid frequency "' + value + '" expected: "' + ALLOWED_FREQ.join(', ') + '"' ); } }, COUNT: function(value, dict, fmtIcal) { dict.count = ICAL.helpers.strictParseInt(value); }, INTERVAL: function(value, dict, fmtIcal) { dict.interval = ICAL.helpers.strictParseInt(value); if (dict.interval < 1) { // 0 or negative values are not allowed, some engines seem to generate // it though. Assume 1 instead. dict.interval = 1; } }, UNTIL: function(value, dict, fmtIcal) { if (value.length > 10) { dict.until = ICAL.design.icalendar.value['date-time'].fromICAL(value); } else { dict.until = ICAL.design.icalendar.value.date.fromICAL(value); } if (!fmtIcal) { dict.until = ICAL.Time.fromString(dict.until); } }, WKST: function(value, dict, fmtIcal) { if (VALID_DAY_NAMES.test(value)) { dict.wkst = ICAL.Recur.icalDayToNumericDay(value); } else { throw new Error('invalid WKST value "' + value + '"'); } } }; var partDesign = { BYSECOND: parseNumericValue.bind(this, 'BYSECOND', 0, 60), BYMINUTE: parseNumericValue.bind(this, 'BYMINUTE', 0, 59), BYHOUR: parseNumericValue.bind(this, 'BYHOUR', 0, 23), BYDAY: function(value) { if (VALID_BYDAY_PART.test(value)) { return value; } else { throw new Error('invalid BYDAY value "' + value + '"'); } }, BYMONTHDAY: parseNumericValue.bind(this, 'BYMONTHDAY', -31, 31), BYYEARDAY: parseNumericValue.bind(this, 'BYYEARDAY', -366, 366), BYWEEKNO: parseNumericValue.bind(this, 'BYWEEKNO', -53, 53), BYMONTH: parseNumericValue.bind(this, 'BYMONTH', 1, 12), BYSETPOS: parseNumericValue.bind(this, 'BYSETPOS', -366, 366) }; /** * Creates a new {@link ICAL.Recur} instance from the passed string. * * @param {String} string The string to parse * @return {ICAL.Recur} The created recurrence instance */ ICAL.Recur.fromString = function(string) { var data = ICAL.Recur._stringToData(string, false); return new ICAL.Recur(data); }; /** * Creates a new {@link ICAL.Recur} instance using members from the passed * data object. * * @param {Object} aData An object with members of the recurrence * @param {ICAL.Recur.frequencyValues=} aData.freq The frequency value * @param {Number=} aData.interval The INTERVAL value * @param {ICAL.Time.weekDay=} aData.wkst The week start value * @param {ICAL.Time=} aData.until The end of the recurrence set * @param {Number=} aData.count The number of occurrences * @param {Array.=} aData.bysecond The seconds for the BYSECOND part * @param {Array.=} aData.byminute The minutes for the BYMINUTE part * @param {Array.=} aData.byhour The hours for the BYHOUR part * @param {Array.=} aData.byday The BYDAY values * @param {Array.=} aData.bymonthday The days for the BYMONTHDAY part * @param {Array.=} aData.byyearday The days for the BYYEARDAY part * @param {Array.=} aData.byweekno The weeks for the BYWEEKNO part * @param {Array.=} aData.bymonth The month for the BYMONTH part * @param {Array.=} aData.bysetpos The positionals for the BYSETPOS part */ ICAL.Recur.fromData = function(aData) { return new ICAL.Recur(aData); }; /** * Converts a recurrence string to a data object, suitable for the fromData * method. * * @param {String} string The string to parse * @param {Boolean} fmtIcal If true, the string is considered to be an * iCalendar string * @return {ICAL.Recur} The recurrence instance */ ICAL.Recur._stringToData = function(string, fmtIcal) { var dict = Object.create(null); // split is slower in FF but fast enough. // v8 however this is faster then manual split? var values = string.split(';'); var len = values.length; for (var i = 0; i < len; i++) { var parts = values[i].split('='); var ucname = parts[0].toUpperCase(); var lcname = parts[0].toLowerCase(); var name = (fmtIcal ? lcname : ucname); var value = parts[1]; if (ucname in partDesign) { var partArr = value.split(','); var partArrIdx = 0; var partArrLen = partArr.length; for (; partArrIdx < partArrLen; partArrIdx++) { partArr[partArrIdx] = partDesign[ucname](partArr[partArrIdx]); } dict[name] = (partArr.length == 1 ? partArr[0] : partArr); } else if (ucname in optionDesign) { optionDesign[ucname](value, dict, fmtIcal); } else { // Don't swallow unknown values. Just set them as they are. dict[lcname] = value; } } return dict; }; })(); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.RecurIterator = (function() { /** * @classdesc * An iterator for a single recurrence rule. This class usually doesn't have * to be instanciated directly, the convenience method * {@link ICAL.Recur#iterator} can be used. * * @description * The options object may contain additional members when resuming iteration from a previous run * * @description * The options object may contain additional members when resuming iteration * from a previous run. * * @class * @alias ICAL.RecurIterator * @param {Object} options The iterator options * @param {ICAL.Recur} options.rule The rule to iterate. * @param {ICAL.Time} options.dtstart The start date of the event. * @param {Boolean=} options.initialized When true, assume that options are * from a previously constructed iterator. Initialization will not be * repeated. */ function icalrecur_iterator(options) { this.fromData(options); } icalrecur_iterator.prototype = { /** * True when iteration is finished. * @type {Boolean} */ completed: false, /** * The rule that is being iterated * @type {ICAL.Recur} */ rule: null, /** * The start date of the event being iterated. * @type {ICAL.Time} */ dtstart: null, /** * The last occurrence that was returned from the * {@link ICAL.RecurIterator#next} method. * @type {ICAL.Time} */ last: null, /** * The sequence number from the occurrence * @type {Number} */ occurrence_number: 0, /** * The indices used for the {@link ICAL.RecurIterator#by_data} object. * @type {Object} * @private */ by_indices: null, /** * If true, the iterator has already been initialized * @type {Boolean} * @private */ initialized: false, /** * The initializd by-data. * @type {Object} * @private */ by_data: null, /** * The expanded yeardays * @type {Array} * @private */ days: null, /** * The index in the {@link ICAL.RecurIterator#days} array. * @type {Number} * @private */ days_index: 0, /** * Initialize the recurrence iterator from the passed data object. This * method is usually not called directly, you can initialize the iterator * through the constructor. * * @param {Object} options The iterator options * @param {ICAL.Recur} options.rule The rule to iterate. * @param {ICAL.Time} options.dtstart The start date of the event. * @param {Boolean=} options.initialized When true, assume that options are * from a previously constructed iterator. Initialization will not be * repeated. */ fromData: function(options) { this.rule = ICAL.helpers.formatClassType(options.rule, ICAL.Recur); if (!this.rule) { throw new Error('iterator requires a (ICAL.Recur) rule'); } this.dtstart = ICAL.helpers.formatClassType(options.dtstart, ICAL.Time); if (!this.dtstart) { throw new Error('iterator requires a (ICAL.Time) dtstart'); } if (options.by_data) { this.by_data = options.by_data; } else { this.by_data = ICAL.helpers.clone(this.rule.parts, true); } if (options.occurrence_number) this.occurrence_number = options.occurrence_number; this.days = options.days || []; if (options.last) { this.last = ICAL.helpers.formatClassType(options.last, ICAL.Time); } this.by_indices = options.by_indices; if (!this.by_indices) { this.by_indices = { "BYSECOND": 0, "BYMINUTE": 0, "BYHOUR": 0, "BYDAY": 0, "BYMONTH": 0, "BYWEEKNO": 0, "BYMONTHDAY": 0 }; } this.initialized = options.initialized || false; if (!this.initialized) { this.init(); } }, /** * Intialize the iterator * @private */ init: function icalrecur_iterator_init() { this.initialized = true; this.last = this.dtstart.clone(); var parts = this.by_data; if ("BYDAY" in parts) { // libical does this earlier when the rule is loaded, but we postpone to // now so we can preserve the original order. this.sort_byday_rules(parts.BYDAY); } // If the BYYEARDAY appares, no other date rule part may appear if ("BYYEARDAY" in parts) { if ("BYMONTH" in parts || "BYWEEKNO" in parts || "BYMONTHDAY" in parts || "BYDAY" in parts) { throw new Error("Invalid BYYEARDAY rule"); } } // BYWEEKNO and BYMONTHDAY rule parts may not both appear if ("BYWEEKNO" in parts && "BYMONTHDAY" in parts) { throw new Error("BYWEEKNO does not fit to BYMONTHDAY"); } // For MONTHLY recurrences (FREQ=MONTHLY) neither BYYEARDAY nor // BYWEEKNO may appear. if (this.rule.freq == "MONTHLY" && ("BYYEARDAY" in parts || "BYWEEKNO" in parts)) { throw new Error("For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear"); } // For WEEKLY recurrences (FREQ=WEEKLY) neither BYMONTHDAY nor // BYYEARDAY may appear. if (this.rule.freq == "WEEKLY" && ("BYYEARDAY" in parts || "BYMONTHDAY" in parts)) { throw new Error("For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear"); } // BYYEARDAY may only appear in YEARLY rules if (this.rule.freq != "YEARLY" && "BYYEARDAY" in parts) { throw new Error("BYYEARDAY may only appear in YEARLY rules"); } this.last.second = this.setup_defaults("BYSECOND", "SECONDLY", this.dtstart.second); this.last.minute = this.setup_defaults("BYMINUTE", "MINUTELY", this.dtstart.minute); this.last.hour = this.setup_defaults("BYHOUR", "HOURLY", this.dtstart.hour); this.last.day = this.setup_defaults("BYMONTHDAY", "DAILY", this.dtstart.day); this.last.month = this.setup_defaults("BYMONTH", "MONTHLY", this.dtstart.month); if (this.rule.freq == "WEEKLY") { if ("BYDAY" in parts) { var bydayParts = this.ruleDayOfWeek(parts.BYDAY[0], this.rule.wkst); var pos = bydayParts[0]; var dow = bydayParts[1]; var wkdy = dow - this.last.dayOfWeek(this.rule.wkst); if ((this.last.dayOfWeek(this.rule.wkst) < dow && wkdy >= 0) || wkdy < 0) { // Initial time is after first day of BYDAY data this.last.day += wkdy; } } else { var dayName = ICAL.Recur.numericDayToIcalDay(this.dtstart.dayOfWeek()); parts.BYDAY = [dayName]; } } if (this.rule.freq == "YEARLY") { for (;;) { this.expand_year_days(this.last.year); if (this.days.length > 0) { break; } this.increment_year(this.rule.interval); } this._nextByYearDay(); } if (this.rule.freq == "MONTHLY" && this.has_by_data("BYDAY")) { var tempLast = null; var initLast = this.last.clone(); var daysInMonth = ICAL.Time.daysInMonth(this.last.month, this.last.year); // Check every weekday in BYDAY with relative dow and pos. for (var i in this.by_data.BYDAY) { /* istanbul ignore if */ if (!this.by_data.BYDAY.hasOwnProperty(i)) { continue; } this.last = initLast.clone(); var bydayParts = this.ruleDayOfWeek(this.by_data.BYDAY[i]); var pos = bydayParts[0]; var dow = bydayParts[1]; var dayOfMonth = this.last.nthWeekDay(dow, pos); // If |pos| >= 6, the byday is invalid for a monthly rule. if (pos >= 6 || pos <= -6) { throw new Error("Malformed values in BYDAY part"); } // If a Byday with pos=+/-5 is not in the current month it // must be searched in the next months. if (dayOfMonth > daysInMonth || dayOfMonth <= 0) { // Skip if we have already found a "last" in this month. if (tempLast && tempLast.month == initLast.month) { continue; } while (dayOfMonth > daysInMonth || dayOfMonth <= 0) { this.increment_month(); daysInMonth = ICAL.Time.daysInMonth(this.last.month, this.last.year); dayOfMonth = this.last.nthWeekDay(dow, pos); } } this.last.day = dayOfMonth; if (!tempLast || this.last.compare(tempLast) < 0) { tempLast = this.last.clone(); } } this.last = tempLast.clone(); //XXX: This feels like a hack, but we need to initialize // the BYMONTHDAY case correctly and byDayAndMonthDay handles // this case. It accepts a special flag which will avoid incrementing // the initial value without the flag days that match the start time // would be missed. if (this.has_by_data('BYMONTHDAY')) { this._byDayAndMonthDay(true); } if (this.last.day > daysInMonth || this.last.day == 0) { throw new Error("Malformed values in BYDAY part"); } } else if (this.has_by_data("BYMONTHDAY")) { if (this.last.day < 0) { var daysInMonth = ICAL.Time.daysInMonth(this.last.month, this.last.year); this.last.day = daysInMonth + this.last.day + 1; } } }, /** * Retrieve the next occurrence from the iterator. * @return {ICAL.Time} */ next: function icalrecur_iterator_next() { var before = (this.last ? this.last.clone() : null); if ((this.rule.count && this.occurrence_number >= this.rule.count) || (this.rule.until && this.last.compare(this.rule.until) > 0)) { //XXX: right now this is just a flag and has no impact // we can simplify the above case to check for completed later. this.completed = true; return null; } if (this.occurrence_number == 0 && this.last.compare(this.dtstart) >= 0) { // First of all, give the instance that was initialized this.occurrence_number++; return this.last; } var valid; do { valid = 1; switch (this.rule.freq) { case "SECONDLY": this.next_second(); break; case "MINUTELY": this.next_minute(); break; case "HOURLY": this.next_hour(); break; case "DAILY": this.next_day(); break; case "WEEKLY": this.next_week(); break; case "MONTHLY": valid = this.next_month(); break; case "YEARLY": this.next_year(); break; default: return null; } } while (!this.check_contracting_rules() || this.last.compare(this.dtstart) < 0 || !valid); // TODO is this valid? if (this.last.compare(before) == 0) { throw new Error("Same occurrence found twice, protecting " + "you from death by recursion"); } if (this.rule.until && this.last.compare(this.rule.until) > 0) { this.completed = true; return null; } else { this.occurrence_number++; return this.last; } }, next_second: function next_second() { return this.next_generic("BYSECOND", "SECONDLY", "second", "minute"); }, increment_second: function increment_second(inc) { return this.increment_generic(inc, "second", 60, "minute"); }, next_minute: function next_minute() { return this.next_generic("BYMINUTE", "MINUTELY", "minute", "hour", "next_second"); }, increment_minute: function increment_minute(inc) { return this.increment_generic(inc, "minute", 60, "hour"); }, next_hour: function next_hour() { return this.next_generic("BYHOUR", "HOURLY", "hour", "monthday", "next_minute"); }, increment_hour: function increment_hour(inc) { this.increment_generic(inc, "hour", 24, "monthday"); }, next_day: function next_day() { var has_by_day = ("BYDAY" in this.by_data); var this_freq = (this.rule.freq == "DAILY"); if (this.next_hour() == 0) { return 0; } if (this_freq) { this.increment_monthday(this.rule.interval); } else { this.increment_monthday(1); } return 0; }, next_week: function next_week() { var end_of_data = 0; if (this.next_weekday_by_week() == 0) { return end_of_data; } if (this.has_by_data("BYWEEKNO")) { var idx = ++this.by_indices.BYWEEKNO; if (this.by_indices.BYWEEKNO == this.by_data.BYWEEKNO.length) { this.by_indices.BYWEEKNO = 0; end_of_data = 1; } // HACK should be first month of the year this.last.month = 1; this.last.day = 1; var week_no = this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO]; this.last.day += 7 * week_no; if (end_of_data) { this.increment_year(1); } } else { // Jump to the next week this.increment_monthday(7 * this.rule.interval); } return end_of_data; }, /** * Normalize each by day rule for a given year/month. * Takes into account ordering and negative rules * * @private * @param {Number} year Current year. * @param {Number} month Current month. * @param {Array} rules Array of rules. * * @return {Array} sorted and normalized rules. * Negative rules will be expanded to their * correct positive values for easier processing. */ normalizeByMonthDayRules: function(year, month, rules) { var daysInMonth = ICAL.Time.daysInMonth(month, year); // XXX: This is probably bad for performance to allocate // a new array for each month we scan, if possible // we should try to optimize this... var newRules = []; var ruleIdx = 0; var len = rules.length; var rule; for (; ruleIdx < len; ruleIdx++) { rule = rules[ruleIdx]; // if this rule falls outside of given // month discard it. if (Math.abs(rule) > daysInMonth) { continue; } // negative case if (rule < 0) { // we add (not subtract it is a negative number) // one from the rule because 1 === last day of month rule = daysInMonth + (rule + 1); } else if (rule === 0) { // skip zero: it is invalid. continue; } // only add unique items... if (newRules.indexOf(rule) === -1) { newRules.push(rule); } } // unique and sort return newRules.sort(function(a, b) { return a - b; }); }, /** * NOTES: * We are given a list of dates in the month (BYMONTHDAY) (23, etc..) * Also we are given a list of days (BYDAY) (MO, 2SU, etc..) when * both conditions match a given date (this.last.day) iteration stops. * * @private * @param {Boolean=} isInit When given true will not increment the * current day (this.last). */ _byDayAndMonthDay: function(isInit) { var byMonthDay; // setup in initMonth var byDay = this.by_data.BYDAY; var date; var dateIdx = 0; var dateLen; // setup in initMonth var dayLen = byDay.length; // we are not valid by default var dataIsValid = 0; var daysInMonth; var self = this; // we need a copy of this, because a DateTime gets normalized // automatically if the day is out of range. At some points we // set the last day to 0 to start counting. var lastDay = this.last.day; function initMonth() { daysInMonth = ICAL.Time.daysInMonth( self.last.month, self.last.year ); byMonthDay = self.normalizeByMonthDayRules( self.last.year, self.last.month, self.by_data.BYMONTHDAY ); dateLen = byMonthDay.length; // For the case of more than one occurrence in one month // we have to be sure to start searching after the last // found date or at the last BYMONTHDAY, unless we are // initializing the iterator because in this case we have // to consider the last found date too. while (byMonthDay[dateIdx] <= lastDay && !(isInit && byMonthDay[dateIdx] == lastDay) && dateIdx < dateLen - 1) { dateIdx++; } } function nextMonth() { // since the day is incremented at the start // of the loop below, we need to start at 0 lastDay = 0; self.increment_month(); dateIdx = 0; initMonth(); } initMonth(); // should come after initMonth if (isInit) { lastDay -= 1; } // Use a counter to avoid an infinite loop with malformed rules. // Stop checking after 4 years so we consider also a leap year. var monthsCounter = 48; while (!dataIsValid && monthsCounter) { monthsCounter--; // increment the current date. This is really // important otherwise we may fall into the infinite // loop trap. The initial date takes care of the case // where the current date is the date we are looking // for. date = lastDay + 1; if (date > daysInMonth) { nextMonth(); continue; } // find next date var next = byMonthDay[dateIdx++]; // this logic is dependant on the BYMONTHDAYS // being in order (which is done by #normalizeByMonthDayRules) if (next >= date) { // if the next month day is in the future jump to it. lastDay = next; } else { // in this case the 'next' monthday has past // we must move to the month. nextMonth(); continue; } // Now we can loop through the day rules to see // if one matches the current month date. for (var dayIdx = 0; dayIdx < dayLen; dayIdx++) { var parts = this.ruleDayOfWeek(byDay[dayIdx]); var pos = parts[0]; var dow = parts[1]; this.last.day = lastDay; if (this.last.isNthWeekDay(dow, pos)) { // when we find the valid one we can mark // the conditions as met and break the loop. // (Because we have this condition above // it will also break the parent loop). dataIsValid = 1; break; } } // It is completely possible that the combination // cannot be matched in the current month. // When we reach the end of possible combinations // in the current month we iterate to the next one. // since dateIdx is incremented right after getting // "next", we don't need dateLen -1 here. if (!dataIsValid && dateIdx === dateLen) { nextMonth(); continue; } } if (monthsCounter <= 0) { // Checked 4 years without finding a Byday that matches // a Bymonthday. Maybe the rule is not correct. throw new Error("Malformed values in BYDAY combined with BYMONTHDAY parts"); } return dataIsValid; }, next_month: function next_month() { var this_freq = (this.rule.freq == "MONTHLY"); var data_valid = 1; if (this.next_hour() == 0) { return data_valid; } if (this.has_by_data("BYDAY") && this.has_by_data("BYMONTHDAY")) { data_valid = this._byDayAndMonthDay(); } else if (this.has_by_data("BYDAY")) { var daysInMonth = ICAL.Time.daysInMonth(this.last.month, this.last.year); var setpos = 0; var setpos_total = 0; if (this.has_by_data("BYSETPOS")) { var last_day = this.last.day; for (var day = 1; day <= daysInMonth; day++) { this.last.day = day; if (this.is_day_in_byday(this.last)) { setpos_total++; if (day <= last_day) { setpos++; } } } this.last.day = last_day; } data_valid = 0; for (var day = this.last.day + 1; day <= daysInMonth; day++) { this.last.day = day; if (this.is_day_in_byday(this.last)) { if (!this.has_by_data("BYSETPOS") || this.check_set_position(++setpos) || this.check_set_position(setpos - setpos_total - 1)) { data_valid = 1; break; } } } if (day > daysInMonth) { this.last.day = 1; this.increment_month(); if (this.is_day_in_byday(this.last)) { if (!this.has_by_data("BYSETPOS") || this.check_set_position(1)) { data_valid = 1; } } else { data_valid = 0; } } } else if (this.has_by_data("BYMONTHDAY")) { this.by_indices.BYMONTHDAY++; if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) { this.by_indices.BYMONTHDAY = 0; this.increment_month(); } var daysInMonth = ICAL.Time.daysInMonth(this.last.month, this.last.year); var day = this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY]; if (day < 0) { day = daysInMonth + day + 1; } if (day > daysInMonth) { this.last.day = 1; data_valid = this.is_day_in_byday(this.last); } else { this.last.day = day; } } else { this.increment_month(); var daysInMonth = ICAL.Time.daysInMonth(this.last.month, this.last.year); if (this.by_data.BYMONTHDAY[0] > daysInMonth) { data_valid = 0; } else { this.last.day = this.by_data.BYMONTHDAY[0]; } } return data_valid; }, next_weekday_by_week: function next_weekday_by_week() { var end_of_data = 0; if (this.next_hour() == 0) { return end_of_data; } if (!this.has_by_data("BYDAY")) { return 1; } for (;;) { var tt = new ICAL.Time(); this.by_indices.BYDAY++; if (this.by_indices.BYDAY == Object.keys(this.by_data.BYDAY).length) { this.by_indices.BYDAY = 0; end_of_data = 1; } var coded_day = this.by_data.BYDAY[this.by_indices.BYDAY]; var parts = this.ruleDayOfWeek(coded_day); var dow = parts[1]; dow -= this.rule.wkst; if (dow < 0) { dow += 7; } tt.year = this.last.year; tt.month = this.last.month; tt.day = this.last.day; var startOfWeek = tt.startDoyWeek(this.rule.wkst); if (dow + startOfWeek < 1) { // The selected date is in the previous year if (!end_of_data) { continue; } } var next = ICAL.Time.fromDayOfYear(startOfWeek + dow, this.last.year); /** * The normalization horrors below are due to * the fact that when the year/month/day changes * it can effect the other operations that come after. */ this.last.year = next.year; this.last.month = next.month; this.last.day = next.day; return end_of_data; } }, next_year: function next_year() { if (this.next_hour() == 0) { return 0; } if (++this.days_index == this.days.length) { this.days_index = 0; do { this.increment_year(this.rule.interval); this.expand_year_days(this.last.year); } while (this.days.length == 0); } this._nextByYearDay(); return 1; }, _nextByYearDay: function _nextByYearDay() { var doy = this.days[this.days_index]; var year = this.last.year; if (doy < 1) { // Time.fromDayOfYear(doy, year) indexes relative to the // start of the given year. That is different from the // semantics of BYYEARDAY where negative indexes are an // offset from the end of the given year. doy += 1; year += 1; } var next = ICAL.Time.fromDayOfYear(doy, year); this.last.day = next.day; this.last.month = next.month; }, /** * @param dow (eg: '1TU', '-1MO') * @param {ICAL.Time.weekDay=} aWeekStart The week start weekday * @return [pos, numericDow] (eg: [1, 3]) numericDow is relative to aWeekStart */ ruleDayOfWeek: function ruleDayOfWeek(dow, aWeekStart) { var matches = dow.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/); if (matches) { var pos = parseInt(matches[1] || 0, 10); dow = ICAL.Recur.icalDayToNumericDay(matches[2], aWeekStart); return [pos, dow]; } else { return [0, 0]; } }, next_generic: function next_generic(aRuleType, aInterval, aDateAttr, aFollowingAttr, aPreviousIncr) { var has_by_rule = (aRuleType in this.by_data); var this_freq = (this.rule.freq == aInterval); var end_of_data = 0; if (aPreviousIncr && this[aPreviousIncr]() == 0) { return end_of_data; } if (has_by_rule) { this.by_indices[aRuleType]++; var idx = this.by_indices[aRuleType]; var dta = this.by_data[aRuleType]; if (this.by_indices[aRuleType] == dta.length) { this.by_indices[aRuleType] = 0; end_of_data = 1; } this.last[aDateAttr] = dta[this.by_indices[aRuleType]]; } else if (this_freq) { this["increment_" + aDateAttr](this.rule.interval); } if (has_by_rule && end_of_data && this_freq) { this["increment_" + aFollowingAttr](1); } return end_of_data; }, increment_monthday: function increment_monthday(inc) { for (var i = 0; i < inc; i++) { var daysInMonth = ICAL.Time.daysInMonth(this.last.month, this.last.year); this.last.day++; if (this.last.day > daysInMonth) { this.last.day -= daysInMonth; this.increment_month(); } } }, increment_month: function increment_month() { this.last.day = 1; if (this.has_by_data("BYMONTH")) { this.by_indices.BYMONTH++; if (this.by_indices.BYMONTH == this.by_data.BYMONTH.length) { this.by_indices.BYMONTH = 0; this.increment_year(1); } this.last.month = this.by_data.BYMONTH[this.by_indices.BYMONTH]; } else { if (this.rule.freq == "MONTHLY") { this.last.month += this.rule.interval; } else { this.last.month++; } this.last.month--; var years = ICAL.helpers.trunc(this.last.month / 12); this.last.month %= 12; this.last.month++; if (years != 0) { this.increment_year(years); } } }, increment_year: function increment_year(inc) { this.last.year += inc; }, increment_generic: function increment_generic(inc, aDateAttr, aFactor, aNextIncrement) { this.last[aDateAttr] += inc; var nextunit = ICAL.helpers.trunc(this.last[aDateAttr] / aFactor); this.last[aDateAttr] %= aFactor; if (nextunit != 0) { this["increment_" + aNextIncrement](nextunit); } }, has_by_data: function has_by_data(aRuleType) { return (aRuleType in this.rule.parts); }, expand_year_days: function expand_year_days(aYear) { var t = new ICAL.Time(); this.days = []; // We need our own copy with a few keys set var parts = {}; var rules = ["BYDAY", "BYWEEKNO", "BYMONTHDAY", "BYMONTH", "BYYEARDAY"]; for (var p in rules) { /* istanbul ignore else */ if (rules.hasOwnProperty(p)) { var part = rules[p]; if (part in this.rule.parts) { parts[part] = this.rule.parts[part]; } } } if ("BYMONTH" in parts && "BYWEEKNO" in parts) { var valid = 1; var validWeeks = {}; t.year = aYear; t.isDate = true; for (var monthIdx = 0; monthIdx < this.by_data.BYMONTH.length; monthIdx++) { var month = this.by_data.BYMONTH[monthIdx]; t.month = month; t.day = 1; var first_week = t.weekNumber(this.rule.wkst); t.day = ICAL.Time.daysInMonth(month, aYear); var last_week = t.weekNumber(this.rule.wkst); for (monthIdx = first_week; monthIdx < last_week; monthIdx++) { validWeeks[monthIdx] = 1; } } for (var weekIdx = 0; weekIdx < this.by_data.BYWEEKNO.length && valid; weekIdx++) { var weekno = this.by_data.BYWEEKNO[weekIdx]; if (weekno < 52) { valid &= validWeeks[weekIdx]; } else { valid = 0; } } if (valid) { delete parts.BYMONTH; } else { delete parts.BYWEEKNO; } } var partCount = Object.keys(parts).length; if (partCount == 0) { var t1 = this.dtstart.clone(); t1.year = this.last.year; this.days.push(t1.dayOfYear()); } else if (partCount == 1 && "BYMONTH" in parts) { for (var monthkey in this.by_data.BYMONTH) { /* istanbul ignore if */ if (!this.by_data.BYMONTH.hasOwnProperty(monthkey)) { continue; } var t2 = this.dtstart.clone(); t2.year = aYear; t2.month = this.by_data.BYMONTH[monthkey]; t2.isDate = true; this.days.push(t2.dayOfYear()); } } else if (partCount == 1 && "BYMONTHDAY" in parts) { for (var monthdaykey in this.by_data.BYMONTHDAY) { /* istanbul ignore if */ if (!this.by_data.BYMONTHDAY.hasOwnProperty(monthdaykey)) { continue; } var t3 = this.dtstart.clone(); var day_ = this.by_data.BYMONTHDAY[monthdaykey]; if (day_ < 0) { var daysInMonth = ICAL.Time.daysInMonth(t3.month, aYear); day_ = day_ + daysInMonth + 1; } t3.day = day_; t3.year = aYear; t3.isDate = true; this.days.push(t3.dayOfYear()); } } else if (partCount == 2 && "BYMONTHDAY" in parts && "BYMONTH" in parts) { for (var monthkey in this.by_data.BYMONTH) { /* istanbul ignore if */ if (!this.by_data.BYMONTH.hasOwnProperty(monthkey)) { continue; } var month_ = this.by_data.BYMONTH[monthkey]; var daysInMonth = ICAL.Time.daysInMonth(month_, aYear); for (var monthdaykey in this.by_data.BYMONTHDAY) { /* istanbul ignore if */ if (!this.by_data.BYMONTHDAY.hasOwnProperty(monthdaykey)) { continue; } var day_ = this.by_data.BYMONTHDAY[monthdaykey]; if (day_ < 0) { day_ = day_ + daysInMonth + 1; } t.day = day_; t.month = month_; t.year = aYear; t.isDate = true; this.days.push(t.dayOfYear()); } } } else if (partCount == 1 && "BYWEEKNO" in parts) { // TODO unimplemented in libical } else if (partCount == 2 && "BYWEEKNO" in parts && "BYMONTHDAY" in parts) { // TODO unimplemented in libical } else if (partCount == 1 && "BYDAY" in parts) { this.days = this.days.concat(this.expand_by_day(aYear)); } else if (partCount == 2 && "BYDAY" in parts && "BYMONTH" in parts) { for (var monthkey in this.by_data.BYMONTH) { /* istanbul ignore if */ if (!this.by_data.BYMONTH.hasOwnProperty(monthkey)) { continue; } var month = this.by_data.BYMONTH[monthkey]; var daysInMonth = ICAL.Time.daysInMonth(month, aYear); t.year = aYear; t.month = this.by_data.BYMONTH[monthkey]; t.day = 1; t.isDate = true; var first_dow = t.dayOfWeek(); var doy_offset = t.dayOfYear() - 1; t.day = daysInMonth; var last_dow = t.dayOfWeek(); if (this.has_by_data("BYSETPOS")) { var set_pos_counter = 0; var by_month_day = []; for (var day = 1; day <= daysInMonth; day++) { t.day = day; if (this.is_day_in_byday(t)) { by_month_day.push(day); } } for (var spIndex = 0; spIndex < by_month_day.length; spIndex++) { if (this.check_set_position(spIndex + 1) || this.check_set_position(spIndex - by_month_day.length)) { this.days.push(doy_offset + by_month_day[spIndex]); } } } else { for (var daycodedkey in this.by_data.BYDAY) { /* istanbul ignore if */ if (!this.by_data.BYDAY.hasOwnProperty(daycodedkey)) { continue; } var coded_day = this.by_data.BYDAY[daycodedkey]; var bydayParts = this.ruleDayOfWeek(coded_day); var pos = bydayParts[0]; var dow = bydayParts[1]; var month_day; var first_matching_day = ((dow + 7 - first_dow) % 7) + 1; var last_matching_day = daysInMonth - ((last_dow + 7 - dow) % 7); if (pos == 0) { for (var day = first_matching_day; day <= daysInMonth; day += 7) { this.days.push(doy_offset + day); } } else if (pos > 0) { month_day = first_matching_day + (pos - 1) * 7; if (month_day <= daysInMonth) { this.days.push(doy_offset + month_day); } } else { month_day = last_matching_day + (pos + 1) * 7; if (month_day > 0) { this.days.push(doy_offset + month_day); } } } } } // Return dates in order of occurrence (1,2,3,...) instead // of by groups of weekdays (1,8,15,...,2,9,16,...). this.days.sort(function(a, b) { return a - b; }); // Comparator function allows to sort numbers. } else if (partCount == 2 && "BYDAY" in parts && "BYMONTHDAY" in parts) { var expandedDays = this.expand_by_day(aYear); for (var daykey in expandedDays) { /* istanbul ignore if */ if (!expandedDays.hasOwnProperty(daykey)) { continue; } var day = expandedDays[daykey]; var tt = ICAL.Time.fromDayOfYear(day, aYear); if (this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) { this.days.push(day); } } } else if (partCount == 3 && "BYDAY" in parts && "BYMONTHDAY" in parts && "BYMONTH" in parts) { var expandedDays = this.expand_by_day(aYear); for (var daykey in expandedDays) { /* istanbul ignore if */ if (!expandedDays.hasOwnProperty(daykey)) { continue; } var day = expandedDays[daykey]; var tt = ICAL.Time.fromDayOfYear(day, aYear); if (this.by_data.BYMONTH.indexOf(tt.month) >= 0 && this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) { this.days.push(day); } } } else if (partCount == 2 && "BYDAY" in parts && "BYWEEKNO" in parts) { var expandedDays = this.expand_by_day(aYear); for (var daykey in expandedDays) { /* istanbul ignore if */ if (!expandedDays.hasOwnProperty(daykey)) { continue; } var day = expandedDays[daykey]; var tt = ICAL.Time.fromDayOfYear(day, aYear); var weekno = tt.weekNumber(this.rule.wkst); if (this.by_data.BYWEEKNO.indexOf(weekno)) { this.days.push(day); } } } else if (partCount == 3 && "BYDAY" in parts && "BYWEEKNO" in parts && "BYMONTHDAY" in parts) { // TODO unimplemted in libical } else if (partCount == 1 && "BYYEARDAY" in parts) { this.days = this.days.concat(this.by_data.BYYEARDAY); } else { this.days = []; } return 0; }, expand_by_day: function expand_by_day(aYear) { var days_list = []; var tmp = this.last.clone(); tmp.year = aYear; tmp.month = 1; tmp.day = 1; tmp.isDate = true; var start_dow = tmp.dayOfWeek(); tmp.month = 12; tmp.day = 31; tmp.isDate = true; var end_dow = tmp.dayOfWeek(); var end_year_day = tmp.dayOfYear(); for (var daykey in this.by_data.BYDAY) { /* istanbul ignore if */ if (!this.by_data.BYDAY.hasOwnProperty(daykey)) { continue; } var day = this.by_data.BYDAY[daykey]; var parts = this.ruleDayOfWeek(day); var pos = parts[0]; var dow = parts[1]; if (pos == 0) { var tmp_start_doy = ((dow + 7 - start_dow) % 7) + 1; for (var doy = tmp_start_doy; doy <= end_year_day; doy += 7) { days_list.push(doy); } } else if (pos > 0) { var first; if (dow >= start_dow) { first = dow - start_dow + 1; } else { first = dow - start_dow + 8; } days_list.push(first + (pos - 1) * 7); } else { var last; pos = -pos; if (dow <= end_dow) { last = end_year_day - end_dow + dow; } else { last = end_year_day - end_dow + dow - 7; } days_list.push(last - (pos - 1) * 7); } } return days_list; }, is_day_in_byday: function is_day_in_byday(tt) { for (var daykey in this.by_data.BYDAY) { /* istanbul ignore if */ if (!this.by_data.BYDAY.hasOwnProperty(daykey)) { continue; } var day = this.by_data.BYDAY[daykey]; var parts = this.ruleDayOfWeek(day); var pos = parts[0]; var dow = parts[1]; var this_dow = tt.dayOfWeek(); if ((pos == 0 && dow == this_dow) || (tt.nthWeekDay(dow, pos) == tt.day)) { return 1; } } return 0; }, /** * Checks if given value is in BYSETPOS. * * @private * @param {Numeric} aPos position to check for. * @return {Boolean} false unless BYSETPOS rules exist * and the given value is present in rules. */ check_set_position: function check_set_position(aPos) { if (this.has_by_data('BYSETPOS')) { var idx = this.by_data.BYSETPOS.indexOf(aPos); // negative numbers are not false-y return idx !== -1; } return false; }, sort_byday_rules: function icalrecur_sort_byday_rules(aRules) { for (var i = 0; i < aRules.length; i++) { for (var j = 0; j < i; j++) { var one = this.ruleDayOfWeek(aRules[j], this.rule.wkst)[1]; var two = this.ruleDayOfWeek(aRules[i], this.rule.wkst)[1]; if (one > two) { var tmp = aRules[i]; aRules[i] = aRules[j]; aRules[j] = tmp; } } } }, check_contract_restriction: function check_contract_restriction(aRuleType, v) { var indexMapValue = icalrecur_iterator._indexMap[aRuleType]; var ruleMapValue = icalrecur_iterator._expandMap[this.rule.freq][indexMapValue]; var pass = false; if (aRuleType in this.by_data && ruleMapValue == icalrecur_iterator.CONTRACT) { var ruleType = this.by_data[aRuleType]; for (var bydatakey in ruleType) { /* istanbul ignore else */ if (ruleType.hasOwnProperty(bydatakey)) { if (ruleType[bydatakey] == v) { pass = true; break; } } } } else { // Not a contracting byrule or has no data, test passes pass = true; } return pass; }, check_contracting_rules: function check_contracting_rules() { var dow = this.last.dayOfWeek(); var weekNo = this.last.weekNumber(this.rule.wkst); var doy = this.last.dayOfYear(); return (this.check_contract_restriction("BYSECOND", this.last.second) && this.check_contract_restriction("BYMINUTE", this.last.minute) && this.check_contract_restriction("BYHOUR", this.last.hour) && this.check_contract_restriction("BYDAY", ICAL.Recur.numericDayToIcalDay(dow)) && this.check_contract_restriction("BYWEEKNO", weekNo) && this.check_contract_restriction("BYMONTHDAY", this.last.day) && this.check_contract_restriction("BYMONTH", this.last.month) && this.check_contract_restriction("BYYEARDAY", doy)); }, setup_defaults: function setup_defaults(aRuleType, req, deftime) { var indexMapValue = icalrecur_iterator._indexMap[aRuleType]; var ruleMapValue = icalrecur_iterator._expandMap[this.rule.freq][indexMapValue]; if (ruleMapValue != icalrecur_iterator.CONTRACT) { if (!(aRuleType in this.by_data)) { this.by_data[aRuleType] = [deftime]; } if (this.rule.freq != req) { return this.by_data[aRuleType][0]; } } return deftime; }, /** * Convert iterator into a serialize-able object. Will preserve current * iteration sequence to ensure the seamless continuation of the recurrence * rule. * @return {Object} */ toJSON: function() { var result = Object.create(null); result.initialized = this.initialized; result.rule = this.rule.toJSON(); result.dtstart = this.dtstart.toJSON(); result.by_data = this.by_data; result.days = this.days; result.last = this.last.toJSON(); result.by_indices = this.by_indices; result.occurrence_number = this.occurrence_number; return result; } }; icalrecur_iterator._indexMap = { "BYSECOND": 0, "BYMINUTE": 1, "BYHOUR": 2, "BYDAY": 3, "BYMONTHDAY": 4, "BYYEARDAY": 5, "BYWEEKNO": 6, "BYMONTH": 7, "BYSETPOS": 8 }; icalrecur_iterator._expandMap = { "SECONDLY": [1, 1, 1, 1, 1, 1, 1, 1], "MINUTELY": [2, 1, 1, 1, 1, 1, 1, 1], "HOURLY": [2, 2, 1, 1, 1, 1, 1, 1], "DAILY": [2, 2, 2, 1, 1, 1, 1, 1], "WEEKLY": [2, 2, 2, 2, 3, 3, 1, 1], "MONTHLY": [2, 2, 2, 2, 2, 3, 3, 1], "YEARLY": [2, 2, 2, 2, 2, 2, 2, 2] }; icalrecur_iterator.UNKNOWN = 0; icalrecur_iterator.CONTRACT = 1; icalrecur_iterator.EXPAND = 2; icalrecur_iterator.ILLEGAL = 3; return icalrecur_iterator; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.RecurExpansion = (function() { function formatTime(item) { return ICAL.helpers.formatClassType(item, ICAL.Time); } function compareTime(a, b) { return a.compare(b); } function isRecurringComponent(comp) { return comp.hasProperty('rdate') || comp.hasProperty('rrule') || comp.hasProperty('recurrence-id'); } /** * @classdesc * Primary class for expanding recurring rules. Can take multiple rrules, * rdates, exdate(s) and iterate (in order) over each next occurrence. * * Once initialized this class can also be serialized saved and continue * iteration from the last point. * * NOTE: it is intended that this class is to be used * with ICAL.Event which handles recurrence exceptions. * * @example * // assuming event is a parsed ical component * var event; * * var expand = new ICAL.RecurExpansion({ * component: event, * dtstart: event.getFirstPropertyValue('dtstart') * }); * * // remember there are infinite rules * // so it is a good idea to limit the scope * // of the iterations then resume later on. * * // next is always an ICAL.Time or null * var next; * * while (someCondition && (next = expand.next())) { * // do something with next * } * * // save instance for later * var json = JSON.stringify(expand); * * //... * * // NOTE: if the component's properties have * // changed you will need to rebuild the * // class and start over. This only works * // when the component's recurrence info is the same. * var expand = new ICAL.RecurExpansion(JSON.parse(json)); * * @description * The options object can be filled with the specified initial values. It can * also contain additional members, as a result of serializing a previous * expansion state, as shown in the example. * * @class * @alias ICAL.RecurExpansion * @param {Object} options * Recurrence expansion options * @param {ICAL.Time} options.dtstart * Start time of the event * @param {ICAL.Component=} options.component * Component for expansion, required if not resuming. */ function RecurExpansion(options) { this.ruleDates = []; this.exDates = []; this.fromData(options); } RecurExpansion.prototype = { /** * True when iteration is fully completed. * @type {Boolean} */ complete: false, /** * Array of rrule iterators. * * @type {ICAL.RecurIterator[]} * @private */ ruleIterators: null, /** * Array of rdate instances. * * @type {ICAL.Time[]} * @private */ ruleDates: null, /** * Array of exdate instances. * * @type {ICAL.Time[]} * @private */ exDates: null, /** * Current position in ruleDates array. * @type {Number} * @private */ ruleDateInc: 0, /** * Current position in exDates array * @type {Number} * @private */ exDateInc: 0, /** * Current negative date. * * @type {ICAL.Time} * @private */ exDate: null, /** * Current additional date. * * @type {ICAL.Time} * @private */ ruleDate: null, /** * Start date of recurring rules. * * @type {ICAL.Time} */ dtstart: null, /** * Last expanded time * * @type {ICAL.Time} */ last: null, /** * Initialize the recurrence expansion from the data object. The options * object may also contain additional members, see the * {@link ICAL.RecurExpansion constructor} for more details. * * @param {Object} options * Recurrence expansion options * @param {ICAL.Time} options.dtstart * Start time of the event * @param {ICAL.Component=} options.component * Component for expansion, required if not resuming. */ fromData: function(options) { var start = ICAL.helpers.formatClassType(options.dtstart, ICAL.Time); if (!start) { throw new Error('.dtstart (ICAL.Time) must be given'); } else { this.dtstart = start; } if (options.component) { this._init(options.component); } else { this.last = formatTime(options.last) || start.clone(); if (!options.ruleIterators) { throw new Error('.ruleIterators or .component must be given'); } this.ruleIterators = options.ruleIterators.map(function(item) { return ICAL.helpers.formatClassType(item, ICAL.RecurIterator); }); this.ruleDateInc = options.ruleDateInc; this.exDateInc = options.exDateInc; if (options.ruleDates) { this.ruleDates = options.ruleDates.map(formatTime); this.ruleDate = this.ruleDates[this.ruleDateInc]; } if (options.exDates) { this.exDates = options.exDates.map(formatTime); this.exDate = this.exDates[this.exDateInc]; } if (typeof(options.complete) !== 'undefined') { this.complete = options.complete; } } }, /** * Retrieve the next occurrence in the series. * @return {ICAL.Time} */ next: function() { var iter; var ruleOfDay; var next; var compare; var maxTries = 500; var currentTry = 0; while (true) { if (currentTry++ > maxTries) { throw new Error( 'max tries have occured, rule may be impossible to forfill.' ); } next = this.ruleDate; iter = this._nextRecurrenceIter(this.last); // no more matches // because we increment the rule day or rule // _after_ we choose a value this should be // the only spot where we need to worry about the // end of events. if (!next && !iter) { // there are no more iterators or rdates this.complete = true; break; } // no next rule day or recurrence rule is first. if (!next || (iter && next.compare(iter.last) > 0)) { // must be cloned, recur will reuse the time element. next = iter.last.clone(); // move to next so we can continue iter.next(); } // if the ruleDate is still next increment it. if (this.ruleDate === next) { this._nextRuleDay(); } this.last = next; // check the negative rules if (this.exDate) { compare = this.exDate.compare(this.last); if (compare < 0) { this._nextExDay(); } // if the current rule is excluded skip it. if (compare === 0) { this._nextExDay(); continue; } } //XXX: The spec states that after we resolve the final // list of dates we execute exdate this seems somewhat counter // intuitive to what I have seen most servers do so for now // I exclude based on the original date not the one that may // have been modified by the exception. return this.last; } }, /** * Converts object into a serialize-able format. This format can be passed * back into the expansion to resume iteration. * @return {Object} */ toJSON: function() { function toJSON(item) { return item.toJSON(); } var result = Object.create(null); result.ruleIterators = this.ruleIterators.map(toJSON); if (this.ruleDates) { result.ruleDates = this.ruleDates.map(toJSON); } if (this.exDates) { result.exDates = this.exDates.map(toJSON); } result.ruleDateInc = this.ruleDateInc; result.exDateInc = this.exDateInc; result.last = this.last.toJSON(); result.dtstart = this.dtstart.toJSON(); result.complete = this.complete; return result; }, /** * Extract all dates from the properties in the given component. The * properties will be filtered by the property name. * * @private * @param {ICAL.Component} component The component to search in * @param {String} propertyName The property name to search for * @return {ICAL.Time[]} The extracted dates. */ _extractDates: function(component, propertyName) { function handleProp(prop) { idx = ICAL.helpers.binsearchInsert( result, prop, compareTime ); // ordered insert result.splice(idx, 0, prop); } var result = []; var props = component.getAllProperties(propertyName); var len = props.length; var i = 0; var prop; var idx; for (; i < len; i++) { props[i].getValues().forEach(handleProp); } return result; }, /** * Initialize the recurrence expansion. * * @private * @param {ICAL.Component} component The component to initialize from. */ _init: function(component) { this.ruleIterators = []; this.last = this.dtstart.clone(); // to provide api consistency non-recurring // events can also use the iterator though it will // only return a single time. if (!isRecurringComponent(component)) { this.ruleDate = this.last.clone(); this.complete = true; return; } if (component.hasProperty('rdate')) { this.ruleDates = this._extractDates(component, 'rdate'); // special hack for cases where first rdate is prior // to the start date. We only check for the first rdate. // This is mostly for google's crazy recurring date logic // (contacts birthdays). if ((this.ruleDates[0]) && (this.ruleDates[0].compare(this.dtstart) < 0)) { this.ruleDateInc = 0; this.last = this.ruleDates[0].clone(); } else { this.ruleDateInc = ICAL.helpers.binsearchInsert( this.ruleDates, this.last, compareTime ); } this.ruleDate = this.ruleDates[this.ruleDateInc]; } if (component.hasProperty('rrule')) { var rules = component.getAllProperties('rrule'); var i = 0; var len = rules.length; var rule; var iter; for (; i < len; i++) { rule = rules[i].getFirstValue(); iter = rule.iterator(this.dtstart); this.ruleIterators.push(iter); // increment to the next occurrence so future // calls to next return times beyond the initial iteration. // XXX: I find this suspicious might be a bug? iter.next(); } } if (component.hasProperty('exdate')) { this.exDates = this._extractDates(component, 'exdate'); // if we have a .last day we increment the index to beyond it. this.exDateInc = ICAL.helpers.binsearchInsert( this.exDates, this.last, compareTime ); this.exDate = this.exDates[this.exDateInc]; } }, /** * Advance to the next exdate * @private */ _nextExDay: function() { this.exDate = this.exDates[++this.exDateInc]; }, /** * Advance to the next rule date * @private */ _nextRuleDay: function() { this.ruleDate = this.ruleDates[++this.ruleDateInc]; }, /** * Find and return the recurrence rule with the most recent event and * return it. * * @private * @return {?ICAL.RecurIterator} Found iterator. */ _nextRecurrenceIter: function() { var iters = this.ruleIterators; if (iters.length === 0) { return null; } var len = iters.length; var iter; var iterTime; var iterIdx = 0; var chosenIter; // loop through each iterator for (; iterIdx < len; iterIdx++) { iter = iters[iterIdx]; iterTime = iter.last; // if iteration is complete // then we must exclude it from // the search and remove it. if (iter.completed) { len--; if (iterIdx !== 0) { iterIdx--; } iters.splice(iterIdx, 1); continue; } // find the most recent possible choice if (!chosenIter || chosenIter.last.compare(iterTime) > 0) { // that iterator is saved chosenIter = iter; } } // the chosen iterator is returned but not mutated // this iterator contains the most recent event. return chosenIter; } }; return RecurExpansion; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.Event = (function() { /** * @classdesc * ICAL.js is organized into multiple layers. The bottom layer is a raw jCal * object, followed by the component/property layer. The highest level is the * event representation, which this class is part of. See the * {@tutorial layers} guide for more details. * * @class * @alias ICAL.Event * @param {ICAL.Component=} component The ICAL.Component to base this event on * @param {Object} options Options for this event * @param {Boolean} options.strictExceptions * When true, will verify exceptions are related by their UUID * @param {Array} options.exceptions * Exceptions to this event, either as components or events. If not * specified exceptions will automatically be set in relation of * component's parent */ function Event(component, options) { if (!(component instanceof ICAL.Component)) { options = component; component = null; } if (component) { this.component = component; } else { this.component = new ICAL.Component('vevent'); } this._rangeExceptionCache = Object.create(null); this.exceptions = Object.create(null); this.rangeExceptions = []; if (options && options.strictExceptions) { this.strictExceptions = options.strictExceptions; } if (options && options.exceptions) { options.exceptions.forEach(this.relateException, this); } else if (this.component.parent && !this.isRecurrenceException()) { this.component.parent.getAllSubcomponents('vevent').forEach(function(event) { if (event.hasProperty('recurrence-id')) { this.relateException(event); } }, this); } } Event.prototype = { THISANDFUTURE: 'THISANDFUTURE', /** * List of related event exceptions. * * @type {ICAL.Event[]} */ exceptions: null, /** * When true, will verify exceptions are related by their UUID. * * @type {Boolean} */ strictExceptions: false, /** * Relates a given event exception to this object. If the given component * does not share the UID of this event it cannot be related and will throw * an exception. * * If this component is an exception it cannot have other exceptions * related to it. * * @param {ICAL.Component|ICAL.Event} obj Component or event */ relateException: function(obj) { if (this.isRecurrenceException()) { throw new Error('cannot relate exception to exceptions'); } if (obj instanceof ICAL.Component) { obj = new ICAL.Event(obj); } if (this.strictExceptions && obj.uid !== this.uid) { throw new Error('attempted to relate unrelated exception'); } var id = obj.recurrenceId.toString(); // we don't sort or manage exceptions directly // here the recurrence expander handles that. this.exceptions[id] = obj; // index RANGE=THISANDFUTURE exceptions so we can // look them up later in getOccurrenceDetails. if (obj.modifiesFuture()) { var item = [ obj.recurrenceId.toUnixTime(), id ]; // we keep them sorted so we can find the nearest // value later on... var idx = ICAL.helpers.binsearchInsert( this.rangeExceptions, item, compareRangeException ); this.rangeExceptions.splice(idx, 0, item); } }, /** * Checks if this record is an exception and has the RANGE=THISANDFUTURE * value. * * @return {Boolean} True, when exception is within range */ modifiesFuture: function() { if (!this.component.hasProperty('recurrence-id')) { return false; } var range = this.component.getFirstProperty('recurrence-id').getParameter('range'); return range === this.THISANDFUTURE; }, /** * Finds the range exception nearest to the given date. * * @param {ICAL.Time} time usually an occurrence time of an event * @return {?ICAL.Event} the related event/exception or null */ findRangeException: function(time) { if (!this.rangeExceptions.length) { return null; } var utc = time.toUnixTime(); var idx = ICAL.helpers.binsearchInsert( this.rangeExceptions, [utc], compareRangeException ); idx -= 1; // occurs before if (idx < 0) { return null; } var rangeItem = this.rangeExceptions[idx]; /* istanbul ignore next: sanity check only */ if (utc < rangeItem[0]) { return null; } return rangeItem[1]; }, /** * This object is returned by {@link ICAL.Event#getOccurrenceDetails getOccurrenceDetails} * * @typedef {Object} occurrenceDetails * @memberof ICAL.Event * @property {ICAL.Time} recurrenceId The passed in recurrence id * @property {ICAL.Event} item The occurrence * @property {ICAL.Time} startDate The start of the occurrence * @property {ICAL.Time} endDate The end of the occurrence */ /** * Returns the occurrence details based on its start time. If the * occurrence has an exception will return the details for that exception. * * NOTE: this method is intend to be used in conjunction * with the {@link ICAL.Event#iterator iterator} method. * * @param {ICAL.Time} occurrence time occurrence * @return {ICAL.Event.occurrenceDetails} Information about the occurrence */ getOccurrenceDetails: function(occurrence) { var id = occurrence.toString(); var utcId = occurrence.convertToZone(ICAL.Timezone.utcTimezone).toString(); var item; var result = { //XXX: Clone? recurrenceId: occurrence }; if (id in this.exceptions) { item = result.item = this.exceptions[id]; result.startDate = item.startDate; result.endDate = item.endDate; result.item = item; } else if (utcId in this.exceptions) { item = this.exceptions[utcId]; result.startDate = item.startDate; result.endDate = item.endDate; result.item = item; } else { // range exceptions (RANGE=THISANDFUTURE) have a // lower priority then direct exceptions but // must be accounted for first. Their item is // always the first exception with the range prop. var rangeExceptionId = this.findRangeException( occurrence ); var end; if (rangeExceptionId) { var exception = this.exceptions[rangeExceptionId]; // range exception must modify standard time // by the difference (if any) in start/end times. result.item = exception; var startDiff = this._rangeExceptionCache[rangeExceptionId]; if (!startDiff) { var original = exception.recurrenceId.clone(); var newStart = exception.startDate.clone(); // zones must be same otherwise subtract may be incorrect. original.zone = newStart.zone; startDiff = newStart.subtractDate(original); this._rangeExceptionCache[rangeExceptionId] = startDiff; } var start = occurrence.clone(); start.zone = exception.startDate.zone; start.addDuration(startDiff); end = start.clone(); end.addDuration(exception.duration); result.startDate = start; result.endDate = end; } else { // no range exception standard expansion end = occurrence.clone(); end.addDuration(this.duration); result.endDate = end; result.startDate = occurrence; result.item = this; } } return result; }, /** * Builds a recur expansion instance for a specific point in time (defaults * to startDate). * * @param {ICAL.Time} startTime Starting point for expansion * @return {ICAL.RecurExpansion} Expansion object */ iterator: function(startTime) { return new ICAL.RecurExpansion({ component: this.component, dtstart: startTime || this.startDate }); }, /** * Checks if the event is recurring * * @return {Boolean} True, if event is recurring */ isRecurring: function() { var comp = this.component; return comp.hasProperty('rrule') || comp.hasProperty('rdate'); }, /** * Checks if the event describes a recurrence exception. See * {@tutorial terminology} for details. * * @return {Boolean} True, if the event describes a recurrence exception */ isRecurrenceException: function() { return this.component.hasProperty('recurrence-id'); }, /** * Returns the types of recurrences this event may have. * * Returned as an object with the following possible keys: * * - YEARLY * - MONTHLY * - WEEKLY * - DAILY * - MINUTELY * - SECONDLY * * @return {Object.} * Object of recurrence flags */ getRecurrenceTypes: function() { var rules = this.component.getAllProperties('rrule'); var i = 0; var len = rules.length; var result = Object.create(null); for (; i < len; i++) { var value = rules[i].getFirstValue(); result[value.freq] = true; } return result; }, /** * The uid of this event * @type {String} */ get uid() { return this._firstProp('uid'); }, set uid(value) { this._setProp('uid', value); }, /** * The start date * @type {ICAL.Time} */ get startDate() { return this._firstProp('dtstart'); }, set startDate(value) { this._setTime('dtstart', value); }, /** * The end date. This can be the result directly from the property, or the * end date calculated from start date and duration. Setting the property * will remove any duration properties. * @type {ICAL.Time} */ get endDate() { var endDate = this._firstProp('dtend'); if (!endDate) { var duration = this._firstProp('duration'); endDate = this.startDate.clone(); if (duration) { endDate.addDuration(duration); } else if (endDate.isDate) { endDate.day += 1; } } return endDate; }, set endDate(value) { if (this.component.hasProperty('duration')) { this.component.removeProperty('duration'); } this._setTime('dtend', value); }, /** * The duration. This can be the result directly from the property, or the * duration calculated from start date and end date. Setting the property * will remove any `dtend` properties. * @type {ICAL.Duration} */ get duration() { var duration = this._firstProp('duration'); if (!duration) { return this.endDate.subtractDateTz(this.startDate); } return duration; }, set duration(value) { if (this.component.hasProperty('dtend')) { this.component.removeProperty('dtend'); } this._setProp('duration', value); }, /** * The location of the event. * @type {String} */ get location() { return this._firstProp('location'); }, set location(value) { return this._setProp('location', value); }, /** * The attendees in the event * @type {ICAL.Property[]} * @readonly */ get attendees() { //XXX: This is way lame we should have a better // data structure for this later. return this.component.getAllProperties('attendee'); }, /** * The event summary * @type {String} */ get summary() { return this._firstProp('summary'); }, set summary(value) { this._setProp('summary', value); }, /** * The event description. * @type {String} */ get description() { return this._firstProp('description'); }, set description(value) { this._setProp('description', value); }, /** * The event color from [rfc7986](https://datatracker.ietf.org/doc/html/rfc7986) * @type {String} */ get color() { return this._firstProp('color'); }, set color(value) { this._setProp('color', value); }, /** * The organizer value as an uri. In most cases this is a mailto: uri, but * it can also be something else, like urn:uuid:... * @type {String} */ get organizer() { return this._firstProp('organizer'); }, set organizer(value) { this._setProp('organizer', value); }, /** * The sequence value for this event. Used for scheduling * see {@tutorial terminology}. * @type {Number} */ get sequence() { return this._firstProp('sequence'); }, set sequence(value) { this._setProp('sequence', value); }, /** * The recurrence id for this event. See {@tutorial terminology} for details. * @type {ICAL.Time} */ get recurrenceId() { return this._firstProp('recurrence-id'); }, set recurrenceId(value) { this._setTime('recurrence-id', value); }, /** * Set/update a time property's value. * This will also update the TZID of the property. * * TODO: this method handles the case where we are switching * from a known timezone to an implied timezone (one without TZID). * This does _not_ handle the case of moving between a known * (by TimezoneService) timezone to an unknown timezone... * * We will not add/remove/update the VTIMEZONE subcomponents * leading to invalid ICAL data... * @private * @param {String} propName The property name * @param {ICAL.Time} time The time to set */ _setTime: function(propName, time) { var prop = this.component.getFirstProperty(propName); if (!prop) { prop = new ICAL.Property(propName); this.component.addProperty(prop); } // utc and local don't get a tzid if ( time.zone === ICAL.Timezone.localTimezone || time.zone === ICAL.Timezone.utcTimezone ) { // remove the tzid prop.removeParameter('tzid'); } else { prop.setParameter('tzid', time.zone.tzid); } prop.setValue(time); }, _setProp: function(name, value) { this.component.updatePropertyWithValue(name, value); }, _firstProp: function(name) { return this.component.getFirstPropertyValue(name); }, /** * The string representation of this event. * @return {String} */ toString: function() { return this.component.toString(); } }; function compareRangeException(a, b) { if (a[0] > b[0]) return 1; if (b[0] > a[0]) return -1; return 0; } return Event; }()); /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Portions Copyright (C) Philipp Kewisch, 2011-2015 */ /** * This symbol is further described later on * @ignore */ ICAL.ComponentParser = (function() { /** * @classdesc * The ComponentParser is used to process a String or jCal Object, * firing callbacks for various found components, as well as completion. * * @example * var options = { * // when false no events will be emitted for type * parseEvent: true, * parseTimezone: true * }; * * var parser = new ICAL.ComponentParser(options); * * parser.onevent(eventComponent) { * //... * } * * // ontimezone, etc... * * parser.oncomplete = function() { * * }; * * parser.process(stringOrComponent); * * @class * @alias ICAL.ComponentParser * @param {Object=} options Component parser options * @param {Boolean} options.parseEvent Whether events should be parsed * @param {Boolean} options.parseTimezeone Whether timezones should be parsed */ function ComponentParser(options) { if (typeof(options) === 'undefined') { options = {}; } var key; for (key in options) { /* istanbul ignore else */ if (options.hasOwnProperty(key)) { this[key] = options[key]; } } } ComponentParser.prototype = { /** * When true, parse events * * @type {Boolean} */ parseEvent: true, /** * When true, parse timezones * * @type {Boolean} */ parseTimezone: true, /* SAX like events here for reference */ /** * Fired when parsing is complete * @callback */ oncomplete: /* istanbul ignore next */ function() {}, /** * Fired if an error occurs during parsing. * * @callback * @param {Error} err details of error */ onerror: /* istanbul ignore next */ function(err) {}, /** * Fired when a top level component (VTIMEZONE) is found * * @callback * @param {ICAL.Timezone} component Timezone object */ ontimezone: /* istanbul ignore next */ function(component) {}, /** * Fired when a top level component (VEVENT) is found. * * @callback * @param {ICAL.Event} component Top level component */ onevent: /* istanbul ignore next */ function(component) {}, /** * Process a string or parse ical object. This function itself will return * nothing but will start the parsing process. * * Events must be registered prior to calling this method. * * @param {ICAL.Component|String|Object} ical The component to process, * either in its final form, as a jCal Object, or string representation */ process: function(ical) { //TODO: this is sync now in the future we will have a incremental parser. if (typeof(ical) === 'string') { ical = ICAL.parse(ical); } if (!(ical instanceof ICAL.Component)) { ical = new ICAL.Component(ical); } var components = ical.getAllSubcomponents(); var i = 0; var len = components.length; var component; for (; i < len; i++) { component = components[i]; switch (component.name) { case 'vtimezone': if (this.parseTimezone) { var tzid = component.getFirstPropertyValue('tzid'); if (tzid) { this.ontimezone(new ICAL.Timezone({ tzid: tzid, component: component })); } } break; case 'vevent': if (this.parseEvent) { this.onevent(new ICAL.Event(component)); } break; default: continue; } } //XXX: ideally we should do a "nextTick" here // so in all cases this is actually async. this.oncomplete(); } }; return ComponentParser; }()); /***/ }), /***/ "./node_modules/icalzone/dist/index.js": /*!*********************************************!*\ !*** ./node_modules/icalzone/dist/index.js ***! \*********************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getZoneString = exports.getZoneLines = void 0; const zones_1 = __webpack_require__(/*! ./zones */ "./node_modules/icalzone/dist/zones.js"); // This module must be generated with `yarn run build-zones`. function renderZoneSub(data) { const { n, f, t, r, s } = data; return [ `TZNAME:${n}`, `TZOFFSETFROM:${f}`, `TZOFFSETTO:${t || f}`, `DTSTART:${s || zones_1.defaultStart}`, ...(r ? [`RRULE:FREQ=${r.f || 'YEARLY'};BYMONTH=${r.m};BYDAY=${r.d}`] : []), ]; } /** * Tries to resolve a given time zone to iCalendar time zone component * (`VTIMEZONE`) as string array (usually for further processing). * @param zoneName Time zone name (e.g. `America/Los_Angeles`) * @param includeWrapper Set to `false` to avoid including lines for * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`. * @returns Lines of the iCalendar time zone component (`VTIMEZONE`), each line * individually as an array of strings. */ function getZoneLines(zoneName, includeWrapper = true) { const zoneData = zones_1.zonesMap.get(zoneName); if (zoneData) { const { s, d } = zoneData; const lines = [ ...(includeWrapper ? ['BEGIN:VTIMEZONE'] : []), `TZID:${zoneName}`, // `X-LIC-LOCATION:${zoneName}`, // Who uses this? 'BEGIN:STANDARD', ...renderZoneSub(s), 'END:STANDARD', ...(d ? [ 'BEGIN:DAYLIGHT', ...renderZoneSub(d), 'END:DAYLIGHT', ] : []), ...(includeWrapper ? ['END:VTIMEZONE'] : []), ]; return lines; } } exports.getZoneLines = getZoneLines; /** * Tries to resolve a given time zone to iCalendar time zone component * (`VTIMEZONE`) as string. * @param zoneName Time zone name (e.g. `America/Los_Angeles`) * @param includeWrapper Set to `false` to avoid including lines for * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`. * @returns The iCalendar time zone component (`VTIMEZONE`) as string * with `\r\n` line breaks. */ function getZoneString(zoneName, includeWrapper = true) { const lines = getZoneLines(zoneName, includeWrapper); return lines === null || lines === void 0 ? void 0 : lines.join('\r\n'); } exports.getZoneString = getZoneString; /***/ }), /***/ "./node_modules/icalzone/dist/zones.js": /*!*********************************************!*\ !*** ./node_modules/icalzone/dist/zones.js ***! \*********************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.zonesMap = exports.defaultStart = void 0; exports.defaultStart = "19700101T000000"; exports.zonesMap = new Map([ [ "Africa/Abidjan", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Accra", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Addis_Ababa", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Africa/Algiers", { "s": { "f": "+0100", "n": "CET" } } ], [ "Africa/Asmara", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Africa/Bamako", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Bangui", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Banjul", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Bissau", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Blantyre", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Brazzaville", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Bujumbura", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Cairo", { "s": { "f": "+0200", "n": "EET" } } ], [ "Africa/Casablanca", { "s": { "f": "+0100", "n": "+01" } } ], [ "Africa/Ceuta", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Africa/Conakry", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Dakar", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Dar_es_Salaam", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Africa/Djibouti", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Africa/Douala", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/El_Aaiun", { "s": { "f": "+0100", "n": "+01" } } ], [ "Africa/Freetown", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Gaborone", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Harare", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Johannesburg", { "s": { "f": "+0200", "n": "SAST" } } ], [ "Africa/Juba", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Africa/Kampala", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Africa/Khartoum", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Kigali", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Kinshasa", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Lagos", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Libreville", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Lome", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Luanda", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Lubumbashi", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Lusaka", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Malabo", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Maputo", { "s": { "f": "+0200", "n": "CAT" } } ], [ "Africa/Maseru", { "s": { "f": "+0200", "n": "SAST" } } ], [ "Africa/Mbabane", { "s": { "f": "+0200", "n": "SAST" } } ], [ "Africa/Mogadishu", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Africa/Monrovia", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Nairobi", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Africa/Ndjamena", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Niamey", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Nouakchott", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Ouagadougou", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Africa/Porto-Novo", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Sao_Tome", { "s": { "f": "+0100", "n": "WAT" } } ], [ "Africa/Tripoli", { "s": { "f": "+0200", "n": "EET" } } ], [ "Africa/Tunis", { "s": { "f": "+0100", "n": "CET" } } ], [ "Africa/Windhoek", { "s": { "f": "+0200", "n": "CAT" } } ], [ "America/Adak", { "s": { "f": "-0900", "t": "-1000", "n": "HST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-1000", "t": "-0900", "n": "HDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Anchorage", { "s": { "f": "-0800", "t": "-0900", "n": "AKST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0900", "t": "-0800", "n": "AKDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Anguilla", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Antigua", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Araguaina", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Buenos_Aires", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Catamarca", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Cordoba", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Jujuy", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/La_Rioja", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Mendoza", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Rio_Gallegos", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Salta", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/San_Juan", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/San_Luis", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Tucuman", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Argentina/Ushuaia", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Aruba", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Asuncion", { "s": { "f": "-0300", "t": "-0400", "n": "-04", "s": "19700322T000000", "r": { "m": 3, "d": "4SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "-03", "s": "19701004T000000", "r": { "m": 10, "d": "1SU" } } } ], [ "America/Atikokan", { "s": { "f": "-0500", "n": "EST" } } ], [ "America/Bahia_Banderas", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700405T020000", "r": { "m": 4, "d": "1SU" } } } ], [ "America/Bahia", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Barbados", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Belem", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Belize", { "s": { "f": "-0600", "n": "CST" } } ], [ "America/Blanc-Sablon", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Boa_Vista", { "s": { "f": "-0400", "n": "-04" } } ], [ "America/Bogota", { "s": { "f": "-0500", "n": "-05" } } ], [ "America/Boise", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Cambridge_Bay", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Campo_Grande", { "s": { "f": "-0400", "n": "-04", "s": "19700215T000000", "r": { "m": 2, "d": "3SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "-03", "s": "19701101T000000", "r": { "m": 11, "d": "1SU" } } } ], [ "America/Cancun", { "s": { "f": "-0500", "n": "EST" } } ], [ "America/Caracas", { "s": { "f": "-0400", "n": "-04" } } ], [ "America/Cayenne", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Cayman", { "s": { "f": "-0500", "n": "EST" } } ], [ "America/Chicago", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Chihuahua", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700405T020000", "r": { "m": 4, "d": "1SU" } } } ], [ "America/Costa_Rica", { "s": { "f": "-0600", "n": "CST" } } ], [ "America/Creston", { "s": { "f": "-0700", "n": "MST" } } ], [ "America/Cuiaba", { "s": { "f": "-0400", "n": "-04", "s": "19700215T000000", "r": { "m": 2, "d": "3SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "-03", "s": "19701101T000000", "r": { "m": 11, "d": "1SU" } } } ], [ "America/Curacao", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Danmarkshavn", { "s": { "f": "+0000", "n": "GMT" } } ], [ "America/Dawson_Creek", { "s": { "f": "-0700", "n": "MST" } } ], [ "America/Dawson", { "s": { "f": "-0700", "t": "-0800", "n": "PST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0800", "t": "-0700", "n": "PDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Denver", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Detroit", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Dominica", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Edmonton", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Eirunepe", { "s": { "f": "-0500", "n": "-05" } } ], [ "America/El_Salvador", { "s": { "f": "-0600", "n": "CST" } } ], [ "America/Fort_Nelson", { "s": { "f": "-0700", "n": "MST" } } ], [ "America/Fortaleza", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Glace_Bay", { "s": { "f": "-0300", "t": "-0400", "n": "AST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "ADT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Godthab", { "s": { "f": "-0200", "t": "-0300", "n": "-03", "s": "19701024T230000", "r": { "m": 10, "d": "-1SA" } }, "d": { "f": "-0300", "t": "-0200", "n": "-02", "s": "19700328T220000", "r": { "m": 3, "d": "-1SA" } } } ], [ "America/Goose_Bay", { "s": { "f": "-0300", "t": "-0400", "n": "AST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "ADT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Grand_Turk", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Grenada", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Guadeloupe", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Guatemala", { "s": { "f": "-0600", "n": "CST" } } ], [ "America/Guayaquil", { "s": { "f": "-0500", "n": "-05" } } ], [ "America/Guyana", { "s": { "f": "-0400", "n": "-04" } } ], [ "America/Halifax", { "s": { "f": "-0300", "t": "-0400", "n": "AST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "ADT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Havana", { "s": { "f": "-0400", "t": "-0500", "n": "CST", "s": "19701101T010000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "CDT", "s": "19700308T000000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Hermosillo", { "s": { "f": "-0700", "n": "MST" } } ], [ "America/Indiana/Indianapolis", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Indiana/Knox", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Indiana/Marengo", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Indiana/Petersburg", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Indiana/Tell_City", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Indiana/Vevay", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Indiana/Vincennes", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Indiana/Winamac", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Inuvik", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Iqaluit", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Jamaica", { "s": { "f": "-0500", "n": "EST" } } ], [ "America/Juneau", { "s": { "f": "-0800", "t": "-0900", "n": "AKST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0900", "t": "-0800", "n": "AKDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Kentucky/Louisville", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Kentucky/Monticello", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Kralendijk", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/La_Paz", { "s": { "f": "-0400", "n": "-04" } } ], [ "America/Lima", { "s": { "f": "-0500", "n": "-05" } } ], [ "America/Los_Angeles", { "s": { "f": "-0700", "t": "-0800", "n": "PST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0800", "t": "-0700", "n": "PDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Lower_Princes", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Maceio", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Managua", { "s": { "f": "-0600", "n": "CST" } } ], [ "America/Manaus", { "s": { "f": "-0400", "n": "-04" } } ], [ "America/Marigot", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Martinique", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Matamoros", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Mazatlan", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700405T020000", "r": { "m": 4, "d": "1SU" } } } ], [ "America/Menominee", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Merida", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700405T020000", "r": { "m": 4, "d": "1SU" } } } ], [ "America/Metlakatla", { "s": { "f": "-0800", "t": "-0900", "n": "AKST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0900", "t": "-0800", "n": "AKDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Mexico_City", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700405T020000", "r": { "m": 4, "d": "1SU" } } } ], [ "America/Miquelon", { "s": { "f": "-0200", "t": "-0300", "n": "-03", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0300", "t": "-0200", "n": "-02", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Moncton", { "s": { "f": "-0300", "t": "-0400", "n": "AST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "ADT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Monterrey", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700405T020000", "r": { "m": 4, "d": "1SU" } } } ], [ "America/Montevideo", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Montserrat", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Nassau", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/New_York", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Nipigon", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Nome", { "s": { "f": "-0800", "t": "-0900", "n": "AKST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0900", "t": "-0800", "n": "AKDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Noronha", { "s": { "f": "-0200", "n": "-02" } } ], [ "America/North_Dakota/Beulah", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/North_Dakota/Center", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/North_Dakota/New_Salem", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Ojinaga", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Panama", { "s": { "f": "-0500", "n": "EST" } } ], [ "America/Pangnirtung", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Paramaribo", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Phoenix", { "s": { "f": "-0700", "n": "MST" } } ], [ "America/Port_of_Spain", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Port-au-Prince", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Porto_Velho", { "s": { "f": "-0400", "n": "-04" } } ], [ "America/Puerto_Rico", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Punta_Arenas", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Rainy_River", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Rankin_Inlet", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Recife", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Regina", { "s": { "f": "-0600", "n": "CST" } } ], [ "America/Resolute", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Rio_Branco", { "s": { "f": "-0500", "n": "-05" } } ], [ "America/Santarem", { "s": { "f": "-0300", "n": "-03" } } ], [ "America/Santiago", { "s": { "f": "-0300", "t": "-0400", "n": "-04", "s": "19700405T000000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "-03", "s": "19700906T000000", "r": { "m": 9, "d": "1SU" } } } ], [ "America/Santo_Domingo", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Sao_Paulo", { "s": { "f": "-0300", "n": "-03", "s": "19700215T000000", "r": { "m": 2, "d": "3SU" } }, "d": { "f": "-0300", "t": "-0200", "n": "-02", "s": "19701101T000000", "r": { "m": 11, "d": "1SU" } } } ], [ "America/Scoresbysund", { "s": { "f": "+0000", "t": "-0100", "n": "-01", "s": "19701025T010000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "-0100", "t": "+0000", "n": "+00", "s": "19700329T000000", "r": { "m": 3, "d": "-1SU" } } } ], [ "America/Sitka", { "s": { "f": "-0800", "t": "-0900", "n": "AKST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0900", "t": "-0800", "n": "AKDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/St_Barthelemy", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/St_Johns", { "s": { "f": "-0230", "t": "-0330", "n": "NST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0330", "t": "-0230", "n": "NDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/St_Kitts", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/St_Lucia", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/St_Thomas", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/St_Vincent", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Swift_Current", { "s": { "f": "-0600", "n": "CST" } } ], [ "America/Tegucigalpa", { "s": { "f": "-0600", "n": "CST" } } ], [ "America/Thule", { "s": { "f": "-0300", "t": "-0400", "n": "AST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "ADT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Thunder_Bay", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Tijuana", { "s": { "f": "-0700", "t": "-0800", "n": "PST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0800", "t": "-0700", "n": "PDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Toronto", { "s": { "f": "-0400", "t": "-0500", "n": "EST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0500", "t": "-0400", "n": "EDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Tortola", { "s": { "f": "-0400", "n": "AST" } } ], [ "America/Vancouver", { "s": { "f": "-0700", "t": "-0800", "n": "PST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0800", "t": "-0700", "n": "PDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Whitehorse", { "s": { "f": "-0700", "t": "-0800", "n": "PST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0800", "t": "-0700", "n": "PDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Winnipeg", { "s": { "f": "-0500", "t": "-0600", "n": "CST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0600", "t": "-0500", "n": "CDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Yakutat", { "s": { "f": "-0800", "t": "-0900", "n": "AKST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0900", "t": "-0800", "n": "AKDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "America/Yellowknife", { "s": { "f": "-0600", "t": "-0700", "n": "MST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0700", "t": "-0600", "n": "MDT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "Antarctica/Casey", { "s": { "f": "+0800", "n": "+08" } } ], [ "Antarctica/Davis", { "s": { "f": "+0700", "n": "+07" } } ], [ "Antarctica/DumontDUrville", { "s": { "f": "+1000", "n": "+10" } } ], [ "Antarctica/Macquarie", { "s": { "f": "+1100", "n": "+11" } } ], [ "Antarctica/Mawson", { "s": { "f": "+0500", "n": "+05" } } ], [ "Antarctica/McMurdo", { "s": { "f": "+1300", "t": "+1200", "n": "NZST", "s": "19700405T030000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1200", "t": "+1300", "n": "NZDT", "s": "19700927T020000", "r": { "m": 9, "d": "-1SU" } } } ], [ "Antarctica/Palmer", { "s": { "f": "-0300", "n": "-03" } } ], [ "Antarctica/Rothera", { "s": { "f": "-0300", "n": "-03" } } ], [ "Antarctica/Syowa", { "s": { "f": "+0300", "n": "+03" } } ], [ "Antarctica/Troll", { "s": { "f": "+0200", "t": "+0000", "n": "+00", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0200", "n": "+02", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Antarctica/Vostok", { "s": { "f": "+0600", "n": "+06" } } ], [ "Arctic/Longyearbyen", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Asia/Aden", { "s": { "f": "+0300", "n": "+03" } } ], [ "Asia/Almaty", { "s": { "f": "+0600", "n": "+06" } } ], [ "Asia/Amman", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701030T010000", "r": { "m": 10, "d": "-1FR" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700326T235959", "r": { "m": 3, "d": "-1TH" } } } ], [ "Asia/Anadyr", { "s": { "f": "+1200", "n": "+12" } } ], [ "Asia/Aqtau", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Aqtobe", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Ashgabat", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Atyrau", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Baghdad", { "s": { "f": "+0300", "n": "+03" } } ], [ "Asia/Bahrain", { "s": { "f": "+0300", "n": "+03" } } ], [ "Asia/Baku", { "s": { "f": "+0400", "n": "+04" } } ], [ "Asia/Bangkok", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Barnaul", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Beirut", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T000000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T000000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Asia/Bishkek", { "s": { "f": "+0600", "n": "+06" } } ], [ "Asia/Brunei", { "s": { "f": "+0800", "n": "+08" } } ], [ "Asia/Chita", { "s": { "f": "+0900", "n": "+09" } } ], [ "Asia/Choibalsan", { "s": { "f": "+0800", "n": "+08" } } ], [ "Asia/Colombo", { "s": { "f": "+0530", "n": "+0530" } } ], [ "Asia/Damascus", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701030T000000", "r": { "m": 10, "d": "-1FR" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700327T000000", "r": { "m": 3, "d": "-1FR" } } } ], [ "Asia/Dhaka", { "s": { "f": "+0600", "n": "+06" } } ], [ "Asia/Dili", { "s": { "f": "+0900", "n": "+09" } } ], [ "Asia/Dubai", { "s": { "f": "+0400", "n": "+04" } } ], [ "Asia/Dushanbe", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Famagusta", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Asia/Gaza", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701031T010000", "r": { "m": 10, "d": "-1SA" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700328T010000", "r": { "m": 3, "d": "4SA" } } } ], [ "Asia/Hebron", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701031T010000", "r": { "m": 10, "d": "-1SA" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700328T010000", "r": { "m": 3, "d": "4SA" } } } ], [ "Asia/Ho_Chi_Minh", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Hong_Kong", { "s": { "f": "+0800", "n": "HKT" } } ], [ "Asia/Hovd", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Irkutsk", { "s": { "f": "+0800", "n": "+08" } } ], [ "Asia/Istanbul", { "s": { "f": "+0300", "n": "+03" } } ], [ "Asia/Jakarta", { "s": { "f": "+0700", "n": "WIB" } } ], [ "Asia/Jayapura", { "s": { "f": "+0900", "n": "WIT" } } ], [ "Asia/Jerusalem", { "s": { "f": "+0300", "t": "+0200", "n": "IST", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "IDT", "s": "19700327T020000", "r": { "m": 3, "d": "-1FR" } } } ], [ "Asia/Kabul", { "s": { "f": "+0430", "n": "+0430" } } ], [ "Asia/Kamchatka", { "s": { "f": "+1200", "n": "+12" } } ], [ "Asia/Karachi", { "s": { "f": "+0500", "n": "PKT" } } ], [ "Asia/Kathmandu", { "s": { "f": "+0545", "n": "+0545" } } ], [ "Asia/Khandyga", { "s": { "f": "+0900", "n": "+09" } } ], [ "Asia/Kolkata", { "s": { "f": "+0530", "n": "IST" } } ], [ "Asia/Krasnoyarsk", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Kuala_Lumpur", { "s": { "f": "+0800", "n": "+08" } } ], [ "Asia/Kuching", { "s": { "f": "+0800", "n": "+08" } } ], [ "Asia/Kuwait", { "s": { "f": "+0300", "n": "+03" } } ], [ "Asia/Macau", { "s": { "f": "+0800", "n": "CST" } } ], [ "Asia/Magadan", { "s": { "f": "+1100", "n": "+11" } } ], [ "Asia/Makassar", { "s": { "f": "+0800", "n": "WITA" } } ], [ "Asia/Manila", { "s": { "f": "+0800", "n": "PST" } } ], [ "Asia/Muscat", { "s": { "f": "+0400", "n": "+04" } } ], [ "Asia/Nicosia", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Asia/Novokuznetsk", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Novosibirsk", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Omsk", { "s": { "f": "+0600", "n": "+06" } } ], [ "Asia/Oral", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Phnom_Penh", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Pontianak", { "s": { "f": "+0700", "n": "WIB" } } ], [ "Asia/Pyongyang", { "s": { "f": "+0900", "n": "KST" } } ], [ "Asia/Qatar", { "s": { "f": "+0300", "n": "+03" } } ], [ "Asia/Qyzylorda", { "s": { "f": "+0600", "n": "+06" } } ], [ "Asia/Riyadh", { "s": { "f": "+0300", "n": "+03" } } ], [ "Asia/Sakhalin", { "s": { "f": "+1100", "n": "+11" } } ], [ "Asia/Samarkand", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Seoul", { "s": { "f": "+0900", "n": "KST" } } ], [ "Asia/Shanghai", { "s": { "f": "+0800", "n": "CST" } } ], [ "Asia/Singapore", { "s": { "f": "+0800", "n": "+08" } } ], [ "Asia/Srednekolymsk", { "s": { "f": "+1100", "n": "+11" } } ], [ "Asia/Taipei", { "s": { "f": "+0800", "n": "CST" } } ], [ "Asia/Tashkent", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Tbilisi", { "s": { "f": "+0400", "n": "+04" } } ], [ "Asia/Tehran", { "s": { "f": "+0430", "t": "+0330", "n": "+0330", "s": "19700921T000000", "r": { "m": 9, "d": "3SU" } }, "d": { "f": "+0330", "t": "+0430", "n": "+0430", "s": "19700321T000000", "r": { "m": 3, "d": "3SU" } } } ], [ "Asia/Thimphu", { "s": { "f": "+0600", "n": "+06" } } ], [ "Asia/Tokyo", { "s": { "f": "+0900", "n": "JST" } } ], [ "Asia/Tomsk", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Ulaanbaatar", { "s": { "f": "+0800", "n": "+08" } } ], [ "Asia/Urumqi", { "s": { "f": "+0600", "n": "+06" } } ], [ "Asia/Ust-Nera", { "s": { "f": "+1000", "n": "+10" } } ], [ "Asia/Vientiane", { "s": { "f": "+0700", "n": "+07" } } ], [ "Asia/Vladivostok", { "s": { "f": "+1000", "n": "+10" } } ], [ "Asia/Yakutsk", { "s": { "f": "+0900", "n": "+09" } } ], [ "Asia/Yangon", { "s": { "f": "+0630", "n": "+0630" } } ], [ "Asia/Yekaterinburg", { "s": { "f": "+0500", "n": "+05" } } ], [ "Asia/Yerevan", { "s": { "f": "+0400", "n": "+04" } } ], [ "Atlantic/Azores", { "s": { "f": "+0000", "t": "-0100", "n": "-01", "s": "19701025T010000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "-0100", "t": "+0000", "n": "+00", "s": "19700329T000000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Atlantic/Bermuda", { "s": { "f": "-0300", "t": "-0400", "n": "AST", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } }, "d": { "f": "-0400", "t": "-0300", "n": "ADT", "s": "19700308T020000", "r": { "m": 3, "d": "2SU" } } } ], [ "Atlantic/Canary", { "s": { "f": "+0100", "t": "+0000", "n": "WET", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "WEST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Atlantic/Cape_Verde", { "s": { "f": "-0100", "n": "-01" } } ], [ "Atlantic/Faroe", { "s": { "f": "+0100", "t": "+0000", "n": "WET", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "WEST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Atlantic/Madeira", { "s": { "f": "+0100", "t": "+0000", "n": "WET", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "WEST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Atlantic/Reykjavik", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Atlantic/South_Georgia", { "s": { "f": "-0200", "n": "-02" } } ], [ "Atlantic/St_Helena", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Atlantic/Stanley", { "s": { "f": "-0300", "n": "-03" } } ], [ "Australia/Adelaide", { "s": { "f": "+1030", "t": "+0930", "n": "ACST", "s": "19700405T030000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+0930", "t": "+1030", "n": "ACDT", "s": "19701004T020000", "r": { "m": 10, "d": "1SU" } } } ], [ "Australia/Brisbane", { "s": { "f": "+1000", "n": "AEST" } } ], [ "Australia/Broken_Hill", { "s": { "f": "+1030", "t": "+0930", "n": "ACST", "s": "19700405T030000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+0930", "t": "+1030", "n": "ACDT", "s": "19701004T020000", "r": { "m": 10, "d": "1SU" } } } ], [ "Australia/Currie", { "s": { "f": "+1100", "t": "+1000", "n": "AEST", "s": "19700405T030000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1000", "t": "+1100", "n": "AEDT", "s": "19701004T020000", "r": { "m": 10, "d": "1SU" } } } ], [ "Australia/Darwin", { "s": { "f": "+0930", "n": "ACST" } } ], [ "Australia/Eucla", { "s": { "f": "+0845", "n": "+0845" } } ], [ "Australia/Hobart", { "s": { "f": "+1100", "t": "+1000", "n": "AEST", "s": "19700405T030000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1000", "t": "+1100", "n": "AEDT", "s": "19701004T020000", "r": { "m": 10, "d": "1SU" } } } ], [ "Australia/Lindeman", { "s": { "f": "+1000", "n": "AEST" } } ], [ "Australia/Lord_Howe", { "s": { "f": "+1100", "t": "+1030", "n": "+1030", "s": "19700405T020000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1030", "t": "+1100", "n": "+11", "s": "19701004T020000", "r": { "m": 10, "d": "1SU" } } } ], [ "Australia/Melbourne", { "s": { "f": "+1100", "t": "+1000", "n": "AEST", "s": "19700405T030000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1000", "t": "+1100", "n": "AEDT", "s": "19701004T020000", "r": { "m": 10, "d": "1SU" } } } ], [ "Australia/Perth", { "s": { "f": "+0800", "n": "AWST" } } ], [ "Australia/Sydney", { "s": { "f": "+1100", "t": "+1000", "n": "AEST", "s": "19700405T030000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1000", "t": "+1100", "n": "AEDT", "s": "19701004T020000", "r": { "m": 10, "d": "1SU" } } } ], [ "Etc/GMT-0", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Etc/GMT-1", { "s": { "f": "-0100", "n": "-01" } } ], [ "Etc/GMT-10", { "s": { "f": "-1000", "n": "-10" } } ], [ "Etc/GMT-11", { "s": { "f": "-1100", "n": "-11" } } ], [ "Etc/GMT-12", { "s": { "f": "-1200", "n": "-12" } } ], [ "Etc/GMT-2", { "s": { "f": "-0200", "n": "-02" } } ], [ "Etc/GMT-3", { "s": { "f": "-0300", "n": "-03" } } ], [ "Etc/GMT-4", { "s": { "f": "-0400", "n": "-04" } } ], [ "Etc/GMT-5", { "s": { "f": "-0500", "n": "-05" } } ], [ "Etc/GMT-6", { "s": { "f": "-0600", "n": "-06" } } ], [ "Etc/GMT-7", { "s": { "f": "-0700", "n": "-07" } } ], [ "Etc/GMT-8", { "s": { "f": "-0800", "n": "-08" } } ], [ "Etc/GMT-9", { "s": { "f": "-0900", "n": "-09" } } ], [ "Etc/GMT", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Etc/GMT+0", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Etc/GMT+1", { "s": { "f": "+0100", "n": "+01" } } ], [ "Etc/GMT+10", { "s": { "f": "+1000", "n": "+10" } } ], [ "Etc/GMT+11", { "s": { "f": "+1100", "n": "+11" } } ], [ "Etc/GMT+12", { "s": { "f": "+1200", "n": "+12" } } ], [ "Etc/GMT+13", { "s": { "f": "+1300", "n": "+13" } } ], [ "Etc/GMT+14", { "s": { "f": "+1400", "n": "+14" } } ], [ "Etc/GMT+2", { "s": { "f": "+0200", "n": "+02" } } ], [ "Etc/GMT+3", { "s": { "f": "+0300", "n": "+03" } } ], [ "Etc/GMT+4", { "s": { "f": "+0400", "n": "+04" } } ], [ "Etc/GMT+5", { "s": { "f": "+0500", "n": "+05" } } ], [ "Etc/GMT+6", { "s": { "f": "+0600", "n": "+06" } } ], [ "Etc/GMT+7", { "s": { "f": "+0700", "n": "+07" } } ], [ "Etc/GMT+8", { "s": { "f": "+0800", "n": "+08" } } ], [ "Etc/GMT+9", { "s": { "f": "+0900", "n": "+09" } } ], [ "Etc/GMT0", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Etc/Greenwich", { "s": { "f": "+0000", "n": "GMT" } } ], [ "Etc/UCT", { "s": { "f": "+0000", "n": "UCT" } } ], [ "Etc/Universal", { "s": { "f": "+0000", "n": "UTC" } } ], [ "Etc/UTC", { "s": { "f": "+0000", "n": "UTC" } } ], [ "Etc/Zulu", { "s": { "f": "+0000", "n": "UTC" } } ], [ "Europe/Amsterdam", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Andorra", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Astrakhan", { "s": { "f": "+0400", "n": "+04" } } ], [ "Europe/Athens", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Belgrade", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Berlin", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Bratislava", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Brussels", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Bucharest", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Budapest", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Busingen", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Chisinau", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Copenhagen", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Dublin", { "s": { "f": "+0100", "t": "+0000", "n": "GMT", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "IST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Gibraltar", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Guernsey", { "s": { "f": "+0100", "t": "+0000", "n": "GMT", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "BST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Helsinki", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Isle_of_Man", { "s": { "f": "+0100", "t": "+0000", "n": "GMT", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "BST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Istanbul", { "s": { "f": "+0300", "n": "+03" } } ], [ "Europe/Jersey", { "s": { "f": "+0100", "t": "+0000", "n": "GMT", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "BST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Kaliningrad", { "s": { "f": "+0200", "n": "EET" } } ], [ "Europe/Kiev", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Kirov", { "s": { "f": "+0300", "n": "+03" } } ], [ "Europe/Lisbon", { "s": { "f": "+0100", "t": "+0000", "n": "WET", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "WEST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Ljubljana", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/London", { "s": { "f": "+0100", "t": "+0000", "n": "GMT", "s": "19701025T020000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0000", "t": "+0100", "n": "BST", "s": "19700329T010000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Luxembourg", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Madrid", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Malta", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Mariehamn", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Minsk", { "s": { "f": "+0300", "n": "+03" } } ], [ "Europe/Monaco", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Moscow", { "s": { "f": "+0300", "n": "MSK" } } ], [ "Europe/Nicosia", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Oslo", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Paris", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Podgorica", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Prague", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Riga", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Rome", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Samara", { "s": { "f": "+0400", "n": "+04" } } ], [ "Europe/San_Marino", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Sarajevo", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Saratov", { "s": { "f": "+0400", "n": "+04" } } ], [ "Europe/Simferopol", { "s": { "f": "+0300", "n": "MSK" } } ], [ "Europe/Skopje", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Sofia", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Stockholm", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Tallinn", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Tirane", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Ulyanovsk", { "s": { "f": "+0400", "n": "+04" } } ], [ "Europe/Uzhgorod", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Vaduz", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Vatican", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Vienna", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Vilnius", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Volgograd", { "s": { "f": "+0400", "n": "+04" } } ], [ "Europe/Warsaw", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Zagreb", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Zaporozhye", { "s": { "f": "+0300", "t": "+0200", "n": "EET", "s": "19701025T040000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0200", "t": "+0300", "n": "EEST", "s": "19700329T030000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Europe/Zurich", { "s": { "f": "+0200", "t": "+0100", "n": "CET", "s": "19701025T030000", "r": { "m": 10, "d": "-1SU" } }, "d": { "f": "+0100", "t": "+0200", "n": "CEST", "s": "19700329T020000", "r": { "m": 3, "d": "-1SU" } } } ], [ "Indian/Antananarivo", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Indian/Chagos", { "s": { "f": "+0600", "n": "+06" } } ], [ "Indian/Christmas", { "s": { "f": "+0700", "n": "+07" } } ], [ "Indian/Cocos", { "s": { "f": "+0630", "n": "+0630" } } ], [ "Indian/Comoro", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Indian/Kerguelen", { "s": { "f": "+0500", "n": "+05" } } ], [ "Indian/Mahe", { "s": { "f": "+0400", "n": "+04" } } ], [ "Indian/Maldives", { "s": { "f": "+0500", "n": "+05" } } ], [ "Indian/Mauritius", { "s": { "f": "+0400", "n": "+04" } } ], [ "Indian/Mayotte", { "s": { "f": "+0300", "n": "EAT" } } ], [ "Indian/Reunion", { "s": { "f": "+0400", "n": "+04" } } ], [ "Pacific/Apia", { "s": { "f": "+1400", "t": "+1300", "n": "+13", "s": "19700405T040000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1300", "t": "+1400", "n": "+14", "s": "19700927T030000", "r": { "m": 9, "d": "-1SU" } } } ], [ "Pacific/Auckland", { "s": { "f": "+1300", "t": "+1200", "n": "NZST", "s": "19700405T030000", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1200", "t": "+1300", "n": "NZDT", "s": "19700927T020000", "r": { "m": 9, "d": "-1SU" } } } ], [ "Pacific/Bougainville", { "s": { "f": "+1100", "n": "+11" } } ], [ "Pacific/Chatham", { "s": { "f": "+1345", "t": "+1245", "n": "+1245", "s": "19700405T034500", "r": { "m": 4, "d": "1SU" } }, "d": { "f": "+1245", "t": "+1345", "n": "+1345", "s": "19700927T024500", "r": { "m": 9, "d": "-1SU" } } } ], [ "Pacific/Chuuk", { "s": { "f": "+1000", "n": "+10" } } ], [ "Pacific/Easter", { "s": { "f": "-0500", "t": "-0600", "n": "-06", "s": "19700404T220000", "r": { "m": 4, "d": "1SA" } }, "d": { "f": "-0600", "t": "-0500", "n": "-05", "s": "19700905T220000", "r": { "m": 9, "d": "1SA" } } } ], [ "Pacific/Efate", { "s": { "f": "+1100", "n": "+11" } } ], [ "Pacific/Enderbury", { "s": { "f": "+1300", "n": "+13" } } ], [ "Pacific/Fakaofo", { "s": { "f": "+1300", "n": "+13" } } ], [ "Pacific/Fiji", { "s": { "f": "+1300", "t": "+1200", "n": "+12", "s": "19700118T030000", "r": { "m": 1, "d": "-2SU" } }, "d": { "f": "+1200", "t": "+1300", "n": "+13", "s": "19701101T020000", "r": { "m": 11, "d": "1SU" } } } ], [ "Pacific/Funafuti", { "s": { "f": "+1200", "n": "+12" } } ], [ "Pacific/Galapagos", { "s": { "f": "-0600", "n": "-06" } } ], [ "Pacific/Gambier", { "s": { "f": "-0900", "n": "-09" } } ], [ "Pacific/Guadalcanal", { "s": { "f": "+1100", "n": "+11" } } ], [ "Pacific/Guam", { "s": { "f": "+1000", "n": "ChST" } } ], [ "Pacific/Honolulu", { "s": { "f": "-1000", "n": "HST" } } ], [ "Pacific/Kiritimati", { "s": { "f": "+1400", "n": "+14" } } ], [ "Pacific/Kosrae", { "s": { "f": "+1100", "n": "+11" } } ], [ "Pacific/Kwajalein", { "s": { "f": "+1200", "n": "+12" } } ], [ "Pacific/Majuro", { "s": { "f": "+1200", "n": "+12" } } ], [ "Pacific/Marquesas", { "s": { "f": "-0930", "n": "-0930" } } ], [ "Pacific/Midway", { "s": { "f": "-1100", "n": "SST" } } ], [ "Pacific/Nauru", { "s": { "f": "+1200", "n": "+12" } } ], [ "Pacific/Niue", { "s": { "f": "-1100", "n": "-11" } } ], [ "Pacific/Norfolk", { "s": { "f": "+1100", "n": "+11" } } ], [ "Pacific/Noumea", { "s": { "f": "+1100", "n": "+11" } } ], [ "Pacific/Pago_Pago", { "s": { "f": "-1100", "n": "SST" } } ], [ "Pacific/Palau", { "s": { "f": "+0900", "n": "+09" } } ], [ "Pacific/Pitcairn", { "s": { "f": "-0800", "n": "-08" } } ], [ "Pacific/Pohnpei", { "s": { "f": "+1100", "n": "+11" } } ], [ "Pacific/Port_Moresby", { "s": { "f": "+1000", "n": "+10" } } ], [ "Pacific/Rarotonga", { "s": { "f": "-1000", "n": "-10" } } ], [ "Pacific/Saipan", { "s": { "f": "+1000", "n": "ChST" } } ], [ "Pacific/Tahiti", { "s": { "f": "-1000", "n": "-10" } } ], [ "Pacific/Tarawa", { "s": { "f": "+1200", "n": "+12" } } ], [ "Pacific/Tongatapu", { "s": { "f": "+1300", "n": "+13" } } ], [ "Pacific/Wake", { "s": { "f": "+1200", "n": "+12" } } ], [ "Pacific/Wallis", { "s": { "f": "+1200", "n": "+12" } } ] ]); /***/ }), /***/ "./node_modules/ieee754/index.js": /*!***************************************!*\ !*** ./node_modules/ieee754/index.js ***! \***************************************/ /***/ ((__unused_webpack_module, exports) => { /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = (nBytes * 8) - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var nBits = -7 var i = isLE ? (nBytes - 1) : 0 var d = isLE ? -1 : 1 var s = buffer[offset + i] i += d e = s & ((1 << (-nBits)) - 1) s >>= (-nBits) nBits += eLen for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} m = e & ((1 << (-nBits)) - 1) e >>= (-nBits) nBits += mLen for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} if (e === 0) { e = 1 - eBias } else if (e === eMax) { return m ? NaN : ((s ? -1 : 1) * Infinity) } else { m = m + Math.pow(2, mLen) e = e - eBias } return (s ? -1 : 1) * m * Math.pow(2, e - mLen) } exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { var e, m, c var eLen = (nBytes * 8) - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) var i = isLE ? 0 : (nBytes - 1) var d = isLE ? 1 : -1 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 value = Math.abs(value) if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0 e = eMax } else { e = Math.floor(Math.log(value) / Math.LN2) if (value * (c = Math.pow(2, -e)) < 1) { e-- c *= 2 } if (e + eBias >= 1) { value += rt / c } else { value += rt * Math.pow(2, 1 - eBias) } if (value * c >= 2) { e++ c /= 2 } if (e + eBias >= eMax) { m = 0 e = eMax } else if (e + eBias >= 1) { m = ((value * c) - 1) * Math.pow(2, mLen) e = e + eBias } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) e = 0 } } for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} e = (e << mLen) | m eLen += mLen for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} buffer[offset + i - d] |= s * 128 } /***/ }), /***/ "./node_modules/inline-style-parser/index.js": /*!***************************************************!*\ !*** ./node_modules/inline-style-parser/index.js ***! \***************************************************/ /***/ ((module) => { // http://www.w3.org/TR/CSS21/grammar.html // https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027 var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g; var NEWLINE_REGEX = /\n/g; var WHITESPACE_REGEX = /^\s*/; // declaration var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/; var COLON_REGEX = /^:\s*/; var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/; var SEMICOLON_REGEX = /^[;\s]*/; // https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill var TRIM_REGEX = /^\s+|\s+$/g; // strings var NEWLINE = '\n'; var FORWARD_SLASH = '/'; var ASTERISK = '*'; var EMPTY_STRING = ''; // types var TYPE_COMMENT = 'comment'; var TYPE_DECLARATION = 'declaration'; /** * @param {String} style * @param {Object} [options] * @return {Object[]} * @throws {TypeError} * @throws {Error} */ module.exports = function(style, options) { if (typeof style !== 'string') { throw new TypeError('First argument must be a string'); } if (!style) return []; options = options || {}; /** * Positional. */ var lineno = 1; var column = 1; /** * Update lineno and column based on `str`. * * @param {String} str */ function updatePosition(str) { var lines = str.match(NEWLINE_REGEX); if (lines) lineno += lines.length; var i = str.lastIndexOf(NEWLINE); column = ~i ? str.length - i : column + str.length; } /** * Mark position and patch `node.position`. * * @return {Function} */ function position() { var start = { line: lineno, column: column }; return function(node) { node.position = new Position(start); whitespace(); return node; }; } /** * Store position information for a node. * * @constructor * @property {Object} start * @property {Object} end * @property {undefined|String} source */ function Position(start) { this.start = start; this.end = { line: lineno, column: column }; this.source = options.source; } /** * Non-enumerable source string. */ Position.prototype.content = style; var errorsList = []; /** * Error `msg`. * * @param {String} msg * @throws {Error} */ function error(msg) { var err = new Error( options.source + ':' + lineno + ':' + column + ': ' + msg ); err.reason = msg; err.filename = options.source; err.line = lineno; err.column = column; err.source = style; if (options.silent) { errorsList.push(err); } else { throw err; } } /** * Match `re` and return captures. * * @param {RegExp} re * @return {undefined|Array} */ function match(re) { var m = re.exec(style); if (!m) return; var str = m[0]; updatePosition(str); style = style.slice(str.length); return m; } /** * Parse whitespace. */ function whitespace() { match(WHITESPACE_REGEX); } /** * Parse comments. * * @param {Object[]} [rules] * @return {Object[]} */ function comments(rules) { var c; rules = rules || []; while ((c = comment())) { if (c !== false) { rules.push(c); } } return rules; } /** * Parse comment. * * @return {Object} * @throws {Error} */ function comment() { var pos = position(); if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return; var i = 2; while ( EMPTY_STRING != style.charAt(i) && (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1)) ) { ++i; } i += 2; if (EMPTY_STRING === style.charAt(i - 1)) { return error('End of comment missing'); } var str = style.slice(2, i - 2); column += 2; updatePosition(str); style = style.slice(i); column += 2; return pos({ type: TYPE_COMMENT, comment: str }); } /** * Parse declaration. * * @return {Object} * @throws {Error} */ function declaration() { var pos = position(); // prop var prop = match(PROPERTY_REGEX); if (!prop) return; comment(); // : if (!match(COLON_REGEX)) return error("property missing ':'"); // val var val = match(VALUE_REGEX); var ret = pos({ type: TYPE_DECLARATION, property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)), value: val ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING)) : EMPTY_STRING }); // ; match(SEMICOLON_REGEX); return ret; } /** * Parse declarations. * * @return {Object[]} */ function declarations() { var decls = []; comments(decls); // declarations var decl; while ((decl = declaration())) { if (decl !== false) { decls.push(decl); comments(decls); } } return decls; } whitespace(); return declarations(); }; /** * Trim `str`. * * @param {String} str * @return {String} */ function trim(str) { return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING; } /***/ }), /***/ "./node_modules/is-buffer/index.js": /*!*****************************************!*\ !*** ./node_modules/is-buffer/index.js ***! \*****************************************/ /***/ ((module) => { /*! * Determine if an object is a Buffer * * @author Feross Aboukhadijeh * @license MIT */ // The _isBuffer check is for Safari 5-7 support, because it's missing // Object.prototype.constructor. Remove this eventually module.exports = function (obj) { return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) } function isBuffer (obj) { return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) } // For Node v0.10 support. Remove this eventually. function isSlowBuffer (obj) { return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) } /***/ }), /***/ "./node_modules/jstz/dist/jstz.js": /*!****************************************!*\ !*** ./node_modules/jstz/dist/jstz.js ***! \****************************************/ /***/ ((module, exports, __webpack_require__) => { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root) {/*global exports, Intl*/ /** * This script gives you the zone info key representing your device's time zone setting. * * @name jsTimezoneDetect * @version 1.0.6 * @author Jon Nylander * @license MIT License - https://bitbucket.org/pellepim/jstimezonedetect/src/default/LICENCE.txt * * For usage and examples, visit: * http://pellepim.bitbucket.org/jstz/ * * Copyright (c) Jon Nylander */ /** * Namespace to hold all the code for timezone detection. */ var jstz = (function () { 'use strict'; var HEMISPHERE_SOUTH = 's', consts = { DAY: 86400000, HOUR: 3600000, MINUTE: 60000, SECOND: 1000, BASELINE_YEAR: 2014, MAX_SCORE: 864000000, // 10 days AMBIGUITIES: { 'America/Denver': ['America/Mazatlan'], 'Europe/London': ['Africa/Casablanca'], 'America/Chicago': ['America/Mexico_City'], 'America/Asuncion': ['America/Campo_Grande', 'America/Santiago'], 'America/Montevideo': ['America/Sao_Paulo', 'America/Santiago'], // Europe/Minsk should not be in this list... but Windows. 'Asia/Beirut': ['Asia/Amman', 'Asia/Jerusalem', 'Europe/Helsinki', 'Asia/Damascus', 'Africa/Cairo', 'Asia/Gaza', 'Europe/Minsk'], 'Pacific/Auckland': ['Pacific/Fiji'], 'America/Los_Angeles': ['America/Santa_Isabel'], 'America/New_York': ['America/Havana'], 'America/Halifax': ['America/Goose_Bay'], 'America/Godthab': ['America/Miquelon'], 'Asia/Dubai': ['Asia/Yerevan'], 'Asia/Jakarta': ['Asia/Krasnoyarsk'], 'Asia/Shanghai': ['Asia/Irkutsk', 'Australia/Perth'], 'Australia/Sydney': ['Australia/Lord_Howe'], 'Asia/Tokyo': ['Asia/Yakutsk'], 'Asia/Dhaka': ['Asia/Omsk'], // In the real world Yerevan is not ambigous for Baku... but Windows. 'Asia/Baku': ['Asia/Yerevan'], 'Australia/Brisbane': ['Asia/Vladivostok'], 'Pacific/Noumea': ['Asia/Vladivostok'], 'Pacific/Majuro': ['Asia/Kamchatka', 'Pacific/Fiji'], 'Pacific/Tongatapu': ['Pacific/Apia'], 'Asia/Baghdad': ['Europe/Minsk', 'Europe/Moscow'], 'Asia/Karachi': ['Asia/Yekaterinburg'], 'Africa/Johannesburg': ['Asia/Gaza', 'Africa/Cairo'] } }, /** * Gets the offset in minutes from UTC for a certain date. * @param {Date} date * @returns {Number} */ get_date_offset = function get_date_offset(date) { var offset = -date.getTimezoneOffset(); return (offset !== null ? offset : 0); }, /** * This function does some basic calculations to create information about * the user's timezone. It uses REFERENCE_YEAR as a solid year for which * the script has been tested rather than depend on the year set by the * client device. * * Returns a key that can be used to do lookups in jstz.olson.timezones. * eg: "720,1,2". * * @returns {String} */ lookup_key = function lookup_key() { var january_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 0, 2)), june_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 5, 2)), diff = january_offset - june_offset; if (diff < 0) { return january_offset + ",1"; } else if (diff > 0) { return june_offset + ",1," + HEMISPHERE_SOUTH; } return january_offset + ",0"; }, /** * Tries to get the time zone key directly from the operating system for those * environments that support the ECMAScript Internationalization API. */ get_from_internationalization_api = function get_from_internationalization_api() { var format, timezone; if (typeof Intl === "undefined" || typeof Intl.DateTimeFormat === "undefined") { return; } format = Intl.DateTimeFormat(); if (typeof format === "undefined" || typeof format.resolvedOptions === "undefined") { return; } timezone = format.resolvedOptions().timeZone; if (timezone && (timezone.indexOf("/") > -1 || timezone === 'UTC') && timezone.indexOf("Etc") != 0) { return timezone; } }, /** * Starting point for getting all the DST rules for a specific year * for the current timezone (as described by the client system). * * Returns an object with start and end attributes, or false if no * DST rules were found for the year. * * @param year * @returns {Object} || {Boolean} */ dst_dates = function dst_dates(year) { var yearstart = new Date(year, 0, 1, 0, 0, 1, 0).getTime(); var yearend = new Date(year, 12, 31, 23, 59, 59).getTime(); var current = yearstart; var offset = (new Date(current)).getTimezoneOffset(); var dst_start = null; var dst_end = null; while (current < yearend - 86400000) { var dateToCheck = new Date(current); var dateToCheckOffset = dateToCheck.getTimezoneOffset(); if (dateToCheckOffset !== offset) { if (dateToCheckOffset < offset) { dst_start = dateToCheck; } if (dateToCheckOffset > offset) { dst_end = dateToCheck; } offset = dateToCheckOffset; } current += 86400000; } if (dst_start && dst_end) { return { s: find_dst_fold(dst_start).getTime(), e: find_dst_fold(dst_end).getTime() }; } return false; }, /** * Probably completely unnecessary function that recursively finds the * exact (to the second) time when a DST rule was changed. * * @param a_date - The candidate Date. * @param padding - integer specifying the padding to allow around the candidate * date for finding the fold. * @param iterator - integer specifying how many milliseconds to iterate while * searching for the fold. * * @returns {Date} */ find_dst_fold = function find_dst_fold(a_date, padding, iterator) { if (typeof padding === 'undefined') { padding = consts.DAY; iterator = consts.HOUR; } var date_start = new Date(a_date.getTime() - padding).getTime(); var date_end = a_date.getTime() + padding; var offset = new Date(date_start).getTimezoneOffset(); var current = date_start; var dst_change = null; while (current < date_end - iterator) { var dateToCheck = new Date(current); var dateToCheckOffset = dateToCheck.getTimezoneOffset(); if (dateToCheckOffset !== offset) { dst_change = dateToCheck; break; } current += iterator; } if (padding === consts.DAY) { return find_dst_fold(dst_change, consts.HOUR, consts.MINUTE); } if (padding === consts.HOUR) { return find_dst_fold(dst_change, consts.MINUTE, consts.SECOND); } return dst_change; }, windows7_adaptations = function windows7_adaptions(rule_list, preliminary_timezone, score, sample) { if (score !== 'N/A') { return score; } if (preliminary_timezone === 'Asia/Beirut') { if (sample.name === 'Africa/Cairo') { if (rule_list[6].s === 1398376800000 && rule_list[6].e === 1411678800000) { return 0; } } if (sample.name === 'Asia/Jerusalem') { if (rule_list[6].s === 1395964800000 && rule_list[6].e === 1411858800000) { return 0; } } } else if (preliminary_timezone === 'America/Santiago') { if (sample.name === 'America/Asuncion') { if (rule_list[6].s === 1412481600000 && rule_list[6].e === 1397358000000) { return 0; } } if (sample.name === 'America/Campo_Grande') { if (rule_list[6].s === 1413691200000 && rule_list[6].e === 1392519600000) { return 0; } } } else if (preliminary_timezone === 'America/Montevideo') { if (sample.name === 'America/Sao_Paulo') { if (rule_list[6].s === 1413687600000 && rule_list[6].e === 1392516000000) { return 0; } } } else if (preliminary_timezone === 'Pacific/Auckland') { if (sample.name === 'Pacific/Fiji') { if (rule_list[6].s === 1414245600000 && rule_list[6].e === 1396101600000) { return 0; } } } return score; }, /** * Takes the DST rules for the current timezone, and proceeds to find matches * in the jstz.olson.dst_rules.zones array. * * Compares samples to the current timezone on a scoring basis. * * Candidates are ruled immediately if either the candidate or the current zone * has a DST rule where the other does not. * * Candidates are ruled out immediately if the current zone has a rule that is * outside the DST scope of the candidate. * * Candidates are included for scoring if the current zones rules fall within the * span of the samples rules. * * Low score is best, the score is calculated by summing up the differences in DST * rules and if the consts.MAX_SCORE is overreached the candidate is ruled out. * * Yah follow? :) * * @param rule_list * @param preliminary_timezone * @returns {*} */ best_dst_match = function best_dst_match(rule_list, preliminary_timezone) { var score_sample = function score_sample(sample) { var score = 0; for (var j = 0; j < rule_list.length; j++) { // Both sample and current time zone report DST during the year. if (!!sample.rules[j] && !!rule_list[j]) { // The current time zone's DST rules are inside the sample's. Include. if (rule_list[j].s >= sample.rules[j].s && rule_list[j].e <= sample.rules[j].e) { score = 0; score += Math.abs(rule_list[j].s - sample.rules[j].s); score += Math.abs(sample.rules[j].e - rule_list[j].e); // The current time zone's DST rules are outside the sample's. Discard. } else { score = 'N/A'; break; } // The max score has been reached. Discard. if (score > consts.MAX_SCORE) { score = 'N/A'; break; } } } score = windows7_adaptations(rule_list, preliminary_timezone, score, sample); return score; }; var scoreboard = {}; var dst_zones = jstz.olson.dst_rules.zones; var dst_zones_length = dst_zones.length; var ambiguities = consts.AMBIGUITIES[preliminary_timezone]; for (var i = 0; i < dst_zones_length; i++) { var sample = dst_zones[i]; var score = score_sample(dst_zones[i]); if (score !== 'N/A') { scoreboard[sample.name] = score; } } for (var tz in scoreboard) { if (scoreboard.hasOwnProperty(tz)) { for (var j = 0; j < ambiguities.length; j++) { if (ambiguities[j] === tz) { return tz; } } } } return preliminary_timezone; }, /** * Takes the preliminary_timezone as detected by lookup_key(). * * Builds up the current timezones DST rules for the years defined * in the jstz.olson.dst_rules.years array. * * If there are no DST occurences for those years, immediately returns * the preliminary timezone. Otherwise proceeds and tries to solve * ambiguities. * * @param preliminary_timezone * @returns {String} timezone_name */ get_by_dst = function get_by_dst(preliminary_timezone) { var get_rules = function get_rules() { var rule_list = []; for (var i = 0; i < jstz.olson.dst_rules.years.length; i++) { var year_rules = dst_dates(jstz.olson.dst_rules.years[i]); rule_list.push(year_rules); } return rule_list; }; var check_has_dst = function check_has_dst(rules) { for (var i = 0; i < rules.length; i++) { if (rules[i] !== false) { return true; } } return false; }; var rules = get_rules(); var has_dst = check_has_dst(rules); if (has_dst) { return best_dst_match(rules, preliminary_timezone); } return preliminary_timezone; }, /** * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary. * * Returns an object with one function ".name()" * * @returns Object */ determine = function determine() { var preliminary_tz = get_from_internationalization_api(); if (!preliminary_tz) { preliminary_tz = jstz.olson.timezones[lookup_key()]; if (typeof consts.AMBIGUITIES[preliminary_tz] !== 'undefined') { preliminary_tz = get_by_dst(preliminary_tz); } } return { name: function () { return preliminary_tz; }, stdTimezoneOffset : function () { // negative to match what (new Date).getTimezoneOffset() will return return -lookup_key().split(',')[0]; }, timezoneOffset : function () { // negative to match what (new Date).getTimezoneOffset() will return return -get_date_offset(new Date()) } }; }; return { determine: determine }; }()); jstz.olson = jstz.olson || {}; /** * The keys in this dictionary are comma separated as such: * * First the offset compared to UTC time in minutes. * * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it * does. * * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere, * only interesting for timezones with DST. * * The mapped arrays is used for constructing the jstz.TimeZone object from within * jstz.determine(); */ jstz.olson.timezones = { '-720,0': 'Etc/GMT+12', '-660,0': 'Pacific/Pago_Pago', '-660,1,s': 'Pacific/Apia', // Why? Because windows... cry! '-600,1': 'America/Adak', '-600,0': 'Pacific/Honolulu', '-570,0': 'Pacific/Marquesas', '-540,0': 'Pacific/Gambier', '-540,1': 'America/Anchorage', '-480,1': 'America/Los_Angeles', '-480,0': 'Pacific/Pitcairn', '-420,0': 'America/Phoenix', '-420,1': 'America/Denver', '-360,0': 'America/Guatemala', '-360,1': 'America/Chicago', '-360,1,s': 'Pacific/Easter', '-300,0': 'America/Bogota', '-300,1': 'America/New_York', '-270,0': 'America/Caracas', '-240,1': 'America/Halifax', '-240,0': 'America/Santo_Domingo', '-240,1,s': 'America/Asuncion', '-210,1': 'America/St_Johns', '-180,1': 'America/Godthab', '-180,0': 'America/Argentina/Buenos_Aires', '-180,1,s': 'America/Montevideo', '-120,0': 'America/Noronha', '-120,1': 'America/Noronha', '-60,1': 'Atlantic/Azores', '-60,0': 'Atlantic/Cape_Verde', '0,0': 'UTC', '0,1': 'Europe/London', '60,1': 'Europe/Berlin', '60,0': 'Africa/Lagos', '60,1,s': 'Africa/Windhoek', '120,1': 'Asia/Beirut', '120,0': 'Africa/Johannesburg', '180,0': 'Asia/Baghdad', '180,1': 'Europe/Moscow', '210,1': 'Asia/Tehran', '240,0': 'Asia/Dubai', '240,1': 'Asia/Baku', '270,0': 'Asia/Kabul', '300,1': 'Asia/Yekaterinburg', '300,0': 'Asia/Karachi', '330,0': 'Asia/Kolkata', '345,0': 'Asia/Kathmandu', '360,0': 'Asia/Dhaka', '360,1': 'Asia/Omsk', '390,0': 'Asia/Rangoon', '420,1': 'Asia/Krasnoyarsk', '420,0': 'Asia/Jakarta', '480,0': 'Asia/Shanghai', '480,1': 'Asia/Irkutsk', '525,0': 'Australia/Eucla', '525,1,s': 'Australia/Eucla', '540,1': 'Asia/Yakutsk', '540,0': 'Asia/Tokyo', '570,0': 'Australia/Darwin', '570,1,s': 'Australia/Adelaide', '600,0': 'Australia/Brisbane', '600,1': 'Asia/Vladivostok', '600,1,s': 'Australia/Sydney', '630,1,s': 'Australia/Lord_Howe', '660,1': 'Asia/Kamchatka', '660,0': 'Pacific/Noumea', '690,0': 'Pacific/Norfolk', '720,1,s': 'Pacific/Auckland', '720,0': 'Pacific/Majuro', '765,1,s': 'Pacific/Chatham', '780,0': 'Pacific/Tongatapu', '780,1,s': 'Pacific/Apia', '840,0': 'Pacific/Kiritimati' }; /* Build time: 2015-11-02 13:01:00Z Build by invoking python utilities/dst.py generate */ jstz.olson.dst_rules = { "years": [ 2008, 2009, 2010, 2011, 2012, 2013, 2014 ], "zones": [ { "name": "Africa/Cairo", "rules": [ { "e": 1219957200000, "s": 1209074400000 }, { "e": 1250802000000, "s": 1240524000000 }, { "e": 1285880400000, "s": 1284069600000 }, false, false, false, { "e": 1411678800000, "s": 1406844000000 } ] }, { "name": "Africa/Casablanca", "rules": [ { "e": 1220223600000, "s": 1212278400000 }, { "e": 1250809200000, "s": 1243814400000 }, { "e": 1281222000000, "s": 1272758400000 }, { "e": 1312066800000, "s": 1301788800000 }, { "e": 1348970400000, "s": 1345428000000 }, { "e": 1382839200000, "s": 1376100000000 }, { "e": 1414288800000, "s": 1406944800000 } ] }, { "name": "America/Asuncion", "rules": [ { "e": 1205031600000, "s": 1224388800000 }, { "e": 1236481200000, "s": 1255838400000 }, { "e": 1270954800000, "s": 1286078400000 }, { "e": 1302404400000, "s": 1317528000000 }, { "e": 1333854000000, "s": 1349582400000 }, { "e": 1364094000000, "s": 1381032000000 }, { "e": 1395543600000, "s": 1412481600000 } ] }, { "name": "America/Campo_Grande", "rules": [ { "e": 1203217200000, "s": 1224388800000 }, { "e": 1234666800000, "s": 1255838400000 }, { "e": 1266721200000, "s": 1287288000000 }, { "e": 1298170800000, "s": 1318737600000 }, { "e": 1330225200000, "s": 1350792000000 }, { "e": 1361070000000, "s": 1382241600000 }, { "e": 1392519600000, "s": 1413691200000 } ] }, { "name": "America/Goose_Bay", "rules": [ { "e": 1225594860000, "s": 1205035260000 }, { "e": 1257044460000, "s": 1236484860000 }, { "e": 1289098860000, "s": 1268539260000 }, { "e": 1320555600000, "s": 1299988860000 }, { "e": 1352005200000, "s": 1331445600000 }, { "e": 1383454800000, "s": 1362895200000 }, { "e": 1414904400000, "s": 1394344800000 } ] }, { "name": "America/Havana", "rules": [ { "e": 1224997200000, "s": 1205643600000 }, { "e": 1256446800000, "s": 1236488400000 }, { "e": 1288501200000, "s": 1268542800000 }, { "e": 1321160400000, "s": 1300597200000 }, { "e": 1352005200000, "s": 1333256400000 }, { "e": 1383454800000, "s": 1362891600000 }, { "e": 1414904400000, "s": 1394341200000 } ] }, { "name": "America/Mazatlan", "rules": [ { "e": 1225008000000, "s": 1207472400000 }, { "e": 1256457600000, "s": 1238922000000 }, { "e": 1288512000000, "s": 1270371600000 }, { "e": 1319961600000, "s": 1301821200000 }, { "e": 1351411200000, "s": 1333270800000 }, { "e": 1382860800000, "s": 1365325200000 }, { "e": 1414310400000, "s": 1396774800000 } ] }, { "name": "America/Mexico_City", "rules": [ { "e": 1225004400000, "s": 1207468800000 }, { "e": 1256454000000, "s": 1238918400000 }, { "e": 1288508400000, "s": 1270368000000 }, { "e": 1319958000000, "s": 1301817600000 }, { "e": 1351407600000, "s": 1333267200000 }, { "e": 1382857200000, "s": 1365321600000 }, { "e": 1414306800000, "s": 1396771200000 } ] }, { "name": "America/Miquelon", "rules": [ { "e": 1225598400000, "s": 1205038800000 }, { "e": 1257048000000, "s": 1236488400000 }, { "e": 1289102400000, "s": 1268542800000 }, { "e": 1320552000000, "s": 1299992400000 }, { "e": 1352001600000, "s": 1331442000000 }, { "e": 1383451200000, "s": 1362891600000 }, { "e": 1414900800000, "s": 1394341200000 } ] }, { "name": "America/Santa_Isabel", "rules": [ { "e": 1225011600000, "s": 1207476000000 }, { "e": 1256461200000, "s": 1238925600000 }, { "e": 1288515600000, "s": 1270375200000 }, { "e": 1319965200000, "s": 1301824800000 }, { "e": 1351414800000, "s": 1333274400000 }, { "e": 1382864400000, "s": 1365328800000 }, { "e": 1414314000000, "s": 1396778400000 } ] }, { "name": "America/Santiago", "rules": [ { "e": 1206846000000, "s": 1223784000000 }, { "e": 1237086000000, "s": 1255233600000 }, { "e": 1270350000000, "s": 1286683200000 }, { "e": 1304823600000, "s": 1313899200000 }, { "e": 1335668400000, "s": 1346558400000 }, { "e": 1367118000000, "s": 1378612800000 }, { "e": 1398567600000, "s": 1410062400000 } ] }, { "name": "America/Sao_Paulo", "rules": [ { "e": 1203213600000, "s": 1224385200000 }, { "e": 1234663200000, "s": 1255834800000 }, { "e": 1266717600000, "s": 1287284400000 }, { "e": 1298167200000, "s": 1318734000000 }, { "e": 1330221600000, "s": 1350788400000 }, { "e": 1361066400000, "s": 1382238000000 }, { "e": 1392516000000, "s": 1413687600000 } ] }, { "name": "Asia/Amman", "rules": [ { "e": 1225404000000, "s": 1206655200000 }, { "e": 1256853600000, "s": 1238104800000 }, { "e": 1288303200000, "s": 1269554400000 }, { "e": 1319752800000, "s": 1301608800000 }, false, false, { "e": 1414706400000, "s": 1395957600000 } ] }, { "name": "Asia/Damascus", "rules": [ { "e": 1225486800000, "s": 1207260000000 }, { "e": 1256850000000, "s": 1238104800000 }, { "e": 1288299600000, "s": 1270159200000 }, { "e": 1319749200000, "s": 1301608800000 }, { "e": 1351198800000, "s": 1333058400000 }, { "e": 1382648400000, "s": 1364508000000 }, { "e": 1414702800000, "s": 1395957600000 } ] }, { "name": "Asia/Dubai", "rules": [ false, false, false, false, false, false, false ] }, { "name": "Asia/Gaza", "rules": [ { "e": 1219957200000, "s": 1206655200000 }, { "e": 1252015200000, "s": 1238104800000 }, { "e": 1281474000000, "s": 1269640860000 }, { "e": 1312146000000, "s": 1301608860000 }, { "e": 1348178400000, "s": 1333058400000 }, { "e": 1380229200000, "s": 1364508000000 }, { "e": 1414098000000, "s": 1395957600000 } ] }, { "name": "Asia/Irkutsk", "rules": [ { "e": 1224957600000, "s": 1206813600000 }, { "e": 1256407200000, "s": 1238263200000 }, { "e": 1288461600000, "s": 1269712800000 }, false, false, false, false ] }, { "name": "Asia/Jerusalem", "rules": [ { "e": 1223161200000, "s": 1206662400000 }, { "e": 1254006000000, "s": 1238112000000 }, { "e": 1284246000000, "s": 1269561600000 }, { "e": 1317510000000, "s": 1301616000000 }, { "e": 1348354800000, "s": 1333065600000 }, { "e": 1382828400000, "s": 1364515200000 }, { "e": 1414278000000, "s": 1395964800000 } ] }, { "name": "Asia/Kamchatka", "rules": [ { "e": 1224943200000, "s": 1206799200000 }, { "e": 1256392800000, "s": 1238248800000 }, { "e": 1288450800000, "s": 1269698400000 }, false, false, false, false ] }, { "name": "Asia/Krasnoyarsk", "rules": [ { "e": 1224961200000, "s": 1206817200000 }, { "e": 1256410800000, "s": 1238266800000 }, { "e": 1288465200000, "s": 1269716400000 }, false, false, false, false ] }, { "name": "Asia/Omsk", "rules": [ { "e": 1224964800000, "s": 1206820800000 }, { "e": 1256414400000, "s": 1238270400000 }, { "e": 1288468800000, "s": 1269720000000 }, false, false, false, false ] }, { "name": "Asia/Vladivostok", "rules": [ { "e": 1224950400000, "s": 1206806400000 }, { "e": 1256400000000, "s": 1238256000000 }, { "e": 1288454400000, "s": 1269705600000 }, false, false, false, false ] }, { "name": "Asia/Yakutsk", "rules": [ { "e": 1224954000000, "s": 1206810000000 }, { "e": 1256403600000, "s": 1238259600000 }, { "e": 1288458000000, "s": 1269709200000 }, false, false, false, false ] }, { "name": "Asia/Yekaterinburg", "rules": [ { "e": 1224968400000, "s": 1206824400000 }, { "e": 1256418000000, "s": 1238274000000 }, { "e": 1288472400000, "s": 1269723600000 }, false, false, false, false ] }, { "name": "Asia/Yerevan", "rules": [ { "e": 1224972000000, "s": 1206828000000 }, { "e": 1256421600000, "s": 1238277600000 }, { "e": 1288476000000, "s": 1269727200000 }, { "e": 1319925600000, "s": 1301176800000 }, false, false, false ] }, { "name": "Australia/Lord_Howe", "rules": [ { "e": 1207407600000, "s": 1223134200000 }, { "e": 1238857200000, "s": 1254583800000 }, { "e": 1270306800000, "s": 1286033400000 }, { "e": 1301756400000, "s": 1317483000000 }, { "e": 1333206000000, "s": 1349537400000 }, { "e": 1365260400000, "s": 1380987000000 }, { "e": 1396710000000, "s": 1412436600000 } ] }, { "name": "Australia/Perth", "rules": [ { "e": 1206813600000, "s": 1224957600000 }, false, false, false, false, false, false ] }, { "name": "Europe/Helsinki", "rules": [ { "e": 1224982800000, "s": 1206838800000 }, { "e": 1256432400000, "s": 1238288400000 }, { "e": 1288486800000, "s": 1269738000000 }, { "e": 1319936400000, "s": 1301187600000 }, { "e": 1351386000000, "s": 1332637200000 }, { "e": 1382835600000, "s": 1364691600000 }, { "e": 1414285200000, "s": 1396141200000 } ] }, { "name": "Europe/Minsk", "rules": [ { "e": 1224979200000, "s": 1206835200000 }, { "e": 1256428800000, "s": 1238284800000 }, { "e": 1288483200000, "s": 1269734400000 }, false, false, false, false ] }, { "name": "Europe/Moscow", "rules": [ { "e": 1224975600000, "s": 1206831600000 }, { "e": 1256425200000, "s": 1238281200000 }, { "e": 1288479600000, "s": 1269730800000 }, false, false, false, false ] }, { "name": "Pacific/Apia", "rules": [ false, false, false, { "e": 1301752800000, "s": 1316872800000 }, { "e": 1333202400000, "s": 1348927200000 }, { "e": 1365256800000, "s": 1380376800000 }, { "e": 1396706400000, "s": 1411826400000 } ] }, { "name": "Pacific/Fiji", "rules": [ false, false, { "e": 1269698400000, "s": 1287842400000 }, { "e": 1327154400000, "s": 1319292000000 }, { "e": 1358604000000, "s": 1350741600000 }, { "e": 1390050000000, "s": 1382796000000 }, { "e": 1421503200000, "s": 1414850400000 } ] }, { "name": "Europe/London", "rules": [ { "e": 1224982800000, "s": 1206838800000 }, { "e": 1256432400000, "s": 1238288400000 }, { "e": 1288486800000, "s": 1269738000000 }, { "e": 1319936400000, "s": 1301187600000 }, { "e": 1351386000000, "s": 1332637200000 }, { "e": 1382835600000, "s": 1364691600000 }, { "e": 1414285200000, "s": 1396141200000 } ] } ] }; if ( true && typeof module.exports !== 'undefined') { module.exports = jstz; } else if (( true && __webpack_require__.amdD !== null) && (__webpack_require__.amdO != null)) { !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { return jstz; }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else { if (typeof root === 'undefined') { window.jstz = jstz; } else { root.jstz = jstz; } } }()); /***/ }), /***/ "./node_modules/jstz/index.js": /*!************************************!*\ !*** ./node_modules/jstz/index.js ***! \************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { module.exports = __webpack_require__(/*! ./dist/jstz.js */ "./node_modules/jstz/dist/jstz.js"); /***/ }), /***/ "./node_modules/linkify-string/dist/linkify-string.es.js": /*!***************************************************************!*\ !*** ./node_modules/linkify-string/dist/linkify-string.es.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ linkifyStr) /* harmony export */ }); /* harmony import */ var linkifyjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! linkifyjs */ "./node_modules/linkifyjs/dist/linkify.es.js"); /** Convert strings of text into linkable HTML text */ function escapeText(text) { return text.replace(/&/g, '&').replace(//g, '>'); } function escapeAttr(href) { return href.replace(/"/g, '"'); } function attributesToString(attributes) { var result = []; for (var attr in attributes) { var val = attributes[attr] + ''; result.push(attr + "=\"" + escapeAttr(val) + "\""); } return result.join(' '); } function defaultRender(_ref) { var tagName = _ref.tagName, attributes = _ref.attributes, content = _ref.content; return "<" + tagName + " " + attributesToString(attributes) + ">" + escapeText(content) + ""; } /** * Convert a plan text string to an HTML string with links. Expects that the * given strings does not contain any HTML entities. Use the linkify-html * interface if you need to parse HTML entities. * * @param {string} str string to linkify * @param {import('linkifyjs').Opts} [opts] overridable options * @returns {string} */ function linkifyStr(str, opts) { if (opts === void 0) { opts = {}; } opts = new linkifyjs__WEBPACK_IMPORTED_MODULE_0__.Options(opts, defaultRender); var tokens = (0,linkifyjs__WEBPACK_IMPORTED_MODULE_0__.tokenize)(str); var result = []; for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (token.t === 'nl' && opts.get('nl2br')) { result.push('
\n'); } else if (!token.isLink || !opts.check(token)) { result.push(escapeText(token.toString())); } else { result.push(opts.render(token)); } } return result.join(''); } if (!String.prototype.linkify) { Object.defineProperty(String.prototype, 'linkify', { writable: false, value: function linkify(options) { return linkifyStr(this, options); } }); } /***/ }), /***/ "./node_modules/linkifyjs/dist/linkify.es.js": /*!***************************************************!*\ !*** ./node_modules/linkifyjs/dist/linkify.es.js ***! \***************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ MultiToken: () => (/* binding */ MultiToken), /* harmony export */ Options: () => (/* binding */ Options), /* harmony export */ State: () => (/* binding */ State), /* harmony export */ createTokenClass: () => (/* binding */ createTokenClass), /* harmony export */ find: () => (/* binding */ find), /* harmony export */ init: () => (/* binding */ init), /* harmony export */ multi: () => (/* binding */ multi), /* harmony export */ options: () => (/* binding */ options), /* harmony export */ regexp: () => (/* binding */ regexp), /* harmony export */ registerCustomProtocol: () => (/* binding */ registerCustomProtocol), /* harmony export */ registerPlugin: () => (/* binding */ registerPlugin), /* harmony export */ registerTokenPlugin: () => (/* binding */ registerTokenPlugin), /* harmony export */ reset: () => (/* binding */ reset), /* harmony export */ stringToArray: () => (/* binding */ stringToArray), /* harmony export */ test: () => (/* binding */ test), /* harmony export */ tokenize: () => (/* binding */ tokenize) /* harmony export */ }); // THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY // See update-tlds.js for encoding/decoding format // https://data.iana.org/TLD/tlds-alpha-by-domain.txt const encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4vianca6w0s2x0a2z0ure5ba0by2idu3namex3narepublic11d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2ntley5rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0cast4mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dabur3d1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0ardian6cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6logistics9properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3ncaster6d0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2psy3ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2tura4vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9dnavy5lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0america6xi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0a1b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp2w2ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4finity6ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2'; // Internationalized domain names containing non-ASCII const encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2'; /** * @template A * @template B * @param {A} target * @param {B} properties * @return {A & B} */ const assign = (target, properties) => { for (const key in properties) { target[key] = properties[key]; } return target; }; /** * Finite State Machine generation utilities */ /** * @template T * @typedef {{ [group: string]: T[] }} Collections */ /** * @typedef {{ [group: string]: true }} Flags */ // Keys in scanner Collections instances const numeric = 'numeric'; const ascii = 'ascii'; const alpha = 'alpha'; const asciinumeric = 'asciinumeric'; const alphanumeric = 'alphanumeric'; const domain = 'domain'; const emoji = 'emoji'; const scheme = 'scheme'; const slashscheme = 'slashscheme'; const whitespace = 'whitespace'; /** * @template T * @param {string} name * @param {Collections} groups to register in * @returns {T[]} Current list of tokens in the given collection */ function registerGroup(name, groups) { if (!(name in groups)) { groups[name] = []; } return groups[name]; } /** * @template T * @param {T} t token to add * @param {Collections} groups * @param {Flags} flags */ function addToGroups(t, flags, groups) { if (flags[numeric]) { flags[asciinumeric] = true; flags[alphanumeric] = true; } if (flags[ascii]) { flags[asciinumeric] = true; flags[alpha] = true; } if (flags[asciinumeric]) { flags[alphanumeric] = true; } if (flags[alpha]) { flags[alphanumeric] = true; } if (flags[alphanumeric]) { flags[domain] = true; } if (flags[emoji]) { flags[domain] = true; } for (const k in flags) { const group = registerGroup(k, groups); if (group.indexOf(t) < 0) { group.push(t); } } } /** * @template T * @param {T} t token to check * @param {Collections} groups * @returns {Flags} group flags that contain this token */ function flagsForToken(t, groups) { const result = {}; for (const c in groups) { if (groups[c].indexOf(t) >= 0) { result[c] = true; } } return result; } /** * @template T * @typedef {null | T } Transition */ /** * Define a basic state machine state. j is the list of character transitions, * jr is the list of regex-match transitions, jd is the default state to * transition to t is the accepting token type, if any. If this is the terminal * state, then it does not emit a token. * * The template type T represents the type of the token this state accepts. This * should be a string (such as of the token exports in `text.js`) or a * MultiToken subclass (from `multi.js`) * * @template T * @param {T} [token] Token that this state emits */ function State(token) { if (token === void 0) { token = null; } // this.n = null; // DEBUG: State name /** @type {{ [input: string]: State }} j */ this.j = {}; // IMPLEMENTATION 1 // this.j = []; // IMPLEMENTATION 2 /** @type {[RegExp, State][]} jr */ this.jr = []; /** @type {?State} jd */ this.jd = null; /** @type {?T} t */ this.t = token; } /** * Scanner token groups * @type Collections */ State.groups = {}; State.prototype = { accepts() { return !!this.t; }, /** * Follow an existing transition from the given input to the next state. * Does not mutate. * @param {string} input character or token type to transition on * @returns {?State} the next state, if any */ go(input) { const state = this; const nextState = state.j[input]; if (nextState) { return nextState; } for (let i = 0; i < state.jr.length; i++) { const regex = state.jr[i][0]; const nextState = state.jr[i][1]; // note: might be empty to prevent default jump if (nextState && regex.test(input)) { return nextState; } } // Nowhere left to jump! Return default, if any return state.jd; }, /** * Whether the state has a transition for the given input. Set the second * argument to true to only look for an exact match (and not a default or * regular-expression-based transition) * @param {string} input * @param {boolean} exactOnly */ has(input, exactOnly) { if (exactOnly === void 0) { exactOnly = false; } return exactOnly ? input in this.j : !!this.go(input); }, /** * Short for "transition all"; create a transition from the array of items * in the given list to the same final resulting state. * @param {string | string[]} inputs Group of inputs to transition on * @param {Transition | State} [next] Transition options * @param {Flags} [flags] Collections flags to add token to * @param {Collections} [groups] Master list of token groups */ ta(inputs, next, flags, groups) { for (let i = 0; i < inputs.length; i++) { this.tt(inputs[i], next, flags, groups); } }, /** * Short for "take regexp transition"; defines a transition for this state * when it encounters a token which matches the given regular expression * @param {RegExp} regexp Regular expression transition (populate first) * @param {T | State} [next] Transition options * @param {Flags} [flags] Collections flags to add token to * @param {Collections} [groups] Master list of token groups * @returns {State} taken after the given input */ tr(regexp, next, flags, groups) { groups = groups || State.groups; let nextState; if (next && next.j) { nextState = next; } else { // Token with maybe token groups nextState = new State(next); if (flags && groups) { addToGroups(next, flags, groups); } } this.jr.push([regexp, nextState]); return nextState; }, /** * Short for "take transitions", will take as many sequential transitions as * the length of the given input and returns the * resulting final state. * @param {string | string[]} input * @param {T | State} [next] Transition options * @param {Flags} [flags] Collections flags to add token to * @param {Collections} [groups] Master list of token groups * @returns {State} taken after the given input */ ts(input, next, flags, groups) { let state = this; const len = input.length; if (!len) { return state; } for (let i = 0; i < len - 1; i++) { state = state.tt(input[i]); } return state.tt(input[len - 1], next, flags, groups); }, /** * Short for "take transition", this is a method for building/working with * state machines. * * If a state already exists for the given input, returns it. * * If a token is specified, that state will emit that token when reached by * the linkify engine. * * If no state exists, it will be initialized with some default transitions * that resemble existing default transitions. * * If a state is given for the second argument, that state will be * transitioned to on the given input regardless of what that input * previously did. * * Specify a token group flags to define groups that this token belongs to. * The token will be added to corresponding entires in the given groups * object. * * @param {string} input character, token type to transition on * @param {T | State} [next] Transition options * @param {Flags} [flags] Collections flags to add token to * @param {Collections} [groups] Master list of groups * @returns {State} taken after the given input */ tt(input, next, flags, groups) { groups = groups || State.groups; const state = this; // Check if existing state given, just a basic transition if (next && next.j) { state.j[input] = next; return next; } const t = next; // Take the transition with the usual default mechanisms and use that as // a template for creating the next state let nextState, templateState = state.go(input); if (templateState) { nextState = new State(); assign(nextState.j, templateState.j); nextState.jr.push.apply(nextState.jr, templateState.jr); nextState.jd = templateState.jd; nextState.t = templateState.t; } else { nextState = new State(); } if (t) { // Ensure newly token is in the same groups as the old token if (groups) { if (nextState.t && typeof nextState.t === 'string') { const allFlags = assign(flagsForToken(nextState.t, groups), flags); addToGroups(t, allFlags, groups); } else if (flags) { addToGroups(t, flags, groups); } } nextState.t = t; // overwrite anything that was previously there } state.j[input] = nextState; return nextState; } }; // Helper functions to improve minification (not exported outside linkifyjs module) /** * @template T * @param {State} state * @param {string | string[]} input * @param {Flags} [flags] * @param {Collections} [groups] */ const ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups); /** * @template T * @param {State} state * @param {RegExp} regexp * @param {T | State} [next] * @param {Flags} [flags] * @param {Collections} [groups] */ const tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups); /** * @template T * @param {State} state * @param {string | string[]} input * @param {T | State} [next] * @param {Flags} [flags] * @param {Collections} [groups] */ const ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups); /** * @template T * @param {State} state * @param {string} input * @param {T | State} [next] * @param {Collections} [groups] * @param {Flags} [flags] */ const tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups); /****************************************************************************** Text Tokens Identifiers for token outputs from the regexp scanner ******************************************************************************/ // A valid web domain token const WORD = 'WORD'; // only contains a-z const UWORD = 'UWORD'; // contains letters other than a-z, used for IDN // Special case of word const LOCALHOST = 'LOCALHOST'; // Valid top-level domain, special case of WORD (see tlds.js) const TLD = 'TLD'; // Valid IDN TLD, special case of UWORD (see tlds.js) const UTLD = 'UTLD'; // The scheme portion of a web URI protocol. Supported types include: `mailto`, // `file`, and user-defined custom protocols. Limited to schemes that contain // only letters const SCHEME = 'SCHEME'; // Similar to SCHEME, except makes distinction for schemes that must always be // followed by `://`, not just `:`. Supported types include `http`, `https`, // `ftp`, `ftps` const SLASH_SCHEME = 'SLASH_SCHEME'; // Any sequence of digits 0-9 const NUM = 'NUM'; // Any number of consecutive whitespace characters that are not newline const WS = 'WS'; // New line (unix style) const NL$1 = 'NL'; // \n // Opening/closing bracket classes // TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names // Also rename angle brackes to LESSTHAN and GREATER THAN const OPENBRACE = 'OPENBRACE'; // { const CLOSEBRACE = 'CLOSEBRACE'; // } const OPENBRACKET = 'OPENBRACKET'; // [ const CLOSEBRACKET = 'CLOSEBRACKET'; // ] const OPENPAREN = 'OPENPAREN'; // ( const CLOSEPAREN = 'CLOSEPAREN'; // ) const OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // < const CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // > const FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // ( const FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // ) const LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「 const RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」 const LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『 const RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』 const FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // < const FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // > // Various symbols const AMPERSAND = 'AMPERSAND'; // & const APOSTROPHE = 'APOSTROPHE'; // ' const ASTERISK = 'ASTERISK'; // * const AT = 'AT'; // @ const BACKSLASH = 'BACKSLASH'; // \ const BACKTICK = 'BACKTICK'; // ` const CARET = 'CARET'; // ^ const COLON = 'COLON'; // : const COMMA = 'COMMA'; // , const DOLLAR = 'DOLLAR'; // $ const DOT = 'DOT'; // . const EQUALS = 'EQUALS'; // = const EXCLAMATION = 'EXCLAMATION'; // ! const HYPHEN = 'HYPHEN'; // - const PERCENT = 'PERCENT'; // % const PIPE = 'PIPE'; // | const PLUS = 'PLUS'; // + const POUND = 'POUND'; // # const QUERY = 'QUERY'; // ? const QUOTE = 'QUOTE'; // " const SEMI = 'SEMI'; // ; const SLASH = 'SLASH'; // / const TILDE = 'TILDE'; // ~ const UNDERSCORE = 'UNDERSCORE'; // _ // Emoji symbol const EMOJI$1 = 'EMOJI'; // Default token - anything that is not one of the above const SYM = 'SYM'; var tk = /*#__PURE__*/Object.freeze({ __proto__: null, WORD: WORD, UWORD: UWORD, LOCALHOST: LOCALHOST, TLD: TLD, UTLD: UTLD, SCHEME: SCHEME, SLASH_SCHEME: SLASH_SCHEME, NUM: NUM, WS: WS, NL: NL$1, OPENBRACE: OPENBRACE, CLOSEBRACE: CLOSEBRACE, OPENBRACKET: OPENBRACKET, CLOSEBRACKET: CLOSEBRACKET, OPENPAREN: OPENPAREN, CLOSEPAREN: CLOSEPAREN, OPENANGLEBRACKET: OPENANGLEBRACKET, CLOSEANGLEBRACKET: CLOSEANGLEBRACKET, FULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET: LEFTCORNERBRACKET, RIGHTCORNERBRACKET: RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN, AMPERSAND: AMPERSAND, APOSTROPHE: APOSTROPHE, ASTERISK: ASTERISK, AT: AT, BACKSLASH: BACKSLASH, BACKTICK: BACKTICK, CARET: CARET, COLON: COLON, COMMA: COMMA, DOLLAR: DOLLAR, DOT: DOT, EQUALS: EQUALS, EXCLAMATION: EXCLAMATION, HYPHEN: HYPHEN, PERCENT: PERCENT, PIPE: PIPE, PLUS: PLUS, POUND: POUND, QUERY: QUERY, QUOTE: QUOTE, SEMI: SEMI, SLASH: SLASH, TILDE: TILDE, UNDERSCORE: UNDERSCORE, EMOJI: EMOJI$1, SYM: SYM }); // Note that these two Unicode ones expand into a really big one with Babel const ASCII_LETTER = /[a-z]/; const LETTER = /\p{L}/u; // Any Unicode character with letter data type const EMOJI = /\p{Emoji}/u; // Any Unicode emoji character const EMOJI_VARIATION$1 = /\ufe0f/; const DIGIT = /\d/; const SPACE = /\s/; var regexp = /*#__PURE__*/Object.freeze({ __proto__: null, ASCII_LETTER: ASCII_LETTER, LETTER: LETTER, EMOJI: EMOJI, EMOJI_VARIATION: EMOJI_VARIATION$1, DIGIT: DIGIT, SPACE: SPACE }); /** The scanner provides an interface that takes a string of text as input, and outputs an array of tokens instances that can be used for easy URL parsing. */ const NL = '\n'; // New line character const EMOJI_VARIATION = '\ufe0f'; // Variation selector, follows heart and others const EMOJI_JOINER = '\u200d'; // zero-width joiner let tlds = null, utlds = null; // don't change so only have to be computed once /** * Scanner output token: * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD') * - `v` is the value of the token (e.g., '123', '❤️', 'com') * - `s` is the start index of the token in the original string * - `e` is the end index of the token in the original string * @typedef {{t: string, v: string, s: number, e: number}} Token */ /** * @template T * @typedef {{ [collection: string]: T[] }} Collections */ /** * Initialize the scanner character-based state machine for the given start * state * @param {[string, boolean][]} customSchemes List of custom schemes, where each * item is a length-2 tuple with the first element set to the string scheme, and * the second element set to `true` if the `://` after the scheme is optional */ function init$2(customSchemes) { if (customSchemes === void 0) { customSchemes = []; } // Frequently used states (name argument removed during minification) /** @type Collections */ const groups = {}; // of tokens State.groups = groups; /** @type State */ const Start = new State(); if (tlds == null) { tlds = decodeTlds(encodedTlds); } if (utlds == null) { utlds = decodeTlds(encodedUtlds); } // States for special URL symbols that accept immediately after start tt(Start, "'", APOSTROPHE); tt(Start, '{', OPENBRACE); tt(Start, '}', CLOSEBRACE); tt(Start, '[', OPENBRACKET); tt(Start, ']', CLOSEBRACKET); tt(Start, '(', OPENPAREN); tt(Start, ')', CLOSEPAREN); tt(Start, '<', OPENANGLEBRACKET); tt(Start, '>', CLOSEANGLEBRACKET); tt(Start, '(', FULLWIDTHLEFTPAREN); tt(Start, ')', FULLWIDTHRIGHTPAREN); tt(Start, '「', LEFTCORNERBRACKET); tt(Start, '」', RIGHTCORNERBRACKET); tt(Start, '『', LEFTWHITECORNERBRACKET); tt(Start, '』', RIGHTWHITECORNERBRACKET); tt(Start, '<', FULLWIDTHLESSTHAN); tt(Start, '>', FULLWIDTHGREATERTHAN); tt(Start, '&', AMPERSAND); tt(Start, '*', ASTERISK); tt(Start, '@', AT); tt(Start, '`', BACKTICK); tt(Start, '^', CARET); tt(Start, ':', COLON); tt(Start, ',', COMMA); tt(Start, '$', DOLLAR); tt(Start, '.', DOT); tt(Start, '=', EQUALS); tt(Start, '!', EXCLAMATION); tt(Start, '-', HYPHEN); tt(Start, '%', PERCENT); tt(Start, '|', PIPE); tt(Start, '+', PLUS); tt(Start, '#', POUND); tt(Start, '?', QUERY); tt(Start, '"', QUOTE); tt(Start, '/', SLASH); tt(Start, ';', SEMI); tt(Start, '~', TILDE); tt(Start, '_', UNDERSCORE); tt(Start, '\\', BACKSLASH); const Num = tr(Start, DIGIT, NUM, { [numeric]: true }); tr(Num, DIGIT, Num); // State which emits a word token const Word = tr(Start, ASCII_LETTER, WORD, { [ascii]: true }); tr(Word, ASCII_LETTER, Word); // Same as previous, but specific to non-fsm.ascii alphabet words const UWord = tr(Start, LETTER, UWORD, { [alpha]: true }); tr(UWord, ASCII_LETTER); // Non-accepting tr(UWord, LETTER, UWord); // Whitespace jumps // Tokens of only non-newline whitespace are arbitrarily long // If any whitespace except newline, more whitespace! const Ws = tr(Start, SPACE, WS, { [whitespace]: true }); tt(Start, NL, NL$1, { [whitespace]: true }); tt(Ws, NL); // non-accepting state to avoid mixing whitespaces tr(Ws, SPACE, Ws); // Emoji tokens. They are not grouped by the scanner except in cases where a // zero-width joiner is present const Emoji = tr(Start, EMOJI, EMOJI$1, { [emoji]: true }); tr(Emoji, EMOJI, Emoji); tt(Emoji, EMOJI_VARIATION, Emoji); // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy const EmojiJoiner = tt(Emoji, EMOJI_JOINER); tr(EmojiJoiner, EMOJI, Emoji); // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy // Generates states for top-level domains // Note that this is most accurate when tlds are in alphabetical order const wordjr = [[ASCII_LETTER, Word]]; const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord]]; for (let i = 0; i < tlds.length; i++) { fastts(Start, tlds[i], TLD, WORD, wordjr); } for (let i = 0; i < utlds.length; i++) { fastts(Start, utlds[i], UTLD, UWORD, uwordjr); } addToGroups(TLD, { tld: true, ascii: true }, groups); addToGroups(UTLD, { utld: true, alpha: true }, groups); // Collect the states generated by different protocols. NOTE: If any new TLDs // get added that are also protocols, set the token to be the same as the // protocol to ensure parsing works as expected. fastts(Start, 'file', SCHEME, WORD, wordjr); fastts(Start, 'mailto', SCHEME, WORD, wordjr); fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr); fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr); fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr); fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr); addToGroups(SCHEME, { scheme: true, ascii: true }, groups); addToGroups(SLASH_SCHEME, { slashscheme: true, ascii: true }, groups); // Register custom schemes. Assumes each scheme is asciinumeric with hyphens customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1); for (let i = 0; i < customSchemes.length; i++) { const sch = customSchemes[i][0]; const optionalSlashSlash = customSchemes[i][1]; const flags = optionalSlashSlash ? { [scheme]: true } : { [slashscheme]: true }; if (sch.indexOf('-') >= 0) { flags[domain] = true; } else if (!ASCII_LETTER.test(sch)) { flags[numeric] = true; // numbers only } else if (DIGIT.test(sch)) { flags[asciinumeric] = true; } else { flags[ascii] = true; } ts(Start, sch, sch, flags); } // Localhost token ts(Start, 'localhost', LOCALHOST, { ascii: true }); // Set default transition for start state (some symbol) Start.jd = new State(SYM); return { start: Start, tokens: assign({ groups }, tk) }; } /** Given a string, returns an array of TOKEN instances representing the composition of that string. @method run @param {State} start scanner starting state @param {string} str input string to scan @return {Token[]} list of tokens, each with a type and value */ function run$1(start, str) { // State machine is not case sensitive, so input is tokenized in lowercased // form (still returns regular case). Uses selective `toLowerCase` because // lowercasing the entire string causes the length and character position to // vary in some non-English strings with V8-based runtimes. const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase())); const charCount = iterable.length; // <= len if there are emojis, etc const tokens = []; // return value // cursor through the string itself, accounting for characters that have // width with length 2 such as emojis let cursor = 0; // Cursor through the array-representation of the string let charCursor = 0; // Tokenize the string while (charCursor < charCount) { let state = start; let nextState = null; let tokenLength = 0; let latestAccepting = null; let sinceAccepts = -1; let charsSinceAccepts = -1; while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) { state = nextState; // Keep track of the latest accepting state if (state.accepts()) { sinceAccepts = 0; charsSinceAccepts = 0; latestAccepting = state; } else if (sinceAccepts >= 0) { sinceAccepts += iterable[charCursor].length; charsSinceAccepts++; } tokenLength += iterable[charCursor].length; cursor += iterable[charCursor].length; charCursor++; } // Roll back to the latest accepting state cursor -= sinceAccepts; charCursor -= charsSinceAccepts; tokenLength -= sinceAccepts; // No more jumps, just make a new token from the last accepting one tokens.push({ t: latestAccepting.t, // token type/name v: str.slice(cursor - tokenLength, cursor), // string value s: cursor - tokenLength, // start index e: cursor // end index (excluding) }); } return tokens; } /** * Convert a String to an Array of characters, taking into account that some * characters like emojis take up two string indexes. * * Adapted from core-js (MIT license) * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js * * @function stringToArray * @param {string} str * @returns {string[]} */ function stringToArray(str) { const result = []; const len = str.length; let index = 0; while (index < len) { let first = str.charCodeAt(index); let second; let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character : str.slice(index, index + 2); // two-index characters result.push(char); index += char.length; } return result; } /** * Fast version of ts function for when transition defaults are well known * @param {State} state * @param {string} input * @param {string} t * @param {string} defaultt * @param {[RegExp, State][]} jr * @returns {State} */ function fastts(state, input, t, defaultt, jr) { let next; const len = input.length; for (let i = 0; i < len - 1; i++) { const char = input[i]; if (state.j[char]) { next = state.j[char]; } else { next = new State(defaultt); next.jr = jr.slice(); state.j[char] = next; } state = next; } next = new State(t); next.jr = jr.slice(); state.j[input[len - 1]] = next; return next; } /** * Converts a string of Top-Level Domain names encoded in update-tlds.js back * into a list of strings. * @param {str} encoded encoded TLDs string * @returns {str[]} original TLDs list */ function decodeTlds(encoded) { const words = []; const stack = []; let i = 0; let digits = '0123456789'; while (i < encoded.length) { let popDigitCount = 0; while (digits.indexOf(encoded[i + popDigitCount]) >= 0) { popDigitCount++; // encountered some digits, have to pop to go one level up trie } if (popDigitCount > 0) { words.push(stack.join('')); // whatever preceded the pop digits must be a word for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) { stack.pop(); } i += popDigitCount; } else { stack.push(encoded[i]); // drop down a level into the trie i++; } } return words; } /** * An object where each key is a valid DOM Event Name such as `click` or `focus` * and each value is an event handler function. * * https://developer.mozilla.org/en-US/docs/Web/API/Element#events * @typedef {?{ [event: string]: Function }} EventListeners */ /** * All formatted properties required to render a link, including `tagName`, * `attributes`, `content` and `eventListeners`. * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string, * eventListeners: EventListeners }} IntermediateRepresentation */ /** * Specify either an object described by the template type `O` or a function. * * The function takes a string value (usually the link's href attribute), the * link type (`'url'`, `'hashtag`', etc.) and an internal token representation * of the link. It should return an object of the template type `O` * @template O * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj */ /** * Specify either a function described by template type `F` or an object. * * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each * value should be a function with template type `F` that is called when the * corresponding link type is encountered. * @template F * @typedef {F | { [type: string]: F}} OptFn */ /** * Specify either a value with template type `V`, a function that returns `V` or * an object where each value resolves to `V`. * * The function takes a string value (usually the link's href attribute), the * link type (`'url'`, `'hashtag`', etc.) and an internal token representation * of the link. It should return an object of the template type `V` * * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.). * Each value should either have type `V` or a function that returns V. This * function similarly takes a string value and a token. * * Example valid types for `Opt`: * * ```js * 'hello' * (value, type, token) => 'world' * { url: 'hello', email: (value, token) => 'world'} * ``` * @template V * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt */ /** * See available options: https://linkify.js.org/docs/options.html * @typedef {{ * defaultProtocol?: string, * events?: OptObj, * format?: Opt, * formatHref?: Opt, * nl2br?: boolean, * tagName?: Opt, * target?: Opt, * rel?: Opt, * validate?: Opt, * truncate?: Opt, * className?: Opt, * attributes?: OptObj<({ [attr: string]: any })>, * ignoreTags?: string[], * render?: OptFn<((ir: IntermediateRepresentation) => any)> * }} Opts */ /** * @type Required */ const defaults = { defaultProtocol: 'http', events: null, format: noop, formatHref: noop, nl2br: false, tagName: 'a', target: null, rel: null, validate: true, truncate: Infinity, className: null, attributes: null, ignoreTags: [], render: null }; /** * Utility class for linkify interfaces to apply specified * {@link Opts formatting and rendering options}. * * @param {Opts | Options} [opts] Option value overrides. * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For * internal use) default render function that determines how to generate an * HTML element based on a link token's derived tagName, attributes and HTML. * Similar to render option */ function Options(opts, defaultRender) { if (defaultRender === void 0) { defaultRender = null; } let o = assign({}, defaults); if (opts) { o = assign(o, opts instanceof Options ? opts.o : opts); } // Ensure all ignored tags are uppercase const ignoredTags = o.ignoreTags; const uppercaseIgnoredTags = []; for (let i = 0; i < ignoredTags.length; i++) { uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase()); } /** @protected */ this.o = o; if (defaultRender) { this.defaultRender = defaultRender; } this.ignoreTags = uppercaseIgnoredTags; } Options.prototype = { o: defaults, /** * @type string[] */ ignoreTags: [], /** * @param {IntermediateRepresentation} ir * @returns {any} */ defaultRender(ir) { return ir; }, /** * Returns true or false based on whether a token should be displayed as a * link based on the user options. * @param {MultiToken} token * @returns {boolean} */ check(token) { return this.get('validate', token.toString(), token); }, // Private methods /** * Resolve an option's value based on the value of the option and the given * params. If operator and token are specified and the target option is * callable, automatically calls the function with the given argument. * @template {keyof Opts} K * @param {K} key Name of option to use * @param {string} [operator] will be passed to the target option if it's a * function. If not specified, RAW function value gets returned * @param {MultiToken} [token] The token from linkify.tokenize * @returns {Opts[K] | any} */ get(key, operator, token) { const isCallable = operator != null; let option = this.o[key]; if (!option) { return option; } if (typeof option === 'object') { option = token.t in option ? option[token.t] : defaults[key]; if (typeof option === 'function' && isCallable) { option = option(operator, token); } } else if (typeof option === 'function' && isCallable) { option = option(operator, token.t, token); } return option; }, /** * @template {keyof Opts} L * @param {L} key Name of options object to use * @param {string} [operator] * @param {MultiToken} [token] * @returns {Opts[L] | any} */ getObj(key, operator, token) { let obj = this.o[key]; if (typeof obj === 'function' && operator != null) { obj = obj(operator, token.t, token); } return obj; }, /** * Convert the given token to a rendered element that may be added to the * calling-interface's DOM * @param {MultiToken} token Token to render to an HTML element * @returns {any} Render result; e.g., HTML string, DOM element, React * Component, etc. */ render(token) { const ir = token.render(this); // intermediate representation const renderFn = this.get('render', null, token) || this.defaultRender; return renderFn(ir, token.t, token); } }; function noop(val) { return val; } var options = /*#__PURE__*/Object.freeze({ __proto__: null, defaults: defaults, Options: Options, assign: assign }); /****************************************************************************** Multi-Tokens Tokens composed of arrays of TextTokens ******************************************************************************/ /** * @param {string} value * @param {Token[]} tokens */ function MultiToken(value, tokens) { this.t = 'token'; this.v = value; this.tk = tokens; } /** * Abstract class used for manufacturing tokens of text tokens. That is rather * than the value for a token being a small string of text, it's value an array * of text tokens. * * Used for grouping together URLs, emails, hashtags, and other potential * creations. * @class MultiToken * @property {string} t * @property {string} v * @property {Token[]} tk * @abstract */ MultiToken.prototype = { isLink: false, /** * Return the string this token represents. * @return {string} */ toString() { return this.v; }, /** * What should the value for this token be in the `href` HTML attribute? * Returns the `.toString` value by default. * @param {string} [scheme] * @return {string} */ toHref(scheme) { return this.toString(); }, /** * @param {Options} options Formatting options * @returns {string} */ toFormattedString(options) { const val = this.toString(); const truncate = options.get('truncate', val, this); const formatted = options.get('format', val, this); return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted; }, /** * * @param {Options} options * @returns {string} */ toFormattedHref(options) { return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this); }, /** * The start index of this token in the original input string * @returns {number} */ startIndex() { return this.tk[0].s; }, /** * The end index of this token in the original input string (up to this * index but not including it) * @returns {number} */ endIndex() { return this.tk[this.tk.length - 1].e; }, /** Returns an object of relevant values for this token, which includes keys * type - Kind of token ('url', 'email', etc.) * value - Original text * href - The value that should be added to the anchor tag's href attribute @method toObject @param {string} [protocol] `'http'` by default */ toObject(protocol) { if (protocol === void 0) { protocol = defaults.defaultProtocol; } return { type: this.t, value: this.toString(), isLink: this.isLink, href: this.toHref(protocol), start: this.startIndex(), end: this.endIndex() }; }, /** * * @param {Options} options Formatting option */ toFormattedObject(options) { return { type: this.t, value: this.toFormattedString(options), isLink: this.isLink, href: this.toFormattedHref(options), start: this.startIndex(), end: this.endIndex() }; }, /** * Whether this token should be rendered as a link according to the given options * @param {Options} options * @returns {boolean} */ validate(options) { return options.get('validate', this.toString(), this); }, /** * Return an object that represents how this link should be rendered. * @param {Options} options Formattinng options */ render(options) { const token = this; const href = this.toHref(options.get('defaultProtocol')); const formattedHref = options.get('formatHref', href, this); const tagName = options.get('tagName', href, token); const content = this.toFormattedString(options); const attributes = {}; const className = options.get('className', href, token); const target = options.get('target', href, token); const rel = options.get('rel', href, token); const attrs = options.getObj('attributes', href, token); const eventListeners = options.getObj('events', href, token); attributes.href = formattedHref; if (className) { attributes.class = className; } if (target) { attributes.target = target; } if (rel) { attributes.rel = rel; } if (attrs) { assign(attributes, attrs); } return { tagName, attributes, content, eventListeners }; } }; /** * Create a new token that can be emitted by the parser state machine * @param {string} type readable type of the token * @param {object} props properties to assign or override, including isLink = true or false * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class */ function createTokenClass(type, props) { class Token extends MultiToken { constructor(value, tokens) { super(value, tokens); this.t = type; } } for (const p in props) { Token.prototype[p] = props[p]; } Token.t = type; return Token; } /** Represents a list of tokens making up a valid email address */ const Email = createTokenClass('email', { isLink: true, toHref() { return 'mailto:' + this.toString(); } }); /** Represents some plain text */ const Text = createTokenClass('text'); /** Multi-linebreak token - represents a line break @class Nl */ const Nl = createTokenClass('nl'); /** Represents a list of text tokens making up a valid URL @class Url */ const Url = createTokenClass('url', { isLink: true, /** Lowercases relevant parts of the domain and adds the protocol if required. Note that this will not escape unsafe HTML characters in the URL. @param {string} [scheme] default scheme (e.g., 'https') @return {string} the full href */ toHref(scheme) { if (scheme === void 0) { scheme = defaults.defaultProtocol; } // Check if already has a prefix scheme return this.hasProtocol() ? this.v : `${scheme}://${this.v}`; }, /** * Check whether this URL token has a protocol * @return {boolean} */ hasProtocol() { const tokens = this.tk; return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON; } }); var multi = /*#__PURE__*/Object.freeze({ __proto__: null, MultiToken: MultiToken, Base: MultiToken, createTokenClass: createTokenClass, Email: Email, Text: Text, Nl: Nl, Url: Url }); /** Not exactly parser, more like the second-stage scanner (although we can theoretically hotswap the code here with a real parser in the future... but for a little URL-finding utility abstract syntax trees may be a little overkill). URL format: http://en.wikipedia.org/wiki/URI_scheme Email format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in reference) @module linkify @submodule parser @main run */ const makeState = arg => new State(arg); /** * Generate the parser multi token-based state machine * @param {{ groups: Collections }} tokens */ function init$1(_ref) { let { groups } = _ref; // Types of characters the URL can definitely end in const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]); // Types of tokens that can follow a URL and be part of the query string // but cannot be the very last characters // Characters that cannot appear in the URL at all should be excluded const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN]; // For addresses without the mailto prefix // Tokens allowed in the localpart of the email const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE]; // The universal starting state. /** * @type State */ const Start = makeState(); const Localpart = tt(Start, TILDE); // Local part of the email address ta(Localpart, localpartAccepting, Localpart); ta(Localpart, groups.domain, Localpart); const Domain = makeState(), Scheme = makeState(), SlashScheme = makeState(); ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A) ta(Start, groups.scheme, Scheme); // e.g., 'mailto' ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http' ta(Domain, localpartAccepting, Localpart); ta(Domain, groups.domain, Domain); const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @ tt(Localpart, AT, LocalpartAt); // close to an email address now // Local part of an email address can be e.g. 'http' or 'mailto' tt(Scheme, AT, LocalpartAt); tt(SlashScheme, AT, LocalpartAt); const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .) ta(LocalpartDot, localpartAccepting, Localpart); ta(LocalpartDot, groups.domain, Localpart); const EmailDomain = makeState(); ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name ta(EmailDomain, groups.domain, EmailDomain); const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT ta(EmailDomainDot, groups.domain, EmailDomain); const Email$1 = makeState(Email); // Possible email address (could have more tlds) ta(EmailDomainDot, groups.tld, Email$1); ta(EmailDomainDot, groups.utld, Email$1); tt(LocalpartAt, LOCALHOST, Email$1); // Hyphen can jump back to a domain name const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name ta(EmailDomainHyphen, groups.domain, EmailDomain); ta(Email$1, groups.domain, EmailDomain); tt(Email$1, DOT, EmailDomainDot); tt(Email$1, HYPHEN, EmailDomainHyphen); // Final possible email states const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here) /*const EmailColonPort = */ ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number // Account for dots and hyphens. Hyphens are usually parts of domain names // (but not TLDs) const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen const DomainDot = tt(Domain, DOT); // domain followed by DOT ta(DomainHyphen, groups.domain, Domain); ta(DomainDot, localpartAccepting, Localpart); ta(DomainDot, groups.domain, Domain); const DomainDotTld = makeState(Url); // Simplest possible URL with no query string ta(DomainDot, groups.tld, DomainDotTld); ta(DomainDot, groups.utld, DomainDotTld); ta(DomainDotTld, groups.domain, Domain); ta(DomainDotTld, localpartAccepting, Localpart); tt(DomainDotTld, DOT, DomainDot); tt(DomainDotTld, HYPHEN, DomainHyphen); tt(DomainDotTld, AT, LocalpartAt); const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here) const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort); // Long URL with optional port and maybe query string const Url$1 = makeState(Url); // URL with extra symbols at the end, followed by an opening bracket const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL) // Query strings ta(Url$1, qsAccepting, Url$1); ta(Url$1, qsNonAccepting, UrlNonaccept); ta(UrlNonaccept, qsAccepting, Url$1); ta(UrlNonaccept, qsNonAccepting, UrlNonaccept); // Become real URLs after `SLASH` or `COLON NUM SLASH` // Here works with or without scheme:// prefix tt(DomainDotTld, SLASH, Url$1); tt(DomainDotTldColonPort, SLASH, Url$1); // Note that domains that begin with schemes are treated slighly differently const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:' const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:' const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/' const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://' // Scheme states can transition to domain states ta(Scheme, groups.domain, Domain); tt(Scheme, DOT, DomainDot); tt(Scheme, HYPHEN, DomainHyphen); ta(SlashScheme, groups.domain, Domain); tt(SlashScheme, DOT, DomainDot); tt(SlashScheme, HYPHEN, DomainHyphen); // Force URL with scheme prefix followed by anything sane ta(SchemeColon, groups.domain, Url$1); tt(SchemeColon, SLASH, Url$1); ta(UriPrefix, groups.domain, Url$1); ta(UriPrefix, qsAccepting, Url$1); tt(UriPrefix, SLASH, Url$1); const bracketPairs = [[OPENBRACE, CLOSEBRACE], // {} [OPENBRACKET, CLOSEBRACKET], // [] [OPENPAREN, CLOSEPAREN], // () [OPENANGLEBRACKET, CLOSEANGLEBRACKET], // <> [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN], // () [LEFTCORNERBRACKET, RIGHTCORNERBRACKET], // 「」 [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET], // 『』 [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <> ]; for (let i = 0; i < bracketPairs.length; i++) { const [OPEN, CLOSE] = bracketPairs[i]; const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket // Continue not accepting for open brackets tt(UrlNonaccept, OPEN, UrlOpen); // Closing bracket component. This character WILL be included in the URL tt(UrlOpen, CLOSE, Url$1); // URL that beings with an opening bracket, followed by a symbols. // Note that the final state can still be `UrlOpen` (if the URL has a // single opening bracket for some reason). const UrlOpenQ = makeState(Url); ta(UrlOpen, qsAccepting, UrlOpenQ); const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it ta(UrlOpen, qsNonAccepting); // URL that begins with an opening bracket, followed by some symbols ta(UrlOpenQ, qsAccepting, UrlOpenQ); ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms); ta(UrlOpenSyms, qsAccepting, UrlOpenQ); ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms); // Close brace/bracket to become regular URL tt(UrlOpenQ, CLOSE, Url$1); tt(UrlOpenSyms, CLOSE, Url$1); } tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state tt(Start, NL$1, Nl); // single new line return { start: Start, tokens: tk }; } /** * Run the parser state machine on a list of scanned string-based tokens to * create a list of multi tokens, each of which represents a URL, email address, * plain text, etc. * * @param {State} start parser start state * @param {string} input the original input used to generate the given tokens * @param {Token[]} tokens list of scanned tokens * @returns {MultiToken[]} */ function run(start, input, tokens) { let len = tokens.length; let cursor = 0; let multis = []; let textTokens = []; while (cursor < len) { let state = start; let secondState = null; let nextState = null; let multiLength = 0; let latestAccepting = null; let sinceAccepts = -1; while (cursor < len && !(secondState = state.go(tokens[cursor].t))) { // Starting tokens with nowhere to jump to. // Consider these to be just plain text textTokens.push(tokens[cursor++]); } while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) { // Get the next state secondState = null; state = nextState; // Keep track of the latest accepting state if (state.accepts()) { sinceAccepts = 0; latestAccepting = state; } else if (sinceAccepts >= 0) { sinceAccepts++; } cursor++; multiLength++; } if (sinceAccepts < 0) { // No accepting state was found, part of a regular text token add // the first text token to the text tokens array and try again from // the next cursor -= multiLength; if (cursor < len) { textTokens.push(tokens[cursor]); cursor++; } } else { // Accepting state! // First close off the textTokens (if available) if (textTokens.length > 0) { multis.push(initMultiToken(Text, input, textTokens)); textTokens = []; } // Roll back to the latest accepting state cursor -= sinceAccepts; multiLength -= sinceAccepts; // Create a new multitoken const Multi = latestAccepting.t; const subtokens = tokens.slice(cursor - multiLength, cursor); multis.push(initMultiToken(Multi, input, subtokens)); } } // Finally close off the textTokens (if available) if (textTokens.length > 0) { multis.push(initMultiToken(Text, input, textTokens)); } return multis; } /** * Utility function for instantiating a new multitoken with all the relevant * fields during parsing. * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate * @param {string} input original input string * @param {Token[]} tokens consecutive tokens scanned from input string * @returns {MultiToken} */ function initMultiToken(Multi, input, tokens) { const startIdx = tokens[0].s; const endIdx = tokens[tokens.length - 1].e; const value = input.slice(startIdx, endIdx); return new Multi(value, tokens); } const warn = typeof console !== 'undefined' && console && console.warn || (() => {}); const warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.'; // Side-effect initialization state const INIT = { scanner: null, parser: null, tokenQueue: [], pluginQueue: [], customSchemes: [], initialized: false }; /** * @typedef {{ * start: State, * tokens: { groups: Collections } & typeof tk * }} ScannerInit */ /** * @typedef {{ * start: State, * tokens: typeof multi * }} ParserInit */ /** * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin */ /** * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin */ /** * De-register all plugins and reset the internal state-machine. Used for * testing; not required in practice. * @private */ function reset() { State.groups = {}; INIT.scanner = null; INIT.parser = null; INIT.tokenQueue = []; INIT.pluginQueue = []; INIT.customSchemes = []; INIT.initialized = false; } /** * Register a token plugin to allow the scanner to recognize additional token * types before the parser state machine is constructed from the results. * @param {string} name of plugin to register * @param {TokenPlugin} plugin function that accepts the scanner state machine * and available scanner tokens and collections and extends the state machine to * recognize additional tokens or groups. */ function registerTokenPlugin(name, plugin) { if (typeof plugin !== 'function') { throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`); } for (let i = 0; i < INIT.tokenQueue.length; i++) { if (name === INIT.tokenQueue[i][0]) { warn(`linkifyjs: token plugin "${name}" already registered - will be overwritten`); INIT.tokenQueue[i] = [name, plugin]; return; } } INIT.tokenQueue.push([name, plugin]); if (INIT.initialized) { warn(`linkifyjs: already initialized - will not register token plugin "${name}" ${warnAdvice}`); } } /** * Register a linkify plugin * @param {string} name of plugin to register * @param {Plugin} plugin function that accepts the parser state machine and * extends the parser to recognize additional link types */ function registerPlugin(name, plugin) { if (typeof plugin !== 'function') { throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`); } for (let i = 0; i < INIT.pluginQueue.length; i++) { if (name === INIT.pluginQueue[i][0]) { warn(`linkifyjs: plugin "${name}" already registered - will be overwritten`); INIT.pluginQueue[i] = [name, plugin]; return; } } INIT.pluginQueue.push([name, plugin]); if (INIT.initialized) { warn(`linkifyjs: already initialized - will not register plugin "${name}" ${warnAdvice}`); } } /** * Detect URLs with the following additional protocol. Anything with format * "protocol://..." will be considered a link. If `optionalSlashSlash` is set to * `true`, anything with format "protocol:..." will be considered a link. * @param {string} protocol * @param {boolean} [optionalSlashSlash] */ function registerCustomProtocol(scheme, optionalSlashSlash) { if (optionalSlashSlash === void 0) { optionalSlashSlash = false; } if (INIT.initialized) { warn(`linkifyjs: already initialized - will not register custom scheme "${scheme}" ${warnAdvice}`); } if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) { throw new Error(`linkifyjs: incorrect scheme format. 1. Must only contain digits, lowercase ASCII letters or "-" 2. Cannot start or end with "-" 3. "-" cannot repeat`); } INIT.customSchemes.push([scheme, optionalSlashSlash]); } /** * Initialize the linkify state machine. Called automatically the first time * linkify is called on a string, but may be called manually as well. */ function init() { // Initialize scanner state machine and plugins INIT.scanner = init$2(INIT.customSchemes); for (let i = 0; i < INIT.tokenQueue.length; i++) { INIT.tokenQueue[i][1]({ scanner: INIT.scanner }); } // Initialize parser state machine and plugins INIT.parser = init$1(INIT.scanner.tokens); for (let i = 0; i < INIT.pluginQueue.length; i++) { INIT.pluginQueue[i][1]({ scanner: INIT.scanner, parser: INIT.parser }); } INIT.initialized = true; } /** * Parse a string into tokens that represent linkable and non-linkable sub-components * @param {string} str * @return {MultiToken[]} tokens */ function tokenize(str) { if (!INIT.initialized) { init(); } return run(INIT.parser.start, str, run$1(INIT.scanner.start, str)); } /** * Find a list of linkable items in the given string. * @param {string} str string to find links in * @param {string | Opts} [type] either formatting options or specific type of * links to find, e.g., 'url' or 'email' * @param {Opts} [opts] formatting options for final output. Cannot be specified * if opts already provided in `type` argument */ function find(str, type, opts) { if (type === void 0) { type = null; } if (opts === void 0) { opts = null; } if (type && typeof type === 'object') { if (opts) { throw Error(`linkifyjs: Invalid link type ${type}; must be a string`); } opts = type; type = null; } const options = new Options(opts); const tokens = tokenize(str); const filtered = []; for (let i = 0; i < tokens.length; i++) { const token = tokens[i]; if (token.isLink && (!type || token.t === type) && options.check(token)) { filtered.push(token.toFormattedObject(options)); } } return filtered; } /** * Is the given string valid linkable text of some sort. Note that this does not * trim the text for you. * * Optionally pass in a second `type` param, which is the type of link to test * for. * * For example, * * linkify.test(str, 'email'); * * Returns `true` if str is a valid email. * @param {string} str string to test for links * @param {string} [type] optional specific link type to look for * @returns boolean true/false */ function test(str, type) { if (type === void 0) { type = null; } const tokens = tokenize(str); return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type); } /***/ }), /***/ "./node_modules/lodash.get/index.js": /*!******************************************!*\ !*** ./node_modules/lodash.get/index.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * lodash (Custom Build) * Build: `lodash modularize exports="npm" -o ./` * Copyright jQuery Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */ /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; /** `Object#toString` result references. */ var funcTag = '[object Function]', genTag = '[object GeneratorFunction]', symbolTag = '[object Symbol]'; /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, reLeadingDot = /^\./, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; /** * Used to match `RegExp` * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). */ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; /** Used to match backslashes in property paths. */ var reEscapeChar = /\\(\\)?/g; /** Used to detect host constructors (Safari). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; /** Detect free variable `global` from Node.js. */ var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g; /** Detect free variable `self`. */ var freeSelf = typeof self == 'object' && self && self.Object === Object && self; /** Used as a reference to the global object. */ var root = freeGlobal || freeSelf || Function('return this')(); /** * Gets the value at `key` of `object`. * * @private * @param {Object} [object] The object to query. * @param {string} key The key of the property to get. * @returns {*} Returns the property value. */ function getValue(object, key) { return object == null ? undefined : object[key]; } /** * Checks if `value` is a host object in IE < 9. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a host object, else `false`. */ function isHostObject(value) { // Many host objects are `Object` objects that can coerce to strings // despite having improperly defined `toString` methods. var result = false; if (value != null && typeof value.toString != 'function') { try { result = !!(value + ''); } catch (e) {} } return result; } /** Used for built-in method references. */ var arrayProto = Array.prototype, funcProto = Function.prototype, objectProto = Object.prototype; /** Used to detect overreaching core-js shims. */ var coreJsData = root['__core-js_shared__']; /** Used to detect methods masquerading as native. */ var maskSrcKey = (function() { var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); return uid ? ('Symbol(src)_1.' + uid) : ''; }()); /** Used to resolve the decompiled source of functions. */ var funcToString = funcProto.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; /** Used to detect if a method is native. */ var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' ); /** Built-in value references. */ var Symbol = root.Symbol, splice = arrayProto.splice; /* Built-in method references that are verified to be native. */ var Map = getNative(root, 'Map'), nativeCreate = getNative(Object, 'create'); /** Used to convert symbols to primitives and strings. */ var symbolProto = Symbol ? Symbol.prototype : undefined, symbolToString = symbolProto ? symbolProto.toString : undefined; /** * Creates a hash object. * * @private * @constructor * @param {Array} [entries] The key-value pairs to cache. */ function Hash(entries) { var index = -1, length = entries ? entries.length : 0; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } /** * Removes all key-value entries from the hash. * * @private * @name clear * @memberOf Hash */ function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; } /** * Removes `key` and its value from the hash. * * @private * @name delete * @memberOf Hash * @param {Object} hash The hash to modify. * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function hashDelete(key) { return this.has(key) && delete this.__data__[key]; } /** * Gets the hash value for `key`. * * @private * @name get * @memberOf Hash * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ function hashGet(key) { var data = this.__data__; if (nativeCreate) { var result = data[key]; return result === HASH_UNDEFINED ? undefined : result; } return hasOwnProperty.call(data, key) ? data[key] : undefined; } /** * Checks if a hash value for `key` exists. * * @private * @name has * @memberOf Hash * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function hashHas(key) { var data = this.__data__; return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); } /** * Sets the hash `key` to `value`. * * @private * @name set * @memberOf Hash * @param {string} key The key of the value to set. * @param {*} value The value to set. * @returns {Object} Returns the hash instance. */ function hashSet(key, value) { var data = this.__data__; data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; return this; } // Add methods to `Hash`. Hash.prototype.clear = hashClear; Hash.prototype['delete'] = hashDelete; Hash.prototype.get = hashGet; Hash.prototype.has = hashHas; Hash.prototype.set = hashSet; /** * Creates an list cache object. * * @private * @constructor * @param {Array} [entries] The key-value pairs to cache. */ function ListCache(entries) { var index = -1, length = entries ? entries.length : 0; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } /** * Removes all key-value entries from the list cache. * * @private * @name clear * @memberOf ListCache */ function listCacheClear() { this.__data__ = []; } /** * Removes `key` and its value from the list cache. * * @private * @name delete * @memberOf ListCache * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function listCacheDelete(key) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { return false; } var lastIndex = data.length - 1; if (index == lastIndex) { data.pop(); } else { splice.call(data, index, 1); } return true; } /** * Gets the list cache value for `key`. * * @private * @name get * @memberOf ListCache * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ function listCacheGet(key) { var data = this.__data__, index = assocIndexOf(data, key); return index < 0 ? undefined : data[index][1]; } /** * Checks if a list cache value for `key` exists. * * @private * @name has * @memberOf ListCache * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function listCacheHas(key) { return assocIndexOf(this.__data__, key) > -1; } /** * Sets the list cache `key` to `value`. * * @private * @name set * @memberOf ListCache * @param {string} key The key of the value to set. * @param {*} value The value to set. * @returns {Object} Returns the list cache instance. */ function listCacheSet(key, value) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { data.push([key, value]); } else { data[index][1] = value; } return this; } // Add methods to `ListCache`. ListCache.prototype.clear = listCacheClear; ListCache.prototype['delete'] = listCacheDelete; ListCache.prototype.get = listCacheGet; ListCache.prototype.has = listCacheHas; ListCache.prototype.set = listCacheSet; /** * Creates a map cache object to store key-value pairs. * * @private * @constructor * @param {Array} [entries] The key-value pairs to cache. */ function MapCache(entries) { var index = -1, length = entries ? entries.length : 0; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } /** * Removes all key-value entries from the map. * * @private * @name clear * @memberOf MapCache */ function mapCacheClear() { this.__data__ = { 'hash': new Hash, 'map': new (Map || ListCache), 'string': new Hash }; } /** * Removes `key` and its value from the map. * * @private * @name delete * @memberOf MapCache * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function mapCacheDelete(key) { return getMapData(this, key)['delete'](key); } /** * Gets the map value for `key`. * * @private * @name get * @memberOf MapCache * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ function mapCacheGet(key) { return getMapData(this, key).get(key); } /** * Checks if a map value for `key` exists. * * @private * @name has * @memberOf MapCache * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function mapCacheHas(key) { return getMapData(this, key).has(key); } /** * Sets the map `key` to `value`. * * @private * @name set * @memberOf MapCache * @param {string} key The key of the value to set. * @param {*} value The value to set. * @returns {Object} Returns the map cache instance. */ function mapCacheSet(key, value) { getMapData(this, key).set(key, value); return this; } // Add methods to `MapCache`. MapCache.prototype.clear = mapCacheClear; MapCache.prototype['delete'] = mapCacheDelete; MapCache.prototype.get = mapCacheGet; MapCache.prototype.has = mapCacheHas; MapCache.prototype.set = mapCacheSet; /** * Gets the index at which the `key` is found in `array` of key-value pairs. * * @private * @param {Array} array The array to inspect. * @param {*} key The key to search for. * @returns {number} Returns the index of the matched value, else `-1`. */ function assocIndexOf(array, key) { var length = array.length; while (length--) { if (eq(array[length][0], key)) { return length; } } return -1; } /** * The base implementation of `_.get` without support for default values. * * @private * @param {Object} object The object to query. * @param {Array|string} path The path of the property to get. * @returns {*} Returns the resolved value. */ function baseGet(object, path) { path = isKey(path, object) ? [path] : castPath(path); var index = 0, length = path.length; while (object != null && index < length) { object = object[toKey(path[index++])]; } return (index && index == length) ? object : undefined; } /** * The base implementation of `_.isNative` without bad shim checks. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a native function, * else `false`. */ function baseIsNative(value) { if (!isObject(value) || isMasked(value)) { return false; } var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } /** * The base implementation of `_.toString` which doesn't convert nullish * values to empty strings. * * @private * @param {*} value The value to process. * @returns {string} Returns the string. */ function baseToString(value) { // Exit early for strings to avoid a performance hit in some environments. if (typeof value == 'string') { return value; } if (isSymbol(value)) { return symbolToString ? symbolToString.call(value) : ''; } var result = (value + ''); return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } /** * Casts `value` to a path array if it's not one. * * @private * @param {*} value The value to inspect. * @returns {Array} Returns the cast property path array. */ function castPath(value) { return isArray(value) ? value : stringToPath(value); } /** * Gets the data for `map`. * * @private * @param {Object} map The map to query. * @param {string} key The reference key. * @returns {*} Returns the map data. */ function getMapData(map, key) { var data = map.__data__; return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; } /** * Gets the native function at `key` of `object`. * * @private * @param {Object} object The object to query. * @param {string} key The key of the method to get. * @returns {*} Returns the function if it's native, else `undefined`. */ function getNative(object, key) { var value = getValue(object, key); return baseIsNative(value) ? value : undefined; } /** * Checks if `value` is a property name and not a property path. * * @private * @param {*} value The value to check. * @param {Object} [object] The object to query keys on. * @returns {boolean} Returns `true` if `value` is a property name, else `false`. */ function isKey(value, object) { if (isArray(value)) { return false; } var type = typeof value; if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { return true; } return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || (object != null && value in Object(object)); } /** * Checks if `value` is suitable for use as unique object key. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is suitable, else `false`. */ function isKeyable(value) { var type = typeof value; return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') ? (value !== '__proto__') : (value === null); } /** * Checks if `func` has its source masked. * * @private * @param {Function} func The function to check. * @returns {boolean} Returns `true` if `func` is masked, else `false`. */ function isMasked(func) { return !!maskSrcKey && (maskSrcKey in func); } /** * Converts `string` to a property path array. * * @private * @param {string} string The string to convert. * @returns {Array} Returns the property path array. */ var stringToPath = memoize(function(string) { string = toString(string); var result = []; if (reLeadingDot.test(string)) { result.push(''); } string.replace(rePropName, function(match, number, quote, string) { result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); }); return result; }); /** * Converts `value` to a string key if it's not a string or symbol. * * @private * @param {*} value The value to inspect. * @returns {string|symbol} Returns the key. */ function toKey(value) { if (typeof value == 'string' || isSymbol(value)) { return value; } var result = (value + ''); return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } /** * Converts `func` to its source code. * * @private * @param {Function} func The function to process. * @returns {string} Returns the source code. */ function toSource(func) { if (func != null) { try { return funcToString.call(func); } catch (e) {} try { return (func + ''); } catch (e) {} } return ''; } /** * Creates a function that memoizes the result of `func`. If `resolver` is * provided, it determines the cache key for storing the result based on the * arguments provided to the memoized function. By default, the first argument * provided to the memoized function is used as the map cache key. The `func` * is invoked with the `this` binding of the memoized function. * * **Note:** The cache is exposed as the `cache` property on the memoized * function. Its creation may be customized by replacing the `_.memoize.Cache` * constructor with one whose instances implement the * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) * method interface of `delete`, `get`, `has`, and `set`. * * @static * @memberOf _ * @since 0.1.0 * @category Function * @param {Function} func The function to have its output memoized. * @param {Function} [resolver] The function to resolve the cache key. * @returns {Function} Returns the new memoized function. * @example * * var object = { 'a': 1, 'b': 2 }; * var other = { 'c': 3, 'd': 4 }; * * var values = _.memoize(_.values); * values(object); * // => [1, 2] * * values(other); * // => [3, 4] * * object.a = 2; * values(object); * // => [1, 2] * * // Modify the result cache. * values.cache.set(object, ['a', 'b']); * values(object); * // => ['a', 'b'] * * // Replace `_.memoize.Cache`. * _.memoize.Cache = WeakMap; */ function memoize(func, resolver) { if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { throw new TypeError(FUNC_ERROR_TEXT); } var memoized = function() { var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; if (cache.has(key)) { return cache.get(key); } var result = func.apply(this, args); memoized.cache = cache.set(key, result); return result; }; memoized.cache = new (memoize.Cache || MapCache); return memoized; } // Assign cache to `_.memoize`. memoize.Cache = MapCache; /** * Performs a * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * comparison between two values to determine if they are equivalent. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to compare. * @param {*} other The other value to compare. * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * var object = { 'a': 1 }; * var other = { 'a': 1 }; * * _.eq(object, object); * // => true * * _.eq(object, other); * // => false * * _.eq('a', 'a'); * // => true * * _.eq('a', Object('a')); * // => false * * _.eq(NaN, NaN); * // => true */ function eq(value, other) { return value === other || (value !== value && other !== other); } /** * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an array, else `false`. * @example * * _.isArray([1, 2, 3]); * // => true * * _.isArray(document.body.children); * // => false * * _.isArray('abc'); * // => false * * _.isArray(_.noop); * // => false */ var isArray = Array.isArray; /** * Checks if `value` is classified as a `Function` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a function, else `false`. * @example * * _.isFunction(_); * // => true * * _.isFunction(/abc/); * // => false */ function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator // in Safari 8-9 which returns 'object' for typed array and other constructors. var tag = isObject(value) ? objectToString.call(value) : ''; return tag == funcTag || tag == genTag; } /** * Checks if `value` is the * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an object, else `false`. * @example * * _.isObject({}); * // => true * * _.isObject([1, 2, 3]); * // => true * * _.isObject(_.noop); * // => true * * _.isObject(null); * // => false */ function isObject(value) { var type = typeof value; return !!value && (type == 'object' || type == 'function'); } /** * Checks if `value` is object-like. A value is object-like if it's not `null` * and has a `typeof` result of "object". * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * * _.isObjectLike({}); * // => true * * _.isObjectLike([1, 2, 3]); * // => true * * _.isObjectLike(_.noop); * // => false * * _.isObjectLike(null); * // => false */ function isObjectLike(value) { return !!value && typeof value == 'object'; } /** * Checks if `value` is classified as a `Symbol` primitive or object. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. * @example * * _.isSymbol(Symbol.iterator); * // => true * * _.isSymbol('abc'); * // => false */ function isSymbol(value) { return typeof value == 'symbol' || (isObjectLike(value) && objectToString.call(value) == symbolTag); } /** * Converts `value` to a string. An empty string is returned for `null` * and `undefined` values. The sign of `-0` is preserved. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to process. * @returns {string} Returns the string. * @example * * _.toString(null); * // => '' * * _.toString(-0); * // => '-0' * * _.toString([1, 2, 3]); * // => '1,2,3' */ function toString(value) { return value == null ? '' : baseToString(value); } /** * Gets the value at `path` of `object`. If the resolved value is * `undefined`, the `defaultValue` is returned in its place. * * @static * @memberOf _ * @since 3.7.0 * @category Object * @param {Object} object The object to query. * @param {Array|string} path The path of the property to get. * @param {*} [defaultValue] The value returned for `undefined` resolved values. * @returns {*} Returns the resolved value. * @example * * var object = { 'a': [{ 'b': { 'c': 3 } }] }; * * _.get(object, 'a[0].b.c'); * // => 3 * * _.get(object, ['a', '0', 'b', 'c']); * // => 3 * * _.get(object, 'a.b.c', 'default'); * // => 'default' */ function get(object, path, defaultValue) { var result = object == null ? undefined : baseGet(object, path); return result === undefined ? defaultValue : result; } module.exports = get; /***/ }), /***/ "./node_modules/lodash/_DataView.js": /*!******************************************!*\ !*** ./node_modules/lodash/_DataView.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var DataView = getNative(root, 'DataView'); module.exports = DataView; /***/ }), /***/ "./node_modules/lodash/_Hash.js": /*!**************************************!*\ !*** ./node_modules/lodash/_Hash.js ***! \**************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"), hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"), hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"), hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"), hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js"); /** * Creates a hash object. * * @private * @constructor * @param {Array} [entries] The key-value pairs to cache. */ function Hash(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } // Add methods to `Hash`. Hash.prototype.clear = hashClear; Hash.prototype['delete'] = hashDelete; Hash.prototype.get = hashGet; Hash.prototype.has = hashHas; Hash.prototype.set = hashSet; module.exports = Hash; /***/ }), /***/ "./node_modules/lodash/_ListCache.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_ListCache.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"), listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"), listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"), listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"), listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js"); /** * Creates an list cache object. * * @private * @constructor * @param {Array} [entries] The key-value pairs to cache. */ function ListCache(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } // Add methods to `ListCache`. ListCache.prototype.clear = listCacheClear; ListCache.prototype['delete'] = listCacheDelete; ListCache.prototype.get = listCacheGet; ListCache.prototype.has = listCacheHas; ListCache.prototype.set = listCacheSet; module.exports = ListCache; /***/ }), /***/ "./node_modules/lodash/_Map.js": /*!*************************************!*\ !*** ./node_modules/lodash/_Map.js ***! \*************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Map = getNative(root, 'Map'); module.exports = Map; /***/ }), /***/ "./node_modules/lodash/_MapCache.js": /*!******************************************!*\ !*** ./node_modules/lodash/_MapCache.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"), mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"), mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"), mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"), mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js"); /** * Creates a map cache object to store key-value pairs. * * @private * @constructor * @param {Array} [entries] The key-value pairs to cache. */ function MapCache(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } // Add methods to `MapCache`. MapCache.prototype.clear = mapCacheClear; MapCache.prototype['delete'] = mapCacheDelete; MapCache.prototype.get = mapCacheGet; MapCache.prototype.has = mapCacheHas; MapCache.prototype.set = mapCacheSet; module.exports = MapCache; /***/ }), /***/ "./node_modules/lodash/_Promise.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_Promise.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Promise = getNative(root, 'Promise'); module.exports = Promise; /***/ }), /***/ "./node_modules/lodash/_Set.js": /*!*************************************!*\ !*** ./node_modules/lodash/_Set.js ***! \*************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var Set = getNative(root, 'Set'); module.exports = Set; /***/ }), /***/ "./node_modules/lodash/_SetCache.js": /*!******************************************!*\ !*** ./node_modules/lodash/_SetCache.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"), setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/lodash/_setCacheAdd.js"), setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/lodash/_setCacheHas.js"); /** * * Creates an array cache object to store unique values. * * @private * @constructor * @param {Array} [values] The values to cache. */ function SetCache(values) { var index = -1, length = values == null ? 0 : values.length; this.__data__ = new MapCache; while (++index < length) { this.add(values[index]); } } // Add methods to `SetCache`. SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; SetCache.prototype.has = setCacheHas; module.exports = SetCache; /***/ }), /***/ "./node_modules/lodash/_Stack.js": /*!***************************************!*\ !*** ./node_modules/lodash/_Stack.js ***! \***************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/lodash/_stackClear.js"), stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/lodash/_stackDelete.js"), stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/lodash/_stackGet.js"), stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/lodash/_stackHas.js"), stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/lodash/_stackSet.js"); /** * Creates a stack cache object to store key-value pairs. * * @private * @constructor * @param {Array} [entries] The key-value pairs to cache. */ function Stack(entries) { var data = this.__data__ = new ListCache(entries); this.size = data.size; } // Add methods to `Stack`. Stack.prototype.clear = stackClear; Stack.prototype['delete'] = stackDelete; Stack.prototype.get = stackGet; Stack.prototype.has = stackHas; Stack.prototype.set = stackSet; module.exports = Stack; /***/ }), /***/ "./node_modules/lodash/_Symbol.js": /*!****************************************!*\ !*** ./node_modules/lodash/_Symbol.js ***! \****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /** Built-in value references. */ var Symbol = root.Symbol; module.exports = Symbol; /***/ }), /***/ "./node_modules/lodash/_Uint8Array.js": /*!********************************************!*\ !*** ./node_modules/lodash/_Uint8Array.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /** Built-in value references. */ var Uint8Array = root.Uint8Array; module.exports = Uint8Array; /***/ }), /***/ "./node_modules/lodash/_WeakMap.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_WeakMap.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /* Built-in method references that are verified to be native. */ var WeakMap = getNative(root, 'WeakMap'); module.exports = WeakMap; /***/ }), /***/ "./node_modules/lodash/_apply.js": /*!***************************************!*\ !*** ./node_modules/lodash/_apply.js ***! \***************************************/ /***/ ((module) => { /** * A faster alternative to `Function#apply`, this function invokes `func` * with the `this` binding of `thisArg` and the arguments of `args`. * * @private * @param {Function} func The function to invoke. * @param {*} thisArg The `this` binding of `func`. * @param {Array} args The arguments to invoke `func` with. * @returns {*} Returns the result of `func`. */ function apply(func, thisArg, args) { switch (args.length) { case 0: return func.call(thisArg); case 1: return func.call(thisArg, args[0]); case 2: return func.call(thisArg, args[0], args[1]); case 3: return func.call(thisArg, args[0], args[1], args[2]); } return func.apply(thisArg, args); } module.exports = apply; /***/ }), /***/ "./node_modules/lodash/_arrayFilter.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_arrayFilter.js ***! \*********************************************/ /***/ ((module) => { /** * A specialized version of `_.filter` for arrays without support for * iteratee shorthands. * * @private * @param {Array} [array] The array to iterate over. * @param {Function} predicate The function invoked per iteration. * @returns {Array} Returns the new filtered array. */ function arrayFilter(array, predicate) { var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; while (++index < length) { var value = array[index]; if (predicate(value, index, array)) { result[resIndex++] = value; } } return result; } module.exports = arrayFilter; /***/ }), /***/ "./node_modules/lodash/_arrayIncludes.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_arrayIncludes.js ***! \***********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/lodash/_baseIndexOf.js"); /** * A specialized version of `_.includes` for arrays without support for * specifying an index to search from. * * @private * @param {Array} [array] The array to inspect. * @param {*} target The value to search for. * @returns {boolean} Returns `true` if `target` is found, else `false`. */ function arrayIncludes(array, value) { var length = array == null ? 0 : array.length; return !!length && baseIndexOf(array, value, 0) > -1; } module.exports = arrayIncludes; /***/ }), /***/ "./node_modules/lodash/_arrayIncludesWith.js": /*!***************************************************!*\ !*** ./node_modules/lodash/_arrayIncludesWith.js ***! \***************************************************/ /***/ ((module) => { /** * This function is like `arrayIncludes` except that it accepts a comparator. * * @private * @param {Array} [array] The array to inspect. * @param {*} target The value to search for. * @param {Function} comparator The comparator invoked per element. * @returns {boolean} Returns `true` if `target` is found, else `false`. */ function arrayIncludesWith(array, value, comparator) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (comparator(value, array[index])) { return true; } } return false; } module.exports = arrayIncludesWith; /***/ }), /***/ "./node_modules/lodash/_arrayLikeKeys.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_arrayLikeKeys.js ***! \***********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/lodash/_baseTimes.js"), isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Creates an array of the enumerable property names of the array-like `value`. * * @private * @param {*} value The value to query. * @param {boolean} inherited Specify returning inherited property names. * @returns {Array} Returns the array of property names. */ function arrayLikeKeys(value, inherited) { var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length; for (var key in value) { if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode. key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers. (isBuff && (key == 'offset' || key == 'parent')) || // PhantomJS 2 has enumerable non-index properties on typed arrays. (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || // Skip index properties. isIndex(key, length) ))) { result.push(key); } } return result; } module.exports = arrayLikeKeys; /***/ }), /***/ "./node_modules/lodash/_arrayMap.js": /*!******************************************!*\ !*** ./node_modules/lodash/_arrayMap.js ***! \******************************************/ /***/ ((module) => { /** * A specialized version of `_.map` for arrays without support for iteratee * shorthands. * * @private * @param {Array} [array] The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the new mapped array. */ function arrayMap(array, iteratee) { var index = -1, length = array == null ? 0 : array.length, result = Array(length); while (++index < length) { result[index] = iteratee(array[index], index, array); } return result; } module.exports = arrayMap; /***/ }), /***/ "./node_modules/lodash/_arrayPush.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_arrayPush.js ***! \*******************************************/ /***/ ((module) => { /** * Appends the elements of `values` to `array`. * * @private * @param {Array} array The array to modify. * @param {Array} values The values to append. * @returns {Array} Returns `array`. */ function arrayPush(array, values) { var index = -1, length = values.length, offset = array.length; while (++index < length) { array[offset + index] = values[index]; } return array; } module.exports = arrayPush; /***/ }), /***/ "./node_modules/lodash/_arraySome.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_arraySome.js ***! \*******************************************/ /***/ ((module) => { /** * A specialized version of `_.some` for arrays without support for iteratee * shorthands. * * @private * @param {Array} [array] The array to iterate over. * @param {Function} predicate The function invoked per iteration. * @returns {boolean} Returns `true` if any element passes the predicate check, * else `false`. */ function arraySome(array, predicate) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (predicate(array[index], index, array)) { return true; } } return false; } module.exports = arraySome; /***/ }), /***/ "./node_modules/lodash/_assignMergeValue.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_assignMergeValue.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); /** * This function is like `assignValue` except that it doesn't assign * `undefined` values. * * @private * @param {Object} object The object to modify. * @param {string} key The key of the property to assign. * @param {*} value The value to assign. */ function assignMergeValue(object, key, value) { if ((value !== undefined && !eq(object[key], value)) || (value === undefined && !(key in object))) { baseAssignValue(object, key, value); } } module.exports = assignMergeValue; /***/ }), /***/ "./node_modules/lodash/_assignValue.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_assignValue.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Assigns `value` to `key` of `object` if the existing value is not equivalent * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * for equality comparisons. * * @private * @param {Object} object The object to modify. * @param {string} key The key of the property to assign. * @param {*} value The value to assign. */ function assignValue(object, key, value) { var objValue = object[key]; if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || (value === undefined && !(key in object))) { baseAssignValue(object, key, value); } } module.exports = assignValue; /***/ }), /***/ "./node_modules/lodash/_assocIndexOf.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_assocIndexOf.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); /** * Gets the index at which the `key` is found in `array` of key-value pairs. * * @private * @param {Array} array The array to inspect. * @param {*} key The key to search for. * @returns {number} Returns the index of the matched value, else `-1`. */ function assocIndexOf(array, key) { var length = array.length; while (length--) { if (eq(array[length][0], key)) { return length; } } return -1; } module.exports = assocIndexOf; /***/ }), /***/ "./node_modules/lodash/_baseAssignValue.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_baseAssignValue.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"); /** * The base implementation of `assignValue` and `assignMergeValue` without * value checks. * * @private * @param {Object} object The object to modify. * @param {string} key The key of the property to assign. * @param {*} value The value to assign. */ function baseAssignValue(object, key, value) { if (key == '__proto__' && defineProperty) { defineProperty(object, key, { 'configurable': true, 'enumerable': true, 'value': value, 'writable': true }); } else { object[key] = value; } } module.exports = baseAssignValue; /***/ }), /***/ "./node_modules/lodash/_baseCreate.js": /*!********************************************!*\ !*** ./node_modules/lodash/_baseCreate.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); /** Built-in value references. */ var objectCreate = Object.create; /** * The base implementation of `_.create` without support for assigning * properties to the created object. * * @private * @param {Object} proto The object to inherit from. * @returns {Object} Returns the new object. */ var baseCreate = (function() { function object() {} return function(proto) { if (!isObject(proto)) { return {}; } if (objectCreate) { return objectCreate(proto); } object.prototype = proto; var result = new object; object.prototype = undefined; return result; }; }()); module.exports = baseCreate; /***/ }), /***/ "./node_modules/lodash/_baseEach.js": /*!******************************************!*\ !*** ./node_modules/lodash/_baseEach.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), createBaseEach = __webpack_require__(/*! ./_createBaseEach */ "./node_modules/lodash/_createBaseEach.js"); /** * The base implementation of `_.forEach` without support for iteratee shorthands. * * @private * @param {Array|Object} collection The collection to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array|Object} Returns `collection`. */ var baseEach = createBaseEach(baseForOwn); module.exports = baseEach; /***/ }), /***/ "./node_modules/lodash/_baseFindIndex.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_baseFindIndex.js ***! \***********************************************/ /***/ ((module) => { /** * The base implementation of `_.findIndex` and `_.findLastIndex` without * support for iteratee shorthands. * * @private * @param {Array} array The array to inspect. * @param {Function} predicate The function invoked per iteration. * @param {number} fromIndex The index to search from. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {number} Returns the index of the matched value, else `-1`. */ function baseFindIndex(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while ((fromRight ? index-- : ++index < length)) { if (predicate(array[index], index, array)) { return index; } } return -1; } module.exports = baseFindIndex; /***/ }), /***/ "./node_modules/lodash/_baseFlatten.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseFlatten.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), isFlattenable = __webpack_require__(/*! ./_isFlattenable */ "./node_modules/lodash/_isFlattenable.js"); /** * The base implementation of `_.flatten` with support for restricting flattening. * * @private * @param {Array} array The array to flatten. * @param {number} depth The maximum recursion depth. * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. * @param {Array} [result=[]] The initial result value. * @returns {Array} Returns the new flattened array. */ function baseFlatten(array, depth, predicate, isStrict, result) { var index = -1, length = array.length; predicate || (predicate = isFlattenable); result || (result = []); while (++index < length) { var value = array[index]; if (depth > 0 && predicate(value)) { if (depth > 1) { // Recursively flatten arrays (susceptible to call stack limits). baseFlatten(value, depth - 1, predicate, isStrict, result); } else { arrayPush(result, value); } } else if (!isStrict) { result[result.length] = value; } } return result; } module.exports = baseFlatten; /***/ }), /***/ "./node_modules/lodash/_baseFor.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_baseFor.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var createBaseFor = __webpack_require__(/*! ./_createBaseFor */ "./node_modules/lodash/_createBaseFor.js"); /** * The base implementation of `baseForOwn` which iterates over `object` * properties returned by `keysFunc` and invokes `iteratee` for each property. * Iteratee functions may exit iteration early by explicitly returning `false`. * * @private * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @param {Function} keysFunc The function to get the keys of `object`. * @returns {Object} Returns `object`. */ var baseFor = createBaseFor(); module.exports = baseFor; /***/ }), /***/ "./node_modules/lodash/_baseForOwn.js": /*!********************************************!*\ !*** ./node_modules/lodash/_baseForOwn.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); /** * The base implementation of `_.forOwn` without support for iteratee shorthands. * * @private * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Object} Returns `object`. */ function baseForOwn(object, iteratee) { return object && baseFor(object, iteratee, keys); } module.exports = baseForOwn; /***/ }), /***/ "./node_modules/lodash/_baseGet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_baseGet.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); /** * The base implementation of `_.get` without support for default values. * * @private * @param {Object} object The object to query. * @param {Array|string} path The path of the property to get. * @returns {*} Returns the resolved value. */ function baseGet(object, path) { path = castPath(path, object); var index = 0, length = path.length; while (object != null && index < length) { object = object[toKey(path[index++])]; } return (index && index == length) ? object : undefined; } module.exports = baseGet; /***/ }), /***/ "./node_modules/lodash/_baseGetAllKeys.js": /*!************************************************!*\ !*** ./node_modules/lodash/_baseGetAllKeys.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); /** * The base implementation of `getAllKeys` and `getAllKeysIn` which uses * `keysFunc` and `symbolsFunc` to get the enumerable property names and * symbols of `object`. * * @private * @param {Object} object The object to query. * @param {Function} keysFunc The function to get the keys of `object`. * @param {Function} symbolsFunc The function to get the symbols of `object`. * @returns {Array} Returns the array of property names and symbols. */ function baseGetAllKeys(object, keysFunc, symbolsFunc) { var result = keysFunc(object); return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); } module.exports = baseGetAllKeys; /***/ }), /***/ "./node_modules/lodash/_baseGetTag.js": /*!********************************************!*\ !*** ./node_modules/lodash/_baseGetTag.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"), objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js"); /** `Object#toString` result references. */ var nullTag = '[object Null]', undefinedTag = '[object Undefined]'; /** Built-in value references. */ var symToStringTag = Symbol ? Symbol.toStringTag : undefined; /** * The base implementation of `getTag` without fallbacks for buggy environments. * * @private * @param {*} value The value to query. * @returns {string} Returns the `toStringTag`. */ function baseGetTag(value) { if (value == null) { return value === undefined ? undefinedTag : nullTag; } return (symToStringTag && symToStringTag in Object(value)) ? getRawTag(value) : objectToString(value); } module.exports = baseGetTag; /***/ }), /***/ "./node_modules/lodash/_baseHasIn.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseHasIn.js ***! \*******************************************/ /***/ ((module) => { /** * The base implementation of `_.hasIn` without support for deep paths. * * @private * @param {Object} [object] The object to query. * @param {Array|string} key The key to check. * @returns {boolean} Returns `true` if `key` exists, else `false`. */ function baseHasIn(object, key) { return object != null && key in Object(object); } module.exports = baseHasIn; /***/ }), /***/ "./node_modules/lodash/_baseIndexOf.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIndexOf.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"), baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/lodash/_baseIsNaN.js"), strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/lodash/_strictIndexOf.js"); /** * The base implementation of `_.indexOf` without `fromIndex` bounds checks. * * @private * @param {Array} array The array to inspect. * @param {*} value The value to search for. * @param {number} fromIndex The index to search from. * @returns {number} Returns the index of the matched value, else `-1`. */ function baseIndexOf(array, value, fromIndex) { return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); } module.exports = baseIndexOf; /***/ }), /***/ "./node_modules/lodash/_baseIsArguments.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_baseIsArguments.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var argsTag = '[object Arguments]'; /** * The base implementation of `_.isArguments`. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an `arguments` object, */ function baseIsArguments(value) { return isObjectLike(value) && baseGetTag(value) == argsTag; } module.exports = baseIsArguments; /***/ }), /***/ "./node_modules/lodash/_baseIsEqual.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIsEqual.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/lodash/_baseIsEqualDeep.js"), isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); /** * The base implementation of `_.isEqual` which supports partial comparisons * and tracks traversed objects. * * @private * @param {*} value The value to compare. * @param {*} other The other value to compare. * @param {boolean} bitmask The bitmask flags. * 1 - Unordered comparison * 2 - Partial comparison * @param {Function} [customizer] The function to customize comparisons. * @param {Object} [stack] Tracks traversed `value` and `other` objects. * @returns {boolean} Returns `true` if the values are equivalent, else `false`. */ function baseIsEqual(value, other, bitmask, customizer, stack) { if (value === other) { return true; } if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { return value !== value && other !== other; } return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); } module.exports = baseIsEqual; /***/ }), /***/ "./node_modules/lodash/_baseIsEqualDeep.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_baseIsEqualDeep.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"), equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/lodash/_equalByTag.js"), equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/lodash/_equalObjects.js"), getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1; /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', objectTag = '[object Object]'; /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * A specialized version of `baseIsEqual` for arrays and objects which performs * deep comparisons and tracks traversed objects enabling objects with circular * references to be compared. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. * @param {Function} customizer The function to customize comparisons. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Object} [stack] Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other); objTag = objTag == argsTag ? objectTag : objTag; othTag = othTag == argsTag ? objectTag : othTag; var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; if (isSameTag && isBuffer(object)) { if (!isBuffer(other)) { return false; } objIsArr = true; objIsObj = false; } if (isSameTag && !objIsObj) { stack || (stack = new Stack); return (objIsArr || isTypedArray(object)) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); } if (!(bitmask & COMPARE_PARTIAL_FLAG)) { var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); if (objIsWrapped || othIsWrapped) { var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other; stack || (stack = new Stack); return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); } } if (!isSameTag) { return false; } stack || (stack = new Stack); return equalObjects(object, other, bitmask, customizer, equalFunc, stack); } module.exports = baseIsEqualDeep; /***/ }), /***/ "./node_modules/lodash/_baseIsMatch.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIsMatch.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; /** * The base implementation of `_.isMatch` without support for iteratee shorthands. * * @private * @param {Object} object The object to inspect. * @param {Object} source The object of property values to match. * @param {Array} matchData The property names, values, and compare flags to match. * @param {Function} [customizer] The function to customize comparisons. * @returns {boolean} Returns `true` if `object` is a match, else `false`. */ function baseIsMatch(object, source, matchData, customizer) { var index = matchData.length, length = index, noCustomizer = !customizer; if (object == null) { return !length; } object = Object(object); while (index--) { var data = matchData[index]; if ((noCustomizer && data[2]) ? data[1] !== object[data[0]] : !(data[0] in object) ) { return false; } } while (++index < length) { data = matchData[index]; var key = data[0], objValue = object[key], srcValue = data[1]; if (noCustomizer && data[2]) { if (objValue === undefined && !(key in object)) { return false; } } else { var stack = new Stack; if (customizer) { var result = customizer(objValue, srcValue, key, object, source, stack); } if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result )) { return false; } } } return true; } module.exports = baseIsMatch; /***/ }), /***/ "./node_modules/lodash/_baseIsNaN.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseIsNaN.js ***! \*******************************************/ /***/ ((module) => { /** * The base implementation of `_.isNaN` without support for number objects. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. */ function baseIsNaN(value) { return value !== value; } module.exports = baseIsNaN; /***/ }), /***/ "./node_modules/lodash/_baseIsNative.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_baseIsNative.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/lodash/_isMasked.js"), isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); /** * Used to match `RegExp` * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). */ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; /** Used to detect host constructors (Safari). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; /** Used for built-in method references. */ var funcProto = Function.prototype, objectProto = Object.prototype; /** Used to resolve the decompiled source of functions. */ var funcToString = funcProto.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** Used to detect if a method is native. */ var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' ); /** * The base implementation of `_.isNative` without bad shim checks. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a native function, * else `false`. */ function baseIsNative(value) { if (!isObject(value) || isMasked(value)) { return false; } var pattern = isFunction(value) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } module.exports = baseIsNative; /***/ }), /***/ "./node_modules/lodash/_baseIsTypedArray.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_baseIsTypedArray.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"), isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', mapTag = '[object Map]', numberTag = '[object Number]', objectTag = '[object Object]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', weakMapTag = '[object WeakMap]'; var arrayBufferTag = '[object ArrayBuffer]', dataViewTag = '[object DataView]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]'; /** Used to identify `toStringTag` values of typed arrays. */ var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; /** * The base implementation of `_.isTypedArray` without Node.js optimizations. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. */ function baseIsTypedArray(value) { return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; } module.exports = baseIsTypedArray; /***/ }), /***/ "./node_modules/lodash/_baseIteratee.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_baseIteratee.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/lodash/_baseMatches.js"), baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/lodash/_baseMatchesProperty.js"), identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), property = __webpack_require__(/*! ./property */ "./node_modules/lodash/property.js"); /** * The base implementation of `_.iteratee`. * * @private * @param {*} [value=_.identity] The value to convert to an iteratee. * @returns {Function} Returns the iteratee. */ function baseIteratee(value) { // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. if (typeof value == 'function') { return value; } if (value == null) { return identity; } if (typeof value == 'object') { return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); } return property(value); } module.exports = baseIteratee; /***/ }), /***/ "./node_modules/lodash/_baseKeys.js": /*!******************************************!*\ !*** ./node_modules/lodash/_baseKeys.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/lodash/_nativeKeys.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ function baseKeys(object) { if (!isPrototype(object)) { return nativeKeys(object); } var result = []; for (var key in Object(object)) { if (hasOwnProperty.call(object, key) && key != 'constructor') { result.push(key); } } return result; } module.exports = baseKeys; /***/ }), /***/ "./node_modules/lodash/_baseKeysIn.js": /*!********************************************!*\ !*** ./node_modules/lodash/_baseKeysIn.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ "./node_modules/lodash/_nativeKeysIn.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ function baseKeysIn(object) { if (!isObject(object)) { return nativeKeysIn(object); } var isProto = isPrototype(object), result = []; for (var key in object) { if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { result.push(key); } } return result; } module.exports = baseKeysIn; /***/ }), /***/ "./node_modules/lodash/_baseMap.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_baseMap.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); /** * The base implementation of `_.map` without support for iteratee shorthands. * * @private * @param {Array|Object} collection The collection to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the new mapped array. */ function baseMap(collection, iteratee) { var index = -1, result = isArrayLike(collection) ? Array(collection.length) : []; baseEach(collection, function(value, key, collection) { result[++index] = iteratee(value, key, collection); }); return result; } module.exports = baseMap; /***/ }), /***/ "./node_modules/lodash/_baseMatches.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseMatches.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/lodash/_baseIsMatch.js"), getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/lodash/_getMatchData.js"), matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"); /** * The base implementation of `_.matches` which doesn't clone `source`. * * @private * @param {Object} source The object of property values to match. * @returns {Function} Returns the new spec function. */ function baseMatches(source) { var matchData = getMatchData(source); if (matchData.length == 1 && matchData[0][2]) { return matchesStrictComparable(matchData[0][0], matchData[0][1]); } return function(object) { return object === source || baseIsMatch(object, source, matchData); }; } module.exports = baseMatches; /***/ }), /***/ "./node_modules/lodash/_baseMatchesProperty.js": /*!*****************************************************!*\ !*** ./node_modules/lodash/_baseMatchesProperty.js ***! \*****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"), get = __webpack_require__(/*! ./get */ "./node_modules/lodash/get.js"), hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"), isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"), matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"), toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; /** * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. * * @private * @param {string} path The path of the property to get. * @param {*} srcValue The value to match. * @returns {Function} Returns the new spec function. */ function baseMatchesProperty(path, srcValue) { if (isKey(path) && isStrictComparable(srcValue)) { return matchesStrictComparable(toKey(path), srcValue); } return function(object) { var objValue = get(object, path); return (objValue === undefined && objValue === srcValue) ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); }; } module.exports = baseMatchesProperty; /***/ }), /***/ "./node_modules/lodash/_baseMerge.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseMerge.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"), baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ "./node_modules/lodash/_baseMergeDeep.js"), isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"), safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"); /** * The base implementation of `_.merge` without support for multiple sources. * * @private * @param {Object} object The destination object. * @param {Object} source The source object. * @param {number} srcIndex The index of `source`. * @param {Function} [customizer] The function to customize merged values. * @param {Object} [stack] Tracks traversed source values and their merged * counterparts. */ function baseMerge(object, source, srcIndex, customizer, stack) { if (object === source) { return; } baseFor(source, function(srcValue, key) { stack || (stack = new Stack); if (isObject(srcValue)) { baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); } else { var newValue = customizer ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) : undefined; if (newValue === undefined) { newValue = srcValue; } assignMergeValue(object, key, newValue); } }, keysIn); } module.exports = baseMerge; /***/ }), /***/ "./node_modules/lodash/_baseMergeDeep.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_baseMergeDeep.js ***! \***********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"), cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"), cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"), copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"), initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"), isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"), isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), isPlainObject = __webpack_require__(/*! ./isPlainObject */ "./node_modules/lodash/isPlainObject.js"), isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"), safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"), toPlainObject = __webpack_require__(/*! ./toPlainObject */ "./node_modules/lodash/toPlainObject.js"); /** * A specialized version of `baseMerge` for arrays and objects which performs * deep merges and tracks traversed objects enabling objects with circular * references to be merged. * * @private * @param {Object} object The destination object. * @param {Object} source The source object. * @param {string} key The key of the value to merge. * @param {number} srcIndex The index of `source`. * @param {Function} mergeFunc The function to merge values. * @param {Function} [customizer] The function to customize assigned values. * @param {Object} [stack] Tracks traversed source values and their merged * counterparts. */ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); if (stacked) { assignMergeValue(object, key, stacked); return; } var newValue = customizer ? customizer(objValue, srcValue, (key + ''), object, source, stack) : undefined; var isCommon = newValue === undefined; if (isCommon) { var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); newValue = srcValue; if (isArr || isBuff || isTyped) { if (isArray(objValue)) { newValue = objValue; } else if (isArrayLikeObject(objValue)) { newValue = copyArray(objValue); } else if (isBuff) { isCommon = false; newValue = cloneBuffer(srcValue, true); } else if (isTyped) { isCommon = false; newValue = cloneTypedArray(srcValue, true); } else { newValue = []; } } else if (isPlainObject(srcValue) || isArguments(srcValue)) { newValue = objValue; if (isArguments(objValue)) { newValue = toPlainObject(objValue); } else if (!isObject(objValue) || isFunction(objValue)) { newValue = initCloneObject(srcValue); } } else { isCommon = false; } } if (isCommon) { // Recursively merge objects and arrays (susceptible to call stack limits). stack.set(srcValue, newValue); mergeFunc(newValue, srcValue, srcIndex, customizer, stack); stack['delete'](srcValue); } assignMergeValue(object, key, newValue); } module.exports = baseMergeDeep; /***/ }), /***/ "./node_modules/lodash/_baseOrderBy.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseOrderBy.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"), baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"), baseSortBy = __webpack_require__(/*! ./_baseSortBy */ "./node_modules/lodash/_baseSortBy.js"), baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), compareMultiple = __webpack_require__(/*! ./_compareMultiple */ "./node_modules/lodash/_compareMultiple.js"), identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); /** * The base implementation of `_.orderBy` without param guards. * * @private * @param {Array|Object} collection The collection to iterate over. * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. * @param {string[]} orders The sort orders of `iteratees`. * @returns {Array} Returns the new sorted array. */ function baseOrderBy(collection, iteratees, orders) { if (iteratees.length) { iteratees = arrayMap(iteratees, function(iteratee) { if (isArray(iteratee)) { return function(value) { return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); } } return iteratee; }); } else { iteratees = [identity]; } var index = -1; iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); var result = baseMap(collection, function(value, key, collection) { var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); }); return { 'criteria': criteria, 'index': ++index, 'value': value }; }); return baseSortBy(result, function(object, other) { return compareMultiple(object, other, orders); }); } module.exports = baseOrderBy; /***/ }), /***/ "./node_modules/lodash/_basePick.js": /*!******************************************!*\ !*** ./node_modules/lodash/_basePick.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var basePickBy = __webpack_require__(/*! ./_basePickBy */ "./node_modules/lodash/_basePickBy.js"), hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"); /** * The base implementation of `_.pick` without support for individual * property identifiers. * * @private * @param {Object} object The source object. * @param {string[]} paths The property paths to pick. * @returns {Object} Returns the new object. */ function basePick(object, paths) { return basePickBy(object, paths, function(value, path) { return hasIn(object, path); }); } module.exports = basePick; /***/ }), /***/ "./node_modules/lodash/_basePickBy.js": /*!********************************************!*\ !*** ./node_modules/lodash/_basePickBy.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"), baseSet = __webpack_require__(/*! ./_baseSet */ "./node_modules/lodash/_baseSet.js"), castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"); /** * The base implementation of `_.pickBy` without support for iteratee shorthands. * * @private * @param {Object} object The source object. * @param {string[]} paths The property paths to pick. * @param {Function} predicate The function invoked per property. * @returns {Object} Returns the new object. */ function basePickBy(object, paths, predicate) { var index = -1, length = paths.length, result = {}; while (++index < length) { var path = paths[index], value = baseGet(object, path); if (predicate(value, path)) { baseSet(result, castPath(path, object), value); } } return result; } module.exports = basePickBy; /***/ }), /***/ "./node_modules/lodash/_baseProperty.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_baseProperty.js ***! \**********************************************/ /***/ ((module) => { /** * The base implementation of `_.property` without support for deep paths. * * @private * @param {string} key The key of the property to get. * @returns {Function} Returns the new accessor function. */ function baseProperty(key) { return function(object) { return object == null ? undefined : object[key]; }; } module.exports = baseProperty; /***/ }), /***/ "./node_modules/lodash/_basePropertyDeep.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_basePropertyDeep.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"); /** * A specialized version of `baseProperty` which supports deep paths. * * @private * @param {Array|string} path The path of the property to get. * @returns {Function} Returns the new accessor function. */ function basePropertyDeep(path) { return function(object) { return baseGet(object, path); }; } module.exports = basePropertyDeep; /***/ }), /***/ "./node_modules/lodash/_baseRest.js": /*!******************************************!*\ !*** ./node_modules/lodash/_baseRest.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"), setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js"); /** * The base implementation of `_.rest` which doesn't validate or coerce arguments. * * @private * @param {Function} func The function to apply a rest parameter to. * @param {number} [start=func.length-1] The start position of the rest parameter. * @returns {Function} Returns the new function. */ function baseRest(func, start) { return setToString(overRest(func, start, identity), func + ''); } module.exports = baseRest; /***/ }), /***/ "./node_modules/lodash/_baseSet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_baseSet.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); /** * The base implementation of `_.set`. * * @private * @param {Object} object The object to modify. * @param {Array|string} path The path of the property to set. * @param {*} value The value to set. * @param {Function} [customizer] The function to customize path creation. * @returns {Object} Returns `object`. */ function baseSet(object, path, value, customizer) { if (!isObject(object)) { return object; } path = castPath(path, object); var index = -1, length = path.length, lastIndex = length - 1, nested = object; while (nested != null && ++index < length) { var key = toKey(path[index]), newValue = value; if (key === '__proto__' || key === 'constructor' || key === 'prototype') { return object; } if (index != lastIndex) { var objValue = nested[key]; newValue = customizer ? customizer(objValue, key, nested) : undefined; if (newValue === undefined) { newValue = isObject(objValue) ? objValue : (isIndex(path[index + 1]) ? [] : {}); } } assignValue(nested, key, newValue); nested = nested[key]; } return object; } module.exports = baseSet; /***/ }), /***/ "./node_modules/lodash/_baseSetToString.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_baseSetToString.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var constant = __webpack_require__(/*! ./constant */ "./node_modules/lodash/constant.js"), defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"), identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); /** * The base implementation of `setToString` without support for hot loop shorting. * * @private * @param {Function} func The function to modify. * @param {Function} string The `toString` result. * @returns {Function} Returns `func`. */ var baseSetToString = !defineProperty ? identity : function(func, string) { return defineProperty(func, 'toString', { 'configurable': true, 'enumerable': false, 'value': constant(string), 'writable': true }); }; module.exports = baseSetToString; /***/ }), /***/ "./node_modules/lodash/_baseSortBy.js": /*!********************************************!*\ !*** ./node_modules/lodash/_baseSortBy.js ***! \********************************************/ /***/ ((module) => { /** * The base implementation of `_.sortBy` which uses `comparer` to define the * sort order of `array` and replaces criteria objects with their corresponding * values. * * @private * @param {Array} array The array to sort. * @param {Function} comparer The function to define sort order. * @returns {Array} Returns `array`. */ function baseSortBy(array, comparer) { var length = array.length; array.sort(comparer); while (length--) { array[length] = array[length].value; } return array; } module.exports = baseSortBy; /***/ }), /***/ "./node_modules/lodash/_baseTimes.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseTimes.js ***! \*******************************************/ /***/ ((module) => { /** * The base implementation of `_.times` without support for iteratee shorthands * or max array length checks. * * @private * @param {number} n The number of times to invoke `iteratee`. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the array of results. */ function baseTimes(n, iteratee) { var index = -1, result = Array(n); while (++index < n) { result[index] = iteratee(index); } return result; } module.exports = baseTimes; /***/ }), /***/ "./node_modules/lodash/_baseToString.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_baseToString.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; /** Used to convert symbols to primitives and strings. */ var symbolProto = Symbol ? Symbol.prototype : undefined, symbolToString = symbolProto ? symbolProto.toString : undefined; /** * The base implementation of `_.toString` which doesn't convert nullish * values to empty strings. * * @private * @param {*} value The value to process. * @returns {string} Returns the string. */ function baseToString(value) { // Exit early for strings to avoid a performance hit in some environments. if (typeof value == 'string') { return value; } if (isArray(value)) { // Recursively convert values (susceptible to call stack limits). return arrayMap(value, baseToString) + ''; } if (isSymbol(value)) { return symbolToString ? symbolToString.call(value) : ''; } var result = (value + ''); return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } module.exports = baseToString; /***/ }), /***/ "./node_modules/lodash/_baseUnary.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseUnary.js ***! \*******************************************/ /***/ ((module) => { /** * The base implementation of `_.unary` without support for storing metadata. * * @private * @param {Function} func The function to cap arguments for. * @returns {Function} Returns the new capped function. */ function baseUnary(func) { return function(value) { return func(value); }; } module.exports = baseUnary; /***/ }), /***/ "./node_modules/lodash/_baseUniq.js": /*!******************************************!*\ !*** ./node_modules/lodash/_baseUniq.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"), arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/lodash/_arrayIncludes.js"), arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/lodash/_arrayIncludesWith.js"), cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"), createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/lodash/_createSet.js"), setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; /** * The base implementation of `_.uniqBy` without support for iteratee shorthands. * * @private * @param {Array} array The array to inspect. * @param {Function} [iteratee] The iteratee invoked per element. * @param {Function} [comparator] The comparator invoked per element. * @returns {Array} Returns the new duplicate free array. */ function baseUniq(array, iteratee, comparator) { var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result; if (comparator) { isCommon = false; includes = arrayIncludesWith; } else if (length >= LARGE_ARRAY_SIZE) { var set = iteratee ? null : createSet(array); if (set) { return setToArray(set); } isCommon = false; includes = cacheHas; seen = new SetCache; } else { seen = iteratee ? [] : result; } outer: while (++index < length) { var value = array[index], computed = iteratee ? iteratee(value) : value; value = (comparator || value !== 0) ? value : 0; if (isCommon && computed === computed) { var seenIndex = seen.length; while (seenIndex--) { if (seen[seenIndex] === computed) { continue outer; } } if (iteratee) { seen.push(computed); } result.push(value); } else if (!includes(seen, computed, comparator)) { if (seen !== result) { seen.push(computed); } result.push(value); } } return result; } module.exports = baseUniq; /***/ }), /***/ "./node_modules/lodash/_cacheHas.js": /*!******************************************!*\ !*** ./node_modules/lodash/_cacheHas.js ***! \******************************************/ /***/ ((module) => { /** * Checks if a `cache` value for `key` exists. * * @private * @param {Object} cache The cache to query. * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function cacheHas(cache, key) { return cache.has(key); } module.exports = cacheHas; /***/ }), /***/ "./node_modules/lodash/_castPath.js": /*!******************************************!*\ !*** ./node_modules/lodash/_castPath.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/lodash/_stringToPath.js"), toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js"); /** * Casts `value` to a path array if it's not one. * * @private * @param {*} value The value to inspect. * @param {Object} [object] The object to query keys on. * @returns {Array} Returns the cast property path array. */ function castPath(value, object) { if (isArray(value)) { return value; } return isKey(value, object) ? [value] : stringToPath(toString(value)); } module.exports = castPath; /***/ }), /***/ "./node_modules/lodash/_cloneArrayBuffer.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_cloneArrayBuffer.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"); /** * Creates a clone of `arrayBuffer`. * * @private * @param {ArrayBuffer} arrayBuffer The array buffer to clone. * @returns {ArrayBuffer} Returns the cloned array buffer. */ function cloneArrayBuffer(arrayBuffer) { var result = new arrayBuffer.constructor(arrayBuffer.byteLength); new Uint8Array(result).set(new Uint8Array(arrayBuffer)); return result; } module.exports = cloneArrayBuffer; /***/ }), /***/ "./node_modules/lodash/_cloneBuffer.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_cloneBuffer.js ***! \*********************************************/ /***/ ((module, exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; /** Detect free variable `module`. */ var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; /** Detect the popular CommonJS extension `module.exports`. */ var moduleExports = freeModule && freeModule.exports === freeExports; /** Built-in value references. */ var Buffer = moduleExports ? root.Buffer : undefined, allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; /** * Creates a clone of `buffer`. * * @private * @param {Buffer} buffer The buffer to clone. * @param {boolean} [isDeep] Specify a deep clone. * @returns {Buffer} Returns the cloned buffer. */ function cloneBuffer(buffer, isDeep) { if (isDeep) { return buffer.slice(); } var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); buffer.copy(result); return result; } module.exports = cloneBuffer; /***/ }), /***/ "./node_modules/lodash/_cloneTypedArray.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_cloneTypedArray.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"); /** * Creates a clone of `typedArray`. * * @private * @param {Object} typedArray The typed array to clone. * @param {boolean} [isDeep] Specify a deep clone. * @returns {Object} Returns the cloned typed array. */ function cloneTypedArray(typedArray, isDeep) { var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); } module.exports = cloneTypedArray; /***/ }), /***/ "./node_modules/lodash/_compareAscending.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_compareAscending.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); /** * Compares values to sort them in ascending order. * * @private * @param {*} value The value to compare. * @param {*} other The other value to compare. * @returns {number} Returns the sort order indicator for `value`. */ function compareAscending(value, other) { if (value !== other) { var valIsDefined = value !== undefined, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value); var othIsDefined = other !== undefined, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other); if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || (valIsNull && othIsDefined && othIsReflexive) || (!valIsDefined && othIsReflexive) || !valIsReflexive) { return 1; } if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || (othIsNull && valIsDefined && valIsReflexive) || (!othIsDefined && valIsReflexive) || !othIsReflexive) { return -1; } } return 0; } module.exports = compareAscending; /***/ }), /***/ "./node_modules/lodash/_compareMultiple.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_compareMultiple.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var compareAscending = __webpack_require__(/*! ./_compareAscending */ "./node_modules/lodash/_compareAscending.js"); /** * Used by `_.orderBy` to compare multiple properties of a value to another * and stable sort them. * * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, * specify an order of "desc" for descending or "asc" for ascending sort order * of corresponding values. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {boolean[]|string[]} orders The order to sort by for each property. * @returns {number} Returns the sort order indicator for `object`. */ function compareMultiple(object, other, orders) { var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; while (++index < length) { var result = compareAscending(objCriteria[index], othCriteria[index]); if (result) { if (index >= ordersLength) { return result; } var order = orders[index]; return result * (order == 'desc' ? -1 : 1); } } // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications // that causes it, under certain circumstances, to provide the same value for // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 // for more details. // // This also ensures a stable sort in V8 and other engines. // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. return object.index - other.index; } module.exports = compareMultiple; /***/ }), /***/ "./node_modules/lodash/_copyArray.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_copyArray.js ***! \*******************************************/ /***/ ((module) => { /** * Copies the values of `source` to `array`. * * @private * @param {Array} source The array to copy values from. * @param {Array} [array=[]] The array to copy values to. * @returns {Array} Returns `array`. */ function copyArray(source, array) { var index = -1, length = source.length; array || (array = Array(length)); while (++index < length) { array[index] = source[index]; } return array; } module.exports = copyArray; /***/ }), /***/ "./node_modules/lodash/_copyObject.js": /*!********************************************!*\ !*** ./node_modules/lodash/_copyObject.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"); /** * Copies properties of `source` to `object`. * * @private * @param {Object} source The object to copy properties from. * @param {Array} props The property identifiers to copy. * @param {Object} [object={}] The object to copy properties to. * @param {Function} [customizer] The function to customize copied values. * @returns {Object} Returns `object`. */ function copyObject(source, props, object, customizer) { var isNew = !object; object || (object = {}); var index = -1, length = props.length; while (++index < length) { var key = props[index]; var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined; if (newValue === undefined) { newValue = source[key]; } if (isNew) { baseAssignValue(object, key, newValue); } else { assignValue(object, key, newValue); } } return object; } module.exports = copyObject; /***/ }), /***/ "./node_modules/lodash/_coreJsData.js": /*!********************************************!*\ !*** ./node_modules/lodash/_coreJsData.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); /** Used to detect overreaching core-js shims. */ var coreJsData = root['__core-js_shared__']; module.exports = coreJsData; /***/ }), /***/ "./node_modules/lodash/_createAssigner.js": /*!************************************************!*\ !*** ./node_modules/lodash/_createAssigner.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"); /** * Creates a function like `_.assign`. * * @private * @param {Function} assigner The function to assign values. * @returns {Function} Returns the new assigner function. */ function createAssigner(assigner) { return baseRest(function(object, sources) { var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined, guard = length > 2 ? sources[2] : undefined; customizer = (assigner.length > 3 && typeof customizer == 'function') ? (length--, customizer) : undefined; if (guard && isIterateeCall(sources[0], sources[1], guard)) { customizer = length < 3 ? undefined : customizer; length = 1; } object = Object(object); while (++index < length) { var source = sources[index]; if (source) { assigner(object, source, index, customizer); } } return object; }); } module.exports = createAssigner; /***/ }), /***/ "./node_modules/lodash/_createBaseEach.js": /*!************************************************!*\ !*** ./node_modules/lodash/_createBaseEach.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); /** * Creates a `baseEach` or `baseEachRight` function. * * @private * @param {Function} eachFunc The function to iterate over a collection. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Function} Returns the new base function. */ function createBaseEach(eachFunc, fromRight) { return function(collection, iteratee) { if (collection == null) { return collection; } if (!isArrayLike(collection)) { return eachFunc(collection, iteratee); } var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection); while ((fromRight ? index-- : ++index < length)) { if (iteratee(iterable[index], index, iterable) === false) { break; } } return collection; }; } module.exports = createBaseEach; /***/ }), /***/ "./node_modules/lodash/_createBaseFor.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_createBaseFor.js ***! \***********************************************/ /***/ ((module) => { /** * Creates a base function for methods like `_.forIn` and `_.forOwn`. * * @private * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Function} Returns the new base function. */ function createBaseFor(fromRight) { return function(object, iteratee, keysFunc) { var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length; while (length--) { var key = props[fromRight ? length : ++index]; if (iteratee(iterable[key], key, iterable) === false) { break; } } return object; }; } module.exports = createBaseFor; /***/ }), /***/ "./node_modules/lodash/_createSet.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_createSet.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"), noop = __webpack_require__(/*! ./noop */ "./node_modules/lodash/noop.js"), setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; /** * Creates a set object of `values`. * * @private * @param {Array} values The values to add to the set. * @returns {Object} Returns the new set. */ var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { return new Set(values); }; module.exports = createSet; /***/ }), /***/ "./node_modules/lodash/_defineProperty.js": /*!************************************************!*\ !*** ./node_modules/lodash/_defineProperty.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); var defineProperty = (function() { try { var func = getNative(Object, 'defineProperty'); func({}, '', {}); return func; } catch (e) {} }()); module.exports = defineProperty; /***/ }), /***/ "./node_modules/lodash/_equalArrays.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_equalArrays.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"), arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/lodash/_arraySome.js"), cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; /** * A specialized version of `baseIsEqualDeep` for arrays with support for * partial deep comparisons. * * @private * @param {Array} array The array to compare. * @param {Array} other The other array to compare. * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. * @param {Function} customizer The function to customize comparisons. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Object} stack Tracks traversed `array` and `other` objects. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. */ function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length; if (arrLength != othLength && !(isPartial && othLength > arrLength)) { return false; } // Check that cyclic values are equal. var arrStacked = stack.get(array); var othStacked = stack.get(other); if (arrStacked && othStacked) { return arrStacked == other && othStacked == array; } var index = -1, result = true, seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; stack.set(array, other); stack.set(other, array); // Ignore non-index properties. while (++index < arrLength) { var arrValue = array[index], othValue = other[index]; if (customizer) { var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); } if (compared !== undefined) { if (compared) { continue; } result = false; break; } // Recursively compare arrays (susceptible to call stack limits). if (seen) { if (!arraySome(other, function(othValue, othIndex) { if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { return seen.push(othIndex); } })) { result = false; break; } } else if (!( arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack) )) { result = false; break; } } stack['delete'](array); stack['delete'](other); return result; } module.exports = equalArrays; /***/ }), /***/ "./node_modules/lodash/_equalByTag.js": /*!********************************************!*\ !*** ./node_modules/lodash/_equalByTag.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"), eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"), mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/lodash/_mapToArray.js"), setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; /** `Object#toString` result references. */ var boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', mapTag = '[object Map]', numberTag = '[object Number]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', symbolTag = '[object Symbol]'; var arrayBufferTag = '[object ArrayBuffer]', dataViewTag = '[object DataView]'; /** Used to convert symbols to primitives and strings. */ var symbolProto = Symbol ? Symbol.prototype : undefined, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; /** * A specialized version of `baseIsEqualDeep` for comparing objects of * the same `toStringTag`. * * **Note:** This function only supports comparing values with tags of * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {string} tag The `toStringTag` of the objects to compare. * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. * @param {Function} customizer The function to customize comparisons. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Object} stack Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { switch (tag) { case dataViewTag: if ((object.byteLength != other.byteLength) || (object.byteOffset != other.byteOffset)) { return false; } object = object.buffer; other = other.buffer; case arrayBufferTag: if ((object.byteLength != other.byteLength) || !equalFunc(new Uint8Array(object), new Uint8Array(other))) { return false; } return true; case boolTag: case dateTag: case numberTag: // Coerce booleans to `1` or `0` and dates to milliseconds. // Invalid dates are coerced to `NaN`. return eq(+object, +other); case errorTag: return object.name == other.name && object.message == other.message; case regexpTag: case stringTag: // Coerce regexes to strings and treat strings, primitives and objects, // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring // for more details. return object == (other + ''); case mapTag: var convert = mapToArray; case setTag: var isPartial = bitmask & COMPARE_PARTIAL_FLAG; convert || (convert = setToArray); if (object.size != other.size && !isPartial) { return false; } // Assume cyclic values are equal. var stacked = stack.get(object); if (stacked) { return stacked == other; } bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits). stack.set(object, other); var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); stack['delete'](object); return result; case symbolTag: if (symbolValueOf) { return symbolValueOf.call(object) == symbolValueOf.call(other); } } return false; } module.exports = equalByTag; /***/ }), /***/ "./node_modules/lodash/_equalObjects.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_equalObjects.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js"); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1; /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * A specialized version of `baseIsEqualDeep` for objects with support for * partial deep comparisons. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. * @param {Function} customizer The function to customize comparisons. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Object} stack Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length; if (objLength != othLength && !isPartial) { return false; } var index = objLength; while (index--) { var key = objProps[index]; if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { return false; } } // Check that cyclic values are equal. var objStacked = stack.get(object); var othStacked = stack.get(other); if (objStacked && othStacked) { return objStacked == other && othStacked == object; } var result = true; stack.set(object, other); stack.set(other, object); var skipCtor = isPartial; while (++index < objLength) { key = objProps[index]; var objValue = object[key], othValue = other[key]; if (customizer) { var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); } // Recursively compare objects (susceptible to call stack limits). if (!(compared === undefined ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) : compared )) { result = false; break; } skipCtor || (skipCtor = key == 'constructor'); } if (result && !skipCtor) { var objCtor = object.constructor, othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal. if (objCtor != othCtor && ('constructor' in object && 'constructor' in other) && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) { result = false; } } stack['delete'](object); stack['delete'](other); return result; } module.exports = equalObjects; /***/ }), /***/ "./node_modules/lodash/_flatRest.js": /*!******************************************!*\ !*** ./node_modules/lodash/_flatRest.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var flatten = __webpack_require__(/*! ./flatten */ "./node_modules/lodash/flatten.js"), overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"), setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js"); /** * A specialized version of `baseRest` which flattens the rest array. * * @private * @param {Function} func The function to apply a rest parameter to. * @returns {Function} Returns the new function. */ function flatRest(func) { return setToString(overRest(func, undefined, flatten), func + ''); } module.exports = flatRest; /***/ }), /***/ "./node_modules/lodash/_freeGlobal.js": /*!********************************************!*\ !*** ./node_modules/lodash/_freeGlobal.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** Detect free variable `global` from Node.js. */ var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g; module.exports = freeGlobal; /***/ }), /***/ "./node_modules/lodash/_getAllKeys.js": /*!********************************************!*\ !*** ./node_modules/lodash/_getAllKeys.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"), getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"), keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); /** * Creates an array of own enumerable property names and symbols of `object`. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names and symbols. */ function getAllKeys(object) { return baseGetAllKeys(object, keys, getSymbols); } module.exports = getAllKeys; /***/ }), /***/ "./node_modules/lodash/_getMapData.js": /*!********************************************!*\ !*** ./node_modules/lodash/_getMapData.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/lodash/_isKeyable.js"); /** * Gets the data for `map`. * * @private * @param {Object} map The map to query. * @param {string} key The reference key. * @returns {*} Returns the map data. */ function getMapData(map, key) { var data = map.__data__; return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; } module.exports = getMapData; /***/ }), /***/ "./node_modules/lodash/_getMatchData.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_getMatchData.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"), keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); /** * Gets the property names, values, and compare flags of `object`. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the match data of `object`. */ function getMatchData(object) { var result = keys(object), length = result.length; while (length--) { var key = result[length], value = object[key]; result[length] = [key, value, isStrictComparable(value)]; } return result; } module.exports = getMatchData; /***/ }), /***/ "./node_modules/lodash/_getNative.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_getNative.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"), getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js"); /** * Gets the native function at `key` of `object`. * * @private * @param {Object} object The object to query. * @param {string} key The key of the method to get. * @returns {*} Returns the function if it's native, else `undefined`. */ function getNative(object, key) { var value = getValue(object, key); return baseIsNative(value) ? value : undefined; } module.exports = getNative; /***/ }), /***/ "./node_modules/lodash/_getPrototype.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_getPrototype.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js"); /** Built-in value references. */ var getPrototype = overArg(Object.getPrototypeOf, Object); module.exports = getPrototype; /***/ }), /***/ "./node_modules/lodash/_getRawTag.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_getRawTag.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var nativeObjectToString = objectProto.toString; /** Built-in value references. */ var symToStringTag = Symbol ? Symbol.toStringTag : undefined; /** * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. * * @private * @param {*} value The value to query. * @returns {string} Returns the raw `toStringTag`. */ function getRawTag(value) { var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; try { value[symToStringTag] = undefined; var unmasked = true; } catch (e) {} var result = nativeObjectToString.call(value); if (unmasked) { if (isOwn) { value[symToStringTag] = tag; } else { delete value[symToStringTag]; } } return result; } module.exports = getRawTag; /***/ }), /***/ "./node_modules/lodash/_getSymbols.js": /*!********************************************!*\ !*** ./node_modules/lodash/_getSymbols.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"), stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Built-in value references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable; /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeGetSymbols = Object.getOwnPropertySymbols; /** * Creates an array of the own enumerable symbols of `object`. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of symbols. */ var getSymbols = !nativeGetSymbols ? stubArray : function(object) { if (object == null) { return []; } object = Object(object); return arrayFilter(nativeGetSymbols(object), function(symbol) { return propertyIsEnumerable.call(object, symbol); }); }; module.exports = getSymbols; /***/ }), /***/ "./node_modules/lodash/_getTag.js": /*!****************************************!*\ !*** ./node_modules/lodash/_getTag.js ***! \****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/lodash/_DataView.js"), Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"), Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/lodash/_Promise.js"), Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"), WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/lodash/_WeakMap.js"), baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); /** `Object#toString` result references. */ var mapTag = '[object Map]', objectTag = '[object Object]', promiseTag = '[object Promise]', setTag = '[object Set]', weakMapTag = '[object WeakMap]'; var dataViewTag = '[object DataView]'; /** Used to detect maps, sets, and weakmaps. */ var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap); /** * Gets the `toStringTag` of `value`. * * @private * @param {*} value The value to query. * @returns {string} Returns the `toStringTag`. */ var getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || (Map && getTag(new Map) != mapTag) || (Promise && getTag(Promise.resolve()) != promiseTag) || (Set && getTag(new Set) != setTag) || (WeakMap && getTag(new WeakMap) != weakMapTag)) { getTag = function(value) { var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : undefined, ctorString = Ctor ? toSource(Ctor) : ''; if (ctorString) { switch (ctorString) { case dataViewCtorString: return dataViewTag; case mapCtorString: return mapTag; case promiseCtorString: return promiseTag; case setCtorString: return setTag; case weakMapCtorString: return weakMapTag; } } return result; }; } module.exports = getTag; /***/ }), /***/ "./node_modules/lodash/_getValue.js": /*!******************************************!*\ !*** ./node_modules/lodash/_getValue.js ***! \******************************************/ /***/ ((module) => { /** * Gets the value at `key` of `object`. * * @private * @param {Object} [object] The object to query. * @param {string} key The key of the property to get. * @returns {*} Returns the property value. */ function getValue(object, key) { return object == null ? undefined : object[key]; } module.exports = getValue; /***/ }), /***/ "./node_modules/lodash/_hasPath.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_hasPath.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"), toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); /** * Checks if `path` exists on `object`. * * @private * @param {Object} object The object to query. * @param {Array|string} path The path to check. * @param {Function} hasFunc The function to check properties. * @returns {boolean} Returns `true` if `path` exists, else `false`. */ function hasPath(object, path, hasFunc) { path = castPath(path, object); var index = -1, length = path.length, result = false; while (++index < length) { var key = toKey(path[index]); if (!(result = object != null && hasFunc(object, key))) { break; } object = object[key]; } if (result || ++index != length) { return result; } length = object == null ? 0 : object.length; return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object)); } module.exports = hasPath; /***/ }), /***/ "./node_modules/lodash/_hashClear.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_hashClear.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); /** * Removes all key-value entries from the hash. * * @private * @name clear * @memberOf Hash */ function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; this.size = 0; } module.exports = hashClear; /***/ }), /***/ "./node_modules/lodash/_hashDelete.js": /*!********************************************!*\ !*** ./node_modules/lodash/_hashDelete.js ***! \********************************************/ /***/ ((module) => { /** * Removes `key` and its value from the hash. * * @private * @name delete * @memberOf Hash * @param {Object} hash The hash to modify. * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function hashDelete(key) { var result = this.has(key) && delete this.__data__[key]; this.size -= result ? 1 : 0; return result; } module.exports = hashDelete; /***/ }), /***/ "./node_modules/lodash/_hashGet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_hashGet.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Gets the hash value for `key`. * * @private * @name get * @memberOf Hash * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ function hashGet(key) { var data = this.__data__; if (nativeCreate) { var result = data[key]; return result === HASH_UNDEFINED ? undefined : result; } return hasOwnProperty.call(data, key) ? data[key] : undefined; } module.exports = hashGet; /***/ }), /***/ "./node_modules/lodash/_hashHas.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_hashHas.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Checks if a hash value for `key` exists. * * @private * @name has * @memberOf Hash * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function hashHas(key) { var data = this.__data__; return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); } module.exports = hashHas; /***/ }), /***/ "./node_modules/lodash/_hashSet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_hashSet.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; /** * Sets the hash `key` to `value`. * * @private * @name set * @memberOf Hash * @param {string} key The key of the value to set. * @param {*} value The value to set. * @returns {Object} Returns the hash instance. */ function hashSet(key, value) { var data = this.__data__; this.size += this.has(key) ? 0 : 1; data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; return this; } module.exports = hashSet; /***/ }), /***/ "./node_modules/lodash/_initCloneObject.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_initCloneObject.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"), getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"); /** * Initializes an object clone. * * @private * @param {Object} object The object to clone. * @returns {Object} Returns the initialized clone. */ function initCloneObject(object) { return (typeof object.constructor == 'function' && !isPrototype(object)) ? baseCreate(getPrototype(object)) : {}; } module.exports = initCloneObject; /***/ }), /***/ "./node_modules/lodash/_isFlattenable.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_isFlattenable.js ***! \***********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); /** Built-in value references. */ var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; /** * Checks if `value` is a flattenable `arguments` object or array. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. */ function isFlattenable(value) { return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); } module.exports = isFlattenable; /***/ }), /***/ "./node_modules/lodash/_isIndex.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_isIndex.js ***! \*****************************************/ /***/ ((module) => { /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER = 9007199254740991; /** Used to detect unsigned integer values. */ var reIsUint = /^(?:0|[1-9]\d*)$/; /** * Checks if `value` is a valid array-like index. * * @private * @param {*} value The value to check. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. */ function isIndex(value, length) { var type = typeof value; length = length == null ? MAX_SAFE_INTEGER : length; return !!length && (type == 'number' || (type != 'symbol' && reIsUint.test(value))) && (value > -1 && value % 1 == 0 && value < length); } module.exports = isIndex; /***/ }), /***/ "./node_modules/lodash/_isIterateeCall.js": /*!************************************************!*\ !*** ./node_modules/lodash/_isIterateeCall.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); /** * Checks if the given arguments are from an iteratee call. * * @private * @param {*} value The potential iteratee value argument. * @param {*} index The potential iteratee index or key argument. * @param {*} object The potential iteratee object argument. * @returns {boolean} Returns `true` if the arguments are from an iteratee call, * else `false`. */ function isIterateeCall(value, index, object) { if (!isObject(object)) { return false; } var type = typeof index; if (type == 'number' ? (isArrayLike(object) && isIndex(index, object.length)) : (type == 'string' && index in object) ) { return eq(object[index], value); } return false; } module.exports = isIterateeCall; /***/ }), /***/ "./node_modules/lodash/_isKey.js": /*!***************************************!*\ !*** ./node_modules/lodash/_isKey.js ***! \***************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/; /** * Checks if `value` is a property name and not a property path. * * @private * @param {*} value The value to check. * @param {Object} [object] The object to query keys on. * @returns {boolean} Returns `true` if `value` is a property name, else `false`. */ function isKey(value, object) { if (isArray(value)) { return false; } var type = typeof value; if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { return true; } return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || (object != null && value in Object(object)); } module.exports = isKey; /***/ }), /***/ "./node_modules/lodash/_isKeyable.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_isKeyable.js ***! \*******************************************/ /***/ ((module) => { /** * Checks if `value` is suitable for use as unique object key. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is suitable, else `false`. */ function isKeyable(value) { var type = typeof value; return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') ? (value !== '__proto__') : (value === null); } module.exports = isKeyable; /***/ }), /***/ "./node_modules/lodash/_isMasked.js": /*!******************************************!*\ !*** ./node_modules/lodash/_isMasked.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/lodash/_coreJsData.js"); /** Used to detect methods masquerading as native. */ var maskSrcKey = (function() { var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); return uid ? ('Symbol(src)_1.' + uid) : ''; }()); /** * Checks if `func` has its source masked. * * @private * @param {Function} func The function to check. * @returns {boolean} Returns `true` if `func` is masked, else `false`. */ function isMasked(func) { return !!maskSrcKey && (maskSrcKey in func); } module.exports = isMasked; /***/ }), /***/ "./node_modules/lodash/_isPrototype.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_isPrototype.js ***! \*********************************************/ /***/ ((module) => { /** Used for built-in method references. */ var objectProto = Object.prototype; /** * Checks if `value` is likely a prototype object. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. */ function isPrototype(value) { var Ctor = value && value.constructor, proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; return value === proto; } module.exports = isPrototype; /***/ }), /***/ "./node_modules/lodash/_isStrictComparable.js": /*!****************************************************!*\ !*** ./node_modules/lodash/_isStrictComparable.js ***! \****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); /** * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` if suitable for strict * equality comparisons, else `false`. */ function isStrictComparable(value) { return value === value && !isObject(value); } module.exports = isStrictComparable; /***/ }), /***/ "./node_modules/lodash/_listCacheClear.js": /*!************************************************!*\ !*** ./node_modules/lodash/_listCacheClear.js ***! \************************************************/ /***/ ((module) => { /** * Removes all key-value entries from the list cache. * * @private * @name clear * @memberOf ListCache */ function listCacheClear() { this.__data__ = []; this.size = 0; } module.exports = listCacheClear; /***/ }), /***/ "./node_modules/lodash/_listCacheDelete.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_listCacheDelete.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); /** Used for built-in method references. */ var arrayProto = Array.prototype; /** Built-in value references. */ var splice = arrayProto.splice; /** * Removes `key` and its value from the list cache. * * @private * @name delete * @memberOf ListCache * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function listCacheDelete(key) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { return false; } var lastIndex = data.length - 1; if (index == lastIndex) { data.pop(); } else { splice.call(data, index, 1); } --this.size; return true; } module.exports = listCacheDelete; /***/ }), /***/ "./node_modules/lodash/_listCacheGet.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheGet.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); /** * Gets the list cache value for `key`. * * @private * @name get * @memberOf ListCache * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ function listCacheGet(key) { var data = this.__data__, index = assocIndexOf(data, key); return index < 0 ? undefined : data[index][1]; } module.exports = listCacheGet; /***/ }), /***/ "./node_modules/lodash/_listCacheHas.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheHas.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); /** * Checks if a list cache value for `key` exists. * * @private * @name has * @memberOf ListCache * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function listCacheHas(key) { return assocIndexOf(this.__data__, key) > -1; } module.exports = listCacheHas; /***/ }), /***/ "./node_modules/lodash/_listCacheSet.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheSet.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); /** * Sets the list cache `key` to `value`. * * @private * @name set * @memberOf ListCache * @param {string} key The key of the value to set. * @param {*} value The value to set. * @returns {Object} Returns the list cache instance. */ function listCacheSet(key, value) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { ++this.size; data.push([key, value]); } else { data[index][1] = value; } return this; } module.exports = listCacheSet; /***/ }), /***/ "./node_modules/lodash/_mapCacheClear.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_mapCacheClear.js ***! \***********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/lodash/_Hash.js"), ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"); /** * Removes all key-value entries from the map. * * @private * @name clear * @memberOf MapCache */ function mapCacheClear() { this.size = 0; this.__data__ = { 'hash': new Hash, 'map': new (Map || ListCache), 'string': new Hash }; } module.exports = mapCacheClear; /***/ }), /***/ "./node_modules/lodash/_mapCacheDelete.js": /*!************************************************!*\ !*** ./node_modules/lodash/_mapCacheDelete.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); /** * Removes `key` and its value from the map. * * @private * @name delete * @memberOf MapCache * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function mapCacheDelete(key) { var result = getMapData(this, key)['delete'](key); this.size -= result ? 1 : 0; return result; } module.exports = mapCacheDelete; /***/ }), /***/ "./node_modules/lodash/_mapCacheGet.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheGet.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); /** * Gets the map value for `key`. * * @private * @name get * @memberOf MapCache * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ function mapCacheGet(key) { return getMapData(this, key).get(key); } module.exports = mapCacheGet; /***/ }), /***/ "./node_modules/lodash/_mapCacheHas.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheHas.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); /** * Checks if a map value for `key` exists. * * @private * @name has * @memberOf MapCache * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function mapCacheHas(key) { return getMapData(this, key).has(key); } module.exports = mapCacheHas; /***/ }), /***/ "./node_modules/lodash/_mapCacheSet.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheSet.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); /** * Sets the map `key` to `value`. * * @private * @name set * @memberOf MapCache * @param {string} key The key of the value to set. * @param {*} value The value to set. * @returns {Object} Returns the map cache instance. */ function mapCacheSet(key, value) { var data = getMapData(this, key), size = data.size; data.set(key, value); this.size += data.size == size ? 0 : 1; return this; } module.exports = mapCacheSet; /***/ }), /***/ "./node_modules/lodash/_mapToArray.js": /*!********************************************!*\ !*** ./node_modules/lodash/_mapToArray.js ***! \********************************************/ /***/ ((module) => { /** * Converts `map` to its key-value pairs. * * @private * @param {Object} map The map to convert. * @returns {Array} Returns the key-value pairs. */ function mapToArray(map) { var index = -1, result = Array(map.size); map.forEach(function(value, key) { result[++index] = [key, value]; }); return result; } module.exports = mapToArray; /***/ }), /***/ "./node_modules/lodash/_matchesStrictComparable.js": /*!*********************************************************!*\ !*** ./node_modules/lodash/_matchesStrictComparable.js ***! \*********************************************************/ /***/ ((module) => { /** * A specialized version of `matchesProperty` for source values suitable * for strict equality comparisons, i.e. `===`. * * @private * @param {string} key The key of the property to get. * @param {*} srcValue The value to match. * @returns {Function} Returns the new spec function. */ function matchesStrictComparable(key, srcValue) { return function(object) { if (object == null) { return false; } return object[key] === srcValue && (srcValue !== undefined || (key in Object(object))); }; } module.exports = matchesStrictComparable; /***/ }), /***/ "./node_modules/lodash/_memoizeCapped.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_memoizeCapped.js ***! \***********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/lodash/memoize.js"); /** Used as the maximum memoize cache size. */ var MAX_MEMOIZE_SIZE = 500; /** * A specialized version of `_.memoize` which clears the memoized function's * cache when it exceeds `MAX_MEMOIZE_SIZE`. * * @private * @param {Function} func The function to have its output memoized. * @returns {Function} Returns the new memoized function. */ function memoizeCapped(func) { var result = memoize(func, function(key) { if (cache.size === MAX_MEMOIZE_SIZE) { cache.clear(); } return key; }); var cache = result.cache; return result; } module.exports = memoizeCapped; /***/ }), /***/ "./node_modules/lodash/_nativeCreate.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_nativeCreate.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); /* Built-in method references that are verified to be native. */ var nativeCreate = getNative(Object, 'create'); module.exports = nativeCreate; /***/ }), /***/ "./node_modules/lodash/_nativeKeys.js": /*!********************************************!*\ !*** ./node_modules/lodash/_nativeKeys.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js"); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeKeys = overArg(Object.keys, Object); module.exports = nativeKeys; /***/ }), /***/ "./node_modules/lodash/_nativeKeysIn.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_nativeKeysIn.js ***! \**********************************************/ /***/ ((module) => { /** * This function is like * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) * except that it includes inherited enumerable properties. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ function nativeKeysIn(object) { var result = []; if (object != null) { for (var key in Object(object)) { result.push(key); } } return result; } module.exports = nativeKeysIn; /***/ }), /***/ "./node_modules/lodash/_nodeUtil.js": /*!******************************************!*\ !*** ./node_modules/lodash/_nodeUtil.js ***! \******************************************/ /***/ ((module, exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; /** Detect free variable `module`. */ var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; /** Detect the popular CommonJS extension `module.exports`. */ var moduleExports = freeModule && freeModule.exports === freeExports; /** Detect free variable `process` from Node.js. */ var freeProcess = moduleExports && freeGlobal.process; /** Used to access faster Node.js helpers. */ var nodeUtil = (function() { try { // Use `util.types` for Node.js 10+. var types = freeModule && freeModule.require && freeModule.require('util').types; if (types) { return types; } // Legacy `process.binding('util')` for Node.js < 10. return freeProcess && freeProcess.binding && freeProcess.binding('util'); } catch (e) {} }()); module.exports = nodeUtil; /***/ }), /***/ "./node_modules/lodash/_objectToString.js": /*!************************************************!*\ !*** ./node_modules/lodash/_objectToString.js ***! \************************************************/ /***/ ((module) => { /** Used for built-in method references. */ var objectProto = Object.prototype; /** * Used to resolve the * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ var nativeObjectToString = objectProto.toString; /** * Converts `value` to a string using `Object.prototype.toString`. * * @private * @param {*} value The value to convert. * @returns {string} Returns the converted string. */ function objectToString(value) { return nativeObjectToString.call(value); } module.exports = objectToString; /***/ }), /***/ "./node_modules/lodash/_overArg.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_overArg.js ***! \*****************************************/ /***/ ((module) => { /** * Creates a unary function that invokes `func` with its argument transformed. * * @private * @param {Function} func The function to wrap. * @param {Function} transform The argument transform. * @returns {Function} Returns the new function. */ function overArg(func, transform) { return function(arg) { return func(transform(arg)); }; } module.exports = overArg; /***/ }), /***/ "./node_modules/lodash/_overRest.js": /*!******************************************!*\ !*** ./node_modules/lodash/_overRest.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var apply = __webpack_require__(/*! ./_apply */ "./node_modules/lodash/_apply.js"); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * A specialized version of `baseRest` which transforms the rest array. * * @private * @param {Function} func The function to apply a rest parameter to. * @param {number} [start=func.length-1] The start position of the rest parameter. * @param {Function} transform The rest array transform. * @returns {Function} Returns the new function. */ function overRest(func, start, transform) { start = nativeMax(start === undefined ? (func.length - 1) : start, 0); return function() { var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length); while (++index < length) { array[index] = args[start + index]; } index = -1; var otherArgs = Array(start + 1); while (++index < start) { otherArgs[index] = args[index]; } otherArgs[start] = transform(array); return apply(func, this, otherArgs); }; } module.exports = overRest; /***/ }), /***/ "./node_modules/lodash/_root.js": /*!**************************************!*\ !*** ./node_modules/lodash/_root.js ***! \**************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); /** Detect free variable `self`. */ var freeSelf = typeof self == 'object' && self && self.Object === Object && self; /** Used as a reference to the global object. */ var root = freeGlobal || freeSelf || Function('return this')(); module.exports = root; /***/ }), /***/ "./node_modules/lodash/_safeGet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_safeGet.js ***! \*****************************************/ /***/ ((module) => { /** * Gets the value at `key`, unless `key` is "__proto__" or "constructor". * * @private * @param {Object} object The object to query. * @param {string} key The key of the property to get. * @returns {*} Returns the property value. */ function safeGet(object, key) { if (key === 'constructor' && typeof object[key] === 'function') { return; } if (key == '__proto__') { return; } return object[key]; } module.exports = safeGet; /***/ }), /***/ "./node_modules/lodash/_setCacheAdd.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_setCacheAdd.js ***! \*********************************************/ /***/ ((module) => { /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; /** * Adds `value` to the array cache. * * @private * @name add * @memberOf SetCache * @alias push * @param {*} value The value to cache. * @returns {Object} Returns the cache instance. */ function setCacheAdd(value) { this.__data__.set(value, HASH_UNDEFINED); return this; } module.exports = setCacheAdd; /***/ }), /***/ "./node_modules/lodash/_setCacheHas.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_setCacheHas.js ***! \*********************************************/ /***/ ((module) => { /** * Checks if `value` is in the array cache. * * @private * @name has * @memberOf SetCache * @param {*} value The value to search for. * @returns {number} Returns `true` if `value` is found, else `false`. */ function setCacheHas(value) { return this.__data__.has(value); } module.exports = setCacheHas; /***/ }), /***/ "./node_modules/lodash/_setToArray.js": /*!********************************************!*\ !*** ./node_modules/lodash/_setToArray.js ***! \********************************************/ /***/ ((module) => { /** * Converts `set` to an array of its values. * * @private * @param {Object} set The set to convert. * @returns {Array} Returns the values. */ function setToArray(set) { var index = -1, result = Array(set.size); set.forEach(function(value) { result[++index] = value; }); return result; } module.exports = setToArray; /***/ }), /***/ "./node_modules/lodash/_setToString.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_setToString.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseSetToString = __webpack_require__(/*! ./_baseSetToString */ "./node_modules/lodash/_baseSetToString.js"), shortOut = __webpack_require__(/*! ./_shortOut */ "./node_modules/lodash/_shortOut.js"); /** * Sets the `toString` method of `func` to return `string`. * * @private * @param {Function} func The function to modify. * @param {Function} string The `toString` result. * @returns {Function} Returns `func`. */ var setToString = shortOut(baseSetToString); module.exports = setToString; /***/ }), /***/ "./node_modules/lodash/_shortOut.js": /*!******************************************!*\ !*** ./node_modules/lodash/_shortOut.js ***! \******************************************/ /***/ ((module) => { /** Used to detect hot functions by number of calls within a span of milliseconds. */ var HOT_COUNT = 800, HOT_SPAN = 16; /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeNow = Date.now; /** * Creates a function that'll short out and invoke `identity` instead * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` * milliseconds. * * @private * @param {Function} func The function to restrict. * @returns {Function} Returns the new shortable function. */ function shortOut(func) { var count = 0, lastCalled = 0; return function() { var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); lastCalled = stamp; if (remaining > 0) { if (++count >= HOT_COUNT) { return arguments[0]; } } else { count = 0; } return func.apply(undefined, arguments); }; } module.exports = shortOut; /***/ }), /***/ "./node_modules/lodash/_stackClear.js": /*!********************************************!*\ !*** ./node_modules/lodash/_stackClear.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"); /** * Removes all key-value entries from the stack. * * @private * @name clear * @memberOf Stack */ function stackClear() { this.__data__ = new ListCache; this.size = 0; } module.exports = stackClear; /***/ }), /***/ "./node_modules/lodash/_stackDelete.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_stackDelete.js ***! \*********************************************/ /***/ ((module) => { /** * Removes `key` and its value from the stack. * * @private * @name delete * @memberOf Stack * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function stackDelete(key) { var data = this.__data__, result = data['delete'](key); this.size = data.size; return result; } module.exports = stackDelete; /***/ }), /***/ "./node_modules/lodash/_stackGet.js": /*!******************************************!*\ !*** ./node_modules/lodash/_stackGet.js ***! \******************************************/ /***/ ((module) => { /** * Gets the stack value for `key`. * * @private * @name get * @memberOf Stack * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ function stackGet(key) { return this.__data__.get(key); } module.exports = stackGet; /***/ }), /***/ "./node_modules/lodash/_stackHas.js": /*!******************************************!*\ !*** ./node_modules/lodash/_stackHas.js ***! \******************************************/ /***/ ((module) => { /** * Checks if a stack value for `key` exists. * * @private * @name has * @memberOf Stack * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function stackHas(key) { return this.__data__.has(key); } module.exports = stackHas; /***/ }), /***/ "./node_modules/lodash/_stackSet.js": /*!******************************************!*\ !*** ./node_modules/lodash/_stackSet.js ***! \******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"), MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; /** * Sets the stack `key` to `value`. * * @private * @name set * @memberOf Stack * @param {string} key The key of the value to set. * @param {*} value The value to set. * @returns {Object} Returns the stack cache instance. */ function stackSet(key, value) { var data = this.__data__; if (data instanceof ListCache) { var pairs = data.__data__; if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { pairs.push([key, value]); this.size = ++data.size; return this; } data = this.__data__ = new MapCache(pairs); } data.set(key, value); this.size = data.size; return this; } module.exports = stackSet; /***/ }), /***/ "./node_modules/lodash/_strictIndexOf.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_strictIndexOf.js ***! \***********************************************/ /***/ ((module) => { /** * A specialized version of `_.indexOf` which performs strict equality * comparisons of values, i.e. `===`. * * @private * @param {Array} array The array to inspect. * @param {*} value The value to search for. * @param {number} fromIndex The index to search from. * @returns {number} Returns the index of the matched value, else `-1`. */ function strictIndexOf(array, value, fromIndex) { var index = fromIndex - 1, length = array.length; while (++index < length) { if (array[index] === value) { return index; } } return -1; } module.exports = strictIndexOf; /***/ }), /***/ "./node_modules/lodash/_stringToPath.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_stringToPath.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/lodash/_memoizeCapped.js"); /** Used to match property names within property paths. */ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; /** Used to match backslashes in property paths. */ var reEscapeChar = /\\(\\)?/g; /** * Converts `string` to a property path array. * * @private * @param {string} string The string to convert. * @returns {Array} Returns the property path array. */ var stringToPath = memoizeCapped(function(string) { var result = []; if (string.charCodeAt(0) === 46 /* . */) { result.push(''); } string.replace(rePropName, function(match, number, quote, subString) { result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); }); return result; }); module.exports = stringToPath; /***/ }), /***/ "./node_modules/lodash/_toKey.js": /*!***************************************!*\ !*** ./node_modules/lodash/_toKey.js ***! \***************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; /** * Converts `value` to a string key if it's not a string or symbol. * * @private * @param {*} value The value to inspect. * @returns {string|symbol} Returns the key. */ function toKey(value) { if (typeof value == 'string' || isSymbol(value)) { return value; } var result = (value + ''); return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } module.exports = toKey; /***/ }), /***/ "./node_modules/lodash/_toSource.js": /*!******************************************!*\ !*** ./node_modules/lodash/_toSource.js ***! \******************************************/ /***/ ((module) => { /** Used for built-in method references. */ var funcProto = Function.prototype; /** Used to resolve the decompiled source of functions. */ var funcToString = funcProto.toString; /** * Converts `func` to its source code. * * @private * @param {Function} func The function to convert. * @returns {string} Returns the source code. */ function toSource(func) { if (func != null) { try { return funcToString.call(func); } catch (e) {} try { return (func + ''); } catch (e) {} } return ''; } module.exports = toSource; /***/ }), /***/ "./node_modules/lodash/constant.js": /*!*****************************************!*\ !*** ./node_modules/lodash/constant.js ***! \*****************************************/ /***/ ((module) => { /** * Creates a function that returns `value`. * * @static * @memberOf _ * @since 2.4.0 * @category Util * @param {*} value The value to return from the new function. * @returns {Function} Returns the new constant function. * @example * * var objects = _.times(2, _.constant({ 'a': 1 })); * * console.log(objects); * // => [{ 'a': 1 }, { 'a': 1 }] * * console.log(objects[0] === objects[1]); * // => true */ function constant(value) { return function() { return value; }; } module.exports = constant; /***/ }), /***/ "./node_modules/lodash/eq.js": /*!***********************************!*\ !*** ./node_modules/lodash/eq.js ***! \***********************************/ /***/ ((module) => { /** * Performs a * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) * comparison between two values to determine if they are equivalent. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to compare. * @param {*} other The other value to compare. * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * var object = { 'a': 1 }; * var other = { 'a': 1 }; * * _.eq(object, object); * // => true * * _.eq(object, other); * // => false * * _.eq('a', 'a'); * // => true * * _.eq('a', Object('a')); * // => false * * _.eq(NaN, NaN); * // => true */ function eq(value, other) { return value === other || (value !== value && other !== other); } module.exports = eq; /***/ }), /***/ "./node_modules/lodash/flatten.js": /*!****************************************!*\ !*** ./node_modules/lodash/flatten.js ***! \****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"); /** * Flattens `array` a single level deep. * * @static * @memberOf _ * @since 0.1.0 * @category Array * @param {Array} array The array to flatten. * @returns {Array} Returns the new flattened array. * @example * * _.flatten([1, [2, [3, [4]], 5]]); * // => [1, 2, [3, [4]], 5] */ function flatten(array) { var length = array == null ? 0 : array.length; return length ? baseFlatten(array, 1) : []; } module.exports = flatten; /***/ }), /***/ "./node_modules/lodash/get.js": /*!************************************!*\ !*** ./node_modules/lodash/get.js ***! \************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"); /** * Gets the value at `path` of `object`. If the resolved value is * `undefined`, the `defaultValue` is returned in its place. * * @static * @memberOf _ * @since 3.7.0 * @category Object * @param {Object} object The object to query. * @param {Array|string} path The path of the property to get. * @param {*} [defaultValue] The value returned for `undefined` resolved values. * @returns {*} Returns the resolved value. * @example * * var object = { 'a': [{ 'b': { 'c': 3 } }] }; * * _.get(object, 'a[0].b.c'); * // => 3 * * _.get(object, ['a', '0', 'b', 'c']); * // => 3 * * _.get(object, 'a.b.c', 'default'); * // => 'default' */ function get(object, path, defaultValue) { var result = object == null ? undefined : baseGet(object, path); return result === undefined ? defaultValue : result; } module.exports = get; /***/ }), /***/ "./node_modules/lodash/hasIn.js": /*!**************************************!*\ !*** ./node_modules/lodash/hasIn.js ***! \**************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/lodash/_baseHasIn.js"), hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js"); /** * Checks if `path` is a direct or inherited property of `object`. * * @static * @memberOf _ * @since 4.0.0 * @category Object * @param {Object} object The object to query. * @param {Array|string} path The path to check. * @returns {boolean} Returns `true` if `path` exists, else `false`. * @example * * var object = _.create({ 'a': _.create({ 'b': 2 }) }); * * _.hasIn(object, 'a'); * // => true * * _.hasIn(object, 'a.b'); * // => true * * _.hasIn(object, ['a', 'b']); * // => true * * _.hasIn(object, 'b'); * // => false */ function hasIn(object, path) { return object != null && hasPath(object, path, baseHasIn); } module.exports = hasIn; /***/ }), /***/ "./node_modules/lodash/identity.js": /*!*****************************************!*\ !*** ./node_modules/lodash/identity.js ***! \*****************************************/ /***/ ((module) => { /** * This method returns the first argument it receives. * * @static * @since 0.1.0 * @memberOf _ * @category Util * @param {*} value Any value. * @returns {*} Returns `value`. * @example * * var object = { 'a': 1 }; * * console.log(_.identity(object) === object); * // => true */ function identity(value) { return value; } module.exports = identity; /***/ }), /***/ "./node_modules/lodash/isArguments.js": /*!********************************************!*\ !*** ./node_modules/lodash/isArguments.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/lodash/_baseIsArguments.js"), isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** Built-in value references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable; /** * Checks if `value` is likely an `arguments` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an `arguments` object, * else `false`. * @example * * _.isArguments(function() { return arguments; }()); * // => true * * _.isArguments([1, 2, 3]); * // => false */ var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); }; module.exports = isArguments; /***/ }), /***/ "./node_modules/lodash/isArray.js": /*!****************************************!*\ !*** ./node_modules/lodash/isArray.js ***! \****************************************/ /***/ ((module) => { /** * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an array, else `false`. * @example * * _.isArray([1, 2, 3]); * // => true * * _.isArray(document.body.children); * // => false * * _.isArray('abc'); * // => false * * _.isArray(_.noop); * // => false */ var isArray = Array.isArray; module.exports = isArray; /***/ }), /***/ "./node_modules/lodash/isArrayLike.js": /*!********************************************!*\ !*** ./node_modules/lodash/isArrayLike.js ***! \********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"); /** * Checks if `value` is array-like. A value is considered array-like if it's * not a function and has a `value.length` that's an integer greater than or * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is array-like, else `false`. * @example * * _.isArrayLike([1, 2, 3]); * // => true * * _.isArrayLike(document.body.children); * // => true * * _.isArrayLike('abc'); * // => true * * _.isArrayLike(_.noop); * // => false */ function isArrayLike(value) { return value != null && isLength(value.length) && !isFunction(value); } module.exports = isArrayLike; /***/ }), /***/ "./node_modules/lodash/isArrayLikeObject.js": /*!**************************************************!*\ !*** ./node_modules/lodash/isArrayLikeObject.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); /** * This method is like `_.isArrayLike` except that it also checks if `value` * is an object. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an array-like object, * else `false`. * @example * * _.isArrayLikeObject([1, 2, 3]); * // => true * * _.isArrayLikeObject(document.body.children); * // => true * * _.isArrayLikeObject('abc'); * // => false * * _.isArrayLikeObject(_.noop); * // => false */ function isArrayLikeObject(value) { return isObjectLike(value) && isArrayLike(value); } module.exports = isArrayLikeObject; /***/ }), /***/ "./node_modules/lodash/isBuffer.js": /*!*****************************************!*\ !*** ./node_modules/lodash/isBuffer.js ***! \*****************************************/ /***/ ((module, exports, __webpack_require__) => { /* module decorator */ module = __webpack_require__.nmd(module); var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"), stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/lodash/stubFalse.js"); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; /** Detect free variable `module`. */ var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; /** Detect the popular CommonJS extension `module.exports`. */ var moduleExports = freeModule && freeModule.exports === freeExports; /** Built-in value references. */ var Buffer = moduleExports ? root.Buffer : undefined; /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; /** * Checks if `value` is a buffer. * * @static * @memberOf _ * @since 4.3.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. * @example * * _.isBuffer(new Buffer(2)); * // => true * * _.isBuffer(new Uint8Array(2)); * // => false */ var isBuffer = nativeIsBuffer || stubFalse; module.exports = isBuffer; /***/ }), /***/ "./node_modules/lodash/isEqual.js": /*!****************************************!*\ !*** ./node_modules/lodash/isEqual.js ***! \****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"); /** * Performs a deep comparison between two values to determine if they are * equivalent. * * **Note:** This method supports comparing arrays, array buffers, booleans, * date objects, error objects, maps, numbers, `Object` objects, regexes, * sets, strings, symbols, and typed arrays. `Object` objects are compared * by their own, not inherited, enumerable properties. Functions and DOM * nodes are compared by strict equality, i.e. `===`. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to compare. * @param {*} other The other value to compare. * @returns {boolean} Returns `true` if the values are equivalent, else `false`. * @example * * var object = { 'a': 1 }; * var other = { 'a': 1 }; * * _.isEqual(object, other); * // => true * * object === other; * // => false */ function isEqual(value, other) { return baseIsEqual(value, other); } module.exports = isEqual; /***/ }), /***/ "./node_modules/lodash/isFunction.js": /*!*******************************************!*\ !*** ./node_modules/lodash/isFunction.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); /** `Object#toString` result references. */ var asyncTag = '[object AsyncFunction]', funcTag = '[object Function]', genTag = '[object GeneratorFunction]', proxyTag = '[object Proxy]'; /** * Checks if `value` is classified as a `Function` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a function, else `false`. * @example * * _.isFunction(_); * // => true * * _.isFunction(/abc/); * // => false */ function isFunction(value) { if (!isObject(value)) { return false; } // The use of `Object#toString` avoids issues with the `typeof` operator // in Safari 9 which returns 'object' for typed arrays and other constructors. var tag = baseGetTag(value); return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; } module.exports = isFunction; /***/ }), /***/ "./node_modules/lodash/isLength.js": /*!*****************************************!*\ !*** ./node_modules/lodash/isLength.js ***! \*****************************************/ /***/ ((module) => { /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like length. * * **Note:** This method is loosely based on * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. * @example * * _.isLength(3); * // => true * * _.isLength(Number.MIN_VALUE); * // => false * * _.isLength(Infinity); * // => false * * _.isLength('3'); * // => false */ function isLength(value) { return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } module.exports = isLength; /***/ }), /***/ "./node_modules/lodash/isObject.js": /*!*****************************************!*\ !*** ./node_modules/lodash/isObject.js ***! \*****************************************/ /***/ ((module) => { /** * Checks if `value` is the * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an object, else `false`. * @example * * _.isObject({}); * // => true * * _.isObject([1, 2, 3]); * // => true * * _.isObject(_.noop); * // => true * * _.isObject(null); * // => false */ function isObject(value) { var type = typeof value; return value != null && (type == 'object' || type == 'function'); } module.exports = isObject; /***/ }), /***/ "./node_modules/lodash/isObjectLike.js": /*!*********************************************!*\ !*** ./node_modules/lodash/isObjectLike.js ***! \*********************************************/ /***/ ((module) => { /** * Checks if `value` is object-like. A value is object-like if it's not `null` * and has a `typeof` result of "object". * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * * _.isObjectLike({}); * // => true * * _.isObjectLike([1, 2, 3]); * // => true * * _.isObjectLike(_.noop); * // => false * * _.isObjectLike(null); * // => false */ function isObjectLike(value) { return value != null && typeof value == 'object'; } module.exports = isObjectLike; /***/ }), /***/ "./node_modules/lodash/isPlainObject.js": /*!**********************************************!*\ !*** ./node_modules/lodash/isPlainObject.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var objectTag = '[object Object]'; /** Used for built-in method references. */ var funcProto = Function.prototype, objectProto = Object.prototype; /** Used to resolve the decompiled source of functions. */ var funcToString = funcProto.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** Used to infer the `Object` constructor. */ var objectCtorString = funcToString.call(Object); /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. * * @static * @memberOf _ * @since 0.8.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * * function Foo() { * this.a = 1; * } * * _.isPlainObject(new Foo); * // => false * * _.isPlainObject([1, 2, 3]); * // => false * * _.isPlainObject({ 'x': 0, 'y': 0 }); * // => true * * _.isPlainObject(Object.create(null)); * // => true */ function isPlainObject(value) { if (!isObjectLike(value) || baseGetTag(value) != objectTag) { return false; } var proto = getPrototype(value); if (proto === null) { return true; } var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; } module.exports = isPlainObject; /***/ }), /***/ "./node_modules/lodash/isSymbol.js": /*!*****************************************!*\ !*** ./node_modules/lodash/isSymbol.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); /** `Object#toString` result references. */ var symbolTag = '[object Symbol]'; /** * Checks if `value` is classified as a `Symbol` primitive or object. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. * @example * * _.isSymbol(Symbol.iterator); * // => true * * _.isSymbol('abc'); * // => false */ function isSymbol(value) { return typeof value == 'symbol' || (isObjectLike(value) && baseGetTag(value) == symbolTag); } module.exports = isSymbol; /***/ }), /***/ "./node_modules/lodash/isTypedArray.js": /*!*********************************************!*\ !*** ./node_modules/lodash/isTypedArray.js ***! \*********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/lodash/_baseIsTypedArray.js"), baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); /* Node.js helper references. */ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; /** * Checks if `value` is classified as a typed array. * * @static * @memberOf _ * @since 3.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. * @example * * _.isTypedArray(new Uint8Array); * // => true * * _.isTypedArray([]); * // => false */ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; module.exports = isTypedArray; /***/ }), /***/ "./node_modules/lodash/keys.js": /*!*************************************!*\ !*** ./node_modules/lodash/keys.js ***! \*************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"), baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); /** * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) * for more details. * * @static * @since 0.1.0 * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. * @example * * function Foo() { * this.a = 1; * this.b = 2; * } * * Foo.prototype.c = 3; * * _.keys(new Foo); * // => ['a', 'b'] (iteration order is not guaranteed) * * _.keys('hi'); * // => ['0', '1'] */ function keys(object) { return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } module.exports = keys; /***/ }), /***/ "./node_modules/lodash/keysIn.js": /*!***************************************!*\ !*** ./node_modules/lodash/keysIn.js ***! \***************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"), baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ "./node_modules/lodash/_baseKeysIn.js"), isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); /** * Creates an array of the own and inherited enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. * * @static * @memberOf _ * @since 3.0.0 * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. * @example * * function Foo() { * this.a = 1; * this.b = 2; * } * * Foo.prototype.c = 3; * * _.keysIn(new Foo); * // => ['a', 'b', 'c'] (iteration order is not guaranteed) */ function keysIn(object) { return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); } module.exports = keysIn; /***/ }), /***/ "./node_modules/lodash/memoize.js": /*!****************************************!*\ !*** ./node_modules/lodash/memoize.js ***! \****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); /** Error message constants. */ var FUNC_ERROR_TEXT = 'Expected a function'; /** * Creates a function that memoizes the result of `func`. If `resolver` is * provided, it determines the cache key for storing the result based on the * arguments provided to the memoized function. By default, the first argument * provided to the memoized function is used as the map cache key. The `func` * is invoked with the `this` binding of the memoized function. * * **Note:** The cache is exposed as the `cache` property on the memoized * function. Its creation may be customized by replacing the `_.memoize.Cache` * constructor with one whose instances implement the * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) * method interface of `clear`, `delete`, `get`, `has`, and `set`. * * @static * @memberOf _ * @since 0.1.0 * @category Function * @param {Function} func The function to have its output memoized. * @param {Function} [resolver] The function to resolve the cache key. * @returns {Function} Returns the new memoized function. * @example * * var object = { 'a': 1, 'b': 2 }; * var other = { 'c': 3, 'd': 4 }; * * var values = _.memoize(_.values); * values(object); * // => [1, 2] * * values(other); * // => [3, 4] * * object.a = 2; * values(object); * // => [1, 2] * * // Modify the result cache. * values.cache.set(object, ['a', 'b']); * values(object); * // => ['a', 'b'] * * // Replace `_.memoize.Cache`. * _.memoize.Cache = WeakMap; */ function memoize(func, resolver) { if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { throw new TypeError(FUNC_ERROR_TEXT); } var memoized = function() { var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; if (cache.has(key)) { return cache.get(key); } var result = func.apply(this, args); memoized.cache = cache.set(key, result) || cache; return result; }; memoized.cache = new (memoize.Cache || MapCache); return memoized; } // Expose `MapCache`. memoize.Cache = MapCache; module.exports = memoize; /***/ }), /***/ "./node_modules/lodash/merge.js": /*!**************************************!*\ !*** ./node_modules/lodash/merge.js ***! \**************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseMerge = __webpack_require__(/*! ./_baseMerge */ "./node_modules/lodash/_baseMerge.js"), createAssigner = __webpack_require__(/*! ./_createAssigner */ "./node_modules/lodash/_createAssigner.js"); /** * This method is like `_.assign` except that it recursively merges own and * inherited enumerable string keyed properties of source objects into the * destination object. Source properties that resolve to `undefined` are * skipped if a destination value exists. Array and plain object properties * are merged recursively. Other objects and value types are overridden by * assignment. Source objects are applied from left to right. Subsequent * sources overwrite property assignments of previous sources. * * **Note:** This method mutates `object`. * * @static * @memberOf _ * @since 0.5.0 * @category Object * @param {Object} object The destination object. * @param {...Object} [sources] The source objects. * @returns {Object} Returns `object`. * @example * * var object = { * 'a': [{ 'b': 2 }, { 'd': 4 }] * }; * * var other = { * 'a': [{ 'c': 3 }, { 'e': 5 }] * }; * * _.merge(object, other); * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } */ var merge = createAssigner(function(object, source, srcIndex) { baseMerge(object, source, srcIndex); }); module.exports = merge; /***/ }), /***/ "./node_modules/lodash/noop.js": /*!*************************************!*\ !*** ./node_modules/lodash/noop.js ***! \*************************************/ /***/ ((module) => { /** * This method returns `undefined`. * * @static * @memberOf _ * @since 2.3.0 * @category Util * @example * * _.times(2, _.noop); * // => [undefined, undefined] */ function noop() { // No operation performed. } module.exports = noop; /***/ }), /***/ "./node_modules/lodash/pick.js": /*!*************************************!*\ !*** ./node_modules/lodash/pick.js ***! \*************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var basePick = __webpack_require__(/*! ./_basePick */ "./node_modules/lodash/_basePick.js"), flatRest = __webpack_require__(/*! ./_flatRest */ "./node_modules/lodash/_flatRest.js"); /** * Creates an object composed of the picked `object` properties. * * @static * @since 0.1.0 * @memberOf _ * @category Object * @param {Object} object The source object. * @param {...(string|string[])} [paths] The property paths to pick. * @returns {Object} Returns the new object. * @example * * var object = { 'a': 1, 'b': '2', 'c': 3 }; * * _.pick(object, ['a', 'c']); * // => { 'a': 1, 'c': 3 } */ var pick = flatRest(function(object, paths) { return object == null ? {} : basePick(object, paths); }); module.exports = pick; /***/ }), /***/ "./node_modules/lodash/property.js": /*!*****************************************!*\ !*** ./node_modules/lodash/property.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js"), basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/lodash/_basePropertyDeep.js"), isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); /** * Creates a function that returns the value at `path` of a given object. * * @static * @memberOf _ * @since 2.4.0 * @category Util * @param {Array|string} path The path of the property to get. * @returns {Function} Returns the new accessor function. * @example * * var objects = [ * { 'a': { 'b': 2 } }, * { 'a': { 'b': 1 } } * ]; * * _.map(objects, _.property('a.b')); * // => [2, 1] * * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); * // => [1, 2] */ function property(path) { return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); } module.exports = property; /***/ }), /***/ "./node_modules/lodash/sortBy.js": /*!***************************************!*\ !*** ./node_modules/lodash/sortBy.js ***! \***************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"), baseOrderBy = __webpack_require__(/*! ./_baseOrderBy */ "./node_modules/lodash/_baseOrderBy.js"), baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"); /** * Creates an array of elements, sorted in ascending order by the results of * running each element in a collection thru each iteratee. This method * performs a stable sort, that is, it preserves the original sort order of * equal elements. The iteratees are invoked with one argument: (value). * * @static * @memberOf _ * @since 0.1.0 * @category Collection * @param {Array|Object} collection The collection to iterate over. * @param {...(Function|Function[])} [iteratees=[_.identity]] * The iteratees to sort by. * @returns {Array} Returns the new sorted array. * @example * * var users = [ * { 'user': 'fred', 'age': 48 }, * { 'user': 'barney', 'age': 36 }, * { 'user': 'fred', 'age': 30 }, * { 'user': 'barney', 'age': 34 } * ]; * * _.sortBy(users, [function(o) { return o.user; }]); * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] * * _.sortBy(users, ['user', 'age']); * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] */ var sortBy = baseRest(function(collection, iteratees) { if (collection == null) { return []; } var length = iteratees.length; if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { iteratees = []; } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { iteratees = [iteratees[0]]; } return baseOrderBy(collection, baseFlatten(iteratees, 1), []); }); module.exports = sortBy; /***/ }), /***/ "./node_modules/lodash/stubArray.js": /*!******************************************!*\ !*** ./node_modules/lodash/stubArray.js ***! \******************************************/ /***/ ((module) => { /** * This method returns a new empty array. * * @static * @memberOf _ * @since 4.13.0 * @category Util * @returns {Array} Returns the new empty array. * @example * * var arrays = _.times(2, _.stubArray); * * console.log(arrays); * // => [[], []] * * console.log(arrays[0] === arrays[1]); * // => false */ function stubArray() { return []; } module.exports = stubArray; /***/ }), /***/ "./node_modules/lodash/stubFalse.js": /*!******************************************!*\ !*** ./node_modules/lodash/stubFalse.js ***! \******************************************/ /***/ ((module) => { /** * This method returns `false`. * * @static * @memberOf _ * @since 4.13.0 * @category Util * @returns {boolean} Returns `false`. * @example * * _.times(2, _.stubFalse); * // => [false, false] */ function stubFalse() { return false; } module.exports = stubFalse; /***/ }), /***/ "./node_modules/lodash/toPlainObject.js": /*!**********************************************!*\ !*** ./node_modules/lodash/toPlainObject.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); /** * Converts `value` to a plain object flattening inherited enumerable string * keyed properties of `value` to own properties of the plain object. * * @static * @memberOf _ * @since 3.0.0 * @category Lang * @param {*} value The value to convert. * @returns {Object} Returns the converted plain object. * @example * * function Foo() { * this.b = 2; * } * * Foo.prototype.c = 3; * * _.assign({ 'a': 1 }, new Foo); * // => { 'a': 1, 'b': 2 } * * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); * // => { 'a': 1, 'b': 2, 'c': 3 } */ function toPlainObject(value) { return copyObject(value, keysIn(value)); } module.exports = toPlainObject; /***/ }), /***/ "./node_modules/lodash/toString.js": /*!*****************************************!*\ !*** ./node_modules/lodash/toString.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/lodash/_baseToString.js"); /** * Converts `value` to a string. An empty string is returned for `null` * and `undefined` values. The sign of `-0` is preserved. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to convert. * @returns {string} Returns the converted string. * @example * * _.toString(null); * // => '' * * _.toString(-0); * // => '-0' * * _.toString([1, 2, 3]); * // => '1,2,3' */ function toString(value) { return value == null ? '' : baseToString(value); } module.exports = toString; /***/ }), /***/ "./node_modules/lodash/uniqBy.js": /*!***************************************!*\ !*** ./node_modules/lodash/uniqBy.js ***! \***************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/lodash/_baseUniq.js"); /** * This method is like `_.uniq` except that it accepts `iteratee` which is * invoked for each element in `array` to generate the criterion by which * uniqueness is computed. The order of result values is determined by the * order they occur in the array. The iteratee is invoked with one argument: * (value). * * @static * @memberOf _ * @since 4.0.0 * @category Array * @param {Array} array The array to inspect. * @param {Function} [iteratee=_.identity] The iteratee invoked per element. * @returns {Array} Returns the new duplicate free array. * @example * * _.uniqBy([2.1, 1.2, 2.3], Math.floor); * // => [2.1, 1.2] * * // The `_.property` iteratee shorthand. * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); * // => [{ 'x': 1 }, { 'x': 2 }] */ function uniqBy(array, iteratee) { return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : []; } module.exports = uniqBy; /***/ }), /***/ "./node_modules/md5/md5.js": /*!*********************************!*\ !*** ./node_modules/md5/md5.js ***! \*********************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { (function(){ var crypt = __webpack_require__(/*! crypt */ "./node_modules/crypt/crypt.js"), utf8 = (__webpack_require__(/*! charenc */ "./node_modules/charenc/charenc.js").utf8), isBuffer = __webpack_require__(/*! is-buffer */ "./node_modules/is-buffer/index.js"), bin = (__webpack_require__(/*! charenc */ "./node_modules/charenc/charenc.js").bin), // The core md5 = function (message, options) { // Convert to byte array if (message.constructor == String) if (options && options.encoding === 'binary') message = bin.stringToBytes(message); else message = utf8.stringToBytes(message); else if (isBuffer(message)) message = Array.prototype.slice.call(message, 0); else if (!Array.isArray(message) && message.constructor !== Uint8Array) message = message.toString(); // else, assume byte array already var m = crypt.bytesToWords(message), l = message.length * 8, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878; // Swap endian for (var i = 0; i < m.length; i++) { m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; } // Padding m[l >>> 5] |= 0x80 << (l % 32); m[(((l + 64) >>> 9) << 4) + 14] = l; // Method shortcuts var FF = md5._ff, GG = md5._gg, HH = md5._hh, II = md5._ii; for (var i = 0; i < m.length; i += 16) { var aa = a, bb = b, cc = c, dd = d; a = FF(a, b, c, d, m[i+ 0], 7, -680876936); d = FF(d, a, b, c, m[i+ 1], 12, -389564586); c = FF(c, d, a, b, m[i+ 2], 17, 606105819); b = FF(b, c, d, a, m[i+ 3], 22, -1044525330); a = FF(a, b, c, d, m[i+ 4], 7, -176418897); d = FF(d, a, b, c, m[i+ 5], 12, 1200080426); c = FF(c, d, a, b, m[i+ 6], 17, -1473231341); b = FF(b, c, d, a, m[i+ 7], 22, -45705983); a = FF(a, b, c, d, m[i+ 8], 7, 1770035416); d = FF(d, a, b, c, m[i+ 9], 12, -1958414417); c = FF(c, d, a, b, m[i+10], 17, -42063); b = FF(b, c, d, a, m[i+11], 22, -1990404162); a = FF(a, b, c, d, m[i+12], 7, 1804603682); d = FF(d, a, b, c, m[i+13], 12, -40341101); c = FF(c, d, a, b, m[i+14], 17, -1502002290); b = FF(b, c, d, a, m[i+15], 22, 1236535329); a = GG(a, b, c, d, m[i+ 1], 5, -165796510); d = GG(d, a, b, c, m[i+ 6], 9, -1069501632); c = GG(c, d, a, b, m[i+11], 14, 643717713); b = GG(b, c, d, a, m[i+ 0], 20, -373897302); a = GG(a, b, c, d, m[i+ 5], 5, -701558691); d = GG(d, a, b, c, m[i+10], 9, 38016083); c = GG(c, d, a, b, m[i+15], 14, -660478335); b = GG(b, c, d, a, m[i+ 4], 20, -405537848); a = GG(a, b, c, d, m[i+ 9], 5, 568446438); d = GG(d, a, b, c, m[i+14], 9, -1019803690); c = GG(c, d, a, b, m[i+ 3], 14, -187363961); b = GG(b, c, d, a, m[i+ 8], 20, 1163531501); a = GG(a, b, c, d, m[i+13], 5, -1444681467); d = GG(d, a, b, c, m[i+ 2], 9, -51403784); c = GG(c, d, a, b, m[i+ 7], 14, 1735328473); b = GG(b, c, d, a, m[i+12], 20, -1926607734); a = HH(a, b, c, d, m[i+ 5], 4, -378558); d = HH(d, a, b, c, m[i+ 8], 11, -2022574463); c = HH(c, d, a, b, m[i+11], 16, 1839030562); b = HH(b, c, d, a, m[i+14], 23, -35309556); a = HH(a, b, c, d, m[i+ 1], 4, -1530992060); d = HH(d, a, b, c, m[i+ 4], 11, 1272893353); c = HH(c, d, a, b, m[i+ 7], 16, -155497632); b = HH(b, c, d, a, m[i+10], 23, -1094730640); a = HH(a, b, c, d, m[i+13], 4, 681279174); d = HH(d, a, b, c, m[i+ 0], 11, -358537222); c = HH(c, d, a, b, m[i+ 3], 16, -722521979); b = HH(b, c, d, a, m[i+ 6], 23, 76029189); a = HH(a, b, c, d, m[i+ 9], 4, -640364487); d = HH(d, a, b, c, m[i+12], 11, -421815835); c = HH(c, d, a, b, m[i+15], 16, 530742520); b = HH(b, c, d, a, m[i+ 2], 23, -995338651); a = II(a, b, c, d, m[i+ 0], 6, -198630844); d = II(d, a, b, c, m[i+ 7], 10, 1126891415); c = II(c, d, a, b, m[i+14], 15, -1416354905); b = II(b, c, d, a, m[i+ 5], 21, -57434055); a = II(a, b, c, d, m[i+12], 6, 1700485571); d = II(d, a, b, c, m[i+ 3], 10, -1894986606); c = II(c, d, a, b, m[i+10], 15, -1051523); b = II(b, c, d, a, m[i+ 1], 21, -2054922799); a = II(a, b, c, d, m[i+ 8], 6, 1873313359); d = II(d, a, b, c, m[i+15], 10, -30611744); c = II(c, d, a, b, m[i+ 6], 15, -1560198380); b = II(b, c, d, a, m[i+13], 21, 1309151649); a = II(a, b, c, d, m[i+ 4], 6, -145523070); d = II(d, a, b, c, m[i+11], 10, -1120210379); c = II(c, d, a, b, m[i+ 2], 15, 718787259); b = II(b, c, d, a, m[i+ 9], 21, -343485551); a = (a + aa) >>> 0; b = (b + bb) >>> 0; c = (c + cc) >>> 0; d = (d + dd) >>> 0; } return crypt.endian([a, b, c, d]); }; // Auxiliary functions md5._ff = function (a, b, c, d, x, s, t) { var n = a + (b & c | ~b & d) + (x >>> 0) + t; return ((n << s) | (n >>> (32 - s))) + b; }; md5._gg = function (a, b, c, d, x, s, t) { var n = a + (b & d | c & ~d) + (x >>> 0) + t; return ((n << s) | (n >>> (32 - s))) + b; }; md5._hh = function (a, b, c, d, x, s, t) { var n = a + (b ^ c ^ d) + (x >>> 0) + t; return ((n << s) | (n >>> (32 - s))) + b; }; md5._ii = function (a, b, c, d, x, s, t) { var n = a + (c ^ (b | ~d)) + (x >>> 0) + t; return ((n << s) | (n >>> (32 - s))) + b; }; // Package private blocksize md5._blocksize = 16; md5._digestsize = 16; module.exports = function (message, options) { if (message === undefined || message === null) throw new Error('Illegal argument ' + message); var digestbytes = crypt.wordsToBytes(md5(message, options)); return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes); }; })(); /***/ }), /***/ "./node_modules/moment/locale lazy recursive ^\\.\\/.*\\.js$": /*!************************************************************************!*\ !*** ./node_modules/moment/locale/ lazy ^\.\/.*\.js$ namespace object ***! \************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var map = { "./af.js": [ "./node_modules/moment/locale/af.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ar-dz.js": [ "./node_modules/moment/locale/ar-dz.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ar-kw.js": [ "./node_modules/moment/locale/ar-kw.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ar-ly.js": [ "./node_modules/moment/locale/ar-ly.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ar-ma.js": [ "./node_modules/moment/locale/ar-ma.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ar-ps.js": [ "./node_modules/moment/locale/ar-ps.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ar-sa.js": [ "./node_modules/moment/locale/ar-sa.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ar-tn.js": [ "./node_modules/moment/locale/ar-tn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ar.js": [ "./node_modules/moment/locale/ar.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./az.js": [ "./node_modules/moment/locale/az.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./be.js": [ "./node_modules/moment/locale/be.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./bg.js": [ "./node_modules/moment/locale/bg.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./bm.js": [ "./node_modules/moment/locale/bm.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./bn-bd.js": [ "./node_modules/moment/locale/bn-bd.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./bn.js": [ "./node_modules/moment/locale/bn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./bo.js": [ "./node_modules/moment/locale/bo.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./br.js": [ "./node_modules/moment/locale/br.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./bs.js": [ "./node_modules/moment/locale/bs.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ca.js": [ "./node_modules/moment/locale/ca.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./cs.js": [ "./node_modules/moment/locale/cs.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./cv.js": [ "./node_modules/moment/locale/cv.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./cy.js": [ "./node_modules/moment/locale/cy.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./da.js": [ "./node_modules/moment/locale/da.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./de-at.js": [ "./node_modules/moment/locale/de-at.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./de-ch.js": [ "./node_modules/moment/locale/de-ch.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./de.js": [ "./node_modules/moment/locale/de.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./dv.js": [ "./node_modules/moment/locale/dv.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./el.js": [ "./node_modules/moment/locale/el.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./en-au.js": [ "./node_modules/moment/locale/en-au.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./en-ca.js": [ "./node_modules/moment/locale/en-ca.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./en-gb.js": [ "./node_modules/moment/locale/en-gb.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./en-ie.js": [ "./node_modules/moment/locale/en-ie.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./en-il.js": [ "./node_modules/moment/locale/en-il.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./en-in.js": [ "./node_modules/moment/locale/en-in.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./en-nz.js": [ "./node_modules/moment/locale/en-nz.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./en-sg.js": [ "./node_modules/moment/locale/en-sg.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./eo.js": [ "./node_modules/moment/locale/eo.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./es-do.js": [ "./node_modules/moment/locale/es-do.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./es-mx.js": [ "./node_modules/moment/locale/es-mx.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./es-us.js": [ "./node_modules/moment/locale/es-us.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./es.js": [ "./node_modules/moment/locale/es.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./et.js": [ "./node_modules/moment/locale/et.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./eu.js": [ "./node_modules/moment/locale/eu.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./fa.js": [ "./node_modules/moment/locale/fa.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./fi.js": [ "./node_modules/moment/locale/fi.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./fil.js": [ "./node_modules/moment/locale/fil.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./fo.js": [ "./node_modules/moment/locale/fo.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./fr-ca.js": [ "./node_modules/moment/locale/fr-ca.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./fr-ch.js": [ "./node_modules/moment/locale/fr-ch.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./fr.js": [ "./node_modules/moment/locale/fr.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./fy.js": [ "./node_modules/moment/locale/fy.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ga.js": [ "./node_modules/moment/locale/ga.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./gd.js": [ "./node_modules/moment/locale/gd.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./gl.js": [ "./node_modules/moment/locale/gl.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./gom-deva.js": [ "./node_modules/moment/locale/gom-deva.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./gom-latn.js": [ "./node_modules/moment/locale/gom-latn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./gu.js": [ "./node_modules/moment/locale/gu.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./he.js": [ "./node_modules/moment/locale/he.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./hi.js": [ "./node_modules/moment/locale/hi.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./hr.js": [ "./node_modules/moment/locale/hr.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./hu.js": [ "./node_modules/moment/locale/hu.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./hy-am.js": [ "./node_modules/moment/locale/hy-am.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./id.js": [ "./node_modules/moment/locale/id.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./is.js": [ "./node_modules/moment/locale/is.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./it-ch.js": [ "./node_modules/moment/locale/it-ch.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./it.js": [ "./node_modules/moment/locale/it.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ja.js": [ "./node_modules/moment/locale/ja.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./jv.js": [ "./node_modules/moment/locale/jv.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ka.js": [ "./node_modules/moment/locale/ka.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./kk.js": [ "./node_modules/moment/locale/kk.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./km.js": [ "./node_modules/moment/locale/km.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./kn.js": [ "./node_modules/moment/locale/kn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ko.js": [ "./node_modules/moment/locale/ko.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ku-kmr.js": [ "./node_modules/moment/locale/ku-kmr.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ku.js": [ "./node_modules/moment/locale/ku.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ky.js": [ "./node_modules/moment/locale/ky.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./lb.js": [ "./node_modules/moment/locale/lb.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./lo.js": [ "./node_modules/moment/locale/lo.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./lt.js": [ "./node_modules/moment/locale/lt.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./lv.js": [ "./node_modules/moment/locale/lv.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./me.js": [ "./node_modules/moment/locale/me.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./mi.js": [ "./node_modules/moment/locale/mi.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./mk.js": [ "./node_modules/moment/locale/mk.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ml.js": [ "./node_modules/moment/locale/ml.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./mn.js": [ "./node_modules/moment/locale/mn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./mr.js": [ "./node_modules/moment/locale/mr.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ms-my.js": [ "./node_modules/moment/locale/ms-my.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ms.js": [ "./node_modules/moment/locale/ms.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./mt.js": [ "./node_modules/moment/locale/mt.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./my.js": [ "./node_modules/moment/locale/my.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./nb.js": [ "./node_modules/moment/locale/nb.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ne.js": [ "./node_modules/moment/locale/ne.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./nl-be.js": [ "./node_modules/moment/locale/nl-be.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./nl.js": [ "./node_modules/moment/locale/nl.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./nn.js": [ "./node_modules/moment/locale/nn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./oc-lnc.js": [ "./node_modules/moment/locale/oc-lnc.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./pa-in.js": [ "./node_modules/moment/locale/pa-in.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./pl.js": [ "./node_modules/moment/locale/pl.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./pt-br.js": [ "./node_modules/moment/locale/pt-br.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./pt.js": [ "./node_modules/moment/locale/pt.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ro.js": [ "./node_modules/moment/locale/ro.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ru.js": [ "./node_modules/moment/locale/ru.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./sd.js": [ "./node_modules/moment/locale/sd.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./se.js": [ "./node_modules/moment/locale/se.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./si.js": [ "./node_modules/moment/locale/si.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./sk.js": [ "./node_modules/moment/locale/sk.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./sl.js": [ "./node_modules/moment/locale/sl.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./sq.js": [ "./node_modules/moment/locale/sq.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./sr-cyrl.js": [ "./node_modules/moment/locale/sr-cyrl.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./sr.js": [ "./node_modules/moment/locale/sr.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ss.js": [ "./node_modules/moment/locale/ss.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./sv.js": [ "./node_modules/moment/locale/sv.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./sw.js": [ "./node_modules/moment/locale/sw.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ta.js": [ "./node_modules/moment/locale/ta.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./te.js": [ "./node_modules/moment/locale/te.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tet.js": [ "./node_modules/moment/locale/tet.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tg.js": [ "./node_modules/moment/locale/tg.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./th.js": [ "./node_modules/moment/locale/th.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tk.js": [ "./node_modules/moment/locale/tk.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tl-ph.js": [ "./node_modules/moment/locale/tl-ph.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tlh.js": [ "./node_modules/moment/locale/tlh.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tr.js": [ "./node_modules/moment/locale/tr.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tzl.js": [ "./node_modules/moment/locale/tzl.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tzm-latn.js": [ "./node_modules/moment/locale/tzm-latn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./tzm.js": [ "./node_modules/moment/locale/tzm.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ug-cn.js": [ "./node_modules/moment/locale/ug-cn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./uk.js": [ "./node_modules/moment/locale/uk.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./ur.js": [ "./node_modules/moment/locale/ur.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./uz-latn.js": [ "./node_modules/moment/locale/uz-latn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./uz.js": [ "./node_modules/moment/locale/uz.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./vi.js": [ "./node_modules/moment/locale/vi.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./x-pseudo.js": [ "./node_modules/moment/locale/x-pseudo.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./yo.js": [ "./node_modules/moment/locale/yo.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./zh-cn.js": [ "./node_modules/moment/locale/zh-cn.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./zh-hk.js": [ "./node_modules/moment/locale/zh-hk.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./zh-mo.js": [ "./node_modules/moment/locale/zh-mo.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ], "./zh-tw.js": [ "./node_modules/moment/locale/zh-tw.js", "vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96", "node_modules_moment_locale_sync_recursive_" ] }; function webpackAsyncContext(req) { if(!__webpack_require__.o(map, req)) { return Promise.resolve().then(() => { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } var ids = map[req], id = ids[0]; return Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => { return __webpack_require__.t(id, 7 | 16); }); } webpackAsyncContext.keys = () => (Object.keys(map)); webpackAsyncContext.id = "./node_modules/moment/locale lazy recursive ^\\.\\/.*\\.js$"; module.exports = webpackAsyncContext; /***/ }), /***/ "./node_modules/moment/min/moment-with-locales.js": /*!********************************************************!*\ !*** ./node_modules/moment/min/moment-with-locales.js ***! \********************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { /* module decorator */ module = __webpack_require__.nmd(module); ;(function (global, factory) { true ? module.exports = factory() : 0 }(this, (function () { 'use strict'; var hookCallback; function hooks() { return hookCallback.apply(null, arguments); } // This is done to register the method called with moment() // without creating circular dependencies. function setHookCallback(callback) { hookCallback = callback; } function isArray(input) { return ( input instanceof Array || Object.prototype.toString.call(input) === '[object Array]' ); } function isObject(input) { // IE8 will treat undefined and null as object if it wasn't for // input != null return ( input != null && Object.prototype.toString.call(input) === '[object Object]' ); } function hasOwnProp(a, b) { return Object.prototype.hasOwnProperty.call(a, b); } function isObjectEmpty(obj) { if (Object.getOwnPropertyNames) { return Object.getOwnPropertyNames(obj).length === 0; } else { var k; for (k in obj) { if (hasOwnProp(obj, k)) { return false; } } return true; } } function isUndefined(input) { return input === void 0; } function isNumber(input) { return ( typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]' ); } function isDate(input) { return ( input instanceof Date || Object.prototype.toString.call(input) === '[object Date]' ); } function map(arr, fn) { var res = [], i, arrLen = arr.length; for (i = 0; i < arrLen; ++i) { res.push(fn(arr[i], i)); } return res; } function extend(a, b) { for (var i in b) { if (hasOwnProp(b, i)) { a[i] = b[i]; } } if (hasOwnProp(b, 'toString')) { a.toString = b.toString; } if (hasOwnProp(b, 'valueOf')) { a.valueOf = b.valueOf; } return a; } function createUTC(input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, true).utc(); } function defaultParsingFlags() { // We need to deep clone this object. return { empty: false, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: false, invalidEra: null, invalidMonth: null, invalidFormat: false, userInvalidated: false, iso: false, parsedDateParts: [], era: null, meridiem: null, rfc2822: false, weekdayMismatch: false, }; } function getParsingFlags(m) { if (m._pf == null) { m._pf = defaultParsingFlags(); } return m._pf; } var some; if (Array.prototype.some) { some = Array.prototype.some; } else { some = function (fun) { var t = Object(this), len = t.length >>> 0, i; for (i = 0; i < len; i++) { if (i in t && fun.call(this, t[i], i, t)) { return true; } } return false; }; } function isValid(m) { var flags = null, parsedParts = false, isNowValid = m._d && !isNaN(m._d.getTime()); if (isNowValid) { flags = getParsingFlags(m); parsedParts = some.call(flags.parsedDateParts, function (i) { return i != null; }); isNowValid = flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || (flags.meridiem && parsedParts)); if (m._strict) { isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined; } } if (Object.isFrozen == null || !Object.isFrozen(m)) { m._isValid = isNowValid; } else { return isNowValid; } return m._isValid; } function createInvalid(flags) { var m = createUTC(NaN); if (flags != null) { extend(getParsingFlags(m), flags); } else { getParsingFlags(m).userInvalidated = true; } return m; } // Plugins that add properties should also add the key here (null value), // so we can properly clone ourselves. var momentProperties = (hooks.momentProperties = []), updateInProgress = false; function copyConfig(to, from) { var i, prop, val, momentPropertiesLen = momentProperties.length; if (!isUndefined(from._isAMomentObject)) { to._isAMomentObject = from._isAMomentObject; } if (!isUndefined(from._i)) { to._i = from._i; } if (!isUndefined(from._f)) { to._f = from._f; } if (!isUndefined(from._l)) { to._l = from._l; } if (!isUndefined(from._strict)) { to._strict = from._strict; } if (!isUndefined(from._tzm)) { to._tzm = from._tzm; } if (!isUndefined(from._isUTC)) { to._isUTC = from._isUTC; } if (!isUndefined(from._offset)) { to._offset = from._offset; } if (!isUndefined(from._pf)) { to._pf = getParsingFlags(from); } if (!isUndefined(from._locale)) { to._locale = from._locale; } if (momentPropertiesLen > 0) { for (i = 0; i < momentPropertiesLen; i++) { prop = momentProperties[i]; val = from[prop]; if (!isUndefined(val)) { to[prop] = val; } } } return to; } // Moment prototype object function Moment(config) { copyConfig(this, config); this._d = new Date(config._d != null ? config._d.getTime() : NaN); if (!this.isValid()) { this._d = new Date(NaN); } // Prevent infinite loop in case updateOffset creates new moment // objects. if (updateInProgress === false) { updateInProgress = true; hooks.updateOffset(this); updateInProgress = false; } } function isMoment(obj) { return ( obj instanceof Moment || (obj != null && obj._isAMomentObject != null) ); } function warn(msg) { if ( hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn ) { console.warn('Deprecation warning: ' + msg); } } function deprecate(msg, fn) { var firstTime = true; return extend(function () { if (hooks.deprecationHandler != null) { hooks.deprecationHandler(null, msg); } if (firstTime) { var args = [], arg, i, key, argLen = arguments.length; for (i = 0; i < argLen; i++) { arg = ''; if (typeof arguments[i] === 'object') { arg += '\n[' + i + '] '; for (key in arguments[0]) { if (hasOwnProp(arguments[0], key)) { arg += key + ': ' + arguments[0][key] + ', '; } } arg = arg.slice(0, -2); // Remove trailing comma and space } else { arg = arguments[i]; } args.push(arg); } warn( msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + new Error().stack ); firstTime = false; } return fn.apply(this, arguments); }, fn); } var deprecations = {}; function deprecateSimple(name, msg) { if (hooks.deprecationHandler != null) { hooks.deprecationHandler(name, msg); } if (!deprecations[name]) { warn(msg); deprecations[name] = true; } } hooks.suppressDeprecationWarnings = false; hooks.deprecationHandler = null; function isFunction(input) { return ( (typeof Function !== 'undefined' && input instanceof Function) || Object.prototype.toString.call(input) === '[object Function]' ); } function set(config) { var prop, i; for (i in config) { if (hasOwnProp(config, i)) { prop = config[i]; if (isFunction(prop)) { this[i] = prop; } else { this['_' + i] = prop; } } } this._config = config; // Lenient ordinal parsing accepts just a number in addition to // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. // TODO: Remove "ordinalParse" fallback in next major release. this._dayOfMonthOrdinalParseLenient = new RegExp( (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\d{1,2}/.source ); } function mergeConfigs(parentConfig, childConfig) { var res = extend({}, parentConfig), prop; for (prop in childConfig) { if (hasOwnProp(childConfig, prop)) { if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { res[prop] = {}; extend(res[prop], parentConfig[prop]); extend(res[prop], childConfig[prop]); } else if (childConfig[prop] != null) { res[prop] = childConfig[prop]; } else { delete res[prop]; } } } for (prop in parentConfig) { if ( hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop]) ) { // make sure changes to properties don't modify parent config res[prop] = extend({}, res[prop]); } } return res; } function Locale(config) { if (config != null) { this.set(config); } } var keys; if (Object.keys) { keys = Object.keys; } else { keys = function (obj) { var i, res = []; for (i in obj) { if (hasOwnProp(obj, i)) { res.push(i); } } return res; }; } var defaultCalendar = { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }; function calendar(key, mom, now) { var output = this._calendar[key] || this._calendar['sameElse']; return isFunction(output) ? output.call(mom, now) : output; } function zeroFill(number, targetLength, forceSign) { var absNumber = '' + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign = number >= 0; return ( (sign ? (forceSign ? '+' : '') : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber ); } var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, formatFunctions = {}, formatTokenFunctions = {}; // token: 'M' // padded: ['MM', 2] // ordinal: 'Mo' // callback: function () { this.month() + 1 } function addFormatToken(token, padded, ordinal, callback) { var func = callback; if (typeof callback === 'string') { func = function () { return this[callback](); }; } if (token) { formatTokenFunctions[token] = func; } if (padded) { formatTokenFunctions[padded[0]] = function () { return zeroFill(func.apply(this, arguments), padded[1], padded[2]); }; } if (ordinal) { formatTokenFunctions[ordinal] = function () { return this.localeData().ordinal( func.apply(this, arguments), token ); }; } } function removeFormattingTokens(input) { if (input.match(/\[[\s\S]/)) { return input.replace(/^\[|\]$/g, ''); } return input.replace(/\\/g, ''); } function makeFormatFunction(format) { var array = format.match(formattingTokens), i, length; for (i = 0, length = array.length; i < length; i++) { if (formatTokenFunctions[array[i]]) { array[i] = formatTokenFunctions[array[i]]; } else { array[i] = removeFormattingTokens(array[i]); } } return function (mom) { var output = '', i; for (i = 0; i < length; i++) { output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; } return output; }; } // format date using native date object function formatMoment(m, format) { if (!m.isValid()) { return m.localeData().invalidDate(); } format = expandFormat(format, m.localeData()); formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); return formatFunctions[format](m); } function expandFormat(format, locale) { var i = 5; function replaceLongDateFormatTokens(input) { return locale.longDateFormat(input) || input; } localFormattingTokens.lastIndex = 0; while (i >= 0 && localFormattingTokens.test(format)) { format = format.replace( localFormattingTokens, replaceLongDateFormatTokens ); localFormattingTokens.lastIndex = 0; i -= 1; } return format; } var defaultLongDateFormat = { LTS: 'h:mm:ss A', LT: 'h:mm A', L: 'MM/DD/YYYY', LL: 'MMMM D, YYYY', LLL: 'MMMM D, YYYY h:mm A', LLLL: 'dddd, MMMM D, YYYY h:mm A', }; function longDateFormat(key) { var format = this._longDateFormat[key], formatUpper = this._longDateFormat[key.toUpperCase()]; if (format || !formatUpper) { return format; } this._longDateFormat[key] = formatUpper .match(formattingTokens) .map(function (tok) { if ( tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd' ) { return tok.slice(1); } return tok; }) .join(''); return this._longDateFormat[key]; } var defaultInvalidDate = 'Invalid date'; function invalidDate() { return this._invalidDate; } var defaultOrdinal = '%d', defaultDayOfMonthOrdinalParse = /\d{1,2}/; function ordinal(number) { return this._ordinal.replace('%d', number); } var defaultRelativeTime = { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', w: 'a week', ww: '%d weeks', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }; function relativeTime(number, withoutSuffix, string, isFuture) { var output = this._relativeTime[string]; return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number); } function pastFuture(diff, output) { var format = this._relativeTime[diff > 0 ? 'future' : 'past']; return isFunction(format) ? format(output) : format.replace(/%s/i, output); } var aliases = { D: 'date', dates: 'date', date: 'date', d: 'day', days: 'day', day: 'day', e: 'weekday', weekdays: 'weekday', weekday: 'weekday', E: 'isoWeekday', isoweekdays: 'isoWeekday', isoweekday: 'isoWeekday', DDD: 'dayOfYear', dayofyears: 'dayOfYear', dayofyear: 'dayOfYear', h: 'hour', hours: 'hour', hour: 'hour', ms: 'millisecond', milliseconds: 'millisecond', millisecond: 'millisecond', m: 'minute', minutes: 'minute', minute: 'minute', M: 'month', months: 'month', month: 'month', Q: 'quarter', quarters: 'quarter', quarter: 'quarter', s: 'second', seconds: 'second', second: 'second', gg: 'weekYear', weekyears: 'weekYear', weekyear: 'weekYear', GG: 'isoWeekYear', isoweekyears: 'isoWeekYear', isoweekyear: 'isoWeekYear', w: 'week', weeks: 'week', week: 'week', W: 'isoWeek', isoweeks: 'isoWeek', isoweek: 'isoWeek', y: 'year', years: 'year', year: 'year', }; function normalizeUnits(units) { return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; } function normalizeObjectUnits(inputObject) { var normalizedInput = {}, normalizedProp, prop; for (prop in inputObject) { if (hasOwnProp(inputObject, prop)) { normalizedProp = normalizeUnits(prop); if (normalizedProp) { normalizedInput[normalizedProp] = inputObject[prop]; } } } return normalizedInput; } var priorities = { date: 9, day: 11, weekday: 11, isoWeekday: 11, dayOfYear: 4, hour: 13, millisecond: 16, minute: 14, month: 8, quarter: 7, second: 15, weekYear: 1, isoWeekYear: 1, week: 5, isoWeek: 5, year: 1, }; function getPrioritizedUnits(unitsObj) { var units = [], u; for (u in unitsObj) { if (hasOwnProp(unitsObj, u)) { units.push({ unit: u, priority: priorities[u] }); } } units.sort(function (a, b) { return a.priority - b.priority; }); return units; } var match1 = /\d/, // 0 - 9 match2 = /\d\d/, // 00 - 99 match3 = /\d{3}/, // 000 - 999 match4 = /\d{4}/, // 0000 - 9999 match6 = /[+-]?\d{6}/, // -999999 - 999999 match1to2 = /\d\d?/, // 0 - 99 match3to4 = /\d\d\d\d?/, // 999 - 9999 match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 match1to3 = /\d{1,3}/, // 0 - 999 match1to4 = /\d{1,4}/, // 0 - 9999 match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 matchUnsigned = /\d+/, // 0 - inf matchSigned = /[+-]?\d+/, // -inf - inf matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 // any word (or two) characters or numbers including two/three word month in arabic. // includes scottish gaelic two word and hyphenated months matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, match1to2NoLeadingZero = /^[1-9]\d?/, // 1-99 match1to2HasZero = /^([1-9]\d|\d)/, // 0-99 regexes; regexes = {}; function addRegexToken(token, regex, strictRegex) { regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { return isStrict && strictRegex ? strictRegex : regex; }; } function getParseRegexForToken(token, config) { if (!hasOwnProp(regexes, token)) { return new RegExp(unescapeFormat(token)); } return regexes[token](config._strict, config._locale); } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript function unescapeFormat(s) { return regexEscape( s .replace('\\', '') .replace( /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { return p1 || p2 || p3 || p4; } ) ); } function regexEscape(s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } function absFloor(number) { if (number < 0) { // -0 -> 0 return Math.ceil(number) || 0; } else { return Math.floor(number); } } function toInt(argumentForCoercion) { var coercedNumber = +argumentForCoercion, value = 0; if (coercedNumber !== 0 && isFinite(coercedNumber)) { value = absFloor(coercedNumber); } return value; } var tokens = {}; function addParseToken(token, callback) { var i, func = callback, tokenLen; if (typeof token === 'string') { token = [token]; } if (isNumber(callback)) { func = function (input, array) { array[callback] = toInt(input); }; } tokenLen = token.length; for (i = 0; i < tokenLen; i++) { tokens[token[i]] = func; } } function addWeekParseToken(token, callback) { addParseToken(token, function (input, array, config, token) { config._w = config._w || {}; callback(input, config._w, config, token); }); } function addTimeToArrayFromToken(token, input, config) { if (input != null && hasOwnProp(tokens, token)) { tokens[token](input, config._a, config, token); } } function isLeapYear(year) { return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; } var YEAR = 0, MONTH = 1, DATE = 2, HOUR = 3, MINUTE = 4, SECOND = 5, MILLISECOND = 6, WEEK = 7, WEEKDAY = 8; // FORMATTING addFormatToken('Y', 0, 0, function () { var y = this.year(); return y <= 9999 ? zeroFill(y, 4) : '+' + y; }); addFormatToken(0, ['YY', 2], 0, function () { return this.year() % 100; }); addFormatToken(0, ['YYYY', 4], 0, 'year'); addFormatToken(0, ['YYYYY', 5], 0, 'year'); addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // PARSING addRegexToken('Y', matchSigned); addRegexToken('YY', match1to2, match2); addRegexToken('YYYY', match1to4, match4); addRegexToken('YYYYY', match1to6, match6); addRegexToken('YYYYYY', match1to6, match6); addParseToken(['YYYYY', 'YYYYYY'], YEAR); addParseToken('YYYY', function (input, array) { array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); }); addParseToken('YY', function (input, array) { array[YEAR] = hooks.parseTwoDigitYear(input); }); addParseToken('Y', function (input, array) { array[YEAR] = parseInt(input, 10); }); // HELPERS function daysInYear(year) { return isLeapYear(year) ? 366 : 365; } // HOOKS hooks.parseTwoDigitYear = function (input) { return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); }; // MOMENTS var getSetYear = makeGetSet('FullYear', true); function getIsLeapYear() { return isLeapYear(this.year()); } function makeGetSet(unit, keepTime) { return function (value) { if (value != null) { set$1(this, unit, value); hooks.updateOffset(this, keepTime); return this; } else { return get(this, unit); } }; } function get(mom, unit) { if (!mom.isValid()) { return NaN; } var d = mom._d, isUTC = mom._isUTC; switch (unit) { case 'Milliseconds': return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds(); case 'Seconds': return isUTC ? d.getUTCSeconds() : d.getSeconds(); case 'Minutes': return isUTC ? d.getUTCMinutes() : d.getMinutes(); case 'Hours': return isUTC ? d.getUTCHours() : d.getHours(); case 'Date': return isUTC ? d.getUTCDate() : d.getDate(); case 'Day': return isUTC ? d.getUTCDay() : d.getDay(); case 'Month': return isUTC ? d.getUTCMonth() : d.getMonth(); case 'FullYear': return isUTC ? d.getUTCFullYear() : d.getFullYear(); default: return NaN; // Just in case } } function set$1(mom, unit, value) { var d, isUTC, year, month, date; if (!mom.isValid() || isNaN(value)) { return; } d = mom._d; isUTC = mom._isUTC; switch (unit) { case 'Milliseconds': return void (isUTC ? d.setUTCMilliseconds(value) : d.setMilliseconds(value)); case 'Seconds': return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value)); case 'Minutes': return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value)); case 'Hours': return void (isUTC ? d.setUTCHours(value) : d.setHours(value)); case 'Date': return void (isUTC ? d.setUTCDate(value) : d.setDate(value)); // case 'Day': // Not real // return void (isUTC ? d.setUTCDay(value) : d.setDay(value)); // case 'Month': // Not used because we need to pass two variables // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value)); case 'FullYear': break; // See below ... default: return; // Just in case } year = value; month = mom.month(); date = mom.date(); date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date; void (isUTC ? d.setUTCFullYear(year, month, date) : d.setFullYear(year, month, date)); } // MOMENTS function stringGet(units) { units = normalizeUnits(units); if (isFunction(this[units])) { return this[units](); } return this; } function stringSet(units, value) { if (typeof units === 'object') { units = normalizeObjectUnits(units); var prioritized = getPrioritizedUnits(units), i, prioritizedLen = prioritized.length; for (i = 0; i < prioritizedLen; i++) { this[prioritized[i].unit](units[prioritized[i].unit]); } } else { units = normalizeUnits(units); if (isFunction(this[units])) { return this[units](value); } } return this; } function mod(n, x) { return ((n % x) + x) % x; } var indexOf; if (Array.prototype.indexOf) { indexOf = Array.prototype.indexOf; } else { indexOf = function (o) { // I know var i; for (i = 0; i < this.length; ++i) { if (this[i] === o) { return i; } } return -1; }; } function daysInMonth(year, month) { if (isNaN(year) || isNaN(month)) { return NaN; } var modMonth = mod(month, 12); year += (month - modMonth) / 12; return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - ((modMonth % 7) % 2); } // FORMATTING addFormatToken('M', ['MM', 2], 'Mo', function () { return this.month() + 1; }); addFormatToken('MMM', 0, 0, function (format) { return this.localeData().monthsShort(this, format); }); addFormatToken('MMMM', 0, 0, function (format) { return this.localeData().months(this, format); }); // PARSING addRegexToken('M', match1to2, match1to2NoLeadingZero); addRegexToken('MM', match1to2, match2); addRegexToken('MMM', function (isStrict, locale) { return locale.monthsShortRegex(isStrict); }); addRegexToken('MMMM', function (isStrict, locale) { return locale.monthsRegex(isStrict); }); addParseToken(['M', 'MM'], function (input, array) { array[MONTH] = toInt(input) - 1; }); addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid. if (month != null) { array[MONTH] = month; } else { getParsingFlags(config).invalidMonth = input; } }); // LOCALES var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, defaultMonthsShortRegex = matchWord, defaultMonthsRegex = matchWord; function localeMonths(m, format) { if (!m) { return isArray(this._months) ? this._months : this._months['standalone']; } return isArray(this._months) ? this._months[m.month()] : this._months[ (this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone' ][m.month()]; } function localeMonthsShort(m, format) { if (!m) { return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone']; } return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[ MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone' ][m.month()]; } function handleStrictParse(monthName, format, strict) { var i, ii, mom, llc = monthName.toLocaleLowerCase(); if (!this._monthsParse) { // this is not used this._monthsParse = []; this._longMonthsParse = []; this._shortMonthsParse = []; for (i = 0; i < 12; ++i) { mom = createUTC([2000, i]); this._shortMonthsParse[i] = this.monthsShort( mom, '' ).toLocaleLowerCase(); this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); } } if (strict) { if (format === 'MMM') { ii = indexOf.call(this._shortMonthsParse, llc); return ii !== -1 ? ii : null; } else { ii = indexOf.call(this._longMonthsParse, llc); return ii !== -1 ? ii : null; } } else { if (format === 'MMM') { ii = indexOf.call(this._shortMonthsParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._longMonthsParse, llc); return ii !== -1 ? ii : null; } else { ii = indexOf.call(this._longMonthsParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._shortMonthsParse, llc); return ii !== -1 ? ii : null; } } } function localeMonthsParse(monthName, format, strict) { var i, mom, regex; if (this._monthsParseExact) { return handleStrictParse.call(this, monthName, format, strict); } if (!this._monthsParse) { this._monthsParse = []; this._longMonthsParse = []; this._shortMonthsParse = []; } // TODO: add sorting // Sorting makes sure if one month (or abbr) is a prefix of another // see sorting in computeMonthsParse for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); if (strict && !this._longMonthsParse[i]) { this._longMonthsParse[i] = new RegExp( '^' + this.months(mom, '').replace('.', '') + '$', 'i' ); this._shortMonthsParse[i] = new RegExp( '^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i' ); } if (!strict && !this._monthsParse[i]) { regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex if ( strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName) ) { return i; } else if ( strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName) ) { return i; } else if (!strict && this._monthsParse[i].test(monthName)) { return i; } } } // MOMENTS function setMonth(mom, value) { if (!mom.isValid()) { // No op return mom; } if (typeof value === 'string') { if (/^\d+$/.test(value)) { value = toInt(value); } else { value = mom.localeData().monthsParse(value); // TODO: Another silent failure? if (!isNumber(value)) { return mom; } } } var month = value, date = mom.date(); date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month)); void (mom._isUTC ? mom._d.setUTCMonth(month, date) : mom._d.setMonth(month, date)); return mom; } function getSetMonth(value) { if (value != null) { setMonth(this, value); hooks.updateOffset(this, true); return this; } else { return get(this, 'Month'); } } function getDaysInMonth() { return daysInMonth(this.year(), this.month()); } function monthsShortRegex(isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { computeMonthsParse.call(this); } if (isStrict) { return this._monthsShortStrictRegex; } else { return this._monthsShortRegex; } } else { if (!hasOwnProp(this, '_monthsShortRegex')) { this._monthsShortRegex = defaultMonthsShortRegex; } return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex; } } function monthsRegex(isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { computeMonthsParse.call(this); } if (isStrict) { return this._monthsStrictRegex; } else { return this._monthsRegex; } } else { if (!hasOwnProp(this, '_monthsRegex')) { this._monthsRegex = defaultMonthsRegex; } return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex; } } function computeMonthsParse() { function cmpLenRev(a, b) { return b.length - a.length; } var shortPieces = [], longPieces = [], mixedPieces = [], i, mom, shortP, longP; for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); shortP = regexEscape(this.monthsShort(mom, '')); longP = regexEscape(this.months(mom, '')); shortPieces.push(shortP); longPieces.push(longP); mixedPieces.push(longP); mixedPieces.push(shortP); } // Sorting makes sure if one month (or abbr) is a prefix of another it // will match the longer piece. shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._monthsShortRegex = this._monthsRegex; this._monthsStrictRegex = new RegExp( '^(' + longPieces.join('|') + ')', 'i' ); this._monthsShortStrictRegex = new RegExp( '^(' + shortPieces.join('|') + ')', 'i' ); } function createDate(y, m, d, h, M, s, ms) { // can't just apply() to create a date: // https://stackoverflow.com/q/181348 var date; // the date constructor remaps years 0-99 to 1900-1999 if (y < 100 && y >= 0) { // preserve leap years using a full 400 year cycle, then reset date = new Date(y + 400, m, d, h, M, s, ms); if (isFinite(date.getFullYear())) { date.setFullYear(y); } } else { date = new Date(y, m, d, h, M, s, ms); } return date; } function createUTCDate(y) { var date, args; // the Date.UTC function remaps years 0-99 to 1900-1999 if (y < 100 && y >= 0) { args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset args[0] = y + 400; date = new Date(Date.UTC.apply(null, args)); if (isFinite(date.getUTCFullYear())) { date.setUTCFullYear(y); } } else { date = new Date(Date.UTC.apply(null, arguments)); } return date; } // start-of-first-week - start-of-year function firstWeekOffset(year, dow, doy) { var // first-week day -- which january is always in the first week (4 for iso, 1 for other) fwd = 7 + dow - doy, // first-week day local weekday -- which local weekday is fwd fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; return -fwdlw + fwd - 1; } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday function dayOfYearFromWeeks(year, week, weekday, dow, doy) { var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, resYear, resDayOfYear; if (dayOfYear <= 0) { resYear = year - 1; resDayOfYear = daysInYear(resYear) + dayOfYear; } else if (dayOfYear > daysInYear(year)) { resYear = year + 1; resDayOfYear = dayOfYear - daysInYear(year); } else { resYear = year; resDayOfYear = dayOfYear; } return { year: resYear, dayOfYear: resDayOfYear, }; } function weekOfYear(mom, dow, doy) { var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, resWeek, resYear; if (week < 1) { resYear = mom.year() - 1; resWeek = week + weeksInYear(resYear, dow, doy); } else if (week > weeksInYear(mom.year(), dow, doy)) { resWeek = week - weeksInYear(mom.year(), dow, doy); resYear = mom.year() + 1; } else { resYear = mom.year(); resWeek = week; } return { week: resWeek, year: resYear, }; } function weeksInYear(year, dow, doy) { var weekOffset = firstWeekOffset(year, dow, doy), weekOffsetNext = firstWeekOffset(year + 1, dow, doy); return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; } // FORMATTING addFormatToken('w', ['ww', 2], 'wo', 'week'); addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // PARSING addRegexToken('w', match1to2, match1to2NoLeadingZero); addRegexToken('ww', match1to2, match2); addRegexToken('W', match1to2, match1to2NoLeadingZero); addRegexToken('WW', match1to2, match2); addWeekParseToken( ['w', 'ww', 'W', 'WW'], function (input, week, config, token) { week[token.substr(0, 1)] = toInt(input); } ); // HELPERS // LOCALES function localeWeek(mom) { return weekOfYear(mom, this._week.dow, this._week.doy).week; } var defaultLocaleWeek = { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }; function localeFirstDayOfWeek() { return this._week.dow; } function localeFirstDayOfYear() { return this._week.doy; } // MOMENTS function getSetWeek(input) { var week = this.localeData().week(this); return input == null ? week : this.add((input - week) * 7, 'd'); } function getSetISOWeek(input) { var week = weekOfYear(this, 1, 4).week; return input == null ? week : this.add((input - week) * 7, 'd'); } // FORMATTING addFormatToken('d', 0, 'do', 'day'); addFormatToken('dd', 0, 0, function (format) { return this.localeData().weekdaysMin(this, format); }); addFormatToken('ddd', 0, 0, function (format) { return this.localeData().weekdaysShort(this, format); }); addFormatToken('dddd', 0, 0, function (format) { return this.localeData().weekdays(this, format); }); addFormatToken('e', 0, 0, 'weekday'); addFormatToken('E', 0, 0, 'isoWeekday'); // PARSING addRegexToken('d', match1to2); addRegexToken('e', match1to2); addRegexToken('E', match1to2); addRegexToken('dd', function (isStrict, locale) { return locale.weekdaysMinRegex(isStrict); }); addRegexToken('ddd', function (isStrict, locale) { return locale.weekdaysShortRegex(isStrict); }); addRegexToken('dddd', function (isStrict, locale) { return locale.weekdaysRegex(isStrict); }); addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid if (weekday != null) { week.d = weekday; } else { getParsingFlags(config).invalidWeekday = input; } }); addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { week[token] = toInt(input); }); // HELPERS function parseWeekday(input, locale) { if (typeof input !== 'string') { return input; } if (!isNaN(input)) { return parseInt(input, 10); } input = locale.weekdaysParse(input); if (typeof input === 'number') { return input; } return null; } function parseIsoWeekday(input, locale) { if (typeof input === 'string') { return locale.weekdaysParse(input) % 7 || 7; } return isNaN(input) ? null : input; } // LOCALES function shiftWeekdays(ws, n) { return ws.slice(n, 7).concat(ws.slice(0, n)); } var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), defaultWeekdaysRegex = matchWord, defaultWeekdaysShortRegex = matchWord, defaultWeekdaysMinRegex = matchWord; function localeWeekdays(m, format) { var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[ m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone' ]; return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays; } function localeWeekdaysShort(m) { return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort; } function localeWeekdaysMin(m) { return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin; } function handleStrictParse$1(weekdayName, format, strict) { var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); if (!this._weekdaysParse) { this._weekdaysParse = []; this._shortWeekdaysParse = []; this._minWeekdaysParse = []; for (i = 0; i < 7; ++i) { mom = createUTC([2000, 1]).day(i); this._minWeekdaysParse[i] = this.weekdaysMin( mom, '' ).toLocaleLowerCase(); this._shortWeekdaysParse[i] = this.weekdaysShort( mom, '' ).toLocaleLowerCase(); this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); } } if (strict) { if (format === 'dddd') { ii = indexOf.call(this._weekdaysParse, llc); return ii !== -1 ? ii : null; } else if (format === 'ddd') { ii = indexOf.call(this._shortWeekdaysParse, llc); return ii !== -1 ? ii : null; } else { ii = indexOf.call(this._minWeekdaysParse, llc); return ii !== -1 ? ii : null; } } else { if (format === 'dddd') { ii = indexOf.call(this._weekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._shortWeekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._minWeekdaysParse, llc); return ii !== -1 ? ii : null; } else if (format === 'ddd') { ii = indexOf.call(this._shortWeekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._weekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._minWeekdaysParse, llc); return ii !== -1 ? ii : null; } else { ii = indexOf.call(this._minWeekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._weekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._shortWeekdaysParse, llc); return ii !== -1 ? ii : null; } } } function localeWeekdaysParse(weekdayName, format, strict) { var i, mom, regex; if (this._weekdaysParseExact) { return handleStrictParse$1.call(this, weekdayName, format, strict); } if (!this._weekdaysParse) { this._weekdaysParse = []; this._minWeekdaysParse = []; this._shortWeekdaysParse = []; this._fullWeekdaysParse = []; } for (i = 0; i < 7; i++) { // make the regex if we don't have it already mom = createUTC([2000, 1]).day(i); if (strict && !this._fullWeekdaysParse[i]) { this._fullWeekdaysParse[i] = new RegExp( '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i' ); this._shortWeekdaysParse[i] = new RegExp( '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i' ); this._minWeekdaysParse[i] = new RegExp( '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i' ); } if (!this._weekdaysParse[i]) { regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex if ( strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName) ) { return i; } else if ( strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName) ) { return i; } else if ( strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName) ) { return i; } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { return i; } } } // MOMENTS function getSetDayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } var day = get(this, 'Day'); if (input != null) { input = parseWeekday(input, this.localeData()); return this.add(input - day, 'd'); } else { return day; } } function getSetLocaleDayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; return input == null ? weekday : this.add(input - weekday, 'd'); } function getSetISODayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } // behaves the same as moment#day except // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) // as a setter, sunday should belong to the previous week. if (input != null) { var weekday = parseIsoWeekday(input, this.localeData()); return this.day(this.day() % 7 ? weekday : weekday - 7); } else { return this.day() || 7; } } function weekdaysRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); } if (isStrict) { return this._weekdaysStrictRegex; } else { return this._weekdaysRegex; } } else { if (!hasOwnProp(this, '_weekdaysRegex')) { this._weekdaysRegex = defaultWeekdaysRegex; } return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex; } } function weekdaysShortRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); } if (isStrict) { return this._weekdaysShortStrictRegex; } else { return this._weekdaysShortRegex; } } else { if (!hasOwnProp(this, '_weekdaysShortRegex')) { this._weekdaysShortRegex = defaultWeekdaysShortRegex; } return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex; } } function weekdaysMinRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); } if (isStrict) { return this._weekdaysMinStrictRegex; } else { return this._weekdaysMinRegex; } } else { if (!hasOwnProp(this, '_weekdaysMinRegex')) { this._weekdaysMinRegex = defaultWeekdaysMinRegex; } return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex; } } function computeWeekdaysParse() { function cmpLenRev(a, b) { return b.length - a.length; } var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i, mom, minp, shortp, longp; for (i = 0; i < 7; i++) { // make the regex if we don't have it already mom = createUTC([2000, 1]).day(i); minp = regexEscape(this.weekdaysMin(mom, '')); shortp = regexEscape(this.weekdaysShort(mom, '')); longp = regexEscape(this.weekdays(mom, '')); minPieces.push(minp); shortPieces.push(shortp); longPieces.push(longp); mixedPieces.push(minp); mixedPieces.push(shortp); mixedPieces.push(longp); } // Sorting makes sure if one weekday (or abbr) is a prefix of another it // will match the longer piece. minPieces.sort(cmpLenRev); shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._weekdaysShortRegex = this._weekdaysRegex; this._weekdaysMinRegex = this._weekdaysRegex; this._weekdaysStrictRegex = new RegExp( '^(' + longPieces.join('|') + ')', 'i' ); this._weekdaysShortStrictRegex = new RegExp( '^(' + shortPieces.join('|') + ')', 'i' ); this._weekdaysMinStrictRegex = new RegExp( '^(' + minPieces.join('|') + ')', 'i' ); } // FORMATTING function hFormat() { return this.hours() % 12 || 12; } function kFormat() { return this.hours() || 24; } addFormatToken('H', ['HH', 2], 0, 'hour'); addFormatToken('h', ['hh', 2], 0, hFormat); addFormatToken('k', ['kk', 2], 0, kFormat); addFormatToken('hmm', 0, 0, function () { return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); }); addFormatToken('hmmss', 0, 0, function () { return ( '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2) ); }); addFormatToken('Hmm', 0, 0, function () { return '' + this.hours() + zeroFill(this.minutes(), 2); }); addFormatToken('Hmmss', 0, 0, function () { return ( '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2) ); }); function meridiem(token, lowercase) { addFormatToken(token, 0, 0, function () { return this.localeData().meridiem( this.hours(), this.minutes(), lowercase ); }); } meridiem('a', true); meridiem('A', false); // PARSING function matchMeridiem(isStrict, locale) { return locale._meridiemParse; } addRegexToken('a', matchMeridiem); addRegexToken('A', matchMeridiem); addRegexToken('H', match1to2, match1to2HasZero); addRegexToken('h', match1to2, match1to2NoLeadingZero); addRegexToken('k', match1to2, match1to2NoLeadingZero); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2); addRegexToken('hmm', match3to4); addRegexToken('hmmss', match5to6); addRegexToken('Hmm', match3to4); addRegexToken('Hmmss', match5to6); addParseToken(['H', 'HH'], HOUR); addParseToken(['k', 'kk'], function (input, array, config) { var kInput = toInt(input); array[HOUR] = kInput === 24 ? 0 : kInput; }); addParseToken(['a', 'A'], function (input, array, config) { config._isPm = config._locale.isPM(input); config._meridiem = input; }); addParseToken(['h', 'hh'], function (input, array, config) { array[HOUR] = toInt(input); getParsingFlags(config).bigHour = true; }); addParseToken('hmm', function (input, array, config) { var pos = input.length - 2; array[HOUR] = toInt(input.substr(0, pos)); array[MINUTE] = toInt(input.substr(pos)); getParsingFlags(config).bigHour = true; }); addParseToken('hmmss', function (input, array, config) { var pos1 = input.length - 4, pos2 = input.length - 2; array[HOUR] = toInt(input.substr(0, pos1)); array[MINUTE] = toInt(input.substr(pos1, 2)); array[SECOND] = toInt(input.substr(pos2)); getParsingFlags(config).bigHour = true; }); addParseToken('Hmm', function (input, array, config) { var pos = input.length - 2; array[HOUR] = toInt(input.substr(0, pos)); array[MINUTE] = toInt(input.substr(pos)); }); addParseToken('Hmmss', function (input, array, config) { var pos1 = input.length - 4, pos2 = input.length - 2; array[HOUR] = toInt(input.substr(0, pos1)); array[MINUTE] = toInt(input.substr(pos1, 2)); array[SECOND] = toInt(input.substr(pos2)); }); // LOCALES function localeIsPM(input) { // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays // Using charAt should be more compatible. return (input + '').toLowerCase().charAt(0) === 'p'; } var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, // Setting the hour should keep the time, because the user explicitly // specified which hour they want. So trying to maintain the same hour (in // a new timezone) makes sense. Adding/subtracting hours does not follow // this rule. getSetHour = makeGetSet('Hours', true); function localeMeridiem(hours, minutes, isLower) { if (hours > 11) { return isLower ? 'pm' : 'PM'; } else { return isLower ? 'am' : 'AM'; } } var baseConfig = { calendar: defaultCalendar, longDateFormat: defaultLongDateFormat, invalidDate: defaultInvalidDate, ordinal: defaultOrdinal, dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, relativeTime: defaultRelativeTime, months: defaultLocaleMonths, monthsShort: defaultLocaleMonthsShort, week: defaultLocaleWeek, weekdays: defaultLocaleWeekdays, weekdaysMin: defaultLocaleWeekdaysMin, weekdaysShort: defaultLocaleWeekdaysShort, meridiemParse: defaultLocaleMeridiemParse, }; // internal storage for locale config files var locales = {}, localeFamilies = {}, globalLocale; function commonPrefix(arr1, arr2) { var i, minl = Math.min(arr1.length, arr2.length); for (i = 0; i < minl; i += 1) { if (arr1[i] !== arr2[i]) { return i; } } return minl; } function normalizeLocale(key) { return key ? key.toLowerCase().replace('_', '-') : key; } // pick the locale from the array // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root function chooseLocale(names) { var i = 0, j, next, locale, split; while (i < names.length) { split = normalizeLocale(names[i]).split('-'); j = split.length; next = normalizeLocale(names[i + 1]); next = next ? next.split('-') : null; while (j > 0) { locale = loadLocale(split.slice(0, j).join('-')); if (locale) { return locale; } if ( next && next.length >= j && commonPrefix(split, next) >= j - 1 ) { //the next array item is better than a shallower substring of this one break; } j--; } i++; } return globalLocale; } function isLocaleNameSane(name) { // Prevent names that look like filesystem paths, i.e contain '/' or '\' // Ensure name is available and function returns boolean return !!(name && name.match('^[^/\\\\]*$')); } function loadLocale(name) { var oldLocale = null, aliasedRequire; // TODO: Find a better way to register and load all the locales in Node if ( locales[name] === undefined && "object" !== 'undefined' && module && module.exports && isLocaleNameSane(name) ) { try { oldLocale = globalLocale._abbr; aliasedRequire = undefined; Object(function webpackMissingModule() { var e = new Error("Cannot find module 'undefined'"); e.code = 'MODULE_NOT_FOUND'; throw e; }()); getSetGlobalLocale(oldLocale); } catch (e) { // mark as not found to avoid repeating expensive file require call causing high CPU // when trying to find en-US, en_US, en-us for every format call locales[name] = null; // null means not found } } return locales[name]; } // This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global // locale key. function getSetGlobalLocale(key, values) { var data; if (key) { if (isUndefined(values)) { data = getLocale(key); } else { data = defineLocale(key, values); } if (data) { // moment.duration._locale = moment._locale = data; globalLocale = data; } else { if (typeof console !== 'undefined' && console.warn) { //warn user if arguments are passed but the locale could not be set console.warn( 'Locale ' + key + ' not found. Did you forget to load it?' ); } } } return globalLocale._abbr; } function defineLocale(name, config) { if (config !== null) { var locale, parentConfig = baseConfig; config.abbr = name; if (locales[name] != null) { deprecateSimple( 'defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' ); parentConfig = locales[name]._config; } else if (config.parentLocale != null) { if (locales[config.parentLocale] != null) { parentConfig = locales[config.parentLocale]._config; } else { locale = loadLocale(config.parentLocale); if (locale != null) { parentConfig = locale._config; } else { if (!localeFamilies[config.parentLocale]) { localeFamilies[config.parentLocale] = []; } localeFamilies[config.parentLocale].push({ name: name, config: config, }); return null; } } } locales[name] = new Locale(mergeConfigs(parentConfig, config)); if (localeFamilies[name]) { localeFamilies[name].forEach(function (x) { defineLocale(x.name, x.config); }); } // backwards compat for now: also set the locale // make sure we set the locale AFTER all child locales have been // created, so we won't end up with the child locale set. getSetGlobalLocale(name); return locales[name]; } else { // useful for testing delete locales[name]; return null; } } function updateLocale(name, config) { if (config != null) { var locale, tmpLocale, parentConfig = baseConfig; if (locales[name] != null && locales[name].parentLocale != null) { // Update existing child locale in-place to avoid memory-leaks locales[name].set(mergeConfigs(locales[name]._config, config)); } else { // MERGE tmpLocale = loadLocale(name); if (tmpLocale != null) { parentConfig = tmpLocale._config; } config = mergeConfigs(parentConfig, config); if (tmpLocale == null) { // updateLocale is called for creating a new locale // Set abbr so it will have a name (getters return // undefined otherwise). config.abbr = name; } locale = new Locale(config); locale.parentLocale = locales[name]; locales[name] = locale; } // backwards compat for now: also set the locale getSetGlobalLocale(name); } else { // pass null for config to unupdate, useful for tests if (locales[name] != null) { if (locales[name].parentLocale != null) { locales[name] = locales[name].parentLocale; if (name === getSetGlobalLocale()) { getSetGlobalLocale(name); } } else if (locales[name] != null) { delete locales[name]; } } } return locales[name]; } // returns locale data function getLocale(key) { var locale; if (key && key._locale && key._locale._abbr) { key = key._locale._abbr; } if (!key) { return globalLocale; } if (!isArray(key)) { //short-circuit everything else locale = loadLocale(key); if (locale) { return locale; } key = [key]; } return chooseLocale(key); } function listLocales() { return keys(locales); } function checkOverflow(m) { var overflow, a = m._a; if (a && getParsingFlags(m).overflow === -2) { overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1; if ( getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE) ) { overflow = DATE; } if (getParsingFlags(m)._overflowWeeks && overflow === -1) { overflow = WEEK; } if (getParsingFlags(m)._overflowWeekday && overflow === -1) { overflow = WEEKDAY; } getParsingFlags(m).overflow = overflow; } return m; } // iso 8601 regex // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, isoDates = [ ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], ['GGGG-[W]WW', /\d{4}-W\d\d/, false], ['YYYY-DDD', /\d{4}-\d{3}/], ['YYYY-MM', /\d{4}-\d\d/, false], ['YYYYYYMMDD', /[+-]\d{10}/], ['YYYYMMDD', /\d{8}/], ['GGGG[W]WWE', /\d{4}W\d{3}/], ['GGGG[W]WW', /\d{4}W\d{2}/, false], ['YYYYDDD', /\d{7}/], ['YYYYMM', /\d{6}/, false], ['YYYY', /\d{4}/, false], ], // iso time formats and regexes isoTimes = [ ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], ['HH:mm:ss', /\d\d:\d\d:\d\d/], ['HH:mm', /\d\d:\d\d/], ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], ['HHmmss', /\d\d\d\d\d\d/], ['HHmm', /\d\d\d\d/], ['HH', /\d\d/], ], aspNetJsonRegex = /^\/?Date\((-?\d+)/i, // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, obsOffsets = { UT: 0, GMT: 0, EDT: -4 * 60, EST: -5 * 60, CDT: -5 * 60, CST: -6 * 60, MDT: -6 * 60, MST: -7 * 60, PDT: -7 * 60, PST: -8 * 60, }; // date from iso format function configFromISO(config) { var i, l, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat, isoDatesLen = isoDates.length, isoTimesLen = isoTimes.length; if (match) { getParsingFlags(config).iso = true; for (i = 0, l = isoDatesLen; i < l; i++) { if (isoDates[i][1].exec(match[1])) { dateFormat = isoDates[i][0]; allowTime = isoDates[i][2] !== false; break; } } if (dateFormat == null) { config._isValid = false; return; } if (match[3]) { for (i = 0, l = isoTimesLen; i < l; i++) { if (isoTimes[i][1].exec(match[3])) { // match[2] should be 'T' or space timeFormat = (match[2] || ' ') + isoTimes[i][0]; break; } } if (timeFormat == null) { config._isValid = false; return; } } if (!allowTime && timeFormat != null) { config._isValid = false; return; } if (match[4]) { if (tzRegex.exec(match[4])) { tzFormat = 'Z'; } else { config._isValid = false; return; } } config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); configFromStringAndFormat(config); } else { config._isValid = false; } } function extractFromRFC2822Strings( yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr ) { var result = [ untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10), ]; if (secondStr) { result.push(parseInt(secondStr, 10)); } return result; } function untruncateYear(yearStr) { var year = parseInt(yearStr, 10); if (year <= 49) { return 2000 + year; } else if (year <= 999) { return 1900 + year; } return year; } function preprocessRFC2822(s) { // Remove comments and folding whitespace and replace multiple-spaces with a single space return s .replace(/\([^()]*\)|[\n\t]/g, ' ') .replace(/(\s\s+)/g, ' ') .replace(/^\s\s*/, '') .replace(/\s\s*$/, ''); } function checkWeekday(weekdayStr, parsedInput, config) { if (weekdayStr) { // TODO: Replace the vanilla JS Date object with an independent day-of-week check. var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), weekdayActual = new Date( parsedInput[0], parsedInput[1], parsedInput[2] ).getDay(); if (weekdayProvided !== weekdayActual) { getParsingFlags(config).weekdayMismatch = true; config._isValid = false; return false; } } return true; } function calculateOffset(obsOffset, militaryOffset, numOffset) { if (obsOffset) { return obsOffsets[obsOffset]; } else if (militaryOffset) { // the only allowed military tz is Z return 0; } else { var hm = parseInt(numOffset, 10), m = hm % 100, h = (hm - m) / 100; return h * 60 + m; } } // date and time from ref 2822 format function configFromRFC2822(config) { var match = rfc2822.exec(preprocessRFC2822(config._i)), parsedArray; if (match) { parsedArray = extractFromRFC2822Strings( match[4], match[3], match[2], match[5], match[6], match[7] ); if (!checkWeekday(match[1], parsedArray, config)) { return; } config._a = parsedArray; config._tzm = calculateOffset(match[8], match[9], match[10]); config._d = createUTCDate.apply(null, config._a); config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); getParsingFlags(config).rfc2822 = true; } else { config._isValid = false; } } // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict function configFromString(config) { var matched = aspNetJsonRegex.exec(config._i); if (matched !== null) { config._d = new Date(+matched[1]); return; } configFromISO(config); if (config._isValid === false) { delete config._isValid; } else { return; } configFromRFC2822(config); if (config._isValid === false) { delete config._isValid; } else { return; } if (config._strict) { config._isValid = false; } else { // Final attempt, use Input Fallback hooks.createFromInputFallback(config); } } hooks.createFromInputFallback = deprecate( 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) { config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); } ); // Pick the first defined of two or three arguments. function defaults(a, b, c) { if (a != null) { return a; } if (b != null) { return b; } return c; } function currentDateArray(config) { // hooks is actually the exported moment object var nowValue = new Date(hooks.now()); if (config._useUTC) { return [ nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate(), ]; } return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; } // convert an array to a date. // the array should mirror the parameters below // note: all values past the year are optional and will default to the lowest possible value. // [year, month, day , hour, minute, second, millisecond] function configFromArray(config) { var i, date, input = [], currentDate, expectedWeekday, yearToUse; if (config._d) { return; } currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { dayOfYearFromWeekInfo(config); } //if the day of the year is set, figure out what it is if (config._dayOfYear != null) { yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); if ( config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0 ) { getParsingFlags(config)._overflowDayOfYear = true; } date = createUTCDate(yearToUse, 0, config._dayOfYear); config._a[MONTH] = date.getUTCMonth(); config._a[DATE] = date.getUTCDate(); } // Default to current date. // * if no year, month, day of month are given, default to today // * if day of month is given, default month and year // * if month is given, default only year // * if year is given, don't default anything for (i = 0; i < 3 && config._a[i] == null; ++i) { config._a[i] = input[i] = currentDate[i]; } // Zero out whatever was not defaulted, including time for (; i < 7; i++) { config._a[i] = input[i] = config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i]; } // Check for 24:00:00.000 if ( config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0 ) { config._nextDay = true; config._a[HOUR] = 0; } config._d = (config._useUTC ? createUTCDate : createDate).apply( null, input ); expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed // with parseZone. if (config._tzm != null) { config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); } if (config._nextDay) { config._a[HOUR] = 24; } // check for mismatching day of week if ( config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday ) { getParsingFlags(config).weekdayMismatch = true; } } function dayOfYearFromWeekInfo(config) { var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; w = config._w; if (w.GG != null || w.W != null || w.E != null) { dow = 1; doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on // how we interpret now (local, utc, fixed offset). So create // a now version of current config (take local/utc/offset flags, and // create now). weekYear = defaults( w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year ); week = defaults(w.W, 1); weekday = defaults(w.E, 1); if (weekday < 1 || weekday > 7) { weekdayOverflow = true; } } else { dow = config._locale._week.dow; doy = config._locale._week.doy; curWeek = weekOfYear(createLocal(), dow, doy); weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week. week = defaults(w.w, curWeek.week); if (w.d != null) { // weekday -- low day numbers are considered next week weekday = w.d; if (weekday < 0 || weekday > 6) { weekdayOverflow = true; } } else if (w.e != null) { // local weekday -- counting starts from beginning of week weekday = w.e + dow; if (w.e < 0 || w.e > 6) { weekdayOverflow = true; } } else { // default to beginning of week weekday = dow; } } if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { getParsingFlags(config)._overflowWeeks = true; } else if (weekdayOverflow != null) { getParsingFlags(config)._overflowWeekday = true; } else { temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); config._a[YEAR] = temp.year; config._dayOfYear = temp.dayOfYear; } } // constant that refers to the ISO standard hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form hooks.RFC_2822 = function () {}; // date from string and format string function configFromStringAndFormat(config) { // TODO: Move this to another part of the creation flow to prevent circular deps if (config._f === hooks.ISO_8601) { configFromISO(config); return; } if (config._f === hooks.RFC_2822) { configFromRFC2822(config); return; } config._a = []; getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC` var string = '' + config._i, i, parsedInput, tokens, token, skipped, stringLength = string.length, totalParsedInputLength = 0, era, tokenLen; tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; tokenLen = tokens.length; for (i = 0; i < tokenLen; i++) { token = tokens[i]; parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; if (parsedInput) { skipped = string.substr(0, string.indexOf(parsedInput)); if (skipped.length > 0) { getParsingFlags(config).unusedInput.push(skipped); } string = string.slice( string.indexOf(parsedInput) + parsedInput.length ); totalParsedInputLength += parsedInput.length; } // don't parse if it's not a known token if (formatTokenFunctions[token]) { if (parsedInput) { getParsingFlags(config).empty = false; } else { getParsingFlags(config).unusedTokens.push(token); } addTimeToArrayFromToken(token, parsedInput, config); } else if (config._strict && !parsedInput) { getParsingFlags(config).unusedTokens.push(token); } } // add remaining unparsed input length to the string getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; if (string.length > 0) { getParsingFlags(config).unusedInput.push(string); } // clear _12h flag if hour is <= 12 if ( config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0 ) { getParsingFlags(config).bigHour = undefined; } getParsingFlags(config).parsedDateParts = config._a.slice(0); getParsingFlags(config).meridiem = config._meridiem; // handle meridiem config._a[HOUR] = meridiemFixWrap( config._locale, config._a[HOUR], config._meridiem ); // handle era era = getParsingFlags(config).era; if (era !== null) { config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); } configFromArray(config); checkOverflow(config); } function meridiemFixWrap(locale, hour, meridiem) { var isPm; if (meridiem == null) { // nothing to do return hour; } if (locale.meridiemHour != null) { return locale.meridiemHour(hour, meridiem); } else if (locale.isPM != null) { // Fallback isPm = locale.isPM(meridiem); if (isPm && hour < 12) { hour += 12; } if (!isPm && hour === 12) { hour = 0; } return hour; } else { // this is not supposed to happen return hour; } } // date from string and array of format strings function configFromStringAndArray(config) { var tempConfig, bestMoment, scoreToBeat, i, currentScore, validFormatFound, bestFormatIsValid = false, configfLen = config._f.length; if (configfLen === 0) { getParsingFlags(config).invalidFormat = true; config._d = new Date(NaN); return; } for (i = 0; i < configfLen; i++) { currentScore = 0; validFormatFound = false; tempConfig = copyConfig({}, config); if (config._useUTC != null) { tempConfig._useUTC = config._useUTC; } tempConfig._f = config._f[i]; configFromStringAndFormat(tempConfig); if (isValid(tempConfig)) { validFormatFound = true; } // if there is any input that was not parsed add a penalty for that format currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; getParsingFlags(tempConfig).score = currentScore; if (!bestFormatIsValid) { if ( scoreToBeat == null || currentScore < scoreToBeat || validFormatFound ) { scoreToBeat = currentScore; bestMoment = tempConfig; if (validFormatFound) { bestFormatIsValid = true; } } } else { if (currentScore < scoreToBeat) { scoreToBeat = currentScore; bestMoment = tempConfig; } } } extend(config, bestMoment || tempConfig); } function configFromObject(config) { if (config._d) { return; } var i = normalizeObjectUnits(config._i), dayOrDate = i.day === undefined ? i.date : i.day; config._a = map( [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) { return obj && parseInt(obj, 10); } ); configFromArray(config); } function createFromConfig(config) { var res = new Moment(checkOverflow(prepareConfig(config))); if (res._nextDay) { // Adding is smart enough around DST res.add(1, 'd'); res._nextDay = undefined; } return res; } function prepareConfig(config) { var input = config._i, format = config._f; config._locale = config._locale || getLocale(config._l); if (input === null || (format === undefined && input === '')) { return createInvalid({ nullInput: true }); } if (typeof input === 'string') { config._i = input = config._locale.preparse(input); } if (isMoment(input)) { return new Moment(checkOverflow(input)); } else if (isDate(input)) { config._d = input; } else if (isArray(format)) { configFromStringAndArray(config); } else if (format) { configFromStringAndFormat(config); } else { configFromInput(config); } if (!isValid(config)) { config._d = null; } return config; } function configFromInput(config) { var input = config._i; if (isUndefined(input)) { config._d = new Date(hooks.now()); } else if (isDate(input)) { config._d = new Date(input.valueOf()); } else if (typeof input === 'string') { configFromString(config); } else if (isArray(input)) { config._a = map(input.slice(0), function (obj) { return parseInt(obj, 10); }); configFromArray(config); } else if (isObject(input)) { configFromObject(config); } else if (isNumber(input)) { // from milliseconds config._d = new Date(input); } else { hooks.createFromInputFallback(config); } } function createLocalOrUTC(input, format, locale, strict, isUTC) { var c = {}; if (format === true || format === false) { strict = format; format = undefined; } if (locale === true || locale === false) { strict = locale; locale = undefined; } if ( (isObject(input) && isObjectEmpty(input)) || (isArray(input) && input.length === 0) ) { input = undefined; } // object construction must be done this way. // https://github.com/moment/moment/issues/1423 c._isAMomentObject = true; c._useUTC = c._isUTC = isUTC; c._l = locale; c._i = input; c._f = format; c._strict = strict; return createFromConfig(c); } function createLocal(input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, false); } var prototypeMin = deprecate( 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () { var other = createLocal.apply(null, arguments); if (this.isValid() && other.isValid()) { return other < this ? this : other; } else { return createInvalid(); } } ), prototypeMax = deprecate( 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () { var other = createLocal.apply(null, arguments); if (this.isValid() && other.isValid()) { return other > this ? this : other; } else { return createInvalid(); } } ); // Pick a moment m from moments so that m[fn](other) is true for all // other. This relies on the function fn to be transitive. // // moments should either be an array of moment objects or an array, whose // first element is an array of moment objects. function pickBy(fn, moments) { var res, i; if (moments.length === 1 && isArray(moments[0])) { moments = moments[0]; } if (!moments.length) { return createLocal(); } res = moments[0]; for (i = 1; i < moments.length; ++i) { if (!moments[i].isValid() || moments[i][fn](res)) { res = moments[i]; } } return res; } // TODO: Use [].sort instead? function min() { var args = [].slice.call(arguments, 0); return pickBy('isBefore', args); } function max() { var args = [].slice.call(arguments, 0); return pickBy('isAfter', args); } var now = function () { return Date.now ? Date.now() : +new Date(); }; var ordering = [ 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond', ]; function isDurationValid(m) { var key, unitHasDecimal = false, i, orderLen = ordering.length; for (key in m) { if ( hasOwnProp(m, key) && !( indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])) ) ) { return false; } } for (i = 0; i < orderLen; ++i) { if (m[ordering[i]]) { if (unitHasDecimal) { return false; // only allow non-integers for smallest unit } if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { unitHasDecimal = true; } } } return true; } function isValid$1() { return this._isValid; } function createInvalid$1() { return createDuration(NaN); } function Duration(duration) { var normalizedInput = normalizeObjectUnits(duration), years = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months = normalizedInput.month || 0, weeks = normalizedInput.week || normalizedInput.isoWeek || 0, days = normalizedInput.day || 0, hours = normalizedInput.hour || 0, minutes = normalizedInput.minute || 0, seconds = normalizedInput.second || 0, milliseconds = normalizedInput.millisecond || 0; this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove this._milliseconds = +milliseconds + seconds * 1e3 + // 1000 minutes * 6e4 + // 1000 * 60 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 // Because of dateAddRemove treats 24 hours as different from a // day when working around DST, we need to store them separately this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing // which months you are are talking about, so we have to store // it separately. this._months = +months + quarters * 3 + years * 12; this._data = {}; this._locale = getLocale(); this._bubble(); } function isDuration(obj) { return obj instanceof Duration; } function absRound(number) { if (number < 0) { return Math.round(-1 * number) * -1; } else { return Math.round(number); } } // compare two arrays, return the number of differences function compareArrays(array1, array2, dontConvert) { var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i; for (i = 0; i < len; i++) { if ( (dontConvert && array1[i] !== array2[i]) || (!dontConvert && toInt(array1[i]) !== toInt(array2[i])) ) { diffs++; } } return diffs + lengthDiff; } // FORMATTING function offset(token, separator) { addFormatToken(token, 0, 0, function () { var offset = this.utcOffset(), sign = '+'; if (offset < 0) { offset = -offset; sign = '-'; } return ( sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2) ); }); } offset('Z', ':'); offset('ZZ', ''); // PARSING addRegexToken('Z', matchShortOffset); addRegexToken('ZZ', matchShortOffset); addParseToken(['Z', 'ZZ'], function (input, array, config) { config._useUTC = true; config._tzm = offsetFromString(matchShortOffset, input); }); // HELPERS // timezone chunker // '+10:00' > ['10', '00'] // '-1530' > ['-15', '30'] var chunkOffset = /([\+\-]|\d\d)/gi; function offsetFromString(matcher, string) { var matches = (string || '').match(matcher), chunk, parts, minutes; if (matches === null) { return null; } chunk = matches[matches.length - 1] || []; parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; minutes = +(parts[1] * 60) + toInt(parts[2]); return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; } // Return a moment from input, that is local/utc/zone equivalent to model. function cloneWithOffset(input, model) { var res, diff; if (model._isUTC) { res = model.clone(); diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api. res._d.setTime(res._d.valueOf() + diff); hooks.updateOffset(res, false); return res; } else { return createLocal(input).local(); } } function getDateOffset(m) { // On Firefox.24 Date#getTimezoneOffset returns a floating point. // https://github.com/moment/moment/pull/1871 return -Math.round(m._d.getTimezoneOffset()); } // HOOKS // This function will be called whenever a moment is mutated. // It is intended to keep the offset in sync with the timezone. hooks.updateOffset = function () {}; // MOMENTS // keepLocalTime = true means only change the timezone, without // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset // +0200, so we adjust the time as needed, to be valid. // // Keeping the time actually adds/subtracts (one hour) // from the actual represented time. That is why we call updateOffset // a second time. In case it wants us to change the offset again // _changeInProgress == true case, then we have to adjust, because // there is no such time in the given timezone. function getSetOffset(input, keepLocalTime, keepMinutes) { var offset = this._offset || 0, localAdjust; if (!this.isValid()) { return input != null ? this : NaN; } if (input != null) { if (typeof input === 'string') { input = offsetFromString(matchShortOffset, input); if (input === null) { return this; } } else if (Math.abs(input) < 16 && !keepMinutes) { input = input * 60; } if (!this._isUTC && keepLocalTime) { localAdjust = getDateOffset(this); } this._offset = input; this._isUTC = true; if (localAdjust != null) { this.add(localAdjust, 'm'); } if (offset !== input) { if (!keepLocalTime || this._changeInProgress) { addSubtract( this, createDuration(input - offset, 'm'), 1, false ); } else if (!this._changeInProgress) { this._changeInProgress = true; hooks.updateOffset(this, true); this._changeInProgress = null; } } return this; } else { return this._isUTC ? offset : getDateOffset(this); } } function getSetZone(input, keepLocalTime) { if (input != null) { if (typeof input !== 'string') { input = -input; } this.utcOffset(input, keepLocalTime); return this; } else { return -this.utcOffset(); } } function setOffsetToUTC(keepLocalTime) { return this.utcOffset(0, keepLocalTime); } function setOffsetToLocal(keepLocalTime) { if (this._isUTC) { this.utcOffset(0, keepLocalTime); this._isUTC = false; if (keepLocalTime) { this.subtract(getDateOffset(this), 'm'); } } return this; } function setOffsetToParsedOffset() { if (this._tzm != null) { this.utcOffset(this._tzm, false, true); } else if (typeof this._i === 'string') { var tZone = offsetFromString(matchOffset, this._i); if (tZone != null) { this.utcOffset(tZone); } else { this.utcOffset(0, true); } } return this; } function hasAlignedHourOffset(input) { if (!this.isValid()) { return false; } input = input ? createLocal(input).utcOffset() : 0; return (this.utcOffset() - input) % 60 === 0; } function isDaylightSavingTime() { return ( this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() ); } function isDaylightSavingTimeShifted() { if (!isUndefined(this._isDSTShifted)) { return this._isDSTShifted; } var c = {}, other; copyConfig(c, this); c = prepareConfig(c); if (c._a) { other = c._isUTC ? createUTC(c._a) : createLocal(c._a); this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0; } else { this._isDSTShifted = false; } return this._isDSTShifted; } function isLocal() { return this.isValid() ? !this._isUTC : false; } function isUtcOffset() { return this.isValid() ? this._isUTC : false; } function isUtc() { return this.isValid() ? this._isUTC && this._offset === 0 : false; } // ASP.NET json date format regex var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere // and further modified to allow for strings containing both week and day isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; function createDuration(input, key) { var duration = input, // matching against regexp is expensive, do it on demand match = null, sign, ret, diffRes; if (isDuration(input)) { duration = { ms: input._milliseconds, d: input._days, M: input._months, }; } else if (isNumber(input) || !isNaN(+input)) { duration = {}; if (key) { duration[key] = +input; } else { duration.milliseconds = +input; } } else if ((match = aspNetRegex.exec(input))) { sign = match[1] === '-' ? -1 : 1; duration = { y: 0, d: toInt(match[DATE]) * sign, h: toInt(match[HOUR]) * sign, m: toInt(match[MINUTE]) * sign, s: toInt(match[SECOND]) * sign, ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match }; } else if ((match = isoRegex.exec(input))) { sign = match[1] === '-' ? -1 : 1; duration = { y: parseIso(match[2], sign), M: parseIso(match[3], sign), w: parseIso(match[4], sign), d: parseIso(match[5], sign), h: parseIso(match[6], sign), m: parseIso(match[7], sign), s: parseIso(match[8], sign), }; } else if (duration == null) { // checks for null or undefined duration = {}; } else if ( typeof duration === 'object' && ('from' in duration || 'to' in duration) ) { diffRes = momentsDifference( createLocal(duration.from), createLocal(duration.to) ); duration = {}; duration.ms = diffRes.milliseconds; duration.M = diffRes.months; } ret = new Duration(duration); if (isDuration(input) && hasOwnProp(input, '_locale')) { ret._locale = input._locale; } if (isDuration(input) && hasOwnProp(input, '_isValid')) { ret._isValid = input._isValid; } return ret; } createDuration.fn = Duration.prototype; createDuration.invalid = createInvalid$1; function parseIso(inp, sign) { // We'd normally use ~~inp for this, but unfortunately it also // converts floats to ints. // inp may be undefined, so careful calling replace on it. var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it return (isNaN(res) ? 0 : res) * sign; } function positiveMomentsDifference(base, other) { var res = {}; res.months = other.month() - base.month() + (other.year() - base.year()) * 12; if (base.clone().add(res.months, 'M').isAfter(other)) { --res.months; } res.milliseconds = +other - +base.clone().add(res.months, 'M'); return res; } function momentsDifference(base, other) { var res; if (!(base.isValid() && other.isValid())) { return { milliseconds: 0, months: 0 }; } other = cloneWithOffset(other, base); if (base.isBefore(other)) { res = positiveMomentsDifference(base, other); } else { res = positiveMomentsDifference(other, base); res.milliseconds = -res.milliseconds; res.months = -res.months; } return res; } // TODO: remove 'name' arg after deprecation is removed function createAdder(direction, name) { return function (val, period) { var dur, tmp; //invert the arguments, but complain about it if (period !== null && !isNaN(+period)) { deprecateSimple( name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' ); tmp = val; val = period; period = tmp; } dur = createDuration(val, period); addSubtract(this, dur, direction); return this; }; } function addSubtract(mom, duration, isAdding, updateOffset) { var milliseconds = duration._milliseconds, days = absRound(duration._days), months = absRound(duration._months); if (!mom.isValid()) { // No op return; } updateOffset = updateOffset == null ? true : updateOffset; if (months) { setMonth(mom, get(mom, 'Month') + months * isAdding); } if (days) { set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); } if (milliseconds) { mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); } if (updateOffset) { hooks.updateOffset(mom, days || months); } } var add = createAdder(1, 'add'), subtract = createAdder(-1, 'subtract'); function isString(input) { return typeof input === 'string' || input instanceof String; } // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined function isMomentInput(input) { return ( isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined ); } function isMomentInputObject(input) { var objectTest = isObject(input) && !isObjectEmpty(input), propertyTest = false, properties = [ 'years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms', ], i, property, propertyLen = properties.length; for (i = 0; i < propertyLen; i += 1) { property = properties[i]; propertyTest = propertyTest || hasOwnProp(input, property); } return objectTest && propertyTest; } function isNumberOrStringArray(input) { var arrayTest = isArray(input), dataTypeTest = false; if (arrayTest) { dataTypeTest = input.filter(function (item) { return !isNumber(item) && isString(input); }).length === 0; } return arrayTest && dataTypeTest; } function isCalendarSpec(input) { var objectTest = isObject(input) && !isObjectEmpty(input), propertyTest = false, properties = [ 'sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse', ], i, property; for (i = 0; i < properties.length; i += 1) { property = properties[i]; propertyTest = propertyTest || hasOwnProp(input, property); } return objectTest && propertyTest; } function getCalendarFormat(myMoment, now) { var diff = myMoment.diff(now, 'days', true); return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse'; } function calendar$1(time, formats) { // Support for single parameter, formats only overload to the calendar function if (arguments.length === 1) { if (!arguments[0]) { time = undefined; formats = undefined; } else if (isMomentInput(arguments[0])) { time = arguments[0]; formats = undefined; } else if (isCalendarSpec(arguments[0])) { formats = arguments[0]; time = undefined; } } // We want to compare the start of today, vs this. // Getting start-of-today depends on whether we're local/utc/offset or not. var now = time || createLocal(), sod = cloneWithOffset(now, this).startOf('day'), format = hooks.calendarFormat(this, sod) || 'sameElse', output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); return this.format( output || this.localeData().calendar(format, this, createLocal(now)) ); } function clone() { return new Moment(this); } function isAfter(input, units) { var localInput = isMoment(input) ? input : createLocal(input); if (!(this.isValid() && localInput.isValid())) { return false; } units = normalizeUnits(units) || 'millisecond'; if (units === 'millisecond') { return this.valueOf() > localInput.valueOf(); } else { return localInput.valueOf() < this.clone().startOf(units).valueOf(); } } function isBefore(input, units) { var localInput = isMoment(input) ? input : createLocal(input); if (!(this.isValid() && localInput.isValid())) { return false; } units = normalizeUnits(units) || 'millisecond'; if (units === 'millisecond') { return this.valueOf() < localInput.valueOf(); } else { return this.clone().endOf(units).valueOf() < localInput.valueOf(); } } function isBetween(from, to, units, inclusivity) { var localFrom = isMoment(from) ? from : createLocal(from), localTo = isMoment(to) ? to : createLocal(to); if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { return false; } inclusivity = inclusivity || '()'; return ( (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)) ); } function isSame(input, units) { var localInput = isMoment(input) ? input : createLocal(input), inputMs; if (!(this.isValid() && localInput.isValid())) { return false; } units = normalizeUnits(units) || 'millisecond'; if (units === 'millisecond') { return this.valueOf() === localInput.valueOf(); } else { inputMs = localInput.valueOf(); return ( this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf() ); } } function isSameOrAfter(input, units) { return this.isSame(input, units) || this.isAfter(input, units); } function isSameOrBefore(input, units) { return this.isSame(input, units) || this.isBefore(input, units); } function diff(input, units, asFloat) { var that, zoneDelta, output; if (!this.isValid()) { return NaN; } that = cloneWithOffset(input, this); if (!that.isValid()) { return NaN; } zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; units = normalizeUnits(units); switch (units) { case 'year': output = monthDiff(this, that) / 12; break; case 'month': output = monthDiff(this, that); break; case 'quarter': output = monthDiff(this, that) / 3; break; case 'second': output = (this - that) / 1e3; break; // 1000 case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst default: output = this - that; } return asFloat ? output : absFloor(output); } function monthDiff(a, b) { if (a.date() < b.date()) { // end-of-month calculations work correct when the start month has more // days than the end month. return -monthDiff(b, a); } // difference in months var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), // b is in (anchor - 1 month, anchor + 1 month) anchor = a.clone().add(wholeMonthDiff, 'months'), anchor2, adjust; if (b - anchor < 0) { anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month adjust = (b - anchor) / (anchor - anchor2); } else { anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month adjust = (b - anchor) / (anchor2 - anchor); } //check for negative zero, return zero if negative zero return -(wholeMonthDiff + adjust) || 0; } hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; function toString() { return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); } function toISOString(keepOffset) { if (!this.isValid()) { return null; } var utc = keepOffset !== true, m = utc ? this.clone().utc() : this; if (m.year() < 0 || m.year() > 9999) { return formatMoment( m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' ); } if (isFunction(Date.prototype.toISOString)) { // native implementation is ~50x faster, use it when we can if (utc) { return this.toDate().toISOString(); } else { return new Date(this.valueOf() + this.utcOffset() * 60 * 1000) .toISOString() .replace('Z', formatMoment(m, 'Z')); } } return formatMoment( m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' ); } /** * Return a human readable representation of a moment that can * also be evaluated to get a new moment which is the same * * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects */ function inspect() { if (!this.isValid()) { return 'moment.invalid(/* ' + this._i + ' */)'; } var func = 'moment', zone = '', prefix, year, datetime, suffix; if (!this.isLocal()) { func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; zone = 'Z'; } prefix = '[' + func + '("]'; year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY'; datetime = '-MM-DD[T]HH:mm:ss.SSS'; suffix = zone + '[")]'; return this.format(prefix + year + datetime + suffix); } function format(inputString) { if (!inputString) { inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; } var output = formatMoment(this, inputString); return this.localeData().postformat(output); } function from(time, withoutSuffix) { if ( this.isValid() && ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) ) { return createDuration({ to: this, from: time }) .locale(this.locale()) .humanize(!withoutSuffix); } else { return this.localeData().invalidDate(); } } function fromNow(withoutSuffix) { return this.from(createLocal(), withoutSuffix); } function to(time, withoutSuffix) { if ( this.isValid() && ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) ) { return createDuration({ from: this, to: time }) .locale(this.locale()) .humanize(!withoutSuffix); } else { return this.localeData().invalidDate(); } } function toNow(withoutSuffix) { return this.to(createLocal(), withoutSuffix); } // If passed a locale key, it will set the locale for this // instance. Otherwise, it will return the locale configuration // variables for this instance. function locale(key) { var newLocaleData; if (key === undefined) { return this._locale._abbr; } else { newLocaleData = getLocale(key); if (newLocaleData != null) { this._locale = newLocaleData; } return this; } } var lang = deprecate( 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) { if (key === undefined) { return this.localeData(); } else { return this.locale(key); } } ); function localeData() { return this._locale; } var MS_PER_SECOND = 1000, MS_PER_MINUTE = 60 * MS_PER_SECOND, MS_PER_HOUR = 60 * MS_PER_MINUTE, MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970): function mod$1(dividend, divisor) { return ((dividend % divisor) + divisor) % divisor; } function localStartOfDate(y, m, d) { // the date constructor remaps years 0-99 to 1900-1999 if (y < 100 && y >= 0) { // preserve leap years using a full 400 year cycle, then reset return new Date(y + 400, m, d) - MS_PER_400_YEARS; } else { return new Date(y, m, d).valueOf(); } } function utcStartOfDate(y, m, d) { // Date.UTC remaps years 0-99 to 1900-1999 if (y < 100 && y >= 0) { // preserve leap years using a full 400 year cycle, then reset return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; } else { return Date.UTC(y, m, d); } } function startOf(units) { var time, startOfDate; units = normalizeUnits(units); if (units === undefined || units === 'millisecond' || !this.isValid()) { return this; } startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; switch (units) { case 'year': time = startOfDate(this.year(), 0, 1); break; case 'quarter': time = startOfDate( this.year(), this.month() - (this.month() % 3), 1 ); break; case 'month': time = startOfDate(this.year(), this.month(), 1); break; case 'week': time = startOfDate( this.year(), this.month(), this.date() - this.weekday() ); break; case 'isoWeek': time = startOfDate( this.year(), this.month(), this.date() - (this.isoWeekday() - 1) ); break; case 'day': case 'date': time = startOfDate(this.year(), this.month(), this.date()); break; case 'hour': time = this._d.valueOf(); time -= mod$1( time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR ); break; case 'minute': time = this._d.valueOf(); time -= mod$1(time, MS_PER_MINUTE); break; case 'second': time = this._d.valueOf(); time -= mod$1(time, MS_PER_SECOND); break; } this._d.setTime(time); hooks.updateOffset(this, true); return this; } function endOf(units) { var time, startOfDate; units = normalizeUnits(units); if (units === undefined || units === 'millisecond' || !this.isValid()) { return this; } startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; switch (units) { case 'year': time = startOfDate(this.year() + 1, 0, 1) - 1; break; case 'quarter': time = startOfDate( this.year(), this.month() - (this.month() % 3) + 3, 1 ) - 1; break; case 'month': time = startOfDate(this.year(), this.month() + 1, 1) - 1; break; case 'week': time = startOfDate( this.year(), this.month(), this.date() - this.weekday() + 7 ) - 1; break; case 'isoWeek': time = startOfDate( this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7 ) - 1; break; case 'day': case 'date': time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; break; case 'hour': time = this._d.valueOf(); time += MS_PER_HOUR - mod$1( time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR ) - 1; break; case 'minute': time = this._d.valueOf(); time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; break; case 'second': time = this._d.valueOf(); time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; break; } this._d.setTime(time); hooks.updateOffset(this, true); return this; } function valueOf() { return this._d.valueOf() - (this._offset || 0) * 60000; } function unix() { return Math.floor(this.valueOf() / 1000); } function toDate() { return new Date(this.valueOf()); } function toArray() { var m = this; return [ m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond(), ]; } function toObject() { var m = this; return { years: m.year(), months: m.month(), date: m.date(), hours: m.hours(), minutes: m.minutes(), seconds: m.seconds(), milliseconds: m.milliseconds(), }; } function toJSON() { // new Date(NaN).toJSON() === null return this.isValid() ? this.toISOString() : null; } function isValid$2() { return isValid(this); } function parsingFlags() { return extend({}, getParsingFlags(this)); } function invalidAt() { return getParsingFlags(this).overflow; } function creationData() { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict, }; } addFormatToken('N', 0, 0, 'eraAbbr'); addFormatToken('NN', 0, 0, 'eraAbbr'); addFormatToken('NNN', 0, 0, 'eraAbbr'); addFormatToken('NNNN', 0, 0, 'eraName'); addFormatToken('NNNNN', 0, 0, 'eraNarrow'); addFormatToken('y', ['y', 1], 'yo', 'eraYear'); addFormatToken('y', ['yy', 2], 0, 'eraYear'); addFormatToken('y', ['yyy', 3], 0, 'eraYear'); addFormatToken('y', ['yyyy', 4], 0, 'eraYear'); addRegexToken('N', matchEraAbbr); addRegexToken('NN', matchEraAbbr); addRegexToken('NNN', matchEraAbbr); addRegexToken('NNNN', matchEraName); addRegexToken('NNNNN', matchEraNarrow); addParseToken( ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) { var era = config._locale.erasParse(input, token, config._strict); if (era) { getParsingFlags(config).era = era; } else { getParsingFlags(config).invalidEra = input; } } ); addRegexToken('y', matchUnsigned); addRegexToken('yy', matchUnsigned); addRegexToken('yyy', matchUnsigned); addRegexToken('yyyy', matchUnsigned); addRegexToken('yo', matchEraYearOrdinal); addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR); addParseToken(['yo'], function (input, array, config, token) { var match; if (config._locale._eraYearOrdinalRegex) { match = input.match(config._locale._eraYearOrdinalRegex); } if (config._locale.eraYearOrdinalParse) { array[YEAR] = config._locale.eraYearOrdinalParse(input, match); } else { array[YEAR] = parseInt(input, 10); } }); function localeEras(m, format) { var i, l, date, eras = this._eras || getLocale('en')._eras; for (i = 0, l = eras.length; i < l; ++i) { switch (typeof eras[i].since) { case 'string': // truncate time date = hooks(eras[i].since).startOf('day'); eras[i].since = date.valueOf(); break; } switch (typeof eras[i].until) { case 'undefined': eras[i].until = +Infinity; break; case 'string': // truncate time date = hooks(eras[i].until).startOf('day').valueOf(); eras[i].until = date.valueOf(); break; } } return eras; } function localeErasParse(eraName, format, strict) { var i, l, eras = this.eras(), name, abbr, narrow; eraName = eraName.toUpperCase(); for (i = 0, l = eras.length; i < l; ++i) { name = eras[i].name.toUpperCase(); abbr = eras[i].abbr.toUpperCase(); narrow = eras[i].narrow.toUpperCase(); if (strict) { switch (format) { case 'N': case 'NN': case 'NNN': if (abbr === eraName) { return eras[i]; } break; case 'NNNN': if (name === eraName) { return eras[i]; } break; case 'NNNNN': if (narrow === eraName) { return eras[i]; } break; } } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { return eras[i]; } } } function localeErasConvertYear(era, year) { var dir = era.since <= era.until ? +1 : -1; if (year === undefined) { return hooks(era.since).year(); } else { return hooks(era.since).year() + (year - era.offset) * dir; } } function getEraName() { var i, l, val, eras = this.localeData().eras(); for (i = 0, l = eras.length; i < l; ++i) { // truncate time val = this.clone().startOf('day').valueOf(); if (eras[i].since <= val && val <= eras[i].until) { return eras[i].name; } if (eras[i].until <= val && val <= eras[i].since) { return eras[i].name; } } return ''; } function getEraNarrow() { var i, l, val, eras = this.localeData().eras(); for (i = 0, l = eras.length; i < l; ++i) { // truncate time val = this.clone().startOf('day').valueOf(); if (eras[i].since <= val && val <= eras[i].until) { return eras[i].narrow; } if (eras[i].until <= val && val <= eras[i].since) { return eras[i].narrow; } } return ''; } function getEraAbbr() { var i, l, val, eras = this.localeData().eras(); for (i = 0, l = eras.length; i < l; ++i) { // truncate time val = this.clone().startOf('day').valueOf(); if (eras[i].since <= val && val <= eras[i].until) { return eras[i].abbr; } if (eras[i].until <= val && val <= eras[i].since) { return eras[i].abbr; } } return ''; } function getEraYear() { var i, l, dir, val, eras = this.localeData().eras(); for (i = 0, l = eras.length; i < l; ++i) { dir = eras[i].since <= eras[i].until ? +1 : -1; // truncate time val = this.clone().startOf('day').valueOf(); if ( (eras[i].since <= val && val <= eras[i].until) || (eras[i].until <= val && val <= eras[i].since) ) { return ( (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset ); } } return this.year(); } function erasNameRegex(isStrict) { if (!hasOwnProp(this, '_erasNameRegex')) { computeErasParse.call(this); } return isStrict ? this._erasNameRegex : this._erasRegex; } function erasAbbrRegex(isStrict) { if (!hasOwnProp(this, '_erasAbbrRegex')) { computeErasParse.call(this); } return isStrict ? this._erasAbbrRegex : this._erasRegex; } function erasNarrowRegex(isStrict) { if (!hasOwnProp(this, '_erasNarrowRegex')) { computeErasParse.call(this); } return isStrict ? this._erasNarrowRegex : this._erasRegex; } function matchEraAbbr(isStrict, locale) { return locale.erasAbbrRegex(isStrict); } function matchEraName(isStrict, locale) { return locale.erasNameRegex(isStrict); } function matchEraNarrow(isStrict, locale) { return locale.erasNarrowRegex(isStrict); } function matchEraYearOrdinal(isStrict, locale) { return locale._eraYearOrdinalRegex || matchUnsigned; } function computeErasParse() { var abbrPieces = [], namePieces = [], narrowPieces = [], mixedPieces = [], i, l, erasName, erasAbbr, erasNarrow, eras = this.eras(); for (i = 0, l = eras.length; i < l; ++i) { erasName = regexEscape(eras[i].name); erasAbbr = regexEscape(eras[i].abbr); erasNarrow = regexEscape(eras[i].narrow); namePieces.push(erasName); abbrPieces.push(erasAbbr); narrowPieces.push(erasNarrow); mixedPieces.push(erasName); mixedPieces.push(erasAbbr); mixedPieces.push(erasNarrow); } this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i'); this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i'); this._erasNarrowRegex = new RegExp( '^(' + narrowPieces.join('|') + ')', 'i' ); } // FORMATTING addFormatToken(0, ['gg', 2], 0, function () { return this.weekYear() % 100; }); addFormatToken(0, ['GG', 2], 0, function () { return this.isoWeekYear() % 100; }); function addWeekYearFormatToken(token, getter) { addFormatToken(0, [token, token.length], 0, getter); } addWeekYearFormatToken('gggg', 'weekYear'); addWeekYearFormatToken('ggggg', 'weekYear'); addWeekYearFormatToken('GGGG', 'isoWeekYear'); addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES // PARSING addRegexToken('G', matchSigned); addRegexToken('g', matchSigned); addRegexToken('GG', match1to2, match2); addRegexToken('gg', match1to2, match2); addRegexToken('GGGG', match1to4, match4); addRegexToken('gggg', match1to4, match4); addRegexToken('GGGGG', match1to6, match6); addRegexToken('ggggg', match1to6, match6); addWeekParseToken( ['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { week[token.substr(0, 2)] = toInt(input); } ); addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { week[token] = hooks.parseTwoDigitYear(input); }); // MOMENTS function getSetWeekYear(input) { return getSetWeekYearHelper.call( this, input, this.week(), this.weekday() + this.localeData()._week.dow, this.localeData()._week.dow, this.localeData()._week.doy ); } function getSetISOWeekYear(input) { return getSetWeekYearHelper.call( this, input, this.isoWeek(), this.isoWeekday(), 1, 4 ); } function getISOWeeksInYear() { return weeksInYear(this.year(), 1, 4); } function getISOWeeksInISOWeekYear() { return weeksInYear(this.isoWeekYear(), 1, 4); } function getWeeksInYear() { var weekInfo = this.localeData()._week; return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); } function getWeeksInWeekYear() { var weekInfo = this.localeData()._week; return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); } function getSetWeekYearHelper(input, week, weekday, dow, doy) { var weeksTarget; if (input == null) { return weekOfYear(this, dow, doy).year; } else { weeksTarget = weeksInYear(input, dow, doy); if (week > weeksTarget) { week = weeksTarget; } return setWeekAll.call(this, input, week, weekday, dow, doy); } } function setWeekAll(weekYear, week, weekday, dow, doy) { var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); this.year(date.getUTCFullYear()); this.month(date.getUTCMonth()); this.date(date.getUTCDate()); return this; } // FORMATTING addFormatToken('Q', 0, 'Qo', 'quarter'); // PARSING addRegexToken('Q', match1); addParseToken('Q', function (input, array) { array[MONTH] = (toInt(input) - 1) * 3; }); // MOMENTS function getSetQuarter(input) { return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + (this.month() % 3)); } // FORMATTING addFormatToken('D', ['DD', 2], 'Do', 'date'); // PARSING addRegexToken('D', match1to2, match1to2NoLeadingZero); addRegexToken('DD', match1to2, match2); addRegexToken('Do', function (isStrict, locale) { // TODO: Remove "ordinalParse" fallback in next major release. return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient; }); addParseToken(['D', 'DD'], DATE); addParseToken('Do', function (input, array) { array[DATE] = toInt(input.match(match1to2)[0]); }); // MOMENTS var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // PARSING addRegexToken('DDD', match1to3); addRegexToken('DDDD', match3); addParseToken(['DDD', 'DDDD'], function (input, array, config) { config._dayOfYear = toInt(input); }); // HELPERS // MOMENTS function getSetDayOfYear(input) { var dayOfYear = Math.round( (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5 ) + 1; return input == null ? dayOfYear : this.add(input - dayOfYear, 'd'); } // FORMATTING addFormatToken('m', ['mm', 2], 0, 'minute'); // PARSING addRegexToken('m', match1to2, match1to2HasZero); addRegexToken('mm', match1to2, match2); addParseToken(['m', 'mm'], MINUTE); // MOMENTS var getSetMinute = makeGetSet('Minutes', false); // FORMATTING addFormatToken('s', ['ss', 2], 0, 'second'); // PARSING addRegexToken('s', match1to2, match1to2HasZero); addRegexToken('ss', match1to2, match2); addParseToken(['s', 'ss'], SECOND); // MOMENTS var getSetSecond = makeGetSet('Seconds', false); // FORMATTING addFormatToken('S', 0, 0, function () { return ~~(this.millisecond() / 100); }); addFormatToken(0, ['SS', 2], 0, function () { return ~~(this.millisecond() / 10); }); addFormatToken(0, ['SSS', 3], 0, 'millisecond'); addFormatToken(0, ['SSSS', 4], 0, function () { return this.millisecond() * 10; }); addFormatToken(0, ['SSSSS', 5], 0, function () { return this.millisecond() * 100; }); addFormatToken(0, ['SSSSSS', 6], 0, function () { return this.millisecond() * 1000; }); addFormatToken(0, ['SSSSSSS', 7], 0, function () { return this.millisecond() * 10000; }); addFormatToken(0, ['SSSSSSSS', 8], 0, function () { return this.millisecond() * 100000; }); addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { return this.millisecond() * 1000000; }); // PARSING addRegexToken('S', match1to3, match1); addRegexToken('SS', match1to3, match2); addRegexToken('SSS', match1to3, match3); var token, getSetMillisecond; for (token = 'SSSS'; token.length <= 9; token += 'S') { addRegexToken(token, matchUnsigned); } function parseMs(input, array) { array[MILLISECOND] = toInt(('0.' + input) * 1000); } for (token = 'S'; token.length <= 9; token += 'S') { addParseToken(token, parseMs); } getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING addFormatToken('z', 0, 0, 'zoneAbbr'); addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS function getZoneAbbr() { return this._isUTC ? 'UTC' : ''; } function getZoneName() { return this._isUTC ? 'Coordinated Universal Time' : ''; } var proto = Moment.prototype; proto.add = add; proto.calendar = calendar$1; proto.clone = clone; proto.diff = diff; proto.endOf = endOf; proto.format = format; proto.from = from; proto.fromNow = fromNow; proto.to = to; proto.toNow = toNow; proto.get = stringGet; proto.invalidAt = invalidAt; proto.isAfter = isAfter; proto.isBefore = isBefore; proto.isBetween = isBetween; proto.isSame = isSame; proto.isSameOrAfter = isSameOrAfter; proto.isSameOrBefore = isSameOrBefore; proto.isValid = isValid$2; proto.lang = lang; proto.locale = locale; proto.localeData = localeData; proto.max = prototypeMax; proto.min = prototypeMin; proto.parsingFlags = parsingFlags; proto.set = stringSet; proto.startOf = startOf; proto.subtract = subtract; proto.toArray = toArray; proto.toObject = toObject; proto.toDate = toDate; proto.toISOString = toISOString; proto.inspect = inspect; if (typeof Symbol !== 'undefined' && Symbol.for != null) { proto[Symbol.for('nodejs.util.inspect.custom')] = function () { return 'Moment<' + this.format() + '>'; }; } proto.toJSON = toJSON; proto.toString = toString; proto.unix = unix; proto.valueOf = valueOf; proto.creationData = creationData; proto.eraName = getEraName; proto.eraNarrow = getEraNarrow; proto.eraAbbr = getEraAbbr; proto.eraYear = getEraYear; proto.year = getSetYear; proto.isLeapYear = getIsLeapYear; proto.weekYear = getSetWeekYear; proto.isoWeekYear = getSetISOWeekYear; proto.quarter = proto.quarters = getSetQuarter; proto.month = getSetMonth; proto.daysInMonth = getDaysInMonth; proto.week = proto.weeks = getSetWeek; proto.isoWeek = proto.isoWeeks = getSetISOWeek; proto.weeksInYear = getWeeksInYear; proto.weeksInWeekYear = getWeeksInWeekYear; proto.isoWeeksInYear = getISOWeeksInYear; proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; proto.date = getSetDayOfMonth; proto.day = proto.days = getSetDayOfWeek; proto.weekday = getSetLocaleDayOfWeek; proto.isoWeekday = getSetISODayOfWeek; proto.dayOfYear = getSetDayOfYear; proto.hour = proto.hours = getSetHour; proto.minute = proto.minutes = getSetMinute; proto.second = proto.seconds = getSetSecond; proto.millisecond = proto.milliseconds = getSetMillisecond; proto.utcOffset = getSetOffset; proto.utc = setOffsetToUTC; proto.local = setOffsetToLocal; proto.parseZone = setOffsetToParsedOffset; proto.hasAlignedHourOffset = hasAlignedHourOffset; proto.isDST = isDaylightSavingTime; proto.isLocal = isLocal; proto.isUtcOffset = isUtcOffset; proto.isUtc = isUtc; proto.isUTC = isUtc; proto.zoneAbbr = getZoneAbbr; proto.zoneName = getZoneName; proto.dates = deprecate( 'dates accessor is deprecated. Use date instead.', getSetDayOfMonth ); proto.months = deprecate( 'months accessor is deprecated. Use month instead', getSetMonth ); proto.years = deprecate( 'years accessor is deprecated. Use year instead', getSetYear ); proto.zone = deprecate( 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone ); proto.isDSTShifted = deprecate( 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted ); function createUnix(input) { return createLocal(input * 1000); } function createInZone() { return createLocal.apply(null, arguments).parseZone(); } function preParsePostFormat(string) { return string; } var proto$1 = Locale.prototype; proto$1.calendar = calendar; proto$1.longDateFormat = longDateFormat; proto$1.invalidDate = invalidDate; proto$1.ordinal = ordinal; proto$1.preparse = preParsePostFormat; proto$1.postformat = preParsePostFormat; proto$1.relativeTime = relativeTime; proto$1.pastFuture = pastFuture; proto$1.set = set; proto$1.eras = localeEras; proto$1.erasParse = localeErasParse; proto$1.erasConvertYear = localeErasConvertYear; proto$1.erasAbbrRegex = erasAbbrRegex; proto$1.erasNameRegex = erasNameRegex; proto$1.erasNarrowRegex = erasNarrowRegex; proto$1.months = localeMonths; proto$1.monthsShort = localeMonthsShort; proto$1.monthsParse = localeMonthsParse; proto$1.monthsRegex = monthsRegex; proto$1.monthsShortRegex = monthsShortRegex; proto$1.week = localeWeek; proto$1.firstDayOfYear = localeFirstDayOfYear; proto$1.firstDayOfWeek = localeFirstDayOfWeek; proto$1.weekdays = localeWeekdays; proto$1.weekdaysMin = localeWeekdaysMin; proto$1.weekdaysShort = localeWeekdaysShort; proto$1.weekdaysParse = localeWeekdaysParse; proto$1.weekdaysRegex = weekdaysRegex; proto$1.weekdaysShortRegex = weekdaysShortRegex; proto$1.weekdaysMinRegex = weekdaysMinRegex; proto$1.isPM = localeIsPM; proto$1.meridiem = localeMeridiem; function get$1(format, index, field, setter) { var locale = getLocale(), utc = createUTC().set(setter, index); return locale[field](utc, format); } function listMonthsImpl(format, index, field) { if (isNumber(format)) { index = format; format = undefined; } format = format || ''; if (index != null) { return get$1(format, index, field, 'month'); } var i, out = []; for (i = 0; i < 12; i++) { out[i] = get$1(format, i, field, 'month'); } return out; } // () // (5) // (fmt, 5) // (fmt) // (true) // (true, 5) // (true, fmt, 5) // (true, fmt) function listWeekdaysImpl(localeSorted, format, index, field) { if (typeof localeSorted === 'boolean') { if (isNumber(format)) { index = format; format = undefined; } format = format || ''; } else { format = localeSorted; index = format; localeSorted = false; if (isNumber(format)) { index = format; format = undefined; } format = format || ''; } var locale = getLocale(), shift = localeSorted ? locale._week.dow : 0, i, out = []; if (index != null) { return get$1(format, (index + shift) % 7, field, 'day'); } for (i = 0; i < 7; i++) { out[i] = get$1(format, (i + shift) % 7, field, 'day'); } return out; } function listMonths(format, index) { return listMonthsImpl(format, index, 'months'); } function listMonthsShort(format, index) { return listMonthsImpl(format, index, 'monthsShort'); } function listWeekdays(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); } function listWeekdaysShort(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); } function listWeekdaysMin(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); } getSetGlobalLocale('en', { eras: [ { since: '0001-01-01', until: +Infinity, offset: 1, name: 'Anno Domini', narrow: 'AD', abbr: 'AD', }, { since: '0000-12-31', until: -Infinity, offset: 1, name: 'Before Christ', narrow: 'BC', abbr: 'BC', }, ], dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function (number) { var b = number % 10, output = toInt((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, }); // Side effect imports hooks.lang = deprecate( 'moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale ); hooks.langData = deprecate( 'moment.langData is deprecated. Use moment.localeData instead.', getLocale ); var mathAbs = Math.abs; function abs() { var data = this._data; this._milliseconds = mathAbs(this._milliseconds); this._days = mathAbs(this._days); this._months = mathAbs(this._months); data.milliseconds = mathAbs(data.milliseconds); data.seconds = mathAbs(data.seconds); data.minutes = mathAbs(data.minutes); data.hours = mathAbs(data.hours); data.months = mathAbs(data.months); data.years = mathAbs(data.years); return this; } function addSubtract$1(duration, input, value, direction) { var other = createDuration(input, value); duration._milliseconds += direction * other._milliseconds; duration._days += direction * other._days; duration._months += direction * other._months; return duration._bubble(); } // supports only 2.0-style add(1, 's') or add(duration) function add$1(input, value) { return addSubtract$1(this, input, value, 1); } // supports only 2.0-style subtract(1, 's') or subtract(duration) function subtract$1(input, value) { return addSubtract$1(this, input, value, -1); } function absCeil(number) { if (number < 0) { return Math.floor(number); } else { return Math.ceil(number); } } function bubble() { var milliseconds = this._milliseconds, days = this._days, months = this._months, data = this._data, seconds, minutes, hours, years, monthsFromDays; // if we have a mix of positive and negative values, bubble down first // check: https://github.com/moment/moment/issues/2166 if ( !( (milliseconds >= 0 && days >= 0 && months >= 0) || (milliseconds <= 0 && days <= 0 && months <= 0) ) ) { milliseconds += absCeil(monthsToDays(months) + days) * 864e5; days = 0; months = 0; } // The following code bubbles up values, see the tests for // examples of what that means. data.milliseconds = milliseconds % 1000; seconds = absFloor(milliseconds / 1000); data.seconds = seconds % 60; minutes = absFloor(seconds / 60); data.minutes = minutes % 60; hours = absFloor(minutes / 60); data.hours = hours % 24; days += absFloor(hours / 24); // convert days to months monthsFromDays = absFloor(daysToMonths(days)); months += monthsFromDays; days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year years = absFloor(months / 12); months %= 12; data.days = days; data.months = months; data.years = years; return this; } function daysToMonths(days) { // 400 years have 146097 days (taking into account leap year rules) // 400 years have 12 months === 4800 return (days * 4800) / 146097; } function monthsToDays(months) { // the reverse of daysToMonths return (months * 146097) / 4800; } function as(units) { if (!this.isValid()) { return NaN; } var days, months, milliseconds = this._milliseconds; units = normalizeUnits(units); if (units === 'month' || units === 'quarter' || units === 'year') { days = this._days + milliseconds / 864e5; months = this._months + daysToMonths(days); switch (units) { case 'month': return months; case 'quarter': return months / 3; case 'year': return months / 12; } } else { // handle milliseconds separately because of floating point math errors (issue #1867) days = this._days + Math.round(monthsToDays(this._months)); switch (units) { case 'week': return days / 7 + milliseconds / 6048e5; case 'day': return days + milliseconds / 864e5; case 'hour': return days * 24 + milliseconds / 36e5; case 'minute': return days * 1440 + milliseconds / 6e4; case 'second': return days * 86400 + milliseconds / 1000; // Math.floor prevents floating point math errors here case 'millisecond': return Math.floor(days * 864e5) + milliseconds; default: throw new Error('Unknown unit ' + units); } } } function makeAs(alias) { return function () { return this.as(alias); }; } var asMilliseconds = makeAs('ms'), asSeconds = makeAs('s'), asMinutes = makeAs('m'), asHours = makeAs('h'), asDays = makeAs('d'), asWeeks = makeAs('w'), asMonths = makeAs('M'), asQuarters = makeAs('Q'), asYears = makeAs('y'), valueOf$1 = asMilliseconds; function clone$1() { return createDuration(this); } function get$2(units) { units = normalizeUnits(units); return this.isValid() ? this[units + 's']() : NaN; } function makeGetter(name) { return function () { return this.isValid() ? this._data[name] : NaN; }; } var milliseconds = makeGetter('milliseconds'), seconds = makeGetter('seconds'), minutes = makeGetter('minutes'), hours = makeGetter('hours'), days = makeGetter('days'), months = makeGetter('months'), years = makeGetter('years'); function weeks() { return absFloor(this.days() / 7); } var round = Math.round, thresholds = { ss: 44, // a few seconds to seconds s: 45, // seconds to minute m: 45, // minutes to hour h: 22, // hours to day d: 26, // days to month/week w: null, // weeks to month M: 11, // months to year }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { var duration = createDuration(posNegDuration).abs(), seconds = round(duration.as('s')), minutes = round(duration.as('m')), hours = round(duration.as('h')), days = round(duration.as('d')), months = round(duration.as('M')), weeks = round(duration.as('w')), years = round(duration.as('y')), a = (seconds <= thresholds.ss && ['s', seconds]) || (seconds < thresholds.s && ['ss', seconds]) || (minutes <= 1 && ['m']) || (minutes < thresholds.m && ['mm', minutes]) || (hours <= 1 && ['h']) || (hours < thresholds.h && ['hh', hours]) || (days <= 1 && ['d']) || (days < thresholds.d && ['dd', days]); if (thresholds.w != null) { a = a || (weeks <= 1 && ['w']) || (weeks < thresholds.w && ['ww', weeks]); } a = a || (months <= 1 && ['M']) || (months < thresholds.M && ['MM', months]) || (years <= 1 && ['y']) || ['yy', years]; a[2] = withoutSuffix; a[3] = +posNegDuration > 0; a[4] = locale; return substituteTimeAgo.apply(null, a); } // This function allows you to set the rounding function for relative time strings function getSetRelativeTimeRounding(roundingFunction) { if (roundingFunction === undefined) { return round; } if (typeof roundingFunction === 'function') { round = roundingFunction; return true; } return false; } // This function allows you to set a threshold for relative time strings function getSetRelativeTimeThreshold(threshold, limit) { if (thresholds[threshold] === undefined) { return false; } if (limit === undefined) { return thresholds[threshold]; } thresholds[threshold] = limit; if (threshold === 's') { thresholds.ss = limit - 1; } return true; } function humanize(argWithSuffix, argThresholds) { if (!this.isValid()) { return this.localeData().invalidDate(); } var withSuffix = false, th = thresholds, locale, output; if (typeof argWithSuffix === 'object') { argThresholds = argWithSuffix; argWithSuffix = false; } if (typeof argWithSuffix === 'boolean') { withSuffix = argWithSuffix; } if (typeof argThresholds === 'object') { th = Object.assign({}, thresholds, argThresholds); if (argThresholds.s != null && argThresholds.ss == null) { th.ss = argThresholds.s - 1; } } locale = this.localeData(); output = relativeTime$1(this, !withSuffix, th, locale); if (withSuffix) { output = locale.pastFuture(+this, output); } return locale.postformat(output); } var abs$1 = Math.abs; function sign(x) { return (x > 0) - (x < 0) || +x; } function toISOString$1() { // for ISO strings we do not use the normal bubbling rules: // * milliseconds bubble up until they become hours // * days do not bubble at all // * months bubble up until they become years // This is because there is no context-free conversion between hours and days // (think of clock changes) // and also not between days and months (28-31 days per month) if (!this.isValid()) { return this.localeData().invalidDate(); } var seconds = abs$1(this._milliseconds) / 1000, days = abs$1(this._days), months = abs$1(this._months), minutes, hours, years, s, total = this.asSeconds(), totalSign, ymSign, daysSign, hmsSign; if (!total) { // this is the same as C#'s (Noda) and python (isodate)... // but not other JS (goog.date) return 'P0D'; } // 3600 seconds -> 60 minutes -> 1 hour minutes = absFloor(seconds / 60); hours = absFloor(minutes / 60); seconds %= 60; minutes %= 60; // 12 months -> 1 year years = absFloor(months / 12); months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; totalSign = total < 0 ? '-' : ''; ymSign = sign(this._months) !== sign(total) ? '-' : ''; daysSign = sign(this._days) !== sign(total) ? '-' : ''; hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; return ( totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '') ); } var proto$2 = Duration.prototype; proto$2.isValid = isValid$1; proto$2.abs = abs; proto$2.add = add$1; proto$2.subtract = subtract$1; proto$2.as = as; proto$2.asMilliseconds = asMilliseconds; proto$2.asSeconds = asSeconds; proto$2.asMinutes = asMinutes; proto$2.asHours = asHours; proto$2.asDays = asDays; proto$2.asWeeks = asWeeks; proto$2.asMonths = asMonths; proto$2.asQuarters = asQuarters; proto$2.asYears = asYears; proto$2.valueOf = valueOf$1; proto$2._bubble = bubble; proto$2.clone = clone$1; proto$2.get = get$2; proto$2.milliseconds = milliseconds; proto$2.seconds = seconds; proto$2.minutes = minutes; proto$2.hours = hours; proto$2.days = days; proto$2.weeks = weeks; proto$2.months = months; proto$2.years = years; proto$2.humanize = humanize; proto$2.toISOString = toISOString$1; proto$2.toString = toISOString$1; proto$2.toJSON = toISOString$1; proto$2.locale = locale; proto$2.localeData = localeData; proto$2.toIsoString = deprecate( 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1 ); proto$2.lang = lang; // FORMATTING addFormatToken('X', 0, 0, 'unix'); addFormatToken('x', 0, 0, 'valueOf'); // PARSING addRegexToken('x', matchSigned); addRegexToken('X', matchTimestamp); addParseToken('X', function (input, array, config) { config._d = new Date(parseFloat(input) * 1000); }); addParseToken('x', function (input, array, config) { config._d = new Date(toInt(input)); }); //! moment.js hooks.version = '2.30.1'; setHookCallback(createLocal); hooks.fn = proto; hooks.min = min; hooks.max = max; hooks.now = now; hooks.utc = createUTC; hooks.unix = createUnix; hooks.months = listMonths; hooks.isDate = isDate; hooks.locale = getSetGlobalLocale; hooks.invalid = createInvalid; hooks.duration = createDuration; hooks.isMoment = isMoment; hooks.weekdays = listWeekdays; hooks.parseZone = createInZone; hooks.localeData = getLocale; hooks.isDuration = isDuration; hooks.monthsShort = listMonthsShort; hooks.weekdaysMin = listWeekdaysMin; hooks.defineLocale = defineLocale; hooks.updateLocale = updateLocale; hooks.locales = listLocales; hooks.weekdaysShort = listWeekdaysShort; hooks.normalizeUnits = normalizeUnits; hooks.relativeTimeRounding = getSetRelativeTimeRounding; hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; hooks.calendarFormat = getCalendarFormat; hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats hooks.HTML5_FMT = { DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // DATE: 'YYYY-MM-DD', // TIME: 'HH:mm', // TIME_SECONDS: 'HH:mm:ss', // TIME_MS: 'HH:mm:ss.SSS', // WEEK: 'GGGG-[W]WW', // MONTH: 'YYYY-MM', // }; //! moment.js locale configuration hooks.defineLocale('af', { months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split( '_' ), monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split( '_' ), weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), meridiemParse: /vm|nm/i, isPM: function (input) { return /^nm$/i.test(input); }, meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'vm' : 'VM'; } else { return isLower ? 'nm' : 'NM'; } }, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Vandag om] LT', nextDay: '[Môre om] LT', nextWeek: 'dddd [om] LT', lastDay: '[Gister om] LT', lastWeek: '[Laas] dddd [om] LT', sameElse: 'L', }, relativeTime: { future: 'oor %s', past: '%s gelede', s: "'n paar sekondes", ss: '%d sekondes', m: "'n minuut", mm: '%d minute', h: "'n uur", hh: '%d ure', d: "'n dag", dd: '%d dae', M: "'n maand", MM: '%d maande', y: "'n jaar", yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, ordinal: function (number) { return ( number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') ); // Thanks to Joris Röling : https://github.com/jjupiter }, week: { dow: 1, // Maandag is die eerste dag van die week. doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. }, }); //! moment.js locale configuration var pluralForm = function (n) { return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; }, plurals = { s: [ 'أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية', ], m: [ 'أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة', ], h: [ 'أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة', ], d: [ 'أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم', ], M: [ 'أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر', ], y: [ 'أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام', ], }, pluralize = function (u) { return function (number, withoutSuffix, string, isFuture) { var f = pluralForm(number), str = plurals[u][pluralForm(number)]; if (f === 2) { str = str[withoutSuffix ? 0 : 1]; } return str.replace(/%d/i, number); }; }, months$1 = [ 'جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر', ]; hooks.defineLocale('ar-dz', { months: months$1, monthsShort: months$1, weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'D/\u200FM/\u200FYYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /ص|م/, isPM: function (input) { return 'م' === input; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', sameElse: 'L', }, relativeTime: { future: 'بعد %s', past: 'منذ %s', s: pluralize('s'), ss: pluralize('s'), m: pluralize('m'), mm: pluralize('m'), h: pluralize('h'), hh: pluralize('h'), d: pluralize('d'), dd: pluralize('d'), M: pluralize('M'), MM: pluralize('M'), y: pluralize('y'), yy: pluralize('y'), }, postformat: function (string) { return string.replace(/,/g, '،'); }, week: { dow: 0, // Sunday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ar-kw', { months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( '_' ), monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( '_' ), weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', sameElse: 'L', }, relativeTime: { future: 'في %s', past: 'منذ %s', s: 'ثوان', ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', hh: '%d ساعات', d: 'يوم', dd: '%d أيام', M: 'شهر', MM: '%d أشهر', y: 'سنة', yy: '%d سنوات', }, week: { dow: 0, // Sunday is the first day of the week. doy: 12, // The week that contains Jan 12th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap = { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9', 0: '0', }, pluralForm$1 = function (n) { return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; }, plurals$1 = { s: [ 'أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية', ], m: [ 'أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة', ], h: [ 'أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة', ], d: [ 'أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم', ], M: [ 'أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر', ], y: [ 'أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام', ], }, pluralize$1 = function (u) { return function (number, withoutSuffix, string, isFuture) { var f = pluralForm$1(number), str = plurals$1[u][pluralForm$1(number)]; if (f === 2) { str = str[withoutSuffix ? 0 : 1]; } return str.replace(/%d/i, number); }; }, months$2 = [ 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر', ]; hooks.defineLocale('ar-ly', { months: months$2, monthsShort: months$2, weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'D/\u200FM/\u200FYYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /ص|م/, isPM: function (input) { return 'م' === input; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', sameElse: 'L', }, relativeTime: { future: 'بعد %s', past: 'منذ %s', s: pluralize$1('s'), ss: pluralize$1('s'), m: pluralize$1('m'), mm: pluralize$1('m'), h: pluralize$1('h'), hh: pluralize$1('h'), d: pluralize$1('d'), dd: pluralize$1('d'), M: pluralize$1('M'), MM: pluralize$1('M'), y: pluralize$1('y'), yy: pluralize$1('y'), }, preparse: function (string) { return string.replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { return symbolMap[match]; }) .replace(/,/g, '،'); }, week: { dow: 6, // Saturday is the first day of the week. doy: 12, // The week that contains Jan 12th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ar-ma', { months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( '_' ), monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( '_' ), weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', sameElse: 'L', }, relativeTime: { future: 'في %s', past: 'منذ %s', s: 'ثوان', ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', hh: '%d ساعات', d: 'يوم', dd: '%d أيام', M: 'شهر', MM: '%d أشهر', y: 'سنة', yy: '%d سنوات', }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$1 = { 1: '١', 2: '٢', 3: '٣', 4: '٤', 5: '٥', 6: '٦', 7: '٧', 8: '٨', 9: '٩', 0: '٠', }, numberMap = { '١': '1', '٢': '2', '٣': '3', '٤': '4', '٥': '5', '٦': '6', '٧': '7', '٨': '8', '٩': '9', '٠': '0', }; hooks.defineLocale('ar-ps', { months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split( '_' ), monthsShort: 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'), weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /ص|م/, isPM: function (input) { return 'م' === input; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', sameElse: 'L', }, relativeTime: { future: 'في %s', past: 'منذ %s', s: 'ثوان', ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', hh: '%d ساعات', d: 'يوم', dd: '%d أيام', M: 'شهر', MM: '%d أشهر', y: 'سنة', yy: '%d سنوات', }, preparse: function (string) { return string .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) { return numberMap[match]; }) .split('') // reversed since negative lookbehind not supported everywhere .reverse() .join('') .replace(/[١٢](?![\u062a\u0643])/g, function (match) { return numberMap[match]; }) .split('') .reverse() .join('') .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { return symbolMap$1[match]; }) .replace(/,/g, '،'); }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$2 = { 1: '١', 2: '٢', 3: '٣', 4: '٤', 5: '٥', 6: '٦', 7: '٧', 8: '٨', 9: '٩', 0: '٠', }, numberMap$1 = { '١': '1', '٢': '2', '٣': '3', '٤': '4', '٥': '5', '٦': '6', '٧': '7', '٨': '8', '٩': '9', '٠': '0', }; hooks.defineLocale('ar-sa', { months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( '_' ), monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( '_' ), weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /ص|م/, isPM: function (input) { return 'م' === input; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', sameElse: 'L', }, relativeTime: { future: 'في %s', past: 'منذ %s', s: 'ثوان', ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', hh: '%d ساعات', d: 'يوم', dd: '%d أيام', M: 'شهر', MM: '%d أشهر', y: 'سنة', yy: '%d سنوات', }, preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { return numberMap$1[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { return symbolMap$2[match]; }) .replace(/,/g, '،'); }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ar-tn', { months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( '_' ), monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( '_' ), weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', sameElse: 'L', }, relativeTime: { future: 'في %s', past: 'منذ %s', s: 'ثوان', ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', hh: '%d ساعات', d: 'يوم', dd: '%d أيام', M: 'شهر', MM: '%d أشهر', y: 'سنة', yy: '%d سنوات', }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$3 = { 1: '١', 2: '٢', 3: '٣', 4: '٤', 5: '٥', 6: '٦', 7: '٧', 8: '٨', 9: '٩', 0: '٠', }, numberMap$2 = { '١': '1', '٢': '2', '٣': '3', '٤': '4', '٥': '5', '٦': '6', '٧': '7', '٨': '8', '٩': '9', '٠': '0', }, pluralForm$2 = function (n) { return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; }, plurals$2 = { s: [ 'أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية', ], m: [ 'أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة', ], h: [ 'أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة', ], d: [ 'أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم', ], M: [ 'أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر', ], y: [ 'أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام', ], }, pluralize$2 = function (u) { return function (number, withoutSuffix, string, isFuture) { var f = pluralForm$2(number), str = plurals$2[u][pluralForm$2(number)]; if (f === 2) { str = str[withoutSuffix ? 0 : 1]; } return str.replace(/%d/i, number); }; }, months$3 = [ 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر', ]; hooks.defineLocale('ar', { months: months$3, monthsShort: months$3, weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'D/\u200FM/\u200FYYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /ص|م/, isPM: function (input) { return 'م' === input; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', sameElse: 'L', }, relativeTime: { future: 'بعد %s', past: 'منذ %s', s: pluralize$2('s'), ss: pluralize$2('s'), m: pluralize$2('m'), mm: pluralize$2('m'), h: pluralize$2('h'), hh: pluralize$2('h'), d: pluralize$2('d'), dd: pluralize$2('d'), M: pluralize$2('M'), MM: pluralize$2('M'), y: pluralize$2('y'), yy: pluralize$2('y'), }, preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { return numberMap$2[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { return symbolMap$3[match]; }) .replace(/,/g, '،'); }, week: { dow: 6, // Saturday is the first day of the week. doy: 12, // The week that contains Jan 12th is the first week of the year. }, }); //! moment.js locale configuration var suffixes = { 1: '-inci', 5: '-inci', 8: '-inci', 70: '-inci', 80: '-inci', 2: '-nci', 7: '-nci', 20: '-nci', 50: '-nci', 3: '-üncü', 4: '-üncü', 100: '-üncü', 6: '-ncı', 9: '-uncu', 10: '-uncu', 30: '-uncu', 60: '-ıncı', 90: '-ıncı', }; hooks.defineLocale('az', { months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split( '_' ), monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split( '_' ), weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[bugün saat] LT', nextDay: '[sabah saat] LT', nextWeek: '[gələn həftə] dddd [saat] LT', lastDay: '[dünən] LT', lastWeek: '[keçən həftə] dddd [saat] LT', sameElse: 'L', }, relativeTime: { future: '%s sonra', past: '%s əvvəl', s: 'bir neçə saniyə', ss: '%d saniyə', m: 'bir dəqiqə', mm: '%d dəqiqə', h: 'bir saat', hh: '%d saat', d: 'bir gün', dd: '%d gün', M: 'bir ay', MM: '%d ay', y: 'bir il', yy: '%d il', }, meridiemParse: /gecə|səhər|gündüz|axşam/, isPM: function (input) { return /^(gündüz|axşam)$/.test(input); }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'gecə'; } else if (hour < 12) { return 'səhər'; } else if (hour < 17) { return 'gündüz'; } else { return 'axşam'; } }, dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, ordinal: function (number) { if (number === 0) { // special case for zero return number + '-ıncı'; } var a = number % 10, b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes[a] || suffixes[b] || suffixes[c]); }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration function plural(word, num) { var forms = word.split('_'); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', dd: 'дзень_дні_дзён', MM: 'месяц_месяцы_месяцаў', yy: 'год_гады_гадоў', }; if (key === 'm') { return withoutSuffix ? 'хвіліна' : 'хвіліну'; } else if (key === 'h') { return withoutSuffix ? 'гадзіна' : 'гадзіну'; } else { return number + ' ' + plural(format[key], +number); } } hooks.defineLocale('be', { months: { format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( '_' ), standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( '_' ), }, monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), weekdays: { format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split( '_' ), standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split( '_' ), isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/, }, weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY г.', LLL: 'D MMMM YYYY г., HH:mm', LLLL: 'dddd, D MMMM YYYY г., HH:mm', }, calendar: { sameDay: '[Сёння ў] LT', nextDay: '[Заўтра ў] LT', lastDay: '[Учора ў] LT', nextWeek: function () { return '[У] dddd [ў] LT'; }, lastWeek: function () { switch (this.day()) { case 0: case 3: case 5: case 6: return '[У мінулую] dddd [ў] LT'; case 1: case 2: case 4: return '[У мінулы] dddd [ў] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'праз %s', past: '%s таму', s: 'некалькі секунд', m: relativeTimeWithPlural, mm: relativeTimeWithPlural, h: relativeTimeWithPlural, hh: relativeTimeWithPlural, d: 'дзень', dd: relativeTimeWithPlural, M: 'месяц', MM: relativeTimeWithPlural, y: 'год', yy: relativeTimeWithPlural, }, meridiemParse: /ночы|раніцы|дня|вечара/, isPM: function (input) { return /^(дня|вечара)$/.test(input); }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночы'; } else if (hour < 12) { return 'раніцы'; } else if (hour < 17) { return 'дня'; } else { return 'вечара'; } }, dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, ordinal: function (number, period) { switch (period) { case 'M': case 'd': case 'DDD': case 'w': case 'W': return (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? number + '-і' : number + '-ы'; case 'D': return number + '-га'; default: return number; } }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('bg', { months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split( '_' ), monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split( '_' ), weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'D.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY H:mm', LLLL: 'dddd, D MMMM YYYY H:mm', }, calendar: { sameDay: '[Днес в] LT', nextDay: '[Утре в] LT', nextWeek: 'dddd [в] LT', lastDay: '[Вчера в] LT', lastWeek: function () { switch (this.day()) { case 0: case 3: case 6: return '[Миналата] dddd [в] LT'; case 1: case 2: case 4: case 5: return '[Миналия] dddd [в] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'след %s', past: 'преди %s', s: 'няколко секунди', ss: '%d секунди', m: 'минута', mm: '%d минути', h: 'час', hh: '%d часа', d: 'ден', dd: '%d дена', w: 'седмица', ww: '%d седмици', M: 'месец', MM: '%d месеца', y: 'година', yy: '%d години', }, dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, ordinal: function (number) { var lastDigit = number % 10, last2Digits = number % 100; if (number === 0) { return number + '-ев'; } else if (last2Digits === 0) { return number + '-ен'; } else if (last2Digits > 10 && last2Digits < 20) { return number + '-ти'; } else if (lastDigit === 1) { return number + '-ви'; } else if (lastDigit === 2) { return number + '-ри'; } else if (lastDigit === 7 || lastDigit === 8) { return number + '-ми'; } else { return number + '-ти'; } }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('bm', { months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split( '_' ), monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'), weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'MMMM [tile] D [san] YYYY', LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', }, calendar: { sameDay: '[Bi lɛrɛ] LT', nextDay: '[Sini lɛrɛ] LT', nextWeek: 'dddd [don lɛrɛ] LT', lastDay: '[Kunu lɛrɛ] LT', lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT', sameElse: 'L', }, relativeTime: { future: '%s kɔnɔ', past: 'a bɛ %s bɔ', s: 'sanga dama dama', ss: 'sekondi %d', m: 'miniti kelen', mm: 'miniti %d', h: 'lɛrɛ kelen', hh: 'lɛrɛ %d', d: 'tile kelen', dd: 'tile %d', M: 'kalo kelen', MM: 'kalo %d', y: 'san kelen', yy: 'san %d', }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$4 = { 1: '১', 2: '২', 3: '৩', 4: '৪', 5: '৫', 6: '৬', 7: '৭', 8: '৮', 9: '৯', 0: '০', }, numberMap$3 = { '১': '1', '২': '2', '৩': '3', '৪': '4', '৫': '5', '৬': '6', '৭': '7', '৮': '8', '৯': '9', '০': '0', }; hooks.defineLocale('bn-bd', { months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( '_' ), monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( '_' ), weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( '_' ), weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'), longDateFormat: { LT: 'A h:mm সময়', LTS: 'A h:mm:ss সময়', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm সময়', LLLL: 'dddd, D MMMM YYYY, A h:mm সময়', }, calendar: { sameDay: '[আজ] LT', nextDay: '[আগামীকাল] LT', nextWeek: 'dddd, LT', lastDay: '[গতকাল] LT', lastWeek: '[গত] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s পরে', past: '%s আগে', s: 'কয়েক সেকেন্ড', ss: '%d সেকেন্ড', m: 'এক মিনিট', mm: '%d মিনিট', h: 'এক ঘন্টা', hh: '%d ঘন্টা', d: 'এক দিন', dd: '%d দিন', M: 'এক মাস', MM: '%d মাস', y: 'এক বছর', yy: '%d বছর', }, preparse: function (string) { return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { return numberMap$3[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$4[match]; }); }, meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'রাত') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'ভোর') { return hour; } else if (meridiem === 'সকাল') { return hour; } else if (meridiem === 'দুপুর') { return hour >= 3 ? hour : hour + 12; } else if (meridiem === 'বিকাল') { return hour + 12; } else if (meridiem === 'সন্ধ্যা') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'রাত'; } else if (hour < 6) { return 'ভোর'; } else if (hour < 12) { return 'সকাল'; } else if (hour < 15) { return 'দুপুর'; } else if (hour < 18) { return 'বিকাল'; } else if (hour < 20) { return 'সন্ধ্যা'; } else { return 'রাত'; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$5 = { 1: '১', 2: '২', 3: '৩', 4: '৪', 5: '৫', 6: '৬', 7: '৭', 8: '৮', 9: '৯', 0: '০', }, numberMap$4 = { '১': '1', '২': '2', '৩': '3', '৪': '4', '৫': '5', '৬': '6', '৭': '7', '৮': '8', '৯': '9', '০': '0', }; hooks.defineLocale('bn', { months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( '_' ), monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( '_' ), weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( '_' ), weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'), longDateFormat: { LT: 'A h:mm সময়', LTS: 'A h:mm:ss সময়', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm সময়', LLLL: 'dddd, D MMMM YYYY, A h:mm সময়', }, calendar: { sameDay: '[আজ] LT', nextDay: '[আগামীকাল] LT', nextWeek: 'dddd, LT', lastDay: '[গতকাল] LT', lastWeek: '[গত] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s পরে', past: '%s আগে', s: 'কয়েক সেকেন্ড', ss: '%d সেকেন্ড', m: 'এক মিনিট', mm: '%d মিনিট', h: 'এক ঘন্টা', hh: '%d ঘন্টা', d: 'এক দিন', dd: '%d দিন', M: 'এক মাস', MM: '%d মাস', y: 'এক বছর', yy: '%d বছর', }, preparse: function (string) { return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { return numberMap$4[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$5[match]; }); }, meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if ( (meridiem === 'রাত' && hour >= 4) || (meridiem === 'দুপুর' && hour < 5) || meridiem === 'বিকাল' ) { return hour + 12; } else { return hour; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'রাত'; } else if (hour < 10) { return 'সকাল'; } else if (hour < 17) { return 'দুপুর'; } else if (hour < 20) { return 'বিকাল'; } else { return 'রাত'; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$6 = { 1: '༡', 2: '༢', 3: '༣', 4: '༤', 5: '༥', 6: '༦', 7: '༧', 8: '༨', 9: '༩', 0: '༠', }, numberMap$5 = { '༡': '1', '༢': '2', '༣': '3', '༤': '4', '༥': '5', '༦': '6', '༧': '7', '༨': '8', '༩': '9', '༠': '0', }; hooks.defineLocale('bo', { months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split( '_' ), monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split( '_' ), monthsShortRegex: /^(ཟླ་\d{1,2})/, monthsParseExact: true, weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split( '_' ), weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split( '_' ), weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'), longDateFormat: { LT: 'A h:mm', LTS: 'A h:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm', LLLL: 'dddd, D MMMM YYYY, A h:mm', }, calendar: { sameDay: '[དི་རིང] LT', nextDay: '[སང་ཉིན] LT', nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT', lastDay: '[ཁ་སང] LT', lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s ལ་', past: '%s སྔན་ལ', s: 'ལམ་སང', ss: '%d སྐར་ཆ།', m: 'སྐར་མ་གཅིག', mm: '%d སྐར་མ', h: 'ཆུ་ཚོད་གཅིག', hh: '%d ཆུ་ཚོད', d: 'ཉིན་གཅིག', dd: '%d ཉིན་', M: 'ཟླ་བ་གཅིག', MM: '%d ཟླ་བ', y: 'ལོ་གཅིག', yy: '%d ལོ', }, preparse: function (string) { return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { return numberMap$5[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$6[match]; }); }, meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if ( (meridiem === 'མཚན་མོ' && hour >= 4) || (meridiem === 'ཉིན་གུང' && hour < 5) || meridiem === 'དགོང་དག' ) { return hour + 12; } else { return hour; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'མཚན་མོ'; } else if (hour < 10) { return 'ཞོགས་ཀས'; } else if (hour < 17) { return 'ཉིན་གུང'; } else if (hour < 20) { return 'དགོང་དག'; } else { return 'མཚན་མོ'; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration function relativeTimeWithMutation(number, withoutSuffix, key) { var format = { mm: 'munutenn', MM: 'miz', dd: 'devezh', }; return number + ' ' + mutation(format[key], number); } function specialMutationForYears(number) { switch (lastNumber(number)) { case 1: case 3: case 4: case 5: case 9: return number + ' bloaz'; default: return number + ' vloaz'; } } function lastNumber(number) { if (number > 9) { return lastNumber(number % 10); } return number; } function mutation(text, number) { if (number === 2) { return softMutation(text); } return text; } function softMutation(text) { var mutationTable = { m: 'v', b: 'v', d: 'z', }; if (mutationTable[text.charAt(0)] === undefined) { return text; } return mutationTable[text.charAt(0)] + text.substring(1); } var monthsParse = [ /^gen/i, /^c[ʼ\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i, ], monthsRegex$1 = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i, monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, fullWeekdaysParse = [ /^sul/i, /^lun/i, /^meurzh/i, /^merc[ʼ\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i, ], shortWeekdaysParse = [ /^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i, ], minWeekdaysParse = [ /^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i, ]; hooks.defineLocale('br', { months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split( '_' ), monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'), weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), weekdaysParse: minWeekdaysParse, fullWeekdaysParse: fullWeekdaysParse, shortWeekdaysParse: shortWeekdaysParse, minWeekdaysParse: minWeekdaysParse, monthsRegex: monthsRegex$1, monthsShortRegex: monthsRegex$1, monthsStrictRegex: monthsStrictRegex, monthsShortStrictRegex: monthsShortStrictRegex, monthsParse: monthsParse, longMonthsParse: monthsParse, shortMonthsParse: monthsParse, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D [a viz] MMMM YYYY', LLL: 'D [a viz] MMMM YYYY HH:mm', LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm', }, calendar: { sameDay: '[Hiziv da] LT', nextDay: '[Warcʼhoazh da] LT', nextWeek: 'dddd [da] LT', lastDay: '[Decʼh da] LT', lastWeek: 'dddd [paset da] LT', sameElse: 'L', }, relativeTime: { future: 'a-benn %s', past: '%s ʼzo', s: 'un nebeud segondennoù', ss: '%d eilenn', m: 'ur vunutenn', mm: relativeTimeWithMutation, h: 'un eur', hh: '%d eur', d: 'un devezh', dd: relativeTimeWithMutation, M: 'ur miz', MM: relativeTimeWithMutation, y: 'ur bloaz', yy: specialMutationForYears, }, dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, ordinal: function (number) { var output = number === 1 ? 'añ' : 'vet'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn isPM: function (token) { return token === 'g.m.'; }, meridiem: function (hour, minute, isLower) { return hour < 12 ? 'a.m.' : 'g.m.'; }, }); //! moment.js locale configuration function processRelativeTime(number, withoutSuffix, key, isFuture) { switch (key) { case 'm': return withoutSuffix ? 'jedna minuta' : isFuture ? 'jednu minutu' : 'jedne minute'; } } function translate(number, withoutSuffix, key) { var result = number + ' '; switch (key) { case 'ss': if (number === 1) { result += 'sekunda'; } else if (number === 2 || number === 3 || number === 4) { result += 'sekunde'; } else { result += 'sekundi'; } return result; case 'mm': if (number === 1) { result += 'minuta'; } else if (number === 2 || number === 3 || number === 4) { result += 'minute'; } else { result += 'minuta'; } return result; case 'h': return withoutSuffix ? 'jedan sat' : 'jedan sat'; case 'hh': if (number === 1) { result += 'sat'; } else if (number === 2 || number === 3 || number === 4) { result += 'sata'; } else { result += 'sati'; } return result; case 'dd': if (number === 1) { result += 'dan'; } else { result += 'dana'; } return result; case 'MM': if (number === 1) { result += 'mjesec'; } else if (number === 2 || number === 3 || number === 4) { result += 'mjeseca'; } else { result += 'mjeseci'; } return result; case 'yy': if (number === 1) { result += 'godina'; } else if (number === 2 || number === 3 || number === 4) { result += 'godine'; } else { result += 'godina'; } return result; } } hooks.defineLocale('bs', { months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( '_' ), monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( '_' ), monthsParseExact: true, weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( '_' ), weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', nextDay: '[sutra u] LT', nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; case 3: return '[u] [srijedu] [u] LT'; case 6: return '[u] [subotu] [u] LT'; case 1: case 2: case 4: case 5: return '[u] dddd [u] LT'; } }, lastDay: '[jučer u] LT', lastWeek: function () { switch (this.day()) { case 0: case 3: return '[prošlu] dddd [u] LT'; case 6: return '[prošle] [subote] [u] LT'; case 1: case 2: case 4: case 5: return '[prošli] dddd [u] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'za %s', past: 'prije %s', s: 'par sekundi', ss: translate, m: processRelativeTime, mm: translate, h: translate, hh: translate, d: 'dan', dd: translate, M: 'mjesec', MM: translate, y: 'godinu', yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ca', { months: { standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( '_' ), format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split( '_' ), isFormat: /D[oD]?(\s)+MMMM/, }, monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( '_' ), monthsParseExact: true, weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( '_' ), weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM [de] YYYY', ll: 'D MMM YYYY', LLL: 'D MMMM [de] YYYY [a les] H:mm', lll: 'D MMM YYYY, H:mm', LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', llll: 'ddd D MMM YYYY, H:mm', }, calendar: { sameDay: function () { return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, nextDay: function () { return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, nextWeek: function () { return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, lastDay: function () { return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, lastWeek: function () { return ( '[el] dddd [passat a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT' ); }, sameElse: 'L', }, relativeTime: { future: "d'aquí %s", past: 'fa %s', s: 'uns segons', ss: '%d segons', m: 'un minut', mm: '%d minuts', h: 'una hora', hh: '%d hores', d: 'un dia', dd: '%d dies', M: 'un mes', MM: '%d mesos', y: 'un any', yy: '%d anys', }, dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, ordinal: function (number, period) { var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var months$4 = { standalone: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( '_' ), format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( '_' ), isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/, }, monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), monthsParse$1 = [ /^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i, ], // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. monthsRegex$2 = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; function plural$1(n) { return n > 1 && n < 5 && ~~(n / 10) !== 1; } function translate$1(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': // a few seconds / in a few seconds / a few seconds ago return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'sekundy' : 'sekund'); } else { return result + 'sekundami'; } case 'm': // a minute / in a minute / a minute ago return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'minuty' : 'minut'); } else { return result + 'minutami'; } case 'h': // an hour / in an hour / an hour ago return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; case 'hh': // 9 hours / in 9 hours / 9 hours ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'hodiny' : 'hodin'); } else { return result + 'hodinami'; } case 'd': // a day / in a day / a day ago return withoutSuffix || isFuture ? 'den' : 'dnem'; case 'dd': // 9 days / in 9 days / 9 days ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'dny' : 'dní'); } else { return result + 'dny'; } case 'M': // a month / in a month / a month ago return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; case 'MM': // 9 months / in 9 months / 9 months ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'měsíce' : 'měsíců'); } else { return result + 'měsíci'; } case 'y': // a year / in a year / a year ago return withoutSuffix || isFuture ? 'rok' : 'rokem'; case 'yy': // 9 years / in 9 years / 9 years ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'roky' : 'let'); } else { return result + 'lety'; } } } hooks.defineLocale('cs', { months: months$4, monthsShort: monthsShort, monthsRegex: monthsRegex$2, monthsShortRegex: monthsRegex$2, // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, monthsParse: monthsParse$1, longMonthsParse: monthsParse$1, shortMonthsParse: monthsParse$1, weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', LLLL: 'dddd D. MMMM YYYY H:mm', l: 'D. M. YYYY', }, calendar: { sameDay: '[dnes v] LT', nextDay: '[zítra v] LT', nextWeek: function () { switch (this.day()) { case 0: return '[v neděli v] LT'; case 1: case 2: return '[v] dddd [v] LT'; case 3: return '[ve středu v] LT'; case 4: return '[ve čtvrtek v] LT'; case 5: return '[v pátek v] LT'; case 6: return '[v sobotu v] LT'; } }, lastDay: '[včera v] LT', lastWeek: function () { switch (this.day()) { case 0: return '[minulou neděli v] LT'; case 1: case 2: return '[minulé] dddd [v] LT'; case 3: return '[minulou středu v] LT'; case 4: case 5: return '[minulý] dddd [v] LT'; case 6: return '[minulou sobotu v] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'za %s', past: 'před %s', s: translate$1, ss: translate$1, m: translate$1, mm: translate$1, h: translate$1, hh: translate$1, d: translate$1, dd: translate$1, M: translate$1, MM: translate$1, y: translate$1, yy: translate$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('cv', { months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split( '_' ), monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split( '_' ), weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD-MM-YYYY', LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', }, calendar: { sameDay: '[Паян] LT [сехетре]', nextDay: '[Ыран] LT [сехетре]', lastDay: '[Ӗнер] LT [сехетре]', nextWeek: '[Ҫитес] dddd LT [сехетре]', lastWeek: '[Иртнӗ] dddd LT [сехетре]', sameElse: 'L', }, relativeTime: { future: function (output) { var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; return output + affix; }, past: '%s каялла', s: 'пӗр-ик ҫеккунт', ss: '%d ҫеккунт', m: 'пӗр минут', mm: '%d минут', h: 'пӗр сехет', hh: '%d сехет', d: 'пӗр кун', dd: '%d кун', M: 'пӗр уйӑх', MM: '%d уйӑх', y: 'пӗр ҫул', yy: '%d ҫул', }, dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, ordinal: '%d-мӗш', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('cy', { months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( '_' ), monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( '_' ), weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( '_' ), weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), weekdaysParseExact: true, // time formats are the same as en-gb longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Heddiw am] LT', nextDay: '[Yfory am] LT', nextWeek: 'dddd [am] LT', lastDay: '[Ddoe am] LT', lastWeek: 'dddd [diwethaf am] LT', sameElse: 'L', }, relativeTime: { future: 'mewn %s', past: '%s yn ôl', s: 'ychydig eiliadau', ss: '%d eiliad', m: 'munud', mm: '%d munud', h: 'awr', hh: '%d awr', d: 'diwrnod', dd: '%d diwrnod', M: 'mis', MM: '%d mis', y: 'blwyddyn', yy: '%d flynedd', }, dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh ordinal: function (number) { var b = number, output = '', lookup = [ '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed', // 11eg to 20fed ]; if (b > 20) { if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { output = 'fed'; // not 30ain, 70ain or 90ain } else { output = 'ain'; } } else if (b > 0) { output = lookup[b]; } return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('da', { months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( '_' ), monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY HH:mm', LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm', }, calendar: { sameDay: '[i dag kl.] LT', nextDay: '[i morgen kl.] LT', nextWeek: 'på dddd [kl.] LT', lastDay: '[i går kl.] LT', lastWeek: '[i] dddd[s kl.] LT', sameElse: 'L', }, relativeTime: { future: 'om %s', past: '%s siden', s: 'få sekunder', ss: '%d sekunder', m: 'et minut', mm: '%d minutter', h: 'en time', hh: '%d timer', d: 'en dag', dd: '%d dage', M: 'en måned', MM: '%d måneder', y: 'et år', yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration function processRelativeTime$1(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], d: ['ein Tag', 'einem Tag'], dd: [number + ' Tage', number + ' Tagen'], w: ['eine Woche', 'einer Woche'], M: ['ein Monat', 'einem Monat'], MM: [number + ' Monate', number + ' Monaten'], y: ['ein Jahr', 'einem Jahr'], yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } hooks.defineLocale('de-at', { months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( '_' ), monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), monthsParseExact: true, weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( '_' ), weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY HH:mm', LLLL: 'dddd, D. MMMM YYYY HH:mm', }, calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', lastWeek: '[letzten] dddd [um] LT [Uhr]', }, relativeTime: { future: 'in %s', past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', m: processRelativeTime$1, mm: '%d Minuten', h: processRelativeTime$1, hh: '%d Stunden', d: processRelativeTime$1, dd: processRelativeTime$1, w: processRelativeTime$1, ww: '%d Wochen', M: processRelativeTime$1, MM: processRelativeTime$1, y: processRelativeTime$1, yy: processRelativeTime$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration function processRelativeTime$2(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], d: ['ein Tag', 'einem Tag'], dd: [number + ' Tage', number + ' Tagen'], w: ['eine Woche', 'einer Woche'], M: ['ein Monat', 'einem Monat'], MM: [number + ' Monate', number + ' Monaten'], y: ['ein Jahr', 'einem Jahr'], yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } hooks.defineLocale('de-ch', { months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( '_' ), monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), monthsParseExact: true, weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( '_' ), weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY HH:mm', LLLL: 'dddd, D. MMMM YYYY HH:mm', }, calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', lastWeek: '[letzten] dddd [um] LT [Uhr]', }, relativeTime: { future: 'in %s', past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', m: processRelativeTime$2, mm: '%d Minuten', h: processRelativeTime$2, hh: '%d Stunden', d: processRelativeTime$2, dd: processRelativeTime$2, w: processRelativeTime$2, ww: '%d Wochen', M: processRelativeTime$2, MM: processRelativeTime$2, y: processRelativeTime$2, yy: processRelativeTime$2, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration function processRelativeTime$3(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], d: ['ein Tag', 'einem Tag'], dd: [number + ' Tage', number + ' Tagen'], w: ['eine Woche', 'einer Woche'], M: ['ein Monat', 'einem Monat'], MM: [number + ' Monate', number + ' Monaten'], y: ['ein Jahr', 'einem Jahr'], yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } hooks.defineLocale('de', { months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( '_' ), monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), monthsParseExact: true, weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( '_' ), weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY HH:mm', LLLL: 'dddd, D. MMMM YYYY HH:mm', }, calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', lastWeek: '[letzten] dddd [um] LT [Uhr]', }, relativeTime: { future: 'in %s', past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', m: processRelativeTime$3, mm: '%d Minuten', h: processRelativeTime$3, hh: '%d Stunden', d: processRelativeTime$3, dd: processRelativeTime$3, w: processRelativeTime$3, ww: '%d Wochen', M: processRelativeTime$3, MM: processRelativeTime$3, y: processRelativeTime$3, yy: processRelativeTime$3, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var months$5 = [ 'ޖެނުއަރީ', 'ފެބްރުއަރީ', 'މާރިޗު', 'އޭޕްރީލު', 'މޭ', 'ޖޫން', 'ޖުލައި', 'އޯގަސްޓު', 'ސެޕްޓެމްބަރު', 'އޮކްޓޯބަރު', 'ނޮވެމްބަރު', 'ޑިސެމްބަރު', ], weekdays = [ 'އާދިއްތަ', 'ހޯމަ', 'އަންގާރަ', 'ބުދަ', 'ބުރާސްފަތި', 'ހުކުރު', 'ހޮނިހިރު', ]; hooks.defineLocale('dv', { months: months$5, monthsShort: months$5, weekdays: weekdays, weekdaysShort: weekdays, weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'D/M/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /މކ|މފ/, isPM: function (input) { return 'މފ' === input; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'މކ'; } else { return 'މފ'; } }, calendar: { sameDay: '[މިއަދު] LT', nextDay: '[މާދަމާ] LT', nextWeek: 'dddd LT', lastDay: '[އިއްޔެ] LT', lastWeek: '[ފާއިތުވި] dddd LT', sameElse: 'L', }, relativeTime: { future: 'ތެރޭގައި %s', past: 'ކުރިން %s', s: 'ސިކުންތުކޮޅެއް', ss: 'd% ސިކުންތު', m: 'މިނިޓެއް', mm: 'މިނިޓު %d', h: 'ގަޑިއިރެއް', hh: 'ގަޑިއިރު %d', d: 'ދުވަހެއް', dd: 'ދުވަސް %d', M: 'މަހެއް', MM: 'މަސް %d', y: 'އަހަރެއް', yy: 'އަހަރު %d', }, preparse: function (string) { return string.replace(/،/g, ','); }, postformat: function (string) { return string.replace(/,/g, '،'); }, week: { dow: 7, // Sunday is the first day of the week. doy: 12, // The week that contains Jan 12th is the first week of the year. }, }); //! moment.js locale configuration function isFunction$1(input) { return ( (typeof Function !== 'undefined' && input instanceof Function) || Object.prototype.toString.call(input) === '[object Function]' ); } hooks.defineLocale('el', { monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split( '_' ), monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split( '_' ), months: function (momentToFormat, format) { if (!momentToFormat) { return this._monthsNominativeEl; } else if ( typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM'))) ) { // if there is a day number before 'MMMM' return this._monthsGenitiveEl[momentToFormat.month()]; } else { return this._monthsNominativeEl[momentToFormat.month()]; } }, monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split( '_' ), weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'μμ' : 'ΜΜ'; } else { return isLower ? 'πμ' : 'ΠΜ'; } }, isPM: function (input) { return (input + '').toLowerCase()[0] === 'μ'; }, meridiemParse: /[ΠΜ]\.?Μ?\.?/i, longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY h:mm A', LLLL: 'dddd, D MMMM YYYY h:mm A', }, calendarEl: { sameDay: '[Σήμερα {}] LT', nextDay: '[Αύριο {}] LT', nextWeek: 'dddd [{}] LT', lastDay: '[Χθες {}] LT', lastWeek: function () { switch (this.day()) { case 6: return '[το προηγούμενο] dddd [{}] LT'; default: return '[την προηγούμενη] dddd [{}] LT'; } }, sameElse: 'L', }, calendar: function (key, mom) { var output = this._calendarEl[key], hours = mom && mom.hours(); if (isFunction$1(output)) { output = output.apply(mom); } return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις'); }, relativeTime: { future: 'σε %s', past: '%s πριν', s: 'λίγα δευτερόλεπτα', ss: '%d δευτερόλεπτα', m: 'ένα λεπτό', mm: '%d λεπτά', h: 'μία ώρα', hh: '%d ώρες', d: 'μία μέρα', dd: '%d μέρες', M: 'ένας μήνας', MM: '%d μήνες', y: 'ένας χρόνος', yy: '%d χρόνια', }, dayOfMonthOrdinalParse: /\d{1,2}η/, ordinal: '%dη', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4st is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('en-au', { months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( '_' ), weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY h:mm A', LLLL: 'dddd, D MMMM YYYY h:mm A', }, calendar: { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, week: { dow: 0, // Sunday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('en-ca', { months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( '_' ), weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'YYYY-MM-DD', LL: 'MMMM D, YYYY', LLL: 'MMMM D, YYYY h:mm A', LLLL: 'dddd, MMMM D, YYYY h:mm A', }, calendar: { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, }); //! moment.js locale configuration hooks.defineLocale('en-gb', { months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( '_' ), weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('en-ie', { months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( '_' ), weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('en-il', { months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( '_' ), weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, }); //! moment.js locale configuration hooks.defineLocale('en-in', { months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( '_' ), weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY h:mm A', LLLL: 'dddd, D MMMM YYYY h:mm A', }, calendar: { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 1st is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('en-nz', { months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( '_' ), weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY h:mm A', LLLL: 'dddd, D MMMM YYYY h:mm A', }, calendar: { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('en-sg', { months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( '_' ), weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Today at] LT', nextDay: '[Tomorrow at] LT', nextWeek: 'dddd [at] LT', lastDay: '[Yesterday at] LT', lastWeek: '[Last] dddd [at] LT', sameElse: 'L', }, relativeTime: { future: 'in %s', past: '%s ago', s: 'a few seconds', ss: '%d seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('eo', { months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split( '_' ), monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'), weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY-MM-DD', LL: '[la] D[-an de] MMMM, YYYY', LLL: '[la] D[-an de] MMMM, YYYY HH:mm', LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', }, meridiemParse: /[ap]\.t\.m/i, isPM: function (input) { return input.charAt(0).toLowerCase() === 'p'; }, meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'p.t.m.' : 'P.T.M.'; } else { return isLower ? 'a.t.m.' : 'A.T.M.'; } }, calendar: { sameDay: '[Hodiaŭ je] LT', nextDay: '[Morgaŭ je] LT', nextWeek: 'dddd[n je] LT', lastDay: '[Hieraŭ je] LT', lastWeek: '[pasintan] dddd[n je] LT', sameElse: 'L', }, relativeTime: { future: 'post %s', past: 'antaŭ %s', s: 'kelkaj sekundoj', ss: '%d sekundoj', m: 'unu minuto', mm: '%d minutoj', h: 'unu horo', hh: '%d horoj', d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo dd: '%d tagoj', M: 'unu monato', MM: '%d monatoj', y: 'unu jaro', yy: '%d jaroj', }, dayOfMonthOrdinalParse: /\d{1,2}a/, ordinal: '%da', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( '_' ), monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), monthsParse$2 = [ /^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i, ], monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; hooks.defineLocale('es-do', { months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( '_' ), monthsShort: function (m, format) { if (!m) { return monthsShortDot; } else if (/-MMM-/.test(format)) { return monthsShort$1[m.month()]; } else { return monthsShortDot[m.month()]; } }, monthsRegex: monthsRegex$3, monthsShortRegex: monthsRegex$3, monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, monthsParse: monthsParse$2, longMonthsParse: monthsParse$2, shortMonthsParse: monthsParse$2, weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'DD/MM/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY h:mm A', LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', }, calendar: { sameDay: function () { return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, nextDay: function () { return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, nextWeek: function () { return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, lastDay: function () { return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, lastWeek: function () { return ( '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT' ); }, sameElse: 'L', }, relativeTime: { future: 'en %s', past: 'hace %s', s: 'unos segundos', ss: '%d segundos', m: 'un minuto', mm: '%d minutos', h: 'una hora', hh: '%d horas', d: 'un día', dd: '%d días', w: 'una semana', ww: '%d semanas', M: 'un mes', MM: '%d meses', y: 'un año', yy: '%d años', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( '_' ), monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), monthsParse$3 = [ /^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i, ], monthsRegex$4 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; hooks.defineLocale('es-mx', { months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( '_' ), monthsShort: function (m, format) { if (!m) { return monthsShortDot$1; } else if (/-MMM-/.test(format)) { return monthsShort$2[m.month()]; } else { return monthsShortDot$1[m.month()]; } }, monthsRegex: monthsRegex$4, monthsShortRegex: monthsRegex$4, monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, monthsParse: monthsParse$3, longMonthsParse: monthsParse$3, shortMonthsParse: monthsParse$3, weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD/MM/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY H:mm', LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', }, calendar: { sameDay: function () { return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, nextDay: function () { return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, nextWeek: function () { return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, lastDay: function () { return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, lastWeek: function () { return ( '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT' ); }, sameElse: 'L', }, relativeTime: { future: 'en %s', past: 'hace %s', s: 'unos segundos', ss: '%d segundos', m: 'un minuto', mm: '%d minutos', h: 'una hora', hh: '%d horas', d: 'un día', dd: '%d días', w: 'una semana', ww: '%d semanas', M: 'un mes', MM: '%d meses', y: 'un año', yy: '%d años', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 0, // Sunday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, invalidDate: 'Fecha inválida', }); //! moment.js locale configuration var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( '_' ), monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), monthsParse$4 = [ /^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i, ], monthsRegex$5 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; hooks.defineLocale('es-us', { months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( '_' ), monthsShort: function (m, format) { if (!m) { return monthsShortDot$2; } else if (/-MMM-/.test(format)) { return monthsShort$3[m.month()]; } else { return monthsShortDot$2[m.month()]; } }, monthsRegex: monthsRegex$5, monthsShortRegex: monthsRegex$5, monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, monthsParse: monthsParse$4, longMonthsParse: monthsParse$4, shortMonthsParse: monthsParse$4, weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'MM/DD/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY h:mm A', LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', }, calendar: { sameDay: function () { return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, nextDay: function () { return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, nextWeek: function () { return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, lastDay: function () { return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, lastWeek: function () { return ( '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT' ); }, sameElse: 'L', }, relativeTime: { future: 'en %s', past: 'hace %s', s: 'unos segundos', ss: '%d segundos', m: 'un minuto', mm: '%d minutos', h: 'una hora', hh: '%d horas', d: 'un día', dd: '%d días', w: 'una semana', ww: '%d semanas', M: 'un mes', MM: '%d meses', y: 'un año', yy: '%d años', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration var monthsShortDot$3 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( '_' ), monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), monthsParse$5 = [ /^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i, ], monthsRegex$6 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; hooks.defineLocale('es', { months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( '_' ), monthsShort: function (m, format) { if (!m) { return monthsShortDot$3; } else if (/-MMM-/.test(format)) { return monthsShort$4[m.month()]; } else { return monthsShortDot$3[m.month()]; } }, monthsRegex: monthsRegex$6, monthsShortRegex: monthsRegex$6, monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, monthsParse: monthsParse$5, longMonthsParse: monthsParse$5, shortMonthsParse: monthsParse$5, weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD/MM/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY H:mm', LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', }, calendar: { sameDay: function () { return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, nextDay: function () { return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, nextWeek: function () { return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, lastDay: function () { return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, lastWeek: function () { return ( '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT' ); }, sameElse: 'L', }, relativeTime: { future: 'en %s', past: 'hace %s', s: 'unos segundos', ss: '%d segundos', m: 'un minuto', mm: '%d minutos', h: 'una hora', hh: '%d horas', d: 'un día', dd: '%d días', w: 'una semana', ww: '%d semanas', M: 'un mes', MM: '%d meses', y: 'un año', yy: '%d años', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, invalidDate: 'Fecha inválida', }); //! moment.js locale configuration function processRelativeTime$4(number, withoutSuffix, key, isFuture) { var format = { s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], ss: [number + 'sekundi', number + 'sekundit'], m: ['ühe minuti', 'üks minut'], mm: [number + ' minuti', number + ' minutit'], h: ['ühe tunni', 'tund aega', 'üks tund'], hh: [number + ' tunni', number + ' tundi'], d: ['ühe päeva', 'üks päev'], M: ['kuu aja', 'kuu aega', 'üks kuu'], MM: [number + ' kuu', number + ' kuud'], y: ['ühe aasta', 'aasta', 'üks aasta'], yy: [number + ' aasta', number + ' aastat'], }; if (withoutSuffix) { return format[key][2] ? format[key][2] : format[key][1]; } return isFuture ? format[key][0] : format[key][1]; } hooks.defineLocale('et', { months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( '_' ), monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( '_' ), weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[Täna,] LT', nextDay: '[Homme,] LT', nextWeek: '[Järgmine] dddd LT', lastDay: '[Eile,] LT', lastWeek: '[Eelmine] dddd LT', sameElse: 'L', }, relativeTime: { future: '%s pärast', past: '%s tagasi', s: processRelativeTime$4, ss: processRelativeTime$4, m: processRelativeTime$4, mm: processRelativeTime$4, h: processRelativeTime$4, hh: processRelativeTime$4, d: processRelativeTime$4, dd: '%d päeva', M: processRelativeTime$4, MM: processRelativeTime$4, y: processRelativeTime$4, yy: processRelativeTime$4, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('eu', { months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( '_' ), monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( '_' ), monthsParseExact: true, weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( '_' ), weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY-MM-DD', LL: 'YYYY[ko] MMMM[ren] D[a]', LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', l: 'YYYY-M-D', ll: 'YYYY[ko] MMM D[a]', lll: 'YYYY[ko] MMM D[a] HH:mm', llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', }, calendar: { sameDay: '[gaur] LT[etan]', nextDay: '[bihar] LT[etan]', nextWeek: 'dddd LT[etan]', lastDay: '[atzo] LT[etan]', lastWeek: '[aurreko] dddd LT[etan]', sameElse: 'L', }, relativeTime: { future: '%s barru', past: 'duela %s', s: 'segundo batzuk', ss: '%d segundo', m: 'minutu bat', mm: '%d minutu', h: 'ordu bat', hh: '%d ordu', d: 'egun bat', dd: '%d egun', M: 'hilabete bat', MM: '%d hilabete', y: 'urte bat', yy: '%d urte', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$7 = { 1: '۱', 2: '۲', 3: '۳', 4: '۴', 5: '۵', 6: '۶', 7: '۷', 8: '۸', 9: '۹', 0: '۰', }, numberMap$6 = { '۱': '1', '۲': '2', '۳': '3', '۴': '4', '۵': '5', '۶': '6', '۷': '7', '۸': '8', '۹': '9', '۰': '0', }; hooks.defineLocale('fa', { months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( '_' ), monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( '_' ), weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( '_' ), weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( '_' ), weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, meridiemParse: /قبل از ظهر|بعد از ظهر/, isPM: function (input) { return /بعد از ظهر/.test(input); }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'قبل از ظهر'; } else { return 'بعد از ظهر'; } }, calendar: { sameDay: '[امروز ساعت] LT', nextDay: '[فردا ساعت] LT', nextWeek: 'dddd [ساعت] LT', lastDay: '[دیروز ساعت] LT', lastWeek: 'dddd [پیش] [ساعت] LT', sameElse: 'L', }, relativeTime: { future: 'در %s', past: '%s پیش', s: 'چند ثانیه', ss: '%d ثانیه', m: 'یک دقیقه', mm: '%d دقیقه', h: 'یک ساعت', hh: '%d ساعت', d: 'یک روز', dd: '%d روز', M: 'یک ماه', MM: '%d ماه', y: 'یک سال', yy: '%d سال', }, preparse: function (string) { return string .replace(/[۰-۹]/g, function (match) { return numberMap$6[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { return symbolMap$7[match]; }) .replace(/,/g, '،'); }, dayOfMonthOrdinalParse: /\d{1,2}م/, ordinal: '%dم', week: { dow: 6, // Saturday is the first day of the week. doy: 12, // The week that contains Jan 12th is the first week of the year. }, }); //! moment.js locale configuration var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( ' ' ), numbersFuture = [ 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9], ]; function translate$2(number, withoutSuffix, key, isFuture) { var result = ''; switch (key) { case 's': return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; case 'ss': result = isFuture ? 'sekunnin' : 'sekuntia'; break; case 'm': return isFuture ? 'minuutin' : 'minuutti'; case 'mm': result = isFuture ? 'minuutin' : 'minuuttia'; break; case 'h': return isFuture ? 'tunnin' : 'tunti'; case 'hh': result = isFuture ? 'tunnin' : 'tuntia'; break; case 'd': return isFuture ? 'päivän' : 'päivä'; case 'dd': result = isFuture ? 'päivän' : 'päivää'; break; case 'M': return isFuture ? 'kuukauden' : 'kuukausi'; case 'MM': result = isFuture ? 'kuukauden' : 'kuukautta'; break; case 'y': return isFuture ? 'vuoden' : 'vuosi'; case 'yy': result = isFuture ? 'vuoden' : 'vuotta'; break; } result = verbalNumber(number, isFuture) + ' ' + result; return result; } function verbalNumber(number, isFuture) { return number < 10 ? isFuture ? numbersFuture[number] : numbersPast[number] : number; } hooks.defineLocale('fi', { months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( '_' ), monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( '_' ), weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( '_' ), weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), longDateFormat: { LT: 'HH.mm', LTS: 'HH.mm.ss', L: 'DD.MM.YYYY', LL: 'Do MMMM[ta] YYYY', LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', l: 'D.M.YYYY', ll: 'Do MMM YYYY', lll: 'Do MMM YYYY, [klo] HH.mm', llll: 'ddd, Do MMM YYYY, [klo] HH.mm', }, calendar: { sameDay: '[tänään] [klo] LT', nextDay: '[huomenna] [klo] LT', nextWeek: 'dddd [klo] LT', lastDay: '[eilen] [klo] LT', lastWeek: '[viime] dddd[na] [klo] LT', sameElse: 'L', }, relativeTime: { future: '%s päästä', past: '%s sitten', s: translate$2, ss: translate$2, m: translate$2, mm: translate$2, h: translate$2, hh: translate$2, d: translate$2, dd: translate$2, M: translate$2, MM: translate$2, y: translate$2, yy: translate$2, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('fil', { months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( '_' ), monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( '_' ), weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'MM/D/YYYY', LL: 'MMMM D, YYYY', LLL: 'MMMM D, YYYY HH:mm', LLLL: 'dddd, MMMM DD, YYYY HH:mm', }, calendar: { sameDay: 'LT [ngayong araw]', nextDay: '[Bukas ng] LT', nextWeek: 'LT [sa susunod na] dddd', lastDay: 'LT [kahapon]', lastWeek: 'LT [noong nakaraang] dddd', sameElse: 'L', }, relativeTime: { future: 'sa loob ng %s', past: '%s ang nakalipas', s: 'ilang segundo', ss: '%d segundo', m: 'isang minuto', mm: '%d minuto', h: 'isang oras', hh: '%d oras', d: 'isang araw', dd: '%d araw', M: 'isang buwan', MM: '%d buwan', y: 'isang taon', yy: '%d taon', }, dayOfMonthOrdinalParse: /\d{1,2}/, ordinal: function (number) { return number; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('fo', { months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split( '_' ), monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split( '_' ), weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D. MMMM, YYYY HH:mm', }, calendar: { sameDay: '[Í dag kl.] LT', nextDay: '[Í morgin kl.] LT', nextWeek: 'dddd [kl.] LT', lastDay: '[Í gjár kl.] LT', lastWeek: '[síðstu] dddd [kl] LT', sameElse: 'L', }, relativeTime: { future: 'um %s', past: '%s síðani', s: 'fá sekund', ss: '%d sekundir', m: 'ein minuttur', mm: '%d minuttir', h: 'ein tími', hh: '%d tímar', d: 'ein dagur', dd: '%d dagar', M: 'ein mánaður', MM: '%d mánaðir', y: 'eitt ár', yy: '%d ár', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('fr-ca', { months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( '_' ), monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( '_' ), monthsParseExact: true, weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY-MM-DD', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Aujourd’hui à] LT', nextDay: '[Demain à] LT', nextWeek: 'dddd [à] LT', lastDay: '[Hier à] LT', lastWeek: 'dddd [dernier à] LT', sameElse: 'L', }, relativeTime: { future: 'dans %s', past: 'il y a %s', s: 'quelques secondes', ss: '%d secondes', m: 'une minute', mm: '%d minutes', h: 'une heure', hh: '%d heures', d: 'un jour', dd: '%d jours', M: 'un mois', MM: '%d mois', y: 'un an', yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, ordinal: function (number, period) { switch (period) { // Words with masculine grammatical gender: mois, trimestre, jour default: case 'M': case 'Q': case 'D': case 'DDD': case 'd': return number + (number === 1 ? 'er' : 'e'); // Words with feminine grammatical gender: semaine case 'w': case 'W': return number + (number === 1 ? 're' : 'e'); } }, }); //! moment.js locale configuration hooks.defineLocale('fr-ch', { months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( '_' ), monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( '_' ), monthsParseExact: true, weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Aujourd’hui à] LT', nextDay: '[Demain à] LT', nextWeek: 'dddd [à] LT', lastDay: '[Hier à] LT', lastWeek: 'dddd [dernier à] LT', sameElse: 'L', }, relativeTime: { future: 'dans %s', past: 'il y a %s', s: 'quelques secondes', ss: '%d secondes', m: 'une minute', mm: '%d minutes', h: 'une heure', hh: '%d heures', d: 'un jour', dd: '%d jours', M: 'un mois', MM: '%d mois', y: 'un an', yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, ordinal: function (number, period) { switch (period) { // Words with masculine grammatical gender: mois, trimestre, jour default: case 'M': case 'Q': case 'D': case 'DDD': case 'd': return number + (number === 1 ? 'er' : 'e'); // Words with feminine grammatical gender: semaine case 'w': case 'W': return number + (number === 1 ? 're' : 'e'); } }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var monthsStrictRegex$1 = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i, monthsShortStrictRegex$1 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i, monthsRegex$7 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i, monthsParse$6 = [ /^janv/i, /^févr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^août/i, /^sept/i, /^oct/i, /^nov/i, /^déc/i, ]; hooks.defineLocale('fr', { months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( '_' ), monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( '_' ), monthsRegex: monthsRegex$7, monthsShortRegex: monthsRegex$7, monthsStrictRegex: monthsStrictRegex$1, monthsShortStrictRegex: monthsShortStrictRegex$1, monthsParse: monthsParse$6, longMonthsParse: monthsParse$6, shortMonthsParse: monthsParse$6, weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Aujourd’hui à] LT', nextDay: '[Demain à] LT', nextWeek: 'dddd [à] LT', lastDay: '[Hier à] LT', lastWeek: 'dddd [dernier à] LT', sameElse: 'L', }, relativeTime: { future: 'dans %s', past: 'il y a %s', s: 'quelques secondes', ss: '%d secondes', m: 'une minute', mm: '%d minutes', h: 'une heure', hh: '%d heures', d: 'un jour', dd: '%d jours', w: 'une semaine', ww: '%d semaines', M: 'un mois', MM: '%d mois', y: 'un an', yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|)/, ordinal: function (number, period) { switch (period) { // TODO: Return 'e' when day of month > 1. Move this case inside // block for masculine words below. // See https://github.com/moment/moment/issues/3375 case 'D': return number + (number === 1 ? 'er' : ''); // Words with masculine grammatical gender: mois, trimestre, jour default: case 'M': case 'Q': case 'DDD': case 'd': return number + (number === 1 ? 'er' : 'e'); // Words with feminine grammatical gender: semaine case 'w': case 'W': return number + (number === 1 ? 're' : 'e'); } }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); hooks.defineLocale('fy', { months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( '_' ), monthsShort: function (m, format) { if (!m) { return monthsShortWithDots; } else if (/-MMM-/.test(format)) { return monthsShortWithoutDots[m.month()]; } else { return monthsShortWithDots[m.month()]; } }, monthsParseExact: true, weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( '_' ), weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD-MM-YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[hjoed om] LT', nextDay: '[moarn om] LT', nextWeek: 'dddd [om] LT', lastDay: '[juster om] LT', lastWeek: '[ôfrûne] dddd [om] LT', sameElse: 'L', }, relativeTime: { future: 'oer %s', past: '%s lyn', s: 'in pear sekonden', ss: '%d sekonden', m: 'ien minút', mm: '%d minuten', h: 'ien oere', hh: '%d oeren', d: 'ien dei', dd: '%d dagen', M: 'ien moanne', MM: '%d moannen', y: 'ien jier', yy: '%d jierren', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, ordinal: function (number) { return ( number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') ); }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var months$6 = [ 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig', ], monthsShort$5 = [ 'Ean', 'Feabh', 'Márt', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'M.F.', 'D.F.', 'Samh', 'Noll', ], weekdays$1 = [ 'Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn', ], weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; hooks.defineLocale('ga', { months: months$6, monthsShort: monthsShort$5, monthsParseExact: true, weekdays: weekdays$1, weekdaysShort: weekdaysShort, weekdaysMin: weekdaysMin, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Inniu ag] LT', nextDay: '[Amárach ag] LT', nextWeek: 'dddd [ag] LT', lastDay: '[Inné ag] LT', lastWeek: 'dddd [seo caite] [ag] LT', sameElse: 'L', }, relativeTime: { future: 'i %s', past: '%s ó shin', s: 'cúpla soicind', ss: '%d soicind', m: 'nóiméad', mm: '%d nóiméad', h: 'uair an chloig', hh: '%d uair an chloig', d: 'lá', dd: '%d lá', M: 'mí', MM: '%d míonna', y: 'bliain', yy: '%d bliain', }, dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, ordinal: function (number) { var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var months$7 = [ 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd', ], monthsShort$6 = [ 'Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh', ], weekdays$2 = [ 'Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne', ], weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; hooks.defineLocale('gd', { months: months$7, monthsShort: monthsShort$6, monthsParseExact: true, weekdays: weekdays$2, weekdaysShort: weekdaysShort$1, weekdaysMin: weekdaysMin$1, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[An-diugh aig] LT', nextDay: '[A-màireach aig] LT', nextWeek: 'dddd [aig] LT', lastDay: '[An-dè aig] LT', lastWeek: 'dddd [seo chaidh] [aig] LT', sameElse: 'L', }, relativeTime: { future: 'ann an %s', past: 'bho chionn %s', s: 'beagan diogan', ss: '%d diogan', m: 'mionaid', mm: '%d mionaidean', h: 'uair', hh: '%d uairean', d: 'latha', dd: '%d latha', M: 'mìos', MM: '%d mìosan', y: 'bliadhna', yy: '%d bliadhna', }, dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, ordinal: function (number) { var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('gl', { months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( '_' ), monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( '_' ), monthsParseExact: true, weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD/MM/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY H:mm', LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', }, calendar: { sameDay: function () { return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; }, nextDay: function () { return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; }, nextWeek: function () { return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; }, lastDay: function () { return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; }, lastWeek: function () { return ( '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' ); }, sameElse: 'L', }, relativeTime: { future: function (str) { if (str.indexOf('un') === 0) { return 'n' + str; } return 'en ' + str; }, past: 'hai %s', s: 'uns segundos', ss: '%d segundos', m: 'un minuto', mm: '%d minutos', h: 'unha hora', hh: '%d horas', d: 'un día', dd: '%d días', M: 'un mes', MM: '%d meses', y: 'un ano', yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration function processRelativeTime$5(number, withoutSuffix, key, isFuture) { var format = { s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], m: ['एका मिणटान', 'एक मिनूट'], mm: [number + ' मिणटांनी', number + ' मिणटां'], h: ['एका वरान', 'एक वर'], hh: [number + ' वरांनी', number + ' वरां'], d: ['एका दिसान', 'एक दीस'], dd: [number + ' दिसांनी', number + ' दीस'], M: ['एका म्हयन्यान', 'एक म्हयनो'], MM: [number + ' म्हयन्यानी', number + ' म्हयने'], y: ['एका वर्सान', 'एक वर्स'], yy: [number + ' वर्सांनी', number + ' वर्सां'], }; return isFuture ? format[key][0] : format[key][1]; } hooks.defineLocale('gom-deva', { months: { standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( '_' ), format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split( '_' ), isFormat: /MMMM(\s)+D[oD]?/, }, monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( '_' ), monthsParseExact: true, weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'), weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'), weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'A h:mm [वाजतां]', LTS: 'A h:mm:ss [वाजतां]', L: 'DD-MM-YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY A h:mm [वाजतां]', LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]', llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]', }, calendar: { sameDay: '[आयज] LT', nextDay: '[फाल्यां] LT', nextWeek: '[फुडलो] dddd[,] LT', lastDay: '[काल] LT', lastWeek: '[फाटलो] dddd[,] LT', sameElse: 'L', }, relativeTime: { future: '%s', past: '%s आदीं', s: processRelativeTime$5, ss: processRelativeTime$5, m: processRelativeTime$5, mm: processRelativeTime$5, h: processRelativeTime$5, hh: processRelativeTime$5, d: processRelativeTime$5, dd: processRelativeTime$5, M: processRelativeTime$5, MM: processRelativeTime$5, y: processRelativeTime$5, yy: processRelativeTime$5, }, dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, ordinal: function (number, period) { switch (period) { // the ordinal 'वेर' only applies to day of the month case 'D': return number + 'वेर'; default: case 'M': case 'Q': case 'DDD': case 'd': case 'w': case 'W': return number; } }, week: { dow: 0, // Sunday is the first day of the week doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4) }, meridiemParse: /राती|सकाळीं|दनपारां|सांजे/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'राती') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'सकाळीं') { return hour; } else if (meridiem === 'दनपारां') { return hour > 12 ? hour : hour + 12; } else if (meridiem === 'सांजे') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'राती'; } else if (hour < 12) { return 'सकाळीं'; } else if (hour < 16) { return 'दनपारां'; } else if (hour < 20) { return 'सांजे'; } else { return 'राती'; } }, }); //! moment.js locale configuration function processRelativeTime$6(number, withoutSuffix, key, isFuture) { var format = { s: ['thoddea sekondamni', 'thodde sekond'], ss: [number + ' sekondamni', number + ' sekond'], m: ['eka mintan', 'ek minut'], mm: [number + ' mintamni', number + ' mintam'], h: ['eka voran', 'ek vor'], hh: [number + ' voramni', number + ' voram'], d: ['eka disan', 'ek dis'], dd: [number + ' disamni', number + ' dis'], M: ['eka mhoinean', 'ek mhoino'], MM: [number + ' mhoineamni', number + ' mhoine'], y: ['eka vorsan', 'ek voros'], yy: [number + ' vorsamni', number + ' vorsam'], }; return isFuture ? format[key][0] : format[key][1]; } hooks.defineLocale('gom-latn', { months: { standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( '_' ), format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( '_' ), isFormat: /MMMM(\s)+D[oD]?/, }, monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), monthsParseExact: true, weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'A h:mm [vazta]', LTS: 'A h:mm:ss [vazta]', L: 'DD-MM-YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY A h:mm [vazta]', LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', llll: 'ddd, D MMM YYYY, A h:mm [vazta]', }, calendar: { sameDay: '[Aiz] LT', nextDay: '[Faleam] LT', nextWeek: '[Fuddlo] dddd[,] LT', lastDay: '[Kal] LT', lastWeek: '[Fattlo] dddd[,] LT', sameElse: 'L', }, relativeTime: { future: '%s', past: '%s adim', s: processRelativeTime$6, ss: processRelativeTime$6, m: processRelativeTime$6, mm: processRelativeTime$6, h: processRelativeTime$6, hh: processRelativeTime$6, d: processRelativeTime$6, dd: processRelativeTime$6, M: processRelativeTime$6, MM: processRelativeTime$6, y: processRelativeTime$6, yy: processRelativeTime$6, }, dayOfMonthOrdinalParse: /\d{1,2}(er)/, ordinal: function (number, period) { switch (period) { // the ordinal 'er' only applies to day of the month case 'D': return number + 'er'; default: case 'M': case 'Q': case 'DDD': case 'd': case 'w': case 'W': return number; } }, week: { dow: 0, // Sunday is the first day of the week doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4) }, meridiemParse: /rati|sokallim|donparam|sanje/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'rati') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'sokallim') { return hour; } else if (meridiem === 'donparam') { return hour > 12 ? hour : hour + 12; } else if (meridiem === 'sanje') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'rati'; } else if (hour < 12) { return 'sokallim'; } else if (hour < 16) { return 'donparam'; } else if (hour < 20) { return 'sanje'; } else { return 'rati'; } }, }); //! moment.js locale configuration var symbolMap$8 = { 1: '૧', 2: '૨', 3: '૩', 4: '૪', 5: '૫', 6: '૬', 7: '૭', 8: '૮', 9: '૯', 0: '૦', }, numberMap$7 = { '૧': '1', '૨': '2', '૩': '3', '૪': '4', '૫': '5', '૬': '6', '૭': '7', '૮': '8', '૯': '9', '૦': '0', }; hooks.defineLocale('gu', { months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split( '_' ), monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split( '_' ), monthsParseExact: true, weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split( '_' ), weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), longDateFormat: { LT: 'A h:mm વાગ્યે', LTS: 'A h:mm:ss વાગ્યે', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm વાગ્યે', LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે', }, calendar: { sameDay: '[આજ] LT', nextDay: '[કાલે] LT', nextWeek: 'dddd, LT', lastDay: '[ગઇકાલે] LT', lastWeek: '[પાછલા] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s મા', past: '%s પહેલા', s: 'અમુક પળો', ss: '%d સેકંડ', m: 'એક મિનિટ', mm: '%d મિનિટ', h: 'એક કલાક', hh: '%d કલાક', d: 'એક દિવસ', dd: '%d દિવસ', M: 'એક મહિનો', MM: '%d મહિનો', y: 'એક વર્ષ', yy: '%d વર્ષ', }, preparse: function (string) { return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { return numberMap$7[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$8[match]; }); }, // Gujarati notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati. meridiemParse: /રાત|બપોર|સવાર|સાંજ/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'રાત') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'સવાર') { return hour; } else if (meridiem === 'બપોર') { return hour >= 10 ? hour : hour + 12; } else if (meridiem === 'સાંજ') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'રાત'; } else if (hour < 10) { return 'સવાર'; } else if (hour < 17) { return 'બપોર'; } else if (hour < 20) { return 'સાંજ'; } else { return 'રાત'; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('he', { months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split( '_' ), monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D [ב]MMMM YYYY', LLL: 'D [ב]MMMM YYYY HH:mm', LLLL: 'dddd, D [ב]MMMM YYYY HH:mm', l: 'D/M/YYYY', ll: 'D MMM YYYY', lll: 'D MMM YYYY HH:mm', llll: 'ddd, D MMM YYYY HH:mm', }, calendar: { sameDay: '[היום ב־]LT', nextDay: '[מחר ב־]LT', nextWeek: 'dddd [בשעה] LT', lastDay: '[אתמול ב־]LT', lastWeek: '[ביום] dddd [האחרון בשעה] LT', sameElse: 'L', }, relativeTime: { future: 'בעוד %s', past: 'לפני %s', s: 'מספר שניות', ss: '%d שניות', m: 'דקה', mm: '%d דקות', h: 'שעה', hh: function (number) { if (number === 2) { return 'שעתיים'; } return number + ' שעות'; }, d: 'יום', dd: function (number) { if (number === 2) { return 'יומיים'; } return number + ' ימים'; }, M: 'חודש', MM: function (number) { if (number === 2) { return 'חודשיים'; } return number + ' חודשים'; }, y: 'שנה', yy: function (number) { if (number === 2) { return 'שנתיים'; } else if (number % 10 === 0 && number !== 10) { return number + ' שנה'; } return number + ' שנים'; }, }, meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, isPM: function (input) { return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); }, meridiem: function (hour, minute, isLower) { if (hour < 5) { return 'לפנות בוקר'; } else if (hour < 10) { return 'בבוקר'; } else if (hour < 12) { return isLower ? 'לפנה"צ' : 'לפני הצהריים'; } else if (hour < 18) { return isLower ? 'אחה"צ' : 'אחרי הצהריים'; } else { return 'בערב'; } }, }); //! moment.js locale configuration var symbolMap$9 = { 1: '१', 2: '२', 3: '३', 4: '४', 5: '५', 6: '६', 7: '७', 8: '८', 9: '९', 0: '०', }, numberMap$8 = { '१': '1', '२': '2', '३': '3', '४': '4', '५': '5', '६': '6', '७': '7', '८': '8', '९': '9', '०': '0', }, monthsParse$7 = [ /^जन/i, /^फ़र|फर/i, /^मार्च/i, /^अप्रै/i, /^मई/i, /^जून/i, /^जुल/i, /^अग/i, /^सितं|सित/i, /^अक्टू/i, /^नव|नवं/i, /^दिसं|दिस/i, ], shortMonthsParse = [ /^जन/i, /^फ़र/i, /^मार्च/i, /^अप्रै/i, /^मई/i, /^जून/i, /^जुल/i, /^अग/i, /^सित/i, /^अक्टू/i, /^नव/i, /^दिस/i, ]; hooks.defineLocale('hi', { months: { format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( '_' ), standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split( '_' ), }, monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), longDateFormat: { LT: 'A h:mm बजे', LTS: 'A h:mm:ss बजे', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm बजे', LLLL: 'dddd, D MMMM YYYY, A h:mm बजे', }, monthsParse: monthsParse$7, longMonthsParse: monthsParse$7, shortMonthsParse: shortMonthsParse, monthsRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i, monthsShortRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i, monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i, monthsShortStrictRegex: /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i, calendar: { sameDay: '[आज] LT', nextDay: '[कल] LT', nextWeek: 'dddd, LT', lastDay: '[कल] LT', lastWeek: '[पिछले] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s में', past: '%s पहले', s: 'कुछ ही क्षण', ss: '%d सेकंड', m: 'एक मिनट', mm: '%d मिनट', h: 'एक घंटा', hh: '%d घंटे', d: 'एक दिन', dd: '%d दिन', M: 'एक महीने', MM: '%d महीने', y: 'एक वर्ष', yy: '%d वर्ष', }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { return numberMap$8[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$9[match]; }); }, // Hindi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. meridiemParse: /रात|सुबह|दोपहर|शाम/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'रात') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'सुबह') { return hour; } else if (meridiem === 'दोपहर') { return hour >= 10 ? hour : hour + 12; } else if (meridiem === 'शाम') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'रात'; } else if (hour < 10) { return 'सुबह'; } else if (hour < 17) { return 'दोपहर'; } else if (hour < 20) { return 'शाम'; } else { return 'रात'; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration function translate$3(number, withoutSuffix, key) { var result = number + ' '; switch (key) { case 'ss': if (number === 1) { result += 'sekunda'; } else if (number === 2 || number === 3 || number === 4) { result += 'sekunde'; } else { result += 'sekundi'; } return result; case 'm': return withoutSuffix ? 'jedna minuta' : 'jedne minute'; case 'mm': if (number === 1) { result += 'minuta'; } else if (number === 2 || number === 3 || number === 4) { result += 'minute'; } else { result += 'minuta'; } return result; case 'h': return withoutSuffix ? 'jedan sat' : 'jednog sata'; case 'hh': if (number === 1) { result += 'sat'; } else if (number === 2 || number === 3 || number === 4) { result += 'sata'; } else { result += 'sati'; } return result; case 'dd': if (number === 1) { result += 'dan'; } else { result += 'dana'; } return result; case 'MM': if (number === 1) { result += 'mjesec'; } else if (number === 2 || number === 3 || number === 4) { result += 'mjeseca'; } else { result += 'mjeseci'; } return result; case 'yy': if (number === 1) { result += 'godina'; } else if (number === 2 || number === 3 || number === 4) { result += 'godine'; } else { result += 'godina'; } return result; } } hooks.defineLocale('hr', { months: { format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( '_' ), standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( '_' ), }, monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( '_' ), monthsParseExact: true, weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( '_' ), weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'Do MMMM YYYY', LLL: 'Do MMMM YYYY H:mm', LLLL: 'dddd, Do MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', nextDay: '[sutra u] LT', nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; case 3: return '[u] [srijedu] [u] LT'; case 6: return '[u] [subotu] [u] LT'; case 1: case 2: case 4: case 5: return '[u] dddd [u] LT'; } }, lastDay: '[jučer u] LT', lastWeek: function () { switch (this.day()) { case 0: return '[prošlu] [nedjelju] [u] LT'; case 3: return '[prošlu] [srijedu] [u] LT'; case 6: return '[prošle] [subote] [u] LT'; case 1: case 2: case 4: case 5: return '[prošli] dddd [u] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'za %s', past: 'prije %s', s: 'par sekundi', ss: translate$3, m: translate$3, mm: translate$3, h: translate$3, hh: translate$3, d: 'dan', dd: translate$3, M: 'mjesec', MM: translate$3, y: 'godinu', yy: translate$3, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); function translate$4(number, withoutSuffix, key, isFuture) { var num = number; switch (key) { case 's': return isFuture || withoutSuffix ? 'néhány másodperc' : 'néhány másodperce'; case 'ss': return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce'; case 'm': return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); case 'mm': return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); case 'h': return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); case 'hh': return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); case 'd': return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); case 'dd': return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); case 'M': return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); case 'MM': return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); case 'y': return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); case 'yy': return num + (isFuture || withoutSuffix ? ' év' : ' éve'); } return ''; } function week(isFuture) { return ( (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]' ); } hooks.defineLocale('hu', { months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( '_' ), monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split( '_' ), monthsParseExact: true, weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'YYYY.MM.DD.', LL: 'YYYY. MMMM D.', LLL: 'YYYY. MMMM D. H:mm', LLLL: 'YYYY. MMMM D., dddd H:mm', }, meridiemParse: /de|du/i, isPM: function (input) { return input.charAt(1).toLowerCase() === 'u'; }, meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower === true ? 'de' : 'DE'; } else { return isLower === true ? 'du' : 'DU'; } }, calendar: { sameDay: '[ma] LT[-kor]', nextDay: '[holnap] LT[-kor]', nextWeek: function () { return week.call(this, true); }, lastDay: '[tegnap] LT[-kor]', lastWeek: function () { return week.call(this, false); }, sameElse: 'L', }, relativeTime: { future: '%s múlva', past: '%s', s: translate$4, ss: translate$4, m: translate$4, mm: translate$4, h: translate$4, hh: translate$4, d: translate$4, dd: translate$4, M: translate$4, MM: translate$4, y: translate$4, yy: translate$4, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('hy-am', { months: { format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split( '_' ), standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split( '_' ), }, monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split( '_' ), weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY թ.', LLL: 'D MMMM YYYY թ., HH:mm', LLLL: 'dddd, D MMMM YYYY թ., HH:mm', }, calendar: { sameDay: '[այսօր] LT', nextDay: '[վաղը] LT', lastDay: '[երեկ] LT', nextWeek: function () { return 'dddd [օրը ժամը] LT'; }, lastWeek: function () { return '[անցած] dddd [օրը ժամը] LT'; }, sameElse: 'L', }, relativeTime: { future: '%s հետո', past: '%s առաջ', s: 'մի քանի վայրկյան', ss: '%d վայրկյան', m: 'րոպե', mm: '%d րոպե', h: 'ժամ', hh: '%d ժամ', d: 'օր', dd: '%d օր', M: 'ամիս', MM: '%d ամիս', y: 'տարի', yy: '%d տարի', }, meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, isPM: function (input) { return /^(ցերեկվա|երեկոյան)$/.test(input); }, meridiem: function (hour) { if (hour < 4) { return 'գիշերվա'; } else if (hour < 12) { return 'առավոտվա'; } else if (hour < 17) { return 'ցերեկվա'; } else { return 'երեկոյան'; } }, dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, ordinal: function (number, period) { switch (period) { case 'DDD': case 'w': case 'W': case 'DDDo': if (number === 1) { return number + '-ին'; } return number + '-րդ'; default: return number; } }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('id', { months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), longDateFormat: { LT: 'HH.mm', LTS: 'HH.mm.ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [pukul] HH.mm', LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|siang|sore|malam/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'pagi') { return hour; } else if (meridiem === 'siang') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === 'sore' || meridiem === 'malam') { return hour + 12; } }, meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { return 'siang'; } else if (hours < 19) { return 'sore'; } else { return 'malam'; } }, calendar: { sameDay: '[Hari ini pukul] LT', nextDay: '[Besok pukul] LT', nextWeek: 'dddd [pukul] LT', lastDay: '[Kemarin pukul] LT', lastWeek: 'dddd [lalu pukul] LT', sameElse: 'L', }, relativeTime: { future: 'dalam %s', past: '%s yang lalu', s: 'beberapa detik', ss: '%d detik', m: 'semenit', mm: '%d menit', h: 'sejam', hh: '%d jam', d: 'sehari', dd: '%d hari', M: 'sebulan', MM: '%d bulan', y: 'setahun', yy: '%d tahun', }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration function plural$2(n) { if (n % 100 === 11) { return true; } else if (n % 10 === 1) { return false; } return true; } function translate$5(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; case 'ss': if (plural$2(number)) { return ( result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') ); } return result + 'sekúnda'; case 'm': return withoutSuffix ? 'mínúta' : 'mínútu'; case 'mm': if (plural$2(number)) { return ( result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum') ); } else if (withoutSuffix) { return result + 'mínúta'; } return result + 'mínútu'; case 'hh': if (plural$2(number)) { return ( result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum') ); } return result + 'klukkustund'; case 'd': if (withoutSuffix) { return 'dagur'; } return isFuture ? 'dag' : 'degi'; case 'dd': if (plural$2(number)) { if (withoutSuffix) { return result + 'dagar'; } return result + (isFuture ? 'daga' : 'dögum'); } else if (withoutSuffix) { return result + 'dagur'; } return result + (isFuture ? 'dag' : 'degi'); case 'M': if (withoutSuffix) { return 'mánuður'; } return isFuture ? 'mánuð' : 'mánuði'; case 'MM': if (plural$2(number)) { if (withoutSuffix) { return result + 'mánuðir'; } return result + (isFuture ? 'mánuði' : 'mánuðum'); } else if (withoutSuffix) { return result + 'mánuður'; } return result + (isFuture ? 'mánuð' : 'mánuði'); case 'y': return withoutSuffix || isFuture ? 'ár' : 'ári'; case 'yy': if (plural$2(number)) { return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); } return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); } } hooks.defineLocale('is', { months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split( '_' ), monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( '_' ), weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY [kl.] H:mm', LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', }, calendar: { sameDay: '[í dag kl.] LT', nextDay: '[á morgun kl.] LT', nextWeek: 'dddd [kl.] LT', lastDay: '[í gær kl.] LT', lastWeek: '[síðasta] dddd [kl.] LT', sameElse: 'L', }, relativeTime: { future: 'eftir %s', past: 'fyrir %s síðan', s: translate$5, ss: translate$5, m: translate$5, mm: translate$5, h: 'klukkustund', hh: translate$5, d: translate$5, dd: translate$5, M: translate$5, MM: translate$5, y: translate$5, yy: translate$5, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('it-ch', { months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( '_' ), monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( '_' ), weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Oggi alle] LT', nextDay: '[Domani alle] LT', nextWeek: 'dddd [alle] LT', lastDay: '[Ieri alle] LT', lastWeek: function () { switch (this.day()) { case 0: return '[la scorsa] dddd [alle] LT'; default: return '[lo scorso] dddd [alle] LT'; } }, sameElse: 'L', }, relativeTime: { future: function (s) { return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; }, past: '%s fa', s: 'alcuni secondi', ss: '%d secondi', m: 'un minuto', mm: '%d minuti', h: "un'ora", hh: '%d ore', d: 'un giorno', dd: '%d giorni', M: 'un mese', MM: '%d mesi', y: 'un anno', yy: '%d anni', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('it', { months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( '_' ), monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( '_' ), weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: function () { return ( '[Oggi a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT' ); }, nextDay: function () { return ( '[Domani a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT' ); }, nextWeek: function () { return ( 'dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT' ); }, lastDay: function () { return ( '[Ieri a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT' ); }, lastWeek: function () { switch (this.day()) { case 0: return ( '[La scorsa] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT' ); default: return ( '[Lo scorso] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT' ); } }, sameElse: 'L', }, relativeTime: { future: 'tra %s', past: '%s fa', s: 'alcuni secondi', ss: '%d secondi', m: 'un minuto', mm: '%d minuti', h: "un'ora", hh: '%d ore', d: 'un giorno', dd: '%d giorni', w: 'una settimana', ww: '%d settimane', M: 'un mese', MM: '%d mesi', y: 'un anno', yy: '%d anni', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ja', { eras: [ { since: '2019-05-01', offset: 1, name: '令和', narrow: '㋿', abbr: 'R', }, { since: '1989-01-08', until: '2019-04-30', offset: 1, name: '平成', narrow: '㍻', abbr: 'H', }, { since: '1926-12-25', until: '1989-01-07', offset: 1, name: '昭和', narrow: '㍼', abbr: 'S', }, { since: '1912-07-30', until: '1926-12-24', offset: 1, name: '大正', narrow: '㍽', abbr: 'T', }, { since: '1873-01-01', until: '1912-07-29', offset: 6, name: '明治', narrow: '㍾', abbr: 'M', }, { since: '0001-01-01', until: '1873-12-31', offset: 1, name: '西暦', narrow: 'AD', abbr: 'AD', }, { since: '0000-12-31', until: -Infinity, offset: 1, name: '紀元前', narrow: 'BC', abbr: 'BC', }, ], eraYearOrdinalRegex: /(元|\d+)年/, eraYearOrdinalParse: function (input, match) { return match[1] === '元' ? 1 : parseInt(match[1] || input, 10); }, months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( '_' ), weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), weekdaysShort: '日_月_火_水_木_金_土'.split('_'), weekdaysMin: '日_月_火_水_木_金_土'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY/MM/DD', LL: 'YYYY年M月D日', LLL: 'YYYY年M月D日 HH:mm', LLLL: 'YYYY年M月D日 dddd HH:mm', l: 'YYYY/MM/DD', ll: 'YYYY年M月D日', lll: 'YYYY年M月D日 HH:mm', llll: 'YYYY年M月D日(ddd) HH:mm', }, meridiemParse: /午前|午後/i, isPM: function (input) { return input === '午後'; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return '午前'; } else { return '午後'; } }, calendar: { sameDay: '[今日] LT', nextDay: '[明日] LT', nextWeek: function (now) { if (now.week() !== this.week()) { return '[来週]dddd LT'; } else { return 'dddd LT'; } }, lastDay: '[昨日] LT', lastWeek: function (now) { if (this.week() !== now.week()) { return '[先週]dddd LT'; } else { return 'dddd LT'; } }, sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}日/, ordinal: function (number, period) { switch (period) { case 'y': return number === 1 ? '元年' : number + '年'; case 'd': case 'D': case 'DDD': return number + '日'; default: return number; } }, relativeTime: { future: '%s後', past: '%s前', s: '数秒', ss: '%d秒', m: '1分', mm: '%d分', h: '1時間', hh: '%d時間', d: '1日', dd: '%d日', M: '1ヶ月', MM: '%dヶ月', y: '1年', yy: '%d年', }, }); //! moment.js locale configuration hooks.defineLocale('jv', { months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( '_' ), monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), longDateFormat: { LT: 'HH.mm', LTS: 'HH.mm.ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [pukul] HH.mm', LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /enjing|siyang|sonten|ndalu/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'enjing') { return hour; } else if (meridiem === 'siyang') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === 'sonten' || meridiem === 'ndalu') { return hour + 12; } }, meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'enjing'; } else if (hours < 15) { return 'siyang'; } else if (hours < 19) { return 'sonten'; } else { return 'ndalu'; } }, calendar: { sameDay: '[Dinten puniko pukul] LT', nextDay: '[Mbenjang pukul] LT', nextWeek: 'dddd [pukul] LT', lastDay: '[Kala wingi pukul] LT', lastWeek: 'dddd [kepengker pukul] LT', sameElse: 'L', }, relativeTime: { future: 'wonten ing %s', past: '%s ingkang kepengker', s: 'sawetawis detik', ss: '%d detik', m: 'setunggal menit', mm: '%d menit', h: 'setunggal jam', hh: '%d jam', d: 'sedinten', dd: '%d dinten', M: 'sewulan', MM: '%d wulan', y: 'setaun', yy: '%d taun', }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ka', { months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split( '_' ), monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), weekdays: { standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split( '_' ), format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split( '_' ), isFormat: /(წინა|შემდეგ)/, }, weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[დღეს] LT[-ზე]', nextDay: '[ხვალ] LT[-ზე]', lastDay: '[გუშინ] LT[-ზე]', nextWeek: '[შემდეგ] dddd LT[-ზე]', lastWeek: '[წინა] dddd LT-ზე', sameElse: 'L', }, relativeTime: { future: function (s) { return s.replace( /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ($0, $1, $2) { return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში'; } ); }, past: function (s) { if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) { return s.replace(/(ი|ე)$/, 'ის წინ'); } if (/წელი/.test(s)) { return s.replace(/წელი$/, 'წლის წინ'); } return s; }, s: 'რამდენიმე წამი', ss: '%d წამი', m: 'წუთი', mm: '%d წუთი', h: 'საათი', hh: '%d საათი', d: 'დღე', dd: '%d დღე', M: 'თვე', MM: '%d თვე', y: 'წელი', yy: '%d წელი', }, dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, ordinal: function (number) { if (number === 0) { return number; } if (number === 1) { return number + '-ლი'; } if ( number < 20 || (number <= 100 && number % 20 === 0) || number % 100 === 0 ) { return 'მე-' + number; } return number + '-ე'; }, week: { dow: 1, doy: 7, }, }); //! moment.js locale configuration var suffixes$1 = { 0: '-ші', 1: '-ші', 2: '-ші', 3: '-ші', 4: '-ші', 5: '-ші', 6: '-шы', 7: '-ші', 8: '-ші', 9: '-шы', 10: '-шы', 20: '-шы', 30: '-шы', 40: '-шы', 50: '-ші', 60: '-шы', 70: '-ші', 80: '-ші', 90: '-шы', 100: '-ші', }; hooks.defineLocale('kk', { months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split( '_' ), monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split( '_' ), weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Бүгін сағат] LT', nextDay: '[Ертең сағат] LT', nextWeek: 'dddd [сағат] LT', lastDay: '[Кеше сағат] LT', lastWeek: '[Өткен аптаның] dddd [сағат] LT', sameElse: 'L', }, relativeTime: { future: '%s ішінде', past: '%s бұрын', s: 'бірнеше секунд', ss: '%d секунд', m: 'бір минут', mm: '%d минут', h: 'бір сағат', hh: '%d сағат', d: 'бір күн', dd: '%d күн', M: 'бір ай', MM: '%d ай', y: 'бір жыл', yy: '%d жыл', }, dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]); }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$a = { 1: '១', 2: '២', 3: '៣', 4: '៤', 5: '៥', 6: '៦', 7: '៧', 8: '៨', 9: '៩', 0: '០', }, numberMap$9 = { '១': '1', '២': '2', '៣': '3', '៤': '4', '៥': '5', '៦': '6', '៧': '7', '៨': '8', '៩': '9', '០': '0', }; hooks.defineLocale('km', { months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( '_' ), monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( '_' ), weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, meridiemParse: /ព្រឹក|ល្ងាច/, isPM: function (input) { return input === 'ល្ងាច'; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ព្រឹក'; } else { return 'ល្ងាច'; } }, calendar: { sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', nextDay: '[ស្អែក ម៉ោង] LT', nextWeek: 'dddd [ម៉ោង] LT', lastDay: '[ម្សិលមិញ ម៉ោង] LT', lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', sameElse: 'L', }, relativeTime: { future: '%sទៀត', past: '%sមុន', s: 'ប៉ុន្មានវិនាទី', ss: '%d វិនាទី', m: 'មួយនាទី', mm: '%d នាទី', h: 'មួយម៉ោង', hh: '%d ម៉ោង', d: 'មួយថ្ងៃ', dd: '%d ថ្ងៃ', M: 'មួយខែ', MM: '%d ខែ', y: 'មួយឆ្នាំ', yy: '%d ឆ្នាំ', }, dayOfMonthOrdinalParse: /ទី\d{1,2}/, ordinal: 'ទី%d', preparse: function (string) { return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { return numberMap$9[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$a[match]; }); }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$b = { 1: '೧', 2: '೨', 3: '೩', 4: '೪', 5: '೫', 6: '೬', 7: '೭', 8: '೮', 9: '೯', 0: '೦', }, numberMap$a = { '೧': '1', '೨': '2', '೩': '3', '೪': '4', '೫': '5', '೬': '6', '೭': '7', '೮': '8', '೯': '9', '೦': '0', }; hooks.defineLocale('kn', { months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split( '_' ), monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split( '_' ), monthsParseExact: true, weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split( '_' ), weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), longDateFormat: { LT: 'A h:mm', LTS: 'A h:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm', LLLL: 'dddd, D MMMM YYYY, A h:mm', }, calendar: { sameDay: '[ಇಂದು] LT', nextDay: '[ನಾಳೆ] LT', nextWeek: 'dddd, LT', lastDay: '[ನಿನ್ನೆ] LT', lastWeek: '[ಕೊನೆಯ] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s ನಂತರ', past: '%s ಹಿಂದೆ', s: 'ಕೆಲವು ಕ್ಷಣಗಳು', ss: '%d ಸೆಕೆಂಡುಗಳು', m: 'ಒಂದು ನಿಮಿಷ', mm: '%d ನಿಮಿಷ', h: 'ಒಂದು ಗಂಟೆ', hh: '%d ಗಂಟೆ', d: 'ಒಂದು ದಿನ', dd: '%d ದಿನ', M: 'ಒಂದು ತಿಂಗಳು', MM: '%d ತಿಂಗಳು', y: 'ಒಂದು ವರ್ಷ', yy: '%d ವರ್ಷ', }, preparse: function (string) { return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { return numberMap$a[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$b[match]; }); }, meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'ರಾತ್ರಿ') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { return hour; } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { return hour >= 10 ? hour : hour + 12; } else if (meridiem === 'ಸಂಜೆ') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ರಾತ್ರಿ'; } else if (hour < 10) { return 'ಬೆಳಿಗ್ಗೆ'; } else if (hour < 17) { return 'ಮಧ್ಯಾಹ್ನ'; } else if (hour < 20) { return 'ಸಂಜೆ'; } else { return 'ರಾತ್ರಿ'; } }, dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, ordinal: function (number) { return number + 'ನೇ'; }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ko', { months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split( '_' ), weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), weekdaysShort: '일_월_화_수_목_금_토'.split('_'), weekdaysMin: '일_월_화_수_목_금_토'.split('_'), longDateFormat: { LT: 'A h:mm', LTS: 'A h:mm:ss', L: 'YYYY.MM.DD.', LL: 'YYYY년 MMMM D일', LLL: 'YYYY년 MMMM D일 A h:mm', LLLL: 'YYYY년 MMMM D일 dddd A h:mm', l: 'YYYY.MM.DD.', ll: 'YYYY년 MMMM D일', lll: 'YYYY년 MMMM D일 A h:mm', llll: 'YYYY년 MMMM D일 dddd A h:mm', }, calendar: { sameDay: '오늘 LT', nextDay: '내일 LT', nextWeek: 'dddd LT', lastDay: '어제 LT', lastWeek: '지난주 dddd LT', sameElse: 'L', }, relativeTime: { future: '%s 후', past: '%s 전', s: '몇 초', ss: '%d초', m: '1분', mm: '%d분', h: '한 시간', hh: '%d시간', d: '하루', dd: '%d일', M: '한 달', MM: '%d달', y: '일 년', yy: '%d년', }, dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'DDD': return number + '일'; case 'M': return number + '월'; case 'w': case 'W': return number + '주'; default: return number; } }, meridiemParse: /오전|오후/, isPM: function (token) { return token === '오후'; }, meridiem: function (hour, minute, isUpper) { return hour < 12 ? '오전' : '오후'; }, }); //! moment.js locale configuration function processRelativeTime$7(num, withoutSuffix, key, isFuture) { var format = { s: ['çend sanîye', 'çend sanîyeyan'], ss: [num + ' sanîye', num + ' sanîyeyan'], m: ['deqîqeyek', 'deqîqeyekê'], mm: [num + ' deqîqe', num + ' deqîqeyan'], h: ['saetek', 'saetekê'], hh: [num + ' saet', num + ' saetan'], d: ['rojek', 'rojekê'], dd: [num + ' roj', num + ' rojan'], w: ['hefteyek', 'hefteyekê'], ww: [num + ' hefte', num + ' hefteyan'], M: ['mehek', 'mehekê'], MM: [num + ' meh', num + ' mehan'], y: ['salek', 'salekê'], yy: [num + ' sal', num + ' salan'], }; return withoutSuffix ? format[key][0] : format[key][1]; } // function obliqueNumSuffix(num) { // if(num.includes(':')) // num = parseInt(num.split(':')[0]); // else // num = parseInt(num); // return num == 0 || num % 10 == 1 ? 'ê' // : (num > 10 && num % 10 == 0 ? 'î' : 'an'); // } function ezafeNumSuffix(num) { num = '' + num; var l = num.substring(num.length - 1), ll = num.length > 1 ? num.substring(num.length - 2) : ''; if ( !(ll == 12 || ll == 13) && (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80') ) return 'yê'; return 'ê'; } hooks.defineLocale('ku-kmr', { // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation) // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn' // But the names below are more well known and handy months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split( '_' ), monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'), monthsParseExact: true, weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'), weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'), weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'), meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'bn' : 'BN'; } else { return isLower ? 'pn' : 'PN'; } }, meridiemParse: /bn|BN|pn|PN/, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'Do MMMM[a] YYYY[an]', LLL: 'Do MMMM[a] YYYY[an] HH:mm', LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm', ll: 'Do MMM[.] YYYY[an]', lll: 'Do MMM[.] YYYY[an] HH:mm', llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm', }, calendar: { sameDay: '[Îro di saet] LT [de]', nextDay: '[Sibê di saet] LT [de]', nextWeek: 'dddd [di saet] LT [de]', lastDay: '[Duh di saet] LT [de]', lastWeek: 'dddd[a borî di saet] LT [de]', sameElse: 'L', }, relativeTime: { future: 'di %s de', past: 'berî %s', s: processRelativeTime$7, ss: processRelativeTime$7, m: processRelativeTime$7, mm: processRelativeTime$7, h: processRelativeTime$7, hh: processRelativeTime$7, d: processRelativeTime$7, dd: processRelativeTime$7, w: processRelativeTime$7, ww: processRelativeTime$7, M: processRelativeTime$7, MM: processRelativeTime$7, y: processRelativeTime$7, yy: processRelativeTime$7, }, dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/, ordinal: function (num, period) { var p = period.toLowerCase(); if (p.includes('w') || p.includes('m')) return num + '.'; return num + ezafeNumSuffix(num); }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$c = { 1: '١', 2: '٢', 3: '٣', 4: '٤', 5: '٥', 6: '٦', 7: '٧', 8: '٨', 9: '٩', 0: '٠', }, numberMap$b = { '١': '1', '٢': '2', '٣': '3', '٤': '4', '٥': '5', '٦': '6', '٧': '7', '٨': '8', '٩': '9', '٠': '0', }, months$8 = [ 'کانونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمموز', 'ئاب', 'ئەیلوول', 'تشرینی یەكەم', 'تشرینی دووەم', 'كانونی یەکەم', ]; hooks.defineLocale('ku', { months: months$8, monthsShort: months$8, weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split( '_' ), weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'), weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, meridiemParse: /ئێواره‌|به‌یانی/, isPM: function (input) { return /ئێواره‌/.test(input); }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'به‌یانی'; } else { return 'ئێواره‌'; } }, calendar: { sameDay: '[ئه‌مرۆ كاتژمێر] LT', nextDay: '[به‌یانی كاتژمێر] LT', nextWeek: 'dddd [كاتژمێر] LT', lastDay: '[دوێنێ كاتژمێر] LT', lastWeek: 'dddd [كاتژمێر] LT', sameElse: 'L', }, relativeTime: { future: 'له‌ %s', past: '%s', s: 'چه‌ند چركه‌یه‌ك', ss: 'چركه‌ %d', m: 'یه‌ك خوله‌ك', mm: '%d خوله‌ك', h: 'یه‌ك كاتژمێر', hh: '%d كاتژمێر', d: 'یه‌ك ڕۆژ', dd: '%d ڕۆژ', M: 'یه‌ك مانگ', MM: '%d مانگ', y: 'یه‌ك ساڵ', yy: '%d ساڵ', }, preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { return numberMap$b[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { return symbolMap$c[match]; }) .replace(/,/g, '،'); }, week: { dow: 6, // Saturday is the first day of the week. doy: 12, // The week that contains Jan 12th is the first week of the year. }, }); //! moment.js locale configuration var suffixes$2 = { 0: '-чү', 1: '-чи', 2: '-чи', 3: '-чү', 4: '-чү', 5: '-чи', 6: '-чы', 7: '-чи', 8: '-чи', 9: '-чу', 10: '-чу', 20: '-чы', 30: '-чу', 40: '-чы', 50: '-чү', 60: '-чы', 70: '-чи', 80: '-чи', 90: '-чу', 100: '-чү', }; hooks.defineLocale('ky', { months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( '_' ), monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split( '_' ), weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split( '_' ), weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Бүгүн саат] LT', nextDay: '[Эртең саат] LT', nextWeek: 'dddd [саат] LT', lastDay: '[Кечээ саат] LT', lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT', sameElse: 'L', }, relativeTime: { future: '%s ичинде', past: '%s мурун', s: 'бирнече секунд', ss: '%d секунд', m: 'бир мүнөт', mm: '%d мүнөт', h: 'бир саат', hh: '%d саат', d: 'бир күн', dd: '%d күн', M: 'бир ай', MM: '%d ай', y: 'бир жыл', yy: '%d жыл', }, dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]); }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration function processRelativeTime$8(number, withoutSuffix, key, isFuture) { var format = { m: ['eng Minutt', 'enger Minutt'], h: ['eng Stonn', 'enger Stonn'], d: ['een Dag', 'engem Dag'], M: ['ee Mount', 'engem Mount'], y: ['ee Joer', 'engem Joer'], }; return withoutSuffix ? format[key][0] : format[key][1]; } function processFutureTime(string) { var number = string.substr(0, string.indexOf(' ')); if (eifelerRegelAppliesToNumber(number)) { return 'a ' + string; } return 'an ' + string; } function processPastTime(string) { var number = string.substr(0, string.indexOf(' ')); if (eifelerRegelAppliesToNumber(number)) { return 'viru ' + string; } return 'virun ' + string; } /** * Returns true if the word before the given number loses the '-n' ending. * e.g. 'an 10 Deeg' but 'a 5 Deeg' * * @param number {integer} * @returns {boolean} */ function eifelerRegelAppliesToNumber(number) { number = parseInt(number, 10); if (isNaN(number)) { return false; } if (number < 0) { // Negative Number --> always true return true; } else if (number < 10) { // Only 1 digit if (4 <= number && number <= 7) { return true; } return false; } else if (number < 100) { // 2 digits var lastDigit = number % 10, firstDigit = number / 10; if (lastDigit === 0) { return eifelerRegelAppliesToNumber(firstDigit); } return eifelerRegelAppliesToNumber(lastDigit); } else if (number < 10000) { // 3 or 4 digits --> recursively check first digit while (number >= 10) { number = number / 10; } return eifelerRegelAppliesToNumber(number); } else { // Anything larger than 4 digits: recursively check first n-3 digits number = number / 1000; return eifelerRegelAppliesToNumber(number); } } hooks.defineLocale('lb', { months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( '_' ), monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( '_' ), monthsParseExact: true, weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( '_' ), weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm [Auer]', LTS: 'H:mm:ss [Auer]', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm [Auer]', LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', }, calendar: { sameDay: '[Haut um] LT', sameElse: 'L', nextDay: '[Muer um] LT', nextWeek: 'dddd [um] LT', lastDay: '[Gëschter um] LT', lastWeek: function () { // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule switch (this.day()) { case 2: case 4: return '[Leschten] dddd [um] LT'; default: return '[Leschte] dddd [um] LT'; } }, }, relativeTime: { future: processFutureTime, past: processPastTime, s: 'e puer Sekonnen', ss: '%d Sekonnen', m: processRelativeTime$8, mm: '%d Minutten', h: processRelativeTime$8, hh: '%d Stonnen', d: processRelativeTime$8, dd: '%d Deeg', M: processRelativeTime$8, MM: '%d Méint', y: processRelativeTime$8, yy: '%d Joer', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('lo', { months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( '_' ), monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( '_' ), weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'ວັນdddd D MMMM YYYY HH:mm', }, meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, isPM: function (input) { return input === 'ຕອນແລງ'; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ຕອນເຊົ້າ'; } else { return 'ຕອນແລງ'; } }, calendar: { sameDay: '[ມື້ນີ້ເວລາ] LT', nextDay: '[ມື້ອື່ນເວລາ] LT', nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT', lastDay: '[ມື້ວານນີ້ເວລາ] LT', lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', sameElse: 'L', }, relativeTime: { future: 'ອີກ %s', past: '%sຜ່ານມາ', s: 'ບໍ່ເທົ່າໃດວິນາທີ', ss: '%d ວິນາທີ', m: '1 ນາທີ', mm: '%d ນາທີ', h: '1 ຊົ່ວໂມງ', hh: '%d ຊົ່ວໂມງ', d: '1 ມື້', dd: '%d ມື້', M: '1 ເດືອນ', MM: '%d ເດືອນ', y: '1 ປີ', yy: '%d ປີ', }, dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, ordinal: function (number) { return 'ທີ່' + number; }, }); //! moment.js locale configuration var units = { ss: 'sekundė_sekundžių_sekundes', m: 'minutė_minutės_minutę', mm: 'minutės_minučių_minutes', h: 'valanda_valandos_valandą', hh: 'valandos_valandų_valandas', d: 'diena_dienos_dieną', dd: 'dienos_dienų_dienas', M: 'mėnuo_mėnesio_mėnesį', MM: 'mėnesiai_mėnesių_mėnesius', y: 'metai_metų_metus', yy: 'metai_metų_metus', }; function translateSeconds(number, withoutSuffix, key, isFuture) { if (withoutSuffix) { return 'kelios sekundės'; } else { return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; } } function translateSingular(number, withoutSuffix, key, isFuture) { return withoutSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2]; } function special(number) { return number % 10 === 0 || (number > 10 && number < 20); } function forms(key) { return units[key].split('_'); } function translate$6(number, withoutSuffix, key, isFuture) { var result = number + ' '; if (number === 1) { return ( result + translateSingular(number, withoutSuffix, key[0], isFuture) ); } else if (withoutSuffix) { return result + (special(number) ? forms(key)[1] : forms(key)[0]); } else { if (isFuture) { return result + forms(key)[1]; } else { return result + (special(number) ? forms(key)[1] : forms(key)[2]); } } } hooks.defineLocale('lt', { months: { format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split( '_' ), standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split( '_' ), isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, }, monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), weekdays: { format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split( '_' ), standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split( '_' ), isFormat: /dddd HH:mm/, }, weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY-MM-DD', LL: 'YYYY [m.] MMMM D [d.]', LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', l: 'YYYY-MM-DD', ll: 'YYYY [m.] MMMM D [d.]', lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', }, calendar: { sameDay: '[Šiandien] LT', nextDay: '[Rytoj] LT', nextWeek: 'dddd LT', lastDay: '[Vakar] LT', lastWeek: '[Praėjusį] dddd LT', sameElse: 'L', }, relativeTime: { future: 'po %s', past: 'prieš %s', s: translateSeconds, ss: translate$6, m: translateSingular, mm: translate$6, h: translateSingular, hh: translate$6, d: translateSingular, dd: translate$6, M: translateSingular, MM: translate$6, y: translateSingular, yy: translate$6, }, dayOfMonthOrdinalParse: /\d{1,2}-oji/, ordinal: function (number) { return number + '-oji'; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var units$1 = { ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'), m: 'minūtes_minūtēm_minūte_minūtes'.split('_'), mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'), h: 'stundas_stundām_stunda_stundas'.split('_'), hh: 'stundas_stundām_stunda_stundas'.split('_'), d: 'dienas_dienām_diena_dienas'.split('_'), dd: 'dienas_dienām_diena_dienas'.split('_'), M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), y: 'gada_gadiem_gads_gadi'.split('_'), yy: 'gada_gadiem_gads_gadi'.split('_'), }; /** * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. */ function format$1(forms, number, withoutSuffix) { if (withoutSuffix) { // E.g. "21 minūte", "3 minūtes". return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; } else { // E.g. "21 minūtes" as in "pēc 21 minūtes". // E.g. "3 minūtēm" as in "pēc 3 minūtēm". return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; } } function relativeTimeWithPlural$1(number, withoutSuffix, key) { return number + ' ' + format$1(units$1[key], number, withoutSuffix); } function relativeTimeWithSingular(number, withoutSuffix, key) { return format$1(units$1[key], number, withoutSuffix); } function relativeSeconds(number, withoutSuffix) { return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; } hooks.defineLocale('lv', { months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split( '_' ), monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split( '_' ), weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY.', LL: 'YYYY. [gada] D. MMMM', LLL: 'YYYY. [gada] D. MMMM, HH:mm', LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', }, calendar: { sameDay: '[Šodien pulksten] LT', nextDay: '[Rīt pulksten] LT', nextWeek: 'dddd [pulksten] LT', lastDay: '[Vakar pulksten] LT', lastWeek: '[Pagājušā] dddd [pulksten] LT', sameElse: 'L', }, relativeTime: { future: 'pēc %s', past: 'pirms %s', s: relativeSeconds, ss: relativeTimeWithPlural$1, m: relativeTimeWithSingular, mm: relativeTimeWithPlural$1, h: relativeTimeWithSingular, hh: relativeTimeWithPlural$1, d: relativeTimeWithSingular, dd: relativeTimeWithPlural$1, M: relativeTimeWithSingular, MM: relativeTimeWithPlural$1, y: relativeTimeWithSingular, yy: relativeTimeWithPlural$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var translator = { words: { //Different grammatical cases ss: ['sekund', 'sekunda', 'sekundi'], m: ['jedan minut', 'jednog minuta'], mm: ['minut', 'minuta', 'minuta'], h: ['jedan sat', 'jednog sata'], hh: ['sat', 'sata', 'sati'], dd: ['dan', 'dana', 'dana'], MM: ['mjesec', 'mjeseca', 'mjeseci'], yy: ['godina', 'godine', 'godina'], }, correctGrammaticalCase: function (number, wordKey) { return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { return ( number + ' ' + translator.correctGrammaticalCase(number, wordKey) ); } }, }; hooks.defineLocale('me', { months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( '_' ), monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), monthsParseExact: true, weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( '_' ), weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', nextDay: '[sjutra u] LT', nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; case 3: return '[u] [srijedu] [u] LT'; case 6: return '[u] [subotu] [u] LT'; case 1: case 2: case 4: case 5: return '[u] dddd [u] LT'; } }, lastDay: '[juče u] LT', lastWeek: function () { var lastWeekDays = [ '[prošle] [nedjelje] [u] LT', '[prošlog] [ponedjeljka] [u] LT', '[prošlog] [utorka] [u] LT', '[prošle] [srijede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', '[prošle] [subote] [u] LT', ]; return lastWeekDays[this.day()]; }, sameElse: 'L', }, relativeTime: { future: 'za %s', past: 'prije %s', s: 'nekoliko sekundi', ss: translator.translate, m: translator.translate, mm: translator.translate, h: translator.translate, hh: translator.translate, d: 'dan', dd: translator.translate, M: 'mjesec', MM: translator.translate, y: 'godinu', yy: translator.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('mi', { months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split( '_' ), monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( '_' ), monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [i] HH:mm', LLLL: 'dddd, D MMMM YYYY [i] HH:mm', }, calendar: { sameDay: '[i teie mahana, i] LT', nextDay: '[apopo i] LT', nextWeek: 'dddd [i] LT', lastDay: '[inanahi i] LT', lastWeek: 'dddd [whakamutunga i] LT', sameElse: 'L', }, relativeTime: { future: 'i roto i %s', past: '%s i mua', s: 'te hēkona ruarua', ss: '%d hēkona', m: 'he meneti', mm: '%d meneti', h: 'te haora', hh: '%d haora', d: 'he ra', dd: '%d ra', M: 'he marama', MM: '%d marama', y: 'he tau', yy: '%d tau', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('mk', { months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split( '_' ), monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split( '_' ), weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'), longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'D.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY H:mm', LLLL: 'dddd, D MMMM YYYY H:mm', }, calendar: { sameDay: '[Денес во] LT', nextDay: '[Утре во] LT', nextWeek: '[Во] dddd [во] LT', lastDay: '[Вчера во] LT', lastWeek: function () { switch (this.day()) { case 0: case 3: case 6: return '[Изминатата] dddd [во] LT'; case 1: case 2: case 4: case 5: return '[Изминатиот] dddd [во] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'за %s', past: 'пред %s', s: 'неколку секунди', ss: '%d секунди', m: 'една минута', mm: '%d минути', h: 'еден час', hh: '%d часа', d: 'еден ден', dd: '%d дена', M: 'еден месец', MM: '%d месеци', y: 'една година', yy: '%d години', }, dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, ordinal: function (number) { var lastDigit = number % 10, last2Digits = number % 100; if (number === 0) { return number + '-ев'; } else if (last2Digits === 0) { return number + '-ен'; } else if (last2Digits > 10 && last2Digits < 20) { return number + '-ти'; } else if (lastDigit === 1) { return number + '-ви'; } else if (lastDigit === 2) { return number + '-ри'; } else if (lastDigit === 7 || lastDigit === 8) { return number + '-ми'; } else { return number + '-ти'; } }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ml', { months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split( '_' ), monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split( '_' ), monthsParseExact: true, weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split( '_' ), weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), longDateFormat: { LT: 'A h:mm -നു', LTS: 'A h:mm:ss -നു', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm -നു', LLLL: 'dddd, D MMMM YYYY, A h:mm -നു', }, calendar: { sameDay: '[ഇന്ന്] LT', nextDay: '[നാളെ] LT', nextWeek: 'dddd, LT', lastDay: '[ഇന്നലെ] LT', lastWeek: '[കഴിഞ്ഞ] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s കഴിഞ്ഞ്', past: '%s മുൻപ്', s: 'അൽപ നിമിഷങ്ങൾ', ss: '%d സെക്കൻഡ്', m: 'ഒരു മിനിറ്റ്', mm: '%d മിനിറ്റ്', h: 'ഒരു മണിക്കൂർ', hh: '%d മണിക്കൂർ', d: 'ഒരു ദിവസം', dd: '%d ദിവസം', M: 'ഒരു മാസം', MM: '%d മാസം', y: 'ഒരു വർഷം', yy: '%d വർഷം', }, meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if ( (meridiem === 'രാത്രി' && hour >= 4) || meridiem === 'ഉച്ച കഴിഞ്ഞ്' || meridiem === 'വൈകുന്നേരം' ) { return hour + 12; } else { return hour; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'രാത്രി'; } else if (hour < 12) { return 'രാവിലെ'; } else if (hour < 17) { return 'ഉച്ച കഴിഞ്ഞ്'; } else if (hour < 20) { return 'വൈകുന്നേരം'; } else { return 'രാത്രി'; } }, }); //! moment.js locale configuration function translate$7(number, withoutSuffix, key, isFuture) { switch (key) { case 's': return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын'; case 'ss': return number + (withoutSuffix ? ' секунд' : ' секундын'); case 'm': case 'mm': return number + (withoutSuffix ? ' минут' : ' минутын'); case 'h': case 'hh': return number + (withoutSuffix ? ' цаг' : ' цагийн'); case 'd': case 'dd': return number + (withoutSuffix ? ' өдөр' : ' өдрийн'); case 'M': case 'MM': return number + (withoutSuffix ? ' сар' : ' сарын'); case 'y': case 'yy': return number + (withoutSuffix ? ' жил' : ' жилийн'); default: return number; } } hooks.defineLocale('mn', { months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split( '_' ), monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split( '_' ), monthsParseExact: true, weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY-MM-DD', LL: 'YYYY оны MMMMын D', LLL: 'YYYY оны MMMMын D HH:mm', LLLL: 'dddd, YYYY оны MMMMын D HH:mm', }, meridiemParse: /ҮӨ|ҮХ/i, isPM: function (input) { return input === 'ҮХ'; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ҮӨ'; } else { return 'ҮХ'; } }, calendar: { sameDay: '[Өнөөдөр] LT', nextDay: '[Маргааш] LT', nextWeek: '[Ирэх] dddd LT', lastDay: '[Өчигдөр] LT', lastWeek: '[Өнгөрсөн] dddd LT', sameElse: 'L', }, relativeTime: { future: '%s дараа', past: '%s өмнө', s: translate$7, ss: translate$7, m: translate$7, mm: translate$7, h: translate$7, hh: translate$7, d: translate$7, dd: translate$7, M: translate$7, MM: translate$7, y: translate$7, yy: translate$7, }, dayOfMonthOrdinalParse: /\d{1,2} өдөр/, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'DDD': return number + ' өдөр'; default: return number; } }, }); //! moment.js locale configuration var symbolMap$d = { 1: '१', 2: '२', 3: '३', 4: '४', 5: '५', 6: '६', 7: '७', 8: '८', 9: '९', 0: '०', }, numberMap$c = { '१': '1', '२': '2', '३': '3', '४': '4', '५': '5', '६': '6', '७': '7', '८': '8', '९': '9', '०': '0', }; function relativeTimeMr(number, withoutSuffix, string, isFuture) { var output = ''; if (withoutSuffix) { switch (string) { case 's': output = 'काही सेकंद'; break; case 'ss': output = '%d सेकंद'; break; case 'm': output = 'एक मिनिट'; break; case 'mm': output = '%d मिनिटे'; break; case 'h': output = 'एक तास'; break; case 'hh': output = '%d तास'; break; case 'd': output = 'एक दिवस'; break; case 'dd': output = '%d दिवस'; break; case 'M': output = 'एक महिना'; break; case 'MM': output = '%d महिने'; break; case 'y': output = 'एक वर्ष'; break; case 'yy': output = '%d वर्षे'; break; } } else { switch (string) { case 's': output = 'काही सेकंदां'; break; case 'ss': output = '%d सेकंदां'; break; case 'm': output = 'एका मिनिटा'; break; case 'mm': output = '%d मिनिटां'; break; case 'h': output = 'एका तासा'; break; case 'hh': output = '%d तासां'; break; case 'd': output = 'एका दिवसा'; break; case 'dd': output = '%d दिवसां'; break; case 'M': output = 'एका महिन्या'; break; case 'MM': output = '%d महिन्यां'; break; case 'y': output = 'एका वर्षा'; break; case 'yy': output = '%d वर्षां'; break; } } return output.replace(/%d/i, number); } hooks.defineLocale('mr', { months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( '_' ), monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( '_' ), monthsParseExact: true, weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), longDateFormat: { LT: 'A h:mm वाजता', LTS: 'A h:mm:ss वाजता', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm वाजता', LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता', }, calendar: { sameDay: '[आज] LT', nextDay: '[उद्या] LT', nextWeek: 'dddd, LT', lastDay: '[काल] LT', lastWeek: '[मागील] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%sमध्ये', past: '%sपूर्वी', s: relativeTimeMr, ss: relativeTimeMr, m: relativeTimeMr, mm: relativeTimeMr, h: relativeTimeMr, hh: relativeTimeMr, d: relativeTimeMr, dd: relativeTimeMr, M: relativeTimeMr, MM: relativeTimeMr, y: relativeTimeMr, yy: relativeTimeMr, }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { return numberMap$c[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$d[match]; }); }, meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'पहाटे' || meridiem === 'सकाळी') { return hour; } else if ( meridiem === 'दुपारी' || meridiem === 'सायंकाळी' || meridiem === 'रात्री' ) { return hour >= 12 ? hour : hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour >= 0 && hour < 6) { return 'पहाटे'; } else if (hour < 12) { return 'सकाळी'; } else if (hour < 17) { return 'दुपारी'; } else if (hour < 20) { return 'सायंकाळी'; } else { return 'रात्री'; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ms-my', { months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( '_' ), monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), longDateFormat: { LT: 'HH.mm', LTS: 'HH.mm.ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [pukul] HH.mm', LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'pagi') { return hour; } else if (meridiem === 'tengahari') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === 'petang' || meridiem === 'malam') { return hour + 12; } }, meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { return 'tengahari'; } else if (hours < 19) { return 'petang'; } else { return 'malam'; } }, calendar: { sameDay: '[Hari ini pukul] LT', nextDay: '[Esok pukul] LT', nextWeek: 'dddd [pukul] LT', lastDay: '[Kelmarin pukul] LT', lastWeek: 'dddd [lepas pukul] LT', sameElse: 'L', }, relativeTime: { future: 'dalam %s', past: '%s yang lepas', s: 'beberapa saat', ss: '%d saat', m: 'seminit', mm: '%d minit', h: 'sejam', hh: '%d jam', d: 'sehari', dd: '%d hari', M: 'sebulan', MM: '%d bulan', y: 'setahun', yy: '%d tahun', }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ms', { months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( '_' ), monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), longDateFormat: { LT: 'HH.mm', LTS: 'HH.mm.ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [pukul] HH.mm', LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'pagi') { return hour; } else if (meridiem === 'tengahari') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === 'petang' || meridiem === 'malam') { return hour + 12; } }, meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { return 'tengahari'; } else if (hours < 19) { return 'petang'; } else { return 'malam'; } }, calendar: { sameDay: '[Hari ini pukul] LT', nextDay: '[Esok pukul] LT', nextWeek: 'dddd [pukul] LT', lastDay: '[Kelmarin pukul] LT', lastWeek: 'dddd [lepas pukul] LT', sameElse: 'L', }, relativeTime: { future: 'dalam %s', past: '%s yang lepas', s: 'beberapa saat', ss: '%d saat', m: 'seminit', mm: '%d minit', h: 'sejam', hh: '%d jam', d: 'sehari', dd: '%d hari', M: 'sebulan', MM: '%d bulan', y: 'setahun', yy: '%d tahun', }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('mt', { months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split( '_' ), monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split( '_' ), weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Illum fil-]LT', nextDay: '[Għada fil-]LT', nextWeek: 'dddd [fil-]LT', lastDay: '[Il-bieraħ fil-]LT', lastWeek: 'dddd [li għadda] [fil-]LT', sameElse: 'L', }, relativeTime: { future: 'f’ %s', past: '%s ilu', s: 'ftit sekondi', ss: '%d sekondi', m: 'minuta', mm: '%d minuti', h: 'siegħa', hh: '%d siegħat', d: 'ġurnata', dd: '%d ġranet', M: 'xahar', MM: '%d xhur', y: 'sena', yy: '%d sni', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$e = { 1: '၁', 2: '၂', 3: '၃', 4: '၄', 5: '၅', 6: '၆', 7: '၇', 8: '၈', 9: '၉', 0: '၀', }, numberMap$d = { '၁': '1', '၂': '2', '၃': '3', '၄': '4', '၅': '5', '၆': '6', '၇': '7', '၈': '8', '၉': '9', '၀': '0', }; hooks.defineLocale('my', { months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split( '_' ), monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split( '_' ), weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[ယနေ.] LT [မှာ]', nextDay: '[မနက်ဖြန်] LT [မှာ]', nextWeek: 'dddd LT [မှာ]', lastDay: '[မနေ.က] LT [မှာ]', lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', sameElse: 'L', }, relativeTime: { future: 'လာမည့် %s မှာ', past: 'လွန်ခဲ့သော %s က', s: 'စက္ကန်.အနည်းငယ်', ss: '%d စက္ကန့်', m: 'တစ်မိနစ်', mm: '%d မိနစ်', h: 'တစ်နာရီ', hh: '%d နာရီ', d: 'တစ်ရက်', dd: '%d ရက်', M: 'တစ်လ', MM: '%d လ', y: 'တစ်နှစ်', yy: '%d နှစ်', }, preparse: function (string) { return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { return numberMap$d[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$e[match]; }); }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('nb', { months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( '_' ), monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), monthsParseExact: true, weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY [kl.] HH:mm', LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', }, calendar: { sameDay: '[i dag kl.] LT', nextDay: '[i morgen kl.] LT', nextWeek: 'dddd [kl.] LT', lastDay: '[i går kl.] LT', lastWeek: '[forrige] dddd [kl.] LT', sameElse: 'L', }, relativeTime: { future: 'om %s', past: '%s siden', s: 'noen sekunder', ss: '%d sekunder', m: 'ett minutt', mm: '%d minutter', h: 'én time', hh: '%d timer', d: 'én dag', dd: '%d dager', w: 'én uke', ww: '%d uker', M: 'én måned', MM: '%d måneder', y: 'ett år', yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$f = { 1: '१', 2: '२', 3: '३', 4: '४', 5: '५', 6: '६', 7: '७', 8: '८', 9: '९', 0: '०', }, numberMap$e = { '१': '1', '२': '2', '३': '3', '४': '4', '५': '5', '६': '6', '७': '7', '८': '8', '९': '9', '०': '0', }; hooks.defineLocale('ne', { months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split( '_' ), monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split( '_' ), monthsParseExact: true, weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split( '_' ), weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'Aको h:mm बजे', LTS: 'Aको h:mm:ss बजे', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, Aको h:mm बजे', LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे', }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { return numberMap$e[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$f[match]; }); }, meridiemParse: /राति|बिहान|दिउँसो|साँझ/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'राति') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'बिहान') { return hour; } else if (meridiem === 'दिउँसो') { return hour >= 10 ? hour : hour + 12; } else if (meridiem === 'साँझ') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 3) { return 'राति'; } else if (hour < 12) { return 'बिहान'; } else if (hour < 16) { return 'दिउँसो'; } else if (hour < 20) { return 'साँझ'; } else { return 'राति'; } }, calendar: { sameDay: '[आज] LT', nextDay: '[भोलि] LT', nextWeek: '[आउँदो] dddd[,] LT', lastDay: '[हिजो] LT', lastWeek: '[गएको] dddd[,] LT', sameElse: 'L', }, relativeTime: { future: '%sमा', past: '%s अगाडि', s: 'केही क्षण', ss: '%d सेकेण्ड', m: 'एक मिनेट', mm: '%d मिनेट', h: 'एक घण्टा', hh: '%d घण्टा', d: 'एक दिन', dd: '%d दिन', M: 'एक महिना', MM: '%d महिना', y: 'एक बर्ष', yy: '%d बर्ष', }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'), monthsParse$8 = [ /^jan/i, /^feb/i, /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i, ], monthsRegex$8 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; hooks.defineLocale('nl-be', { months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( '_' ), monthsShort: function (m, format) { if (!m) { return monthsShortWithDots$1; } else if (/-MMM-/.test(format)) { return monthsShortWithoutDots$1[m.month()]; } else { return monthsShortWithDots$1[m.month()]; } }, monthsRegex: monthsRegex$8, monthsShortRegex: monthsRegex$8, monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, monthsParse: monthsParse$8, longMonthsParse: monthsParse$8, shortMonthsParse: monthsParse$8, weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[vandaag om] LT', nextDay: '[morgen om] LT', nextWeek: 'dddd [om] LT', lastDay: '[gisteren om] LT', lastWeek: '[afgelopen] dddd [om] LT', sameElse: 'L', }, relativeTime: { future: 'over %s', past: '%s geleden', s: 'een paar seconden', ss: '%d seconden', m: 'één minuut', mm: '%d minuten', h: 'één uur', hh: '%d uur', d: 'één dag', dd: '%d dagen', M: 'één maand', MM: '%d maanden', y: 'één jaar', yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, ordinal: function (number) { return ( number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') ); }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'), monthsParse$9 = [ /^jan/i, /^feb/i, /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i, ], monthsRegex$9 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; hooks.defineLocale('nl', { months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( '_' ), monthsShort: function (m, format) { if (!m) { return monthsShortWithDots$2; } else if (/-MMM-/.test(format)) { return monthsShortWithoutDots$2[m.month()]; } else { return monthsShortWithDots$2[m.month()]; } }, monthsRegex: monthsRegex$9, monthsShortRegex: monthsRegex$9, monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, monthsParse: monthsParse$9, longMonthsParse: monthsParse$9, shortMonthsParse: monthsParse$9, weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD-MM-YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[vandaag om] LT', nextDay: '[morgen om] LT', nextWeek: 'dddd [om] LT', lastDay: '[gisteren om] LT', lastWeek: '[afgelopen] dddd [om] LT', sameElse: 'L', }, relativeTime: { future: 'over %s', past: '%s geleden', s: 'een paar seconden', ss: '%d seconden', m: 'één minuut', mm: '%d minuten', h: 'één uur', hh: '%d uur', d: 'één dag', dd: '%d dagen', w: 'één week', ww: '%d weken', M: 'één maand', MM: '%d maanden', y: 'één jaar', yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, ordinal: function (number) { return ( number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') ); }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('nn', { months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( '_' ), monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), monthsParseExact: true, weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY [kl.] H:mm', LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', }, calendar: { sameDay: '[I dag klokka] LT', nextDay: '[I morgon klokka] LT', nextWeek: 'dddd [klokka] LT', lastDay: '[I går klokka] LT', lastWeek: '[Føregåande] dddd [klokka] LT', sameElse: 'L', }, relativeTime: { future: 'om %s', past: '%s sidan', s: 'nokre sekund', ss: '%d sekund', m: 'eit minutt', mm: '%d minutt', h: 'ein time', hh: '%d timar', d: 'ein dag', dd: '%d dagar', w: 'ei veke', ww: '%d veker', M: 'ein månad', MM: '%d månader', y: 'eit år', yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('oc-lnc', { months: { standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( '_' ), format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( '_' ), isFormat: /D[oD]?(\s)+MMMM/, }, monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( '_' ), monthsParseExact: true, weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( '_' ), weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM [de] YYYY', ll: 'D MMM YYYY', LLL: 'D MMMM [de] YYYY [a] H:mm', lll: 'D MMM YYYY, H:mm', LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', llll: 'ddd D MMM YYYY, H:mm', }, calendar: { sameDay: '[uèi a] LT', nextDay: '[deman a] LT', nextWeek: 'dddd [a] LT', lastDay: '[ièr a] LT', lastWeek: 'dddd [passat a] LT', sameElse: 'L', }, relativeTime: { future: "d'aquí %s", past: 'fa %s', s: 'unas segondas', ss: '%d segondas', m: 'una minuta', mm: '%d minutas', h: 'una ora', hh: '%d oras', d: 'un jorn', dd: '%d jorns', M: 'un mes', MM: '%d meses', y: 'un an', yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, ordinal: function (number, period) { var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, }, }); //! moment.js locale configuration var symbolMap$g = { 1: '੧', 2: '੨', 3: '੩', 4: '੪', 5: '੫', 6: '੬', 7: '੭', 8: '੮', 9: '੯', 0: '੦', }, numberMap$f = { '੧': '1', '੨': '2', '੩': '3', '੪': '4', '੫': '5', '੬': '6', '੭': '7', '੮': '8', '੯': '9', '੦': '0', }; hooks.defineLocale('pa-in', { // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( '_' ), monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( '_' ), weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split( '_' ), weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), longDateFormat: { LT: 'A h:mm ਵਜੇ', LTS: 'A h:mm:ss ਵਜੇ', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm ਵਜੇ', LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ', }, calendar: { sameDay: '[ਅਜ] LT', nextDay: '[ਕਲ] LT', nextWeek: '[ਅਗਲਾ] dddd, LT', lastDay: '[ਕਲ] LT', lastWeek: '[ਪਿਛਲੇ] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s ਵਿੱਚ', past: '%s ਪਿਛਲੇ', s: 'ਕੁਝ ਸਕਿੰਟ', ss: '%d ਸਕਿੰਟ', m: 'ਇਕ ਮਿੰਟ', mm: '%d ਮਿੰਟ', h: 'ਇੱਕ ਘੰਟਾ', hh: '%d ਘੰਟੇ', d: 'ਇੱਕ ਦਿਨ', dd: '%d ਦਿਨ', M: 'ਇੱਕ ਮਹੀਨਾ', MM: '%d ਮਹੀਨੇ', y: 'ਇੱਕ ਸਾਲ', yy: '%d ਸਾਲ', }, preparse: function (string) { return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { return numberMap$f[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$g[match]; }); }, // Punjabi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'ਰਾਤ') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'ਸਵੇਰ') { return hour; } else if (meridiem === 'ਦੁਪਹਿਰ') { return hour >= 10 ? hour : hour + 12; } else if (meridiem === 'ਸ਼ਾਮ') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ਰਾਤ'; } else if (hour < 10) { return 'ਸਵੇਰ'; } else if (hour < 17) { return 'ਦੁਪਹਿਰ'; } else if (hour < 20) { return 'ਸ਼ਾਮ'; } else { return 'ਰਾਤ'; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split( '_' ), monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split( '_' ), monthsParse$a = [ /^sty/i, /^lut/i, /^mar/i, /^kwi/i, /^maj/i, /^cze/i, /^lip/i, /^sie/i, /^wrz/i, /^paź/i, /^lis/i, /^gru/i, ]; function plural$3(n) { return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; } function translate$8(number, withoutSuffix, key) { var result = number + ' '; switch (key) { case 'ss': return result + (plural$3(number) ? 'sekundy' : 'sekund'); case 'm': return withoutSuffix ? 'minuta' : 'minutę'; case 'mm': return result + (plural$3(number) ? 'minuty' : 'minut'); case 'h': return withoutSuffix ? 'godzina' : 'godzinę'; case 'hh': return result + (plural$3(number) ? 'godziny' : 'godzin'); case 'ww': return result + (plural$3(number) ? 'tygodnie' : 'tygodni'); case 'MM': return result + (plural$3(number) ? 'miesiące' : 'miesięcy'); case 'yy': return result + (plural$3(number) ? 'lata' : 'lat'); } } hooks.defineLocale('pl', { months: function (momentToFormat, format) { if (!momentToFormat) { return monthsNominative; } else if (/D MMMM/.test(format)) { return monthsSubjective[momentToFormat.month()]; } else { return monthsNominative[momentToFormat.month()]; } }, monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), monthsParse: monthsParse$a, longMonthsParse: monthsParse$a, shortMonthsParse: monthsParse$a, weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Dziś o] LT', nextDay: '[Jutro o] LT', nextWeek: function () { switch (this.day()) { case 0: return '[W niedzielę o] LT'; case 2: return '[We wtorek o] LT'; case 3: return '[W środę o] LT'; case 6: return '[W sobotę o] LT'; default: return '[W] dddd [o] LT'; } }, lastDay: '[Wczoraj o] LT', lastWeek: function () { switch (this.day()) { case 0: return '[W zeszłą niedzielę o] LT'; case 3: return '[W zeszłą środę o] LT'; case 6: return '[W zeszłą sobotę o] LT'; default: return '[W zeszły] dddd [o] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'za %s', past: '%s temu', s: 'kilka sekund', ss: translate$8, m: translate$8, mm: translate$8, h: translate$8, hh: translate$8, d: '1 dzień', dd: '%d dni', w: 'tydzień', ww: translate$8, M: 'miesiąc', MM: translate$8, y: 'rok', yy: translate$8, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('pt-br', { months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( '_' ), monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( '_' ), weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', }, calendar: { sameDay: '[Hoje às] LT', nextDay: '[Amanhã às] LT', nextWeek: 'dddd [às] LT', lastDay: '[Ontem às] LT', lastWeek: function () { return this.day() === 0 || this.day() === 6 ? '[Último] dddd [às] LT' // Saturday + Sunday : '[Última] dddd [às] LT'; // Monday - Friday }, sameElse: 'L', }, relativeTime: { future: 'em %s', past: 'há %s', s: 'poucos segundos', ss: '%d segundos', m: 'um minuto', mm: '%d minutos', h: 'uma hora', hh: '%d horas', d: 'um dia', dd: '%d dias', M: 'um mês', MM: '%d meses', y: 'um ano', yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', invalidDate: 'Data inválida', }); //! moment.js locale configuration hooks.defineLocale('pt', { months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( '_' ), monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( '_' ), weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D [de] MMMM [de] YYYY', LLL: 'D [de] MMMM [de] YYYY HH:mm', LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', }, calendar: { sameDay: '[Hoje às] LT', nextDay: '[Amanhã às] LT', nextWeek: 'dddd [às] LT', lastDay: '[Ontem às] LT', lastWeek: function () { return this.day() === 0 || this.day() === 6 ? '[Último] dddd [às] LT' // Saturday + Sunday : '[Última] dddd [às] LT'; // Monday - Friday }, sameElse: 'L', }, relativeTime: { future: 'em %s', past: 'há %s', s: 'segundos', ss: '%d segundos', m: 'um minuto', mm: '%d minutos', h: 'uma hora', hh: '%d horas', d: 'um dia', dd: '%d dias', w: 'uma semana', ww: '%d semanas', M: 'um mês', MM: '%d meses', y: 'um ano', yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration function relativeTimeWithPlural$2(number, withoutSuffix, key) { var format = { ss: 'secunde', mm: 'minute', hh: 'ore', dd: 'zile', ww: 'săptămâni', MM: 'luni', yy: 'ani', }, separator = ' '; if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { separator = ' de '; } return number + separator + format[key]; } hooks.defineLocale('ro', { months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( '_' ), monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( '_' ), monthsParseExact: true, weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY H:mm', LLLL: 'dddd, D MMMM YYYY H:mm', }, calendar: { sameDay: '[azi la] LT', nextDay: '[mâine la] LT', nextWeek: 'dddd [la] LT', lastDay: '[ieri la] LT', lastWeek: '[fosta] dddd [la] LT', sameElse: 'L', }, relativeTime: { future: 'peste %s', past: '%s în urmă', s: 'câteva secunde', ss: relativeTimeWithPlural$2, m: 'un minut', mm: relativeTimeWithPlural$2, h: 'o oră', hh: relativeTimeWithPlural$2, d: 'o zi', dd: relativeTimeWithPlural$2, w: 'o săptămână', ww: relativeTimeWithPlural$2, M: 'o lună', MM: relativeTimeWithPlural$2, y: 'un an', yy: relativeTimeWithPlural$2, }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration function plural$4(word, num) { var forms = word.split('_'); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; } function relativeTimeWithPlural$3(number, withoutSuffix, key) { var format = { ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', hh: 'час_часа_часов', dd: 'день_дня_дней', ww: 'неделя_недели_недель', MM: 'месяц_месяца_месяцев', yy: 'год_года_лет', }; if (key === 'm') { return withoutSuffix ? 'минута' : 'минуту'; } else { return number + ' ' + plural$4(format[key], +number); } } var monthsParse$b = [ /^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i, ]; // http://new.gramota.ru/spravka/rules/139-prop : § 103 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 hooks.defineLocale('ru', { months: { format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split( '_' ), standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( '_' ), }, monthsShort: { // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку? format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( '_' ), standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( '_' ), }, weekdays: { standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split( '_' ), format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split( '_' ), isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/, }, weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), monthsParse: monthsParse$b, longMonthsParse: monthsParse$b, shortMonthsParse: monthsParse$b, // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, // копия предыдущего monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, // полные названия с падежами monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, // Выражение, которое соответствует только сокращённым формам monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY г.', LLL: 'D MMMM YYYY г., H:mm', LLLL: 'dddd, D MMMM YYYY г., H:mm', }, calendar: { sameDay: '[Сегодня, в] LT', nextDay: '[Завтра, в] LT', lastDay: '[Вчера, в] LT', nextWeek: function (now) { if (now.week() !== this.week()) { switch (this.day()) { case 0: return '[В следующее] dddd, [в] LT'; case 1: case 2: case 4: return '[В следующий] dddd, [в] LT'; case 3: case 5: case 6: return '[В следующую] dddd, [в] LT'; } } else { if (this.day() === 2) { return '[Во] dddd, [в] LT'; } else { return '[В] dddd, [в] LT'; } } }, lastWeek: function (now) { if (now.week() !== this.week()) { switch (this.day()) { case 0: return '[В прошлое] dddd, [в] LT'; case 1: case 2: case 4: return '[В прошлый] dddd, [в] LT'; case 3: case 5: case 6: return '[В прошлую] dddd, [в] LT'; } } else { if (this.day() === 2) { return '[Во] dddd, [в] LT'; } else { return '[В] dddd, [в] LT'; } } }, sameElse: 'L', }, relativeTime: { future: 'через %s', past: '%s назад', s: 'несколько секунд', ss: relativeTimeWithPlural$3, m: relativeTimeWithPlural$3, mm: relativeTimeWithPlural$3, h: 'час', hh: relativeTimeWithPlural$3, d: 'день', dd: relativeTimeWithPlural$3, w: 'неделя', ww: relativeTimeWithPlural$3, M: 'месяц', MM: relativeTimeWithPlural$3, y: 'год', yy: relativeTimeWithPlural$3, }, meridiemParse: /ночи|утра|дня|вечера/i, isPM: function (input) { return /^(дня|вечера)$/.test(input); }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночи'; } else if (hour < 12) { return 'утра'; } else if (hour < 17) { return 'дня'; } else { return 'вечера'; } }, dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, ordinal: function (number, period) { switch (period) { case 'M': case 'd': case 'DDD': return number + '-й'; case 'D': return number + '-го'; case 'w': case 'W': return number + '-я'; default: return number; } }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var months$9 = [ 'جنوري', 'فيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر', ], days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; hooks.defineLocale('sd', { months: months$9, monthsShort: months$9, weekdays: days$1, weekdaysShort: days$1, weekdaysMin: days$1, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd، D MMMM YYYY HH:mm', }, meridiemParse: /صبح|شام/, isPM: function (input) { return 'شام' === input; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'صبح'; } return 'شام'; }, calendar: { sameDay: '[اڄ] LT', nextDay: '[سڀاڻي] LT', nextWeek: 'dddd [اڳين هفتي تي] LT', lastDay: '[ڪالهه] LT', lastWeek: '[گزريل هفتي] dddd [تي] LT', sameElse: 'L', }, relativeTime: { future: '%s پوء', past: '%s اڳ', s: 'چند سيڪنڊ', ss: '%d سيڪنڊ', m: 'هڪ منٽ', mm: '%d منٽ', h: 'هڪ ڪلاڪ', hh: '%d ڪلاڪ', d: 'هڪ ڏينهن', dd: '%d ڏينهن', M: 'هڪ مهينو', MM: '%d مهينا', y: 'هڪ سال', yy: '%d سال', }, preparse: function (string) { return string.replace(/،/g, ','); }, postformat: function (string) { return string.replace(/,/g, '،'); }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('se', { months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split( '_' ), monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( '_' ), weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), weekdaysMin: 's_v_m_g_d_b_L'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'MMMM D. [b.] YYYY', LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', }, calendar: { sameDay: '[otne ti] LT', nextDay: '[ihttin ti] LT', nextWeek: 'dddd [ti] LT', lastDay: '[ikte ti] LT', lastWeek: '[ovddit] dddd [ti] LT', sameElse: 'L', }, relativeTime: { future: '%s geažes', past: 'maŋit %s', s: 'moadde sekunddat', ss: '%d sekunddat', m: 'okta minuhta', mm: '%d minuhtat', h: 'okta diimmu', hh: '%d diimmut', d: 'okta beaivi', dd: '%d beaivvit', M: 'okta mánnu', MM: '%d mánut', y: 'okta jahki', yy: '%d jagit', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration /*jshint -W100*/ hooks.defineLocale('si', { months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split( '_' ), monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split( '_' ), weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split( '_' ), weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'a h:mm', LTS: 'a h:mm:ss', L: 'YYYY/MM/DD', LL: 'YYYY MMMM D', LLL: 'YYYY MMMM D, a h:mm', LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', }, calendar: { sameDay: '[අද] LT[ට]', nextDay: '[හෙට] LT[ට]', nextWeek: 'dddd LT[ට]', lastDay: '[ඊයේ] LT[ට]', lastWeek: '[පසුගිය] dddd LT[ට]', sameElse: 'L', }, relativeTime: { future: '%sකින්', past: '%sකට පෙර', s: 'තත්පර කිහිපය', ss: 'තත්පර %d', m: 'මිනිත්තුව', mm: 'මිනිත්තු %d', h: 'පැය', hh: 'පැය %d', d: 'දිනය', dd: 'දින %d', M: 'මාසය', MM: 'මාස %d', y: 'වසර', yy: 'වසර %d', }, dayOfMonthOrdinalParse: /\d{1,2} වැනි/, ordinal: function (number) { return number + ' වැනි'; }, meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, isPM: function (input) { return input === 'ප.ව.' || input === 'පස් වරු'; }, meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'ප.ව.' : 'පස් වරු'; } else { return isLower ? 'පෙ.ව.' : 'පෙර වරු'; } }, }); //! moment.js locale configuration var months$a = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split( '_' ), monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); function plural$5(n) { return n > 1 && n < 5; } function translate$9(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': // a few seconds / in a few seconds / a few seconds ago return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'sekundy' : 'sekúnd'); } else { return result + 'sekundami'; } case 'm': // a minute / in a minute / a minute ago return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'minúty' : 'minút'); } else { return result + 'minútami'; } case 'h': // an hour / in an hour / an hour ago return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; case 'hh': // 9 hours / in 9 hours / 9 hours ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'hodiny' : 'hodín'); } else { return result + 'hodinami'; } case 'd': // a day / in a day / a day ago return withoutSuffix || isFuture ? 'deň' : 'dňom'; case 'dd': // 9 days / in 9 days / 9 days ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'dni' : 'dní'); } else { return result + 'dňami'; } case 'M': // a month / in a month / a month ago return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; case 'MM': // 9 months / in 9 months / 9 months ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'mesiace' : 'mesiacov'); } else { return result + 'mesiacmi'; } case 'y': // a year / in a year / a year ago return withoutSuffix || isFuture ? 'rok' : 'rokom'; case 'yy': // 9 years / in 9 years / 9 years ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'roky' : 'rokov'); } else { return result + 'rokmi'; } } } hooks.defineLocale('sk', { months: months$a, monthsShort: monthsShort$7, weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', LLLL: 'dddd D. MMMM YYYY H:mm', }, calendar: { sameDay: '[dnes o] LT', nextDay: '[zajtra o] LT', nextWeek: function () { switch (this.day()) { case 0: return '[v nedeľu o] LT'; case 1: case 2: return '[v] dddd [o] LT'; case 3: return '[v stredu o] LT'; case 4: return '[vo štvrtok o] LT'; case 5: return '[v piatok o] LT'; case 6: return '[v sobotu o] LT'; } }, lastDay: '[včera o] LT', lastWeek: function () { switch (this.day()) { case 0: return '[minulú nedeľu o] LT'; case 1: case 2: return '[minulý] dddd [o] LT'; case 3: return '[minulú stredu o] LT'; case 4: case 5: return '[minulý] dddd [o] LT'; case 6: return '[minulú sobotu o] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'za %s', past: 'pred %s', s: translate$9, ss: translate$9, m: translate$9, mm: translate$9, h: translate$9, hh: translate$9, d: translate$9, dd: translate$9, M: translate$9, MM: translate$9, y: translate$9, yy: translate$9, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration function processRelativeTime$9(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; case 'ss': if (number === 1) { result += withoutSuffix ? 'sekundo' : 'sekundi'; } else if (number === 2) { result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah'; } else if (number < 5) { result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah'; } else { result += 'sekund'; } return result; case 'm': return withoutSuffix ? 'ena minuta' : 'eno minuto'; case 'mm': if (number === 1) { result += withoutSuffix ? 'minuta' : 'minuto'; } else if (number === 2) { result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; } else if (number < 5) { result += withoutSuffix || isFuture ? 'minute' : 'minutami'; } else { result += withoutSuffix || isFuture ? 'minut' : 'minutami'; } return result; case 'h': return withoutSuffix ? 'ena ura' : 'eno uro'; case 'hh': if (number === 1) { result += withoutSuffix ? 'ura' : 'uro'; } else if (number === 2) { result += withoutSuffix || isFuture ? 'uri' : 'urama'; } else if (number < 5) { result += withoutSuffix || isFuture ? 'ure' : 'urami'; } else { result += withoutSuffix || isFuture ? 'ur' : 'urami'; } return result; case 'd': return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; case 'dd': if (number === 1) { result += withoutSuffix || isFuture ? 'dan' : 'dnem'; } else if (number === 2) { result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; } else { result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; } return result; case 'M': return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; case 'MM': if (number === 1) { result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; } else if (number === 2) { result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; } else if (number < 5) { result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; } else { result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; } return result; case 'y': return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; case 'yy': if (number === 1) { result += withoutSuffix || isFuture ? 'leto' : 'letom'; } else if (number === 2) { result += withoutSuffix || isFuture ? 'leti' : 'letoma'; } else if (number < 5) { result += withoutSuffix || isFuture ? 'leta' : 'leti'; } else { result += withoutSuffix || isFuture ? 'let' : 'leti'; } return result; } } hooks.defineLocale('sl', { months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( '_' ), monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( '_' ), monthsParseExact: true, weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD. MM. YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danes ob] LT', nextDay: '[jutri ob] LT', nextWeek: function () { switch (this.day()) { case 0: return '[v] [nedeljo] [ob] LT'; case 3: return '[v] [sredo] [ob] LT'; case 6: return '[v] [soboto] [ob] LT'; case 1: case 2: case 4: case 5: return '[v] dddd [ob] LT'; } }, lastDay: '[včeraj ob] LT', lastWeek: function () { switch (this.day()) { case 0: return '[prejšnjo] [nedeljo] [ob] LT'; case 3: return '[prejšnjo] [sredo] [ob] LT'; case 6: return '[prejšnjo] [soboto] [ob] LT'; case 1: case 2: case 4: case 5: return '[prejšnji] dddd [ob] LT'; } }, sameElse: 'L', }, relativeTime: { future: 'čez %s', past: 'pred %s', s: processRelativeTime$9, ss: processRelativeTime$9, m: processRelativeTime$9, mm: processRelativeTime$9, h: processRelativeTime$9, hh: processRelativeTime$9, d: processRelativeTime$9, dd: processRelativeTime$9, M: processRelativeTime$9, MM: processRelativeTime$9, y: processRelativeTime$9, yy: processRelativeTime$9, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('sq', { months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( '_' ), monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( '_' ), weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), weekdaysParseExact: true, meridiemParse: /PD|MD/, isPM: function (input) { return input.charAt(0) === 'M'; }, meridiem: function (hours, minutes, isLower) { return hours < 12 ? 'PD' : 'MD'; }, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Sot në] LT', nextDay: '[Nesër në] LT', nextWeek: 'dddd [në] LT', lastDay: '[Dje në] LT', lastWeek: 'dddd [e kaluar në] LT', sameElse: 'L', }, relativeTime: { future: 'në %s', past: '%s më parë', s: 'disa sekonda', ss: '%d sekonda', m: 'një minutë', mm: '%d minuta', h: 'një orë', hh: '%d orë', d: 'një ditë', dd: '%d ditë', M: 'një muaj', MM: '%d muaj', y: 'një vit', yy: '%d vite', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var translator$1 = { words: { //Different grammatical cases ss: ['секунда', 'секунде', 'секунди'], m: ['један минут', 'једног минута'], mm: ['минут', 'минута', 'минута'], h: ['један сат', 'једног сата'], hh: ['сат', 'сата', 'сати'], d: ['један дан', 'једног дана'], dd: ['дан', 'дана', 'дана'], M: ['један месец', 'једног месеца'], MM: ['месец', 'месеца', 'месеци'], y: ['једну годину', 'једне године'], yy: ['годину', 'године', 'година'], }, correctGrammaticalCase: function (number, wordKey) { if ( number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20) ) { return number % 10 === 1 ? wordKey[0] : wordKey[1]; } return wordKey[2]; }, translate: function (number, withoutSuffix, key, isFuture) { var wordKey = translator$1.words[key], word; if (key.length === 1) { // Nominativ if (key === 'y' && withoutSuffix) return 'једна година'; return isFuture || withoutSuffix ? wordKey[0] : wordKey[1]; } word = translator$1.correctGrammaticalCase(number, wordKey); // Nominativ if (key === 'yy' && withoutSuffix && word === 'годину') { return number + ' година'; } return number + ' ' + word; }, }; hooks.defineLocale('sr-cyrl', { months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( '_' ), monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), monthsParseExact: true, weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'D. M. YYYY.', LL: 'D. MMMM YYYY.', LLL: 'D. MMMM YYYY. H:mm', LLLL: 'dddd, D. MMMM YYYY. H:mm', }, calendar: { sameDay: '[данас у] LT', nextDay: '[сутра у] LT', nextWeek: function () { switch (this.day()) { case 0: return '[у] [недељу] [у] LT'; case 3: return '[у] [среду] [у] LT'; case 6: return '[у] [суботу] [у] LT'; case 1: case 2: case 4: case 5: return '[у] dddd [у] LT'; } }, lastDay: '[јуче у] LT', lastWeek: function () { var lastWeekDays = [ '[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', '[прошлог] [уторка] [у] LT', '[прошле] [среде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', '[прошле] [суботе] [у] LT', ]; return lastWeekDays[this.day()]; }, sameElse: 'L', }, relativeTime: { future: 'за %s', past: 'пре %s', s: 'неколико секунди', ss: translator$1.translate, m: translator$1.translate, mm: translator$1.translate, h: translator$1.translate, hh: translator$1.translate, d: translator$1.translate, dd: translator$1.translate, M: translator$1.translate, MM: translator$1.translate, y: translator$1.translate, yy: translator$1.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 1st is the first week of the year. }, }); //! moment.js locale configuration var translator$2 = { words: { //Different grammatical cases ss: ['sekunda', 'sekunde', 'sekundi'], m: ['jedan minut', 'jednog minuta'], mm: ['minut', 'minuta', 'minuta'], h: ['jedan sat', 'jednog sata'], hh: ['sat', 'sata', 'sati'], d: ['jedan dan', 'jednog dana'], dd: ['dan', 'dana', 'dana'], M: ['jedan mesec', 'jednog meseca'], MM: ['mesec', 'meseca', 'meseci'], y: ['jednu godinu', 'jedne godine'], yy: ['godinu', 'godine', 'godina'], }, correctGrammaticalCase: function (number, wordKey) { if ( number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20) ) { return number % 10 === 1 ? wordKey[0] : wordKey[1]; } return wordKey[2]; }, translate: function (number, withoutSuffix, key, isFuture) { var wordKey = translator$2.words[key], word; if (key.length === 1) { // Nominativ if (key === 'y' && withoutSuffix) return 'jedna godina'; return isFuture || withoutSuffix ? wordKey[0] : wordKey[1]; } word = translator$2.correctGrammaticalCase(number, wordKey); // Nominativ if (key === 'yy' && withoutSuffix && word === 'godinu') { return number + ' godina'; } return number + ' ' + word; }, }; hooks.defineLocale('sr', { months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( '_' ), monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), monthsParseExact: true, weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split( '_' ), weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'D. M. YYYY.', LL: 'D. MMMM YYYY.', LLL: 'D. MMMM YYYY. H:mm', LLLL: 'dddd, D. MMMM YYYY. H:mm', }, calendar: { sameDay: '[danas u] LT', nextDay: '[sutra u] LT', nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedelju] [u] LT'; case 3: return '[u] [sredu] [u] LT'; case 6: return '[u] [subotu] [u] LT'; case 1: case 2: case 4: case 5: return '[u] dddd [u] LT'; } }, lastDay: '[juče u] LT', lastWeek: function () { var lastWeekDays = [ '[prošle] [nedelje] [u] LT', '[prošlog] [ponedeljka] [u] LT', '[prošlog] [utorka] [u] LT', '[prošle] [srede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', '[prošle] [subote] [u] LT', ]; return lastWeekDays[this.day()]; }, sameElse: 'L', }, relativeTime: { future: 'za %s', past: 'pre %s', s: 'nekoliko sekundi', ss: translator$2.translate, m: translator$2.translate, mm: translator$2.translate, h: translator$2.translate, hh: translator$2.translate, d: translator$2.translate, dd: translator$2.translate, M: translator$2.translate, MM: translator$2.translate, y: translator$2.translate, yy: translator$2.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ss', { months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( '_' ), monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( '_' ), weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY h:mm A', LLLL: 'dddd, D MMMM YYYY h:mm A', }, calendar: { sameDay: '[Namuhla nga] LT', nextDay: '[Kusasa nga] LT', nextWeek: 'dddd [nga] LT', lastDay: '[Itolo nga] LT', lastWeek: 'dddd [leliphelile] [nga] LT', sameElse: 'L', }, relativeTime: { future: 'nga %s', past: 'wenteka nga %s', s: 'emizuzwana lomcane', ss: '%d mzuzwana', m: 'umzuzu', mm: '%d emizuzu', h: 'lihora', hh: '%d emahora', d: 'lilanga', dd: '%d emalanga', M: 'inyanga', MM: '%d tinyanga', y: 'umnyaka', yy: '%d iminyaka', }, meridiemParse: /ekuseni|emini|entsambama|ebusuku/, meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'ekuseni'; } else if (hours < 15) { return 'emini'; } else if (hours < 19) { return 'entsambama'; } else { return 'ebusuku'; } }, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'ekuseni') { return hour; } else if (meridiem === 'emini') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { if (hour === 0) { return 0; } return hour + 12; } }, dayOfMonthOrdinalParse: /\d{1,2}/, ordinal: '%d', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('sv', { months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( '_' ), monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY-MM-DD', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [kl.] HH:mm', LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', lll: 'D MMM YYYY HH:mm', llll: 'ddd D MMM YYYY HH:mm', }, calendar: { sameDay: '[Idag] LT', nextDay: '[Imorgon] LT', lastDay: '[Igår] LT', nextWeek: '[På] dddd LT', lastWeek: '[I] dddd[s] LT', sameElse: 'L', }, relativeTime: { future: 'om %s', past: 'för %s sedan', s: 'några sekunder', ss: '%d sekunder', m: 'en minut', mm: '%d minuter', h: 'en timme', hh: '%d timmar', d: 'en dag', dd: '%d dagar', M: 'en månad', MM: '%d månader', y: 'ett år', yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? ':e' : b === 1 ? ':a' : b === 2 ? ':a' : b === 3 ? ':e' : ':e'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('sw', { months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( '_' ), monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( '_' ), weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'hh:mm A', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[leo saa] LT', nextDay: '[kesho saa] LT', nextWeek: '[wiki ijayo] dddd [saat] LT', lastDay: '[jana] LT', lastWeek: '[wiki iliyopita] dddd [saat] LT', sameElse: 'L', }, relativeTime: { future: '%s baadaye', past: 'tokea %s', s: 'hivi punde', ss: 'sekunde %d', m: 'dakika moja', mm: 'dakika %d', h: 'saa limoja', hh: 'masaa %d', d: 'siku moja', dd: 'siku %d', M: 'mwezi mmoja', MM: 'miezi %d', y: 'mwaka mmoja', yy: 'miaka %d', }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration var symbolMap$h = { 1: '௧', 2: '௨', 3: '௩', 4: '௪', 5: '௫', 6: '௬', 7: '௭', 8: '௮', 9: '௯', 0: '௦', }, numberMap$g = { '௧': '1', '௨': '2', '௩': '3', '௪': '4', '௫': '5', '௬': '6', '௭': '7', '௮': '8', '௯': '9', '௦': '0', }; hooks.defineLocale('ta', { months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( '_' ), monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( '_' ), weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split( '_' ), weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split( '_' ), weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, HH:mm', LLLL: 'dddd, D MMMM YYYY, HH:mm', }, calendar: { sameDay: '[இன்று] LT', nextDay: '[நாளை] LT', nextWeek: 'dddd, LT', lastDay: '[நேற்று] LT', lastWeek: '[கடந்த வாரம்] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s இல்', past: '%s முன்', s: 'ஒரு சில விநாடிகள்', ss: '%d விநாடிகள்', m: 'ஒரு நிமிடம்', mm: '%d நிமிடங்கள்', h: 'ஒரு மணி நேரம்', hh: '%d மணி நேரம்', d: 'ஒரு நாள்', dd: '%d நாட்கள்', M: 'ஒரு மாதம்', MM: '%d மாதங்கள்', y: 'ஒரு வருடம்', yy: '%d ஆண்டுகள்', }, dayOfMonthOrdinalParse: /\d{1,2}வது/, ordinal: function (number) { return number + 'வது'; }, preparse: function (string) { return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { return numberMap$g[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { return symbolMap$h[match]; }); }, // refer http://ta.wikipedia.org/s/1er1 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, meridiem: function (hour, minute, isLower) { if (hour < 2) { return ' யாமம்'; } else if (hour < 6) { return ' வைகறை'; // வைகறை } else if (hour < 10) { return ' காலை'; // காலை } else if (hour < 14) { return ' நண்பகல்'; // நண்பகல் } else if (hour < 18) { return ' எற்பாடு'; // எற்பாடு } else if (hour < 22) { return ' மாலை'; // மாலை } else { return ' யாமம்'; } }, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'யாமம்') { return hour < 2 ? hour : hour + 12; } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { return hour; } else if (meridiem === 'நண்பகல்') { return hour >= 10 ? hour : hour + 12; } else { return hour + 12; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('te', { months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split( '_' ), monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split( '_' ), monthsParseExact: true, weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split( '_' ), weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), longDateFormat: { LT: 'A h:mm', LTS: 'A h:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm', LLLL: 'dddd, D MMMM YYYY, A h:mm', }, calendar: { sameDay: '[నేడు] LT', nextDay: '[రేపు] LT', nextWeek: 'dddd, LT', lastDay: '[నిన్న] LT', lastWeek: '[గత] dddd, LT', sameElse: 'L', }, relativeTime: { future: '%s లో', past: '%s క్రితం', s: 'కొన్ని క్షణాలు', ss: '%d సెకన్లు', m: 'ఒక నిమిషం', mm: '%d నిమిషాలు', h: 'ఒక గంట', hh: '%d గంటలు', d: 'ఒక రోజు', dd: '%d రోజులు', M: 'ఒక నెల', MM: '%d నెలలు', y: 'ఒక సంవత్సరం', yy: '%d సంవత్సరాలు', }, dayOfMonthOrdinalParse: /\d{1,2}వ/, ordinal: '%dవ', meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'రాత్రి') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'ఉదయం') { return hour; } else if (meridiem === 'మధ్యాహ్నం') { return hour >= 10 ? hour : hour + 12; } else if (meridiem === 'సాయంత్రం') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'రాత్రి'; } else if (hour < 10) { return 'ఉదయం'; } else if (hour < 17) { return 'మధ్యాహ్నం'; } else if (hour < 20) { return 'సాయంత్రం'; } else { return 'రాత్రి'; } }, week: { dow: 0, // Sunday is the first day of the week. doy: 6, // The week that contains Jan 6th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('tet', { months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( '_' ), monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Ohin iha] LT', nextDay: '[Aban iha] LT', nextWeek: 'dddd [iha] LT', lastDay: '[Horiseik iha] LT', lastWeek: 'dddd [semana kotuk] [iha] LT', sameElse: 'L', }, relativeTime: { future: 'iha %s', past: '%s liuba', s: 'segundu balun', ss: 'segundu %d', m: 'minutu ida', mm: 'minutu %d', h: 'oras ida', hh: 'oras %d', d: 'loron ida', dd: 'loron %d', M: 'fulan ida', MM: 'fulan %d', y: 'tinan ida', yy: 'tinan %d', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var suffixes$3 = { 0: '-ум', 1: '-ум', 2: '-юм', 3: '-юм', 4: '-ум', 5: '-ум', 6: '-ум', 7: '-ум', 8: '-ум', 9: '-ум', 10: '-ум', 12: '-ум', 13: '-ум', 20: '-ум', 30: '-юм', 40: '-ум', 50: '-ум', 60: '-ум', 70: '-ум', 80: '-ум', 90: '-ум', 100: '-ум', }; hooks.defineLocale('tg', { months: { format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split( '_' ), standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( '_' ), }, monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split( '_' ), weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Имрӯз соати] LT', nextDay: '[Фардо соати] LT', lastDay: '[Дирӯз соати] LT', nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT', lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT', sameElse: 'L', }, relativeTime: { future: 'баъди %s', past: '%s пеш', s: 'якчанд сония', m: 'як дақиқа', mm: '%d дақиқа', h: 'як соат', hh: '%d соат', d: 'як рӯз', dd: '%d рӯз', M: 'як моҳ', MM: '%d моҳ', y: 'як сол', yy: '%d сол', }, meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'шаб') { return hour < 4 ? hour : hour + 12; } else if (meridiem === 'субҳ') { return hour; } else if (meridiem === 'рӯз') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === 'бегоҳ') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'шаб'; } else if (hour < 11) { return 'субҳ'; } else if (hour < 16) { return 'рӯз'; } else if (hour < 19) { return 'бегоҳ'; } else { return 'шаб'; } }, dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/, ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]); }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 1th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('th', { months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split( '_' ), monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split( '_' ), monthsParseExact: true, weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', LTS: 'H:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY เวลา H:mm', LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm', }, meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, isPM: function (input) { return input === 'หลังเที่ยง'; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ก่อนเที่ยง'; } else { return 'หลังเที่ยง'; } }, calendar: { sameDay: '[วันนี้ เวลา] LT', nextDay: '[พรุ่งนี้ เวลา] LT', nextWeek: 'dddd[หน้า เวลา] LT', lastDay: '[เมื่อวานนี้ เวลา] LT', lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT', sameElse: 'L', }, relativeTime: { future: 'อีก %s', past: '%sที่แล้ว', s: 'ไม่กี่วินาที', ss: '%d วินาที', m: '1 นาที', mm: '%d นาที', h: '1 ชั่วโมง', hh: '%d ชั่วโมง', d: '1 วัน', dd: '%d วัน', w: '1 สัปดาห์', ww: '%d สัปดาห์', M: '1 เดือน', MM: '%d เดือน', y: '1 ปี', yy: '%d ปี', }, }); //! moment.js locale configuration var suffixes$4 = { 1: "'inji", 5: "'inji", 8: "'inji", 70: "'inji", 80: "'inji", 2: "'nji", 7: "'nji", 20: "'nji", 50: "'nji", 3: "'ünji", 4: "'ünji", 100: "'ünji", 6: "'njy", 9: "'unjy", 10: "'unjy", 30: "'unjy", 60: "'ynjy", 90: "'ynjy", }; hooks.defineLocale('tk', { months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split( '_' ), monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'), weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split( '_' ), weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'), weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[bugün sagat] LT', nextDay: '[ertir sagat] LT', nextWeek: '[indiki] dddd [sagat] LT', lastDay: '[düýn] LT', lastWeek: '[geçen] dddd [sagat] LT', sameElse: 'L', }, relativeTime: { future: '%s soň', past: '%s öň', s: 'birnäçe sekunt', m: 'bir minut', mm: '%d minut', h: 'bir sagat', hh: '%d sagat', d: 'bir gün', dd: '%d gün', M: 'bir aý', MM: '%d aý', y: 'bir ýyl', yy: '%d ýyl', }, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'Do': case 'DD': return number; default: if (number === 0) { // special case for zero return number + "'unjy"; } var a = number % 10, b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]); } }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('tl-ph', { months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( '_' ), monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( '_' ), weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'MM/D/YYYY', LL: 'MMMM D, YYYY', LLL: 'MMMM D, YYYY HH:mm', LLLL: 'dddd, MMMM DD, YYYY HH:mm', }, calendar: { sameDay: 'LT [ngayong araw]', nextDay: '[Bukas ng] LT', nextWeek: 'LT [sa susunod na] dddd', lastDay: 'LT [kahapon]', lastWeek: 'LT [noong nakaraang] dddd', sameElse: 'L', }, relativeTime: { future: 'sa loob ng %s', past: '%s ang nakalipas', s: 'ilang segundo', ss: '%d segundo', m: 'isang minuto', mm: '%d minuto', h: 'isang oras', hh: '%d oras', d: 'isang araw', dd: '%d araw', M: 'isang buwan', MM: '%d buwan', y: 'isang taon', yy: '%d taon', }, dayOfMonthOrdinalParse: /\d{1,2}/, ordinal: function (number) { return number; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); function translateFuture(output) { var time = output; time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'waQ' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'nem' : time + ' pIq'; return time; } function translatePast(output) { var time = output; time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'wen' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'ben' : time + ' ret'; return time; } function translate$a(number, withoutSuffix, string, isFuture) { var numberNoun = numberAsNoun(number); switch (string) { case 'ss': return numberNoun + ' lup'; case 'mm': return numberNoun + ' tup'; case 'hh': return numberNoun + ' rep'; case 'dd': return numberNoun + ' jaj'; case 'MM': return numberNoun + ' jar'; case 'yy': return numberNoun + ' DIS'; } } function numberAsNoun(number) { var hundred = Math.floor((number % 1000) / 100), ten = Math.floor((number % 100) / 10), one = number % 10, word = ''; if (hundred > 0) { word += numbersNouns[hundred] + 'vatlh'; } if (ten > 0) { word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; } if (one > 0) { word += (word !== '' ? ' ' : '') + numbersNouns[one]; } return word === '' ? 'pagh' : word; } hooks.defineLocale('tlh', { months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split( '_' ), monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split( '_' ), monthsParseExact: true, weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( '_' ), weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[DaHjaj] LT', nextDay: '[wa’leS] LT', nextWeek: 'LLL', lastDay: '[wa’Hu’] LT', lastWeek: 'LLL', sameElse: 'L', }, relativeTime: { future: translateFuture, past: translatePast, s: 'puS lup', ss: translate$a, m: 'wa’ tup', mm: translate$a, h: 'wa’ rep', hh: translate$a, d: 'wa’ jaj', dd: translate$a, M: 'wa’ jar', MM: translate$a, y: 'wa’ DIS', yy: translate$a, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration var suffixes$5 = { 1: "'inci", 5: "'inci", 8: "'inci", 70: "'inci", 80: "'inci", 2: "'nci", 7: "'nci", 20: "'nci", 50: "'nci", 3: "'üncü", 4: "'üncü", 100: "'üncü", 6: "'ncı", 9: "'uncu", 10: "'uncu", 30: "'uncu", 60: "'ıncı", 90: "'ıncı", }; hooks.defineLocale('tr', { months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split( '_' ), monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split( '_' ), weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'), weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'öö' : 'ÖÖ'; } else { return isLower ? 'ös' : 'ÖS'; } }, meridiemParse: /öö|ÖÖ|ös|ÖS/, isPM: function (input) { return input === 'ös' || input === 'ÖS'; }, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[bugün saat] LT', nextDay: '[yarın saat] LT', nextWeek: '[gelecek] dddd [saat] LT', lastDay: '[dün] LT', lastWeek: '[geçen] dddd [saat] LT', sameElse: 'L', }, relativeTime: { future: '%s sonra', past: '%s önce', s: 'birkaç saniye', ss: '%d saniye', m: 'bir dakika', mm: '%d dakika', h: 'bir saat', hh: '%d saat', d: 'bir gün', dd: '%d gün', w: 'bir hafta', ww: '%d hafta', M: 'bir ay', MM: '%d ay', y: 'bir yıl', yy: '%d yıl', }, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'Do': case 'DD': return number; default: if (number === 0) { // special case for zero return number + "'ıncı"; } var a = number % 10, b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]); } }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. // This is currently too difficult (maybe even impossible) to add. hooks.defineLocale('tzl', { months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( '_' ), monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), longDateFormat: { LT: 'HH.mm', LTS: 'HH.mm.ss', L: 'DD.MM.YYYY', LL: 'D. MMMM [dallas] YYYY', LLL: 'D. MMMM [dallas] YYYY HH.mm', LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', }, meridiemParse: /d\'o|d\'a/i, isPM: function (input) { return "d'o" === input.toLowerCase(); }, meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? "d'o" : "D'O"; } else { return isLower ? "d'a" : "D'A"; } }, calendar: { sameDay: '[oxhi à] LT', nextDay: '[demà à] LT', nextWeek: 'dddd [à] LT', lastDay: '[ieiri à] LT', lastWeek: '[sür el] dddd [lasteu à] LT', sameElse: 'L', }, relativeTime: { future: 'osprei %s', past: 'ja%s', s: processRelativeTime$a, ss: processRelativeTime$a, m: processRelativeTime$a, mm: processRelativeTime$a, h: processRelativeTime$a, hh: processRelativeTime$a, d: processRelativeTime$a, dd: processRelativeTime$a, M: processRelativeTime$a, MM: processRelativeTime$a, y: processRelativeTime$a, yy: processRelativeTime$a, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); function processRelativeTime$a(number, withoutSuffix, key, isFuture) { var format = { s: ['viensas secunds', "'iensas secunds"], ss: [number + ' secunds', '' + number + ' secunds'], m: ["'n míut", "'iens míut"], mm: [number + ' míuts', '' + number + ' míuts'], h: ["'n þora", "'iensa þora"], hh: [number + ' þoras', '' + number + ' þoras'], d: ["'n ziua", "'iensa ziua"], dd: [number + ' ziuas', '' + number + ' ziuas'], M: ["'n mes", "'iens mes"], MM: [number + ' mesen', '' + number + ' mesen'], y: ["'n ar", "'iens ar"], yy: [number + ' ars', '' + number + ' ars'], }; return isFuture ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1]; } //! moment.js locale configuration hooks.defineLocale('tzm-latn', { months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( '_' ), monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( '_' ), weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[asdkh g] LT', nextDay: '[aska g] LT', nextWeek: 'dddd [g] LT', lastDay: '[assant g] LT', lastWeek: 'dddd [g] LT', sameElse: 'L', }, relativeTime: { future: 'dadkh s yan %s', past: 'yan %s', s: 'imik', ss: '%d imik', m: 'minuḍ', mm: '%d minuḍ', h: 'saɛa', hh: '%d tassaɛin', d: 'ass', dd: '%d ossan', M: 'ayowr', MM: '%d iyyirn', y: 'asgas', yy: '%d isgasn', }, week: { dow: 6, // Saturday is the first day of the week. doy: 12, // The week that contains Jan 12th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('tzm', { months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( '_' ), monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( '_' ), weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', nextWeek: 'dddd [ⴴ] LT', lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', lastWeek: 'dddd [ⴴ] LT', sameElse: 'L', }, relativeTime: { future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', past: 'ⵢⴰⵏ %s', s: 'ⵉⵎⵉⴽ', ss: '%d ⵉⵎⵉⴽ', m: 'ⵎⵉⵏⵓⴺ', mm: '%d ⵎⵉⵏⵓⴺ', h: 'ⵙⴰⵄⴰ', hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', d: 'ⴰⵙⵙ', dd: '%d oⵙⵙⴰⵏ', M: 'ⴰⵢoⵓⵔ', MM: '%d ⵉⵢⵢⵉⵔⵏ', y: 'ⴰⵙⴳⴰⵙ', yy: '%d ⵉⵙⴳⴰⵙⵏ', }, week: { dow: 6, // Saturday is the first day of the week. doy: 12, // The week that contains Jan 12th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('ug-cn', { months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( '_' ), monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( '_' ), weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split( '_' ), weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY-MM-DD', LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', }, meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if ( meridiem === 'يېرىم كېچە' || meridiem === 'سەھەر' || meridiem === 'چۈشتىن بۇرۇن' ) { return hour; } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') { return hour + 12; } else { return hour >= 11 ? hour : hour + 12; } }, meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return 'يېرىم كېچە'; } else if (hm < 900) { return 'سەھەر'; } else if (hm < 1130) { return 'چۈشتىن بۇرۇن'; } else if (hm < 1230) { return 'چۈش'; } else if (hm < 1800) { return 'چۈشتىن كېيىن'; } else { return 'كەچ'; } }, calendar: { sameDay: '[بۈگۈن سائەت] LT', nextDay: '[ئەتە سائەت] LT', nextWeek: '[كېلەركى] dddd [سائەت] LT', lastDay: '[تۆنۈگۈن] LT', lastWeek: '[ئالدىنقى] dddd [سائەت] LT', sameElse: 'L', }, relativeTime: { future: '%s كېيىن', past: '%s بۇرۇن', s: 'نەچچە سېكونت', ss: '%d سېكونت', m: 'بىر مىنۇت', mm: '%d مىنۇت', h: 'بىر سائەت', hh: '%d سائەت', d: 'بىر كۈن', dd: '%d كۈن', M: 'بىر ئاي', MM: '%d ئاي', y: 'بىر يىل', yy: '%d يىل', }, dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'DDD': return number + '-كۈنى'; case 'w': case 'W': return number + '-ھەپتە'; default: return number; } }, preparse: function (string) { return string.replace(/،/g, ','); }, postformat: function (string) { return string.replace(/,/g, '،'); }, week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 1st is the first week of the year. }, }); //! moment.js locale configuration function plural$6(word, num) { var forms = word.split('_'); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]; } function relativeTimeWithPlural$4(number, withoutSuffix, key) { var format = { ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', dd: 'день_дні_днів', MM: 'місяць_місяці_місяців', yy: 'рік_роки_років', }; if (key === 'm') { return withoutSuffix ? 'хвилина' : 'хвилину'; } else if (key === 'h') { return withoutSuffix ? 'година' : 'годину'; } else { return number + ' ' + plural$6(format[key], +number); } } function weekdaysCaseReplace(m, format) { var weekdays = { nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( '_' ), accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( '_' ), genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( '_' ), }, nounCase; if (m === true) { return weekdays['nominative'] .slice(1, 7) .concat(weekdays['nominative'].slice(0, 1)); } if (!m) { return weekdays['nominative']; } nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) ? 'accusative' : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) ? 'genitive' : 'nominative'; return weekdays[nounCase][m.day()]; } function processHoursFunction(str) { return function () { return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; }; } hooks.defineLocale('uk', { months: { format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( '_' ), standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( '_' ), }, monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( '_' ), weekdays: weekdaysCaseReplace, weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD.MM.YYYY', LL: 'D MMMM YYYY р.', LLL: 'D MMMM YYYY р., HH:mm', LLLL: 'dddd, D MMMM YYYY р., HH:mm', }, calendar: { sameDay: processHoursFunction('[Сьогодні '), nextDay: processHoursFunction('[Завтра '), lastDay: processHoursFunction('[Вчора '), nextWeek: processHoursFunction('[У] dddd ['), lastWeek: function () { switch (this.day()) { case 0: case 3: case 5: case 6: return processHoursFunction('[Минулої] dddd [').call(this); case 1: case 2: case 4: return processHoursFunction('[Минулого] dddd [').call(this); } }, sameElse: 'L', }, relativeTime: { future: 'за %s', past: '%s тому', s: 'декілька секунд', ss: relativeTimeWithPlural$4, m: relativeTimeWithPlural$4, mm: relativeTimeWithPlural$4, h: 'годину', hh: relativeTimeWithPlural$4, d: 'день', dd: relativeTimeWithPlural$4, M: 'місяць', MM: relativeTimeWithPlural$4, y: 'рік', yy: relativeTimeWithPlural$4, }, // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason meridiemParse: /ночі|ранку|дня|вечора/, isPM: function (input) { return /^(дня|вечора)$/.test(input); }, meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночі'; } else if (hour < 12) { return 'ранку'; } else if (hour < 17) { return 'дня'; } else { return 'вечора'; } }, dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, ordinal: function (number, period) { switch (period) { case 'M': case 'd': case 'DDD': case 'w': case 'W': return number + '-й'; case 'D': return number + '-го'; default: return number; } }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration var months$b = [ 'جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر', ], days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; hooks.defineLocale('ur', { months: months$b, monthsShort: months$b, weekdays: days$2, weekdaysShort: days$2, weekdaysMin: days$2, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd، D MMMM YYYY HH:mm', }, meridiemParse: /صبح|شام/, isPM: function (input) { return 'شام' === input; }, meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'صبح'; } return 'شام'; }, calendar: { sameDay: '[آج بوقت] LT', nextDay: '[کل بوقت] LT', nextWeek: 'dddd [بوقت] LT', lastDay: '[گذشتہ روز بوقت] LT', lastWeek: '[گذشتہ] dddd [بوقت] LT', sameElse: 'L', }, relativeTime: { future: '%s بعد', past: '%s قبل', s: 'چند سیکنڈ', ss: '%d سیکنڈ', m: 'ایک منٹ', mm: '%d منٹ', h: 'ایک گھنٹہ', hh: '%d گھنٹے', d: 'ایک دن', dd: '%d دن', M: 'ایک ماہ', MM: '%d ماہ', y: 'ایک سال', yy: '%d سال', }, preparse: function (string) { return string.replace(/،/g, ','); }, postformat: function (string) { return string.replace(/,/g, '،'); }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('uz-latn', { months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( '_' ), monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( '_' ), weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'D MMMM YYYY, dddd HH:mm', }, calendar: { sameDay: '[Bugun soat] LT [da]', nextDay: '[Ertaga] LT [da]', nextWeek: 'dddd [kuni soat] LT [da]', lastDay: '[Kecha soat] LT [da]', lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", sameElse: 'L', }, relativeTime: { future: 'Yaqin %s ichida', past: 'Bir necha %s oldin', s: 'soniya', ss: '%d soniya', m: 'bir daqiqa', mm: '%d daqiqa', h: 'bir soat', hh: '%d soat', d: 'bir kun', dd: '%d kun', M: 'bir oy', MM: '%d oy', y: 'bir yil', yy: '%d yil', }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 7th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('uz', { months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( '_' ), monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'D MMMM YYYY, dddd HH:mm', }, calendar: { sameDay: '[Бугун соат] LT [да]', nextDay: '[Эртага] LT [да]', nextWeek: 'dddd [куни соат] LT [да]', lastDay: '[Кеча соат] LT [да]', lastWeek: '[Утган] dddd [куни соат] LT [да]', sameElse: 'L', }, relativeTime: { future: 'Якин %s ичида', past: 'Бир неча %s олдин', s: 'фурсат', ss: '%d фурсат', m: 'бир дакика', mm: '%d дакика', h: 'бир соат', hh: '%d соат', d: 'бир кун', dd: '%d кун', M: 'бир ой', MM: '%d ой', y: 'бир йил', yy: '%d йил', }, week: { dow: 1, // Monday is the first day of the week. doy: 7, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('vi', { months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split( '_' ), monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split( '_' ), monthsParseExact: true, weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split( '_' ), weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), weekdaysParseExact: true, meridiemParse: /sa|ch/i, isPM: function (input) { return /^ch$/i.test(input); }, meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'sa' : 'SA'; } else { return isLower ? 'ch' : 'CH'; } }, longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM [năm] YYYY', LLL: 'D MMMM [năm] YYYY HH:mm', LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', l: 'DD/M/YYYY', ll: 'D MMM YYYY', lll: 'D MMM YYYY HH:mm', llll: 'ddd, D MMM YYYY HH:mm', }, calendar: { sameDay: '[Hôm nay lúc] LT', nextDay: '[Ngày mai lúc] LT', nextWeek: 'dddd [tuần tới lúc] LT', lastDay: '[Hôm qua lúc] LT', lastWeek: 'dddd [tuần trước lúc] LT', sameElse: 'L', }, relativeTime: { future: '%s tới', past: '%s trước', s: 'vài giây', ss: '%d giây', m: 'một phút', mm: '%d phút', h: 'một giờ', hh: '%d giờ', d: 'một ngày', dd: '%d ngày', w: 'một tuần', ww: '%d tuần', M: 'một tháng', MM: '%d tháng', y: 'một năm', yy: '%d năm', }, dayOfMonthOrdinalParse: /\d{1,2}/, ordinal: function (number) { return number; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('x-pseudo', { months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split( '_' ), monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split( '_' ), monthsParseExact: true, weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split( '_' ), weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), weekdaysParseExact: true, longDateFormat: { LT: 'HH:mm', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[T~ódá~ý át] LT', nextDay: '[T~ómó~rró~w át] LT', nextWeek: 'dddd [át] LT', lastDay: '[Ý~ést~érdá~ý át] LT', lastWeek: '[L~ást] dddd [át] LT', sameElse: 'L', }, relativeTime: { future: 'í~ñ %s', past: '%s á~gó', s: 'á ~féw ~sécó~ñds', ss: '%d s~écóñ~ds', m: 'á ~míñ~úté', mm: '%d m~íñú~tés', h: 'á~ñ hó~úr', hh: '%d h~óúrs', d: 'á ~dáý', dd: '%d d~áýs', M: 'á ~móñ~th', MM: '%d m~óñt~hs', y: 'á ~ýéár', yy: '%d ý~éárs', }, dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function (number) { var b = number % 10, output = ~~((number % 100) / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th'; return number + output; }, week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('yo', { months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split( '_' ), monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), longDateFormat: { LT: 'h:mm A', LTS: 'h:mm:ss A', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY h:mm A', LLLL: 'dddd, D MMMM YYYY h:mm A', }, calendar: { sameDay: '[Ònì ni] LT', nextDay: '[Ọ̀la ni] LT', nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT", lastDay: '[Àna ni] LT', lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT', sameElse: 'L', }, relativeTime: { future: 'ní %s', past: '%s kọjá', s: 'ìsẹjú aayá die', ss: 'aayá %d', m: 'ìsẹjú kan', mm: 'ìsẹjú %d', h: 'wákati kan', hh: 'wákati %d', d: 'ọjọ́ kan', dd: 'ọjọ́ %d', M: 'osù kan', MM: 'osù %d', y: 'ọdún kan', yy: 'ọdún %d', }, dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/, ordinal: 'ọjọ́ %d', week: { dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('zh-cn', { months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( '_' ), monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( '_' ), weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), weekdaysMin: '日_一_二_三_四_五_六'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY/MM/DD', LL: 'YYYY年M月D日', LLL: 'YYYY年M月D日Ah点mm分', LLLL: 'YYYY年M月D日ddddAh点mm分', l: 'YYYY/M/D', ll: 'YYYY年M月D日', lll: 'YYYY年M月D日 HH:mm', llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { return hour; } else if (meridiem === '下午' || meridiem === '晚上') { return hour + 12; } else { // '中午' return hour >= 11 ? hour : hour + 12; } }, meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; } else if (hm < 900) { return '早上'; } else if (hm < 1130) { return '上午'; } else if (hm < 1230) { return '中午'; } else if (hm < 1800) { return '下午'; } else { return '晚上'; } }, calendar: { sameDay: '[今天]LT', nextDay: '[明天]LT', nextWeek: function (now) { if (now.week() !== this.week()) { return '[下]dddLT'; } else { return '[本]dddLT'; } }, lastDay: '[昨天]LT', lastWeek: function (now) { if (this.week() !== now.week()) { return '[上]dddLT'; } else { return '[本]dddLT'; } }, sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'DDD': return number + '日'; case 'M': return number + '月'; case 'w': case 'W': return number + '周'; default: return number; } }, relativeTime: { future: '%s后', past: '%s前', s: '几秒', ss: '%d 秒', m: '1 分钟', mm: '%d 分钟', h: '1 小时', hh: '%d 小时', d: '1 天', dd: '%d 天', w: '1 周', ww: '%d 周', M: '1 个月', MM: '%d 个月', y: '1 年', yy: '%d 年', }, week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 dow: 1, // Monday is the first day of the week. doy: 4, // The week that contains Jan 4th is the first week of the year. }, }); //! moment.js locale configuration hooks.defineLocale('zh-hk', { months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( '_' ), monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( '_' ), weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), weekdaysMin: '日_一_二_三_四_五_六'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY/MM/DD', LL: 'YYYY年M月D日', LLL: 'YYYY年M月D日 HH:mm', LLLL: 'YYYY年M月D日dddd HH:mm', l: 'YYYY/M/D', ll: 'YYYY年M月D日', lll: 'YYYY年M月D日 HH:mm', llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { return hour; } else if (meridiem === '中午') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === '下午' || meridiem === '晚上') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; } else if (hm < 900) { return '早上'; } else if (hm < 1200) { return '上午'; } else if (hm === 1200) { return '中午'; } else if (hm < 1800) { return '下午'; } else { return '晚上'; } }, calendar: { sameDay: '[今天]LT', nextDay: '[明天]LT', nextWeek: '[下]ddddLT', lastDay: '[昨天]LT', lastWeek: '[上]ddddLT', sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'DDD': return number + '日'; case 'M': return number + '月'; case 'w': case 'W': return number + '週'; default: return number; } }, relativeTime: { future: '%s後', past: '%s前', s: '幾秒', ss: '%d 秒', m: '1 分鐘', mm: '%d 分鐘', h: '1 小時', hh: '%d 小時', d: '1 天', dd: '%d 天', M: '1 個月', MM: '%d 個月', y: '1 年', yy: '%d 年', }, }); //! moment.js locale configuration hooks.defineLocale('zh-mo', { months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( '_' ), monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( '_' ), weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), weekdaysMin: '日_一_二_三_四_五_六'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'YYYY年M月D日', LLL: 'YYYY年M月D日 HH:mm', LLLL: 'YYYY年M月D日dddd HH:mm', l: 'D/M/YYYY', ll: 'YYYY年M月D日', lll: 'YYYY年M月D日 HH:mm', llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { return hour; } else if (meridiem === '中午') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === '下午' || meridiem === '晚上') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; } else if (hm < 900) { return '早上'; } else if (hm < 1130) { return '上午'; } else if (hm < 1230) { return '中午'; } else if (hm < 1800) { return '下午'; } else { return '晚上'; } }, calendar: { sameDay: '[今天] LT', nextDay: '[明天] LT', nextWeek: '[下]dddd LT', lastDay: '[昨天] LT', lastWeek: '[上]dddd LT', sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'DDD': return number + '日'; case 'M': return number + '月'; case 'w': case 'W': return number + '週'; default: return number; } }, relativeTime: { future: '%s內', past: '%s前', s: '幾秒', ss: '%d 秒', m: '1 分鐘', mm: '%d 分鐘', h: '1 小時', hh: '%d 小時', d: '1 天', dd: '%d 天', M: '1 個月', MM: '%d 個月', y: '1 年', yy: '%d 年', }, }); //! moment.js locale configuration hooks.defineLocale('zh-tw', { months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( '_' ), monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( '_' ), weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), weekdaysMin: '日_一_二_三_四_五_六'.split('_'), longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'YYYY/MM/DD', LL: 'YYYY年M月D日', LLL: 'YYYY年M月D日 HH:mm', LLLL: 'YYYY年M月D日dddd HH:mm', l: 'YYYY/M/D', ll: 'YYYY年M月D日', lll: 'YYYY年M月D日 HH:mm', llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { return hour; } else if (meridiem === '中午') { return hour >= 11 ? hour : hour + 12; } else if (meridiem === '下午' || meridiem === '晚上') { return hour + 12; } }, meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; } else if (hm < 900) { return '早上'; } else if (hm < 1130) { return '上午'; } else if (hm < 1230) { return '中午'; } else if (hm < 1800) { return '下午'; } else { return '晚上'; } }, calendar: { sameDay: '[今天] LT', nextDay: '[明天] LT', nextWeek: '[下]dddd LT', lastDay: '[昨天] LT', lastWeek: '[上]dddd LT', sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, ordinal: function (number, period) { switch (period) { case 'd': case 'D': case 'DDD': return number + '日'; case 'M': return number + '月'; case 'w': case 'W': return number + '週'; default: return number; } }, relativeTime: { future: '%s後', past: '%s前', s: '幾秒', ss: '%d 秒', m: '1 分鐘', mm: '%d 分鐘', h: '1 小時', hh: '%d 小時', d: '1 天', dd: '%d 天', M: '1 個月', MM: '%d 個月', y: '1 年', yy: '%d 年', }, }); hooks.locale('en'); return hooks; }))); /***/ }), /***/ "./node_modules/ms/index.js": /*!**********************************!*\ !*** ./node_modules/ms/index.js ***! \**********************************/ /***/ ((module) => { /** * Helpers. */ var s = 1000; var m = s * 60; var h = m * 60; var d = h * 24; var w = d * 7; var y = d * 365.25; /** * Parse or format the given `val`. * * Options: * * - `long` verbose formatting [false] * * @param {String|Number} val * @param {Object} [options] * @throws {Error} throw an error if val is not a non-empty string or a number * @return {String|Number} * @api public */ module.exports = function(val, options) { options = options || {}; var type = typeof val; if (type === 'string' && val.length > 0) { return parse(val); } else if (type === 'number' && isFinite(val)) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( 'val is not a non-empty string or a valid number. val=' + JSON.stringify(val) ); }; /** * Parse the given `str` and return milliseconds. * * @param {String} str * @return {Number} * @api private */ function parse(str) { str = String(str); if (str.length > 100) { return; } var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( str ); if (!match) { return; } var n = parseFloat(match[1]); var type = (match[2] || 'ms').toLowerCase(); switch (type) { case 'years': case 'year': case 'yrs': case 'yr': case 'y': return n * y; case 'weeks': case 'week': case 'w': return n * w; case 'days': case 'day': case 'd': return n * d; case 'hours': case 'hour': case 'hrs': case 'hr': case 'h': return n * h; case 'minutes': case 'minute': case 'mins': case 'min': case 'm': return n * m; case 'seconds': case 'second': case 'secs': case 'sec': case 's': return n * s; case 'milliseconds': case 'millisecond': case 'msecs': case 'msec': case 'ms': return n; default: return undefined; } } /** * Short format for `ms`. * * @param {Number} ms * @return {String} * @api private */ function fmtShort(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return Math.round(ms / d) + 'd'; } if (msAbs >= h) { return Math.round(ms / h) + 'h'; } if (msAbs >= m) { return Math.round(ms / m) + 'm'; } if (msAbs >= s) { return Math.round(ms / s) + 's'; } return ms + 'ms'; } /** * Long format for `ms`. * * @param {Number} ms * @return {String} * @api private */ function fmtLong(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return plural(ms, msAbs, d, 'day'); } if (msAbs >= h) { return plural(ms, msAbs, h, 'hour'); } if (msAbs >= m) { return plural(ms, msAbs, m, 'minute'); } if (msAbs >= s) { return plural(ms, msAbs, s, 'second'); } return ms + ' ms'; } /** * Pluralization helper. */ function plural(ms, msAbs, n, name) { var isPlural = msAbs >= n * 1.5; return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); } /***/ }), /***/ "./node_modules/node-gettext/lib/gettext.js": /*!**************************************************!*\ !*** ./node_modules/node-gettext/lib/gettext.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var get = __webpack_require__(/*! lodash.get */ "./node_modules/lodash.get/index.js"); var plurals = __webpack_require__(/*! ./plurals */ "./node_modules/node-gettext/lib/plurals.js"); module.exports = Gettext; /** * Creates and returns a new Gettext instance. * * @constructor * @param {Object} [options] A set of options * @param {String} options.sourceLocale The locale that the source code and its * texts are written in. Translations for * this locale is not necessary. * @param {Boolean} options.debug Whether to output debug info into the * console. * @return {Object} A Gettext instance */ function Gettext(options) { options = options || {}; this.catalogs = {}; this.locale = ''; this.domain = 'messages'; this.listeners = []; // Set source locale this.sourceLocale = ''; if (options.sourceLocale) { if (typeof options.sourceLocale === 'string') { this.sourceLocale = options.sourceLocale; } else { this.warn('The `sourceLocale` option should be a string'); } } // Set debug flag this.debug = 'debug' in options && options.debug === true; } /** * Adds an event listener. * * @param {String} eventName An event name * @param {Function} callback An event handler function */ Gettext.prototype.on = function(eventName, callback) { this.listeners.push({ eventName: eventName, callback: callback }); }; /** * Removes an event listener. * * @param {String} eventName An event name * @param {Function} callback A previously registered event handler function */ Gettext.prototype.off = function(eventName, callback) { this.listeners = this.listeners.filter(function(listener) { return ( listener.eventName === eventName && listener.callback === callback ) === false; }); }; /** * Emits an event to all registered event listener. * * @private * @param {String} eventName An event name * @param {any} eventData Data to pass to event listeners */ Gettext.prototype.emit = function(eventName, eventData) { for (var i = 0; i < this.listeners.length; i++) { var listener = this.listeners[i]; if (listener.eventName === eventName) { listener.callback(eventData); } } }; /** * Logs a warning to the console if debug mode is enabled. * * @ignore * @param {String} message A warning message */ Gettext.prototype.warn = function(message) { if (this.debug) { console.warn(message); } this.emit('error', new Error(message)); }; /** * Stores a set of translations in the set of gettext * catalogs. * * @example * gt.addTranslations('sv-SE', 'messages', translationsObject) * * @param {String} locale A locale string * @param {String} domain A domain name * @param {Object} translations An object of gettext-parser JSON shape */ Gettext.prototype.addTranslations = function(locale, domain, translations) { if (!this.catalogs[locale]) { this.catalogs[locale] = {}; } this.catalogs[locale][domain] = translations; }; /** * Sets the locale to get translated messages for. * * @example * gt.setLocale('sv-SE') * * @param {String} locale A locale */ Gettext.prototype.setLocale = function(locale) { if (typeof locale !== 'string') { this.warn( 'You called setLocale() with an argument of type ' + (typeof locale) + '. ' + 'The locale must be a string.' ); return; } if (locale.trim() === '') { this.warn('You called setLocale() with an empty value, which makes little sense.'); } if (locale !== this.sourceLocale && !this.catalogs[locale]) { this.warn('You called setLocale() with "' + locale + '", but no translations for that locale has been added.'); } this.locale = locale; }; /** * Sets the default gettext domain. * * @example * gt.setTextDomain('domainname') * * @param {String} domain A gettext domain name */ Gettext.prototype.setTextDomain = function(domain) { if (typeof domain !== 'string') { this.warn( 'You called setTextDomain() with an argument of type ' + (typeof domain) + '. ' + 'The domain must be a string.' ); return; } if (domain.trim() === '') { this.warn('You called setTextDomain() with an empty `domain` value.'); } this.domain = domain; }; /** * Translates a string using the default textdomain * * @example * gt.gettext('Some text') * * @param {String} msgid String to be translated * @return {String} Translation or the original string if no translation was found */ Gettext.prototype.gettext = function(msgid) { return this.dnpgettext(this.domain, '', msgid); }; /** * Translates a string using a specific domain * * @example * gt.dgettext('domainname', 'Some text') * * @param {String} domain A gettext domain name * @param {String} msgid String to be translated * @return {String} Translation or the original string if no translation was found */ Gettext.prototype.dgettext = function(domain, msgid) { return this.dnpgettext(domain, '', msgid); }; /** * Translates a plural string using the default textdomain * * @example * gt.ngettext('One thing', 'Many things', numberOfThings) * * @param {String} msgid String to be translated when count is not plural * @param {String} msgidPlural String to be translated when count is plural * @param {Number} count Number count for the plural * @return {String} Translation or the original string if no translation was found */ Gettext.prototype.ngettext = function(msgid, msgidPlural, count) { return this.dnpgettext(this.domain, '', msgid, msgidPlural, count); }; /** * Translates a plural string using a specific textdomain * * @example * gt.dngettext('domainname', 'One thing', 'Many things', numberOfThings) * * @param {String} domain A gettext domain name * @param {String} msgid String to be translated when count is not plural * @param {String} msgidPlural String to be translated when count is plural * @param {Number} count Number count for the plural * @return {String} Translation or the original string if no translation was found */ Gettext.prototype.dngettext = function(domain, msgid, msgidPlural, count) { return this.dnpgettext(domain, '', msgid, msgidPlural, count); }; /** * Translates a string from a specific context using the default textdomain * * @example * gt.pgettext('sports', 'Back') * * @param {String} msgctxt Translation context * @param {String} msgid String to be translated * @return {String} Translation or the original string if no translation was found */ Gettext.prototype.pgettext = function(msgctxt, msgid) { return this.dnpgettext(this.domain, msgctxt, msgid); }; /** * Translates a string from a specific context using s specific textdomain * * @example * gt.dpgettext('domainname', 'sports', 'Back') * * @param {String} domain A gettext domain name * @param {String} msgctxt Translation context * @param {String} msgid String to be translated * @return {String} Translation or the original string if no translation was found */ Gettext.prototype.dpgettext = function(domain, msgctxt, msgid) { return this.dnpgettext(domain, msgctxt, msgid); }; /** * Translates a plural string from a specific context using the default textdomain * * @example * gt.npgettext('sports', 'Back', '%d backs', numberOfBacks) * * @param {String} msgctxt Translation context * @param {String} msgid String to be translated when count is not plural * @param {String} msgidPlural String to be translated when count is plural * @param {Number} count Number count for the plural * @return {String} Translation or the original string if no translation was found */ Gettext.prototype.npgettext = function(msgctxt, msgid, msgidPlural, count) { return this.dnpgettext(this.domain, msgctxt, msgid, msgidPlural, count); }; /** * Translates a plural string from a specifi context using a specific textdomain * * @example * gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks) * * @param {String} domain A gettext domain name * @param {String} msgctxt Translation context * @param {String} msgid String to be translated * @param {String} msgidPlural If no translation was found, return this on count!=1 * @param {Number} count Number count for the plural * @return {String} Translation or the original string if no translation was found */ Gettext.prototype.dnpgettext = function(domain, msgctxt, msgid, msgidPlural, count) { var defaultTranslation = msgid; var translation; var index; msgctxt = msgctxt || ''; if (!isNaN(count) && count !== 1) { defaultTranslation = msgidPlural || msgid; } translation = this._getTranslation(domain, msgctxt, msgid); if (translation) { if (typeof count === 'number') { var pluralsFunc = plurals[Gettext.getLanguageCode(this.locale)].pluralsFunc; index = pluralsFunc(count); if (typeof index === 'boolean') { index = index ? 1 : 0; } } else { index = 0; } return translation.msgstr[index] || defaultTranslation; } else if (!this.sourceLocale || this.locale !== this.sourceLocale) { this.warn('No translation was found for msgid "' + msgid + '" in msgctxt "' + msgctxt + '" and domain "' + domain + '"'); } return defaultTranslation; }; /** * Retrieves comments object for a translation. The comments object * has the shape `{ translator, extracted, reference, flag, previous }`. * * @example * const comment = gt.getComment('domainname', 'sports', 'Backs') * * @private * @param {String} domain A gettext domain name * @param {String} msgctxt Translation context * @param {String} msgid String to be translated * @return {Object} Comments object or false if not found */ Gettext.prototype.getComment = function(domain, msgctxt, msgid) { var translation; translation = this._getTranslation(domain, msgctxt, msgid); if (translation) { return translation.comments || {}; } return {}; }; /** * Retrieves translation object from the domain and context * * @private * @param {String} domain A gettext domain name * @param {String} msgctxt Translation context * @param {String} msgid String to be translated * @return {Object} Translation object or false if not found */ Gettext.prototype._getTranslation = function(domain, msgctxt, msgid) { msgctxt = msgctxt || ''; return get(this.catalogs, [this.locale, domain, 'translations', msgctxt, msgid]); }; /** * Returns the language code part of a locale * * @example * Gettext.getLanguageCode('sv-SE') * // -> "sv" * * @private * @param {String} locale A case-insensitive locale string * @returns {String} A language code */ Gettext.getLanguageCode = function(locale) { return locale.split(/[\-_]/)[0].toLowerCase(); }; /* C-style aliases */ /** * C-style alias for [setTextDomain](#gettextsettextdomaindomain) * * @see Gettext#setTextDomain */ Gettext.prototype.textdomain = function(domain) { if (this.debug) { console.warn('textdomain(domain) was used to set locales in node-gettext v1. ' + 'Make sure you are using it for domains, and switch to setLocale(locale) if you are not.\n\n ' + 'To read more about the migration from node-gettext v1 to v2, ' + 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x\n\n' + 'This warning will be removed in the final 2.0.0'); } this.setTextDomain(domain); }; /** * C-style alias for [setLocale](#gettextsetlocalelocale) * * @see Gettext#setLocale */ Gettext.prototype.setlocale = function(locale) { this.setLocale(locale); }; /* Deprecated functions */ /** * This function will be removed in the final 2.0.0 release. * * @deprecated */ Gettext.prototype.addTextdomain = function() { console.error('addTextdomain() is deprecated.\n\n' + '* To add translations, use addTranslations()\n' + '* To set the default domain, use setTextDomain() (or its alias textdomain())\n' + '\n' + 'To read more about the migration from node-gettext v1 to v2, ' + 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x'); }; /***/ }), /***/ "./node_modules/node-gettext/lib/plurals.js": /*!**************************************************!*\ !*** ./node_modules/node-gettext/lib/plurals.js ***! \**************************************************/ /***/ ((module) => { "use strict"; module.exports = { ach: { name: 'Acholi', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, af: { name: 'Afrikaans', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ak: { name: 'Akan', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, am: { name: 'Amharic', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, an: { name: 'Aragonese', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ar: { name: 'Arabic', examples: [{ plural: 0, sample: 0 }, { plural: 1, sample: 1 }, { plural: 2, sample: 2 }, { plural: 3, sample: 3 }, { plural: 4, sample: 11 }, { plural: 5, sample: 100 }], nplurals: 6, pluralsText: 'nplurals = 6; plural = (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)', pluralsFunc: function(n) { return (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5); } }, arn: { name: 'Mapudungun', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, ast: { name: 'Asturian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ay: { name: 'Aymará', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, az: { name: 'Azerbaijani', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, be: { name: 'Belarusian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, bg: { name: 'Bulgarian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, bn: { name: 'Bengali', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, bo: { name: 'Tibetan', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, br: { name: 'Breton', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, brx: { name: 'Bodo', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, bs: { name: 'Bosnian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, ca: { name: 'Catalan', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, cgg: { name: 'Chiga', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, cs: { name: 'Czech', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)', pluralsFunc: function(n) { return (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2); } }, csb: { name: 'Kashubian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, cy: { name: 'Welsh', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 3 }, { plural: 3, sample: 8 }], nplurals: 4, pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3)', pluralsFunc: function(n) { return (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3); } }, da: { name: 'Danish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, de: { name: 'German', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, doi: { name: 'Dogri', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, dz: { name: 'Dzongkha', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, el: { name: 'Greek', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, en: { name: 'English', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, eo: { name: 'Esperanto', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, es: { name: 'Spanish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, et: { name: 'Estonian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, eu: { name: 'Basque', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, fa: { name: 'Persian', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, ff: { name: 'Fulah', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, fi: { name: 'Finnish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, fil: { name: 'Filipino', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, fo: { name: 'Faroese', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, fr: { name: 'French', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, fur: { name: 'Friulian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, fy: { name: 'Frisian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ga: { name: 'Irish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 3 }, { plural: 3, sample: 7 }, { plural: 4, sample: 11 }], nplurals: 5, pluralsText: 'nplurals = 5; plural = (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)', pluralsFunc: function(n) { return (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4); } }, gd: { name: 'Scottish Gaelic', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 3 }, { plural: 3, sample: 20 }], nplurals: 4, pluralsText: 'nplurals = 4; plural = ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3)', pluralsFunc: function(n) { return ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3); } }, gl: { name: 'Galician', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, gu: { name: 'Gujarati', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, gun: { name: 'Gun', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, ha: { name: 'Hausa', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, he: { name: 'Hebrew', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, hi: { name: 'Hindi', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, hne: { name: 'Chhattisgarhi', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, hr: { name: 'Croatian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, hu: { name: 'Hungarian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, hy: { name: 'Armenian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, id: { name: 'Indonesian', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, is: { name: 'Icelandic', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n % 10 !== 1 || n % 100 === 11)', pluralsFunc: function(n) { return (n % 10 !== 1 || n % 100 === 11); } }, it: { name: 'Italian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ja: { name: 'Japanese', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, jbo: { name: 'Lojban', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, jv: { name: 'Javanese', examples: [{ plural: 0, sample: 0 }, { plural: 1, sample: 1 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 0)', pluralsFunc: function(n) { return (n !== 0); } }, ka: { name: 'Georgian', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, kk: { name: 'Kazakh', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, km: { name: 'Khmer', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, kn: { name: 'Kannada', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ko: { name: 'Korean', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, ku: { name: 'Kurdish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, kw: { name: 'Cornish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 3 }, { plural: 3, sample: 4 }], nplurals: 4, pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)', pluralsFunc: function(n) { return (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3); } }, ky: { name: 'Kyrgyz', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, lb: { name: 'Letzeburgesch', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ln: { name: 'Lingala', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, lo: { name: 'Lao', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, lt: { name: 'Lithuanian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 10 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, lv: { name: 'Latvian', examples: [{ plural: 2, sample: 0 }, { plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)', pluralsFunc: function(n) { return (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2); } }, mai: { name: 'Maithili', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, mfe: { name: 'Mauritian Creole', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, mg: { name: 'Malagasy', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, mi: { name: 'Maori', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, mk: { name: 'Macedonian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n === 1 || n % 10 === 1 ? 0 : 1)', pluralsFunc: function(n) { return (n === 1 || n % 10 === 1 ? 0 : 1); } }, ml: { name: 'Malayalam', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, mn: { name: 'Mongolian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, mni: { name: 'Manipuri', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, mnk: { name: 'Mandinka', examples: [{ plural: 0, sample: 0 }, { plural: 1, sample: 1 }, { plural: 2, sample: 2 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n === 0 ? 0 : n === 1 ? 1 : 2)', pluralsFunc: function(n) { return (n === 0 ? 0 : n === 1 ? 1 : 2); } }, mr: { name: 'Marathi', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ms: { name: 'Malay', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, mt: { name: 'Maltese', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 11 }, { plural: 3, sample: 20 }], nplurals: 4, pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 0 || ( n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20 ) ? 2 : 3)', pluralsFunc: function(n) { return (n === 1 ? 0 : n === 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20) ? 2 : 3); } }, my: { name: 'Burmese', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, nah: { name: 'Nahuatl', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, nap: { name: 'Neapolitan', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, nb: { name: 'Norwegian Bokmal', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ne: { name: 'Nepali', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, nl: { name: 'Dutch', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, nn: { name: 'Norwegian Nynorsk', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, no: { name: 'Norwegian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, nso: { name: 'Northern Sotho', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, oc: { name: 'Occitan', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, or: { name: 'Oriya', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, pa: { name: 'Punjabi', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, pap: { name: 'Papiamento', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, pl: { name: 'Polish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, pms: { name: 'Piemontese', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ps: { name: 'Pashto', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, pt: { name: 'Portuguese', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, rm: { name: 'Romansh', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ro: { name: 'Romanian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 20 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2)', pluralsFunc: function(n) { return (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2); } }, ru: { name: 'Russian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, rw: { name: 'Kinyarwanda', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, sah: { name: 'Yakut', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, sat: { name: 'Santali', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, sco: { name: 'Scots', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, sd: { name: 'Sindhi', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, se: { name: 'Northern Sami', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, si: { name: 'Sinhala', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, sk: { name: 'Slovak', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)', pluralsFunc: function(n) { return (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2); } }, sl: { name: 'Slovenian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 3 }, { plural: 3, sample: 5 }], nplurals: 4, pluralsText: 'nplurals = 4; plural = (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)', pluralsFunc: function(n) { return (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3); } }, so: { name: 'Somali', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, son: { name: 'Songhay', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, sq: { name: 'Albanian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, sr: { name: 'Serbian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, su: { name: 'Sundanese', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, sv: { name: 'Swedish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, sw: { name: 'Swahili', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, ta: { name: 'Tamil', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, te: { name: 'Telugu', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, tg: { name: 'Tajik', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, th: { name: 'Thai', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, ti: { name: 'Tigrinya', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, tk: { name: 'Turkmen', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, tr: { name: 'Turkish', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, tt: { name: 'Tatar', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, ug: { name: 'Uyghur', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, uk: { name: 'Ukrainian', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }, { plural: 2, sample: 5 }], nplurals: 3, pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', pluralsFunc: function(n) { return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); } }, ur: { name: 'Urdu', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, uz: { name: 'Uzbek', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, vi: { name: 'Vietnamese', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, wa: { name: 'Walloon', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n > 1)', pluralsFunc: function(n) { return (n > 1); } }, wo: { name: 'Wolof', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } }, yo: { name: 'Yoruba', examples: [{ plural: 0, sample: 1 }, { plural: 1, sample: 2 }], nplurals: 2, pluralsText: 'nplurals = 2; plural = (n !== 1)', pluralsFunc: function(n) { return (n !== 1); } }, zh: { name: 'Chinese', examples: [{ plural: 0, sample: 1 }], nplurals: 1, pluralsText: 'nplurals = 1; plural = 0', pluralsFunc: function() { return 0; } } }; /***/ }), /***/ "./node_modules/popper.js/dist/esm/popper.js": /*!***************************************************!*\ !*** ./node_modules/popper.js/dist/esm/popper.js ***! \***************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /**! * @fileOverview Kickass library to create and place poppers near their reference elements. * @version 1.16.1 * @license * Copyright (c) 2016 Federico Zivolo and contributors * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined'; var timeoutDuration = function () { var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { return 1; } } return 0; }(); function microtaskDebounce(fn) { var called = false; return function () { if (called) { return; } called = true; window.Promise.resolve().then(function () { called = false; fn(); }); }; } function taskDebounce(fn) { var scheduled = false; return function () { if (!scheduled) { scheduled = true; setTimeout(function () { scheduled = false; fn(); }, timeoutDuration); } }; } var supportsMicroTasks = isBrowser && window.Promise; /** * Create a debounced version of a method, that's asynchronously deferred * but called in the minimum time possible. * * @method * @memberof Popper.Utils * @argument {Function} fn * @returns {Function} */ var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; /** * Check if the given variable is a function * @method * @memberof Popper.Utils * @argument {Any} functionToCheck - variable to check * @returns {Boolean} answer to: is a function? */ function isFunction(functionToCheck) { var getType = {}; return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; } /** * Get CSS computed property of the given element * @method * @memberof Popper.Utils * @argument {Eement} element * @argument {String} property */ function getStyleComputedProperty(element, property) { if (element.nodeType !== 1) { return []; } // NOTE: 1 DOM access here var window = element.ownerDocument.defaultView; var css = window.getComputedStyle(element, null); return property ? css[property] : css; } /** * Returns the parentNode or the host of the element * @method * @memberof Popper.Utils * @argument {Element} element * @returns {Element} parent */ function getParentNode(element) { if (element.nodeName === 'HTML') { return element; } return element.parentNode || element.host; } /** * Returns the scrolling parent of the given element * @method * @memberof Popper.Utils * @argument {Element} element * @returns {Element} scroll parent */ function getScrollParent(element) { // Return body, `getScroll` will take care to get the correct `scrollTop` from it if (!element) { return document.body; } switch (element.nodeName) { case 'HTML': case 'BODY': return element.ownerDocument.body; case '#document': return element.body; } // Firefox want us to check `-x` and `-y` variations as well var _getStyleComputedProp = getStyleComputedProperty(element), overflow = _getStyleComputedProp.overflow, overflowX = _getStyleComputedProp.overflowX, overflowY = _getStyleComputedProp.overflowY; if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { return element; } return getScrollParent(getParentNode(element)); } /** * Returns the reference node of the reference object, or the reference object itself. * @method * @memberof Popper.Utils * @param {Element|Object} reference - the reference element (the popper will be relative to this) * @returns {Element} parent */ function getReferenceNode(reference) { return reference && reference.referenceNode ? reference.referenceNode : reference; } var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); /** * Determines if the browser is Internet Explorer * @method * @memberof Popper.Utils * @param {Number} version to check * @returns {Boolean} isIE */ function isIE(version) { if (version === 11) { return isIE11; } if (version === 10) { return isIE10; } return isIE11 || isIE10; } /** * Returns the offset parent of the given element * @method * @memberof Popper.Utils * @argument {Element} element * @returns {Element} offset parent */ function getOffsetParent(element) { if (!element) { return document.documentElement; } var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent while (offsetParent === noOffsetParent && element.nextElementSibling) { offsetParent = (element = element.nextElementSibling).offsetParent; } var nodeName = offsetParent && offsetParent.nodeName; if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { return element ? element.ownerDocument.documentElement : document.documentElement; } // .offsetParent will return the closest TH, TD or TABLE in case // no offsetParent is present, I hate this job... if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { return getOffsetParent(offsetParent); } return offsetParent; } function isOffsetContainer(element) { var nodeName = element.nodeName; if (nodeName === 'BODY') { return false; } return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; } /** * Finds the root node (document, shadowDOM root) of the given element * @method * @memberof Popper.Utils * @argument {Element} node * @returns {Element} root node */ function getRoot(node) { if (node.parentNode !== null) { return getRoot(node.parentNode); } return node; } /** * Finds the offset parent common to the two provided nodes * @method * @memberof Popper.Utils * @argument {Element} element1 * @argument {Element} element2 * @returns {Element} common offset parent */ function findCommonOffsetParent(element1, element2) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { return document.documentElement; } // Here we make sure to give as "start" the element that comes first in the DOM var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; var start = order ? element1 : element2; var end = order ? element2 : element1; // Get common ancestor container var range = document.createRange(); range.setStart(start, 0); range.setEnd(end, 0); var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { if (isOffsetContainer(commonAncestorContainer)) { return commonAncestorContainer; } return getOffsetParent(commonAncestorContainer); } // one of the nodes is inside shadowDOM, find which one var element1root = getRoot(element1); if (element1root.host) { return findCommonOffsetParent(element1root.host, element2); } else { return findCommonOffsetParent(element1, getRoot(element2).host); } } /** * Gets the scroll value of the given element in the given side (top and left) * @method * @memberof Popper.Utils * @argument {Element} element * @argument {String} side `top` or `left` * @returns {number} amount of scrolled pixels */ function getScroll(element) { var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; var nodeName = element.nodeName; if (nodeName === 'BODY' || nodeName === 'HTML') { var html = element.ownerDocument.documentElement; var scrollingElement = element.ownerDocument.scrollingElement || html; return scrollingElement[upperSide]; } return element[upperSide]; } /* * Sum or subtract the element scroll values (left and top) from a given rect object * @method * @memberof Popper.Utils * @param {Object} rect - Rect object you want to change * @param {HTMLElement} element - The element from the function reads the scroll values * @param {Boolean} subtract - set to true if you want to subtract the scroll values * @return {Object} rect - The modifier rect object */ function includeScroll(rect, element) { var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var scrollTop = getScroll(element, 'top'); var scrollLeft = getScroll(element, 'left'); var modifier = subtract ? -1 : 1; rect.top += scrollTop * modifier; rect.bottom += scrollTop * modifier; rect.left += scrollLeft * modifier; rect.right += scrollLeft * modifier; return rect; } /* * Helper to detect borders of a given element * @method * @memberof Popper.Utils * @param {CSSStyleDeclaration} styles * Result of `getStyleComputedProperty` on the given element * @param {String} axis - `x` or `y` * @return {number} borders - The borders size of the given axis */ function getBordersSize(styles, axis) { var sideA = axis === 'x' ? 'Left' : 'Top'; var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']); } function getSize(axis, body, html, computedStyle) { return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); } function getWindowSizes(document) { var body = document.body; var html = document.documentElement; var computedStyle = isIE(10) && getComputedStyle(html); return { height: getSize('Height', body, html, computedStyle), width: getSize('Width', body, html, computedStyle) }; } var classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; var createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var defineProperty = function (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; }; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /** * Given element offsets, generate an output similar to getBoundingClientRect * @method * @memberof Popper.Utils * @argument {Object} offsets * @returns {Object} ClientRect like output */ function getClientRect(offsets) { return _extends({}, offsets, { right: offsets.left + offsets.width, bottom: offsets.top + offsets.height }); } /** * Get bounding client rect of given element * @method * @memberof Popper.Utils * @param {HTMLElement} element * @return {Object} client rect */ function getBoundingClientRect(element) { var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't // considered in DOM in some circumstances... // This isn't reproducible in IE10 compatibility mode of IE11 try { if (isIE(10)) { rect = element.getBoundingClientRect(); var scrollTop = getScroll(element, 'top'); var scrollLeft = getScroll(element, 'left'); rect.top += scrollTop; rect.left += scrollLeft; rect.bottom += scrollTop; rect.right += scrollLeft; } else { rect = element.getBoundingClientRect(); } } catch (e) {} var result = { left: rect.left, top: rect.top, width: rect.right - rect.left, height: rect.bottom - rect.top }; // subtract scrollbar size from sizes var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; var width = sizes.width || element.clientWidth || result.width; var height = sizes.height || element.clientHeight || result.height; var horizScrollbar = element.offsetWidth - width; var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border` // we make this check conditional for performance reasons if (horizScrollbar || vertScrollbar) { var styles = getStyleComputedProperty(element); horizScrollbar -= getBordersSize(styles, 'x'); vertScrollbar -= getBordersSize(styles, 'y'); result.width -= horizScrollbar; result.height -= vertScrollbar; } return getClientRect(result); } function getOffsetRectRelativeToArbitraryNode(children, parent) { var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var isIE10 = isIE(10); var isHTML = parent.nodeName === 'HTML'; var childrenRect = getBoundingClientRect(children); var parentRect = getBoundingClientRect(parent); var scrollParent = getScrollParent(children); var styles = getStyleComputedProperty(parent); var borderTopWidth = parseFloat(styles.borderTopWidth); var borderLeftWidth = parseFloat(styles.borderLeftWidth); // In cases where the parent is fixed, we must ignore negative scroll in offset calc if (fixedPosition && isHTML) { parentRect.top = Math.max(parentRect.top, 0); parentRect.left = Math.max(parentRect.left, 0); } var offsets = getClientRect({ top: childrenRect.top - parentRect.top - borderTopWidth, left: childrenRect.left - parentRect.left - borderLeftWidth, width: childrenRect.width, height: childrenRect.height }); offsets.marginTop = 0; offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent // we do this only on HTML because it's the only element that behaves // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { var marginTop = parseFloat(styles.marginTop); var marginLeft = parseFloat(styles.marginLeft); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; offsets.left -= borderLeftWidth - marginLeft; offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them offsets.marginTop = marginTop; offsets.marginLeft = marginLeft; } if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { offsets = includeScroll(offsets, parent); } return offsets; } function getViewportOffsetRectRelativeToArtbitraryNode(element) { var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var html = element.ownerDocument.documentElement; var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); var width = Math.max(html.clientWidth, window.innerWidth || 0); var height = Math.max(html.clientHeight, window.innerHeight || 0); var scrollTop = !excludeScroll ? getScroll(html) : 0; var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; var offset = { top: scrollTop - relativeOffset.top + relativeOffset.marginTop, left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, width: width, height: height }; return getClientRect(offset); } /** * Check if the given element is fixed or is inside a fixed parent * @method * @memberof Popper.Utils * @argument {Element} element * @argument {Element} customContainer * @returns {Boolean} answer to "isFixed?" */ function isFixed(element) { var nodeName = element.nodeName; if (nodeName === 'BODY' || nodeName === 'HTML') { return false; } if (getStyleComputedProperty(element, 'position') === 'fixed') { return true; } var parentNode = getParentNode(element); if (!parentNode) { return false; } return isFixed(parentNode); } /** * Finds the first parent of an element that has a transformed property defined * @method * @memberof Popper.Utils * @argument {Element} element * @returns {Element} first transformed parent or documentElement */ function getFixedPositionOffsetParent(element) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element || !element.parentElement || isIE()) { return document.documentElement; } var el = element.parentElement; while (el && getStyleComputedProperty(el, 'transform') === 'none') { el = el.parentElement; } return el || document.documentElement; } /** * Computed the boundaries limits and return them * @method * @memberof Popper.Utils * @param {HTMLElement} popper * @param {HTMLElement} reference * @param {number} padding * @param {HTMLElement} boundariesElement - Element used to define the boundaries * @param {Boolean} fixedPosition - Is in fixed position mode * @returns {Object} Coordinates of the boundaries */ function getBoundaries(popper, reference, padding, boundariesElement) { var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here var boundaries = { top: 0, left: 0 }; var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); // Handle viewport case if (boundariesElement === 'viewport') { boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); } else { // Handle other cases based on DOM element used as boundaries var boundariesNode = void 0; if (boundariesElement === 'scrollParent') { boundariesNode = getScrollParent(getParentNode(reference)); if (boundariesNode.nodeName === 'BODY') { boundariesNode = popper.ownerDocument.documentElement; } } else if (boundariesElement === 'window') { boundariesNode = popper.ownerDocument.documentElement; } else { boundariesNode = boundariesElement; } var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { var _getWindowSizes = getWindowSizes(popper.ownerDocument), height = _getWindowSizes.height, width = _getWindowSizes.width; boundaries.top += offsets.top - offsets.marginTop; boundaries.bottom = height + offsets.top; boundaries.left += offsets.left - offsets.marginLeft; boundaries.right = width + offsets.left; } else { // for all the other DOM elements, this one is good boundaries = offsets; } } // Add paddings padding = padding || 0; var isPaddingNumber = typeof padding === 'number'; boundaries.left += isPaddingNumber ? padding : padding.left || 0; boundaries.top += isPaddingNumber ? padding : padding.top || 0; boundaries.right -= isPaddingNumber ? padding : padding.right || 0; boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; return boundaries; } function getArea(_ref) { var width = _ref.width, height = _ref.height; return width * height; } /** * Utility used to transform the `auto` placement to the placement with more * available space. * @method * @memberof Popper.Utils * @argument {Object} data - The data object generated by update method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; if (placement.indexOf('auto') === -1) { return placement; } var boundaries = getBoundaries(popper, reference, padding, boundariesElement); var rects = { top: { width: boundaries.width, height: refRect.top - boundaries.top }, right: { width: boundaries.right - refRect.right, height: boundaries.height }, bottom: { width: boundaries.width, height: boundaries.bottom - refRect.bottom }, left: { width: refRect.left - boundaries.left, height: boundaries.height } }; var sortedAreas = Object.keys(rects).map(function (key) { return _extends({ key: key }, rects[key], { area: getArea(rects[key]) }); }).sort(function (a, b) { return b.area - a.area; }); var filteredAreas = sortedAreas.filter(function (_ref2) { var width = _ref2.width, height = _ref2.height; return width >= popper.clientWidth && height >= popper.clientHeight; }); var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; var variation = placement.split('-')[1]; return computedPlacement + (variation ? '-' + variation : ''); } /** * Get offsets to the reference element * @method * @memberof Popper.Utils * @param {Object} state * @param {Element} popper - the popper element * @param {Element} reference - the reference element (the popper will be relative to this) * @param {Element} fixedPosition - is in fixed position mode * @returns {Object} An object containing the offsets which will be applied to the popper */ function getReferenceOffsets(state, popper, reference) { var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); } /** * Get the outer sizes of the given element (offset size + margins) * @method * @memberof Popper.Utils * @argument {Element} element * @returns {Object} object containing width and height properties */ function getOuterSizes(element) { var window = element.ownerDocument.defaultView; var styles = window.getComputedStyle(element); var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); var result = { width: element.offsetWidth + y, height: element.offsetHeight + x }; return result; } /** * Get the opposite placement of the given one * @method * @memberof Popper.Utils * @argument {String} placement * @returns {String} flipped placement */ function getOppositePlacement(placement) { var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; return placement.replace(/left|right|bottom|top/g, function (matched) { return hash[matched]; }); } /** * Get offsets to the popper * @method * @memberof Popper.Utils * @param {Object} position - CSS position the Popper will get applied * @param {HTMLElement} popper - the popper element * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) * @param {String} placement - one of the valid placement options * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper */ function getPopperOffsets(popper, referenceOffsets, placement) { placement = placement.split('-')[0]; // Get popper node sizes var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object var popperOffsets = { width: popperRect.width, height: popperRect.height }; // depending by the popper placement we have to compute its offsets slightly differently var isHoriz = ['right', 'left'].indexOf(placement) !== -1; var mainSide = isHoriz ? 'top' : 'left'; var secondarySide = isHoriz ? 'left' : 'top'; var measurement = isHoriz ? 'height' : 'width'; var secondaryMeasurement = !isHoriz ? 'height' : 'width'; popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; if (placement === secondarySide) { popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; } else { popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; } return popperOffsets; } /** * Mimics the `find` method of Array * @method * @memberof Popper.Utils * @argument {Array} arr * @argument prop * @argument value * @returns index or -1 */ function find(arr, check) { // use native find if supported if (Array.prototype.find) { return arr.find(check); } // use `filter` to obtain the same behavior of `find` return arr.filter(check)[0]; } /** * Return the index of the matching object * @method * @memberof Popper.Utils * @argument {Array} arr * @argument prop * @argument value * @returns index or -1 */ function findIndex(arr, prop, value) { // use native findIndex if supported if (Array.prototype.findIndex) { return arr.findIndex(function (cur) { return cur[prop] === value; }); } // use `find` + `indexOf` if `findIndex` isn't supported var match = find(arr, function (obj) { return obj[prop] === value; }); return arr.indexOf(match); } /** * Loop trough the list of modifiers and run them in order, * each of them will then edit the data object. * @method * @memberof Popper.Utils * @param {dataObject} data * @param {Array} modifiers * @param {String} ends - Optional modifier name used as stopper * @returns {dataObject} */ function runModifiers(modifiers, data, ends) { var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); modifiersToRun.forEach(function (modifier) { if (modifier['function']) { // eslint-disable-line dot-notation console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); } var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation if (modifier.enabled && isFunction(fn)) { // Add properties to offsets to make them a complete clientRect object // we do this before each modifier to make sure the previous one doesn't // mess with these values data.offsets.popper = getClientRect(data.offsets.popper); data.offsets.reference = getClientRect(data.offsets.reference); data = fn(data, modifier); } }); return data; } /** * Updates the position of the popper, computing the new offsets and applying * the new style.
* Prefer `scheduleUpdate` over `update` because of performance reasons. * @method * @memberof Popper */ function update() { // if popper is destroyed, don't perform any further update if (this.state.isDestroyed) { return; } var data = { instance: this, styles: {}, arrowStyles: {}, attributes: {}, flipped: false, offsets: {} }; // compute reference element offsets data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object, // modifiers will be able to edit `placement` if needed // and refer to originalPlacement to know the original value data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement` data.originalPlacement = data.placement; data.positionFixed = this.options.positionFixed; // compute the popper offsets data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback // the other ones will call `onUpdate` callback if (!this.state.isCreated) { this.state.isCreated = true; this.options.onCreate(data); } else { this.options.onUpdate(data); } } /** * Helper used to know if the given modifier is enabled. * @method * @memberof Popper.Utils * @returns {Boolean} */ function isModifierEnabled(modifiers, modifierName) { return modifiers.some(function (_ref) { var name = _ref.name, enabled = _ref.enabled; return enabled && name === modifierName; }); } /** * Get the prefixed supported property name * @method * @memberof Popper.Utils * @argument {String} property (camelCase) * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) */ function getSupportedPropertyName(property) { var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; var upperProp = property.charAt(0).toUpperCase() + property.slice(1); for (var i = 0; i < prefixes.length; i++) { var prefix = prefixes[i]; var toCheck = prefix ? '' + prefix + upperProp : property; if (typeof document.body.style[toCheck] !== 'undefined') { return toCheck; } } return null; } /** * Destroys the popper. * @method * @memberof Popper */ function destroy() { this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled if (isModifierEnabled(this.modifiers, 'applyStyle')) { this.popper.removeAttribute('x-placement'); this.popper.style.position = ''; this.popper.style.top = ''; this.popper.style.left = ''; this.popper.style.right = ''; this.popper.style.bottom = ''; this.popper.style.willChange = ''; this.popper.style[getSupportedPropertyName('transform')] = ''; } this.disableEventListeners(); // remove the popper if user explicitly asked for the deletion on destroy // do not use `remove` because IE11 doesn't support it if (this.options.removeOnDestroy) { this.popper.parentNode.removeChild(this.popper); } return this; } /** * Get the window associated with the element * @argument {Element} element * @returns {Window} */ function getWindow(element) { var ownerDocument = element.ownerDocument; return ownerDocument ? ownerDocument.defaultView : window; } function attachToScrollParents(scrollParent, event, callback, scrollParents) { var isBody = scrollParent.nodeName === 'BODY'; var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; target.addEventListener(event, callback, { passive: true }); if (!isBody) { attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); } scrollParents.push(target); } /** * Setup needed event listeners used to update the popper position * @method * @memberof Popper.Utils * @private */ function setupEventListeners(reference, options, state, updateBound) { // Resize event listener on window state.updateBound = updateBound; getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); // Scroll event listener on scroll parents var scrollElement = getScrollParent(reference); attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); state.scrollElement = scrollElement; state.eventsEnabled = true; return state; } /** * It will add resize/scroll events and start recalculating * position of the popper element when they are triggered. * @method * @memberof Popper */ function enableEventListeners() { if (!this.state.eventsEnabled) { this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); } } /** * Remove event listeners used to update the popper position * @method * @memberof Popper.Utils * @private */ function removeEventListeners(reference, state) { // Remove resize event listener on window getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents state.scrollParents.forEach(function (target) { target.removeEventListener('scroll', state.updateBound); }); // Reset state state.updateBound = null; state.scrollParents = []; state.scrollElement = null; state.eventsEnabled = false; return state; } /** * It will remove resize/scroll events and won't recalculate popper position * when they are triggered. It also won't trigger `onUpdate` callback anymore, * unless you call `update` method manually. * @method * @memberof Popper */ function disableEventListeners() { if (this.state.eventsEnabled) { cancelAnimationFrame(this.scheduleUpdate); this.state = removeEventListeners(this.reference, this.state); } } /** * Tells if a given input is a number * @method * @memberof Popper.Utils * @param {*} input to check * @return {Boolean} */ function isNumeric(n) { return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); } /** * Set the style to the given popper * @method * @memberof Popper.Utils * @argument {Element} element - Element to apply the style to * @argument {Object} styles * Object with a list of properties and values which will be applied to the element */ function setStyles(element, styles) { Object.keys(styles).forEach(function (prop) { var unit = ''; // add unit if the value is numeric and is one of the following if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { unit = 'px'; } element.style[prop] = styles[prop] + unit; }); } /** * Set the attributes to the given popper * @method * @memberof Popper.Utils * @argument {Element} element - Element to apply the attributes to * @argument {Object} styles * Object with a list of properties and values which will be applied to the element */ function setAttributes(element, attributes) { Object.keys(attributes).forEach(function (prop) { var value = attributes[prop]; if (value !== false) { element.setAttribute(prop, attributes[prop]); } else { element.removeAttribute(prop); } }); } /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by `update` method * @argument {Object} data.styles - List of style properties - values to apply to popper element * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element * @argument {Object} options - Modifiers configuration and options * @returns {Object} The same data object */ function applyStyle(data) { // any property present in `data.styles` will be applied to the popper, // in this way we can make the 3rd party modifiers add custom styles to it // Be aware, modifiers could override the properties defined in the previous // lines of this modifier! setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper, // they will be set as HTML attributes of the element setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties if (data.arrowElement && Object.keys(data.arrowStyles).length) { setStyles(data.arrowElement, data.arrowStyles); } return data; } /** * Set the x-placement attribute before everything else because it could be used * to add margins to the popper margins needs to be calculated to get the * correct popper offsets. * @method * @memberof Popper.modifiers * @param {HTMLElement} reference - The reference element used to position the popper * @param {HTMLElement} popper - The HTML element used as popper * @param {Object} options - Popper.js options */ function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { // compute reference element offsets var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object, // modifiers will be able to edit `placement` if needed // and refer to originalPlacement to know the original value var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because // without the position applied we can't guarantee correct computations setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); return options; } /** * @function * @memberof Popper.Utils * @argument {Object} data - The data object generated by `update` method * @argument {Boolean} shouldRound - If the offsets should be rounded at all * @returns {Object} The popper's position offsets rounded * * The tale of pixel-perfect positioning. It's still not 100% perfect, but as * good as it can be within reason. * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 * * Low DPI screens cause a popper to be blurry if not using full pixels (Safari * as well on High DPI screens). * * Firefox prefers no rounding for positioning and does not have blurriness on * high DPI screens. * * Only horizontal placement and left/right values need to be considered. */ function getRoundedOffsets(data, shouldRound) { var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; var round = Math.round, floor = Math.floor; var noRound = function noRound(v) { return v; }; var referenceWidth = round(reference.width); var popperWidth = round(popper.width); var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; var isVariation = data.placement.indexOf('-') !== -1; var sameWidthParity = referenceWidth % 2 === popperWidth % 2; var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; var verticalToInteger = !shouldRound ? noRound : round; return { left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), top: verticalToInteger(popper.top), bottom: verticalToInteger(popper.bottom), right: horizontalToInteger(popper.right) }; } var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by `update` method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function computeStyle(data, options) { var x = options.x, y = options.y; var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2 var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { return modifier.name === 'applyStyle'; }).gpuAcceleration; if (legacyGpuAccelerationOption !== undefined) { console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); } var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; var offsetParent = getOffsetParent(data.instance.popper); var offsetParentRect = getBoundingClientRect(offsetParent); // Styles var styles = { position: popper.position }; var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); var sideA = x === 'bottom' ? 'top' : 'bottom'; var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported, // we use `translate3d` to apply the position to the popper we // automatically use the supported prefixed version if needed var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?) // If the content of the popper grows once it's been positioned, it // may happen that the popper gets misplaced because of the new content // overflowing its reference element // To avoid this problem, we provide two options (x and y), which allow // the consumer to define the offset origin. // If we position a popper on top of a reference element, we can set // `x` to `top` to make the popper grow towards its top instead of // its bottom. var left = void 0, top = void 0; if (sideA === 'bottom') { // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar) // and not the bottom of the html element if (offsetParent.nodeName === 'HTML') { top = -offsetParent.clientHeight + offsets.bottom; } else { top = -offsetParentRect.height + offsets.bottom; } } else { top = offsets.top; } if (sideB === 'right') { if (offsetParent.nodeName === 'HTML') { left = -offsetParent.clientWidth + offsets.right; } else { left = -offsetParentRect.width + offsets.right; } } else { left = offsets.left; } if (gpuAcceleration && prefixedProperty) { styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; styles[sideA] = 0; styles[sideB] = 0; styles.willChange = 'transform'; } else { // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties var invertTop = sideA === 'bottom' ? -1 : 1; var invertLeft = sideB === 'right' ? -1 : 1; styles[sideA] = top * invertTop; styles[sideB] = left * invertLeft; styles.willChange = sideA + ', ' + sideB; } // Attributes var attributes = { 'x-placement': data.placement }; // Update `data` attributes, styles and arrowStyles data.attributes = _extends({}, attributes, data.attributes); data.styles = _extends({}, styles, data.styles); data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); return data; } /** * Helper used to know if the given modifier depends from another one.
* It checks if the needed modifier is listed and enabled. * @method * @memberof Popper.Utils * @param {Array} modifiers - list of modifiers * @param {String} requestingName - name of requesting modifier * @param {String} requestedName - name of requested modifier * @returns {Boolean} */ function isModifierRequired(modifiers, requestingName, requestedName) { var requesting = find(modifiers, function (_ref) { var name = _ref.name; return name === requestingName; }); var isRequired = !!requesting && modifiers.some(function (modifier) { return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; }); if (!isRequired) { var _requesting = '`' + requestingName + '`'; var requested = '`' + requestedName + '`'; console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); } return isRequired; } /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by update method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function arrow(data, options) { var _data$offsets$arrow; // arrow depends on keepTogether in order to work if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { return data; } var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector if (typeof arrowElement === 'string') { arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier if (!arrowElement) { return data; } } else { // if the arrowElement isn't a query selector we must check that the // provided DOM node is child of its popper node if (!data.instance.popper.contains(arrowElement)) { console.warn('WARNING: `arrow.element` must be child of its popper element!'); return data; } } var placement = data.placement.split('-')[0]; var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; var isVertical = ['left', 'right'].indexOf(placement) !== -1; var len = isVertical ? 'height' : 'width'; var sideCapitalized = isVertical ? 'Top' : 'Left'; var side = sideCapitalized.toLowerCase(); var altSide = isVertical ? 'left' : 'top'; var opSide = isVertical ? 'bottom' : 'right'; var arrowElementSize = getOuterSizes(arrowElement)[len]; // // extends keepTogether behavior making sure the popper and its // reference have enough pixels in conjunction // // top/left side if (reference[opSide] - arrowElementSize < popper[side]) { data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); } // bottom/right side if (reference[side] + arrowElementSize > popper[opSide]) { data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; } data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets // take popper margin in account because we don't have this info available var css = getStyleComputedProperty(data.instance.popper); var popperMarginSide = parseFloat(css['margin' + sideCapitalized]); var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']); var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); data.arrowElement = arrowElement; data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); return data; } /** * Get the opposite placement variation of the given one * @method * @memberof Popper.Utils * @argument {String} placement variation * @returns {String} flipped placement variation */ function getOppositeVariation(variation) { if (variation === 'end') { return 'start'; } else if (variation === 'start') { return 'end'; } return variation; } /** * List of accepted placements to use as values of the `placement` option.
* Valid placements are: * - `auto` * - `top` * - `right` * - `bottom` * - `left` * * Each placement can have a variation from this list: * - `-start` * - `-end` * * Variations are interpreted easily if you think of them as the left to right * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` * is right.
* Vertically (`left` and `right`), `start` is top and `end` is bottom. * * Some valid examples are: * - `top-end` (on top of reference, right aligned) * - `right-start` (on right of reference, top aligned) * - `bottom` (on bottom, centered) * - `auto-end` (on the side with more space available, alignment depends by placement) * * @static * @type {Array} * @enum {String} * @readonly * @method placements * @memberof Popper */ var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end` var validPlacements = placements.slice(3); /** * Given an initial placement, returns all the subsequent placements * clockwise (or counter-clockwise). * * @method * @memberof Popper.Utils * @argument {String} placement - A valid placement (it accepts variations) * @argument {Boolean} counter - Set to true to walk the placements counterclockwise * @returns {Array} placements including their variations */ function clockwise(placement) { var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var index = validPlacements.indexOf(placement); var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); return counter ? arr.reverse() : arr; } var BEHAVIORS = { FLIP: 'flip', CLOCKWISE: 'clockwise', COUNTERCLOCKWISE: 'counterclockwise' }; /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by update method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function flip(data, options) { // if `inner` modifier is enabled, we can't use the `flip` modifier if (isModifierEnabled(data.instance.modifiers, 'inner')) { return data; } if (data.flipped && data.placement === data.originalPlacement) { // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides return data; } var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); var placement = data.placement.split('-')[0]; var placementOpposite = getOppositePlacement(placement); var variation = data.placement.split('-')[1] || ''; var flipOrder = []; switch (options.behavior) { case BEHAVIORS.FLIP: flipOrder = [placement, placementOpposite]; break; case BEHAVIORS.CLOCKWISE: flipOrder = clockwise(placement); break; case BEHAVIORS.COUNTERCLOCKWISE: flipOrder = clockwise(placement, true); break; default: flipOrder = options.behavior; } flipOrder.forEach(function (step, index) { if (placement !== step || flipOrder.length === index + 1) { return data; } placement = data.placement.split('-')[0]; placementOpposite = getOppositePlacement(placement); var popperOffsets = data.offsets.popper; var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here var floor = Math.floor; var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop); var flippedVariation = flippedVariationByRef || flippedVariationByContent; if (overlapsRef || overflowsBoundaries || flippedVariation) { // this boolean to detect any flip loop data.flipped = true; if (overlapsRef || overflowsBoundaries) { placement = flipOrder[index + 1]; } if (flippedVariation) { variation = getOppositeVariation(variation); } data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with // any additional property we may add in the future data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); data = runModifiers(data.instance.modifiers, data, 'flip'); } }); return data; } /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by update method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function keepTogether(data) { var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; var placement = data.placement.split('-')[0]; var floor = Math.floor; var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; var side = isVertical ? 'right' : 'bottom'; var opSide = isVertical ? 'left' : 'top'; var measurement = isVertical ? 'width' : 'height'; if (popper[side] < floor(reference[opSide])) { data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; } if (popper[opSide] > floor(reference[side])) { data.offsets.popper[opSide] = floor(reference[side]); } return data; } /** * Converts a string containing value + unit into a px value number * @function * @memberof {modifiers~offset} * @private * @argument {String} str - Value + unit string * @argument {String} measurement - `height` or `width` * @argument {Object} popperOffsets * @argument {Object} referenceOffsets * @returns {Number|String} * Value in pixels, or original string if no values were extracted */ function toValue(str, measurement, popperOffsets, referenceOffsets) { // separate value from unit var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); var value = +split[1]; var unit = split[2]; // If it's not a number it's an operator, I guess if (!value) { return str; } if (unit.indexOf('%') === 0) { var element = void 0; switch (unit) { case '%p': element = popperOffsets; break; case '%': case '%r': default: element = referenceOffsets; } var rect = getClientRect(element); return rect[measurement] / 100 * value; } else if (unit === 'vh' || unit === 'vw') { // if is a vh or vw, we calculate the size based on the viewport var size = void 0; if (unit === 'vh') { size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); } else { size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); } return size / 100 * value; } else { // if is an explicit pixel unit, we get rid of the unit and keep the value // if is an implicit unit, it's px, and we return just the value return value; } } /** * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. * @function * @memberof {modifiers~offset} * @private * @argument {String} offset * @argument {Object} popperOffsets * @argument {Object} referenceOffsets * @argument {String} basePlacement * @returns {Array} a two cells array with x and y offsets in numbers */ function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width // in this way the first offset will use an axis and the second one // will use the other one var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands // The regex addresses values with the plus or minus sign in front (+10, -20, etc) var fragments = offset.split(/(\+|\-)/).map(function (frag) { return frag.trim(); }); // Detect if the offset string contains a pair of values or a single one // they could be separated by comma or space var divider = fragments.indexOf(find(fragments, function (frag) { return frag.search(/,|\s/) !== -1; })); if (fragments[divider] && fragments[divider].indexOf(',') === -1) { console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); } // If divider is found, we divide the list of values and operands to divide // them by ofset X and Y. var splitRegex = /\s*,\s*|\s+/; var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations ops = ops.map(function (op, index) { // Most of the units rely on the orientation of the popper var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; var mergeWithPrevious = false; return op // This aggregates any `+` or `-` sign that aren't considered operators // e.g.: 10 + +5 => [10, +, +5] .reduce(function (a, b) { if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { a[a.length - 1] = b; mergeWithPrevious = true; return a; } else if (mergeWithPrevious) { a[a.length - 1] += b; mergeWithPrevious = false; return a; } else { return a.concat(b); } }, []) // Here we convert the string values into number values (in px) .map(function (str) { return toValue(str, measurement, popperOffsets, referenceOffsets); }); }); // Loop trough the offsets arrays and execute the operations ops.forEach(function (op, index) { op.forEach(function (frag, index2) { if (isNumeric(frag)) { offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); } }); }); return offsets; } /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by update method * @argument {Object} options - Modifiers configuration and options * @argument {Number|String} options.offset=0 * The offset value as described in the modifier description * @returns {Object} The data object, properly modified */ function offset(data, _ref) { var offset = _ref.offset; var placement = data.placement, _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; var basePlacement = placement.split('-')[0]; var offsets = void 0; if (isNumeric(+offset)) { offsets = [+offset, 0]; } else { offsets = parseOffset(offset, popper, reference, basePlacement); } if (basePlacement === 'left') { popper.top += offsets[0]; popper.left -= offsets[1]; } else if (basePlacement === 'right') { popper.top += offsets[0]; popper.left += offsets[1]; } else if (basePlacement === 'top') { popper.left += offsets[0]; popper.top -= offsets[1]; } else if (basePlacement === 'bottom') { popper.left += offsets[0]; popper.top += offsets[1]; } data.popper = popper; return data; } /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by `update` method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function preventOverflow(data, options) { var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to // go one step up and use the next offsetParent as reference to // avoid to make this modifier completely useless and look like broken if (data.instance.reference === boundariesElement) { boundariesElement = getOffsetParent(boundariesElement); } // NOTE: DOM access here // resets the popper's position so that the document size can be calculated excluding // the size of the popper element itself var transformProp = getSupportedPropertyName('transform'); var popperStyles = data.instance.popper.style; // assignment to help minification var top = popperStyles.top, left = popperStyles.left, transform = popperStyles[transformProp]; popperStyles.top = ''; popperStyles.left = ''; popperStyles[transformProp] = ''; var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here // restores the original style properties after the offsets have been computed popperStyles.top = top; popperStyles.left = left; popperStyles[transformProp] = transform; options.boundaries = boundaries; var order = options.priority; var popper = data.offsets.popper; var check = { primary: function primary(placement) { var value = popper[placement]; if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { value = Math.max(popper[placement], boundaries[placement]); } return defineProperty({}, placement, value); }, secondary: function secondary(placement) { var mainSide = placement === 'right' ? 'left' : 'top'; var value = popper[mainSide]; if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); } return defineProperty({}, mainSide, value); } }; order.forEach(function (placement) { var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; popper = _extends({}, popper, check[side](placement)); }); data.offsets.popper = popper; return data; } /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by `update` method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function shift(data) { var placement = data.placement; var basePlacement = placement.split('-')[0]; var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier if (shiftvariation) { var _data$offsets = data.offsets, reference = _data$offsets.reference, popper = _data$offsets.popper; var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; var side = isVertical ? 'left' : 'top'; var measurement = isVertical ? 'width' : 'height'; var shiftOffsets = { start: defineProperty({}, side, reference[side]), end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) }; data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); } return data; } /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by update method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function hide(data) { if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { return data; } var refRect = data.offsets.reference; var bound = find(data.instance.modifiers, function (modifier) { return modifier.name === 'preventOverflow'; }).boundaries; if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { // Avoid unnecessary DOM access if visibility hasn't changed if (data.hide === true) { return data; } data.hide = true; data.attributes['x-out-of-boundaries'] = ''; } else { // Avoid unnecessary DOM access if visibility hasn't changed if (data.hide === false) { return data; } data.hide = false; data.attributes['x-out-of-boundaries'] = false; } return data; } /** * @function * @memberof Modifiers * @argument {Object} data - The data object generated by `update` method * @argument {Object} options - Modifiers configuration and options * @returns {Object} The data object, properly modified */ function inner(data) { var placement = data.placement; var basePlacement = placement.split('-')[0]; var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference; var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); data.placement = getOppositePlacement(placement); data.offsets.popper = getClientRect(popper); return data; } /** * Modifier function, each modifier can have a function of this type assigned * to its `fn` property.
* These functions will be called on each update, this means that you must * make sure they are performant enough to avoid performance bottlenecks. * * @function ModifierFn * @argument {dataObject} data - The data object generated by `update` method * @argument {Object} options - Modifiers configuration and options * @returns {dataObject} The data object, properly modified */ /** * Modifiers are plugins used to alter the behavior of your poppers.
* Popper.js uses a set of 9 modifiers to provide all the basic functionalities * needed by the library. * * Usually you don't want to override the `order`, `fn` and `onLoad` props. * All the other properties are configurations that could be tweaked. * @namespace modifiers */ var modifiers = { /** * Modifier used to shift the popper on the start or end of its reference * element.
* It will read the variation of the `placement` property.
* It can be one either `-end` or `-start`. * @memberof modifiers * @inner */ shift: { /** @prop {number} order=100 - Index used to define the order of execution */ order: 100, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: shift }, /** * The `offset` modifier can shift your popper on both its axis. * * It accepts the following units: * - `px` or unit-less, interpreted as pixels * - `%` or `%r`, percentage relative to the length of the reference element * - `%p`, percentage relative to the length of the popper element * - `vw`, CSS viewport width unit * - `vh`, CSS viewport height unit * * For length is intended the main axis relative to the placement of the popper.
* This means that if the placement is `top` or `bottom`, the length will be the * `width`. In case of `left` or `right`, it will be the `height`. * * You can provide a single value (as `Number` or `String`), or a pair of values * as `String` divided by a comma or one (or more) white spaces.
* The latter is a deprecated method because it leads to confusion and will be * removed in v2.
* Additionally, it accepts additions and subtractions between different units. * Note that multiplications and divisions aren't supported. * * Valid examples are: * ``` * 10 * '10%' * '10, 10' * '10%, 10' * '10 + 10%' * '10 - 5vh + 3%' * '-10px + 5vh, 5px - 6%' * ``` * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap * > with their reference element, unfortunately, you will have to disable the `flip` modifier. * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). * * @memberof modifiers * @inner */ offset: { /** @prop {number} order=200 - Index used to define the order of execution */ order: 200, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: offset, /** @prop {Number|String} offset=0 * The offset value as described in the modifier description */ offset: 0 }, /** * Modifier used to prevent the popper from being positioned outside the boundary. * * A scenario exists where the reference itself is not within the boundaries.
* We can say it has "escaped the boundaries" — or just "escaped".
* In this case we need to decide whether the popper should either: * * - detach from the reference and remain "trapped" in the boundaries, or * - if it should ignore the boundary and "escape with its reference" * * When `escapeWithReference` is set to`true` and reference is completely * outside its boundaries, the popper will overflow (or completely leave) * the boundaries in order to remain attached to the edge of the reference. * * @memberof modifiers * @inner */ preventOverflow: { /** @prop {number} order=300 - Index used to define the order of execution */ order: 300, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: preventOverflow, /** * @prop {Array} [priority=['left','right','top','bottom']] * Popper will try to prevent overflow following these priorities by default, * then, it could overflow on the left and on top of the `boundariesElement` */ priority: ['left', 'right', 'top', 'bottom'], /** * @prop {number} padding=5 * Amount of pixel used to define a minimum distance between the boundaries * and the popper. This makes sure the popper always has a little padding * between the edges of its container */ padding: 5, /** * @prop {String|HTMLElement} boundariesElement='scrollParent' * Boundaries used by the modifier. Can be `scrollParent`, `window`, * `viewport` or any DOM element. */ boundariesElement: 'scrollParent' }, /** * Modifier used to make sure the reference and its popper stay near each other * without leaving any gap between the two. Especially useful when the arrow is * enabled and you want to ensure that it points to its reference element. * It cares only about the first axis. You can still have poppers with margin * between the popper and its reference element. * @memberof modifiers * @inner */ keepTogether: { /** @prop {number} order=400 - Index used to define the order of execution */ order: 400, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: keepTogether }, /** * This modifier is used to move the `arrowElement` of the popper to make * sure it is positioned between the reference element and its popper element. * It will read the outer size of the `arrowElement` node to detect how many * pixels of conjunction are needed. * * It has no effect if no `arrowElement` is provided. * @memberof modifiers * @inner */ arrow: { /** @prop {number} order=500 - Index used to define the order of execution */ order: 500, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: arrow, /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ element: '[x-arrow]' }, /** * Modifier used to flip the popper's placement when it starts to overlap its * reference element. * * Requires the `preventOverflow` modifier before it in order to work. * * **NOTE:** this modifier will interrupt the current update cycle and will * restart it if it detects the need to flip the placement. * @memberof modifiers * @inner */ flip: { /** @prop {number} order=600 - Index used to define the order of execution */ order: 600, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: flip, /** * @prop {String|Array} behavior='flip' * The behavior used to change the popper's placement. It can be one of * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid * placements (with optional variations) */ behavior: 'flip', /** * @prop {number} padding=5 * The popper will flip if it hits the edges of the `boundariesElement` */ padding: 5, /** * @prop {String|HTMLElement} boundariesElement='viewport' * The element which will define the boundaries of the popper position. * The popper will never be placed outside of the defined boundaries * (except if `keepTogether` is enabled) */ boundariesElement: 'viewport', /** * @prop {Boolean} flipVariations=false * The popper will switch placement variation between `-start` and `-end` when * the reference element overlaps its boundaries. * * The original placement should have a set variation. */ flipVariations: false, /** * @prop {Boolean} flipVariationsByContent=false * The popper will switch placement variation between `-start` and `-end` when * the popper element overlaps its reference boundaries. * * The original placement should have a set variation. */ flipVariationsByContent: false }, /** * Modifier used to make the popper flow toward the inner of the reference element. * By default, when this modifier is disabled, the popper will be placed outside * the reference element. * @memberof modifiers * @inner */ inner: { /** @prop {number} order=700 - Index used to define the order of execution */ order: 700, /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ enabled: false, /** @prop {ModifierFn} */ fn: inner }, /** * Modifier used to hide the popper when its reference element is outside of the * popper boundaries. It will set a `x-out-of-boundaries` attribute which can * be used to hide with a CSS selector the popper when its reference is * out of boundaries. * * Requires the `preventOverflow` modifier before it in order to work. * @memberof modifiers * @inner */ hide: { /** @prop {number} order=800 - Index used to define the order of execution */ order: 800, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: hide }, /** * Computes the style that will be applied to the popper element to gets * properly positioned. * * Note that this modifier will not touch the DOM, it just prepares the styles * so that `applyStyle` modifier can apply it. This separation is useful * in case you need to replace `applyStyle` with a custom implementation. * * This modifier has `850` as `order` value to maintain backward compatibility * with previous versions of Popper.js. Expect the modifiers ordering method * to change in future major versions of the library. * * @memberof modifiers * @inner */ computeStyle: { /** @prop {number} order=850 - Index used to define the order of execution */ order: 850, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: computeStyle, /** * @prop {Boolean} gpuAcceleration=true * If true, it uses the CSS 3D transformation to position the popper. * Otherwise, it will use the `top` and `left` properties */ gpuAcceleration: true, /** * @prop {string} [x='bottom'] * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. * Change this if your popper should grow in a direction different from `bottom` */ x: 'bottom', /** * @prop {string} [x='left'] * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. * Change this if your popper should grow in a direction different from `right` */ y: 'right' }, /** * Applies the computed styles to the popper element. * * All the DOM manipulations are limited to this modifier. This is useful in case * you want to integrate Popper.js inside a framework or view library and you * want to delegate all the DOM manipulations to it. * * Note that if you disable this modifier, you must make sure the popper element * has its position set to `absolute` before Popper.js can do its work! * * Just disable this modifier and define your own to achieve the desired effect. * * @memberof modifiers * @inner */ applyStyle: { /** @prop {number} order=900 - Index used to define the order of execution */ order: 900, /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ enabled: true, /** @prop {ModifierFn} */ fn: applyStyle, /** @prop {Function} */ onLoad: applyStyleOnLoad, /** * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier * @prop {Boolean} gpuAcceleration=true * If true, it uses the CSS 3D transformation to position the popper. * Otherwise, it will use the `top` and `left` properties */ gpuAcceleration: undefined } }; /** * The `dataObject` is an object containing all the information used by Popper.js. * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. * @name dataObject * @property {Object} data.instance The Popper.js instance * @property {String} data.placement Placement applied to popper * @property {String} data.originalPlacement Placement originally defined on init * @property {Boolean} data.flipped True if popper has been flipped by flip modifier * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) * @property {Object} data.boundaries Offsets of the popper boundaries * @property {Object} data.offsets The measurements of popper, reference and arrow elements * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 */ /** * Default options provided to Popper.js constructor.
* These can be overridden using the `options` argument of Popper.js.
* To override an option, simply pass an object with the same * structure of the `options` object, as the 3rd argument. For example: * ``` * new Popper(ref, pop, { * modifiers: { * preventOverflow: { enabled: false } * } * }) * ``` * @type {Object} * @static * @memberof Popper */ var Defaults = { /** * Popper's placement. * @prop {Popper.placements} placement='bottom' */ placement: 'bottom', /** * Set this to true if you want popper to position it self in 'fixed' mode * @prop {Boolean} positionFixed=false */ positionFixed: false, /** * Whether events (resize, scroll) are initially enabled. * @prop {Boolean} eventsEnabled=true */ eventsEnabled: true, /** * Set to true if you want to automatically remove the popper when * you call the `destroy` method. * @prop {Boolean} removeOnDestroy=false */ removeOnDestroy: false, /** * Callback called when the popper is created.
* By default, it is set to no-op.
* Access Popper.js instance with `data.instance`. * @prop {onCreate} */ onCreate: function onCreate() {}, /** * Callback called when the popper is updated. This callback is not called * on the initialization/creation of the popper, but only on subsequent * updates.
* By default, it is set to no-op.
* Access Popper.js instance with `data.instance`. * @prop {onUpdate} */ onUpdate: function onUpdate() {}, /** * List of modifiers used to modify the offsets before they are applied to the popper. * They provide most of the functionalities of Popper.js. * @prop {modifiers} */ modifiers: modifiers }; /** * @callback onCreate * @param {dataObject} data */ /** * @callback onUpdate * @param {dataObject} data */ // Utils // Methods var Popper = function () { /** * Creates a new Popper.js instance. * @class Popper * @param {Element|referenceObject} reference - The reference element used to position the popper * @param {Element} popper - The HTML / XML element used as the popper * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) * @return {Object} instance - The generated Popper.js instance */ function Popper(reference, popper) { var _this = this; var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; classCallCheck(this, Popper); this.scheduleUpdate = function () { return requestAnimationFrame(_this.update); }; // make update() debounced, so that it only runs at most once-per-tick this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it this.options = _extends({}, Popper.Defaults, options); // init state this.state = { isDestroyed: false, isCreated: false, scrollParents: [] }; // get reference and popper elements (allow jQuery wrappers) this.reference = reference && reference.jquery ? reference[0] : reference; this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options this.options.modifiers = {}; Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); }); // Refactoring modifiers' list (Object => Array) this.modifiers = Object.keys(this.options.modifiers).map(function (name) { return _extends({ name: name }, _this.options.modifiers[name]); }) // sort the modifiers by order .sort(function (a, b) { return a.order - b.order; }); // modifiers have the ability to execute arbitrary code when Popper.js get inited // such code is executed in the same order of its modifier // they could add new properties to their options configuration // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! this.modifiers.forEach(function (modifierOptions) { if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); } }); // fire the first update to position the popper in the right place this.update(); var eventsEnabled = this.options.eventsEnabled; if (eventsEnabled) { // setup event listeners, they will take care of update the position in specific situations this.enableEventListeners(); } this.state.eventsEnabled = eventsEnabled; } // We can't use class properties because they don't get listed in the // class prototype and break stuff like Sinon stubs createClass(Popper, [{ key: 'update', value: function update$$1() { return update.call(this); } }, { key: 'destroy', value: function destroy$$1() { return destroy.call(this); } }, { key: 'enableEventListeners', value: function enableEventListeners$$1() { return enableEventListeners.call(this); } }, { key: 'disableEventListeners', value: function disableEventListeners$$1() { return disableEventListeners.call(this); } /** * Schedules an update. It will run on the next UI update available. * @method scheduleUpdate * @memberof Popper */ /** * Collection of utilities useful when writing custom modifiers. * Starting from version 1.7, this method is available only if you * include `popper-utils.js` before `popper.js`. * * **DEPRECATION**: This way to access PopperUtils is deprecated * and will be removed in v2! Use the PopperUtils module directly instead. * Due to the high instability of the methods contained in Utils, we can't * guarantee them to follow semver. Use them at your own risk! * @static * @private * @type {Object} * @deprecated since version 1.8 * @member Utils * @memberof Popper */ }]); return Popper; }(); /** * The `referenceObject` is an object that provides an interface compatible with Popper.js * and lets you use it as replacement of a real DOM node.
* You can use this method to position a popper relatively to a set of coordinates * in case you don't have a DOM node to use as reference. * * ``` * new Popper(referenceObject, popperNode); * ``` * * NB: This feature isn't supported in Internet Explorer 10. * @name referenceObject * @property {Function} data.getBoundingClientRect * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. * @property {number} data.clientWidth * An ES6 getter that will return the width of the virtual reference element. * @property {number} data.clientHeight * An ES6 getter that will return the height of the virtual reference element. */ Popper.Utils = (typeof window !== 'undefined' ? window : __webpack_require__.g).PopperUtils; Popper.placements = placements; Popper.Defaults = Defaults; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Popper); //# sourceMappingURL=popper.js.map /***/ }), /***/ "./node_modules/preact/compat/dist/compat.module.js": /*!**********************************************************!*\ !*** ./node_modules/preact/compat/dist/compat.module.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Children: () => (/* binding */ O), /* harmony export */ Component: () => (/* reexport safe */ preact__WEBPACK_IMPORTED_MODULE_0__.Component), /* harmony export */ Fragment: () => (/* reexport safe */ preact__WEBPACK_IMPORTED_MODULE_0__.Fragment), /* harmony export */ PureComponent: () => (/* binding */ w), /* harmony export */ StrictMode: () => (/* binding */ vn), /* harmony export */ Suspense: () => (/* binding */ D), /* harmony export */ SuspenseList: () => (/* binding */ V), /* harmony export */ __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: () => (/* binding */ rn), /* harmony export */ cloneElement: () => (/* binding */ cn), /* harmony export */ createContext: () => (/* reexport safe */ preact__WEBPACK_IMPORTED_MODULE_0__.createContext), /* harmony export */ createElement: () => (/* reexport safe */ preact__WEBPACK_IMPORTED_MODULE_0__.createElement), /* harmony export */ createFactory: () => (/* binding */ on), /* harmony export */ createPortal: () => (/* binding */ j), /* harmony export */ createRef: () => (/* reexport safe */ preact__WEBPACK_IMPORTED_MODULE_0__.createRef), /* harmony export */ "default": () => (/* binding */ bn), /* harmony export */ findDOMNode: () => (/* binding */ an), /* harmony export */ flushSync: () => (/* binding */ hn), /* harmony export */ forwardRef: () => (/* binding */ k), /* harmony export */ hydrate: () => (/* binding */ q), /* harmony export */ isValidElement: () => (/* binding */ ln), /* harmony export */ lazy: () => (/* binding */ M), /* harmony export */ memo: () => (/* binding */ R), /* harmony export */ render: () => (/* binding */ Y), /* harmony export */ startTransition: () => (/* binding */ dn), /* harmony export */ unmountComponentAtNode: () => (/* binding */ fn), /* harmony export */ unstable_batchedUpdates: () => (/* binding */ sn), /* harmony export */ useCallback: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useCallback), /* harmony export */ useContext: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useContext), /* harmony export */ useDebugValue: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useDebugValue), /* harmony export */ useDeferredValue: () => (/* binding */ pn), /* harmony export */ useEffect: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useEffect), /* harmony export */ useErrorBoundary: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useErrorBoundary), /* harmony export */ useId: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useId), /* harmony export */ useImperativeHandle: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useImperativeHandle), /* harmony export */ useInsertionEffect: () => (/* binding */ yn), /* harmony export */ useLayoutEffect: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect), /* harmony export */ useMemo: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useMemo), /* harmony export */ useReducer: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useReducer), /* harmony export */ useRef: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useRef), /* harmony export */ useState: () => (/* reexport safe */ preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useState), /* harmony export */ useSyncExternalStore: () => (/* binding */ _n), /* harmony export */ useTransition: () => (/* binding */ mn), /* harmony export */ version: () => (/* binding */ un) /* harmony export */ }); /* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.module.js"); /* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! preact/hooks */ "./node_modules/preact/hooks/dist/hooks.module.js"); function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if("__source"!==e&&!(e in t))return!0;for(var r in t)if("__source"!==r&&n[r]!==t[r])return!0;return!1}function E(n,t){return n===t&&(0!==n||1/n==1/t)||n!=n&&t!=t}function w(n){this.props=n}function R(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:C(this.props,n)}function u(e){return this.shouldComponentUpdate=r,(0,preact__WEBPACK_IMPORTED_MODULE_0__.createElement)(n,e)}return u.displayName="Memo("+(n.displayName||n.name)+")",u.prototype.isReactComponent=!0,u.__f=!0,u}(w.prototype=new preact__WEBPACK_IMPORTED_MODULE_0__.Component).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var x=preact__WEBPACK_IMPORTED_MODULE_0__.options.__b;preact__WEBPACK_IMPORTED_MODULE_0__.options.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n)};var N="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=N,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(n.displayName||n.name)+")",t}var A=function(n,t){return null==n?null:(0,preact__WEBPACK_IMPORTED_MODULE_0__.toChildArray)((0,preact__WEBPACK_IMPORTED_MODULE_0__.toChildArray)(n).map(t))},O={map:A,forEach:A,count:function(n){return n?(0,preact__WEBPACK_IMPORTED_MODULE_0__.toChildArray)(n).length:0},only:function(n){var t=(0,preact__WEBPACK_IMPORTED_MODULE_0__.toChildArray)(n);if(1!==t.length)throw"Children.only";return t[0]},toArray:preact__WEBPACK_IMPORTED_MODULE_0__.toChildArray},T=preact__WEBPACK_IMPORTED_MODULE_0__.options.__e;preact__WEBPACK_IMPORTED_MODULE_0__.options.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r)};var I=preact__WEBPACK_IMPORTED_MODULE_0__.options.unmount;function L(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){"function"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)})),n}function U(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return U(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null}function F(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function M(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return (0,preact__WEBPACK_IMPORTED_MODULE_0__.createElement)(r,o)}return o.displayName="Lazy",o.__f=!0,o}function V(){this.u=null,this.o=null}preact__WEBPACK_IMPORTED_MODULE_0__.options.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),I&&I(n)},(D.prototype=new preact__WEBPACK_IMPORTED_MODULE_0__.Component).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=F(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=U(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},D.prototype.componentWillUnmount=function(){this.t=[]},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=L(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&(0,preact__WEBPACK_IMPORTED_MODULE_0__.createElement)(preact__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,n.fallback);return i&&(i.__h=null),[(0,preact__WEBPACK_IMPORTED_MODULE_0__.createElement)(preact__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&("t"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),e.i.removeChild(n)}}),(0,preact__WEBPACK_IMPORTED_MODULE_0__.render)((0,preact__WEBPACK_IMPORTED_MODULE_0__.createElement)(P,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount()}function j(n,e){var r=(0,preact__WEBPACK_IMPORTED_MODULE_0__.createElement)($,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new preact__WEBPACK_IMPORTED_MODULE_0__.Component).__a=function(n){var t=this,e=F(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u()};e?e(o):o()}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=(0,preact__WEBPACK_IMPORTED_MODULE_0__.toChildArray)(n.children);n.revealOrder&&"b"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t)})};var z="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H="undefined"!=typeof document,Z=function(n){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function Y(n,t,e){return null==t.__k&&(t.textContent=""),(0,preact__WEBPACK_IMPORTED_MODULE_0__.render)(n,t),"function"==typeof e&&e(),n?n.__c:null}function q(n,t,e){return (0,preact__WEBPACK_IMPORTED_MODULE_0__.hydrate)(n,t),"function"==typeof e&&e(),n?n.__c:null}preact__WEBPACK_IMPORTED_MODULE_0__.Component.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(preact__WEBPACK_IMPORTED_MODULE_0__.Component.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var G=preact__WEBPACK_IMPORTED_MODULE_0__.options.event;function J(){}function K(){return this.cancelBubble}function Q(){return this.defaultPrevented}preact__WEBPACK_IMPORTED_MODULE_0__.options.event=function(n){return G&&(n=G(n)),n.persist=J,n.isPropagationStopped=K,n.isDefaultPrevented=Q,n.nativeEvent=n};var X,nn={configurable:!0,get:function(){return this.class}},tn=preact__WEBPACK_IMPORTED_MODULE_0__.options.vnode;preact__WEBPACK_IMPORTED_MODULE_0__.options.vnode=function(n){var t=n.type,e=n.props,u=e;if("string"==typeof t){var o=-1===t.indexOf("-");for(var i in u={},e){var l=e[i];H&&"children"===i&&"noscript"===t||"value"===i&&"defaultValue"in e&&null==l||("defaultValue"===i&&"value"in e&&null==e.value?i="value":"download"===i&&!0===l?l="":/ondoubleclick/i.test(i)?i="ondblclick":/^onchange(textarea|input)/i.test(i+t)&&!Z(e.type)?i="oninput":/^onfocus$/i.test(i)?i="onfocusin":/^onblur$/i.test(i)?i="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)?i=i.toLowerCase():o&&B.test(i)?i=i.replace(/[A-Z0-9]/g,"-$&").toLowerCase():null===l&&(l=void 0),/^oninput$/i.test(i)&&(i=i.toLowerCase(),u[i]&&(i="oninputCapture")),u[i]=l)}"select"==t&&u.multiple&&Array.isArray(u.value)&&(u.value=(0,preact__WEBPACK_IMPORTED_MODULE_0__.toChildArray)(e.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),"select"==t&&null!=u.defaultValue&&(u.value=(0,preact__WEBPACK_IMPORTED_MODULE_0__.toChildArray)(e.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),n.props=u,e.class!=e.className&&(nn.enumerable="className"in e,null!=e.className&&(u.class=e.className),Object.defineProperty(u,"className",nn))}n.$$typeof=z,tn&&tn(n)};var en=preact__WEBPACK_IMPORTED_MODULE_0__.options.__r;preact__WEBPACK_IMPORTED_MODULE_0__.options.__r=function(n){en&&en(n),X=n.__c};var rn={ReactCurrentDispatcher:{current:{readContext:function(n){return X.__n[n.__c].props.value}}}},un="17.0.2";function on(n){return preact__WEBPACK_IMPORTED_MODULE_0__.createElement.bind(null,n)}function ln(n){return!!n&&n.$$typeof===z}function cn(n){return ln(n)?preact__WEBPACK_IMPORTED_MODULE_0__.cloneElement.apply(null,arguments):n}function fn(n){return!!n.__k&&((0,preact__WEBPACK_IMPORTED_MODULE_0__.render)(null,n),!0)}function an(n){return n&&(n.base||1===n.nodeType&&n)||null}var sn=function(n,t){return n(t)},hn=function(n,t){return n(t)},vn=preact__WEBPACK_IMPORTED_MODULE_0__.Fragment;function dn(n){n()}function pn(n){return n}function mn(){return[!1,dn]}var yn=preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect;function _n(n,t){var e=t(),r=(0,preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useState)({h:{__:e,v:t}}),u=r[0].h,o=r[1];return (0,preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(function(){u.__=e,u.v=t,E(u.__,t())||o({h:u})},[n,e,t]),(0,preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function(){return E(u.__,u.v())||o({h:u}),n(function(){E(u.__,u.v())||o({h:u})})},[n]),e}var bn={useState:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useState,useId:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useId,useReducer:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useReducer,useEffect:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useEffect,useLayoutEffect:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect,useInsertionEffect:yn,useTransition:mn,useDeferredValue:pn,useSyncExternalStore:_n,startTransition:dn,useRef:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useRef,useImperativeHandle:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useImperativeHandle,useMemo:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useMemo,useCallback:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useCallback,useContext:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useContext,useDebugValue:preact_hooks__WEBPACK_IMPORTED_MODULE_1__.useDebugValue,version:"17.0.2",Children:O,render:Y,hydrate:q,unmountComponentAtNode:fn,createPortal:j,createElement:preact__WEBPACK_IMPORTED_MODULE_0__.createElement,createContext:preact__WEBPACK_IMPORTED_MODULE_0__.createContext,createFactory:on,cloneElement:cn,createRef:preact__WEBPACK_IMPORTED_MODULE_0__.createRef,Fragment:preact__WEBPACK_IMPORTED_MODULE_0__.Fragment,isValidElement:ln,findDOMNode:an,Component:preact__WEBPACK_IMPORTED_MODULE_0__.Component,PureComponent:w,memo:R,forwardRef:k,flushSync:hn,unstable_batchedUpdates:sn,StrictMode:vn,Suspense:D,SuspenseList:V,lazy:M,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:rn}; //# sourceMappingURL=compat.module.js.map /***/ }), /***/ "./node_modules/preact/dist/preact.module.js": /*!***************************************************!*\ !*** ./node_modules/preact/dist/preact.module.js ***! \***************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Component: () => (/* binding */ x), /* harmony export */ Fragment: () => (/* binding */ _), /* harmony export */ cloneElement: () => (/* binding */ F), /* harmony export */ createContext: () => (/* binding */ G), /* harmony export */ createElement: () => (/* binding */ y), /* harmony export */ createRef: () => (/* binding */ d), /* harmony export */ h: () => (/* binding */ y), /* harmony export */ hydrate: () => (/* binding */ E), /* harmony export */ isValidElement: () => (/* binding */ i), /* harmony export */ options: () => (/* binding */ l), /* harmony export */ render: () => (/* binding */ D), /* harmony export */ toChildArray: () => (/* binding */ j) /* harmony export */ }); var n,l,u,i,t,r,o,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function h(n,l){for(var u in l)n[u]=l[u];return n}function v(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,i){var t,r,o,f={};for(o in u)"key"==o?t=u[o]:"ref"==o?r=u[o]:f[o]=u[o];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),"function"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===f[o]&&(f[o]=l.defaultProps[o]);return p(l,f,t,r,null)}function p(n,i,t,r,o){var f={type:n,props:i,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++u:o};return null==o&&null!=l.vnode&&l.vnode(f),f}function d(){return{current:null}}function _(n){return n.children}function k(n,l,u,i,t){var r;for(r in u)"children"===r||"key"===r||r in l||g(n,r,null,u[r],i);for(r in l)t&&"function"!=typeof l[r]||"children"===r||"key"===r||"value"===r||"checked"===r||u[r]===l[r]||g(n,r,l[r],u[r],i)}function b(n,l,u){"-"===l[0]?n.setProperty(l,null==u?"":u):n[l]=null==u?"":"number"!=typeof u||a.test(l)?u:u+"px"}function g(n,l,u,i,t){var r;n:if("style"===l)if("string"==typeof u)n.style.cssText=u;else{if("string"==typeof i&&(n.style.cssText=i=""),i)for(l in i)u&&l in u||b(n.style,l,"");if(u)for(l in u)i&&u[l]===i[l]||b(n.style,l,u[l])}else if("o"===l[0]&&"n"===l[1])r=l!==(l=l.replace(/Capture$/,"")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?i||n.addEventListener(l,r?w:m,r):n.removeEventListener(l,r?w:m,r);else if("dangerouslySetInnerHTML"!==l){if(t)l=l.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==l&&"height"!==l&&"href"!==l&&"list"!==l&&"form"!==l&&"tabIndex"!==l&&"download"!==l&&l in n)try{n[l]=null==u?"":u;break n}catch(n){}"function"==typeof u||(null==u||!1===u&&-1==l.indexOf("-")?n.removeAttribute(l):n.setAttribute(l,u))}}function m(n){t=!0;try{return this.l[n.type+!1](l.event?l.event(n):n)}finally{t=!1}}function w(n){t=!0;try{return this.l[n.type+!0](l.event?l.event(n):n)}finally{t=!1}}function x(n,l){this.props=n,this.context=l}function A(n,l){if(null==l)return n.__?A(n.__,n.__.__k.indexOf(n)+1):null;for(var u;ll&&r.sort(function(n,l){return n.__v.__b-l.__v.__b}));$.__r=0}function H(n,l,u,i,t,r,o,f,e,a){var h,v,y,d,k,b,g,m=i&&i.__k||s,w=m.length;for(u.__k=[],h=0;h0?p(d.type,d.props,d.key,d.ref?d.ref:null,d.__v):d)){if(d.__=u,d.__b=u.__b+1,null===(y=m[h])||y&&d.key==y.key&&d.type===y.type)m[h]=void 0;else for(v=0;v=0;l--)if((u=n.__k[l])&&(i=L(u)))return i;return null}function M(n,u,i,t,r,o,f,e,c){var s,a,v,y,p,d,k,b,g,m,w,A,P,C,T,$=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,o=[e]),(s=l.__b)&&s(u);try{n:if("function"==typeof $){if(b=u.props,g=(s=$.contextType)&&t[s.__c],m=s?g?g.props.value:s.__:t,i.__c?k=(a=u.__c=i.__c).__=a.__E:("prototype"in $&&$.prototype.render?u.__c=a=new $(b,m):(u.__c=a=new x(b,m),a.constructor=$,a.render=B),g&&g.sub(a),a.props=b,a.state||(a.state={}),a.context=m,a.__n=t,v=a.__d=!0,a.__h=[],a._sb=[]),null==a.__s&&(a.__s=a.state),null!=$.getDerivedStateFromProps&&(a.__s==a.state&&(a.__s=h({},a.__s)),h(a.__s,$.getDerivedStateFromProps(b,a.__s))),y=a.props,p=a.state,a.__v=u,v)null==$.getDerivedStateFromProps&&null!=a.componentWillMount&&a.componentWillMount(),null!=a.componentDidMount&&a.__h.push(a.componentDidMount);else{if(null==$.getDerivedStateFromProps&&b!==y&&null!=a.componentWillReceiveProps&&a.componentWillReceiveProps(b,m),!a.__e&&null!=a.shouldComponentUpdate&&!1===a.shouldComponentUpdate(b,a.__s,m)||u.__v===i.__v){for(u.__v!==i.__v&&(a.props=b,a.state=a.__s,a.__d=!1),u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),w=0;w2&&(f.children=arguments.length>3?n.call(arguments,2):i),p(l.type,f,t||l.key,r||l.ref,null)}function G(n,l){var u={__c:l="__cC"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,T(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,i){for(var t,r,o;l=l.__;)if((t=l.__c)&&!t.__)try{if((r=t.constructor)&&null!=r.getDerivedStateFromError&&(t.setState(r.getDerivedStateFromError(n)),o=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),o=t.__d),o)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},t=!1,x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),"function"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),T(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),T(this))},x.prototype.render=_,r=[],f="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,$.__r=0,e=0; //# sourceMappingURL=preact.module.js.map /***/ }), /***/ "./node_modules/preact/hooks/dist/hooks.module.js": /*!********************************************************!*\ !*** ./node_modules/preact/hooks/dist/hooks.module.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ useCallback: () => (/* binding */ T), /* harmony export */ useContext: () => (/* binding */ q), /* harmony export */ useDebugValue: () => (/* binding */ x), /* harmony export */ useEffect: () => (/* binding */ h), /* harmony export */ useErrorBoundary: () => (/* binding */ P), /* harmony export */ useId: () => (/* binding */ V), /* harmony export */ useImperativeHandle: () => (/* binding */ A), /* harmony export */ useLayoutEffect: () => (/* binding */ s), /* harmony export */ useMemo: () => (/* binding */ F), /* harmony export */ useReducer: () => (/* binding */ y), /* harmony export */ useRef: () => (/* binding */ _), /* harmony export */ useState: () => (/* binding */ p) /* harmony export */ }); /* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.module.js"); var t,r,u,i,o=0,f=[],c=[],e=preact__WEBPACK_IMPORTED_MODULE_0__.options.__b,a=preact__WEBPACK_IMPORTED_MODULE_0__.options.__r,v=preact__WEBPACK_IMPORTED_MODULE_0__.options.diffed,l=preact__WEBPACK_IMPORTED_MODULE_0__.options.__c,m=preact__WEBPACK_IMPORTED_MODULE_0__.options.unmount;function d(t,u){preact__WEBPACK_IMPORTED_MODULE_0__.options.__h&&preact__WEBPACK_IMPORTED_MODULE_0__.options.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:c}),i.__[t]}function p(n){return o=1,y(B,n)}function y(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):B(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){r.u=!0;var f=r.shouldComponentUpdate;r.shouldComponentUpdate=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!f||f.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!f||f.call(this,n,t,r))}}return o.__N||o.__}function h(u,i){var o=d(t++,3);!preact__WEBPACK_IMPORTED_MODULE_0__.options.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o))}function s(u,i){var o=d(t++,4);!preact__WEBPACK_IMPORTED_MODULE_0__.options.__s&&z(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o))}function _(n){return o=5,F(function(){return{current:n}},[])}function A(n,t,r){o=6,s(function(){return"function"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function F(n,r){var u=d(t++,7);return z(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T(n,t){return o=8,F(function(){return n},t)}function q(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x(t,r){preact__WEBPACK_IMPORTED_MODULE_0__.options.useDebugValue&&preact__WEBPACK_IMPORTED_MODULE_0__.options.useDebugValue(r?r(t):t)}function P(n){var u=d(t++,10),i=p();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function V(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__="P"+i[0]+"-"+i[1]++}return n.__}function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k),t.__H.__h.forEach(w),t.__H.__h=[]}catch(r){t.__H.__h=[],preact__WEBPACK_IMPORTED_MODULE_0__.options.__e(r,t.__v)}}preact__WEBPACK_IMPORTED_MODULE_0__.options.__b=function(n){r=null,e&&e(n)},preact__WEBPACK_IMPORTED_MODULE_0__.options.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0})):(i.__h.forEach(k),i.__h.forEach(w),i.__h=[])),u=r},preact__WEBPACK_IMPORTED_MODULE_0__.options.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===preact__WEBPACK_IMPORTED_MODULE_0__.options.requestAnimationFrame||((i=preact__WEBPACK_IMPORTED_MODULE_0__.options.requestAnimationFrame)||j)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c})),u=r=null},preact__WEBPACK_IMPORTED_MODULE_0__.options.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k),t.__h=t.__h.filter(function(n){return!n.__||w(n)})}catch(u){r.some(function(n){n.__h&&(n.__h=[])}),r=[],preact__WEBPACK_IMPORTED_MODULE_0__.options.__e(u,t.__v)}}),l&&l(t,r)},preact__WEBPACK_IMPORTED_MODULE_0__.options.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k(n)}catch(n){r=n}}),u.__H=void 0,r&&preact__WEBPACK_IMPORTED_MODULE_0__.options.__e(r,u.__v))};var g="function"==typeof requestAnimationFrame;function j(n){var t,r=function(){clearTimeout(u),g&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);g&&(t=requestAnimationFrame(r))}function k(n){var t=r,u=n.__c;"function"==typeof u&&(n.__c=void 0,u()),r=t}function w(n){var t=r;n.__c=n.__(),r=t}function z(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function B(n,t){return"function"==typeof t?t(n):t} //# sourceMappingURL=hooks.module.js.map /***/ }), /***/ "./node_modules/process/browser.js": /*!*****************************************!*\ !*** ./node_modules/process/browser.js ***! \*****************************************/ /***/ ((module) => { // shim for using process in browser var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it // don't break things. But we need to wrap it in a try catch in case it is // wrapped in strict mode code which doesn't define any globals. It's inside a // function because try/catches deoptimize in certain engines. var cachedSetTimeout; var cachedClearTimeout; function defaultSetTimout() { throw new Error('setTimeout has not been defined'); } function defaultClearTimeout () { throw new Error('clearTimeout has not been defined'); } (function () { try { if (typeof setTimeout === 'function') { cachedSetTimeout = setTimeout; } else { cachedSetTimeout = defaultSetTimout; } } catch (e) { cachedSetTimeout = defaultSetTimout; } try { if (typeof clearTimeout === 'function') { cachedClearTimeout = clearTimeout; } else { cachedClearTimeout = defaultClearTimeout; } } catch (e) { cachedClearTimeout = defaultClearTimeout; } } ()) function runTimeout(fun) { if (cachedSetTimeout === setTimeout) { //normal enviroments in sane situations return setTimeout(fun, 0); } // if setTimeout wasn't available but was latter defined if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { cachedSetTimeout = setTimeout; return setTimeout(fun, 0); } try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedSetTimeout(fun, 0); } catch(e){ try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedSetTimeout.call(null, fun, 0); } catch(e){ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error return cachedSetTimeout.call(this, fun, 0); } } } function runClearTimeout(marker) { if (cachedClearTimeout === clearTimeout) { //normal enviroments in sane situations return clearTimeout(marker); } // if clearTimeout wasn't available but was latter defined if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { cachedClearTimeout = clearTimeout; return clearTimeout(marker); } try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedClearTimeout(marker); } catch (e){ try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedClearTimeout.call(null, marker); } catch (e){ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. // Some versions of I.E. have different rules for clearTimeout vs setTimeout return cachedClearTimeout.call(this, marker); } } } var queue = []; var draining = false; var currentQueue; var queueIndex = -1; function cleanUpNextTick() { if (!draining || !currentQueue) { return; } draining = false; if (currentQueue.length) { queue = currentQueue.concat(queue); } else { queueIndex = -1; } if (queue.length) { drainQueue(); } } function drainQueue() { if (draining) { return; } var timeout = runTimeout(cleanUpNextTick); draining = true; var len = queue.length; while(len) { currentQueue = queue; queue = []; while (++queueIndex < len) { if (currentQueue) { currentQueue[queueIndex].run(); } } queueIndex = -1; len = queue.length; } currentQueue = null; draining = false; runClearTimeout(timeout); } process.nextTick = function (fun) { var args = new Array(arguments.length - 1); if (arguments.length > 1) { for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { runTimeout(drainQueue); } }; // v8 likes predictible objects function Item(fun, array) { this.fun = fun; this.array = array; } Item.prototype.run = function () { this.fun.apply(null, this.array); }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {}; function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop; process.listeners = function (name) { return [] } process.binding = function (name) { throw new Error('process.binding is not supported'); }; process.cwd = function () { return '/' }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function() { return 0; }; /***/ }), /***/ "./node_modules/simple-swizzle/index.js": /*!**********************************************!*\ !*** ./node_modules/simple-swizzle/index.js ***! \**********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isArrayish = __webpack_require__(/*! is-arrayish */ "./node_modules/simple-swizzle/node_modules/is-arrayish/index.js"); var concat = Array.prototype.concat; var slice = Array.prototype.slice; var swizzle = module.exports = function swizzle(args) { var results = []; for (var i = 0, len = args.length; i < len; i++) { var arg = args[i]; if (isArrayish(arg)) { // http://jsperf.com/javascript-array-concat-vs-push/98 results = concat.call(results, slice.call(arg)); } else { results.push(arg); } } return results; }; swizzle.wrap = function (fn) { return function () { return fn(swizzle(arguments)); }; }; /***/ }), /***/ "./node_modules/simple-swizzle/node_modules/is-arrayish/index.js": /*!***********************************************************************!*\ !*** ./node_modules/simple-swizzle/node_modules/is-arrayish/index.js ***! \***********************************************************************/ /***/ ((module) => { module.exports = function isArrayish(obj) { if (!obj || typeof obj === 'string') { return false; } return obj instanceof Array || Array.isArray(obj) || (obj.length >= 0 && (obj.splice instanceof Function || (Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String'))); }; /***/ }), /***/ "./node_modules/sortablejs/modular/sortable.esm.js": /*!*********************************************************!*\ !*** ./node_modules/sortablejs/modular/sortable.esm.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ MultiDrag: () => (/* binding */ MultiDragPlugin), /* harmony export */ Sortable: () => (/* binding */ Sortable), /* harmony export */ Swap: () => (/* binding */ SwapPlugin), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /**! * Sortable 1.10.2 * @author RubaXa * @author owenm * @license MIT */ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 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; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } var version = "1.10.2"; function userAgent(pattern) { if (typeof window !== 'undefined' && window.navigator) { return !! /*@__PURE__*/ navigator.userAgent.match(pattern); } } var IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i); var Edge = userAgent(/Edge/i); var FireFox = userAgent(/firefox/i); var Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i); var IOS = userAgent(/iP(ad|od|hone)/i); var ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i); var captureMode = { capture: false, passive: false }; function on(el, event, fn) { el.addEventListener(event, fn, !IE11OrLess && captureMode); } function off(el, event, fn) { el.removeEventListener(event, fn, !IE11OrLess && captureMode); } function matches( /**HTMLElement*/ el, /**String*/ selector) { if (!selector) return; selector[0] === '>' && (selector = selector.substring(1)); if (el) { try { if (el.matches) { return el.matches(selector); } else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); } else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); } } catch (_) { return false; } } return false; } function getParentOrHost(el) { return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode; } function closest( /**HTMLElement*/ el, /**String*/ selector, /**HTMLElement*/ ctx, includeCTX) { if (el) { ctx = ctx || document; do { if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) { return el; } if (el === ctx) break; /* jshint boss:true */ } while (el = getParentOrHost(el)); } return null; } var R_SPACE = /\s+/g; function toggleClass(el, name, state) { if (el && name) { if (el.classList) { el.classList[state ? 'add' : 'remove'](name); } else { var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' '); el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' '); } } } function css(el, prop, val) { var style = el && el.style; if (style) { if (val === void 0) { if (document.defaultView && document.defaultView.getComputedStyle) { val = document.defaultView.getComputedStyle(el, ''); } else if (el.currentStyle) { val = el.currentStyle; } return prop === void 0 ? val : val[prop]; } else { if (!(prop in style) && prop.indexOf('webkit') === -1) { prop = '-webkit-' + prop; } style[prop] = val + (typeof val === 'string' ? '' : 'px'); } } } function matrix(el, selfOnly) { var appliedTransforms = ''; if (typeof el === 'string') { appliedTransforms = el; } else { do { var transform = css(el, 'transform'); if (transform && transform !== 'none') { appliedTransforms = transform + ' ' + appliedTransforms; } /* jshint boss:true */ } while (!selfOnly && (el = el.parentNode)); } var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix; /*jshint -W056 */ return matrixFn && new matrixFn(appliedTransforms); } function find(ctx, tagName, iterator) { if (ctx) { var list = ctx.getElementsByTagName(tagName), i = 0, n = list.length; if (iterator) { for (; i < n; i++) { iterator(list[i], i); } } return list; } return []; } function getWindowScrollingElement() { var scrollingElement = document.scrollingElement; if (scrollingElement) { return scrollingElement; } else { return document.documentElement; } } /** * Returns the "bounding client rect" of given element * @param {HTMLElement} el The element whose boundingClientRect is wanted * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr * @param {[Boolean]} undoScale Whether the container's scale() should be undone * @param {[HTMLElement]} container The parent the element will be placed in * @return {Object} The boundingClientRect of el, with specified adjustments */ function getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) { if (!el.getBoundingClientRect && el !== window) return; var elRect, top, left, bottom, right, height, width; if (el !== window && el !== getWindowScrollingElement()) { elRect = el.getBoundingClientRect(); top = elRect.top; left = elRect.left; bottom = elRect.bottom; right = elRect.right; height = elRect.height; width = elRect.width; } else { top = 0; left = 0; bottom = window.innerHeight; right = window.innerWidth; height = window.innerHeight; width = window.innerWidth; } if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) { // Adjust for translate() container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312) // Not needed on <= IE11 if (!IE11OrLess) { do { if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) { var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container top -= containerRect.top + parseInt(css(container, 'border-top-width')); left -= containerRect.left + parseInt(css(container, 'border-left-width')); bottom = top + elRect.height; right = left + elRect.width; break; } /* jshint boss:true */ } while (container = container.parentNode); } } if (undoScale && el !== window) { // Adjust for scale() var elMatrix = matrix(container || el), scaleX = elMatrix && elMatrix.a, scaleY = elMatrix && elMatrix.d; if (elMatrix) { top /= scaleY; left /= scaleX; width /= scaleX; height /= scaleY; bottom = top + height; right = left + width; } } return { top: top, left: left, bottom: bottom, right: right, width: width, height: height }; } /** * Checks if a side of an element is scrolled past a side of its parents * @param {HTMLElement} el The element who's side being scrolled out of view is in question * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom') * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom') * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element */ function isScrolledPast(el, elSide, parentSide) { var parent = getParentAutoScrollElement(el, true), elSideVal = getRect(el)[elSide]; /* jshint boss:true */ while (parent) { var parentSideVal = getRect(parent)[parentSide], visible = void 0; if (parentSide === 'top' || parentSide === 'left') { visible = elSideVal >= parentSideVal; } else { visible = elSideVal <= parentSideVal; } if (!visible) return parent; if (parent === getWindowScrollingElement()) break; parent = getParentAutoScrollElement(parent, false); } return false; } /** * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible) * and non-draggable elements * @param {HTMLElement} el The parent element * @param {Number} childNum The index of the child * @param {Object} options Parent Sortable's options * @return {HTMLElement} The child at index childNum, or null if not found */ function getChild(el, childNum, options) { var currentChild = 0, i = 0, children = el.children; while (i < children.length) { if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) { if (currentChild === childNum) { return children[i]; } currentChild++; } i++; } return null; } /** * Gets the last child in the el, ignoring ghostEl or invisible elements (clones) * @param {HTMLElement} el Parent element * @param {selector} selector Any other elements that should be ignored * @return {HTMLElement} The last child, ignoring ghostEl */ function lastChild(el, selector) { var last = el.lastElementChild; while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) { last = last.previousElementSibling; } return last || null; } /** * Returns the index of an element within its parent for a selected set of * elements * @param {HTMLElement} el * @param {selector} selector * @return {number} */ function index(el, selector) { var index = 0; if (!el || !el.parentNode) { return -1; } /* jshint boss:true */ while (el = el.previousElementSibling) { if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) { index++; } } return index; } /** * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements. * The value is returned in real pixels. * @param {HTMLElement} el * @return {Array} Offsets in the format of [left, top] */ function getRelativeScrollOffset(el) { var offsetLeft = 0, offsetTop = 0, winScroller = getWindowScrollingElement(); if (el) { do { var elMatrix = matrix(el), scaleX = elMatrix.a, scaleY = elMatrix.d; offsetLeft += el.scrollLeft * scaleX; offsetTop += el.scrollTop * scaleY; } while (el !== winScroller && (el = el.parentNode)); } return [offsetLeft, offsetTop]; } /** * Returns the index of the object within the given array * @param {Array} arr Array that may or may not hold the object * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find * @return {Number} The index of the object in the array, or -1 */ function indexOfObject(arr, obj) { for (var i in arr) { if (!arr.hasOwnProperty(i)) continue; for (var key in obj) { if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i); } } return -1; } function getParentAutoScrollElement(el, includeSelf) { // skip to window if (!el || !el.getBoundingClientRect) return getWindowScrollingElement(); var elem = el; var gotSelf = false; do { // we don't need to get elem css if it isn't even overflowing in the first place (performance) if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) { var elemCSS = css(elem); if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) { if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement(); if (gotSelf || includeSelf) return elem; gotSelf = true; } } /* jshint boss:true */ } while (elem = elem.parentNode); return getWindowScrollingElement(); } function extend(dst, src) { if (dst && src) { for (var key in src) { if (src.hasOwnProperty(key)) { dst[key] = src[key]; } } } return dst; } function isRectEqual(rect1, rect2) { return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width); } var _throttleTimeout; function throttle(callback, ms) { return function () { if (!_throttleTimeout) { var args = arguments, _this = this; if (args.length === 1) { callback.call(_this, args[0]); } else { callback.apply(_this, args); } _throttleTimeout = setTimeout(function () { _throttleTimeout = void 0; }, ms); } }; } function cancelThrottle() { clearTimeout(_throttleTimeout); _throttleTimeout = void 0; } function scrollBy(el, x, y) { el.scrollLeft += x; el.scrollTop += y; } function clone(el) { var Polymer = window.Polymer; var $ = window.jQuery || window.Zepto; if (Polymer && Polymer.dom) { return Polymer.dom(el).cloneNode(true); } else if ($) { return $(el).clone(true)[0]; } else { return el.cloneNode(true); } } function setRect(el, rect) { css(el, 'position', 'absolute'); css(el, 'top', rect.top); css(el, 'left', rect.left); css(el, 'width', rect.width); css(el, 'height', rect.height); } function unsetRect(el) { css(el, 'position', ''); css(el, 'top', ''); css(el, 'left', ''); css(el, 'width', ''); css(el, 'height', ''); } var expando = 'Sortable' + new Date().getTime(); function AnimationStateManager() { var animationStates = [], animationCallbackId; return { captureAnimationState: function captureAnimationState() { animationStates = []; if (!this.options.animation) return; var children = [].slice.call(this.el.children); children.forEach(function (child) { if (css(child, 'display') === 'none' || child === Sortable.ghost) return; animationStates.push({ target: child, rect: getRect(child) }); var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation if (child.thisAnimationDuration) { var childMatrix = matrix(child, true); if (childMatrix) { fromRect.top -= childMatrix.f; fromRect.left -= childMatrix.e; } } child.fromRect = fromRect; }); }, addAnimationState: function addAnimationState(state) { animationStates.push(state); }, removeAnimationState: function removeAnimationState(target) { animationStates.splice(indexOfObject(animationStates, { target: target }), 1); }, animateAll: function animateAll(callback) { var _this = this; if (!this.options.animation) { clearTimeout(animationCallbackId); if (typeof callback === 'function') callback(); return; } var animating = false, animationTime = 0; animationStates.forEach(function (state) { var time = 0, target = state.target, fromRect = target.fromRect, toRect = getRect(target), prevFromRect = target.prevFromRect, prevToRect = target.prevToRect, animatingRect = state.rect, targetMatrix = matrix(target, true); if (targetMatrix) { // Compensate for current animation toRect.top -= targetMatrix.f; toRect.left -= targetMatrix.e; } target.toRect = toRect; if (target.thisAnimationDuration) { // Could also check if animatingRect is between fromRect and toRect if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) { // If returning to same place as started from animation and on same axis time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options); } } // if fromRect != toRect: animate if (!isRectEqual(toRect, fromRect)) { target.prevFromRect = fromRect; target.prevToRect = toRect; if (!time) { time = _this.options.animation; } _this.animate(target, animatingRect, toRect, time); } if (time) { animating = true; animationTime = Math.max(animationTime, time); clearTimeout(target.animationResetTimer); target.animationResetTimer = setTimeout(function () { target.animationTime = 0; target.prevFromRect = null; target.fromRect = null; target.prevToRect = null; target.thisAnimationDuration = null; }, time); target.thisAnimationDuration = time; } }); clearTimeout(animationCallbackId); if (!animating) { if (typeof callback === 'function') callback(); } else { animationCallbackId = setTimeout(function () { if (typeof callback === 'function') callback(); }, animationTime); } animationStates = []; }, animate: function animate(target, currentRect, toRect, duration) { if (duration) { css(target, 'transition', ''); css(target, 'transform', ''); var elMatrix = matrix(this.el), scaleX = elMatrix && elMatrix.a, scaleY = elMatrix && elMatrix.d, translateX = (currentRect.left - toRect.left) / (scaleX || 1), translateY = (currentRect.top - toRect.top) / (scaleY || 1); target.animatingX = !!translateX; target.animatingY = !!translateY; css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)'); repaint(target); // repaint css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : '')); css(target, 'transform', 'translate3d(0,0,0)'); typeof target.animated === 'number' && clearTimeout(target.animated); target.animated = setTimeout(function () { css(target, 'transition', ''); css(target, 'transform', ''); target.animated = false; target.animatingX = false; target.animatingY = false; }, duration); } } }; } function repaint(target) { return target.offsetWidth; } function calculateRealTime(animatingRect, fromRect, toRect, options) { return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation; } var plugins = []; var defaults = { initializeByDefault: true }; var PluginManager = { mount: function mount(plugin) { // Set default static properties for (var option in defaults) { if (defaults.hasOwnProperty(option) && !(option in plugin)) { plugin[option] = defaults[option]; } } plugins.push(plugin); }, pluginEvent: function pluginEvent(eventName, sortable, evt) { var _this = this; this.eventCanceled = false; evt.cancel = function () { _this.eventCanceled = true; }; var eventNameGlobal = eventName + 'Global'; plugins.forEach(function (plugin) { if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable if (sortable[plugin.pluginName][eventNameGlobal]) { sortable[plugin.pluginName][eventNameGlobal](_objectSpread({ sortable: sortable }, evt)); } // Only fire plugin event if plugin is enabled in this sortable, // and plugin has event defined if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) { sortable[plugin.pluginName][eventName](_objectSpread({ sortable: sortable }, evt)); } }); }, initializePlugins: function initializePlugins(sortable, el, defaults, options) { plugins.forEach(function (plugin) { var pluginName = plugin.pluginName; if (!sortable.options[pluginName] && !plugin.initializeByDefault) return; var initialized = new plugin(sortable, el, sortable.options); initialized.sortable = sortable; initialized.options = sortable.options; sortable[pluginName] = initialized; // Add default options from plugin _extends(defaults, initialized.defaults); }); for (var option in sortable.options) { if (!sortable.options.hasOwnProperty(option)) continue; var modified = this.modifyOption(sortable, option, sortable.options[option]); if (typeof modified !== 'undefined') { sortable.options[option] = modified; } } }, getEventProperties: function getEventProperties(name, sortable) { var eventProperties = {}; plugins.forEach(function (plugin) { if (typeof plugin.eventProperties !== 'function') return; _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name)); }); return eventProperties; }, modifyOption: function modifyOption(sortable, name, value) { var modifiedValue; plugins.forEach(function (plugin) { // Plugin must exist on the Sortable if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') { modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value); } }); return modifiedValue; } }; function dispatchEvent(_ref) { var sortable = _ref.sortable, rootEl = _ref.rootEl, name = _ref.name, targetEl = _ref.targetEl, cloneEl = _ref.cloneEl, toEl = _ref.toEl, fromEl = _ref.fromEl, oldIndex = _ref.oldIndex, newIndex = _ref.newIndex, oldDraggableIndex = _ref.oldDraggableIndex, newDraggableIndex = _ref.newDraggableIndex, originalEvent = _ref.originalEvent, putSortable = _ref.putSortable, extraEventProperties = _ref.extraEventProperties; sortable = sortable || rootEl && rootEl[expando]; if (!sortable) return; var evt, options = sortable.options, onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature if (window.CustomEvent && !IE11OrLess && !Edge) { evt = new CustomEvent(name, { bubbles: true, cancelable: true }); } else { evt = document.createEvent('Event'); evt.initEvent(name, true, true); } evt.to = toEl || rootEl; evt.from = fromEl || rootEl; evt.item = targetEl || rootEl; evt.clone = cloneEl; evt.oldIndex = oldIndex; evt.newIndex = newIndex; evt.oldDraggableIndex = oldDraggableIndex; evt.newDraggableIndex = newDraggableIndex; evt.originalEvent = originalEvent; evt.pullMode = putSortable ? putSortable.lastPutMode : undefined; var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable)); for (var option in allEventProperties) { evt[option] = allEventProperties[option]; } if (rootEl) { rootEl.dispatchEvent(evt); } if (options[onName]) { options[onName].call(sortable, evt); } } var pluginEvent = function pluginEvent(eventName, sortable) { var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, originalEvent = _ref.evt, data = _objectWithoutProperties(_ref, ["evt"]); PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({ dragEl: dragEl, parentEl: parentEl, ghostEl: ghostEl, rootEl: rootEl, nextEl: nextEl, lastDownEl: lastDownEl, cloneEl: cloneEl, cloneHidden: cloneHidden, dragStarted: moved, putSortable: putSortable, activeSortable: Sortable.active, originalEvent: originalEvent, oldIndex: oldIndex, oldDraggableIndex: oldDraggableIndex, newIndex: newIndex, newDraggableIndex: newDraggableIndex, hideGhostForTarget: _hideGhostForTarget, unhideGhostForTarget: _unhideGhostForTarget, cloneNowHidden: function cloneNowHidden() { cloneHidden = true; }, cloneNowShown: function cloneNowShown() { cloneHidden = false; }, dispatchSortableEvent: function dispatchSortableEvent(name) { _dispatchEvent({ sortable: sortable, name: name, originalEvent: originalEvent }); } }, data)); }; function _dispatchEvent(info) { dispatchEvent(_objectSpread({ putSortable: putSortable, cloneEl: cloneEl, targetEl: dragEl, rootEl: rootEl, oldIndex: oldIndex, oldDraggableIndex: oldDraggableIndex, newIndex: newIndex, newDraggableIndex: newDraggableIndex }, info)); } var dragEl, parentEl, ghostEl, rootEl, nextEl, lastDownEl, cloneEl, cloneHidden, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, activeGroup, putSortable, awaitingDragStarted = false, ignoreNextClick = false, sortables = [], tapEvt, touchEvt, lastDx, lastDy, tapDistanceLeft, tapDistanceTop, moved, lastTarget, lastDirection, pastFirstInvertThresh = false, isCircumstantialInvert = false, targetMoveDistance, // For positioning ghost absolutely ghostRelativeParent, ghostRelativeParentInitialScroll = [], // (left, top) _silent = false, savedInputChecked = []; /** @const */ var documentExists = typeof document !== 'undefined', PositionGhostAbsolutely = IOS, CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float', // This will not pass for IE9, because IE9 DnD only works on anchors supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'), supportCssPointerEvents = function () { if (!documentExists) return; // false when <= IE11 if (IE11OrLess) { return false; } var el = document.createElement('x'); el.style.cssText = 'pointer-events:auto'; return el.style.pointerEvents === 'auto'; }(), _detectDirection = function _detectDirection(el, options) { var elCSS = css(el), elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth), child1 = getChild(el, 0, options), child2 = getChild(el, 1, options), firstChildCSS = child1 && css(child1), secondChildCSS = child2 && css(child2), firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width, secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width; if (elCSS.display === 'flex') { return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal'; } if (elCSS.display === 'grid') { return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal'; } if (child1 && firstChildCSS["float"] && firstChildCSS["float"] !== 'none') { var touchingSideChild2 = firstChildCSS["float"] === 'left' ? 'left' : 'right'; return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal'; } return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal'; }, _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) { var dragElS1Opp = vertical ? dragRect.left : dragRect.top, dragElS2Opp = vertical ? dragRect.right : dragRect.bottom, dragElOppLength = vertical ? dragRect.width : dragRect.height, targetS1Opp = vertical ? targetRect.left : targetRect.top, targetS2Opp = vertical ? targetRect.right : targetRect.bottom, targetOppLength = vertical ? targetRect.width : targetRect.height; return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2; }, /** * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold. * @param {Number} x X position * @param {Number} y Y position * @return {HTMLElement} Element of the first found nearest Sortable */ _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) { var ret; sortables.some(function (sortable) { if (lastChild(sortable)) return; var rect = getRect(sortable), threshold = sortable[expando].options.emptyInsertThreshold, insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold, insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold; if (threshold && insideHorizontally && insideVertically) { return ret = sortable; } }); return ret; }, _prepareGroup = function _prepareGroup(options) { function toFn(value, pull) { return function (to, from, dragEl, evt) { var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name; if (value == null && (pull || sameGroup)) { // Default pull value // Default pull and put value if same group return true; } else if (value == null || value === false) { return false; } else if (pull && value === 'clone') { return value; } else if (typeof value === 'function') { return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt); } else { var otherGroup = (pull ? to : from).options.group.name; return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1; } }; } var group = {}; var originalGroup = options.group; if (!originalGroup || _typeof(originalGroup) != 'object') { originalGroup = { name: originalGroup }; } group.name = originalGroup.name; group.checkPull = toFn(originalGroup.pull, true); group.checkPut = toFn(originalGroup.put); group.revertClone = originalGroup.revertClone; options.group = group; }, _hideGhostForTarget = function _hideGhostForTarget() { if (!supportCssPointerEvents && ghostEl) { css(ghostEl, 'display', 'none'); } }, _unhideGhostForTarget = function _unhideGhostForTarget() { if (!supportCssPointerEvents && ghostEl) { css(ghostEl, 'display', ''); } }; // #1184 fix - Prevent click event on fallback if dragged but item not changed position if (documentExists) { document.addEventListener('click', function (evt) { if (ignoreNextClick) { evt.preventDefault(); evt.stopPropagation && evt.stopPropagation(); evt.stopImmediatePropagation && evt.stopImmediatePropagation(); ignoreNextClick = false; return false; } }, true); } var nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) { if (dragEl) { evt = evt.touches ? evt.touches[0] : evt; var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY); if (nearest) { // Create imitation event var event = {}; for (var i in evt) { if (evt.hasOwnProperty(i)) { event[i] = evt[i]; } } event.target = event.rootEl = nearest; event.preventDefault = void 0; event.stopPropagation = void 0; nearest[expando]._onDragOver(event); } } }; var _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) { if (dragEl) { dragEl.parentNode[expando]._isOutsideThisEl(evt.target); } }; /** * @class Sortable * @param {HTMLElement} el * @param {Object} [options] */ function Sortable(el, options) { if (!(el && el.nodeType && el.nodeType === 1)) { throw "Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(el)); } this.el = el; // root element this.options = options = _extends({}, options); // Export instance el[expando] = this; var defaults = { group: null, sort: true, disabled: false, store: null, handle: null, draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*', swapThreshold: 1, // percentage; 0 <= x <= 1 invertSwap: false, // invert always invertedSwapThreshold: null, // will be set to same as swapThreshold if default removeCloneOnHide: true, direction: function direction() { return _detectDirection(el, this.options); }, ghostClass: 'sortable-ghost', chosenClass: 'sortable-chosen', dragClass: 'sortable-drag', ignore: 'a, img', filter: null, preventOnFilter: true, animation: 0, easing: null, setData: function setData(dataTransfer, dragEl) { dataTransfer.setData('Text', dragEl.textContent); }, dropBubble: false, dragoverBubble: false, dataIdAttr: 'data-id', delay: 0, delayOnTouchOnly: false, touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1, forceFallback: false, fallbackClass: 'sortable-fallback', fallbackOnBody: false, fallbackTolerance: 0, fallbackOffset: { x: 0, y: 0 }, supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window, emptyInsertThreshold: 5 }; PluginManager.initializePlugins(this, el, defaults); // Set default options for (var name in defaults) { !(name in options) && (options[name] = defaults[name]); } _prepareGroup(options); // Bind all private methods for (var fn in this) { if (fn.charAt(0) === '_' && typeof this[fn] === 'function') { this[fn] = this[fn].bind(this); } } // Setup drag mode this.nativeDraggable = options.forceFallback ? false : supportDraggable; if (this.nativeDraggable) { // Touch start threshold cannot be greater than the native dragstart threshold this.options.touchStartThreshold = 1; } // Bind events if (options.supportPointer) { on(el, 'pointerdown', this._onTapStart); } else { on(el, 'mousedown', this._onTapStart); on(el, 'touchstart', this._onTapStart); } if (this.nativeDraggable) { on(el, 'dragover', this); on(el, 'dragenter', this); } sortables.push(this.el); // Restore sorting options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager _extends(this, AnimationStateManager()); } Sortable.prototype = /** @lends Sortable.prototype */ { constructor: Sortable, _isOutsideThisEl: function _isOutsideThisEl(target) { if (!this.el.contains(target) && target !== this.el) { lastTarget = null; } }, _getDirection: function _getDirection(evt, target) { return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction; }, _onTapStart: function _onTapStart( /** Event|TouchEvent */ evt) { if (!evt.cancelable) return; var _this = this, el = this.el, options = this.options, preventOnFilter = options.preventOnFilter, type = evt.type, touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt, target = (touch || evt).target, originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target, filter = options.filter; _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group. if (dragEl) { return; } if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) { return; // only left button and enabled } // cancel dnd if original target is content editable if (originalTarget.isContentEditable) { return; } target = closest(target, options.draggable, el, false); if (target && target.animated) { return; } if (lastDownEl === target) { // Ignoring duplicate `down` return; } // Get the index of the dragged element within its parent oldIndex = index(target); oldDraggableIndex = index(target, options.draggable); // Check filter if (typeof filter === 'function') { if (filter.call(this, evt, target, this)) { _dispatchEvent({ sortable: _this, rootEl: originalTarget, name: 'filter', targetEl: target, toEl: el, fromEl: el }); pluginEvent('filter', _this, { evt: evt }); preventOnFilter && evt.cancelable && evt.preventDefault(); return; // cancel dnd } } else if (filter) { filter = filter.split(',').some(function (criteria) { criteria = closest(originalTarget, criteria.trim(), el, false); if (criteria) { _dispatchEvent({ sortable: _this, rootEl: criteria, name: 'filter', targetEl: target, fromEl: el, toEl: el }); pluginEvent('filter', _this, { evt: evt }); return true; } }); if (filter) { preventOnFilter && evt.cancelable && evt.preventDefault(); return; // cancel dnd } } if (options.handle && !closest(originalTarget, options.handle, el, false)) { return; } // Prepare `dragstart` this._prepareDragStart(evt, touch, target); }, _prepareDragStart: function _prepareDragStart( /** Event */ evt, /** Touch */ touch, /** HTMLElement */ target) { var _this = this, el = _this.el, options = _this.options, ownerDocument = el.ownerDocument, dragStartFn; if (target && !dragEl && target.parentNode === el) { var dragRect = getRect(target); rootEl = el; dragEl = target; parentEl = dragEl.parentNode; nextEl = dragEl.nextSibling; lastDownEl = target; activeGroup = options.group; Sortable.dragged = dragEl; tapEvt = { target: dragEl, clientX: (touch || evt).clientX, clientY: (touch || evt).clientY }; tapDistanceLeft = tapEvt.clientX - dragRect.left; tapDistanceTop = tapEvt.clientY - dragRect.top; this._lastX = (touch || evt).clientX; this._lastY = (touch || evt).clientY; dragEl.style['will-change'] = 'all'; dragStartFn = function dragStartFn() { pluginEvent('delayEnded', _this, { evt: evt }); if (Sortable.eventCanceled) { _this._onDrop(); return; } // Delayed drag has been triggered // we can re-enable the events: touchmove/mousemove _this._disableDelayedDragEvents(); if (!FireFox && _this.nativeDraggable) { dragEl.draggable = true; } // Bind the events: dragstart/dragend _this._triggerDragStart(evt, touch); // Drag start event _dispatchEvent({ sortable: _this, name: 'choose', originalEvent: evt }); // Chosen item toggleClass(dragEl, options.chosenClass, true); }; // Disable "draggable" options.ignore.split(',').forEach(function (criteria) { find(dragEl, criteria.trim(), _disableDraggable); }); on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent); on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent); on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent); on(ownerDocument, 'mouseup', _this._onDrop); on(ownerDocument, 'touchend', _this._onDrop); on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox) if (FireFox && this.nativeDraggable) { this.options.touchStartThreshold = 4; dragEl.draggable = true; } pluginEvent('delayStart', this, { evt: evt }); // Delay is impossible for native DnD in Edge or IE if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) { if (Sortable.eventCanceled) { this._onDrop(); return; } // If the user moves the pointer or let go the click or touch // before the delay has been reached: // disable the delayed drag on(ownerDocument, 'mouseup', _this._disableDelayedDrag); on(ownerDocument, 'touchend', _this._disableDelayedDrag); on(ownerDocument, 'touchcancel', _this._disableDelayedDrag); on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler); on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler); options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler); _this._dragStartTimer = setTimeout(dragStartFn, options.delay); } else { dragStartFn(); } } }, _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/ e) { var touch = e.touches ? e.touches[0] : e; if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) { this._disableDelayedDrag(); } }, _disableDelayedDrag: function _disableDelayedDrag() { dragEl && _disableDraggable(dragEl); clearTimeout(this._dragStartTimer); this._disableDelayedDragEvents(); }, _disableDelayedDragEvents: function _disableDelayedDragEvents() { var ownerDocument = this.el.ownerDocument; off(ownerDocument, 'mouseup', this._disableDelayedDrag); off(ownerDocument, 'touchend', this._disableDelayedDrag); off(ownerDocument, 'touchcancel', this._disableDelayedDrag); off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler); off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler); off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler); }, _triggerDragStart: function _triggerDragStart( /** Event */ evt, /** Touch */ touch) { touch = touch || evt.pointerType == 'touch' && evt; if (!this.nativeDraggable || touch) { if (this.options.supportPointer) { on(document, 'pointermove', this._onTouchMove); } else if (touch) { on(document, 'touchmove', this._onTouchMove); } else { on(document, 'mousemove', this._onTouchMove); } } else { on(dragEl, 'dragend', this); on(rootEl, 'dragstart', this._onDragStart); } try { if (document.selection) { // Timeout neccessary for IE9 _nextTick(function () { document.selection.empty(); }); } else { window.getSelection().removeAllRanges(); } } catch (err) {} }, _dragStarted: function _dragStarted(fallback, evt) { awaitingDragStarted = false; if (rootEl && dragEl) { pluginEvent('dragStarted', this, { evt: evt }); if (this.nativeDraggable) { on(document, 'dragover', _checkOutsideTargetEl); } var options = this.options; // Apply effect !fallback && toggleClass(dragEl, options.dragClass, false); toggleClass(dragEl, options.ghostClass, true); Sortable.active = this; fallback && this._appendGhost(); // Drag start event _dispatchEvent({ sortable: this, name: 'start', originalEvent: evt }); } else { this._nulling(); } }, _emulateDragOver: function _emulateDragOver() { if (touchEvt) { this._lastX = touchEvt.clientX; this._lastY = touchEvt.clientY; _hideGhostForTarget(); var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY); var parent = target; while (target && target.shadowRoot) { target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY); if (target === parent) break; parent = target; } dragEl.parentNode[expando]._isOutsideThisEl(target); if (parent) { do { if (parent[expando]) { var inserted = void 0; inserted = parent[expando]._onDragOver({ clientX: touchEvt.clientX, clientY: touchEvt.clientY, target: target, rootEl: parent }); if (inserted && !this.options.dragoverBubble) { break; } } target = parent; // store last element } /* jshint boss:true */ while (parent = parent.parentNode); } _unhideGhostForTarget(); } }, _onTouchMove: function _onTouchMove( /**TouchEvent*/ evt) { if (tapEvt) { var options = this.options, fallbackTolerance = options.fallbackTolerance, fallbackOffset = options.fallbackOffset, touch = evt.touches ? evt.touches[0] : evt, ghostMatrix = ghostEl && matrix(ghostEl, true), scaleX = ghostEl && ghostMatrix && ghostMatrix.a, scaleY = ghostEl && ghostMatrix && ghostMatrix.d, relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent), dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1), dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging if (!Sortable.active && !awaitingDragStarted) { if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) { return; } this._onDragStart(evt, true); } if (ghostEl) { if (ghostMatrix) { ghostMatrix.e += dx - (lastDx || 0); ghostMatrix.f += dy - (lastDy || 0); } else { ghostMatrix = { a: 1, b: 0, c: 0, d: 1, e: dx, f: dy }; } var cssMatrix = "matrix(".concat(ghostMatrix.a, ",").concat(ghostMatrix.b, ",").concat(ghostMatrix.c, ",").concat(ghostMatrix.d, ",").concat(ghostMatrix.e, ",").concat(ghostMatrix.f, ")"); css(ghostEl, 'webkitTransform', cssMatrix); css(ghostEl, 'mozTransform', cssMatrix); css(ghostEl, 'msTransform', cssMatrix); css(ghostEl, 'transform', cssMatrix); lastDx = dx; lastDy = dy; touchEvt = touch; } evt.cancelable && evt.preventDefault(); } }, _appendGhost: function _appendGhost() { // Bug if using scale(): https://stackoverflow.com/questions/2637058 // Not being adjusted for if (!ghostEl) { var container = this.options.fallbackOnBody ? document.body : rootEl, rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container), options = this.options; // Position absolutely if (PositionGhostAbsolutely) { // Get relatively positioned parent ghostRelativeParent = container; while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) { ghostRelativeParent = ghostRelativeParent.parentNode; } if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) { if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement(); rect.top += ghostRelativeParent.scrollTop; rect.left += ghostRelativeParent.scrollLeft; } else { ghostRelativeParent = getWindowScrollingElement(); } ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent); } ghostEl = dragEl.cloneNode(true); toggleClass(ghostEl, options.ghostClass, false); toggleClass(ghostEl, options.fallbackClass, true); toggleClass(ghostEl, options.dragClass, true); css(ghostEl, 'transition', ''); css(ghostEl, 'transform', ''); css(ghostEl, 'box-sizing', 'border-box'); css(ghostEl, 'margin', 0); css(ghostEl, 'top', rect.top); css(ghostEl, 'left', rect.left); css(ghostEl, 'width', rect.width); css(ghostEl, 'height', rect.height); css(ghostEl, 'opacity', '0.8'); css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed'); css(ghostEl, 'zIndex', '100000'); css(ghostEl, 'pointerEvents', 'none'); Sortable.ghost = ghostEl; container.appendChild(ghostEl); // Set transform-origin css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%'); } }, _onDragStart: function _onDragStart( /**Event*/ evt, /**boolean*/ fallback) { var _this = this; var dataTransfer = evt.dataTransfer; var options = _this.options; pluginEvent('dragStart', this, { evt: evt }); if (Sortable.eventCanceled) { this._onDrop(); return; } pluginEvent('setupClone', this); if (!Sortable.eventCanceled) { cloneEl = clone(dragEl); cloneEl.draggable = false; cloneEl.style['will-change'] = ''; this._hideClone(); toggleClass(cloneEl, this.options.chosenClass, false); Sortable.clone = cloneEl; } // #1143: IFrame support workaround _this.cloneId = _nextTick(function () { pluginEvent('clone', _this); if (Sortable.eventCanceled) return; if (!_this.options.removeCloneOnHide) { rootEl.insertBefore(cloneEl, dragEl); } _this._hideClone(); _dispatchEvent({ sortable: _this, name: 'clone' }); }); !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events if (fallback) { ignoreNextClick = true; _this._loopId = setInterval(_this._emulateDragOver, 50); } else { // Undo what was set in _prepareDragStart before drag started off(document, 'mouseup', _this._onDrop); off(document, 'touchend', _this._onDrop); off(document, 'touchcancel', _this._onDrop); if (dataTransfer) { dataTransfer.effectAllowed = 'move'; options.setData && options.setData.call(_this, dataTransfer, dragEl); } on(document, 'drop', _this); // #1276 fix: css(dragEl, 'transform', 'translateZ(0)'); } awaitingDragStarted = true; _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt)); on(document, 'selectstart', _this); moved = true; if (Safari) { css(document.body, 'user-select', 'none'); } }, // Returns true - if no further action is needed (either inserted or another condition) _onDragOver: function _onDragOver( /**Event*/ evt) { var el = this.el, target = evt.target, dragRect, targetRect, revert, options = this.options, group = options.group, activeSortable = Sortable.active, isOwner = activeGroup === group, canSort = options.sort, fromSortable = putSortable || activeSortable, vertical, _this = this, completedFired = false; if (_silent) return; function dragOverEvent(name, extra) { pluginEvent(name, _this, _objectSpread({ evt: evt, isOwner: isOwner, axis: vertical ? 'vertical' : 'horizontal', revert: revert, dragRect: dragRect, targetRect: targetRect, canSort: canSort, fromSortable: fromSortable, target: target, completed: completed, onMove: function onMove(target, after) { return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after); }, changed: changed }, extra)); } // Capture animation state function capture() { dragOverEvent('dragOverAnimationCapture'); _this.captureAnimationState(); if (_this !== fromSortable) { fromSortable.captureAnimationState(); } } // Return invocation when dragEl is inserted (or completed) function completed(insertion) { dragOverEvent('dragOverCompleted', { insertion: insertion }); if (insertion) { // Clones must be hidden before folding animation to capture dragRectAbsolute properly if (isOwner) { activeSortable._hideClone(); } else { activeSortable._showClone(_this); } if (_this !== fromSortable) { // Set ghost class to new sortable's ghost class toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false); toggleClass(dragEl, options.ghostClass, true); } if (putSortable !== _this && _this !== Sortable.active) { putSortable = _this; } else if (_this === Sortable.active && putSortable) { putSortable = null; } // Animation if (fromSortable === _this) { _this._ignoreWhileAnimating = target; } _this.animateAll(function () { dragOverEvent('dragOverAnimationComplete'); _this._ignoreWhileAnimating = null; }); if (_this !== fromSortable) { fromSortable.animateAll(); fromSortable._ignoreWhileAnimating = null; } } // Null lastTarget if it is not inside a previously swapped element if (target === dragEl && !dragEl.animated || target === el && !target.animated) { lastTarget = null; } // no bubbling and not fallback if (!options.dragoverBubble && !evt.rootEl && target !== document) { dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted !insertion && nearestEmptyInsertDetectEvent(evt); } !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation(); return completedFired = true; } // Call when dragEl has been inserted function changed() { newIndex = index(dragEl); newDraggableIndex = index(dragEl, options.draggable); _dispatchEvent({ sortable: _this, name: 'change', toEl: el, newIndex: newIndex, newDraggableIndex: newDraggableIndex, originalEvent: evt }); } if (evt.preventDefault !== void 0) { evt.cancelable && evt.preventDefault(); } target = closest(target, options.draggable, el, true); dragOverEvent('dragOver'); if (Sortable.eventCanceled) return completedFired; if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) { return completed(false); } ignoreNextClick = false; if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) { vertical = this._getDirection(evt, target) === 'vertical'; dragRect = getRect(dragEl); dragOverEvent('dragOverValid'); if (Sortable.eventCanceled) return completedFired; if (revert) { parentEl = rootEl; // actualization capture(); this._hideClone(); dragOverEvent('revert'); if (!Sortable.eventCanceled) { if (nextEl) { rootEl.insertBefore(dragEl, nextEl); } else { rootEl.appendChild(dragEl); } } return completed(true); } var elLastChild = lastChild(el, options.draggable); if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) { // If already at end of list: Do not insert if (elLastChild === dragEl) { return completed(false); } // assign target only if condition is true if (elLastChild && el === evt.target) { target = elLastChild; } if (target) { targetRect = getRect(target); } if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) { capture(); el.appendChild(dragEl); parentEl = el; // actualization changed(); return completed(true); } } else if (target.parentNode === el) { targetRect = getRect(target); var direction = 0, targetBeforeFirstSwap, differentLevel = dragEl.parentNode !== el, differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical), side1 = vertical ? 'top' : 'left', scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'), scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0; if (lastTarget !== target) { targetBeforeFirstSwap = targetRect[side1]; pastFirstInvertThresh = false; isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel; } direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target); var sibling; if (direction !== 0) { // Check if target is beside dragEl in respective direction (ignoring hidden elements) var dragIndex = index(dragEl); do { dragIndex -= direction; sibling = parentEl.children[dragIndex]; } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl)); } // If dragEl is already beside target: Do not insert if (direction === 0 || sibling === target) { return completed(false); } lastTarget = target; lastDirection = direction; var nextSibling = target.nextElementSibling, after = false; after = direction === 1; var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after); if (moveVector !== false) { if (moveVector === 1 || moveVector === -1) { after = moveVector === 1; } _silent = true; setTimeout(_unsilent, 30); capture(); if (after && !nextSibling) { el.appendChild(dragEl); } else { target.parentNode.insertBefore(dragEl, after ? nextSibling : target); } // Undo chrome's scroll adjustment (has no effect on other browsers) if (scrolledPastTop) { scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop); } parentEl = dragEl.parentNode; // actualization // must be done before animation if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) { targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]); } changed(); return completed(true); } } if (el.contains(dragEl)) { return completed(false); } } return false; }, _ignoreWhileAnimating: null, _offMoveEvents: function _offMoveEvents() { off(document, 'mousemove', this._onTouchMove); off(document, 'touchmove', this._onTouchMove); off(document, 'pointermove', this._onTouchMove); off(document, 'dragover', nearestEmptyInsertDetectEvent); off(document, 'mousemove', nearestEmptyInsertDetectEvent); off(document, 'touchmove', nearestEmptyInsertDetectEvent); }, _offUpEvents: function _offUpEvents() { var ownerDocument = this.el.ownerDocument; off(ownerDocument, 'mouseup', this._onDrop); off(ownerDocument, 'touchend', this._onDrop); off(ownerDocument, 'pointerup', this._onDrop); off(ownerDocument, 'touchcancel', this._onDrop); off(document, 'selectstart', this); }, _onDrop: function _onDrop( /**Event*/ evt) { var el = this.el, options = this.options; // Get the index of the dragged element within its parent newIndex = index(dragEl); newDraggableIndex = index(dragEl, options.draggable); pluginEvent('drop', this, { evt: evt }); parentEl = dragEl && dragEl.parentNode; // Get again after plugin event newIndex = index(dragEl); newDraggableIndex = index(dragEl, options.draggable); if (Sortable.eventCanceled) { this._nulling(); return; } awaitingDragStarted = false; isCircumstantialInvert = false; pastFirstInvertThresh = false; clearInterval(this._loopId); clearTimeout(this._dragStartTimer); _cancelNextTick(this.cloneId); _cancelNextTick(this._dragStartId); // Unbind events if (this.nativeDraggable) { off(document, 'drop', this); off(el, 'dragstart', this._onDragStart); } this._offMoveEvents(); this._offUpEvents(); if (Safari) { css(document.body, 'user-select', ''); } css(dragEl, 'transform', ''); if (evt) { if (moved) { evt.cancelable && evt.preventDefault(); !options.dropBubble && evt.stopPropagation(); } ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl); if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') { // Remove clone(s) cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl); } if (dragEl) { if (this.nativeDraggable) { off(dragEl, 'dragend', this); } _disableDraggable(dragEl); dragEl.style['will-change'] = ''; // Remove classes // ghostClass is added in dragStarted if (moved && !awaitingDragStarted) { toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false); } toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event _dispatchEvent({ sortable: this, name: 'unchoose', toEl: parentEl, newIndex: null, newDraggableIndex: null, originalEvent: evt }); if (rootEl !== parentEl) { if (newIndex >= 0) { // Add event _dispatchEvent({ rootEl: parentEl, name: 'add', toEl: parentEl, fromEl: rootEl, originalEvent: evt }); // Remove event _dispatchEvent({ sortable: this, name: 'remove', toEl: parentEl, originalEvent: evt }); // drag from one list and drop into another _dispatchEvent({ rootEl: parentEl, name: 'sort', toEl: parentEl, fromEl: rootEl, originalEvent: evt }); _dispatchEvent({ sortable: this, name: 'sort', toEl: parentEl, originalEvent: evt }); } putSortable && putSortable.save(); } else { if (newIndex !== oldIndex) { if (newIndex >= 0) { // drag & drop within the same list _dispatchEvent({ sortable: this, name: 'update', toEl: parentEl, originalEvent: evt }); _dispatchEvent({ sortable: this, name: 'sort', toEl: parentEl, originalEvent: evt }); } } } if (Sortable.active) { /* jshint eqnull:true */ if (newIndex == null || newIndex === -1) { newIndex = oldIndex; newDraggableIndex = oldDraggableIndex; } _dispatchEvent({ sortable: this, name: 'end', toEl: parentEl, originalEvent: evt }); // Save sorting this.save(); } } } this._nulling(); }, _nulling: function _nulling() { pluginEvent('nulling', this); rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null; savedInputChecked.forEach(function (el) { el.checked = true; }); savedInputChecked.length = lastDx = lastDy = 0; }, handleEvent: function handleEvent( /**Event*/ evt) { switch (evt.type) { case 'drop': case 'dragend': this._onDrop(evt); break; case 'dragenter': case 'dragover': if (dragEl) { this._onDragOver(evt); _globalDragOver(evt); } break; case 'selectstart': evt.preventDefault(); break; } }, /** * Serializes the item into an array of string. * @returns {String[]} */ toArray: function toArray() { var order = [], el, children = this.el.children, i = 0, n = children.length, options = this.options; for (; i < n; i++) { el = children[i]; if (closest(el, options.draggable, this.el, false)) { order.push(el.getAttribute(options.dataIdAttr) || _generateId(el)); } } return order; }, /** * Sorts the elements according to the array. * @param {String[]} order order of the items */ sort: function sort(order) { var items = {}, rootEl = this.el; this.toArray().forEach(function (id, i) { var el = rootEl.children[i]; if (closest(el, this.options.draggable, rootEl, false)) { items[id] = el; } }, this); order.forEach(function (id) { if (items[id]) { rootEl.removeChild(items[id]); rootEl.appendChild(items[id]); } }); }, /** * Save the current sorting */ save: function save() { var store = this.options.store; store && store.set && store.set(this); }, /** * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. * @param {HTMLElement} el * @param {String} [selector] default: `options.draggable` * @returns {HTMLElement|null} */ closest: function closest$1(el, selector) { return closest(el, selector || this.options.draggable, this.el, false); }, /** * Set/get option * @param {string} name * @param {*} [value] * @returns {*} */ option: function option(name, value) { var options = this.options; if (value === void 0) { return options[name]; } else { var modifiedValue = PluginManager.modifyOption(this, name, value); if (typeof modifiedValue !== 'undefined') { options[name] = modifiedValue; } else { options[name] = value; } if (name === 'group') { _prepareGroup(options); } } }, /** * Destroy */ destroy: function destroy() { pluginEvent('destroy', this); var el = this.el; el[expando] = null; off(el, 'mousedown', this._onTapStart); off(el, 'touchstart', this._onTapStart); off(el, 'pointerdown', this._onTapStart); if (this.nativeDraggable) { off(el, 'dragover', this); off(el, 'dragenter', this); } // Remove draggable attributes Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) { el.removeAttribute('draggable'); }); this._onDrop(); this._disableDelayedDragEvents(); sortables.splice(sortables.indexOf(this.el), 1); this.el = el = null; }, _hideClone: function _hideClone() { if (!cloneHidden) { pluginEvent('hideClone', this); if (Sortable.eventCanceled) return; css(cloneEl, 'display', 'none'); if (this.options.removeCloneOnHide && cloneEl.parentNode) { cloneEl.parentNode.removeChild(cloneEl); } cloneHidden = true; } }, _showClone: function _showClone(putSortable) { if (putSortable.lastPutMode !== 'clone') { this._hideClone(); return; } if (cloneHidden) { pluginEvent('showClone', this); if (Sortable.eventCanceled) return; // show clone at dragEl or original position if (rootEl.contains(dragEl) && !this.options.group.revertClone) { rootEl.insertBefore(cloneEl, dragEl); } else if (nextEl) { rootEl.insertBefore(cloneEl, nextEl); } else { rootEl.appendChild(cloneEl); } if (this.options.group.revertClone) { this.animate(dragEl, cloneEl); } css(cloneEl, 'display', ''); cloneHidden = false; } } }; function _globalDragOver( /**Event*/ evt) { if (evt.dataTransfer) { evt.dataTransfer.dropEffect = 'move'; } evt.cancelable && evt.preventDefault(); } function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) { var evt, sortable = fromEl[expando], onMoveFn = sortable.options.onMove, retVal; // Support for new CustomEvent feature if (window.CustomEvent && !IE11OrLess && !Edge) { evt = new CustomEvent('move', { bubbles: true, cancelable: true }); } else { evt = document.createEvent('Event'); evt.initEvent('move', true, true); } evt.to = toEl; evt.from = fromEl; evt.dragged = dragEl; evt.draggedRect = dragRect; evt.related = targetEl || toEl; evt.relatedRect = targetRect || getRect(toEl); evt.willInsertAfter = willInsertAfter; evt.originalEvent = originalEvent; fromEl.dispatchEvent(evt); if (onMoveFn) { retVal = onMoveFn.call(sortable, evt, originalEvent); } return retVal; } function _disableDraggable(el) { el.draggable = false; } function _unsilent() { _silent = false; } function _ghostIsLast(evt, vertical, sortable) { var rect = getRect(lastChild(sortable.el, sortable.options.draggable)); var spacer = 10; return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer; } function _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) { var mouseOnAxis = vertical ? evt.clientY : evt.clientX, targetLength = vertical ? targetRect.height : targetRect.width, targetS1 = vertical ? targetRect.top : targetRect.left, targetS2 = vertical ? targetRect.bottom : targetRect.right, invert = false; if (!invertSwap) { // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) { // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2 // check if past first invert threshold on side opposite of lastDirection if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) { // past first invert threshold, do not restrict inverted threshold to dragEl shadow pastFirstInvertThresh = true; } if (!pastFirstInvertThresh) { // dragEl shadow (target move distance shadow) if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow : mouseOnAxis > targetS2 - targetMoveDistance) { return -lastDirection; } } else { invert = true; } } else { // Regular if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) { return _getInsertDirection(target); } } } invert = invert || invertSwap; if (invert) { // Invert of regular if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) { return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1; } } return 0; } /** * Gets the direction dragEl must be swapped relative to target in order to make it * seem that dragEl has been "inserted" into that element's position * @param {HTMLElement} target The target whose position dragEl is being inserted at * @return {Number} Direction dragEl must be swapped */ function _getInsertDirection(target) { if (index(dragEl) < index(target)) { return 1; } else { return -1; } } /** * Generate id * @param {HTMLElement} el * @returns {String} * @private */ function _generateId(el) { var str = el.tagName + el.className + el.src + el.href + el.textContent, i = str.length, sum = 0; while (i--) { sum += str.charCodeAt(i); } return sum.toString(36); } function _saveInputCheckedState(root) { savedInputChecked.length = 0; var inputs = root.getElementsByTagName('input'); var idx = inputs.length; while (idx--) { var el = inputs[idx]; el.checked && savedInputChecked.push(el); } } function _nextTick(fn) { return setTimeout(fn, 0); } function _cancelNextTick(id) { return clearTimeout(id); } // Fixed #973: if (documentExists) { on(document, 'touchmove', function (evt) { if ((Sortable.active || awaitingDragStarted) && evt.cancelable) { evt.preventDefault(); } }); } // Export utils Sortable.utils = { on: on, off: off, css: css, find: find, is: function is(el, selector) { return !!closest(el, selector, el, false); }, extend: extend, throttle: throttle, closest: closest, toggleClass: toggleClass, clone: clone, index: index, nextTick: _nextTick, cancelNextTick: _cancelNextTick, detectDirection: _detectDirection, getChild: getChild }; /** * Get the Sortable instance of an element * @param {HTMLElement} element The element * @return {Sortable|undefined} The instance of Sortable */ Sortable.get = function (element) { return element[expando]; }; /** * Mount a plugin to Sortable * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted */ Sortable.mount = function () { for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) { plugins[_key] = arguments[_key]; } if (plugins[0].constructor === Array) plugins = plugins[0]; plugins.forEach(function (plugin) { if (!plugin.prototype || !plugin.prototype.constructor) { throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(plugin)); } if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils); PluginManager.mount(plugin); }); }; /** * Create sortable instance * @param {HTMLElement} el * @param {Object} [options] */ Sortable.create = function (el, options) { return new Sortable(el, options); }; // Export Sortable.version = version; var autoScrolls = [], scrollEl, scrollRootEl, scrolling = false, lastAutoScrollX, lastAutoScrollY, touchEvt$1, pointerElemChangedInterval; function AutoScrollPlugin() { function AutoScroll() { this.defaults = { scroll: true, scrollSensitivity: 30, scrollSpeed: 10, bubbleScroll: true }; // Bind all private methods for (var fn in this) { if (fn.charAt(0) === '_' && typeof this[fn] === 'function') { this[fn] = this[fn].bind(this); } } } AutoScroll.prototype = { dragStarted: function dragStarted(_ref) { var originalEvent = _ref.originalEvent; if (this.sortable.nativeDraggable) { on(document, 'dragover', this._handleAutoScroll); } else { if (this.options.supportPointer) { on(document, 'pointermove', this._handleFallbackAutoScroll); } else if (originalEvent.touches) { on(document, 'touchmove', this._handleFallbackAutoScroll); } else { on(document, 'mousemove', this._handleFallbackAutoScroll); } } }, dragOverCompleted: function dragOverCompleted(_ref2) { var originalEvent = _ref2.originalEvent; // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached) if (!this.options.dragOverBubble && !originalEvent.rootEl) { this._handleAutoScroll(originalEvent); } }, drop: function drop() { if (this.sortable.nativeDraggable) { off(document, 'dragover', this._handleAutoScroll); } else { off(document, 'pointermove', this._handleFallbackAutoScroll); off(document, 'touchmove', this._handleFallbackAutoScroll); off(document, 'mousemove', this._handleFallbackAutoScroll); } clearPointerElemChangedInterval(); clearAutoScrolls(); cancelThrottle(); }, nulling: function nulling() { touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null; autoScrolls.length = 0; }, _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) { this._handleAutoScroll(evt, true); }, _handleAutoScroll: function _handleAutoScroll(evt, fallback) { var _this = this; var x = (evt.touches ? evt.touches[0] : evt).clientX, y = (evt.touches ? evt.touches[0] : evt).clientY, elem = document.elementFromPoint(x, y); touchEvt$1 = evt; // IE does not seem to have native autoscroll, // Edge's autoscroll seems too conditional, // MACOS Safari does not have autoscroll, // Firefox and Chrome are good if (fallback || Edge || IE11OrLess || Safari) { autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change var ogElemScroller = getParentAutoScrollElement(elem, true); if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) { pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour pointerElemChangedInterval = setInterval(function () { var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true); if (newElem !== ogElemScroller) { ogElemScroller = newElem; clearAutoScrolls(); } autoScroll(evt, _this.options, newElem, fallback); }, 10); lastAutoScrollX = x; lastAutoScrollY = y; } } else { // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) { clearAutoScrolls(); return; } autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false); } } }; return _extends(AutoScroll, { pluginName: 'scroll', initializeByDefault: true }); } function clearAutoScrolls() { autoScrolls.forEach(function (autoScroll) { clearInterval(autoScroll.pid); }); autoScrolls = []; } function clearPointerElemChangedInterval() { clearInterval(pointerElemChangedInterval); } var autoScroll = throttle(function (evt, options, rootEl, isFallback) { // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521 if (!options.scroll) return; var x = (evt.touches ? evt.touches[0] : evt).clientX, y = (evt.touches ? evt.touches[0] : evt).clientY, sens = options.scrollSensitivity, speed = options.scrollSpeed, winScroller = getWindowScrollingElement(); var scrollThisInstance = false, scrollCustomFn; // New scroll root, set scrollEl if (scrollRootEl !== rootEl) { scrollRootEl = rootEl; clearAutoScrolls(); scrollEl = options.scroll; scrollCustomFn = options.scrollFn; if (scrollEl === true) { scrollEl = getParentAutoScrollElement(rootEl, true); } } var layersOut = 0; var currentParent = scrollEl; do { var el = currentParent, rect = getRect(el), top = rect.top, bottom = rect.bottom, left = rect.left, right = rect.right, width = rect.width, height = rect.height, canScrollX = void 0, canScrollY = void 0, scrollWidth = el.scrollWidth, scrollHeight = el.scrollHeight, elCSS = css(el), scrollPosX = el.scrollLeft, scrollPosY = el.scrollTop; if (el === winScroller) { canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible'); canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible'); } else { canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll'); canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll'); } var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX); var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY); if (!autoScrolls[layersOut]) { for (var i = 0; i <= layersOut; i++) { if (!autoScrolls[i]) { autoScrolls[i] = {}; } } } if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) { autoScrolls[layersOut].el = el; autoScrolls[layersOut].vx = vx; autoScrolls[layersOut].vy = vy; clearInterval(autoScrolls[layersOut].pid); if (vx != 0 || vy != 0) { scrollThisInstance = true; /* jshint loopfunc:true */ autoScrolls[layersOut].pid = setInterval(function () { // emulate drag over during autoscroll (fallback), emulating native DnD behaviour if (isFallback && this.layer === 0) { Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely } var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0; var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0; if (typeof scrollCustomFn === 'function') { if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') { return; } } scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY); }.bind({ layer: layersOut }), 24); } } layersOut++; } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false))); scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not }, 30); var drop = function drop(_ref) { var originalEvent = _ref.originalEvent, putSortable = _ref.putSortable, dragEl = _ref.dragEl, activeSortable = _ref.activeSortable, dispatchSortableEvent = _ref.dispatchSortableEvent, hideGhostForTarget = _ref.hideGhostForTarget, unhideGhostForTarget = _ref.unhideGhostForTarget; if (!originalEvent) return; var toSortable = putSortable || activeSortable; hideGhostForTarget(); var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent; var target = document.elementFromPoint(touch.clientX, touch.clientY); unhideGhostForTarget(); if (toSortable && !toSortable.el.contains(target)) { dispatchSortableEvent('spill'); this.onSpill({ dragEl: dragEl, putSortable: putSortable }); } }; function Revert() {} Revert.prototype = { startIndex: null, dragStart: function dragStart(_ref2) { var oldDraggableIndex = _ref2.oldDraggableIndex; this.startIndex = oldDraggableIndex; }, onSpill: function onSpill(_ref3) { var dragEl = _ref3.dragEl, putSortable = _ref3.putSortable; this.sortable.captureAnimationState(); if (putSortable) { putSortable.captureAnimationState(); } var nextSibling = getChild(this.sortable.el, this.startIndex, this.options); if (nextSibling) { this.sortable.el.insertBefore(dragEl, nextSibling); } else { this.sortable.el.appendChild(dragEl); } this.sortable.animateAll(); if (putSortable) { putSortable.animateAll(); } }, drop: drop }; _extends(Revert, { pluginName: 'revertOnSpill' }); function Remove() {} Remove.prototype = { onSpill: function onSpill(_ref4) { var dragEl = _ref4.dragEl, putSortable = _ref4.putSortable; var parentSortable = putSortable || this.sortable; parentSortable.captureAnimationState(); dragEl.parentNode && dragEl.parentNode.removeChild(dragEl); parentSortable.animateAll(); }, drop: drop }; _extends(Remove, { pluginName: 'removeOnSpill' }); var lastSwapEl; function SwapPlugin() { function Swap() { this.defaults = { swapClass: 'sortable-swap-highlight' }; } Swap.prototype = { dragStart: function dragStart(_ref) { var dragEl = _ref.dragEl; lastSwapEl = dragEl; }, dragOverValid: function dragOverValid(_ref2) { var completed = _ref2.completed, target = _ref2.target, onMove = _ref2.onMove, activeSortable = _ref2.activeSortable, changed = _ref2.changed, cancel = _ref2.cancel; if (!activeSortable.options.swap) return; var el = this.sortable.el, options = this.options; if (target && target !== el) { var prevSwapEl = lastSwapEl; if (onMove(target) !== false) { toggleClass(target, options.swapClass, true); lastSwapEl = target; } else { lastSwapEl = null; } if (prevSwapEl && prevSwapEl !== lastSwapEl) { toggleClass(prevSwapEl, options.swapClass, false); } } changed(); completed(true); cancel(); }, drop: function drop(_ref3) { var activeSortable = _ref3.activeSortable, putSortable = _ref3.putSortable, dragEl = _ref3.dragEl; var toSortable = putSortable || this.sortable; var options = this.options; lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false); if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) { if (dragEl !== lastSwapEl) { toSortable.captureAnimationState(); if (toSortable !== activeSortable) activeSortable.captureAnimationState(); swapNodes(dragEl, lastSwapEl); toSortable.animateAll(); if (toSortable !== activeSortable) activeSortable.animateAll(); } } }, nulling: function nulling() { lastSwapEl = null; } }; return _extends(Swap, { pluginName: 'swap', eventProperties: function eventProperties() { return { swapItem: lastSwapEl }; } }); } function swapNodes(n1, n2) { var p1 = n1.parentNode, p2 = n2.parentNode, i1, i2; if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return; i1 = index(n1); i2 = index(n2); if (p1.isEqualNode(p2) && i1 < i2) { i2++; } p1.insertBefore(n2, p1.children[i1]); p2.insertBefore(n1, p2.children[i2]); } var multiDragElements = [], multiDragClones = [], lastMultiDragSelect, // for selection with modifier key down (SHIFT) multiDragSortable, initialFolding = false, // Initial multi-drag fold when drag started folding = false, // Folding any other time dragStarted = false, dragEl$1, clonesFromRect, clonesHidden; function MultiDragPlugin() { function MultiDrag(sortable) { // Bind all private methods for (var fn in this) { if (fn.charAt(0) === '_' && typeof this[fn] === 'function') { this[fn] = this[fn].bind(this); } } if (sortable.options.supportPointer) { on(document, 'pointerup', this._deselectMultiDrag); } else { on(document, 'mouseup', this._deselectMultiDrag); on(document, 'touchend', this._deselectMultiDrag); } on(document, 'keydown', this._checkKeyDown); on(document, 'keyup', this._checkKeyUp); this.defaults = { selectedClass: 'sortable-selected', multiDragKey: null, setData: function setData(dataTransfer, dragEl) { var data = ''; if (multiDragElements.length && multiDragSortable === sortable) { multiDragElements.forEach(function (multiDragElement, i) { data += (!i ? '' : ', ') + multiDragElement.textContent; }); } else { data = dragEl.textContent; } dataTransfer.setData('Text', data); } }; } MultiDrag.prototype = { multiDragKeyDown: false, isMultiDrag: false, delayStartGlobal: function delayStartGlobal(_ref) { var dragged = _ref.dragEl; dragEl$1 = dragged; }, delayEnded: function delayEnded() { this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1); }, setupClone: function setupClone(_ref2) { var sortable = _ref2.sortable, cancel = _ref2.cancel; if (!this.isMultiDrag) return; for (var i = 0; i < multiDragElements.length; i++) { multiDragClones.push(clone(multiDragElements[i])); multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex; multiDragClones[i].draggable = false; multiDragClones[i].style['will-change'] = ''; toggleClass(multiDragClones[i], this.options.selectedClass, false); multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false); } sortable._hideClone(); cancel(); }, clone: function clone(_ref3) { var sortable = _ref3.sortable, rootEl = _ref3.rootEl, dispatchSortableEvent = _ref3.dispatchSortableEvent, cancel = _ref3.cancel; if (!this.isMultiDrag) return; if (!this.options.removeCloneOnHide) { if (multiDragElements.length && multiDragSortable === sortable) { insertMultiDragClones(true, rootEl); dispatchSortableEvent('clone'); cancel(); } } }, showClone: function showClone(_ref4) { var cloneNowShown = _ref4.cloneNowShown, rootEl = _ref4.rootEl, cancel = _ref4.cancel; if (!this.isMultiDrag) return; insertMultiDragClones(false, rootEl); multiDragClones.forEach(function (clone) { css(clone, 'display', ''); }); cloneNowShown(); clonesHidden = false; cancel(); }, hideClone: function hideClone(_ref5) { var _this = this; var sortable = _ref5.sortable, cloneNowHidden = _ref5.cloneNowHidden, cancel = _ref5.cancel; if (!this.isMultiDrag) return; multiDragClones.forEach(function (clone) { css(clone, 'display', 'none'); if (_this.options.removeCloneOnHide && clone.parentNode) { clone.parentNode.removeChild(clone); } }); cloneNowHidden(); clonesHidden = true; cancel(); }, dragStartGlobal: function dragStartGlobal(_ref6) { var sortable = _ref6.sortable; if (!this.isMultiDrag && multiDragSortable) { multiDragSortable.multiDrag._deselectMultiDrag(); } multiDragElements.forEach(function (multiDragElement) { multiDragElement.sortableIndex = index(multiDragElement); }); // Sort multi-drag elements multiDragElements = multiDragElements.sort(function (a, b) { return a.sortableIndex - b.sortableIndex; }); dragStarted = true; }, dragStarted: function dragStarted(_ref7) { var _this2 = this; var sortable = _ref7.sortable; if (!this.isMultiDrag) return; if (this.options.sort) { // Capture rects, // hide multi drag elements (by positioning them absolute), // set multi drag elements rects to dragRect, // show multi drag elements, // animate to rects, // unset rects & remove from DOM sortable.captureAnimationState(); if (this.options.animation) { multiDragElements.forEach(function (multiDragElement) { if (multiDragElement === dragEl$1) return; css(multiDragElement, 'position', 'absolute'); }); var dragRect = getRect(dragEl$1, false, true, true); multiDragElements.forEach(function (multiDragElement) { if (multiDragElement === dragEl$1) return; setRect(multiDragElement, dragRect); }); folding = true; initialFolding = true; } } sortable.animateAll(function () { folding = false; initialFolding = false; if (_this2.options.animation) { multiDragElements.forEach(function (multiDragElement) { unsetRect(multiDragElement); }); } // Remove all auxiliary multidrag items from el, if sorting enabled if (_this2.options.sort) { removeMultiDragElements(); } }); }, dragOver: function dragOver(_ref8) { var target = _ref8.target, completed = _ref8.completed, cancel = _ref8.cancel; if (folding && ~multiDragElements.indexOf(target)) { completed(false); cancel(); } }, revert: function revert(_ref9) { var fromSortable = _ref9.fromSortable, rootEl = _ref9.rootEl, sortable = _ref9.sortable, dragRect = _ref9.dragRect; if (multiDragElements.length > 1) { // Setup unfold animation multiDragElements.forEach(function (multiDragElement) { sortable.addAnimationState({ target: multiDragElement, rect: folding ? getRect(multiDragElement) : dragRect }); unsetRect(multiDragElement); multiDragElement.fromRect = dragRect; fromSortable.removeAnimationState(multiDragElement); }); folding = false; insertMultiDragElements(!this.options.removeCloneOnHide, rootEl); } }, dragOverCompleted: function dragOverCompleted(_ref10) { var sortable = _ref10.sortable, isOwner = _ref10.isOwner, insertion = _ref10.insertion, activeSortable = _ref10.activeSortable, parentEl = _ref10.parentEl, putSortable = _ref10.putSortable; var options = this.options; if (insertion) { // Clones must be hidden before folding animation to capture dragRectAbsolute properly if (isOwner) { activeSortable._hideClone(); } initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) { // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible var dragRectAbsolute = getRect(dragEl$1, false, true, true); multiDragElements.forEach(function (multiDragElement) { if (multiDragElement === dragEl$1) return; setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted // while folding, and so that we can capture them again because old sortable will no longer be fromSortable parentEl.appendChild(multiDragElement); }); folding = true; } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out if (!isOwner) { // Only remove if not folding (folding will remove them anyways) if (!folding) { removeMultiDragElements(); } if (multiDragElements.length > 1) { var clonesHiddenBefore = clonesHidden; activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) { multiDragClones.forEach(function (clone) { activeSortable.addAnimationState({ target: clone, rect: clonesFromRect }); clone.fromRect = clonesFromRect; clone.thisAnimationDuration = null; }); } } else { activeSortable._showClone(sortable); } } } }, dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) { var dragRect = _ref11.dragRect, isOwner = _ref11.isOwner, activeSortable = _ref11.activeSortable; multiDragElements.forEach(function (multiDragElement) { multiDragElement.thisAnimationDuration = null; }); if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) { clonesFromRect = _extends({}, dragRect); var dragMatrix = matrix(dragEl$1, true); clonesFromRect.top -= dragMatrix.f; clonesFromRect.left -= dragMatrix.e; } }, dragOverAnimationComplete: function dragOverAnimationComplete() { if (folding) { folding = false; removeMultiDragElements(); } }, drop: function drop(_ref12) { var evt = _ref12.originalEvent, rootEl = _ref12.rootEl, parentEl = _ref12.parentEl, sortable = _ref12.sortable, dispatchSortableEvent = _ref12.dispatchSortableEvent, oldIndex = _ref12.oldIndex, putSortable = _ref12.putSortable; var toSortable = putSortable || this.sortable; if (!evt) return; var options = this.options, children = parentEl.children; // Multi-drag selection if (!dragStarted) { if (options.multiDragKey && !this.multiDragKeyDown) { this._deselectMultiDrag(); } toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1)); if (!~multiDragElements.indexOf(dragEl$1)) { multiDragElements.push(dragEl$1); dispatchEvent({ sortable: sortable, rootEl: rootEl, name: 'select', targetEl: dragEl$1, originalEvt: evt }); // Modifier activated, select from last to dragEl if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) { var lastIndex = index(lastMultiDragSelect), currentIndex = index(dragEl$1); if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) { // Must include lastMultiDragSelect (select it), in case modified selection from no selection // (but previous selection existed) var n, i; if (currentIndex > lastIndex) { i = lastIndex; n = currentIndex; } else { i = currentIndex; n = lastIndex + 1; } for (; i < n; i++) { if (~multiDragElements.indexOf(children[i])) continue; toggleClass(children[i], options.selectedClass, true); multiDragElements.push(children[i]); dispatchEvent({ sortable: sortable, rootEl: rootEl, name: 'select', targetEl: children[i], originalEvt: evt }); } } } else { lastMultiDragSelect = dragEl$1; } multiDragSortable = toSortable; } else { multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1); lastMultiDragSelect = null; dispatchEvent({ sortable: sortable, rootEl: rootEl, name: 'deselect', targetEl: dragEl$1, originalEvt: evt }); } } // Multi-drag drop if (dragStarted && this.isMultiDrag) { // Do not "unfold" after around dragEl if reverted if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) { var dragRect = getRect(dragEl$1), multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')'); if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null; toSortable.captureAnimationState(); if (!initialFolding) { if (options.animation) { dragEl$1.fromRect = dragRect; multiDragElements.forEach(function (multiDragElement) { multiDragElement.thisAnimationDuration = null; if (multiDragElement !== dragEl$1) { var rect = folding ? getRect(multiDragElement) : dragRect; multiDragElement.fromRect = rect; // Prepare unfold animation toSortable.addAnimationState({ target: multiDragElement, rect: rect }); } }); } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert // properly they must all be removed removeMultiDragElements(); multiDragElements.forEach(function (multiDragElement) { if (children[multiDragIndex]) { parentEl.insertBefore(multiDragElement, children[multiDragIndex]); } else { parentEl.appendChild(multiDragElement); } multiDragIndex++; }); // If initial folding is done, the elements may have changed position because they are now // unfolding around dragEl, even though dragEl may not have his index changed, so update event // must be fired here as Sortable will not. if (oldIndex === index(dragEl$1)) { var update = false; multiDragElements.forEach(function (multiDragElement) { if (multiDragElement.sortableIndex !== index(multiDragElement)) { update = true; return; } }); if (update) { dispatchSortableEvent('update'); } } } // Must be done after capturing individual rects (scroll bar) multiDragElements.forEach(function (multiDragElement) { unsetRect(multiDragElement); }); toSortable.animateAll(); } multiDragSortable = toSortable; } // Remove clones if necessary if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') { multiDragClones.forEach(function (clone) { clone.parentNode && clone.parentNode.removeChild(clone); }); } }, nullingGlobal: function nullingGlobal() { this.isMultiDrag = dragStarted = false; multiDragClones.length = 0; }, destroyGlobal: function destroyGlobal() { this._deselectMultiDrag(); off(document, 'pointerup', this._deselectMultiDrag); off(document, 'mouseup', this._deselectMultiDrag); off(document, 'touchend', this._deselectMultiDrag); off(document, 'keydown', this._checkKeyDown); off(document, 'keyup', this._checkKeyUp); }, _deselectMultiDrag: function _deselectMultiDrag(evt) { if (typeof dragStarted !== "undefined" && dragStarted) return; // Only deselect if selection is in this sortable if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click if (evt && evt.button !== 0) return; while (multiDragElements.length) { var el = multiDragElements[0]; toggleClass(el, this.options.selectedClass, false); multiDragElements.shift(); dispatchEvent({ sortable: this.sortable, rootEl: this.sortable.el, name: 'deselect', targetEl: el, originalEvt: evt }); } }, _checkKeyDown: function _checkKeyDown(evt) { if (evt.key === this.options.multiDragKey) { this.multiDragKeyDown = true; } }, _checkKeyUp: function _checkKeyUp(evt) { if (evt.key === this.options.multiDragKey) { this.multiDragKeyDown = false; } } }; return _extends(MultiDrag, { // Static methods & properties pluginName: 'multiDrag', utils: { /** * Selects the provided multi-drag item * @param {HTMLElement} el The element to be selected */ select: function select(el) { var sortable = el.parentNode[expando]; if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return; if (multiDragSortable && multiDragSortable !== sortable) { multiDragSortable.multiDrag._deselectMultiDrag(); multiDragSortable = sortable; } toggleClass(el, sortable.options.selectedClass, true); multiDragElements.push(el); }, /** * Deselects the provided multi-drag item * @param {HTMLElement} el The element to be deselected */ deselect: function deselect(el) { var sortable = el.parentNode[expando], index = multiDragElements.indexOf(el); if (!sortable || !sortable.options.multiDrag || !~index) return; toggleClass(el, sortable.options.selectedClass, false); multiDragElements.splice(index, 1); } }, eventProperties: function eventProperties() { var _this3 = this; var oldIndicies = [], newIndicies = []; multiDragElements.forEach(function (multiDragElement) { oldIndicies.push({ multiDragElement: multiDragElement, index: multiDragElement.sortableIndex }); // multiDragElements will already be sorted if folding var newIndex; if (folding && multiDragElement !== dragEl$1) { newIndex = -1; } else if (folding) { newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')'); } else { newIndex = index(multiDragElement); } newIndicies.push({ multiDragElement: multiDragElement, index: newIndex }); }); return { items: _toConsumableArray(multiDragElements), clones: [].concat(multiDragClones), oldIndicies: oldIndicies, newIndicies: newIndicies }; }, optionListeners: { multiDragKey: function multiDragKey(key) { key = key.toLowerCase(); if (key === 'ctrl') { key = 'Control'; } else if (key.length > 1) { key = key.charAt(0).toUpperCase() + key.substr(1); } return key; } } }); } function insertMultiDragElements(clonesInserted, rootEl) { multiDragElements.forEach(function (multiDragElement, i) { var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)]; if (target) { rootEl.insertBefore(multiDragElement, target); } else { rootEl.appendChild(multiDragElement); } }); } /** * Insert multi-drag clones * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted * @param {HTMLElement} rootEl */ function insertMultiDragClones(elementsInserted, rootEl) { multiDragClones.forEach(function (clone, i) { var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)]; if (target) { rootEl.insertBefore(clone, target); } else { rootEl.appendChild(clone); } }); } function removeMultiDragElements() { multiDragElements.forEach(function (multiDragElement) { if (multiDragElement === dragEl$1) return; multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement); }); } Sortable.mount(new AutoScrollPlugin()); Sortable.mount(Remove, Revert); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Sortable); /***/ }), /***/ "./node_modules/splitpanes/dist/splitpanes.es.js": /*!*******************************************************!*\ !*** ./node_modules/splitpanes/dist/splitpanes.es.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Pane: () => (/* binding */ pane), /* harmony export */ Splitpanes: () => (/* binding */ splitpanes) /* harmony export */ }); var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; var splitpanes_vue_vue_type_style_index_0_lang = ""; function normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports; if (render2) { options.render = render2; options.staticRenderFns = staticRenderFns2; options._compiled = true; } if (functionalTemplate) { options.functional = true; } if (scopeId) { options._scopeId = "data-v-" + scopeId; } var hook; if (moduleIdentifier) { hook = function(context) { context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") { context = __VUE_SSR_CONTEXT__; } if (injectStyles) { injectStyles.call(this, context); } if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier); } }; options._ssrRegister = hook; } else if (injectStyles) { hook = shadowMode ? function() { injectStyles.call(this, (options.functional ? this.parent : this).$root.$options.shadowRoot); } : injectStyles; } if (hook) { if (options.functional) { options._injectStyles = hook; var originalRender = options.render; options.render = function renderWithStyleInjection(h, context) { hook.call(context); return originalRender(h, context); }; } else { var existing = options.beforeCreate; options.beforeCreate = existing ? [].concat(existing, hook) : [hook]; } } return { exports: scriptExports, options }; } const __vue2_script$1 = { name: "splitpanes", props: { horizontal: { type: Boolean }, pushOtherPanes: { type: Boolean, default: true }, dblClickSplitter: { type: Boolean, default: true }, rtl: { type: Boolean, default: false }, firstSplitter: { type: Boolean } }, provide() { return { requestUpdate: this.requestUpdate, onPaneAdd: this.onPaneAdd, onPaneRemove: this.onPaneRemove, onPaneClick: this.onPaneClick }; }, data: () => ({ container: null, ready: false, panes: [], touch: { mouseDown: false, dragging: false, activeSplitter: null }, splitterTaps: { splitter: null, timeoutId: null } }), computed: { panesCount() { return this.panes.length; }, indexedPanes() { return this.panes.reduce((obj, pane2) => (obj[pane2.id] = pane2) && obj, {}); } }, methods: { updatePaneComponents() { this.panes.forEach((pane2) => { pane2.update && pane2.update({ [this.horizontal ? "height" : "width"]: `${this.indexedPanes[pane2.id].size}%` }); }); }, bindEvents() { document.addEventListener("mousemove", this.onMouseMove, { passive: false }); document.addEventListener("mouseup", this.onMouseUp); if ("ontouchstart" in window) { document.addEventListener("touchmove", this.onMouseMove, { passive: false }); document.addEventListener("touchend", this.onMouseUp); } }, unbindEvents() { document.removeEventListener("mousemove", this.onMouseMove, { passive: false }); document.removeEventListener("mouseup", this.onMouseUp); if ("ontouchstart" in window) { document.removeEventListener("touchmove", this.onMouseMove, { passive: false }); document.removeEventListener("touchend", this.onMouseUp); } }, onMouseDown(event, splitterIndex) { this.bindEvents(); this.touch.mouseDown = true; this.touch.activeSplitter = splitterIndex; }, onMouseMove(event) { if (this.touch.mouseDown) { event.preventDefault(); this.touch.dragging = true; this.calculatePanesSize(this.getCurrentMouseDrag(event)); this.$emit("resize", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size }))); } }, onMouseUp() { if (this.touch.dragging) { this.$emit("resized", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size }))); } this.touch.mouseDown = false; setTimeout(() => { this.touch.dragging = false; this.unbindEvents(); }, 100); }, onSplitterClick(event, splitterIndex) { if ("ontouchstart" in window) { event.preventDefault(); if (this.dblClickSplitter) { if (this.splitterTaps.splitter === splitterIndex) { clearTimeout(this.splitterTaps.timeoutId); this.splitterTaps.timeoutId = null; this.onSplitterDblClick(event, splitterIndex); this.splitterTaps.splitter = null; } else { this.splitterTaps.splitter = splitterIndex; this.splitterTaps.timeoutId = setTimeout(() => { this.splitterTaps.splitter = null; }, 500); } } } if (!this.touch.dragging) this.$emit("splitter-click", this.panes[splitterIndex]); }, onSplitterDblClick(event, splitterIndex) { let totalMinSizes = 0; this.panes = this.panes.map((pane2, i) => { pane2.size = i === splitterIndex ? pane2.max : pane2.min; if (i !== splitterIndex) totalMinSizes += pane2.min; return pane2; }); this.panes[splitterIndex].size -= totalMinSizes; this.$emit("pane-maximize", this.panes[splitterIndex]); }, onPaneClick(event, paneId) { this.$emit("pane-click", this.indexedPanes[paneId]); }, getCurrentMouseDrag(event) { const rect = this.container.getBoundingClientRect(); const { clientX, clientY } = "ontouchstart" in window && event.touches ? event.touches[0] : event; return { x: clientX - rect.left, y: clientY - rect.top }; }, getCurrentDragPercentage(drag) { drag = drag[this.horizontal ? "y" : "x"]; const containerSize = this.container[this.horizontal ? "clientHeight" : "clientWidth"]; if (this.rtl && !this.horizontal) drag = containerSize - drag; return drag * 100 / containerSize; }, calculatePanesSize(drag) { const splitterIndex = this.touch.activeSplitter; let sums = { prevPanesSize: this.sumPrevPanesSize(splitterIndex), nextPanesSize: this.sumNextPanesSize(splitterIndex), prevReachedMinPanes: 0, nextReachedMinPanes: 0 }; const minDrag = 0 + (this.pushOtherPanes ? 0 : sums.prevPanesSize); const maxDrag = 100 - (this.pushOtherPanes ? 0 : sums.nextPanesSize); const dragPercentage = Math.max(Math.min(this.getCurrentDragPercentage(drag), maxDrag), minDrag); let panesToResize = [splitterIndex, splitterIndex + 1]; let paneBefore = this.panes[panesToResize[0]] || null; let paneAfter = this.panes[panesToResize[1]] || null; const paneBeforeMaxReached = paneBefore.max < 100 && dragPercentage >= paneBefore.max + sums.prevPanesSize; const paneAfterMaxReached = paneAfter.max < 100 && dragPercentage <= 100 - (paneAfter.max + this.sumNextPanesSize(splitterIndex + 1)); if (paneBeforeMaxReached || paneAfterMaxReached) { if (paneBeforeMaxReached) { paneBefore.size = paneBefore.max; paneAfter.size = Math.max(100 - paneBefore.max - sums.prevPanesSize - sums.nextPanesSize, 0); } else { paneBefore.size = Math.max(100 - paneAfter.max - sums.prevPanesSize - this.sumNextPanesSize(splitterIndex + 1), 0); paneAfter.size = paneAfter.max; } return; } if (this.pushOtherPanes) { const vars = this.doPushOtherPanes(sums, dragPercentage); if (!vars) return; ({ sums, panesToResize } = vars); paneBefore = this.panes[panesToResize[0]] || null; paneAfter = this.panes[panesToResize[1]] || null; } if (paneBefore !== null) { paneBefore.size = Math.min(Math.max(dragPercentage - sums.prevPanesSize - sums.prevReachedMinPanes, paneBefore.min), paneBefore.max); } if (paneAfter !== null) { paneAfter.size = Math.min(Math.max(100 - dragPercentage - sums.nextPanesSize - sums.nextReachedMinPanes, paneAfter.min), paneAfter.max); } }, doPushOtherPanes(sums, dragPercentage) { const splitterIndex = this.touch.activeSplitter; const panesToResize = [splitterIndex, splitterIndex + 1]; if (dragPercentage < sums.prevPanesSize + this.panes[panesToResize[0]].min) { panesToResize[0] = this.findPrevExpandedPane(splitterIndex).index; sums.prevReachedMinPanes = 0; if (panesToResize[0] < splitterIndex) { this.panes.forEach((pane2, i) => { if (i > panesToResize[0] && i <= splitterIndex) { pane2.size = pane2.min; sums.prevReachedMinPanes += pane2.min; } }); } sums.prevPanesSize = this.sumPrevPanesSize(panesToResize[0]); if (panesToResize[0] === void 0) { sums.prevReachedMinPanes = 0; this.panes[0].size = this.panes[0].min; this.panes.forEach((pane2, i) => { if (i > 0 && i <= splitterIndex) { pane2.size = pane2.min; sums.prevReachedMinPanes += pane2.min; } }); this.panes[panesToResize[1]].size = 100 - sums.prevReachedMinPanes - this.panes[0].min - sums.prevPanesSize - sums.nextPanesSize; return null; } } if (dragPercentage > 100 - sums.nextPanesSize - this.panes[panesToResize[1]].min) { panesToResize[1] = this.findNextExpandedPane(splitterIndex).index; sums.nextReachedMinPanes = 0; if (panesToResize[1] > splitterIndex + 1) { this.panes.forEach((pane2, i) => { if (i > splitterIndex && i < panesToResize[1]) { pane2.size = pane2.min; sums.nextReachedMinPanes += pane2.min; } }); } sums.nextPanesSize = this.sumNextPanesSize(panesToResize[1] - 1); if (panesToResize[1] === void 0) { sums.nextReachedMinPanes = 0; this.panes[this.panesCount - 1].size = this.panes[this.panesCount - 1].min; this.panes.forEach((pane2, i) => { if (i < this.panesCount - 1 && i >= splitterIndex + 1) { pane2.size = pane2.min; sums.nextReachedMinPanes += pane2.min; } }); this.panes[panesToResize[0]].size = 100 - sums.prevPanesSize - sums.nextReachedMinPanes - this.panes[this.panesCount - 1].min - sums.nextPanesSize; return null; } } return { sums, panesToResize }; }, sumPrevPanesSize(splitterIndex) { return this.panes.reduce((total, pane2, i) => total + (i < splitterIndex ? pane2.size : 0), 0); }, sumNextPanesSize(splitterIndex) { return this.panes.reduce((total, pane2, i) => total + (i > splitterIndex + 1 ? pane2.size : 0), 0); }, findPrevExpandedPane(splitterIndex) { const pane2 = [...this.panes].reverse().find((p) => p.index < splitterIndex && p.size > p.min); return pane2 || {}; }, findNextExpandedPane(splitterIndex) { const pane2 = this.panes.find((p) => p.index > splitterIndex + 1 && p.size > p.min); return pane2 || {}; }, checkSplitpanesNodes() { const children = Array.from(this.container.children); children.forEach((child) => { const isPane = child.classList.contains("splitpanes__pane"); const isSplitter = child.classList.contains("splitpanes__splitter"); if (!isPane && !isSplitter) { child.parentNode.removeChild(child); console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."); return; } }); }, addSplitter(paneIndex, nextPaneNode, isVeryFirst = false) { const splitterIndex = paneIndex - 1; const elm = document.createElement("div"); elm.classList.add("splitpanes__splitter"); if (!isVeryFirst) { elm.onmousedown = (event) => this.onMouseDown(event, splitterIndex); if (typeof window !== "undefined" && "ontouchstart" in window) { elm.ontouchstart = (event) => this.onMouseDown(event, splitterIndex); } elm.onclick = (event) => this.onSplitterClick(event, splitterIndex + 1); } if (this.dblClickSplitter) { elm.ondblclick = (event) => this.onSplitterDblClick(event, splitterIndex + 1); } nextPaneNode.parentNode.insertBefore(elm, nextPaneNode); }, removeSplitter(node) { node.onmousedown = void 0; node.onclick = void 0; node.ondblclick = void 0; node.parentNode.removeChild(node); }, redoSplitters() { const children = Array.from(this.container.children); children.forEach((el) => { if (el.className.includes("splitpanes__splitter")) this.removeSplitter(el); }); let paneIndex = 0; children.forEach((el) => { if (el.className.includes("splitpanes__pane")) { if (!paneIndex && this.firstSplitter) this.addSplitter(paneIndex, el, true); else if (paneIndex) this.addSplitter(paneIndex, el); paneIndex++; } }); }, requestUpdate(_a) { var _b = _a, { target } = _b, args = __objRest(_b, ["target"]); const pane2 = this.indexedPanes[target._uid]; Object.entries(args).forEach(([key, value]) => pane2[key] = value); }, onPaneAdd(pane2) { let index = -1; Array.from(pane2.$el.parentNode.children).some((el) => { if (el.className.includes("splitpanes__pane")) index++; return el === pane2.$el; }); const min = parseFloat(pane2.minSize); const max = parseFloat(pane2.maxSize); this.panes.splice(index, 0, { id: pane2._uid, index, min: isNaN(min) ? 0 : min, max: isNaN(max) ? 100 : max, size: pane2.size === null ? null : parseFloat(pane2.size), givenSize: pane2.size, update: pane2.update }); this.panes.forEach((p, i) => p.index = i); if (this.ready) { this.$nextTick(() => { this.redoSplitters(); this.resetPaneSizes({ addedPane: this.panes[index] }); this.$emit("pane-add", { index, panes: this.panes.map((pane3) => ({ min: pane3.min, max: pane3.max, size: pane3.size })) }); }); } }, onPaneRemove(pane2) { const index = this.panes.findIndex((p) => p.id === pane2._uid); const removed = this.panes.splice(index, 1)[0]; this.panes.forEach((p, i) => p.index = i); this.$nextTick(() => { this.redoSplitters(); this.resetPaneSizes({ removedPane: __spreadProps(__spreadValues({}, removed), { index }) }); this.$emit("pane-remove", { removed, panes: this.panes.map((pane3) => ({ min: pane3.min, max: pane3.max, size: pane3.size })) }); }); }, resetPaneSizes(changedPanes = {}) { if (!changedPanes.addedPane && !changedPanes.removedPane) this.initialPanesSizing(); else if (this.panes.some((pane2) => pane2.givenSize !== null || pane2.min || pane2.max < 100)) this.equalizeAfterAddOrRemove(changedPanes); else this.equalize(); if (this.ready) this.$emit("resized", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size }))); }, equalize() { const equalSpace = 100 / this.panesCount; let leftToAllocate = 0; let ungrowable = []; let unshrinkable = []; this.panes.forEach((pane2) => { pane2.size = Math.max(Math.min(equalSpace, pane2.max), pane2.min); leftToAllocate -= pane2.size; if (pane2.size >= pane2.max) ungrowable.push(pane2.id); if (pane2.size <= pane2.min) unshrinkable.push(pane2.id); }); if (leftToAllocate > 0.1) this.readjustSizes(leftToAllocate, ungrowable, unshrinkable); }, initialPanesSizing() { 100 / this.panesCount; let leftToAllocate = 100; let ungrowable = []; let unshrinkable = []; let definedSizes = 0; this.panes.forEach((pane2) => { leftToAllocate -= pane2.size; if (pane2.size !== null) definedSizes++; if (pane2.size >= pane2.max) ungrowable.push(pane2.id); if (pane2.size <= pane2.min) unshrinkable.push(pane2.id); }); let leftToAllocate2 = 100; if (leftToAllocate > 0.1) { this.panes.forEach((pane2) => { if (pane2.size === null) { pane2.size = Math.max(Math.min(leftToAllocate / (this.panesCount - definedSizes), pane2.max), pane2.min); } leftToAllocate2 -= pane2.size; }); if (leftToAllocate2 > 0.1) this.readjustSizes(leftToAllocate, ungrowable, unshrinkable); } }, equalizeAfterAddOrRemove({ addedPane, removedPane } = {}) { let equalSpace = 100 / this.panesCount; let leftToAllocate = 0; let ungrowable = []; let unshrinkable = []; if (addedPane && addedPane.givenSize !== null) { equalSpace = (100 - addedPane.givenSize) / (this.panesCount - 1); } this.panes.forEach((pane2) => { leftToAllocate -= pane2.size; if (pane2.size >= pane2.max) ungrowable.push(pane2.id); if (pane2.size <= pane2.min) unshrinkable.push(pane2.id); }); if (Math.abs(leftToAllocate) < 0.1) return; this.panes.forEach((pane2) => { if (addedPane && addedPane.givenSize !== null && addedPane.id === pane2.id) ; else pane2.size = Math.max(Math.min(equalSpace, pane2.max), pane2.min); leftToAllocate -= pane2.size; if (pane2.size >= pane2.max) ungrowable.push(pane2.id); if (pane2.size <= pane2.min) unshrinkable.push(pane2.id); }); if (leftToAllocate > 0.1) this.readjustSizes(leftToAllocate, ungrowable, unshrinkable); }, readjustSizes(leftToAllocate, ungrowable, unshrinkable) { let equalSpaceToAllocate; if (leftToAllocate > 0) equalSpaceToAllocate = leftToAllocate / (this.panesCount - ungrowable.length); else equalSpaceToAllocate = leftToAllocate / (this.panesCount - unshrinkable.length); this.panes.forEach((pane2, i) => { if (leftToAllocate > 0 && !ungrowable.includes(pane2.id)) { const newPaneSize = Math.max(Math.min(pane2.size + equalSpaceToAllocate, pane2.max), pane2.min); const allocated = newPaneSize - pane2.size; leftToAllocate -= allocated; pane2.size = newPaneSize; } else if (!unshrinkable.includes(pane2.id)) { const newPaneSize = Math.max(Math.min(pane2.size + equalSpaceToAllocate, pane2.max), pane2.min); const allocated = newPaneSize - pane2.size; leftToAllocate -= allocated; pane2.size = newPaneSize; } pane2.update({ [this.horizontal ? "height" : "width"]: `${this.indexedPanes[pane2.id].size}%` }); }); if (Math.abs(leftToAllocate) > 0.1) { this.$nextTick(() => { if (this.ready) { console.warn("Splitpanes: Could not resize panes correctly due to their constraints."); } }); } } }, watch: { panes: { deep: true, immediate: false, handler() { this.updatePaneComponents(); } }, horizontal() { this.updatePaneComponents(); }, firstSplitter() { this.redoSplitters(); }, dblClickSplitter(enable) { const splitters = [...this.container.querySelectorAll(".splitpanes__splitter")]; splitters.forEach((splitter, i) => { splitter.ondblclick = enable ? (event) => this.onSplitterDblClick(event, i) : void 0; }); } }, beforeDestroy() { this.ready = false; }, mounted() { this.container = this.$refs.container; this.checkSplitpanesNodes(); this.redoSplitters(); this.resetPaneSizes(); this.$emit("ready"); this.ready = true; }, render(h) { return h("div", { ref: "container", class: [ "splitpanes", `splitpanes--${this.horizontal ? "horizontal" : "vertical"}`, { "splitpanes--dragging": this.touch.dragging } ] }, this.$slots.default); } }; let __vue2_render, __vue2_staticRenderFns; const __cssModules$1 = {}; var __component__$1 = /* @__PURE__ */ normalizeComponent(__vue2_script$1, __vue2_render, __vue2_staticRenderFns, false, __vue2_injectStyles$1, null, null, null); function __vue2_injectStyles$1(context) { for (let o in __cssModules$1) { this[o] = __cssModules$1[o]; } } var splitpanes = /* @__PURE__ */ function() { return __component__$1.exports; }(); var render = function() { var _vm = this; var _h = _vm.$createElement; var _c = _vm._self._c || _h; return _c("div", { staticClass: "splitpanes__pane", style: _vm.style, on: { "click": function($event) { return _vm.onPaneClick($event, _vm._uid); } } }, [_vm._t("default")], 2); }; var staticRenderFns = []; const __vue2_script = { name: "pane", inject: ["requestUpdate", "onPaneAdd", "onPaneRemove", "onPaneClick"], props: { size: { type: [Number, String], default: null }, minSize: { type: [Number, String], default: 0 }, maxSize: { type: [Number, String], default: 100 } }, data: () => ({ style: {} }), mounted() { this.onPaneAdd(this); }, beforeDestroy() { this.onPaneRemove(this); }, methods: { update(style) { this.style = style; } }, computed: { sizeNumber() { return this.size || this.size === 0 ? parseFloat(this.size) : null; }, minSizeNumber() { return parseFloat(this.minSize); }, maxSizeNumber() { return parseFloat(this.maxSize); } }, watch: { sizeNumber(size) { this.requestUpdate({ target: this, size }); }, minSizeNumber(min) { this.requestUpdate({ target: this, min }); }, maxSizeNumber(max) { this.requestUpdate({ target: this, max }); } } }; const __cssModules = {}; var __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles, null, null, null); function __vue2_injectStyles(context) { for (let o in __cssModules) { this[o] = __cssModules[o]; } } var pane = /* @__PURE__ */ function() { return __component__.exports; }(); /***/ }), /***/ "./node_modules/striptags/src/striptags.js": /*!*************************************************!*\ !*** ./node_modules/striptags/src/striptags.js ***! \*************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __WEBPACK_AMD_DEFINE_RESULT__; (function (global) { // minimal symbol polyfill for IE11 and others if (typeof Symbol !== 'function') { var Symbol = function(name) { return name; } Symbol.nonNative = true; } const STATE_PLAINTEXT = Symbol('plaintext'); const STATE_HTML = Symbol('html'); const STATE_COMMENT = Symbol('comment'); const ALLOWED_TAGS_REGEX = /<(\w*)>/g; const NORMALIZE_TAG_REGEX = /<\/?([^\s\/>]+)/; function striptags(html, allowable_tags, tag_replacement) { html = html || ''; allowable_tags = allowable_tags || []; tag_replacement = tag_replacement || ''; let context = init_context(allowable_tags, tag_replacement); return striptags_internal(html, context); } function init_striptags_stream(allowable_tags, tag_replacement) { allowable_tags = allowable_tags || []; tag_replacement = tag_replacement || ''; let context = init_context(allowable_tags, tag_replacement); return function striptags_stream(html) { return striptags_internal(html || '', context); }; } striptags.init_streaming_mode = init_striptags_stream; function init_context(allowable_tags, tag_replacement) { allowable_tags = parse_allowable_tags(allowable_tags); return { allowable_tags : allowable_tags, tag_replacement: tag_replacement, state : STATE_PLAINTEXT, tag_buffer : '', depth : 0, in_quote_char : '' }; } function striptags_internal(html, context) { if (typeof html != "string") { throw new TypeError("'html' parameter must be a string"); } let allowable_tags = context.allowable_tags; let tag_replacement = context.tag_replacement; let state = context.state; let tag_buffer = context.tag_buffer; let depth = context.depth; let in_quote_char = context.in_quote_char; let output = ''; for (let idx = 0, length = html.length; idx < length; idx++) { let char = html[idx]; if (state === STATE_PLAINTEXT) { switch (char) { case '<': state = STATE_HTML; tag_buffer += char; break; default: output += char; break; } } else if (state === STATE_HTML) { switch (char) { case '<': // ignore '<' if inside a quote if (in_quote_char) { break; } // we're seeing a nested '<' depth++; break; case '>': // ignore '>' if inside a quote if (in_quote_char) { break; } // something like this is happening: '<<>>' if (depth) { depth--; break; } // this is closing the tag in tag_buffer in_quote_char = ''; state = STATE_PLAINTEXT; tag_buffer += '>'; if (allowable_tags.has(normalize_tag(tag_buffer))) { output += tag_buffer; } else { output += tag_replacement; } tag_buffer = ''; break; case '"': case '\'': // catch both single and double quotes if (char === in_quote_char) { in_quote_char = ''; } else { in_quote_char = in_quote_char || char; } tag_buffer += char; break; case '-': if (tag_buffer === '': if (tag_buffer.slice(-2) == '--') { // close the comment state = STATE_PLAINTEXT; } tag_buffer = ''; break; default: tag_buffer += char; break; } } } // save the context for future iterations context.state = state; context.tag_buffer = tag_buffer; context.depth = depth; context.in_quote_char = in_quote_char; return output; } function parse_allowable_tags(allowable_tags) { let tag_set = new Set(); if (typeof allowable_tags === 'string') { let match; while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) { tag_set.add(match[1]); } } else if (!Symbol.nonNative && typeof allowable_tags[Symbol.iterator] === 'function') { tag_set = new Set(allowable_tags); } else if (typeof allowable_tags.forEach === 'function') { // IE11 compatible allowable_tags.forEach(tag_set.add, tag_set); } return tag_set; } function normalize_tag(tag_buffer) { let match = NORMALIZE_TAG_REGEX.exec(tag_buffer); return match ? match[1].toLowerCase() : null; } if (true) { // AMD !(__WEBPACK_AMD_DEFINE_RESULT__ = (function module_factory() { return striptags; }).call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else {} }(this)); /***/ }), /***/ "./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-1OlNbSWJ.css": /*!******************************************************************************************!*\ !*** ./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-1OlNbSWJ.css ***! \******************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_index_1OlNbSWJ_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./index-1OlNbSWJ.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/calendar-availability-vue/dist/assets/index-1OlNbSWJ.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_index_1OlNbSWJ_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_index_1OlNbSWJ_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_index_1OlNbSWJ_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_index_1OlNbSWJ_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/dialogs/dist/style.css": /*!********************************************************!*\ !*** ./node_modules/@nextcloud/dialogs/dist/style.css ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../css-loader/dist/cjs.js!./style.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/dialogs/dist/style.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue-select/dist/vue-select.css": /*!****************************************************************!*\ !*** ./node_modules/@nextcloud/vue-select/dist/vue-select.css ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_vue_select_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../css-loader/dist/cjs.js!./vue-select.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue-select/dist/vue-select.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_vue_select_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_vue_select_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_vue_select_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_vue_select_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionButton-rOZFVQA8.css": /*!*****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionButton-rOZFVQA8.css ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionButton_rOZFVQA8_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionButton-rOZFVQA8.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButton-rOZFVQA8.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionButton_rOZFVQA8_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionButton_rOZFVQA8_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionButton_rOZFVQA8_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionButton_rOZFVQA8_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionButtonGroup-oXobVIqQ.css": /*!**********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionButtonGroup-oXobVIqQ.css ***! \**********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionButtonGroup_oXobVIqQ_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionButtonGroup-oXobVIqQ.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButtonGroup-oXobVIqQ.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionButtonGroup_oXobVIqQ_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionButtonGroup_oXobVIqQ_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionButtonGroup_oXobVIqQ_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionButtonGroup_oXobVIqQ_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionCaption-afJqyJO6.css": /*!******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionCaption-afJqyJO6.css ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionCaption_afJqyJO6_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionCaption-afJqyJO6.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionCaption-afJqyJO6.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionCaption_afJqyJO6_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionCaption_afJqyJO6_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionCaption_afJqyJO6_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionCaption_afJqyJO6_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionCheckbox-6Pvlr1E7.css": /*!*******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionCheckbox-6Pvlr1E7.css ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionCheckbox_6Pvlr1E7_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionCheckbox-6Pvlr1E7.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionCheckbox-6Pvlr1E7.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionCheckbox_6Pvlr1E7_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionCheckbox_6Pvlr1E7_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionCheckbox_6Pvlr1E7_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionCheckbox_6Pvlr1E7_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionInput-4zSvDkWm.css": /*!****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionInput-4zSvDkWm.css ***! \****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionInput_4zSvDkWm_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionInput-4zSvDkWm.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionInput-4zSvDkWm.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionInput_4zSvDkWm_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionInput_4zSvDkWm_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionInput_4zSvDkWm_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionInput_4zSvDkWm_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionLink-zdzQgwtH.css": /*!***************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionLink-zdzQgwtH.css ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionLink_zdzQgwtH_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionLink-zdzQgwtH.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionLink-zdzQgwtH.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionLink_zdzQgwtH_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionLink_zdzQgwtH_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionLink_zdzQgwtH_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionLink_zdzQgwtH_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionRadio-eOr9Sp-D.css": /*!****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionRadio-eOr9Sp-D.css ***! \****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionRadio_eOr9Sp_D_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionRadio-eOr9Sp-D.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRadio-eOr9Sp-D.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionRadio_eOr9Sp_D_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionRadio_eOr9Sp_D_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionRadio_eOr9Sp_D_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionRadio_eOr9Sp_D_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-MFTD6tYI.css": /*!*****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-MFTD6tYI.css ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionRouter_MFTD6tYI_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionRouter-MFTD6tYI.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-MFTD6tYI.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionRouter_MFTD6tYI_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionRouter_MFTD6tYI_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionRouter_MFTD6tYI_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionRouter_MFTD6tYI_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionSeparator-l98xWbiL.css": /*!********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionSeparator-l98xWbiL.css ***! \********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionSeparator_l98xWbiL_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionSeparator-l98xWbiL.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionSeparator-l98xWbiL.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionSeparator_l98xWbiL_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionSeparator_l98xWbiL_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionSeparator_l98xWbiL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionSeparator_l98xWbiL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionText-GJYwsw_U.css": /*!***************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionText-GJYwsw_U.css ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionText_GJYwsw_U_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionText-GJYwsw_U.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionText-GJYwsw_U.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionText_GJYwsw_U_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionText_GJYwsw_U_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionText_GJYwsw_U_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionText_GJYwsw_U_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionTextEditable-JrYuWEDd.css": /*!***********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionTextEditable-JrYuWEDd.css ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActionTextEditable_JrYuWEDd_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionTextEditable-JrYuWEDd.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionTextEditable-JrYuWEDd.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionTextEditable_JrYuWEDd_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionTextEditable_JrYuWEDd_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionTextEditable_JrYuWEDd_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionTextEditable_JrYuWEDd_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcActions-4Gq5bZLW.css": /*!************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcActions-4Gq5bZLW.css ***! \************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcActions_4Gq5bZLW_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActions-4Gq5bZLW.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActions-4Gq5bZLW.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActions_4Gq5bZLW_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActions_4Gq5bZLW_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActions_4Gq5bZLW_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActions_4Gq5bZLW_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppContent-SZz3PTd8.css": /*!***************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppContent-SZz3PTd8.css ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppContent_SZz3PTd8_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppContent-SZz3PTd8.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppContent-SZz3PTd8.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppContent_SZz3PTd8_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppContent_SZz3PTd8_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppContent_SZz3PTd8_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppContent_SZz3PTd8_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigation-vjqOL-kR.css": /*!******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigation-vjqOL-kR.css ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigation_vjqOL_kR_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigation-vjqOL-kR.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigation-vjqOL-kR.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigation_vjqOL_kR_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigation_vjqOL_kR_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigation_vjqOL_kR_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigation_vjqOL_kR_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationCaption-l5yRGXZx.css": /*!*************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationCaption-l5yRGXZx.css ***! \*************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigationCaption_l5yRGXZx_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigationCaption-l5yRGXZx.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationCaption-l5yRGXZx.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigationCaption_l5yRGXZx_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigationCaption_l5yRGXZx_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigationCaption_l5yRGXZx_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigationCaption_l5yRGXZx_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationIconBullet-Nf3ARMLv.css": /*!****************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationIconBullet-Nf3ARMLv.css ***! \****************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigationIconBullet_Nf3ARMLv_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigationIconBullet-Nf3ARMLv.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationIconBullet-Nf3ARMLv.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigationIconBullet_Nf3ARMLv_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigationIconBullet_Nf3ARMLv_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigationIconBullet_Nf3ARMLv_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigationIconBullet_Nf3ARMLv_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationItem-caMsw_N_.css": /*!**********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationItem-caMsw_N_.css ***! \**********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigationItem_caMsw_N_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigationItem-caMsw_N_.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationItem-caMsw_N_.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigationItem_caMsw_N_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigationItem_caMsw_N_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigationItem_caMsw_N_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigationItem_caMsw_N_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNew-joyd78FM.css": /*!*********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNew-joyd78FM.css ***! \*********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigationNew_joyd78FM_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigationNew-joyd78FM.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNew-joyd78FM.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigationNew_joyd78FM_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigationNew_joyd78FM_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigationNew_joyd78FM_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigationNew_joyd78FM_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNewItem-ue-H4LQY.css": /*!*************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNewItem-ue-H4LQY.css ***! \*************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigationNewItem_ue_H4LQY_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigationNewItem-ue-H4LQY.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationNewItem-ue-H4LQY.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigationNewItem_ue_H4LQY_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigationNewItem_ue_H4LQY_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigationNewItem_ue_H4LQY_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigationNewItem_ue_H4LQY_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSettings-Jx_6RpSn.css": /*!**************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSettings-Jx_6RpSn.css ***! \**************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigationSettings_Jx_6RpSn_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigationSettings-Jx_6RpSn.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSettings-Jx_6RpSn.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigationSettings_Jx_6RpSn_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigationSettings_Jx_6RpSn_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigationSettings_Jx_6RpSn_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigationSettings_Jx_6RpSn_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSpacer-MfL8GeCN.css": /*!************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSpacer-MfL8GeCN.css ***! \************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigationSpacer_MfL8GeCN_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigationSpacer-MfL8GeCN.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationSpacer-MfL8GeCN.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigationSpacer_MfL8GeCN_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigationSpacer_MfL8GeCN_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigationSpacer_MfL8GeCN_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigationSpacer_MfL8GeCN_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationToggle-3vMKtCQL.css": /*!************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationToggle-3vMKtCQL.css ***! \************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppNavigationToggle_3vMKtCQL_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppNavigationToggle-3vMKtCQL.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppNavigationToggle-3vMKtCQL.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppNavigationToggle_3vMKtCQL_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppNavigationToggle_3vMKtCQL_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppNavigationToggle_3vMKtCQL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppNavigationToggle_3vMKtCQL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsDialog-0eOo3ERv.css": /*!**********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsDialog-0eOo3ERv.css ***! \**********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppSettingsDialog_0eOo3ERv_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppSettingsDialog-0eOo3ERv.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsDialog-0eOo3ERv.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppSettingsDialog_0eOo3ERv_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppSettingsDialog_0eOo3ERv_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppSettingsDialog_0eOo3ERv_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppSettingsDialog_0eOo3ERv_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsSection-ahfdhix_.css": /*!***********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsSection-ahfdhix_.css ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppSettingsSection_ahfdhix_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppSettingsSection-ahfdhix_.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSettingsSection-ahfdhix_.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppSettingsSection_ahfdhix_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppSettingsSection_ahfdhix_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppSettingsSection_ahfdhix_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppSettingsSection_ahfdhix_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppSidebar-YHd7DpMW.css": /*!***************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppSidebar-YHd7DpMW.css ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppSidebar_YHd7DpMW_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppSidebar-YHd7DpMW.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSidebar-YHd7DpMW.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppSidebar_YHd7DpMW_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppSidebar_YHd7DpMW_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppSidebar_YHd7DpMW_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppSidebar_YHd7DpMW_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAppSidebarTab-FywbKxqo.css": /*!******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAppSidebarTab-FywbKxqo.css ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAppSidebarTab_FywbKxqo_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAppSidebarTab-FywbKxqo.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAppSidebarTab-FywbKxqo.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAppSidebarTab_FywbKxqo_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAppSidebarTab_FywbKxqo_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAppSidebarTab_FywbKxqo_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAppSidebarTab_FywbKxqo_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcAvatar-5H9cqcD1.css": /*!***********************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcAvatar-5H9cqcD1.css ***! \***********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcAvatar_5H9cqcD1_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcAvatar-5H9cqcD1.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcAvatar-5H9cqcD1.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcAvatar_5H9cqcD1_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcAvatar_5H9cqcD1_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcAvatar_5H9cqcD1_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcAvatar_5H9cqcD1_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-HspaFygg.css": /*!***************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-HspaFygg.css ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcBreadcrumb_HspaFygg_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcBreadcrumb-HspaFygg.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-HspaFygg.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcBreadcrumb_HspaFygg_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcBreadcrumb_HspaFygg_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcBreadcrumb_HspaFygg_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcBreadcrumb_HspaFygg_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-KBV0Jccv.css": /*!****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-KBV0Jccv.css ***! \****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcBreadcrumbs_KBV0Jccv_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcBreadcrumbs-KBV0Jccv.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-KBV0Jccv.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcBreadcrumbs_KBV0Jccv_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcBreadcrumbs_KBV0Jccv_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcBreadcrumbs_KBV0Jccv_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcBreadcrumbs_KBV0Jccv_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcButton-4Wj3KJn8.css": /*!***********************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcButton-4Wj3KJn8.css ***! \***********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcButton_4Wj3KJn8_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcButton-4Wj3KJn8.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcButton-4Wj3KJn8.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcButton_4Wj3KJn8_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcButton_4Wj3KJn8_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcButton_4Wj3KJn8_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcButton_4Wj3KJn8_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcCheckboxRadioSwitch-mgKotCbU.css": /*!************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcCheckboxRadioSwitch-mgKotCbU.css ***! \************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcCheckboxRadioSwitch_mgKotCbU_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcCheckboxRadioSwitch-mgKotCbU.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcCheckboxRadioSwitch-mgKotCbU.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcCheckboxRadioSwitch_mgKotCbU_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcCheckboxRadioSwitch_mgKotCbU_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcCheckboxRadioSwitch_mgKotCbU_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcCheckboxRadioSwitch_mgKotCbU_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcColorPicker-PzIRM1j1.css": /*!****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcColorPicker-PzIRM1j1.css ***! \****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcColorPicker_PzIRM1j1_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcColorPicker-PzIRM1j1.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcColorPicker-PzIRM1j1.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcColorPicker_PzIRM1j1_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcColorPicker_PzIRM1j1_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcColorPicker_PzIRM1j1_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcColorPicker_PzIRM1j1_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcContent-LWR23l9i.css": /*!************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcContent-LWR23l9i.css ***! \************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcContent_LWR23l9i_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcContent-LWR23l9i.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcContent-LWR23l9i.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcContent_LWR23l9i_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcContent_LWR23l9i_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcContent_LWR23l9i_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcContent_LWR23l9i_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcCounterBubble-rgkmqN46.css": /*!******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcCounterBubble-rgkmqN46.css ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcCounterBubble_rgkmqN46_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcCounterBubble-rgkmqN46.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcCounterBubble-rgkmqN46.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcCounterBubble_rgkmqN46_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcCounterBubble_rgkmqN46_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcCounterBubble_rgkmqN46_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcCounterBubble_rgkmqN46_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidget-01deRW9Z.css": /*!********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidget-01deRW9Z.css ***! \********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcDashboardWidget_01deRW9Z_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcDashboardWidget-01deRW9Z.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidget-01deRW9Z.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcDashboardWidget_01deRW9Z_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcDashboardWidget_01deRW9Z_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcDashboardWidget_01deRW9Z_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcDashboardWidget_01deRW9Z_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidgetItem-OL--xR_P.css": /*!************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidgetItem-OL--xR_P.css ***! \************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcDashboardWidgetItem_OL_xR_P_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcDashboardWidgetItem-OL--xR_P.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidgetItem-OL--xR_P.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcDashboardWidgetItem_OL_xR_P_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcDashboardWidgetItem_OL_xR_P_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcDashboardWidgetItem_OL_xR_P_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcDashboardWidgetItem_OL_xR_P_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcDateTimePicker-TArRbMs-.css": /*!*******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcDateTimePicker-TArRbMs-.css ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcDateTimePicker_TArRbMs_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcDateTimePicker-TArRbMs-.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDateTimePicker-TArRbMs-.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcDateTimePicker_TArRbMs_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcDateTimePicker_TArRbMs_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcDateTimePicker_TArRbMs_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcDateTimePicker_TArRbMs_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcDateTimePickerNative-5yybtvfx.css": /*!*************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcDateTimePickerNative-5yybtvfx.css ***! \*************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcDateTimePickerNative_5yybtvfx_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcDateTimePickerNative-5yybtvfx.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDateTimePickerNative-5yybtvfx.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcDateTimePickerNative_5yybtvfx_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcDateTimePickerNative_5yybtvfx_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcDateTimePickerNative_5yybtvfx_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcDateTimePickerNative_5yybtvfx_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcDialog-DN-rY-55.css": /*!***********************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcDialog-DN-rY-55.css ***! \***********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcDialog_DN_rY_55_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcDialog-DN-rY-55.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcDialog-DN-rY-55.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcDialog_DN_rY_55_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcDialog_DN_rY_55_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcDialog_DN_rY_55_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcDialog_DN_rY_55_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcEllipsisedOption-eoI10kvc.css": /*!*********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcEllipsisedOption-eoI10kvc.css ***! \*********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcEllipsisedOption_eoI10kvc_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcEllipsisedOption-eoI10kvc.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEllipsisedOption-eoI10kvc.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcEllipsisedOption_eoI10kvc_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcEllipsisedOption_eoI10kvc_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcEllipsisedOption_eoI10kvc_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcEllipsisedOption_eoI10kvc_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcEmojiPicker-wTIbvcrG.css": /*!****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcEmojiPicker-wTIbvcrG.css ***! \****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcEmojiPicker_wTIbvcrG_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcEmojiPicker-wTIbvcrG.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEmojiPicker-wTIbvcrG.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcEmojiPicker_wTIbvcrG_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcEmojiPicker_wTIbvcrG_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcEmojiPicker_wTIbvcrG_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcEmojiPicker_wTIbvcrG_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcEmptyContent-pSz7F6Oe.css": /*!*****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcEmptyContent-pSz7F6Oe.css ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcEmptyContent_pSz7F6Oe_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcEmptyContent-pSz7F6Oe.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcEmptyContent-pSz7F6Oe.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcEmptyContent_pSz7F6Oe_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcEmptyContent_pSz7F6Oe_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcEmptyContent_pSz7F6Oe_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcEmptyContent_pSz7F6Oe_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcGuestContent-mGGTzI2_.css": /*!*****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcGuestContent-mGGTzI2_.css ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcGuestContent_mGGTzI2_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcGuestContent-mGGTzI2_.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcGuestContent-mGGTzI2_.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcGuestContent_mGGTzI2_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcGuestContent_mGGTzI2_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcGuestContent_mGGTzI2_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcGuestContent_mGGTzI2_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcHeaderMenu-Srn5iXdL.css": /*!***************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcHeaderMenu-Srn5iXdL.css ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcHeaderMenu_Srn5iXdL_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcHeaderMenu-Srn5iXdL.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcHeaderMenu-Srn5iXdL.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcHeaderMenu_Srn5iXdL_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcHeaderMenu_Srn5iXdL_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcHeaderMenu_Srn5iXdL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcHeaderMenu_Srn5iXdL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcIconSvgWrapper-arqrq5Bj.css": /*!*******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcIconSvgWrapper-arqrq5Bj.css ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcIconSvgWrapper_arqrq5Bj_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcIconSvgWrapper-arqrq5Bj.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcIconSvgWrapper-arqrq5Bj.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcIconSvgWrapper_arqrq5Bj_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcIconSvgWrapper_arqrq5Bj_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcIconSvgWrapper_arqrq5Bj_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcIconSvgWrapper_arqrq5Bj_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcInputConfirmCancel-ks8z8dIn.css": /*!***********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcInputConfirmCancel-ks8z8dIn.css ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcInputConfirmCancel_ks8z8dIn_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcInputConfirmCancel-ks8z8dIn.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcInputConfirmCancel-ks8z8dIn.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcInputConfirmCancel_ks8z8dIn_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcInputConfirmCancel_ks8z8dIn_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcInputConfirmCancel_ks8z8dIn_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcInputConfirmCancel_ks8z8dIn_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcInputField-L2Lld_iG.css": /*!***************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcInputField-L2Lld_iG.css ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcInputField_L2Lld_iG_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcInputField-L2Lld_iG.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcInputField-L2Lld_iG.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcInputField_L2Lld_iG_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcInputField_L2Lld_iG_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcInputField_L2Lld_iG_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcInputField_L2Lld_iG_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcListItem-L8LeGwpe.css": /*!*************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcListItem-L8LeGwpe.css ***! \*************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcListItem_L8LeGwpe_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcListItem-L8LeGwpe.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcListItem-L8LeGwpe.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcListItem_L8LeGwpe_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcListItem_L8LeGwpe_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcListItem_L8LeGwpe_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcListItem_L8LeGwpe_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcListItemIcon-PQ2s6ZqX.css": /*!*****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcListItemIcon-PQ2s6ZqX.css ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcListItemIcon_PQ2s6ZqX_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcListItemIcon-PQ2s6ZqX.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcListItemIcon-PQ2s6ZqX.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcListItemIcon_PQ2s6ZqX_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcListItemIcon_PQ2s6ZqX_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcListItemIcon_PQ2s6ZqX_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcListItemIcon_PQ2s6ZqX_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcLoadingIcon-hZn7TJM8.css": /*!****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcLoadingIcon-hZn7TJM8.css ***! \****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcLoadingIcon_hZn7TJM8_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcLoadingIcon-hZn7TJM8.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcLoadingIcon-hZn7TJM8.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcLoadingIcon_hZn7TJM8_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcLoadingIcon_hZn7TJM8_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcLoadingIcon_hZn7TJM8_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcLoadingIcon_hZn7TJM8_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcMentionBubble-YYl1ib_F.css": /*!******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcMentionBubble-YYl1ib_F.css ***! \******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcMentionBubble_YYl1ib_F_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcMentionBubble-YYl1ib_F.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcMentionBubble-YYl1ib_F.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcMentionBubble_YYl1ib_F_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcMentionBubble_YYl1ib_F_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcMentionBubble_YYl1ib_F_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcMentionBubble_YYl1ib_F_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcModal-sIK5sUoC.css": /*!**********************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcModal-sIK5sUoC.css ***! \**********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcModal_sIK5sUoC_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcModal-sIK5sUoC.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcModal-sIK5sUoC.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcModal_sIK5sUoC_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcModal_sIK5sUoC_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcModal_sIK5sUoC_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcModal_sIK5sUoC_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcNoteCard-f0NZpwjL.css": /*!*************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcNoteCard-f0NZpwjL.css ***! \*************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcNoteCard_f0NZpwjL_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcNoteCard-f0NZpwjL.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcNoteCard-f0NZpwjL.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcNoteCard_f0NZpwjL_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcNoteCard_f0NZpwjL_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcNoteCard_f0NZpwjL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcNoteCard_f0NZpwjL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcPopover-MK4GcuPY.css": /*!************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcPopover-MK4GcuPY.css ***! \************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcPopover_MK4GcuPY_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcPopover-MK4GcuPY.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcPopover-MK4GcuPY.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcPopover_MK4GcuPY_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcPopover_MK4GcuPY_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcPopover_MK4GcuPY_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcPopover_MK4GcuPY_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcProgressBar-w4-G5gQR.css": /*!****************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcProgressBar-w4-G5gQR.css ***! \****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcProgressBar_w4_G5gQR_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcProgressBar-w4-G5gQR.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcProgressBar-w4-G5gQR.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcProgressBar_w4_G5gQR_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcProgressBar_w4_G5gQR_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcProgressBar_w4_G5gQR_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcProgressBar_w4_G5gQR_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcRelatedResourcesPanel-m3uf_nvH.css": /*!**************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcRelatedResourcesPanel-m3uf_nvH.css ***! \**************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcRelatedResourcesPanel_m3uf_nvH_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcRelatedResourcesPanel-m3uf_nvH.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRelatedResourcesPanel-m3uf_nvH.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcRelatedResourcesPanel_m3uf_nvH_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcRelatedResourcesPanel_m3uf_nvH_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcRelatedResourcesPanel_m3uf_nvH_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcRelatedResourcesPanel_m3uf_nvH_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcRichContenteditable-CuR1YKTU.css": /*!************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcRichContenteditable-CuR1YKTU.css ***! \************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcRichContenteditable_CuR1YKTU_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcRichContenteditable-CuR1YKTU.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRichContenteditable-CuR1YKTU.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcRichContenteditable_CuR1YKTU_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcRichContenteditable_CuR1YKTU_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcRichContenteditable_CuR1YKTU_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcRichContenteditable_CuR1YKTU_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcRichText-Pw6kTpnR.css": /*!*************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcRichText-Pw6kTpnR.css ***! \*************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcRichText_Pw6kTpnR_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcRichText-Pw6kTpnR.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcRichText-Pw6kTpnR.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcRichText_Pw6kTpnR_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcRichText_Pw6kTpnR_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcRichText_Pw6kTpnR_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcRichText_Pw6kTpnR_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcSelect-GsLmwj9w.css": /*!***********************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcSelect-GsLmwj9w.css ***! \***********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcSelect_GsLmwj9w_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcSelect-GsLmwj9w.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSelect-GsLmwj9w.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcSelect_GsLmwj9w_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcSelect_GsLmwj9w_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcSelect_GsLmwj9w_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcSelect_GsLmwj9w_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcSettingsInputText-MPi6a3Yy.css": /*!**********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcSettingsInputText-MPi6a3Yy.css ***! \**********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcSettingsInputText_MPi6a3Yy_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcSettingsInputText-MPi6a3Yy.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsInputText-MPi6a3Yy.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcSettingsInputText_MPi6a3Yy_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcSettingsInputText_MPi6a3Yy_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcSettingsInputText_MPi6a3Yy_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcSettingsInputText_MPi6a3Yy_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcSettingsSection-PEWm0eeL.css": /*!********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcSettingsSection-PEWm0eeL.css ***! \********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcSettingsSection_PEWm0eeL_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcSettingsSection-PEWm0eeL.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsSection-PEWm0eeL.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcSettingsSection_PEWm0eeL_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcSettingsSection_PEWm0eeL_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcSettingsSection_PEWm0eeL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcSettingsSection_PEWm0eeL_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcSettingsSelectGroup-_Jpb8yE3.css": /*!************************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcSettingsSelectGroup-_Jpb8yE3.css ***! \************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcSettingsSelectGroup_Jpb8yE3_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcSettingsSelectGroup-_Jpb8yE3.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcSettingsSelectGroup-_Jpb8yE3.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcSettingsSelectGroup_Jpb8yE3_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcSettingsSelectGroup_Jpb8yE3_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcSettingsSelectGroup_Jpb8yE3_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcSettingsSelectGroup_Jpb8yE3_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcTextArea-4rVwq6GK.css": /*!*************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcTextArea-4rVwq6GK.css ***! \*************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcTextArea_4rVwq6GK_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcTextArea-4rVwq6GK.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcTextArea-4rVwq6GK.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcTextArea_4rVwq6GK_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcTextArea_4rVwq6GK_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcTextArea_4rVwq6GK_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcTextArea_4rVwq6GK_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcUserBubble-jjzI5imn.css": /*!***************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcUserBubble-jjzI5imn.css ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcUserBubble_jjzI5imn_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcUserBubble-jjzI5imn.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcUserBubble-jjzI5imn.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcUserBubble_jjzI5imn_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcUserBubble_jjzI5imn_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcUserBubble_jjzI5imn_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcUserBubble_jjzI5imn_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/NcUserStatusIcon-62u43_6P.css": /*!*******************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/NcUserStatusIcon-62u43_6P.css ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_NcUserStatusIcon_62u43_6P_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcUserStatusIcon-62u43_6P.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcUserStatusIcon-62u43_6P.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcUserStatusIcon_62u43_6P_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcUserStatusIcon_62u43_6P_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcUserStatusIcon_62u43_6P_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcUserStatusIcon_62u43_6P_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/Tooltip-wOLIuz0Q.css": /*!**********************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/Tooltip-wOLIuz0Q.css ***! \**********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_Tooltip_wOLIuz0Q_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./Tooltip-wOLIuz0Q.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/Tooltip-wOLIuz0Q.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_Tooltip_wOLIuz0Q_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_Tooltip_wOLIuz0Q_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_Tooltip_wOLIuz0Q_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_Tooltip_wOLIuz0Q_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/@nextcloud/vue/dist/assets/referencePickerModal-A0PlFUEI.css": /*!***********************************************************************************!*\ !*** ./node_modules/@nextcloud/vue/dist/assets/referencePickerModal-A0PlFUEI.css ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_referencePickerModal_A0PlFUEI_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./referencePickerModal-A0PlFUEI.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/referencePickerModal-A0PlFUEI.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_referencePickerModal_A0PlFUEI_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_referencePickerModal_A0PlFUEI_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_referencePickerModal_A0PlFUEI_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_referencePickerModal_A0PlFUEI_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/splitpanes/dist/splitpanes.css": /*!*****************************************************!*\ !*** ./node_modules/splitpanes/dist/splitpanes.css ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_splitpanes_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../css-loader/dist/cjs.js!./splitpanes.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/splitpanes/dist/splitpanes.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_splitpanes_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_splitpanes_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_splitpanes_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_splitpanes_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css": /*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css ***! \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AppNavigation/AppNavigationHeader/AppNavigationHeaderNewEvent.vue?vue&type=style&index=0&id=673844b5&scoped=true&lang=css"); var options = {}; options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_AppNavigationHeaderNewEvent_vue_vue_type_style_index_0_id_673844b5_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css": /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsCalendarPending.vue?vue&type=style&index=0&id=6aff0820&scoped=true&lang=css"); var options = {}; options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsCalendarPending_vue_vue_type_style_index_0_id_6aff0820_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css": /*!************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css ***! \************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Properties/PropertyIsLeave.vue?vue&type=style&index=0&id=56b63a1e&scoped=true&lang=css"); var options = {}; options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyIsLeave_vue_vue_type_style_index_0_id_56b63a1e_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=style&index=0&id=5448722f&scoped=true&lang=css": /*!************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=style&index=0&id=5448722f&scoped=true&lang=css ***! \************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceRoomType_vue_vue_type_style_index_0_id_5448722f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceRoomType.vue?vue&type=style&index=0&id=5448722f&scoped=true&lang=css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Editor/Resources/ResourceRoomType.vue?vue&type=style&index=0&id=5448722f&scoped=true&lang=css"); var options = {}; options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceRoomType_vue_vue_type_style_index_0_id_5448722f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceRoomType_vue_vue_type_style_index_0_id_5448722f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceRoomType_vue_vue_type_style_index_0_id_5448722f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceRoomType_vue_vue_type_style_index_0_id_5448722f_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }), /***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": /*!****************************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! \****************************************************************************/ /***/ ((module) => { "use strict"; var stylesInDOM = []; function getIndexByIdentifier(identifier) { var result = -1; for (var i = 0; i < stylesInDOM.length; i++) { if (stylesInDOM[i].identifier === identifier) { result = i; break; } } return result; } function modulesToDom(list, options) { var idCountMap = {}; var identifiers = []; for (var i = 0; i < list.length; i++) { var item = list[i]; var id = options.base ? item[0] + options.base : item[0]; var count = idCountMap[id] || 0; var identifier = "".concat(id, " ").concat(count); idCountMap[id] = count + 1; var indexByIdentifier = getIndexByIdentifier(identifier); var obj = { css: item[1], media: item[2], sourceMap: item[3], supports: item[4], layer: item[5] }; if (indexByIdentifier !== -1) { stylesInDOM[indexByIdentifier].references++; stylesInDOM[indexByIdentifier].updater(obj); } else { var updater = addElementStyle(obj, options); options.byIndex = i; stylesInDOM.splice(i, 0, { identifier: identifier, updater: updater, references: 1 }); } identifiers.push(identifier); } return identifiers; } function addElementStyle(obj, options) { var api = options.domAPI(options); api.update(obj); var updater = function updater(newObj) { if (newObj) { if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) { return; } api.update(obj = newObj); } else { api.remove(); } }; return updater; } module.exports = function (list, options) { options = options || {}; list = list || []; var lastIdentifiers = modulesToDom(list, options); return function update(newList) { newList = newList || []; for (var i = 0; i < lastIdentifiers.length; i++) { var identifier = lastIdentifiers[i]; var index = getIndexByIdentifier(identifier); stylesInDOM[index].references--; } var newLastIdentifiers = modulesToDom(newList, options); for (var _i = 0; _i < lastIdentifiers.length; _i++) { var _identifier = lastIdentifiers[_i]; var _index = getIndexByIdentifier(_identifier); if (stylesInDOM[_index].references === 0) { stylesInDOM[_index].updater(); stylesInDOM.splice(_index, 1); } } lastIdentifiers = newLastIdentifiers; }; }; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js": /*!********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***! \********************************************************************/ /***/ ((module) => { "use strict"; var memo = {}; /* istanbul ignore next */ function getTarget(target) { if (typeof memo[target] === "undefined") { var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { // This will throw an exception if access to iframe is blocked // due to cross-origin restrictions styleTarget = styleTarget.contentDocument.head; } catch (e) { // istanbul ignore next styleTarget = null; } } memo[target] = styleTarget; } return memo[target]; } /* istanbul ignore next */ function insertBySelector(insert, style) { var target = getTarget(insert); if (!target) { throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); } target.appendChild(style); } module.exports = insertBySelector; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js": /*!**********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***! \**********************************************************************/ /***/ ((module) => { "use strict"; /* istanbul ignore next */ function insertStyleElement(options) { var element = document.createElement("style"); options.setAttributes(element, options.attributes); options.insert(element, options.options); return element; } module.exports = insertStyleElement; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js": /*!**********************************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***! \**********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* istanbul ignore next */ function setAttributesWithoutAttributes(styleElement) { var nonce = true ? __webpack_require__.nc : 0; if (nonce) { styleElement.setAttribute("nonce", nonce); } } module.exports = setAttributesWithoutAttributes; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js": /*!***************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***! \***************************************************************/ /***/ ((module) => { "use strict"; /* istanbul ignore next */ function apply(styleElement, options, obj) { var css = ""; if (obj.supports) { css += "@supports (".concat(obj.supports, ") {"); } if (obj.media) { css += "@media ".concat(obj.media, " {"); } var needLayer = typeof obj.layer !== "undefined"; if (needLayer) { css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {"); } css += obj.css; if (needLayer) { css += "}"; } if (obj.media) { css += "}"; } if (obj.supports) { css += "}"; } var sourceMap = obj.sourceMap; if (sourceMap && typeof btoa !== "undefined") { css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); } // For old IE /* istanbul ignore if */ options.styleTagTransform(css, styleElement, options.options); } function removeStyleElement(styleElement) { // istanbul ignore if if (styleElement.parentNode === null) { return false; } styleElement.parentNode.removeChild(styleElement); } /* istanbul ignore next */ function domAPI(options) { if (typeof document === "undefined") { return { update: function update() {}, remove: function remove() {} }; } var styleElement = options.insertStyleElement(options); return { update: function update(obj) { apply(styleElement, options, obj); }, remove: function remove() { removeStyleElement(styleElement); } }; } module.exports = domAPI; /***/ }), /***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js": /*!*********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***! \*********************************************************************/ /***/ ((module) => { "use strict"; /* istanbul ignore next */ function styleTagTransform(css, styleElement) { if (styleElement.styleSheet) { styleElement.styleSheet.cssText = css; } else { while (styleElement.firstChild) { styleElement.removeChild(styleElement.firstChild); } styleElement.appendChild(document.createTextNode(css)); } } module.exports = styleTagTransform; /***/ }), /***/ "./node_modules/style-to-object/index.js": /*!***********************************************!*\ !*** ./node_modules/style-to-object/index.js ***! \***********************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var parse = __webpack_require__(/*! inline-style-parser */ "./node_modules/inline-style-parser/index.js"); /** * Parses inline style to object. * * @example * // returns { 'line-height': '42' } * StyleToObject('line-height: 42;'); * * @param {String} style - The inline style. * @param {Function} [iterator] - The iterator function. * @return {null|Object} */ function StyleToObject(style, iterator) { var output = null; if (!style || typeof style !== 'string') { return output; } var declaration; var declarations = parse(style); var hasIterator = typeof iterator === 'function'; var property; var value; for (var i = 0, len = declarations.length; i < len; i++) { declaration = declarations[i]; property = declaration.property; value = declaration.value; if (hasIterator) { iterator(property, value, declaration); } else if (value) { output || (output = {}); output[property] = value; } } return output; } module.exports = StyleToObject; module.exports["default"] = StyleToObject; // ESM support /***/ }), /***/ "./node_modules/tabbable/dist/index.esm.js": /*!*************************************************!*\ !*** ./node_modules/tabbable/dist/index.esm.js ***! \*************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ focusable: () => (/* binding */ focusable), /* harmony export */ getTabIndex: () => (/* binding */ getTabIndex), /* harmony export */ isFocusable: () => (/* binding */ isFocusable), /* harmony export */ isTabbable: () => (/* binding */ isTabbable), /* harmony export */ tabbable: () => (/* binding */ tabbable) /* harmony export */ }); /*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */ // NOTE: separate `:not()` selectors has broader browser support than the newer // `:not([inert], [inert] *)` (Feb 2023) // CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes // the entire query to fail, resulting in no nodes found, which will break a lot // of things... so we have to rely on JS to identify nodes inside an inert container var candidateSelectors = ['input:not([inert])', 'select:not([inert])', 'textarea:not([inert])', 'a[href]:not([inert])', 'button:not([inert])', '[tabindex]:not(slot):not([inert])', 'audio[controls]:not([inert])', 'video[controls]:not([inert])', '[contenteditable]:not([contenteditable="false"]):not([inert])', 'details>summary:first-of-type:not([inert])', 'details:not([inert])']; var candidateSelector = /* #__PURE__ */candidateSelectors.join(','); var NoElement = typeof Element === 'undefined'; var matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; var getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) { var _element$getRootNode; return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element); } : function (element) { return element === null || element === void 0 ? void 0 : element.ownerDocument; }; /** * Determines if a node is inert or in an inert ancestor. * @param {Element} [node] * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to * see if any of them are inert. If false, only `node` itself is considered. * @returns {boolean} True if inert itself or by way of being in an inert ancestor. * False if `node` is falsy. */ var isInert = function isInert(node, lookUp) { var _node$getAttribute; if (lookUp === void 0) { lookUp = true; } // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert` // JS API property; we have to check the attribute, which can either be empty or 'true'; // if it's `null` (not specified) or 'false', it's an active element var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert'); var inert = inertAtt === '' || inertAtt === 'true'; // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')` // if it weren't for `matches()` not being a function on shadow roots; the following // code works for any kind of node // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)` // so it likely would not support `:is([inert] *)` either... var result = inert || lookUp && node && isInert(node.parentNode); // recursive return result; }; /** * Determines if a node's content is editable. * @param {Element} [node] * @returns True if it's content-editable; false if it's not or `node` is falsy. */ var isContentEditable = function isContentEditable(node) { var _node$getAttribute2; // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have // to use the attribute directly to check for this, which can either be empty or 'true'; // if it's `null` (not specified) or 'false', it's a non-editable element var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable'); return attValue === '' || attValue === 'true'; }; /** * @param {Element} el container to check in * @param {boolean} includeContainer add container to check * @param {(node: Element) => boolean} filter filter candidates * @returns {Element[]} */ var getCandidates = function getCandidates(el, includeContainer, filter) { // even if `includeContainer=false`, we still have to check it for inertness because // if it's inert, all its children are inert if (isInert(el)) { return []; } var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector)); if (includeContainer && matches.call(el, candidateSelector)) { candidates.unshift(el); } candidates = candidates.filter(filter); return candidates; }; /** * @callback GetShadowRoot * @param {Element} element to check for shadow root * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available. */ /** * @callback ShadowRootFilter * @param {Element} shadowHostNode the element which contains shadow content * @returns {boolean} true if a shadow root could potentially contain valid candidates. */ /** * @typedef {Object} CandidateScope * @property {Element} scopeParent contains inner candidates * @property {Element[]} candidates list of candidates found in the scope parent */ /** * @typedef {Object} IterativeOptions * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not; * if a function, implies shadow support is enabled and either returns the shadow root of an element * or a boolean stating if it has an undisclosed shadow root * @property {(node: Element) => boolean} filter filter candidates * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list * @property {ShadowRootFilter} shadowRootFilter filter shadow roots; */ /** * @param {Element[]} elements list of element containers to match candidates from * @param {boolean} includeContainer add container list to check * @param {IterativeOptions} options * @returns {Array.} */ var getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) { var candidates = []; var elementsToCheck = Array.from(elements); while (elementsToCheck.length) { var element = elementsToCheck.shift(); if (isInert(element, false)) { // no need to look up since we're drilling down // anything inside this container will also be inert continue; } if (element.tagName === 'SLOT') { // add shadow dom slot scope (slot itself cannot be focusable) var assigned = element.assignedElements(); var content = assigned.length ? assigned : element.children; var nestedCandidates = getCandidatesIteratively(content, true, options); if (options.flatten) { candidates.push.apply(candidates, nestedCandidates); } else { candidates.push({ scopeParent: element, candidates: nestedCandidates }); } } else { // check candidate element var validCandidate = matches.call(element, candidateSelector); if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) { candidates.push(element); } // iterate over shadow content if possible var shadowRoot = element.shadowRoot || // check for an undisclosed shadow typeof options.getShadowRoot === 'function' && options.getShadowRoot(element); // no inert look up because we're already drilling down and checking for inertness // on the way down, so all containers to this root node should have already been // vetted as non-inert var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element)); if (shadowRoot && validShadowRoot) { // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed // shadow exists, so look at light dom children as fallback BUT create a scope for any // child candidates found because they're likely slotted elements (elements that are // children of the web component element (which has the shadow), in the light dom, but // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below, // _after_ we return from this recursive call var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options); if (options.flatten) { candidates.push.apply(candidates, _nestedCandidates); } else { candidates.push({ scopeParent: element, candidates: _nestedCandidates }); } } else { // there's not shadow so just dig into the element's (light dom) children // __without__ giving the element special scope treatment elementsToCheck.unshift.apply(elementsToCheck, element.children); } } } return candidates; }; /** * @private * Determines if the node has an explicitly specified `tabindex` attribute. * @param {HTMLElement} node * @returns {boolean} True if so; false if not. */ var hasTabIndex = function hasTabIndex(node) { return !isNaN(parseInt(node.getAttribute('tabindex'), 10)); }; /** * Determine the tab index of a given node. * @param {HTMLElement} node * @returns {number} Tab order (negative, 0, or positive number). * @throws {Error} If `node` is falsy. */ var getTabIndex = function getTabIndex(node) { if (!node) { throw new Error('No node provided'); } if (node.tabIndex < 0) { // in Chrome,
,