From 059ed1ddc89574f31533b8c5af0364a07f7ac374 Mon Sep 17 00:00:00 2001 From: Louis Chemineau Date: Thu, 4 May 2023 11:12:50 +0200 Subject: [PATCH] Use SVG icon for the sidebar tab Signed-off-by: Louis Chemineau --- ..._index_esm_js-src_views_ActivityTab_vue.js | 23026 +++++++++ ...ex_esm_js-src_views_ActivityTab_vue.js.map | 1 + ...extcloud_capabilities_dist_index-0e7ea0.js | 42843 ++++++++++++++++ ...loud_capabilities_dist_index-0e7ea0.js.map | 1 + js/activity-sidebar.js | 4 +- js/activity-sidebar.js.map | 2 +- package-lock.json | 11 + package.json | 1 + src/sidebar.js | 6 +- webpack.js | 5 + 10 files changed, 65895 insertions(+), 5 deletions(-) create mode 100644 js/activity-node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue.js create mode 100644 js/activity-node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue.js.map create mode 100644 js/activity-node_modules_nextcloud_axios_dist_index_esm_js-node_modules_nextcloud_capabilities_dist_index-0e7ea0.js create mode 100644 js/activity-node_modules_nextcloud_axios_dist_index_esm_js-node_modules_nextcloud_capabilities_dist_index-0e7ea0.js.map diff --git a/js/activity-node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue.js b/js/activity-node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue.js new file mode 100644 index 000000000..dd9ccb8e5 --- /dev/null +++ b/js/activity-node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue.js @@ -0,0 +1,23026 @@ +(self["webpackChunkactivity"] = self["webpackChunkactivity"] || []).push([["node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue"],{ + +/***/ "./node_modules/@nextcloud/auth/dist/index.esm.js": +/*!********************************************************!*\ + !*** ./node_modules/@nextcloud/auth/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 */ "getCurrentUser": () => (/* binding */ getCurrentUser), +/* harmony export */ "getRequestToken": () => (/* binding */ getRequestToken), +/* harmony export */ "onRequestTokenUpdate": () => (/* binding */ onRequestTokenUpdate) +/* harmony export */ }); +/* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/event-bus */ "./node_modules/@nextcloud/event-bus/dist/index.esm.js"); +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js"); + + +const tokenElement = document.getElementsByTagName('head')[0]; +let token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null; +const observers = []; +function getRequestToken() { + return token; +} +function onRequestTokenUpdate(observer) { + observers.push(observer); +} +// Listen to server event and keep token in sync +(0,_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__.subscribe)('csrf-token-update', e => { + token = e.token; + observers.forEach(observer => { + try { + observer(e.token); + } + catch (e) { + console.error('error updating CSRF token observer', e); + } + }); +}); + +/// +const getAttribute = (el, attribute) => { + if (el) { + return el.getAttribute(attribute); + } + return null; +}; +const head = document.getElementsByTagName('head')[0]; +const uid = getAttribute(head, 'data-user'); +const displayName = getAttribute(head, 'data-user-displayname'); +const isAdmin = (typeof OC === 'undefined') + ? false + : OC.isUserAdmin(); +function getCurrentUser() { + if (uid === null) { + return null; + } + return { + uid, + displayName, + isAdmin, + }; +} + + +//# sourceMappingURL=index.esm.js.map + + +/***/ }), + +/***/ "./node_modules/@nextcloud/auth/dist/index.js": +/*!****************************************************!*\ + !*** ./node_modules/@nextcloud/auth/dist/index.js ***! + \****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js"); + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var eventBus = __webpack_require__(/*! @nextcloud/event-bus */ "./node_modules/@nextcloud/event-bus/dist/index.js"); + +var tokenElement = document.getElementsByTagName('head')[0]; +var token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null; +var observers = []; +function getRequestToken() { + return token; +} +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 head = document.getElementsByTagName('head')[0]; +var uid = getAttribute(head, 'data-user'); +var displayName = getAttribute(head, 'data-user-displayname'); +var isAdmin = (typeof OC === 'undefined') + ? false + : OC.isUserAdmin(); +function getCurrentUser() { + if (uid === null) { + return null; + } + return { + uid: uid, + displayName: displayName, + isAdmin: isAdmin, + }; +} + +exports.getCurrentUser = getCurrentUser; +exports.getRequestToken = getRequestToken; +exports.onRequestTokenUpdate = onRequestTokenUpdate; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/dist/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/@nextcloud/axios/dist/index.js ***! + \*****************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js"); + + +var Axios = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); +var auth = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.js"); +var router = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.js"); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var Axios__default = /*#__PURE__*/_interopDefaultLegacy(Axios); + +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +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. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +var RETRY_KEY = Symbol('csrf-retry'); +var onError$2 = function (axios) { return function (error) { return __awaiter(void 0, void 0, void 0, function () { + var config, response, request, responseURL, status, token; + var _a; + var _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + config = error.config, response = error.response, request = error.request; + responseURL = request === null || request === void 0 ? void 0 : request.responseURL; + status = response === null || response === void 0 ? void 0 : response.status; + if (!(status === 412 + && ((_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.message) === 'CSRF check failed' + && config[RETRY_KEY] === undefined)) return [3 /*break*/, 2]; + console.warn("Request to ".concat(responseURL, " failed because of a CSRF mismatch. Fetching a new token")); + return [4 /*yield*/, axios.get(router.generateUrl('/csrftoken'))]; + case 1: + token = (_c.sent()).data.token; + console.debug("New request token ".concat(token, " fetched")); + axios.defaults.headers.requesttoken = token; + return [2 /*return*/, axios(__assign(__assign({}, config), (_a = { headers: __assign(__assign({}, config.headers), { requesttoken: token }) }, _a[RETRY_KEY] = true, _a)))]; + case 2: return [2 /*return*/, Promise.reject(error)]; + } + }); +}); }; }; + +var RETRY_DELAY_KEY = Symbol('retryDelay'); +var onError$1 = function (axios) { return function (error) { return __awaiter(void 0, void 0, void 0, function () { + var config, response, request, responseURL, status, headers, retryDelay_1; + var _a; + var _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + config = error.config, response = error.response, request = error.request; + responseURL = request === null || request === void 0 ? void 0 : request.responseURL; + status = response === null || response === void 0 ? void 0 : response.status; + headers = response === null || response === void 0 ? void 0 : response.headers; + if (!(status === 503 + && headers['x-nextcloud-maintenance-mode'] === '1' + && config.retryIfMaintenanceMode + && (!config[RETRY_DELAY_KEY] || config[RETRY_DELAY_KEY] <= 32))) return [3 /*break*/, 2]; + retryDelay_1 = ((_b = config[RETRY_DELAY_KEY]) !== null && _b !== void 0 ? _b : 1) * 2; + console.warn("Request to ".concat(responseURL, " failed because of maintenance mode. Retrying in ").concat(retryDelay_1, "s")); + return [4 /*yield*/, new Promise(function (resolve, _) { + setTimeout(resolve, retryDelay_1 * 1000); + })]; + case 1: + _c.sent(); + return [2 /*return*/, axios(__assign(__assign({}, config), (_a = {}, _a[RETRY_DELAY_KEY] = retryDelay_1, _a)))]; + case 2: return [2 /*return*/, Promise.reject(error)]; + } + }); +}); }; }; + +var onError = function (error) { return __awaiter(void 0, void 0, void 0, function () { + var config, response, request, responseURL, status; + var _a; + return __generator(this, function (_b) { + config = error.config, response = error.response, request = error.request; + responseURL = request === null || request === void 0 ? void 0 : request.responseURL; + status = response === null || response === void 0 ? void 0 : response.status; + if (status === 401 + && ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.message) === 'Current user is not logged in' + && config.reloadExpiredSession + && (window === null || window === void 0 ? void 0 : window.location)) { + console.error("Request to ".concat(responseURL, " failed because the user session expired. Reloading the page \u2026")); + window.location.reload(); + } + return [2 /*return*/, Promise.reject(error)]; + }); +}); }; + +var _a; +var client = Axios__default["default"].create({ + headers: { + requesttoken: (_a = auth.getRequestToken()) !== null && _a !== void 0 ? _a : '' + } +}); +var cancelableClient = Object.assign(client, { + CancelToken: Axios__default["default"].CancelToken, + isCancel: Axios__default["default"].isCancel, +}); +cancelableClient.interceptors.response.use(function (r) { return r; }, onError$2(cancelableClient)); +cancelableClient.interceptors.response.use(function (r) { return r; }, onError$1(cancelableClient)); +cancelableClient.interceptors.response.use(function (r) { return r; }, onError); +auth.onRequestTokenUpdate(function (token) { return client.defaults.headers.requesttoken = token; }); + +module.exports = cancelableClient; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ "./node_modules/@nextcloud/event-bus/dist/index.esm.js": +/*!*************************************************************!*\ + !*** ./node_modules/@nextcloud/event-bus/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 */ "ProxyBus": () => (/* binding */ ProxyBus), +/* harmony export */ "SimpleBus": () => (/* binding */ SimpleBus), +/* harmony export */ "emit": () => (/* binding */ emit), +/* harmony export */ "subscribe": () => (/* binding */ subscribe), +/* harmony export */ "unsubscribe": () => (/* binding */ unsubscribe) +/* harmony export */ }); +/* harmony import */ var semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semver/functions/valid.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js"); +/* harmony import */ var semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! semver/functions/major.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js"); +/* harmony import */ var semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1__); +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js"); + + + +class ProxyBus { + bus; + constructor(bus) { + if (typeof bus.getVersion !== 'function' || !semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0___default()(bus.getVersion())) { + console.warn('Proxying an event bus with an unknown or invalid version'); + } + else if (semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1___default()(bus.getVersion()) !== semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1___default()(this.getVersion())) { + console.warn('Proxying an event bus of version ' + bus.getVersion() + ' with ' + this.getVersion()); + } + this.bus = bus; + } + getVersion() { + return "3.0.2"; + } + subscribe(name, handler) { + this.bus.subscribe(name, handler); + } + unsubscribe(name, handler) { + this.bus.unsubscribe(name, handler); + } + emit(name, event) { + this.bus.emit(name, event); + } +} + +class SimpleBus { + handlers = new Map(); + getVersion() { + return "3.0.2"; + } + subscribe(name, handler) { + this.handlers.set(name, (this.handlers.get(name) || []).concat(handler)); + } + unsubscribe(name, handler) { + this.handlers.set(name, (this.handlers.get(name) || []).filter(h => h != handler)); + } + emit(name, event) { + (this.handlers.get(name) || []).forEach(h => { + try { + h(event); + } + catch (e) { + console.error('could not invoke event listener', e); + } + }); + } +} + +function getBus() { + if ((typeof window.OC !== 'undefined') && window.OC._eventBus && typeof window._nc_event_bus === 'undefined') { + console.warn('found old event bus instance at OC._eventBus. Update your version!'); + window._nc_event_bus = window.OC._eventBus; + } + // Either use an existing event bus instance or create one + if (typeof window._nc_event_bus !== 'undefined') { + return new ProxyBus(window._nc_event_bus); + } + else { + return window._nc_event_bus = new SimpleBus(); + } +} +const bus = getBus(); +/** + * Register an event listener + * + * @param name name of the event + * @param handler callback invoked for every matching event emitted on the bus + */ +function subscribe(name, handler) { + bus.subscribe(name, handler); +} +/** + * Unregister a previously registered event listener + * + * Note: doesn't work with anonymous functions (closures). Use method of an object or store listener function in variable. + * + * @param name name of the event + * @param handler callback passed to `subscribed` + */ +function unsubscribe(name, handler) { + bus.unsubscribe(name, handler); +} +/** + * Emit an event + * + * @param name name of the event + * @param event event payload + */ +function emit(name, event) { + bus.emit(name, event); +} + + +//# sourceMappingURL=index.esm.js.map + + +/***/ }), + +/***/ "./node_modules/@nextcloud/event-bus/dist/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/@nextcloud/event-bus/dist/index.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js"); + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var valid = __webpack_require__(/*! semver/functions/valid.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js"); +var major = __webpack_require__(/*! semver/functions/major.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js"); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var valid__default = /*#__PURE__*/_interopDefaultLegacy(valid); +var major__default = /*#__PURE__*/_interopDefaultLegacy(major); + +var ProxyBus = /** @class */ (function () { + function ProxyBus(bus) { + if (typeof bus.getVersion !== 'function' || !valid__default["default"](bus.getVersion())) { + console.warn('Proxying an event bus with an unknown or invalid version'); + } + else if (major__default["default"](bus.getVersion()) !== major__default["default"](this.getVersion())) { + console.warn('Proxying an event bus of version ' + bus.getVersion() + ' with ' + this.getVersion()); + } + this.bus = bus; + } + ProxyBus.prototype.getVersion = function () { + return "3.0.2"; + }; + ProxyBus.prototype.subscribe = function (name, handler) { + this.bus.subscribe(name, handler); + }; + ProxyBus.prototype.unsubscribe = function (name, handler) { + this.bus.unsubscribe(name, handler); + }; + ProxyBus.prototype.emit = function (name, event) { + this.bus.emit(name, event); + }; + return ProxyBus; +}()); + +var SimpleBus = /** @class */ (function () { + function SimpleBus() { + this.handlers = new Map(); + } + SimpleBus.prototype.getVersion = function () { + return "3.0.2"; + }; + SimpleBus.prototype.subscribe = function (name, handler) { + this.handlers.set(name, (this.handlers.get(name) || []).concat(handler)); + }; + SimpleBus.prototype.unsubscribe = function (name, handler) { + this.handlers.set(name, (this.handlers.get(name) || []).filter(function (h) { return h != handler; })); + }; + SimpleBus.prototype.emit = function (name, event) { + (this.handlers.get(name) || []).forEach(function (h) { + try { + h(event); + } + catch (e) { + console.error('could not invoke event listener', e); + } + }); + }; + return SimpleBus; +}()); + +function getBus() { + if ((typeof window.OC !== 'undefined') && window.OC._eventBus && typeof window._nc_event_bus === 'undefined') { + console.warn('found old event bus instance at OC._eventBus. Update your version!'); + window._nc_event_bus = window.OC._eventBus; + } + // Either use an existing event bus instance or create one + if (typeof window._nc_event_bus !== 'undefined') { + return new ProxyBus(window._nc_event_bus); + } + else { + return window._nc_event_bus = new SimpleBus(); + } +} +var bus = getBus(); +/** + * Register an event listener + * + * @param name name of the event + * @param handler callback invoked for every matching event emitted on the bus + */ +function subscribe(name, handler) { + bus.subscribe(name, handler); +} +/** + * Unregister a previously registered event listener + * + * Note: doesn't work with anonymous functions (closures). Use method of an object or store listener function in variable. + * + * @param name name of the event + * @param handler callback passed to `subscribed` + */ +function unsubscribe(name, handler) { + bus.unsubscribe(name, handler); +} +/** + * Emit an event + * + * @param name name of the event + * @param event event payload + */ +function emit(name, event) { + bus.emit(name, event); +} + +exports.ProxyBus = ProxyBus; +exports.SimpleBus = SimpleBus; +exports.emit = emit; +exports.subscribe = subscribe; +exports.unsubscribe = unsubscribe; +//# sourceMappingURL=index.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 { 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: ${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) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + 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) + this.inc('pre', identifier) + 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) + } + this.inc('pre', identifier) + 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': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } 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 + this.prerelease.push(0) + } + } + 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 + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error(`invalid increment argument: ${release}`) + } + this.format() + this.raw = this.version + 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 { MAX_LENGTH } = __webpack_require__(/*! ../internal/constants */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js") +const { re, t } = __webpack_require__(/*! ../internal/re */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js") +const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js") + +const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js") +const parse = (version, options) => { + options = parseOptions(options) + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + const r = options.loose ? re[t.LOOSE] : re[t.FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +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 + +module.exports = { + SEMVER_SPEC_VERSION, + MAX_LENGTH, + MAX_SAFE_INTEGER, + MAX_SAFE_COMPONENT_LENGTH, +} + + +/***/ }), + +/***/ "./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"); +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.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 so we always get a consistent +// obj with keys in a consistent order. +const opts = ['includePrerelease', 'loose', 'rtl'] +const parseOptions = options => + !options ? {} + : typeof options !== 'object' ? { loose: true } + : opts.filter(k => options[k]).reduce((o, k) => { + o[k] = true + return o + }, {}) +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 } = __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 src = exports.src = [] +const t = exports.t = {} +let R = 0 + +const createToken = (name, value, isGlobal) => { + const index = R++ + debug(name, index, value) + t[name] = index + src[index] = value + re[index] = new RegExp(value, 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', '[0-9]+') + +// ## 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-][a-zA-Z0-9-]*') + +// ## 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', '[0-9A-Za-z-]+') + +// ## 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('COERCE', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:$|[^\\d])`) +createToken('COERCERTL', src[t.COERCE], 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/logger/dist/ConsoleLogger.js": +/*!**************************************************************!*\ + !*** ./node_modules/@nextcloud/logger/dist/ConsoleLogger.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js"); + + +__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(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +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 + ': '; + } + return msg + message; + } + }, { + key: "log", + value: function log(level, message, context) { + var _this$context; + if (level < ((_this$context = this.context) === null || _this$context === void 0 ? void 0 : _this$context.level)) return; + 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; +}(); +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(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +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 */ + _createClass(LoggerBuilder, [{ + key: "setApp", + value: function setApp(appId) { + this.context.app = appId; + return this; + } + + /** Set the logging level within the logging context */ + }, { + key: "setLogLevel", + value: function setLogLevel(level) { + this.context.level = level; + return this; + } + + /** Set the user id within the logging context + * @see {@link detectUser} + */ + }, { + 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() { + var self = this; + + // Use arrow function to prevent undefined `this` within event handler + var onLoaded = function onLoaded() { + if (document.readyState === "complete" || document.readyState === "interactive" && window.OC !== undefined) { + var _window$OC, _window$OC$config, _window$OC2; + // Up to, including, nextcloud 24 the loglevel was not exposed + self.context.level = ((_window$OC = window.OC) === null || _window$OC === void 0 ? void 0 : (_window$OC$config = _window$OC.config) === null || _window$OC$config === void 0 ? void 0 : _window$OC$config.loglevel) !== undefined ? window.OC.config.loglevel : _contracts.LogLevel.Warn; + // Override loglevel if we are in debug mode + if ((_window$OC2 = window.OC) !== null && _window$OC2 !== void 0 && _window$OC2.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; +exports.LogLevel = LogLevel; +(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"; +})(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/paths/dist/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/@nextcloud/paths/dist/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.encodePath = encodePath; +exports.basename = basename; +exports.dirname = dirname; +exports.joinPaths = joinPaths; +exports.isSamePath = isSamePath; + +__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); + +__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js"); + +__webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js"); + +__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js"); + +__webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js"); + +__webpack_require__(/*! core-js/modules/es.array.reduce.js */ "./node_modules/core-js/modules/es.array.reduce.js"); + +__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js"); + +/** + * URI-Encodes a file path but keep the path slashes. + */ +function encodePath(path) { + if (!path) { + return path; + } + + return path.split('/').map(encodeURIComponent).join('/'); +} +/** + * Returns the base name of the given path. + * For example for "/abc/somefile.txt" it will return "somefile.txt" + */ + + +function basename(path) { + return path.replace(/\\/g, '/').replace(/.*\//, ''); +} +/** + * Returns the dir name of the given path. + * For example for "/abc/somefile.txt" it will return "/abc" + */ + + +function dirname(path) { + return path.replace(/\\/g, '/').replace(/\/[^\/]*$/, ''); +} +/** + * Join path sections + */ + + +function joinPaths() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (arguments.length < 1) { + return ''; + } // discard empty arguments + + + var nonEmptyArgs = args.filter(function (arg) { + return arg.length > 0; + }); + + if (nonEmptyArgs.length < 1) { + return ''; + } + + var lastArg = nonEmptyArgs[nonEmptyArgs.length - 1]; + var leadingSlash = nonEmptyArgs[0].charAt(0) === '/'; + var trailingSlash = lastArg.charAt(lastArg.length - 1) === '/'; + var sections = nonEmptyArgs.reduce(function (acc, section) { + return acc.concat(section.split('/')); + }, []); + var first = !leadingSlash; + var path = sections.reduce(function (acc, section) { + if (section === '') { + return acc; + } + + if (first) { + first = false; + return acc + section; + } + + return acc + '/' + section; + }, ''); + + if (trailingSlash) { + // add it back + return path + '/'; + } + + return path; +} +/** + * Returns whether the given paths are the same, without + * leading, trailing or doubled slashes and also removing + * the dot sections. + */ + + +function isSamePath(path1, path2) { + var pathSections1 = (path1 || '').split('/').filter(function (p) { + return p !== '.'; + }); + var pathSections2 = (path2 || '').split('/').filter(function (p) { + return p !== '.'; + }); + path1 = joinPaths.apply(undefined, pathSections1); + path2 = joinPaths.apply(undefined, pathSections2); + return path1 === path2; +} +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "./node_modules/@nextcloud/router/dist/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@nextcloud/router/dist/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getRootUrl = exports.generateFilePath = exports.imagePath = exports.generateUrl = exports.generateOcsUrl = exports.generateRemoteUrl = exports.linkTo = 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) => { + const allOptions = Object.assign({ + noRewrite: false + }, options || {}); + + if (OC.config.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) => { + const isCore = OC.coreApps.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 = OC.appswebroots[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; + +const getRootUrl = () => OC.webroot; + +exports.getRootUrl = getRootUrl; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue-richtext/dist/index.js": +/*!************************************************************!*\ + !*** ./node_modules/@nextcloud/vue-richtext/dist/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 */ "ReferenceList": () => (/* binding */ ReferenceList), +/* harmony export */ "ReferenceWidget": () => (/* binding */ ReferenceWidget), +/* harmony export */ "RichText": () => (/* binding */ RichText), +/* harmony export */ "default": () => (/* binding */ RichText), +/* harmony export */ "isWidgetRegistered": () => (/* binding */ isWidgetRegistered), +/* harmony export */ "registerWidget": () => (/* binding */ registerWidget), +/* harmony export */ "renderWidget": () => (/* binding */ renderWidget) +/* harmony export */ }); +/* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.esm.js"); +/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.js"); +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js"); + + +function bail(error) { + if (error) { + throw error; + } +} +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var isBuffer$1 = function isBuffer(obj) { + return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj); +}; +var hasOwn = Object.prototype.hasOwnProperty; +var toStr = Object.prototype.toString; +var defineProperty = Object.defineProperty; +var gOPD = Object.getOwnPropertyDescriptor; +var isArray = function isArray2(arr) { + if (typeof Array.isArray === "function") { + return Array.isArray(arr); + } + return toStr.call(arr) === "[object Array]"; +}; +var isPlainObject$1 = 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"); + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } + var key; + for (key in obj) { + } + return typeof key === "undefined" || hasOwn.call(obj, key); +}; +var setProperty = function setProperty2(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; + } +}; +var getProperty = function getProperty2(obj, name) { + if (name === "__proto__") { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + return gOPD(obj, name).value; + } + } + return obj[name]; +}; +var extend = function extend2() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + if (typeof target === "boolean") { + deep = target; + target = arguments[1] || {}; + i = 2; + } + if (target == null || typeof target !== "object" && typeof target !== "function") { + target = {}; + } + for (; i < length; ++i) { + options = arguments[i]; + if (options != null) { + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); + if (target !== copy) { + if (deep && copy && (isPlainObject$1(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject$1(src) ? src : {}; + } + setProperty(target, { name, newValue: extend2(deep, clone, copy) }); + } else if (typeof copy !== "undefined") { + setProperty(target, { name, newValue: copy }); + } + } + } + } + } + return target; +}; +function isPlainObject2(value) { + if (typeof value !== "object" || value === null) { + return false; + } + const prototype = Object.getPrototypeOf(value); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value); +} +function trough() { + const fns = []; + const pipeline = { run, use }; + return pipeline; + function run(...values) { + let middlewareIndex = -1; + const callback = values.pop(); + if (typeof callback !== "function") { + throw new TypeError("Expected function as last argument, not " + callback); + } + next(null, ...values); + function next(error, ...output) { + const fn = fns[++middlewareIndex]; + let index2 = -1; + if (error) { + callback(error); + return; + } + while (++index2 < values.length) { + if (output[index2] === null || output[index2] === void 0) { + output[index2] = values[index2]; + } + } + values = output; + if (fn) { + wrap$1(fn, next)(...output); + } else { + callback(null, ...output); + } + } + } + function use(middelware) { + if (typeof middelware !== "function") { + throw new TypeError( + "Expected `middelware` to be a function, not " + middelware + ); + } + fns.push(middelware); + return pipeline; + } +} +function wrap$1(middleware, callback) { + let called; + return wrapped; + function wrapped(...parameters) { + const fnExpectsCallback = middleware.length > parameters.length; + let result; + if (fnExpectsCallback) { + parameters.push(done); + } + try { + result = middleware.apply(this, parameters); + } catch (error) { + const exception = error; + if (fnExpectsCallback && called) { + throw exception; + } + return done(exception); + } + if (!fnExpectsCallback) { + if (result instanceof Promise) { + result.then(then, done); + } else if (result instanceof Error) { + done(result); + } else { + then(result); + } + } + } + function done(error, ...output) { + if (!called) { + called = true; + callback(error, ...output); + } + } + function then(value) { + done(null, value); + } +} +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var isBuffer2 = function isBuffer3(obj) { + return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj); +}; +function stringifyPosition(value) { + if (!value || typeof value !== "object") { + return ""; + } + if ("position" in value || "type" in value) { + return position(value.position); + } + if ("start" in value || "end" in value) { + return position(value); + } + if ("line" in value || "column" in value) { + return point$1(value); + } + return ""; +} +function point$1(point2) { + return index(point2 && point2.line) + ":" + index(point2 && point2.column); +} +function position(pos) { + return point$1(pos && pos.start) + "-" + point$1(pos && pos.end); +} +function index(value) { + return value && typeof value === "number" ? value : 1; +} +class VFileMessage extends Error { + constructor(reason, place, origin) { + const parts = [null, null]; + let position2 = { + start: { line: null, column: null }, + end: { line: null, column: null } + }; + super(); + if (typeof place === "string") { + origin = place; + place = void 0; + } + if (typeof origin === "string") { + const index2 = origin.indexOf(":"); + if (index2 === -1) { + parts[1] = origin; + } else { + parts[0] = origin.slice(0, index2); + parts[1] = origin.slice(index2 + 1); + } + } + if (place) { + if ("type" in place || "position" in place) { + if (place.position) { + position2 = place.position; + } + } else if ("start" in place || "end" in place) { + position2 = place; + } else if ("line" in place || "column" in place) { + position2.start = place; + } + } + this.name = stringifyPosition(place) || "1:1"; + this.message = typeof reason === "object" ? reason.message : reason; + this.stack = typeof reason === "object" ? reason.stack : ""; + this.reason = this.message; + this.fatal; + this.line = position2.start.line; + this.column = position2.start.column; + this.source = parts[0]; + this.ruleId = parts[1]; + this.position = position2; + this.actual; + this.expected; + this.file; + this.url; + this.note; + } +} +VFileMessage.prototype.file = ""; +VFileMessage.prototype.name = ""; +VFileMessage.prototype.reason = ""; +VFileMessage.prototype.message = ""; +VFileMessage.prototype.stack = ""; +VFileMessage.prototype.fatal = null; +VFileMessage.prototype.column = null; +VFileMessage.prototype.line = null; +VFileMessage.prototype.source = null; +VFileMessage.prototype.ruleId = null; +VFileMessage.prototype.position = null; +const path = { basename, dirname, extname, join, sep: "/" }; +function basename(path2, ext) { + if (ext !== void 0 && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath$1(path2); + let start = 0; + let end = -1; + let index2 = path2.length; + let seenNonSlash; + if (ext === void 0 || ext.length === 0 || ext.length > path2.length) { + while (index2--) { + if (path2.charCodeAt(index2) === 47) { + if (seenNonSlash) { + start = index2 + 1; + break; + } + } else if (end < 0) { + seenNonSlash = true; + end = index2 + 1; + } + } + return end < 0 ? "" : path2.slice(start, end); + } + if (ext === path2) { + return ""; + } + let firstNonSlashEnd = -1; + let extIndex = ext.length - 1; + while (index2--) { + if (path2.charCodeAt(index2) === 47) { + if (seenNonSlash) { + start = index2 + 1; + break; + } + } else { + if (firstNonSlashEnd < 0) { + seenNonSlash = true; + firstNonSlashEnd = index2 + 1; + } + if (extIndex > -1) { + if (path2.charCodeAt(index2) === ext.charCodeAt(extIndex--)) { + if (extIndex < 0) { + end = index2; + } + } else { + extIndex = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } else if (end < 0) { + end = path2.length; + } + return path2.slice(start, end); +} +function dirname(path2) { + assertPath$1(path2); + if (path2.length === 0) { + return "."; + } + let end = -1; + let index2 = path2.length; + let unmatchedSlash; + while (--index2) { + if (path2.charCodeAt(index2) === 47) { + if (unmatchedSlash) { + end = index2; + break; + } + } else if (!unmatchedSlash) { + unmatchedSlash = true; + } + } + return end < 0 ? path2.charCodeAt(0) === 47 ? "/" : "." : end === 1 && path2.charCodeAt(0) === 47 ? "//" : path2.slice(0, end); +} +function extname(path2) { + assertPath$1(path2); + let index2 = path2.length; + let end = -1; + let startPart = 0; + let startDot = -1; + let preDotState = 0; + let unmatchedSlash; + while (index2--) { + const code2 = path2.charCodeAt(index2); + if (code2 === 47) { + if (unmatchedSlash) { + startPart = index2 + 1; + break; + } + continue; + } + if (end < 0) { + unmatchedSlash = true; + end = index2 + 1; + } + if (code2 === 46) { + if (startDot < 0) { + startDot = index2; + } else if (preDotState !== 1) { + preDotState = 1; + } + } else if (startDot > -1) { + preDotState = -1; + } + } + if (startDot < 0 || end < 0 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path2.slice(startDot, end); +} +function join(...segments) { + let index2 = -1; + let joined; + while (++index2 < segments.length) { + assertPath$1(segments[index2]); + if (segments[index2]) { + joined = joined === void 0 ? segments[index2] : joined + "/" + segments[index2]; + } + } + return joined === void 0 ? "." : normalize$1(joined); +} +function normalize$1(path2) { + assertPath$1(path2); + const absolute = path2.charCodeAt(0) === 47; + let value = normalizeString(path2, !absolute); + if (value.length === 0 && !absolute) { + value = "."; + } + if (value.length > 0 && path2.charCodeAt(path2.length - 1) === 47) { + value += "/"; + } + return absolute ? "/" + value : value; +} +function normalizeString(path2, allowAboveRoot) { + let result = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let index2 = -1; + let code2; + let lastSlashIndex; + while (++index2 <= path2.length) { + if (index2 < path2.length) { + code2 = path2.charCodeAt(index2); + } else if (code2 === 47) { + break; + } else { + code2 = 47; + } + if (code2 === 47) { + if (lastSlash === index2 - 1 || dots === 1) + ; + else if (lastSlash !== index2 - 1 && dots === 2) { + if (result.length < 2 || lastSegmentLength !== 2 || result.charCodeAt(result.length - 1) !== 46 || result.charCodeAt(result.length - 2) !== 46) { + if (result.length > 2) { + lastSlashIndex = result.lastIndexOf("/"); + if (lastSlashIndex !== result.length - 1) { + if (lastSlashIndex < 0) { + result = ""; + lastSegmentLength = 0; + } else { + result = result.slice(0, lastSlashIndex); + lastSegmentLength = result.length - 1 - result.lastIndexOf("/"); + } + lastSlash = index2; + dots = 0; + continue; + } + } else if (result.length > 0) { + result = ""; + lastSegmentLength = 0; + lastSlash = index2; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + result = result.length > 0 ? result + "/.." : ".."; + lastSegmentLength = 2; + } + } else { + if (result.length > 0) { + result += "/" + path2.slice(lastSlash + 1, index2); + } else { + result = path2.slice(lastSlash + 1, index2); + } + lastSegmentLength = index2 - lastSlash - 1; + } + lastSlash = index2; + dots = 0; + } else if (code2 === 46 && dots > -1) { + dots++; + } else { + dots = -1; + } + } + return result; +} +function assertPath$1(path2) { + if (typeof path2 !== "string") { + throw new TypeError( + "Path must be a string. Received " + JSON.stringify(path2) + ); + } +} +const proc = { cwd }; +function cwd() { + return "/"; +} +function isUrl(fileURLOrPath) { + return fileURLOrPath !== null && typeof fileURLOrPath === "object" && fileURLOrPath.href && fileURLOrPath.origin; +} +function urlToPath(path2) { + if (typeof path2 === "string") { + path2 = new URL(path2); + } else if (!isUrl(path2)) { + const error = new TypeError( + 'The "path" argument must be of type string or an instance of URL. Received `' + path2 + "`" + ); + error.code = "ERR_INVALID_ARG_TYPE"; + throw error; + } + if (path2.protocol !== "file:") { + const error = new TypeError("The URL must be of scheme file"); + error.code = "ERR_INVALID_URL_SCHEME"; + throw error; + } + return getPathFromURLPosix(path2); +} +function getPathFromURLPosix(url) { + if (url.hostname !== "") { + const error = new TypeError( + 'File URL host must be "localhost" or empty on darwin' + ); + error.code = "ERR_INVALID_FILE_URL_HOST"; + throw error; + } + const pathname = url.pathname; + let index2 = -1; + while (++index2 < pathname.length) { + if (pathname.charCodeAt(index2) === 37 && pathname.charCodeAt(index2 + 1) === 50) { + const third = pathname.charCodeAt(index2 + 2); + if (third === 70 || third === 102) { + const error = new TypeError( + "File URL path must not include encoded / characters" + ); + error.code = "ERR_INVALID_FILE_URL_PATH"; + throw error; + } + } + } + return decodeURIComponent(pathname); +} +const order = ["history", "path", "basename", "stem", "extname", "dirname"]; +class VFile { + constructor(value) { + let options; + if (!value) { + options = {}; + } else if (typeof value === "string" || isBuffer2(value)) { + options = { value }; + } else if (isUrl(value)) { + options = { path: value }; + } else { + options = value; + } + this.data = {}; + this.messages = []; + this.history = []; + this.cwd = proc.cwd(); + this.value; + this.stored; + this.result; + this.map; + let index2 = -1; + while (++index2 < order.length) { + const prop2 = order[index2]; + if (prop2 in options && options[prop2] !== void 0) { + this[prop2] = prop2 === "history" ? [...options[prop2]] : options[prop2]; + } + } + let prop; + for (prop in options) { + if (!order.includes(prop)) + this[prop] = options[prop]; + } + } + get path() { + return this.history[this.history.length - 1]; + } + set path(path2) { + if (isUrl(path2)) { + path2 = urlToPath(path2); + } + assertNonEmpty(path2, "path"); + if (this.path !== path2) { + this.history.push(path2); + } + } + get dirname() { + return typeof this.path === "string" ? path.dirname(this.path) : void 0; + } + set dirname(dirname2) { + assertPath(this.basename, "dirname"); + this.path = path.join(dirname2 || "", this.basename); + } + get basename() { + return typeof this.path === "string" ? path.basename(this.path) : void 0; + } + set basename(basename2) { + assertNonEmpty(basename2, "basename"); + assertPart(basename2, "basename"); + this.path = path.join(this.dirname || "", basename2); + } + get extname() { + return typeof this.path === "string" ? path.extname(this.path) : void 0; + } + set extname(extname2) { + assertPart(extname2, "extname"); + assertPath(this.dirname, "extname"); + if (extname2) { + if (extname2.charCodeAt(0) !== 46) { + throw new Error("`extname` must start with `.`"); + } + if (extname2.includes(".", 1)) { + throw new Error("`extname` cannot contain multiple dots"); + } + } + this.path = path.join(this.dirname, this.stem + (extname2 || "")); + } + get stem() { + return typeof this.path === "string" ? path.basename(this.path, this.extname) : void 0; + } + set stem(stem) { + assertNonEmpty(stem, "stem"); + assertPart(stem, "stem"); + this.path = path.join(this.dirname || "", stem + (this.extname || "")); + } + toString(encoding) { + return (this.value || "").toString(encoding); + } + message(reason, place, origin) { + const message = new VFileMessage(reason, place, origin); + if (this.path) { + message.name = this.path + ":" + message.name; + message.file = this.path; + } + message.fatal = false; + this.messages.push(message); + return message; + } + info(reason, place, origin) { + const message = this.message(reason, place, origin); + message.fatal = null; + return message; + } + fail(reason, place, origin) { + const message = this.message(reason, place, origin); + message.fatal = true; + throw message; + } +} +function assertPart(part, name) { + if (part && part.includes(path.sep)) { + throw new Error( + "`" + name + "` cannot be a path: did not expect `" + path.sep + "`" + ); + } +} +function assertNonEmpty(part, name) { + if (!part) { + throw new Error("`" + name + "` cannot be empty"); + } +} +function assertPath(path2, name) { + if (!path2) { + throw new Error("Setting `" + name + "` requires `path` to be set too"); + } +} +const unified = base().freeze(); +const own$7 = {}.hasOwnProperty; +function base() { + const transformers = trough(); + const attachers = []; + let namespace = {}; + let frozen; + let freezeIndex = -1; + processor.data = data; + processor.Parser = void 0; + processor.Compiler = void 0; + processor.freeze = freeze; + processor.attachers = attachers; + processor.use = use; + processor.parse = parse2; + processor.stringify = stringify2; + processor.run = run; + processor.runSync = runSync; + processor.process = process; + processor.processSync = processSync; + return processor; + function processor() { + const destination = base(); + let index2 = -1; + while (++index2 < attachers.length) { + destination.use(...attachers[index2]); + } + destination.data(extend(true, {}, namespace)); + return destination; + } + function data(key, value) { + if (typeof key === "string") { + if (arguments.length === 2) { + assertUnfrozen("data", frozen); + namespace[key] = value; + return processor; + } + return own$7.call(namespace, key) && namespace[key] || null; + } + if (key) { + assertUnfrozen("data", frozen); + namespace = key; + return processor; + } + return namespace; + } + function freeze() { + if (frozen) { + return processor; + } + while (++freezeIndex < attachers.length) { + const [attacher, ...options] = attachers[freezeIndex]; + if (options[0] === false) { + continue; + } + if (options[0] === true) { + options[0] = void 0; + } + const transformer = attacher.call(processor, ...options); + if (typeof transformer === "function") { + transformers.use(transformer); + } + } + frozen = true; + freezeIndex = Number.POSITIVE_INFINITY; + return processor; + } + function use(value, ...options) { + let settings; + assertUnfrozen("use", frozen); + if (value === null || value === void 0) + ; + else if (typeof value === "function") { + addPlugin(value, ...options); + } else if (typeof value === "object") { + if (Array.isArray(value)) { + addList(value); + } else { + addPreset(value); + } + } else { + throw new TypeError("Expected usable value, not `" + value + "`"); + } + if (settings) { + namespace.settings = Object.assign(namespace.settings || {}, settings); + } + return processor; + function add(value2) { + if (typeof value2 === "function") { + addPlugin(value2); + } else if (typeof value2 === "object") { + if (Array.isArray(value2)) { + const [plugin, ...options2] = value2; + addPlugin(plugin, ...options2); + } else { + addPreset(value2); + } + } else { + throw new TypeError("Expected usable value, not `" + value2 + "`"); + } + } + function addPreset(result) { + addList(result.plugins); + if (result.settings) { + settings = Object.assign(settings || {}, result.settings); + } + } + function addList(plugins) { + let index2 = -1; + if (plugins === null || plugins === void 0) + ; + else if (Array.isArray(plugins)) { + while (++index2 < plugins.length) { + const thing = plugins[index2]; + add(thing); + } + } else { + throw new TypeError("Expected a list of plugins, not `" + plugins + "`"); + } + } + function addPlugin(plugin, value2) { + let index2 = -1; + let entry; + while (++index2 < attachers.length) { + if (attachers[index2][0] === plugin) { + entry = attachers[index2]; + break; + } + } + if (entry) { + if (isPlainObject2(entry[1]) && isPlainObject2(value2)) { + value2 = extend(true, entry[1], value2); + } + entry[1] = value2; + } else { + attachers.push([...arguments]); + } + } + } + function parse2(doc) { + processor.freeze(); + const file = vfile(doc); + const Parser = processor.Parser; + assertParser("parse", Parser); + if (newable(Parser, "parse")) { + return new Parser(String(file), file).parse(); + } + return Parser(String(file), file); + } + function stringify2(node, doc) { + processor.freeze(); + const file = vfile(doc); + const Compiler = processor.Compiler; + assertCompiler("stringify", Compiler); + assertNode(node); + if (newable(Compiler, "compile")) { + return new Compiler(node, file).compile(); + } + return Compiler(node, file); + } + function run(node, doc, callback) { + assertNode(node); + processor.freeze(); + if (!callback && typeof doc === "function") { + callback = doc; + doc = void 0; + } + if (!callback) { + return new Promise(executor); + } + executor(null, callback); + function executor(resolve, reject) { + transformers.run(node, vfile(doc), done); + function done(error, tree, file) { + tree = tree || node; + if (error) { + reject(error); + } else if (resolve) { + resolve(tree); + } else { + callback(null, tree, file); + } + } + } + } + function runSync(node, file) { + let result; + let complete; + processor.run(node, file, done); + assertDone("runSync", "run", complete); + return result; + function done(error, tree) { + bail(error); + result = tree; + complete = true; + } + } + function process(doc, callback) { + processor.freeze(); + assertParser("process", processor.Parser); + assertCompiler("process", processor.Compiler); + if (!callback) { + return new Promise(executor); + } + executor(null, callback); + function executor(resolve, reject) { + const file = vfile(doc); + processor.run(processor.parse(file), file, (error, tree, file2) => { + if (error || !tree || !file2) { + done(error); + } else { + const result = processor.stringify(tree, file2); + if (result === void 0 || result === null) + ; + else if (looksLikeAVFileValue(result)) { + file2.value = result; + } else { + file2.result = result; + } + done(error, file2); + } + }); + function done(error, file2) { + if (error || !file2) { + reject(error); + } else if (resolve) { + resolve(file2); + } else { + callback(null, file2); + } + } + } + } + function processSync(doc) { + let complete; + processor.freeze(); + assertParser("processSync", processor.Parser); + assertCompiler("processSync", processor.Compiler); + const file = vfile(doc); + processor.process(file, done); + assertDone("processSync", "process", complete); + return file; + function done(error) { + complete = true; + bail(error); + } + } +} +function newable(value, name) { + return typeof value === "function" && value.prototype && (keys(value.prototype) || name in value.prototype); +} +function keys(value) { + let key; + for (key in value) { + if (own$7.call(value, key)) { + return true; + } + } + return false; +} +function assertParser(name, value) { + if (typeof value !== "function") { + throw new TypeError("Cannot `" + name + "` without `Parser`"); + } +} +function assertCompiler(name, value) { + if (typeof value !== "function") { + throw new TypeError("Cannot `" + name + "` without `Compiler`"); + } +} +function assertUnfrozen(name, frozen) { + if (frozen) { + throw new Error( + "Cannot call `" + name + "` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`." + ); + } +} +function assertNode(node) { + if (!isPlainObject2(node) || typeof node.type !== "string") { + throw new TypeError("Expected node, got `" + node + "`"); + } +} +function assertDone(name, asyncName, complete) { + if (!complete) { + throw new Error( + "`" + name + "` finished async. Use `" + asyncName + "` instead" + ); + } +} +function vfile(value) { + return looksLikeAVFile(value) ? value : new VFile(value); +} +function looksLikeAVFile(value) { + return Boolean( + value && typeof value === "object" && "message" in value && "messages" in value + ); +} +function looksLikeAVFileValue(value) { + return typeof value === "string" || isBuffer$1(value); +} +if (!window._vue_richtext_widgets) { + window._vue_richtext_widgets = {}; +} +const isWidgetRegistered = (id) => { + return !!window._vue_richtext_widgets[id]; +}; +const registerWidget = (id, callback, onDestroy = (el) => { +}) => { + if (window._vue_richtext_widgets[id]) { + console.error("Widget for id " + id + " already registered"); + return; + } + window._vue_richtext_widgets[id] = { + id, + callback, + onDestroy + }; +}; +const renderWidget = (el, { richObjectType, richObject, accessible }) => { + if (richObjectType === "open-graph") { + return; + } + if (!window._vue_richtext_widgets[richObjectType]) { + console.error("Widget for rich object type " + richObjectType + " not registered"); + return; + } + window._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible }); +}; +const destroyWidget = (richObjectType, el) => { + if (richObjectType === "open-graph") { + return; + } + if (!window._vue_richtext_widgets[richObjectType]) { + return; + } + window._vue_richtext_widgets[richObjectType].onDestroy(el); +}; +window._registerWidget = registerWidget; +const ReferenceWidget_vue_vue_type_style_index_0_scoped_de8147ea_lang = ""; +function normalizeComponent(scriptExports, render3, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { + var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports; + if (render3) { + options.render = render3; + options.staticRenderFns = staticRenderFns; + 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 _sfc_main$2 = { + name: "ReferenceWidget", + props: { + reference: { + type: Object, + required: true + } + }, + data() { + return { + compact: 3 + }; + }, + computed: { + hasCustomWidget() { + return isWidgetRegistered(this.reference.richObjectType); + }, + noAccess() { + return this.reference && !this.reference.accessible; + }, + descriptionStyle() { + if (this.compact === 0) { + return { + display: "none" + }; + } + const lineClamp = this.compact < 4 ? this.compact : 3; + return { + lineClamp, + webkitLineClamp: lineClamp + }; + }, + compactLink() { + const link2 = this.reference.openGraphObject.link; + if (!link2) { + return ""; + } + if (link2.startsWith("https://")) { + return link2.substring(8); + } + if (link2.startsWith("http://")) { + return link2.substring(7); + } + return link2; + } + }, + mounted() { + this.renderWidget(); + this.observer = new ResizeObserver((entries) => { + if (entries[0].contentRect.width < 450) { + this.compact = 0; + } else if (entries[0].contentRect.width < 550) { + this.compact = 1; + } else if (entries[0].contentRect.width < 650) { + this.compact = 2; + } else { + this.compact = 3; + } + }); + this.observer.observe(this.$el); + }, + beforeDestroy() { + this.observer.disconnect(); + destroyWidget(this.reference.richObjectType, this.$el); + }, + methods: { + renderWidget() { + var _a; + if (this.$refs.customWidget) { + this.$refs.customWidget.innerHTML = ""; + } + if (((_a = this == null ? void 0 : this.reference) == null ? void 0 : _a.richObjectType) === "open-graph") { + return; + } + this.$nextTick(() => { + renderWidget(this.$refs.customWidget, this.reference); + }); + } + } +}; +var _sfc_render$2 = function render() { + var _vm = this, _c = _vm._self._c; + return _c("div", [_vm.reference && _vm.hasCustomWidget ? _c("div", { staticClass: "widget-custom" }, [_c("div", { ref: "customWidget" })]) : !_vm.noAccess && _vm.reference && _vm.reference.openGraphObject && !_vm.hasCustomWidget ? _c("a", { staticClass: "widget-default", attrs: { "href": _vm.reference.openGraphObject.link, "rel": "noopener noreferrer", "target": "_blank" } }, [_vm.reference.openGraphObject.thumb ? _c("img", { staticClass: "widget-default--image", attrs: { "src": _vm.reference.openGraphObject.thumb } }) : _vm._e(), _c("div", { staticClass: "widget-default--details" }, [_c("p", { staticClass: "widget-default--title" }, [_vm._v(_vm._s(_vm.reference.openGraphObject.name))]), _c("p", { staticClass: "widget-default--description", style: _vm.descriptionStyle }, [_vm._v(_vm._s(_vm.reference.openGraphObject.description))]), _c("p", { staticClass: "widget-default--link" }, [_vm._v(_vm._s(_vm.compactLink))])])]) : _vm._e()]); +}; +var _sfc_staticRenderFns$2 = []; +var __component__$2 = /* @__PURE__ */ normalizeComponent( + _sfc_main$2, + _sfc_render$2, + _sfc_staticRenderFns$2, + false, + null, + "de8147ea", + null, + null +); +const ReferenceWidget = __component__$2.exports; +const URL_PATTERN = /(\s|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/ig; +const URL_PATTERN_AUTOLINK = /(\s|\(|^)((https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\s|\)|$)/ig; +const ReferenceList_vue_vue_type_style_index_0_scoped_5a4fd40e_lang = ""; +const _sfc_main$1 = { + name: "ReferenceList", + components: { ReferenceWidget }, + props: { + text: { + type: String, + default: "" + }, + referenceData: { + type: Object, + default: null + }, + limit: { + type: Number, + default: 1 + } + }, + data() { + return { + references: null, + loading: true + }; + }, + computed: { + values() { + return this.referenceData ? this.referenceData : this.references ? Object.values(this.references) : []; + }, + firstReference() { + var _a; + return (_a = this.values[0]) != null ? _a : null; + }, + displayedReferences() { + return this.values.slice(0, this.limit); + } + }, + watch: { + text: "fetch" + }, + mounted() { + this.fetch(); + }, + methods: { + fetch() { + this.loading = true; + if (this.referenceData) { + this.loading = false; + return; + } + if (!new RegExp(URL_PATTERN).exec(this.text)) { + this.loading = false; + return; + } + this.resolve().then((response) => { + this.references = response.data.ocs.data.references; + this.loading = false; + }).catch((error) => { + console.error("Failed to extract references", error); + this.loading = false; + }); + }, + resolve() { + const match = new RegExp(URL_PATTERN).exec(this.text.trim()); + if (this.limit === 1 && match) { + return _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].get((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateOcsUrl)("references/resolve", 2) + `?reference=${encodeURIComponent(match[0])}`); + } + return _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].post((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateOcsUrl)("references/extract", 2), { + text: this.text, + resolve: true, + limit: this.limit + }); + } + } +}; +var _sfc_render$1 = function render2() { + var _vm = this, _c = _vm._self._c; + return _c("div", { staticClass: "widgets--list", class: { "icon-loading": _vm.loading } }, _vm._l(_vm.displayedReferences, function(reference) { + return _c("div", { key: reference.openGraphObject.id }, [_c("ReferenceWidget", { attrs: { "reference": reference } })], 1); + }), 0); +}; +var _sfc_staticRenderFns$1 = []; +var __component__$1 = /* @__PURE__ */ normalizeComponent( + _sfc_main$1, + _sfc_render$1, + _sfc_staticRenderFns$1, + false, + null, + "5a4fd40e", + null, + null +); +const ReferenceList = __component__$1.exports; +function toString(node, options) { + var { includeImageAlt = true } = options || {}; + return one$1(node, includeImageAlt); +} +function one$1(node, includeImageAlt) { + return node && typeof node === "object" && (node.value || (includeImageAlt ? node.alt : "") || "children" in node && all$1(node.children, includeImageAlt) || Array.isArray(node) && all$1(node, includeImageAlt)) || ""; +} +function all$1(values, includeImageAlt) { + var result = []; + var index2 = -1; + while (++index2 < values.length) { + result[index2] = one$1(values[index2], includeImageAlt); + } + return result.join(""); +} +function splice(list2, start, remove, items) { + const end = list2.length; + let chunkStart = 0; + let parameters; + if (start < 0) { + start = -start > end ? 0 : end + start; + } else { + start = start > end ? end : start; + } + remove = remove > 0 ? remove : 0; + if (items.length < 1e4) { + parameters = Array.from(items); + parameters.unshift(start, remove); + [].splice.apply(list2, parameters); + } else { + if (remove) + [].splice.apply(list2, [start, remove]); + while (chunkStart < items.length) { + parameters = items.slice(chunkStart, chunkStart + 1e4); + parameters.unshift(start, 0); + [].splice.apply(list2, parameters); + chunkStart += 1e4; + start += 1e4; + } + } +} +function push(list2, items) { + if (list2.length > 0) { + splice(list2, list2.length, 0, items); + return list2; + } + return items; +} +const hasOwnProperty$1 = {}.hasOwnProperty; +function combineExtensions(extensions) { + const all2 = {}; + let index2 = -1; + while (++index2 < extensions.length) { + syntaxExtension(all2, extensions[index2]); + } + return all2; +} +function syntaxExtension(all2, extension2) { + let hook; + for (hook in extension2) { + const maybe = hasOwnProperty$1.call(all2, hook) ? all2[hook] : void 0; + const left = maybe || (all2[hook] = {}); + const right = extension2[hook]; + let code2; + for (code2 in right) { + if (!hasOwnProperty$1.call(left, code2)) + left[code2] = []; + const value = right[code2]; + constructs( + left[code2], + Array.isArray(value) ? value : value ? [value] : [] + ); + } + } +} +function constructs(existing, list2) { + let index2 = -1; + const before = []; + while (++index2 < list2.length) { + (list2[index2].add === "after" ? existing : before).push(list2[index2]); + } + splice(existing, 0, 0, before); +} +const unicodePunctuationRegex = /[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/; +const asciiAlpha = regexCheck(/[A-Za-z]/); +const asciiDigit = regexCheck(/\d/); +const asciiHexDigit = regexCheck(/[\dA-Fa-f]/); +const asciiAlphanumeric = regexCheck(/[\dA-Za-z]/); +const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/); +const asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/); +function asciiControl(code2) { + return code2 !== null && (code2 < 32 || code2 === 127); +} +function markdownLineEndingOrSpace(code2) { + return code2 !== null && (code2 < 0 || code2 === 32); +} +function markdownLineEnding(code2) { + return code2 !== null && code2 < -2; +} +function markdownSpace(code2) { + return code2 === -2 || code2 === -1 || code2 === 32; +} +const unicodeWhitespace = regexCheck(/\s/); +const unicodePunctuation = regexCheck(unicodePunctuationRegex); +function regexCheck(regex) { + return check; + function check(code2) { + return code2 !== null && regex.test(String.fromCharCode(code2)); + } +} +function factorySpace(effects, ok2, type, max) { + const limit = max ? max - 1 : Number.POSITIVE_INFINITY; + let size = 0; + return start; + function start(code2) { + if (markdownSpace(code2)) { + effects.enter(type); + return prefix(code2); + } + return ok2(code2); + } + function prefix(code2) { + if (markdownSpace(code2) && size++ < limit) { + effects.consume(code2); + return prefix; + } + effects.exit(type); + return ok2(code2); + } +} +const content$1 = { + tokenize: initializeContent +}; +function initializeContent(effects) { + const contentStart = effects.attempt( + this.parser.constructs.contentInitial, + afterContentStartConstruct, + paragraphInitial + ); + let previous2; + return contentStart; + function afterContentStartConstruct(code2) { + if (code2 === null) { + effects.consume(code2); + return; + } + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + return factorySpace(effects, contentStart, "linePrefix"); + } + function paragraphInitial(code2) { + effects.enter("paragraph"); + return lineStart(code2); + } + function lineStart(code2) { + const token = effects.enter("chunkText", { + contentType: "text", + previous: previous2 + }); + if (previous2) { + previous2.next = token; + } + previous2 = token; + return data(code2); + } + function data(code2) { + if (code2 === null) { + effects.exit("chunkText"); + effects.exit("paragraph"); + effects.consume(code2); + return; + } + if (markdownLineEnding(code2)) { + effects.consume(code2); + effects.exit("chunkText"); + return lineStart; + } + effects.consume(code2); + return data; + } +} +const document$2 = { + tokenize: initializeDocument +}; +const containerConstruct = { + tokenize: tokenizeContainer +}; +function initializeDocument(effects) { + const self = this; + const stack = []; + let continued = 0; + let childFlow; + let childToken; + let lineStartOffset; + return start; + function start(code2) { + if (continued < stack.length) { + const item = stack[continued]; + self.containerState = item[1]; + return effects.attempt( + item[0].continuation, + documentContinue, + checkNewContainers + )(code2); + } + return checkNewContainers(code2); + } + function documentContinue(code2) { + continued++; + if (self.containerState._closeFlow) { + self.containerState._closeFlow = void 0; + if (childFlow) { + closeFlow(); + } + const indexBeforeExits = self.events.length; + let indexBeforeFlow = indexBeforeExits; + let point2; + while (indexBeforeFlow--) { + if (self.events[indexBeforeFlow][0] === "exit" && self.events[indexBeforeFlow][1].type === "chunkFlow") { + point2 = self.events[indexBeforeFlow][1].end; + break; + } + } + exitContainers(continued); + let index2 = indexBeforeExits; + while (index2 < self.events.length) { + self.events[index2][1].end = Object.assign({}, point2); + index2++; + } + splice( + self.events, + indexBeforeFlow + 1, + 0, + self.events.slice(indexBeforeExits) + ); + self.events.length = index2; + return checkNewContainers(code2); + } + return start(code2); + } + function checkNewContainers(code2) { + if (continued === stack.length) { + if (!childFlow) { + return documentContinued(code2); + } + if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { + return flowStart(code2); + } + self.interrupt = Boolean( + childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack + ); + } + self.containerState = {}; + return effects.check( + containerConstruct, + thereIsANewContainer, + thereIsNoNewContainer + )(code2); + } + function thereIsANewContainer(code2) { + if (childFlow) + closeFlow(); + exitContainers(continued); + return documentContinued(code2); + } + function thereIsNoNewContainer(code2) { + self.parser.lazy[self.now().line] = continued !== stack.length; + lineStartOffset = self.now().offset; + return flowStart(code2); + } + function documentContinued(code2) { + self.containerState = {}; + return effects.attempt( + containerConstruct, + containerContinue, + flowStart + )(code2); + } + function containerContinue(code2) { + continued++; + stack.push([self.currentConstruct, self.containerState]); + return documentContinued(code2); + } + function flowStart(code2) { + if (code2 === null) { + if (childFlow) + closeFlow(); + exitContainers(0); + effects.consume(code2); + return; + } + childFlow = childFlow || self.parser.flow(self.now()); + effects.enter("chunkFlow", { + contentType: "flow", + previous: childToken, + _tokenizer: childFlow + }); + return flowContinue(code2); + } + function flowContinue(code2) { + if (code2 === null) { + writeToChild(effects.exit("chunkFlow"), true); + exitContainers(0); + effects.consume(code2); + return; + } + if (markdownLineEnding(code2)) { + effects.consume(code2); + writeToChild(effects.exit("chunkFlow")); + continued = 0; + self.interrupt = void 0; + return start; + } + effects.consume(code2); + return flowContinue; + } + function writeToChild(token, eof) { + const stream = self.sliceStream(token); + if (eof) + stream.push(null); + token.previous = childToken; + if (childToken) + childToken.next = token; + childToken = token; + childFlow.defineSkip(token.start); + childFlow.write(stream); + if (self.parser.lazy[token.start.line]) { + let index2 = childFlow.events.length; + while (index2--) { + if (childFlow.events[index2][1].start.offset < lineStartOffset && (!childFlow.events[index2][1].end || childFlow.events[index2][1].end.offset > lineStartOffset)) { + return; + } + } + const indexBeforeExits = self.events.length; + let indexBeforeFlow = indexBeforeExits; + let seen; + let point2; + while (indexBeforeFlow--) { + if (self.events[indexBeforeFlow][0] === "exit" && self.events[indexBeforeFlow][1].type === "chunkFlow") { + if (seen) { + point2 = self.events[indexBeforeFlow][1].end; + break; + } + seen = true; + } + } + exitContainers(continued); + index2 = indexBeforeExits; + while (index2 < self.events.length) { + self.events[index2][1].end = Object.assign({}, point2); + index2++; + } + splice( + self.events, + indexBeforeFlow + 1, + 0, + self.events.slice(indexBeforeExits) + ); + self.events.length = index2; + } + } + function exitContainers(size) { + let index2 = stack.length; + while (index2-- > size) { + const entry = stack[index2]; + self.containerState = entry[1]; + entry[0].exit.call(self, effects); + } + stack.length = size; + } + function closeFlow() { + childFlow.write([null]); + childToken = void 0; + childFlow = void 0; + self.containerState._closeFlow = void 0; + } +} +function tokenizeContainer(effects, ok2, nok) { + return factorySpace( + effects, + effects.attempt(this.parser.constructs.document, ok2, nok), + "linePrefix", + this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + ); +} +function classifyCharacter(code2) { + if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) { + return 1; + } + if (unicodePunctuation(code2)) { + return 2; + } +} +function resolveAll(constructs2, events, context) { + const called = []; + let index2 = -1; + while (++index2 < constructs2.length) { + const resolve = constructs2[index2].resolveAll; + if (resolve && !called.includes(resolve)) { + events = resolve(events, context); + called.push(resolve); + } + } + return events; +} +const attention = { + name: "attention", + tokenize: tokenizeAttention, + resolveAll: resolveAllAttention +}; +function resolveAllAttention(events, context) { + let index2 = -1; + let open; + let group; + let text2; + let openingSequence; + let closingSequence; + let use; + let nextEvents; + let offset; + while (++index2 < events.length) { + if (events[index2][0] === "enter" && events[index2][1].type === "attentionSequence" && events[index2][1]._close) { + open = index2; + while (open--) { + if (events[open][0] === "exit" && events[open][1].type === "attentionSequence" && events[open][1]._open && context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index2][1]).charCodeAt(0)) { + if ((events[open][1]._close || events[index2][1]._open) && (events[index2][1].end.offset - events[index2][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index2][1].end.offset - events[index2][1].start.offset) % 3)) { + continue; + } + use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1; + const start = Object.assign({}, events[open][1].end); + const end = Object.assign({}, events[index2][1].start); + movePoint(start, -use); + movePoint(end, use); + openingSequence = { + type: use > 1 ? "strongSequence" : "emphasisSequence", + start, + end: Object.assign({}, events[open][1].end) + }; + closingSequence = { + type: use > 1 ? "strongSequence" : "emphasisSequence", + start: Object.assign({}, events[index2][1].start), + end + }; + text2 = { + type: use > 1 ? "strongText" : "emphasisText", + start: Object.assign({}, events[open][1].end), + end: Object.assign({}, events[index2][1].start) + }; + group = { + type: use > 1 ? "strong" : "emphasis", + start: Object.assign({}, openingSequence.start), + end: Object.assign({}, closingSequence.end) + }; + events[open][1].end = Object.assign({}, openingSequence.start); + events[index2][1].start = Object.assign({}, closingSequence.end); + nextEvents = []; + if (events[open][1].end.offset - events[open][1].start.offset) { + nextEvents = push(nextEvents, [ + ["enter", events[open][1], context], + ["exit", events[open][1], context] + ]); + } + nextEvents = push(nextEvents, [ + ["enter", group, context], + ["enter", openingSequence, context], + ["exit", openingSequence, context], + ["enter", text2, context] + ]); + nextEvents = push( + nextEvents, + resolveAll( + context.parser.constructs.insideSpan.null, + events.slice(open + 1, index2), + context + ) + ); + nextEvents = push(nextEvents, [ + ["exit", text2, context], + ["enter", closingSequence, context], + ["exit", closingSequence, context], + ["exit", group, context] + ]); + if (events[index2][1].end.offset - events[index2][1].start.offset) { + offset = 2; + nextEvents = push(nextEvents, [ + ["enter", events[index2][1], context], + ["exit", events[index2][1], context] + ]); + } else { + offset = 0; + } + splice(events, open - 1, index2 - open + 3, nextEvents); + index2 = open + nextEvents.length - offset - 2; + break; + } + } + } + } + index2 = -1; + while (++index2 < events.length) { + if (events[index2][1].type === "attentionSequence") { + events[index2][1].type = "data"; + } + } + return events; +} +function tokenizeAttention(effects, ok2) { + const attentionMarkers2 = this.parser.constructs.attentionMarkers.null; + const previous2 = this.previous; + const before = classifyCharacter(previous2); + let marker; + return start; + function start(code2) { + effects.enter("attentionSequence"); + marker = code2; + return sequence(code2); + } + function sequence(code2) { + if (code2 === marker) { + effects.consume(code2); + return sequence; + } + const token = effects.exit("attentionSequence"); + const after = classifyCharacter(code2); + const open = !after || after === 2 && before || attentionMarkers2.includes(code2); + const close = !before || before === 2 && after || attentionMarkers2.includes(previous2); + token._open = Boolean(marker === 42 ? open : open && (before || !close)); + token._close = Boolean(marker === 42 ? close : close && (after || !open)); + return ok2(code2); + } +} +function movePoint(point2, offset) { + point2.column += offset; + point2.offset += offset; + point2._bufferIndex += offset; +} +const autolink = { + name: "autolink", + tokenize: tokenizeAutolink +}; +function tokenizeAutolink(effects, ok2, nok) { + let size = 1; + return start; + function start(code2) { + effects.enter("autolink"); + effects.enter("autolinkMarker"); + effects.consume(code2); + effects.exit("autolinkMarker"); + effects.enter("autolinkProtocol"); + return open; + } + function open(code2) { + if (asciiAlpha(code2)) { + effects.consume(code2); + return schemeOrEmailAtext; + } + return asciiAtext(code2) ? emailAtext(code2) : nok(code2); + } + function schemeOrEmailAtext(code2) { + return code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2) ? schemeInsideOrEmailAtext(code2) : emailAtext(code2); + } + function schemeInsideOrEmailAtext(code2) { + if (code2 === 58) { + effects.consume(code2); + return urlInside; + } + if ((code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) && size++ < 32) { + effects.consume(code2); + return schemeInsideOrEmailAtext; + } + return emailAtext(code2); + } + function urlInside(code2) { + if (code2 === 62) { + effects.exit("autolinkProtocol"); + return end(code2); + } + if (code2 === null || code2 === 32 || code2 === 60 || asciiControl(code2)) { + return nok(code2); + } + effects.consume(code2); + return urlInside; + } + function emailAtext(code2) { + if (code2 === 64) { + effects.consume(code2); + size = 0; + return emailAtSignOrDot; + } + if (asciiAtext(code2)) { + effects.consume(code2); + return emailAtext; + } + return nok(code2); + } + function emailAtSignOrDot(code2) { + return asciiAlphanumeric(code2) ? emailLabel(code2) : nok(code2); + } + function emailLabel(code2) { + if (code2 === 46) { + effects.consume(code2); + size = 0; + return emailAtSignOrDot; + } + if (code2 === 62) { + effects.exit("autolinkProtocol").type = "autolinkEmail"; + return end(code2); + } + return emailValue(code2); + } + function emailValue(code2) { + if ((code2 === 45 || asciiAlphanumeric(code2)) && size++ < 63) { + effects.consume(code2); + return code2 === 45 ? emailValue : emailLabel; + } + return nok(code2); + } + function end(code2) { + effects.enter("autolinkMarker"); + effects.consume(code2); + effects.exit("autolinkMarker"); + effects.exit("autolink"); + return ok2; + } +} +const blankLine = { + tokenize: tokenizeBlankLine, + partial: true +}; +function tokenizeBlankLine(effects, ok2, nok) { + return factorySpace(effects, afterWhitespace, "linePrefix"); + function afterWhitespace(code2) { + return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2); + } +} +const blockQuote = { + name: "blockQuote", + tokenize: tokenizeBlockQuoteStart, + continuation: { + tokenize: tokenizeBlockQuoteContinuation + }, + exit +}; +function tokenizeBlockQuoteStart(effects, ok2, nok) { + const self = this; + return start; + function start(code2) { + if (code2 === 62) { + const state = self.containerState; + if (!state.open) { + effects.enter("blockQuote", { + _container: true + }); + state.open = true; + } + effects.enter("blockQuotePrefix"); + effects.enter("blockQuoteMarker"); + effects.consume(code2); + effects.exit("blockQuoteMarker"); + return after; + } + return nok(code2); + } + function after(code2) { + if (markdownSpace(code2)) { + effects.enter("blockQuotePrefixWhitespace"); + effects.consume(code2); + effects.exit("blockQuotePrefixWhitespace"); + effects.exit("blockQuotePrefix"); + return ok2; + } + effects.exit("blockQuotePrefix"); + return ok2(code2); + } +} +function tokenizeBlockQuoteContinuation(effects, ok2, nok) { + return factorySpace( + effects, + effects.attempt(blockQuote, ok2, nok), + "linePrefix", + this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + ); +} +function exit(effects) { + effects.exit("blockQuote"); +} +const characterEscape = { + name: "characterEscape", + tokenize: tokenizeCharacterEscape +}; +function tokenizeCharacterEscape(effects, ok2, nok) { + return start; + function start(code2) { + effects.enter("characterEscape"); + effects.enter("escapeMarker"); + effects.consume(code2); + effects.exit("escapeMarker"); + return open; + } + function open(code2) { + if (asciiPunctuation(code2)) { + effects.enter("characterEscapeValue"); + effects.consume(code2); + effects.exit("characterEscapeValue"); + effects.exit("characterEscape"); + return ok2; + } + return nok(code2); + } +} +const element$1 = document.createElement("i"); +function decodeNamedCharacterReference(value) { + const characterReference2 = "&" + value + ";"; + element$1.innerHTML = characterReference2; + const char = element$1.textContent; + if (char.charCodeAt(char.length - 1) === 59 && value !== "semi") { + return false; + } + return char === characterReference2 ? false : char; +} +const characterReference = { + name: "characterReference", + tokenize: tokenizeCharacterReference +}; +function tokenizeCharacterReference(effects, ok2, nok) { + const self = this; + let size = 0; + let max; + let test; + return start; + function start(code2) { + effects.enter("characterReference"); + effects.enter("characterReferenceMarker"); + effects.consume(code2); + effects.exit("characterReferenceMarker"); + return open; + } + function open(code2) { + if (code2 === 35) { + effects.enter("characterReferenceMarkerNumeric"); + effects.consume(code2); + effects.exit("characterReferenceMarkerNumeric"); + return numeric; + } + effects.enter("characterReferenceValue"); + max = 31; + test = asciiAlphanumeric; + return value(code2); + } + function numeric(code2) { + if (code2 === 88 || code2 === 120) { + effects.enter("characterReferenceMarkerHexadecimal"); + effects.consume(code2); + effects.exit("characterReferenceMarkerHexadecimal"); + effects.enter("characterReferenceValue"); + max = 6; + test = asciiHexDigit; + return value; + } + effects.enter("characterReferenceValue"); + max = 7; + test = asciiDigit; + return value(code2); + } + function value(code2) { + let token; + if (code2 === 59 && size) { + token = effects.exit("characterReferenceValue"); + if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) { + return nok(code2); + } + effects.enter("characterReferenceMarker"); + effects.consume(code2); + effects.exit("characterReferenceMarker"); + effects.exit("characterReference"); + return ok2; + } + if (test(code2) && size++ < max) { + effects.consume(code2); + return value; + } + return nok(code2); + } +} +const codeFenced = { + name: "codeFenced", + tokenize: tokenizeCodeFenced, + concrete: true +}; +function tokenizeCodeFenced(effects, ok2, nok) { + const self = this; + const closingFenceConstruct = { + tokenize: tokenizeClosingFence, + partial: true + }; + const nonLazyLine = { + tokenize: tokenizeNonLazyLine, + partial: true + }; + const tail = this.events[this.events.length - 1]; + const initialPrefix = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0; + let sizeOpen = 0; + let marker; + return start; + function start(code2) { + effects.enter("codeFenced"); + effects.enter("codeFencedFence"); + effects.enter("codeFencedFenceSequence"); + marker = code2; + return sequenceOpen(code2); + } + function sequenceOpen(code2) { + if (code2 === marker) { + effects.consume(code2); + sizeOpen++; + return sequenceOpen; + } + effects.exit("codeFencedFenceSequence"); + return sizeOpen < 3 ? nok(code2) : factorySpace(effects, infoOpen, "whitespace")(code2); + } + function infoOpen(code2) { + if (code2 === null || markdownLineEnding(code2)) { + return openAfter(code2); + } + effects.enter("codeFencedFenceInfo"); + effects.enter("chunkString", { + contentType: "string" + }); + return info(code2); + } + function info(code2) { + if (code2 === null || markdownLineEndingOrSpace(code2)) { + effects.exit("chunkString"); + effects.exit("codeFencedFenceInfo"); + return factorySpace(effects, infoAfter, "whitespace")(code2); + } + if (code2 === 96 && code2 === marker) + return nok(code2); + effects.consume(code2); + return info; + } + function infoAfter(code2) { + if (code2 === null || markdownLineEnding(code2)) { + return openAfter(code2); + } + effects.enter("codeFencedFenceMeta"); + effects.enter("chunkString", { + contentType: "string" + }); + return meta(code2); + } + function meta(code2) { + if (code2 === null || markdownLineEnding(code2)) { + effects.exit("chunkString"); + effects.exit("codeFencedFenceMeta"); + return openAfter(code2); + } + if (code2 === 96 && code2 === marker) + return nok(code2); + effects.consume(code2); + return meta; + } + function openAfter(code2) { + effects.exit("codeFencedFence"); + return self.interrupt ? ok2(code2) : contentStart(code2); + } + function contentStart(code2) { + if (code2 === null) { + return after(code2); + } + if (markdownLineEnding(code2)) { + return effects.attempt( + nonLazyLine, + effects.attempt( + closingFenceConstruct, + after, + initialPrefix ? factorySpace( + effects, + contentStart, + "linePrefix", + initialPrefix + 1 + ) : contentStart + ), + after + )(code2); + } + effects.enter("codeFlowValue"); + return contentContinue(code2); + } + function contentContinue(code2) { + if (code2 === null || markdownLineEnding(code2)) { + effects.exit("codeFlowValue"); + return contentStart(code2); + } + effects.consume(code2); + return contentContinue; + } + function after(code2) { + effects.exit("codeFenced"); + return ok2(code2); + } + function tokenizeNonLazyLine(effects2, ok3, nok2) { + const self2 = this; + return start2; + function start2(code2) { + effects2.enter("lineEnding"); + effects2.consume(code2); + effects2.exit("lineEnding"); + return lineStart; + } + function lineStart(code2) { + return self2.parser.lazy[self2.now().line] ? nok2(code2) : ok3(code2); + } + } + function tokenizeClosingFence(effects2, ok3, nok2) { + let size = 0; + return factorySpace( + effects2, + closingSequenceStart, + "linePrefix", + this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + ); + function closingSequenceStart(code2) { + effects2.enter("codeFencedFence"); + effects2.enter("codeFencedFenceSequence"); + return closingSequence(code2); + } + function closingSequence(code2) { + if (code2 === marker) { + effects2.consume(code2); + size++; + return closingSequence; + } + if (size < sizeOpen) + return nok2(code2); + effects2.exit("codeFencedFenceSequence"); + return factorySpace(effects2, closingSequenceEnd, "whitespace")(code2); + } + function closingSequenceEnd(code2) { + if (code2 === null || markdownLineEnding(code2)) { + effects2.exit("codeFencedFence"); + return ok3(code2); + } + return nok2(code2); + } + } +} +const codeIndented = { + name: "codeIndented", + tokenize: tokenizeCodeIndented +}; +const indentedContent = { + tokenize: tokenizeIndentedContent, + partial: true +}; +function tokenizeCodeIndented(effects, ok2, nok) { + const self = this; + return start; + function start(code2) { + effects.enter("codeIndented"); + return factorySpace(effects, afterStartPrefix, "linePrefix", 4 + 1)(code2); + } + function afterStartPrefix(code2) { + const tail = self.events[self.events.length - 1]; + return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? afterPrefix(code2) : nok(code2); + } + function afterPrefix(code2) { + if (code2 === null) { + return after(code2); + } + if (markdownLineEnding(code2)) { + return effects.attempt(indentedContent, afterPrefix, after)(code2); + } + effects.enter("codeFlowValue"); + return content2(code2); + } + function content2(code2) { + if (code2 === null || markdownLineEnding(code2)) { + effects.exit("codeFlowValue"); + return afterPrefix(code2); + } + effects.consume(code2); + return content2; + } + function after(code2) { + effects.exit("codeIndented"); + return ok2(code2); + } +} +function tokenizeIndentedContent(effects, ok2, nok) { + const self = this; + return start; + function start(code2) { + if (self.parser.lazy[self.now().line]) { + return nok(code2); + } + if (markdownLineEnding(code2)) { + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + return start; + } + return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code2); + } + function afterPrefix(code2) { + const tail = self.events[self.events.length - 1]; + return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok2(code2) : markdownLineEnding(code2) ? start(code2) : nok(code2); + } +} +const codeText = { + name: "codeText", + tokenize: tokenizeCodeText, + resolve: resolveCodeText, + previous +}; +function resolveCodeText(events) { + let tailExitIndex = events.length - 4; + let headEnterIndex = 3; + let index2; + let enter; + if ((events[headEnterIndex][1].type === "lineEnding" || events[headEnterIndex][1].type === "space") && (events[tailExitIndex][1].type === "lineEnding" || events[tailExitIndex][1].type === "space")) { + index2 = headEnterIndex; + while (++index2 < tailExitIndex) { + if (events[index2][1].type === "codeTextData") { + events[headEnterIndex][1].type = "codeTextPadding"; + events[tailExitIndex][1].type = "codeTextPadding"; + headEnterIndex += 2; + tailExitIndex -= 2; + break; + } + } + } + index2 = headEnterIndex - 1; + tailExitIndex++; + while (++index2 <= tailExitIndex) { + if (enter === void 0) { + if (index2 !== tailExitIndex && events[index2][1].type !== "lineEnding") { + enter = index2; + } + } else if (index2 === tailExitIndex || events[index2][1].type === "lineEnding") { + events[enter][1].type = "codeTextData"; + if (index2 !== enter + 2) { + events[enter][1].end = events[index2 - 1][1].end; + events.splice(enter + 2, index2 - enter - 2); + tailExitIndex -= index2 - enter - 2; + index2 = enter + 2; + } + enter = void 0; + } + } + return events; +} +function previous(code2) { + return code2 !== 96 || this.events[this.events.length - 1][1].type === "characterEscape"; +} +function tokenizeCodeText(effects, ok2, nok) { + let sizeOpen = 0; + let size; + let token; + return start; + function start(code2) { + effects.enter("codeText"); + effects.enter("codeTextSequence"); + return openingSequence(code2); + } + function openingSequence(code2) { + if (code2 === 96) { + effects.consume(code2); + sizeOpen++; + return openingSequence; + } + effects.exit("codeTextSequence"); + return gap(code2); + } + function gap(code2) { + if (code2 === null) { + return nok(code2); + } + if (code2 === 96) { + token = effects.enter("codeTextSequence"); + size = 0; + return closingSequence(code2); + } + if (code2 === 32) { + effects.enter("space"); + effects.consume(code2); + effects.exit("space"); + return gap; + } + if (markdownLineEnding(code2)) { + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + return gap; + } + effects.enter("codeTextData"); + return data(code2); + } + function data(code2) { + if (code2 === null || code2 === 32 || code2 === 96 || markdownLineEnding(code2)) { + effects.exit("codeTextData"); + return gap(code2); + } + effects.consume(code2); + return data; + } + function closingSequence(code2) { + if (code2 === 96) { + effects.consume(code2); + size++; + return closingSequence; + } + if (size === sizeOpen) { + effects.exit("codeTextSequence"); + effects.exit("codeText"); + return ok2(code2); + } + token.type = "codeTextData"; + return data(code2); + } +} +function subtokenize(events) { + const jumps = {}; + let index2 = -1; + let event; + let lineIndex; + let otherIndex; + let otherEvent; + let parameters; + let subevents; + let more; + while (++index2 < events.length) { + while (index2 in jumps) { + index2 = jumps[index2]; + } + event = events[index2]; + if (index2 && event[1].type === "chunkFlow" && events[index2 - 1][1].type === "listItemPrefix") { + subevents = event[1]._tokenizer.events; + otherIndex = 0; + if (otherIndex < subevents.length && subevents[otherIndex][1].type === "lineEndingBlank") { + otherIndex += 2; + } + if (otherIndex < subevents.length && subevents[otherIndex][1].type === "content") { + while (++otherIndex < subevents.length) { + if (subevents[otherIndex][1].type === "content") { + break; + } + if (subevents[otherIndex][1].type === "chunkText") { + subevents[otherIndex][1]._isInFirstContentOfListItem = true; + otherIndex++; + } + } + } + } + if (event[0] === "enter") { + if (event[1].contentType) { + Object.assign(jumps, subcontent(events, index2)); + index2 = jumps[index2]; + more = true; + } + } else if (event[1]._container) { + otherIndex = index2; + lineIndex = void 0; + while (otherIndex--) { + otherEvent = events[otherIndex]; + if (otherEvent[1].type === "lineEnding" || otherEvent[1].type === "lineEndingBlank") { + if (otherEvent[0] === "enter") { + if (lineIndex) { + events[lineIndex][1].type = "lineEndingBlank"; + } + otherEvent[1].type = "lineEnding"; + lineIndex = otherIndex; + } + } else { + break; + } + } + if (lineIndex) { + event[1].end = Object.assign({}, events[lineIndex][1].start); + parameters = events.slice(lineIndex, index2); + parameters.unshift(event); + splice(events, lineIndex, index2 - lineIndex + 1, parameters); + } + } + } + return !more; +} +function subcontent(events, eventIndex) { + const token = events[eventIndex][1]; + const context = events[eventIndex][2]; + let startPosition = eventIndex - 1; + const startPositions = []; + const tokenizer = token._tokenizer || context.parser[token.contentType](token.start); + const childEvents = tokenizer.events; + const jumps = []; + const gaps = {}; + let stream; + let previous2; + let index2 = -1; + let current = token; + let adjust = 0; + let start = 0; + const breaks = [start]; + while (current) { + while (events[++startPosition][1] !== current) { + } + startPositions.push(startPosition); + if (!current._tokenizer) { + stream = context.sliceStream(current); + if (!current.next) { + stream.push(null); + } + if (previous2) { + tokenizer.defineSkip(current.start); + } + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = true; + } + tokenizer.write(stream); + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = void 0; + } + } + previous2 = current; + current = current.next; + } + current = token; + while (++index2 < childEvents.length) { + if (childEvents[index2][0] === "exit" && childEvents[index2 - 1][0] === "enter" && childEvents[index2][1].type === childEvents[index2 - 1][1].type && childEvents[index2][1].start.line !== childEvents[index2][1].end.line) { + start = index2 + 1; + breaks.push(start); + current._tokenizer = void 0; + current.previous = void 0; + current = current.next; + } + } + tokenizer.events = []; + if (current) { + current._tokenizer = void 0; + current.previous = void 0; + } else { + breaks.pop(); + } + index2 = breaks.length; + while (index2--) { + const slice = childEvents.slice(breaks[index2], breaks[index2 + 1]); + const start2 = startPositions.pop(); + jumps.unshift([start2, start2 + slice.length - 1]); + splice(events, start2, 2, slice); + } + index2 = -1; + while (++index2 < jumps.length) { + gaps[adjust + jumps[index2][0]] = adjust + jumps[index2][1]; + adjust += jumps[index2][1] - jumps[index2][0] - 1; + } + return gaps; +} +const content = { + tokenize: tokenizeContent, + resolve: resolveContent +}; +const continuationConstruct = { + tokenize: tokenizeContinuation, + partial: true +}; +function resolveContent(events) { + subtokenize(events); + return events; +} +function tokenizeContent(effects, ok2) { + let previous2; + return start; + function start(code2) { + effects.enter("content"); + previous2 = effects.enter("chunkContent", { + contentType: "content" + }); + return data(code2); + } + function data(code2) { + if (code2 === null) { + return contentEnd(code2); + } + if (markdownLineEnding(code2)) { + return effects.check( + continuationConstruct, + contentContinue, + contentEnd + )(code2); + } + effects.consume(code2); + return data; + } + function contentEnd(code2) { + effects.exit("chunkContent"); + effects.exit("content"); + return ok2(code2); + } + function contentContinue(code2) { + effects.consume(code2); + effects.exit("chunkContent"); + previous2.next = effects.enter("chunkContent", { + contentType: "content", + previous: previous2 + }); + previous2 = previous2.next; + return data; + } +} +function tokenizeContinuation(effects, ok2, nok) { + const self = this; + return startLookahead; + function startLookahead(code2) { + effects.exit("chunkContent"); + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + return factorySpace(effects, prefixed, "linePrefix"); + } + function prefixed(code2) { + if (code2 === null || markdownLineEnding(code2)) { + return nok(code2); + } + const tail = self.events[self.events.length - 1]; + if (!self.parser.constructs.disable.null.includes("codeIndented") && tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4) { + return ok2(code2); + } + return effects.interrupt(self.parser.constructs.flow, nok, ok2)(code2); + } +} +function factoryDestination(effects, ok2, nok, type, literalType, literalMarkerType, rawType, stringType, max) { + const limit = max || Number.POSITIVE_INFINITY; + let balance = 0; + return start; + function start(code2) { + if (code2 === 60) { + effects.enter(type); + effects.enter(literalType); + effects.enter(literalMarkerType); + effects.consume(code2); + effects.exit(literalMarkerType); + return destinationEnclosedBefore; + } + if (code2 === null || code2 === 41 || asciiControl(code2)) { + return nok(code2); + } + effects.enter(type); + effects.enter(rawType); + effects.enter(stringType); + effects.enter("chunkString", { + contentType: "string" + }); + return destinationRaw(code2); + } + function destinationEnclosedBefore(code2) { + if (code2 === 62) { + effects.enter(literalMarkerType); + effects.consume(code2); + effects.exit(literalMarkerType); + effects.exit(literalType); + effects.exit(type); + return ok2; + } + effects.enter(stringType); + effects.enter("chunkString", { + contentType: "string" + }); + return destinationEnclosed(code2); + } + function destinationEnclosed(code2) { + if (code2 === 62) { + effects.exit("chunkString"); + effects.exit(stringType); + return destinationEnclosedBefore(code2); + } + if (code2 === null || code2 === 60 || markdownLineEnding(code2)) { + return nok(code2); + } + effects.consume(code2); + return code2 === 92 ? destinationEnclosedEscape : destinationEnclosed; + } + function destinationEnclosedEscape(code2) { + if (code2 === 60 || code2 === 62 || code2 === 92) { + effects.consume(code2); + return destinationEnclosed; + } + return destinationEnclosed(code2); + } + function destinationRaw(code2) { + if (code2 === 40) { + if (++balance > limit) + return nok(code2); + effects.consume(code2); + return destinationRaw; + } + if (code2 === 41) { + if (!balance--) { + effects.exit("chunkString"); + effects.exit(stringType); + effects.exit(rawType); + effects.exit(type); + return ok2(code2); + } + effects.consume(code2); + return destinationRaw; + } + if (code2 === null || markdownLineEndingOrSpace(code2)) { + if (balance) + return nok(code2); + effects.exit("chunkString"); + effects.exit(stringType); + effects.exit(rawType); + effects.exit(type); + return ok2(code2); + } + if (asciiControl(code2)) + return nok(code2); + effects.consume(code2); + return code2 === 92 ? destinationRawEscape : destinationRaw; + } + function destinationRawEscape(code2) { + if (code2 === 40 || code2 === 41 || code2 === 92) { + effects.consume(code2); + return destinationRaw; + } + return destinationRaw(code2); + } +} +function factoryLabel(effects, ok2, nok, type, markerType, stringType) { + const self = this; + let size = 0; + let data; + return start; + function start(code2) { + effects.enter(type); + effects.enter(markerType); + effects.consume(code2); + effects.exit(markerType); + effects.enter(stringType); + return atBreak; + } + function atBreak(code2) { + if (code2 === null || code2 === 91 || code2 === 93 && !data || code2 === 94 && !size && "_hiddenFootnoteSupport" in self.parser.constructs || size > 999) { + return nok(code2); + } + if (code2 === 93) { + effects.exit(stringType); + effects.enter(markerType); + effects.consume(code2); + effects.exit(markerType); + effects.exit(type); + return ok2; + } + if (markdownLineEnding(code2)) { + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + return atBreak; + } + effects.enter("chunkString", { + contentType: "string" + }); + return label(code2); + } + function label(code2) { + if (code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) || size++ > 999) { + effects.exit("chunkString"); + return atBreak(code2); + } + effects.consume(code2); + data = data || !markdownSpace(code2); + return code2 === 92 ? labelEscape : label; + } + function labelEscape(code2) { + if (code2 === 91 || code2 === 92 || code2 === 93) { + effects.consume(code2); + size++; + return label; + } + return label(code2); + } +} +function factoryTitle(effects, ok2, nok, type, markerType, stringType) { + let marker; + return start; + function start(code2) { + effects.enter(type); + effects.enter(markerType); + effects.consume(code2); + effects.exit(markerType); + marker = code2 === 40 ? 41 : code2; + return atFirstTitleBreak; + } + function atFirstTitleBreak(code2) { + if (code2 === marker) { + effects.enter(markerType); + effects.consume(code2); + effects.exit(markerType); + effects.exit(type); + return ok2; + } + effects.enter(stringType); + return atTitleBreak(code2); + } + function atTitleBreak(code2) { + if (code2 === marker) { + effects.exit(stringType); + return atFirstTitleBreak(marker); + } + if (code2 === null) { + return nok(code2); + } + if (markdownLineEnding(code2)) { + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + return factorySpace(effects, atTitleBreak, "linePrefix"); + } + effects.enter("chunkString", { + contentType: "string" + }); + return title(code2); + } + function title(code2) { + if (code2 === marker || code2 === null || markdownLineEnding(code2)) { + effects.exit("chunkString"); + return atTitleBreak(code2); + } + effects.consume(code2); + return code2 === 92 ? titleEscape : title; + } + function titleEscape(code2) { + if (code2 === marker || code2 === 92) { + effects.consume(code2); + return title; + } + return title(code2); + } +} +function factoryWhitespace(effects, ok2) { + let seen; + return start; + function start(code2) { + if (markdownLineEnding(code2)) { + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + seen = true; + return start; + } + if (markdownSpace(code2)) { + return factorySpace( + effects, + start, + seen ? "linePrefix" : "lineSuffix" + )(code2); + } + return ok2(code2); + } +} +function normalizeIdentifier(value) { + return value.replace(/[\t\n\r ]+/g, " ").replace(/^ | $/g, "").toLowerCase().toUpperCase(); +} +const definition = { + name: "definition", + tokenize: tokenizeDefinition +}; +const titleConstruct = { + tokenize: tokenizeTitle, + partial: true +}; +function tokenizeDefinition(effects, ok2, nok) { + const self = this; + let identifier; + return start; + function start(code2) { + effects.enter("definition"); + return factoryLabel.call( + self, + effects, + labelAfter, + nok, + "definitionLabel", + "definitionLabelMarker", + "definitionLabelString" + )(code2); + } + function labelAfter(code2) { + identifier = normalizeIdentifier( + self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1) + ); + if (code2 === 58) { + effects.enter("definitionMarker"); + effects.consume(code2); + effects.exit("definitionMarker"); + return factoryWhitespace( + effects, + factoryDestination( + effects, + effects.attempt( + titleConstruct, + factorySpace(effects, after, "whitespace"), + factorySpace(effects, after, "whitespace") + ), + nok, + "definitionDestination", + "definitionDestinationLiteral", + "definitionDestinationLiteralMarker", + "definitionDestinationRaw", + "definitionDestinationString" + ) + ); + } + return nok(code2); + } + function after(code2) { + if (code2 === null || markdownLineEnding(code2)) { + effects.exit("definition"); + if (!self.parser.defined.includes(identifier)) { + self.parser.defined.push(identifier); + } + return ok2(code2); + } + return nok(code2); + } +} +function tokenizeTitle(effects, ok2, nok) { + return start; + function start(code2) { + return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, before)(code2) : nok(code2); + } + function before(code2) { + if (code2 === 34 || code2 === 39 || code2 === 40) { + return factoryTitle( + effects, + factorySpace(effects, after, "whitespace"), + nok, + "definitionTitle", + "definitionTitleMarker", + "definitionTitleString" + )(code2); + } + return nok(code2); + } + function after(code2) { + return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2); + } +} +const hardBreakEscape = { + name: "hardBreakEscape", + tokenize: tokenizeHardBreakEscape +}; +function tokenizeHardBreakEscape(effects, ok2, nok) { + return start; + function start(code2) { + effects.enter("hardBreakEscape"); + effects.enter("escapeMarker"); + effects.consume(code2); + return open; + } + function open(code2) { + if (markdownLineEnding(code2)) { + effects.exit("escapeMarker"); + effects.exit("hardBreakEscape"); + return ok2(code2); + } + return nok(code2); + } +} +const headingAtx = { + name: "headingAtx", + tokenize: tokenizeHeadingAtx, + resolve: resolveHeadingAtx +}; +function resolveHeadingAtx(events, context) { + let contentEnd = events.length - 2; + let contentStart = 3; + let content2; + let text2; + if (events[contentStart][1].type === "whitespace") { + contentStart += 2; + } + if (contentEnd - 2 > contentStart && events[contentEnd][1].type === "whitespace") { + contentEnd -= 2; + } + if (events[contentEnd][1].type === "atxHeadingSequence" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === "whitespace")) { + contentEnd -= contentStart + 1 === contentEnd ? 2 : 4; + } + if (contentEnd > contentStart) { + content2 = { + type: "atxHeadingText", + start: events[contentStart][1].start, + end: events[contentEnd][1].end + }; + text2 = { + type: "chunkText", + start: events[contentStart][1].start, + end: events[contentEnd][1].end, + contentType: "text" + }; + splice(events, contentStart, contentEnd - contentStart + 1, [ + ["enter", content2, context], + ["enter", text2, context], + ["exit", text2, context], + ["exit", content2, context] + ]); + } + return events; +} +function tokenizeHeadingAtx(effects, ok2, nok) { + const self = this; + let size = 0; + return start; + function start(code2) { + effects.enter("atxHeading"); + effects.enter("atxHeadingSequence"); + return fenceOpenInside(code2); + } + function fenceOpenInside(code2) { + if (code2 === 35 && size++ < 6) { + effects.consume(code2); + return fenceOpenInside; + } + if (code2 === null || markdownLineEndingOrSpace(code2)) { + effects.exit("atxHeadingSequence"); + return self.interrupt ? ok2(code2) : headingBreak(code2); + } + return nok(code2); + } + function headingBreak(code2) { + if (code2 === 35) { + effects.enter("atxHeadingSequence"); + return sequence(code2); + } + if (code2 === null || markdownLineEnding(code2)) { + effects.exit("atxHeading"); + return ok2(code2); + } + if (markdownSpace(code2)) { + return factorySpace(effects, headingBreak, "whitespace")(code2); + } + effects.enter("atxHeadingText"); + return data(code2); + } + function sequence(code2) { + if (code2 === 35) { + effects.consume(code2); + return sequence; + } + effects.exit("atxHeadingSequence"); + return headingBreak(code2); + } + function data(code2) { + if (code2 === null || code2 === 35 || markdownLineEndingOrSpace(code2)) { + effects.exit("atxHeadingText"); + return headingBreak(code2); + } + effects.consume(code2); + return data; + } +} +const htmlBlockNames = [ + "address", + "article", + "aside", + "base", + "basefont", + "blockquote", + "body", + "caption", + "center", + "col", + "colgroup", + "dd", + "details", + "dialog", + "dir", + "div", + "dl", + "dt", + "fieldset", + "figcaption", + "figure", + "footer", + "form", + "frame", + "frameset", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "head", + "header", + "hr", + "html", + "iframe", + "legend", + "li", + "link", + "main", + "menu", + "menuitem", + "nav", + "noframes", + "ol", + "optgroup", + "option", + "p", + "param", + "section", + "summary", + "table", + "tbody", + "td", + "tfoot", + "th", + "thead", + "title", + "tr", + "track", + "ul" +]; +const htmlRawNames = ["pre", "script", "style", "textarea"]; +const htmlFlow = { + name: "htmlFlow", + tokenize: tokenizeHtmlFlow, + resolveTo: resolveToHtmlFlow, + concrete: true +}; +const nextBlankConstruct = { + tokenize: tokenizeNextBlank, + partial: true +}; +function resolveToHtmlFlow(events) { + let index2 = events.length; + while (index2--) { + if (events[index2][0] === "enter" && events[index2][1].type === "htmlFlow") { + break; + } + } + if (index2 > 1 && events[index2 - 2][1].type === "linePrefix") { + events[index2][1].start = events[index2 - 2][1].start; + events[index2 + 1][1].start = events[index2 - 2][1].start; + events.splice(index2 - 2, 2); + } + return events; +} +function tokenizeHtmlFlow(effects, ok2, nok) { + const self = this; + let kind; + let startTag; + let buffer; + let index2; + let marker; + return start; + function start(code2) { + effects.enter("htmlFlow"); + effects.enter("htmlFlowData"); + effects.consume(code2); + return open; + } + function open(code2) { + if (code2 === 33) { + effects.consume(code2); + return declarationStart; + } + if (code2 === 47) { + effects.consume(code2); + return tagCloseStart; + } + if (code2 === 63) { + effects.consume(code2); + kind = 3; + return self.interrupt ? ok2 : continuationDeclarationInside; + } + if (asciiAlpha(code2)) { + effects.consume(code2); + buffer = String.fromCharCode(code2); + startTag = true; + return tagName; + } + return nok(code2); + } + function declarationStart(code2) { + if (code2 === 45) { + effects.consume(code2); + kind = 2; + return commentOpenInside; + } + if (code2 === 91) { + effects.consume(code2); + kind = 5; + buffer = "CDATA["; + index2 = 0; + return cdataOpenInside; + } + if (asciiAlpha(code2)) { + effects.consume(code2); + kind = 4; + return self.interrupt ? ok2 : continuationDeclarationInside; + } + return nok(code2); + } + function commentOpenInside(code2) { + if (code2 === 45) { + effects.consume(code2); + return self.interrupt ? ok2 : continuationDeclarationInside; + } + return nok(code2); + } + function cdataOpenInside(code2) { + if (code2 === buffer.charCodeAt(index2++)) { + effects.consume(code2); + return index2 === buffer.length ? self.interrupt ? ok2 : continuation : cdataOpenInside; + } + return nok(code2); + } + function tagCloseStart(code2) { + if (asciiAlpha(code2)) { + effects.consume(code2); + buffer = String.fromCharCode(code2); + return tagName; + } + return nok(code2); + } + function tagName(code2) { + if (code2 === null || code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) { + if (code2 !== 47 && startTag && htmlRawNames.includes(buffer.toLowerCase())) { + kind = 1; + return self.interrupt ? ok2(code2) : continuation(code2); + } + if (htmlBlockNames.includes(buffer.toLowerCase())) { + kind = 6; + if (code2 === 47) { + effects.consume(code2); + return basicSelfClosing; + } + return self.interrupt ? ok2(code2) : continuation(code2); + } + kind = 7; + return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code2) : startTag ? completeAttributeNameBefore(code2) : completeClosingTagAfter(code2); + } + if (code2 === 45 || asciiAlphanumeric(code2)) { + effects.consume(code2); + buffer += String.fromCharCode(code2); + return tagName; + } + return nok(code2); + } + function basicSelfClosing(code2) { + if (code2 === 62) { + effects.consume(code2); + return self.interrupt ? ok2 : continuation; + } + return nok(code2); + } + function completeClosingTagAfter(code2) { + if (markdownSpace(code2)) { + effects.consume(code2); + return completeClosingTagAfter; + } + return completeEnd(code2); + } + function completeAttributeNameBefore(code2) { + if (code2 === 47) { + effects.consume(code2); + return completeEnd; + } + if (code2 === 58 || code2 === 95 || asciiAlpha(code2)) { + effects.consume(code2); + return completeAttributeName; + } + if (markdownSpace(code2)) { + effects.consume(code2); + return completeAttributeNameBefore; + } + return completeEnd(code2); + } + function completeAttributeName(code2) { + if (code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2)) { + effects.consume(code2); + return completeAttributeName; + } + return completeAttributeNameAfter(code2); + } + function completeAttributeNameAfter(code2) { + if (code2 === 61) { + effects.consume(code2); + return completeAttributeValueBefore; + } + if (markdownSpace(code2)) { + effects.consume(code2); + return completeAttributeNameAfter; + } + return completeAttributeNameBefore(code2); + } + function completeAttributeValueBefore(code2) { + if (code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96) { + return nok(code2); + } + if (code2 === 34 || code2 === 39) { + effects.consume(code2); + marker = code2; + return completeAttributeValueQuoted; + } + if (markdownSpace(code2)) { + effects.consume(code2); + return completeAttributeValueBefore; + } + marker = null; + return completeAttributeValueUnquoted(code2); + } + function completeAttributeValueQuoted(code2) { + if (code2 === null || markdownLineEnding(code2)) { + return nok(code2); + } + if (code2 === marker) { + effects.consume(code2); + return completeAttributeValueQuotedAfter; + } + effects.consume(code2); + return completeAttributeValueQuoted; + } + function completeAttributeValueUnquoted(code2) { + if (code2 === null || code2 === 34 || code2 === 39 || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96 || markdownLineEndingOrSpace(code2)) { + return completeAttributeNameAfter(code2); + } + effects.consume(code2); + return completeAttributeValueUnquoted; + } + function completeAttributeValueQuotedAfter(code2) { + if (code2 === 47 || code2 === 62 || markdownSpace(code2)) { + return completeAttributeNameBefore(code2); + } + return nok(code2); + } + function completeEnd(code2) { + if (code2 === 62) { + effects.consume(code2); + return completeAfter; + } + return nok(code2); + } + function completeAfter(code2) { + if (markdownSpace(code2)) { + effects.consume(code2); + return completeAfter; + } + return code2 === null || markdownLineEnding(code2) ? continuation(code2) : nok(code2); + } + function continuation(code2) { + if (code2 === 45 && kind === 2) { + effects.consume(code2); + return continuationCommentInside; + } + if (code2 === 60 && kind === 1) { + effects.consume(code2); + return continuationRawTagOpen; + } + if (code2 === 62 && kind === 4) { + effects.consume(code2); + return continuationClose; + } + if (code2 === 63 && kind === 3) { + effects.consume(code2); + return continuationDeclarationInside; + } + if (code2 === 93 && kind === 5) { + effects.consume(code2); + return continuationCharacterDataInside; + } + if (markdownLineEnding(code2) && (kind === 6 || kind === 7)) { + return effects.check( + nextBlankConstruct, + continuationClose, + continuationAtLineEnding + )(code2); + } + if (code2 === null || markdownLineEnding(code2)) { + return continuationAtLineEnding(code2); + } + effects.consume(code2); + return continuation; + } + function continuationAtLineEnding(code2) { + effects.exit("htmlFlowData"); + return htmlContinueStart(code2); + } + function htmlContinueStart(code2) { + if (code2 === null) { + return done(code2); + } + if (markdownLineEnding(code2)) { + return effects.attempt( + { + tokenize: htmlLineEnd, + partial: true + }, + htmlContinueStart, + done + )(code2); + } + effects.enter("htmlFlowData"); + return continuation(code2); + } + function htmlLineEnd(effects2, ok3, nok2) { + return start2; + function start2(code2) { + effects2.enter("lineEnding"); + effects2.consume(code2); + effects2.exit("lineEnding"); + return lineStart; + } + function lineStart(code2) { + return self.parser.lazy[self.now().line] ? nok2(code2) : ok3(code2); + } + } + function continuationCommentInside(code2) { + if (code2 === 45) { + effects.consume(code2); + return continuationDeclarationInside; + } + return continuation(code2); + } + function continuationRawTagOpen(code2) { + if (code2 === 47) { + effects.consume(code2); + buffer = ""; + return continuationRawEndTag; + } + return continuation(code2); + } + function continuationRawEndTag(code2) { + if (code2 === 62 && htmlRawNames.includes(buffer.toLowerCase())) { + effects.consume(code2); + return continuationClose; + } + if (asciiAlpha(code2) && buffer.length < 8) { + effects.consume(code2); + buffer += String.fromCharCode(code2); + return continuationRawEndTag; + } + return continuation(code2); + } + function continuationCharacterDataInside(code2) { + if (code2 === 93) { + effects.consume(code2); + return continuationDeclarationInside; + } + return continuation(code2); + } + function continuationDeclarationInside(code2) { + if (code2 === 62) { + effects.consume(code2); + return continuationClose; + } + if (code2 === 45 && kind === 2) { + effects.consume(code2); + return continuationDeclarationInside; + } + return continuation(code2); + } + function continuationClose(code2) { + if (code2 === null || markdownLineEnding(code2)) { + effects.exit("htmlFlowData"); + return done(code2); + } + effects.consume(code2); + return continuationClose; + } + function done(code2) { + effects.exit("htmlFlow"); + return ok2(code2); + } +} +function tokenizeNextBlank(effects, ok2, nok) { + return start; + function start(code2) { + effects.exit("htmlFlowData"); + effects.enter("lineEndingBlank"); + effects.consume(code2); + effects.exit("lineEndingBlank"); + return effects.attempt(blankLine, ok2, nok); + } +} +const htmlText = { + name: "htmlText", + tokenize: tokenizeHtmlText +}; +function tokenizeHtmlText(effects, ok2, nok) { + const self = this; + let marker; + let buffer; + let index2; + let returnState; + return start; + function start(code2) { + effects.enter("htmlText"); + effects.enter("htmlTextData"); + effects.consume(code2); + return open; + } + function open(code2) { + if (code2 === 33) { + effects.consume(code2); + return declarationOpen; + } + if (code2 === 47) { + effects.consume(code2); + return tagCloseStart; + } + if (code2 === 63) { + effects.consume(code2); + return instruction; + } + if (asciiAlpha(code2)) { + effects.consume(code2); + return tagOpen; + } + return nok(code2); + } + function declarationOpen(code2) { + if (code2 === 45) { + effects.consume(code2); + return commentOpen; + } + if (code2 === 91) { + effects.consume(code2); + buffer = "CDATA["; + index2 = 0; + return cdataOpen; + } + if (asciiAlpha(code2)) { + effects.consume(code2); + return declaration; + } + return nok(code2); + } + function commentOpen(code2) { + if (code2 === 45) { + effects.consume(code2); + return commentStart; + } + return nok(code2); + } + function commentStart(code2) { + if (code2 === null || code2 === 62) { + return nok(code2); + } + if (code2 === 45) { + effects.consume(code2); + return commentStartDash; + } + return comment(code2); + } + function commentStartDash(code2) { + if (code2 === null || code2 === 62) { + return nok(code2); + } + return comment(code2); + } + function comment(code2) { + if (code2 === null) { + return nok(code2); + } + if (code2 === 45) { + effects.consume(code2); + return commentClose; + } + if (markdownLineEnding(code2)) { + returnState = comment; + return atLineEnding(code2); + } + effects.consume(code2); + return comment; + } + function commentClose(code2) { + if (code2 === 45) { + effects.consume(code2); + return end; + } + return comment(code2); + } + function cdataOpen(code2) { + if (code2 === buffer.charCodeAt(index2++)) { + effects.consume(code2); + return index2 === buffer.length ? cdata : cdataOpen; + } + return nok(code2); + } + function cdata(code2) { + if (code2 === null) { + return nok(code2); + } + if (code2 === 93) { + effects.consume(code2); + return cdataClose; + } + if (markdownLineEnding(code2)) { + returnState = cdata; + return atLineEnding(code2); + } + effects.consume(code2); + return cdata; + } + function cdataClose(code2) { + if (code2 === 93) { + effects.consume(code2); + return cdataEnd; + } + return cdata(code2); + } + function cdataEnd(code2) { + if (code2 === 62) { + return end(code2); + } + if (code2 === 93) { + effects.consume(code2); + return cdataEnd; + } + return cdata(code2); + } + function declaration(code2) { + if (code2 === null || code2 === 62) { + return end(code2); + } + if (markdownLineEnding(code2)) { + returnState = declaration; + return atLineEnding(code2); + } + effects.consume(code2); + return declaration; + } + function instruction(code2) { + if (code2 === null) { + return nok(code2); + } + if (code2 === 63) { + effects.consume(code2); + return instructionClose; + } + if (markdownLineEnding(code2)) { + returnState = instruction; + return atLineEnding(code2); + } + effects.consume(code2); + return instruction; + } + function instructionClose(code2) { + return code2 === 62 ? end(code2) : instruction(code2); + } + function tagCloseStart(code2) { + if (asciiAlpha(code2)) { + effects.consume(code2); + return tagClose; + } + return nok(code2); + } + function tagClose(code2) { + if (code2 === 45 || asciiAlphanumeric(code2)) { + effects.consume(code2); + return tagClose; + } + return tagCloseBetween(code2); + } + function tagCloseBetween(code2) { + if (markdownLineEnding(code2)) { + returnState = tagCloseBetween; + return atLineEnding(code2); + } + if (markdownSpace(code2)) { + effects.consume(code2); + return tagCloseBetween; + } + return end(code2); + } + function tagOpen(code2) { + if (code2 === 45 || asciiAlphanumeric(code2)) { + effects.consume(code2); + return tagOpen; + } + if (code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) { + return tagOpenBetween(code2); + } + return nok(code2); + } + function tagOpenBetween(code2) { + if (code2 === 47) { + effects.consume(code2); + return end; + } + if (code2 === 58 || code2 === 95 || asciiAlpha(code2)) { + effects.consume(code2); + return tagOpenAttributeName; + } + if (markdownLineEnding(code2)) { + returnState = tagOpenBetween; + return atLineEnding(code2); + } + if (markdownSpace(code2)) { + effects.consume(code2); + return tagOpenBetween; + } + return end(code2); + } + function tagOpenAttributeName(code2) { + if (code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2)) { + effects.consume(code2); + return tagOpenAttributeName; + } + return tagOpenAttributeNameAfter(code2); + } + function tagOpenAttributeNameAfter(code2) { + if (code2 === 61) { + effects.consume(code2); + return tagOpenAttributeValueBefore; + } + if (markdownLineEnding(code2)) { + returnState = tagOpenAttributeNameAfter; + return atLineEnding(code2); + } + if (markdownSpace(code2)) { + effects.consume(code2); + return tagOpenAttributeNameAfter; + } + return tagOpenBetween(code2); + } + function tagOpenAttributeValueBefore(code2) { + if (code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96) { + return nok(code2); + } + if (code2 === 34 || code2 === 39) { + effects.consume(code2); + marker = code2; + return tagOpenAttributeValueQuoted; + } + if (markdownLineEnding(code2)) { + returnState = tagOpenAttributeValueBefore; + return atLineEnding(code2); + } + if (markdownSpace(code2)) { + effects.consume(code2); + return tagOpenAttributeValueBefore; + } + effects.consume(code2); + marker = void 0; + return tagOpenAttributeValueUnquoted; + } + function tagOpenAttributeValueQuoted(code2) { + if (code2 === marker) { + effects.consume(code2); + return tagOpenAttributeValueQuotedAfter; + } + if (code2 === null) { + return nok(code2); + } + if (markdownLineEnding(code2)) { + returnState = tagOpenAttributeValueQuoted; + return atLineEnding(code2); + } + effects.consume(code2); + return tagOpenAttributeValueQuoted; + } + function tagOpenAttributeValueQuotedAfter(code2) { + if (code2 === 62 || code2 === 47 || markdownLineEndingOrSpace(code2)) { + return tagOpenBetween(code2); + } + return nok(code2); + } + function tagOpenAttributeValueUnquoted(code2) { + if (code2 === null || code2 === 34 || code2 === 39 || code2 === 60 || code2 === 61 || code2 === 96) { + return nok(code2); + } + if (code2 === 62 || markdownLineEndingOrSpace(code2)) { + return tagOpenBetween(code2); + } + effects.consume(code2); + return tagOpenAttributeValueUnquoted; + } + function atLineEnding(code2) { + effects.exit("htmlTextData"); + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + return factorySpace( + effects, + afterPrefix, + "linePrefix", + self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + ); + } + function afterPrefix(code2) { + effects.enter("htmlTextData"); + return returnState(code2); + } + function end(code2) { + if (code2 === 62) { + effects.consume(code2); + effects.exit("htmlTextData"); + effects.exit("htmlText"); + return ok2; + } + return nok(code2); + } +} +const labelEnd = { + name: "labelEnd", + tokenize: tokenizeLabelEnd, + resolveTo: resolveToLabelEnd, + resolveAll: resolveAllLabelEnd +}; +const resourceConstruct = { + tokenize: tokenizeResource +}; +const fullReferenceConstruct = { + tokenize: tokenizeFullReference +}; +const collapsedReferenceConstruct = { + tokenize: tokenizeCollapsedReference +}; +function resolveAllLabelEnd(events) { + let index2 = -1; + let token; + while (++index2 < events.length) { + token = events[index2][1]; + if (token.type === "labelImage" || token.type === "labelLink" || token.type === "labelEnd") { + events.splice(index2 + 1, token.type === "labelImage" ? 4 : 2); + token.type = "data"; + index2++; + } + } + return events; +} +function resolveToLabelEnd(events, context) { + let index2 = events.length; + let offset = 0; + let token; + let open; + let close; + let media; + while (index2--) { + token = events[index2][1]; + if (open) { + if (token.type === "link" || token.type === "labelLink" && token._inactive) { + break; + } + if (events[index2][0] === "enter" && token.type === "labelLink") { + token._inactive = true; + } + } else if (close) { + if (events[index2][0] === "enter" && (token.type === "labelImage" || token.type === "labelLink") && !token._balanced) { + open = index2; + if (token.type !== "labelLink") { + offset = 2; + break; + } + } + } else if (token.type === "labelEnd") { + close = index2; + } + } + const group = { + type: events[open][1].type === "labelLink" ? "link" : "image", + start: Object.assign({}, events[open][1].start), + end: Object.assign({}, events[events.length - 1][1].end) + }; + const label = { + type: "label", + start: Object.assign({}, events[open][1].start), + end: Object.assign({}, events[close][1].end) + }; + const text2 = { + type: "labelText", + start: Object.assign({}, events[open + offset + 2][1].end), + end: Object.assign({}, events[close - 2][1].start) + }; + media = [ + ["enter", group, context], + ["enter", label, context] + ]; + media = push(media, events.slice(open + 1, open + offset + 3)); + media = push(media, [["enter", text2, context]]); + media = push( + media, + resolveAll( + context.parser.constructs.insideSpan.null, + events.slice(open + offset + 4, close - 3), + context + ) + ); + media = push(media, [ + ["exit", text2, context], + events[close - 2], + events[close - 1], + ["exit", label, context] + ]); + media = push(media, events.slice(close + 1)); + media = push(media, [["exit", group, context]]); + splice(events, open, events.length, media); + return events; +} +function tokenizeLabelEnd(effects, ok2, nok) { + const self = this; + let index2 = self.events.length; + let labelStart; + let defined; + while (index2--) { + if ((self.events[index2][1].type === "labelImage" || self.events[index2][1].type === "labelLink") && !self.events[index2][1]._balanced) { + labelStart = self.events[index2][1]; + break; + } + } + return start; + function start(code2) { + if (!labelStart) { + return nok(code2); + } + if (labelStart._inactive) + return balanced(code2); + defined = self.parser.defined.includes( + normalizeIdentifier( + self.sliceSerialize({ + start: labelStart.end, + end: self.now() + }) + ) + ); + effects.enter("labelEnd"); + effects.enter("labelMarker"); + effects.consume(code2); + effects.exit("labelMarker"); + effects.exit("labelEnd"); + return afterLabelEnd; + } + function afterLabelEnd(code2) { + if (code2 === 40) { + return effects.attempt( + resourceConstruct, + ok2, + defined ? ok2 : balanced + )(code2); + } + if (code2 === 91) { + return effects.attempt( + fullReferenceConstruct, + ok2, + defined ? effects.attempt(collapsedReferenceConstruct, ok2, balanced) : balanced + )(code2); + } + return defined ? ok2(code2) : balanced(code2); + } + function balanced(code2) { + labelStart._balanced = true; + return nok(code2); + } +} +function tokenizeResource(effects, ok2, nok) { + return start; + function start(code2) { + effects.enter("resource"); + effects.enter("resourceMarker"); + effects.consume(code2); + effects.exit("resourceMarker"); + return factoryWhitespace(effects, open); + } + function open(code2) { + if (code2 === 41) { + return end(code2); + } + return factoryDestination( + effects, + destinationAfter, + nok, + "resourceDestination", + "resourceDestinationLiteral", + "resourceDestinationLiteralMarker", + "resourceDestinationRaw", + "resourceDestinationString", + 32 + )(code2); + } + function destinationAfter(code2) { + return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, between)(code2) : end(code2); + } + function between(code2) { + if (code2 === 34 || code2 === 39 || code2 === 40) { + return factoryTitle( + effects, + factoryWhitespace(effects, end), + nok, + "resourceTitle", + "resourceTitleMarker", + "resourceTitleString" + )(code2); + } + return end(code2); + } + function end(code2) { + if (code2 === 41) { + effects.enter("resourceMarker"); + effects.consume(code2); + effects.exit("resourceMarker"); + effects.exit("resource"); + return ok2; + } + return nok(code2); + } +} +function tokenizeFullReference(effects, ok2, nok) { + const self = this; + return start; + function start(code2) { + return factoryLabel.call( + self, + effects, + afterLabel, + nok, + "reference", + "referenceMarker", + "referenceString" + )(code2); + } + function afterLabel(code2) { + return self.parser.defined.includes( + normalizeIdentifier( + self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1) + ) + ) ? ok2(code2) : nok(code2); + } +} +function tokenizeCollapsedReference(effects, ok2, nok) { + return start; + function start(code2) { + effects.enter("reference"); + effects.enter("referenceMarker"); + effects.consume(code2); + effects.exit("referenceMarker"); + return open; + } + function open(code2) { + if (code2 === 93) { + effects.enter("referenceMarker"); + effects.consume(code2); + effects.exit("referenceMarker"); + effects.exit("reference"); + return ok2; + } + return nok(code2); + } +} +const labelStartImage = { + name: "labelStartImage", + tokenize: tokenizeLabelStartImage, + resolveAll: labelEnd.resolveAll +}; +function tokenizeLabelStartImage(effects, ok2, nok) { + const self = this; + return start; + function start(code2) { + effects.enter("labelImage"); + effects.enter("labelImageMarker"); + effects.consume(code2); + effects.exit("labelImageMarker"); + return open; + } + function open(code2) { + if (code2 === 91) { + effects.enter("labelMarker"); + effects.consume(code2); + effects.exit("labelMarker"); + effects.exit("labelImage"); + return after; + } + return nok(code2); + } + function after(code2) { + return code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code2) : ok2(code2); + } +} +const labelStartLink = { + name: "labelStartLink", + tokenize: tokenizeLabelStartLink, + resolveAll: labelEnd.resolveAll +}; +function tokenizeLabelStartLink(effects, ok2, nok) { + const self = this; + return start; + function start(code2) { + effects.enter("labelLink"); + effects.enter("labelMarker"); + effects.consume(code2); + effects.exit("labelMarker"); + effects.exit("labelLink"); + return after; + } + function after(code2) { + return code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code2) : ok2(code2); + } +} +const lineEnding = { + name: "lineEnding", + tokenize: tokenizeLineEnding +}; +function tokenizeLineEnding(effects, ok2) { + return start; + function start(code2) { + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + return factorySpace(effects, ok2, "linePrefix"); + } +} +const thematicBreak$1 = { + name: "thematicBreak", + tokenize: tokenizeThematicBreak +}; +function tokenizeThematicBreak(effects, ok2, nok) { + let size = 0; + let marker; + return start; + function start(code2) { + effects.enter("thematicBreak"); + marker = code2; + return atBreak(code2); + } + function atBreak(code2) { + if (code2 === marker) { + effects.enter("thematicBreakSequence"); + return sequence(code2); + } + if (markdownSpace(code2)) { + return factorySpace(effects, atBreak, "whitespace")(code2); + } + if (size < 3 || code2 !== null && !markdownLineEnding(code2)) { + return nok(code2); + } + effects.exit("thematicBreak"); + return ok2(code2); + } + function sequence(code2) { + if (code2 === marker) { + effects.consume(code2); + size++; + return sequence; + } + effects.exit("thematicBreakSequence"); + return atBreak(code2); + } +} +const list$1 = { + name: "list", + tokenize: tokenizeListStart, + continuation: { + tokenize: tokenizeListContinuation + }, + exit: tokenizeListEnd +}; +const listItemPrefixWhitespaceConstruct = { + tokenize: tokenizeListItemPrefixWhitespace, + partial: true +}; +const indentConstruct = { + tokenize: tokenizeIndent, + partial: true +}; +function tokenizeListStart(effects, ok2, nok) { + const self = this; + const tail = self.events[self.events.length - 1]; + let initialSize = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0; + let size = 0; + return start; + function start(code2) { + const kind = self.containerState.type || (code2 === 42 || code2 === 43 || code2 === 45 ? "listUnordered" : "listOrdered"); + if (kind === "listUnordered" ? !self.containerState.marker || code2 === self.containerState.marker : asciiDigit(code2)) { + if (!self.containerState.type) { + self.containerState.type = kind; + effects.enter(kind, { + _container: true + }); + } + if (kind === "listUnordered") { + effects.enter("listItemPrefix"); + return code2 === 42 || code2 === 45 ? effects.check(thematicBreak$1, nok, atMarker)(code2) : atMarker(code2); + } + if (!self.interrupt || code2 === 49) { + effects.enter("listItemPrefix"); + effects.enter("listItemValue"); + return inside(code2); + } + } + return nok(code2); + } + function inside(code2) { + if (asciiDigit(code2) && ++size < 10) { + effects.consume(code2); + return inside; + } + if ((!self.interrupt || size < 2) && (self.containerState.marker ? code2 === self.containerState.marker : code2 === 41 || code2 === 46)) { + effects.exit("listItemValue"); + return atMarker(code2); + } + return nok(code2); + } + function atMarker(code2) { + effects.enter("listItemMarker"); + effects.consume(code2); + effects.exit("listItemMarker"); + self.containerState.marker = self.containerState.marker || code2; + return effects.check( + blankLine, + self.interrupt ? nok : onBlank, + effects.attempt( + listItemPrefixWhitespaceConstruct, + endOfPrefix, + otherPrefix + ) + ); + } + function onBlank(code2) { + self.containerState.initialBlankLine = true; + initialSize++; + return endOfPrefix(code2); + } + function otherPrefix(code2) { + if (markdownSpace(code2)) { + effects.enter("listItemPrefixWhitespace"); + effects.consume(code2); + effects.exit("listItemPrefixWhitespace"); + return endOfPrefix; + } + return nok(code2); + } + function endOfPrefix(code2) { + self.containerState.size = initialSize + self.sliceSerialize(effects.exit("listItemPrefix"), true).length; + return ok2(code2); + } +} +function tokenizeListContinuation(effects, ok2, nok) { + const self = this; + self.containerState._closeFlow = void 0; + return effects.check(blankLine, onBlank, notBlank); + function onBlank(code2) { + self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine; + return factorySpace( + effects, + ok2, + "listItemIndent", + self.containerState.size + 1 + )(code2); + } + function notBlank(code2) { + if (self.containerState.furtherBlankLines || !markdownSpace(code2)) { + self.containerState.furtherBlankLines = void 0; + self.containerState.initialBlankLine = void 0; + return notInCurrentItem(code2); + } + self.containerState.furtherBlankLines = void 0; + self.containerState.initialBlankLine = void 0; + return effects.attempt(indentConstruct, ok2, notInCurrentItem)(code2); + } + function notInCurrentItem(code2) { + self.containerState._closeFlow = true; + self.interrupt = void 0; + return factorySpace( + effects, + effects.attempt(list$1, ok2, nok), + "linePrefix", + self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + )(code2); + } +} +function tokenizeIndent(effects, ok2, nok) { + const self = this; + return factorySpace( + effects, + afterPrefix, + "listItemIndent", + self.containerState.size + 1 + ); + function afterPrefix(code2) { + const tail = self.events[self.events.length - 1]; + return tail && tail[1].type === "listItemIndent" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok2(code2) : nok(code2); + } +} +function tokenizeListEnd(effects) { + effects.exit(this.containerState.type); +} +function tokenizeListItemPrefixWhitespace(effects, ok2, nok) { + const self = this; + return factorySpace( + effects, + afterPrefix, + "listItemPrefixWhitespace", + self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + 1 + ); + function afterPrefix(code2) { + const tail = self.events[self.events.length - 1]; + return !markdownSpace(code2) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok2(code2) : nok(code2); + } +} +const setextUnderline = { + name: "setextUnderline", + tokenize: tokenizeSetextUnderline, + resolveTo: resolveToSetextUnderline +}; +function resolveToSetextUnderline(events, context) { + let index2 = events.length; + let content2; + let text2; + let definition2; + while (index2--) { + if (events[index2][0] === "enter") { + if (events[index2][1].type === "content") { + content2 = index2; + break; + } + if (events[index2][1].type === "paragraph") { + text2 = index2; + } + } else { + if (events[index2][1].type === "content") { + events.splice(index2, 1); + } + if (!definition2 && events[index2][1].type === "definition") { + definition2 = index2; + } + } + } + const heading2 = { + type: "setextHeading", + start: Object.assign({}, events[text2][1].start), + end: Object.assign({}, events[events.length - 1][1].end) + }; + events[text2][1].type = "setextHeadingText"; + if (definition2) { + events.splice(text2, 0, ["enter", heading2, context]); + events.splice(definition2 + 1, 0, ["exit", events[content2][1], context]); + events[content2][1].end = Object.assign({}, events[definition2][1].end); + } else { + events[content2][1] = heading2; + } + events.push(["exit", heading2, context]); + return events; +} +function tokenizeSetextUnderline(effects, ok2, nok) { + const self = this; + let index2 = self.events.length; + let marker; + let paragraph2; + while (index2--) { + if (self.events[index2][1].type !== "lineEnding" && self.events[index2][1].type !== "linePrefix" && self.events[index2][1].type !== "content") { + paragraph2 = self.events[index2][1].type === "paragraph"; + break; + } + } + return start; + function start(code2) { + if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph2)) { + effects.enter("setextHeadingLine"); + effects.enter("setextHeadingLineSequence"); + marker = code2; + return closingSequence(code2); + } + return nok(code2); + } + function closingSequence(code2) { + if (code2 === marker) { + effects.consume(code2); + return closingSequence; + } + effects.exit("setextHeadingLineSequence"); + return factorySpace(effects, closingSequenceEnd, "lineSuffix")(code2); + } + function closingSequenceEnd(code2) { + if (code2 === null || markdownLineEnding(code2)) { + effects.exit("setextHeadingLine"); + return ok2(code2); + } + return nok(code2); + } +} +const flow$1 = { + tokenize: initializeFlow +}; +function initializeFlow(effects) { + const self = this; + const initial = effects.attempt( + blankLine, + atBlankEnding, + effects.attempt( + this.parser.constructs.flowInitial, + afterConstruct, + factorySpace( + effects, + effects.attempt( + this.parser.constructs.flow, + afterConstruct, + effects.attempt(content, afterConstruct) + ), + "linePrefix" + ) + ) + ); + return initial; + function atBlankEnding(code2) { + if (code2 === null) { + effects.consume(code2); + return; + } + effects.enter("lineEndingBlank"); + effects.consume(code2); + effects.exit("lineEndingBlank"); + self.currentConstruct = void 0; + return initial; + } + function afterConstruct(code2) { + if (code2 === null) { + effects.consume(code2); + return; + } + effects.enter("lineEnding"); + effects.consume(code2); + effects.exit("lineEnding"); + self.currentConstruct = void 0; + return initial; + } +} +const resolver = { + resolveAll: createResolver() +}; +const string$1 = initializeFactory("string"); +const text$3 = initializeFactory("text"); +function initializeFactory(field) { + return { + tokenize: initializeText, + resolveAll: createResolver( + field === "text" ? resolveAllLineSuffixes : void 0 + ) + }; + function initializeText(effects) { + const self = this; + const constructs2 = this.parser.constructs[field]; + const text2 = effects.attempt(constructs2, start, notText); + return start; + function start(code2) { + return atBreak(code2) ? text2(code2) : notText(code2); + } + function notText(code2) { + if (code2 === null) { + effects.consume(code2); + return; + } + effects.enter("data"); + effects.consume(code2); + return data; + } + function data(code2) { + if (atBreak(code2)) { + effects.exit("data"); + return text2(code2); + } + effects.consume(code2); + return data; + } + function atBreak(code2) { + if (code2 === null) { + return true; + } + const list2 = constructs2[code2]; + let index2 = -1; + if (list2) { + while (++index2 < list2.length) { + const item = list2[index2]; + if (!item.previous || item.previous.call(self, self.previous)) { + return true; + } + } + } + return false; + } + } +} +function createResolver(extraResolver) { + return resolveAllText; + function resolveAllText(events, context) { + let index2 = -1; + let enter; + while (++index2 <= events.length) { + if (enter === void 0) { + if (events[index2] && events[index2][1].type === "data") { + enter = index2; + index2++; + } + } else if (!events[index2] || events[index2][1].type !== "data") { + if (index2 !== enter + 2) { + events[enter][1].end = events[index2 - 1][1].end; + events.splice(enter + 2, index2 - enter - 2); + index2 = enter + 2; + } + enter = void 0; + } + } + return extraResolver ? extraResolver(events, context) : events; + } +} +function resolveAllLineSuffixes(events, context) { + let eventIndex = 0; + while (++eventIndex <= events.length) { + if ((eventIndex === events.length || events[eventIndex][1].type === "lineEnding") && events[eventIndex - 1][1].type === "data") { + const data = events[eventIndex - 1][1]; + const chunks = context.sliceStream(data); + let index2 = chunks.length; + let bufferIndex = -1; + let size = 0; + let tabs; + while (index2--) { + const chunk = chunks[index2]; + if (typeof chunk === "string") { + bufferIndex = chunk.length; + while (chunk.charCodeAt(bufferIndex - 1) === 32) { + size++; + bufferIndex--; + } + if (bufferIndex) + break; + bufferIndex = -1; + } else if (chunk === -2) { + tabs = true; + size++; + } else if (chunk === -1) + ; + else { + index2++; + break; + } + } + if (size) { + const token = { + type: eventIndex === events.length || tabs || size < 2 ? "lineSuffix" : "hardBreakTrailing", + start: { + line: data.end.line, + column: data.end.column - size, + offset: data.end.offset - size, + _index: data.start._index + index2, + _bufferIndex: index2 ? bufferIndex : data.start._bufferIndex + bufferIndex + }, + end: Object.assign({}, data.end) + }; + data.end = Object.assign({}, token.start); + if (data.start.offset === data.end.offset) { + Object.assign(data, token); + } else { + events.splice( + eventIndex, + 0, + ["enter", token, context], + ["exit", token, context] + ); + eventIndex += 2; + } + } + eventIndex++; + } + } + return events; +} +function createTokenizer(parser, initialize, from) { + let point2 = Object.assign( + from ? Object.assign({}, from) : { + line: 1, + column: 1, + offset: 0 + }, + { + _index: 0, + _bufferIndex: -1 + } + ); + const columnStart = {}; + const resolveAllConstructs = []; + let chunks = []; + let stack = []; + const effects = { + consume, + enter, + exit: exit2, + attempt: constructFactory(onsuccessfulconstruct), + check: constructFactory(onsuccessfulcheck), + interrupt: constructFactory(onsuccessfulcheck, { + interrupt: true + }) + }; + const context = { + previous: null, + code: null, + containerState: {}, + events: [], + parser, + sliceStream, + sliceSerialize, + now, + defineSkip, + write + }; + let state = initialize.tokenize.call(context, effects); + if (initialize.resolveAll) { + resolveAllConstructs.push(initialize); + } + return context; + function write(slice) { + chunks = push(chunks, slice); + main(); + if (chunks[chunks.length - 1] !== null) { + return []; + } + addResult(initialize, 0); + context.events = resolveAll(resolveAllConstructs, context.events, context); + return context.events; + } + function sliceSerialize(token, expandTabs) { + return serializeChunks(sliceStream(token), expandTabs); + } + function sliceStream(token) { + return sliceChunks(chunks, token); + } + function now() { + return Object.assign({}, point2); + } + function defineSkip(value) { + columnStart[value.line] = value.column; + accountForPotentialSkip(); + } + function main() { + let chunkIndex; + while (point2._index < chunks.length) { + const chunk = chunks[point2._index]; + if (typeof chunk === "string") { + chunkIndex = point2._index; + if (point2._bufferIndex < 0) { + point2._bufferIndex = 0; + } + while (point2._index === chunkIndex && point2._bufferIndex < chunk.length) { + go(chunk.charCodeAt(point2._bufferIndex)); + } + } else { + go(chunk); + } + } + } + function go(code2) { + state = state(code2); + } + function consume(code2) { + if (markdownLineEnding(code2)) { + point2.line++; + point2.column = 1; + point2.offset += code2 === -3 ? 2 : 1; + accountForPotentialSkip(); + } else if (code2 !== -1) { + point2.column++; + point2.offset++; + } + if (point2._bufferIndex < 0) { + point2._index++; + } else { + point2._bufferIndex++; + if (point2._bufferIndex === chunks[point2._index].length) { + point2._bufferIndex = -1; + point2._index++; + } + } + context.previous = code2; + } + function enter(type, fields) { + const token = fields || {}; + token.type = type; + token.start = now(); + context.events.push(["enter", token, context]); + stack.push(token); + return token; + } + function exit2(type) { + const token = stack.pop(); + token.end = now(); + context.events.push(["exit", token, context]); + return token; + } + function onsuccessfulconstruct(construct, info) { + addResult(construct, info.from); + } + function onsuccessfulcheck(_, info) { + info.restore(); + } + function constructFactory(onreturn, fields) { + return hook; + function hook(constructs2, returnState, bogusState) { + let listOfConstructs; + let constructIndex; + let currentConstruct; + let info; + return Array.isArray(constructs2) ? handleListOfConstructs(constructs2) : "tokenize" in constructs2 ? handleListOfConstructs([constructs2]) : handleMapOfConstructs(constructs2); + function handleMapOfConstructs(map) { + return start; + function start(code2) { + const def = code2 !== null && map[code2]; + const all2 = code2 !== null && map.null; + const list2 = [ + ...Array.isArray(def) ? def : def ? [def] : [], + ...Array.isArray(all2) ? all2 : all2 ? [all2] : [] + ]; + return handleListOfConstructs(list2)(code2); + } + } + function handleListOfConstructs(list2) { + listOfConstructs = list2; + constructIndex = 0; + if (list2.length === 0) { + return bogusState; + } + return handleConstruct(list2[constructIndex]); + } + function handleConstruct(construct) { + return start; + function start(code2) { + info = store(); + currentConstruct = construct; + if (!construct.partial) { + context.currentConstruct = construct; + } + if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) { + return nok(); + } + return construct.tokenize.call( + fields ? Object.assign(Object.create(context), fields) : context, + effects, + ok2, + nok + )(code2); + } + } + function ok2(code2) { + onreturn(currentConstruct, info); + return returnState; + } + function nok(code2) { + info.restore(); + if (++constructIndex < listOfConstructs.length) { + return handleConstruct(listOfConstructs[constructIndex]); + } + return bogusState; + } + } + } + function addResult(construct, from2) { + if (construct.resolveAll && !resolveAllConstructs.includes(construct)) { + resolveAllConstructs.push(construct); + } + if (construct.resolve) { + splice( + context.events, + from2, + context.events.length - from2, + construct.resolve(context.events.slice(from2), context) + ); + } + if (construct.resolveTo) { + context.events = construct.resolveTo(context.events, context); + } + } + function store() { + const startPoint = now(); + const startPrevious = context.previous; + const startCurrentConstruct = context.currentConstruct; + const startEventsIndex = context.events.length; + const startStack = Array.from(stack); + return { + restore, + from: startEventsIndex + }; + function restore() { + point2 = startPoint; + context.previous = startPrevious; + context.currentConstruct = startCurrentConstruct; + context.events.length = startEventsIndex; + stack = startStack; + accountForPotentialSkip(); + } + } + function accountForPotentialSkip() { + if (point2.line in columnStart && point2.column < 2) { + point2.column = columnStart[point2.line]; + point2.offset += columnStart[point2.line] - 1; + } + } +} +function sliceChunks(chunks, token) { + const startIndex = token.start._index; + const startBufferIndex = token.start._bufferIndex; + const endIndex = token.end._index; + const endBufferIndex = token.end._bufferIndex; + let view; + if (startIndex === endIndex) { + view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]; + } else { + view = chunks.slice(startIndex, endIndex); + if (startBufferIndex > -1) { + view[0] = view[0].slice(startBufferIndex); + } + if (endBufferIndex > 0) { + view.push(chunks[endIndex].slice(0, endBufferIndex)); + } + } + return view; +} +function serializeChunks(chunks, expandTabs) { + let index2 = -1; + const result = []; + let atTab; + while (++index2 < chunks.length) { + const chunk = chunks[index2]; + let value; + if (typeof chunk === "string") { + value = chunk; + } else + switch (chunk) { + case -5: { + value = "\r"; + break; + } + case -4: { + value = "\n"; + break; + } + case -3: { + value = "\r\n"; + break; + } + case -2: { + value = expandTabs ? " " : " "; + break; + } + case -1: { + if (!expandTabs && atTab) + continue; + value = " "; + break; + } + default: { + value = String.fromCharCode(chunk); + } + } + atTab = chunk === -2; + result.push(value); + } + return result.join(""); +} +const document$1 = { + [42]: list$1, + [43]: list$1, + [45]: list$1, + [48]: list$1, + [49]: list$1, + [50]: list$1, + [51]: list$1, + [52]: list$1, + [53]: list$1, + [54]: list$1, + [55]: list$1, + [56]: list$1, + [57]: list$1, + [62]: blockQuote +}; +const contentInitial = { + [91]: definition +}; +const flowInitial = { + [-2]: codeIndented, + [-1]: codeIndented, + [32]: codeIndented +}; +const flow = { + [35]: headingAtx, + [42]: thematicBreak$1, + [45]: [setextUnderline, thematicBreak$1], + [60]: htmlFlow, + [61]: setextUnderline, + [95]: thematicBreak$1, + [96]: codeFenced, + [126]: codeFenced +}; +const string = { + [38]: characterReference, + [92]: characterEscape +}; +const text$2 = { + [-5]: lineEnding, + [-4]: lineEnding, + [-3]: lineEnding, + [33]: labelStartImage, + [38]: characterReference, + [42]: attention, + [60]: [autolink, htmlText], + [91]: labelStartLink, + [92]: [hardBreakEscape, characterEscape], + [93]: labelEnd, + [95]: attention, + [96]: codeText +}; +const insideSpan = { + null: [attention, resolver] +}; +const attentionMarkers = { + null: [42, 95] +}; +const disable = { + null: [] +}; +const defaultConstructs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + document: document$1, + contentInitial, + flowInitial, + flow, + string, + text: text$2, + insideSpan, + attentionMarkers, + disable +}, Symbol.toStringTag, { value: "Module" })); +function parse$2(options = {}) { + const constructs2 = combineExtensions( + [defaultConstructs].concat(options.extensions || []) + ); + const parser = { + defined: [], + lazy: {}, + constructs: constructs2, + content: create2(content$1), + document: create2(document$2), + flow: create2(flow$1), + string: create2(string$1), + text: create2(text$3) + }; + return parser; + function create2(initial) { + return creator; + function creator(from) { + return createTokenizer(parser, initial, from); + } + } +} +const search = /[\0\t\n\r]/g; +function preprocess() { + let column = 1; + let buffer = ""; + let start = true; + let atCarriageReturn; + return preprocessor; + function preprocessor(value, encoding, end) { + const chunks = []; + let match; + let next; + let startPosition; + let endPosition; + let code2; + value = buffer + value.toString(encoding); + startPosition = 0; + buffer = ""; + if (start) { + if (value.charCodeAt(0) === 65279) { + startPosition++; + } + start = void 0; + } + while (startPosition < value.length) { + search.lastIndex = startPosition; + match = search.exec(value); + endPosition = match && match.index !== void 0 ? match.index : value.length; + code2 = value.charCodeAt(endPosition); + if (!match) { + buffer = value.slice(startPosition); + break; + } + if (code2 === 10 && startPosition === endPosition && atCarriageReturn) { + chunks.push(-3); + atCarriageReturn = void 0; + } else { + if (atCarriageReturn) { + chunks.push(-5); + atCarriageReturn = void 0; + } + if (startPosition < endPosition) { + chunks.push(value.slice(startPosition, endPosition)); + column += endPosition - startPosition; + } + switch (code2) { + case 0: { + chunks.push(65533); + column++; + break; + } + case 9: { + next = Math.ceil(column / 4) * 4; + chunks.push(-2); + while (column++ < next) + chunks.push(-1); + break; + } + case 10: { + chunks.push(-4); + column = 1; + break; + } + default: { + atCarriageReturn = true; + column = 1; + } + } + } + startPosition = endPosition + 1; + } + if (end) { + if (atCarriageReturn) + chunks.push(-5); + if (buffer) + chunks.push(buffer); + chunks.push(null); + } + return chunks; + } +} +function postprocess(events) { + while (!subtokenize(events)) { + } + return events; +} +function decodeNumericCharacterReference(value, base2) { + const code2 = Number.parseInt(value, base2); + if (code2 < 9 || code2 === 11 || code2 > 13 && code2 < 32 || code2 > 126 && code2 < 160 || code2 > 55295 && code2 < 57344 || code2 > 64975 && code2 < 65008 || (code2 & 65535) === 65535 || (code2 & 65535) === 65534 || code2 > 1114111) { + return "\uFFFD"; + } + return String.fromCharCode(code2); +} +const characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi; +function decodeString(value) { + return value.replace(characterEscapeOrReference, decode); +} +function decode($0, $1, $2) { + if ($1) { + return $1; + } + const head = $2.charCodeAt(0); + if (head === 35) { + const head2 = $2.charCodeAt(1); + const hex = head2 === 120 || head2 === 88; + return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10); + } + return decodeNamedCharacterReference($2) || $0; +} +const own$6 = {}.hasOwnProperty; +const fromMarkdown = function(value, encoding, options) { + if (typeof encoding !== "string") { + options = encoding; + encoding = void 0; + } + return compiler(options)( + postprocess( + parse$2(options).document().write(preprocess()(value, encoding, true)) + ) + ); +}; +function compiler(options = {}) { + const config = configure( + { + transforms: [], + canContainEols: [ + "emphasis", + "fragment", + "heading", + "paragraph", + "strong" + ], + enter: { + autolink: opener(link2), + autolinkProtocol: onenterdata, + autolinkEmail: onenterdata, + atxHeading: opener(heading2), + blockQuote: opener(blockQuote2), + characterEscape: onenterdata, + characterReference: onenterdata, + codeFenced: opener(codeFlow), + codeFencedFenceInfo: buffer, + codeFencedFenceMeta: buffer, + codeIndented: opener(codeFlow, buffer), + codeText: opener(codeText2, buffer), + codeTextData: onenterdata, + data: onenterdata, + codeFlowValue: onenterdata, + definition: opener(definition2), + definitionDestinationString: buffer, + definitionLabelString: buffer, + definitionTitleString: buffer, + emphasis: opener(emphasis2), + hardBreakEscape: opener(hardBreak2), + hardBreakTrailing: opener(hardBreak2), + htmlFlow: opener(html2, buffer), + htmlFlowData: onenterdata, + htmlText: opener(html2, buffer), + htmlTextData: onenterdata, + image: opener(image2), + label: buffer, + link: opener(link2), + listItem: opener(listItem2), + listItemValue: onenterlistitemvalue, + listOrdered: opener(list2, onenterlistordered), + listUnordered: opener(list2), + paragraph: opener(paragraph2), + reference: onenterreference, + referenceString: buffer, + resourceDestinationString: buffer, + resourceTitleString: buffer, + setextHeading: opener(heading2), + strong: opener(strong2), + thematicBreak: opener(thematicBreak2) + }, + exit: { + atxHeading: closer(), + atxHeadingSequence: onexitatxheadingsequence, + autolink: closer(), + autolinkEmail: onexitautolinkemail, + autolinkProtocol: onexitautolinkprotocol, + blockQuote: closer(), + characterEscapeValue: onexitdata, + characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, + characterReferenceMarkerNumeric: onexitcharacterreferencemarker, + characterReferenceValue: onexitcharacterreferencevalue, + codeFenced: closer(onexitcodefenced), + codeFencedFence: onexitcodefencedfence, + codeFencedFenceInfo: onexitcodefencedfenceinfo, + codeFencedFenceMeta: onexitcodefencedfencemeta, + codeFlowValue: onexitdata, + codeIndented: closer(onexitcodeindented), + codeText: closer(onexitcodetext), + codeTextData: onexitdata, + data: onexitdata, + definition: closer(), + definitionDestinationString: onexitdefinitiondestinationstring, + definitionLabelString: onexitdefinitionlabelstring, + definitionTitleString: onexitdefinitiontitlestring, + emphasis: closer(), + hardBreakEscape: closer(onexithardbreak), + hardBreakTrailing: closer(onexithardbreak), + htmlFlow: closer(onexithtmlflow), + htmlFlowData: onexitdata, + htmlText: closer(onexithtmltext), + htmlTextData: onexitdata, + image: closer(onexitimage), + label: onexitlabel, + labelText: onexitlabeltext, + lineEnding: onexitlineending, + link: closer(onexitlink), + listItem: closer(), + listOrdered: closer(), + listUnordered: closer(), + paragraph: closer(), + referenceString: onexitreferencestring, + resourceDestinationString: onexitresourcedestinationstring, + resourceTitleString: onexitresourcetitlestring, + resource: onexitresource, + setextHeading: closer(onexitsetextheading), + setextHeadingLineSequence: onexitsetextheadinglinesequence, + setextHeadingText: onexitsetextheadingtext, + strong: closer(), + thematicBreak: closer() + } + }, + options.mdastExtensions || [] + ); + const data = {}; + return compile; + function compile(events) { + let tree = { + type: "root", + children: [] + }; + const stack = [tree]; + const tokenStack = []; + const listStack = []; + const context = { + stack, + tokenStack, + config, + enter, + exit: exit2, + buffer, + resume, + setData, + getData + }; + let index2 = -1; + while (++index2 < events.length) { + if (events[index2][1].type === "listOrdered" || events[index2][1].type === "listUnordered") { + if (events[index2][0] === "enter") { + listStack.push(index2); + } else { + const tail = listStack.pop(); + index2 = prepareList(events, tail, index2); + } + } + } + index2 = -1; + while (++index2 < events.length) { + const handler = config[events[index2][0]]; + if (own$6.call(handler, events[index2][1].type)) { + handler[events[index2][1].type].call( + Object.assign( + { + sliceSerialize: events[index2][2].sliceSerialize + }, + context + ), + events[index2][1] + ); + } + } + if (tokenStack.length > 0) { + const tail = tokenStack[tokenStack.length - 1]; + const handler = tail[1] || defaultOnError; + handler.call(context, void 0, tail[0]); + } + tree.position = { + start: point2( + events.length > 0 ? events[0][1].start : { + line: 1, + column: 1, + offset: 0 + } + ), + end: point2( + events.length > 0 ? events[events.length - 2][1].end : { + line: 1, + column: 1, + offset: 0 + } + ) + }; + index2 = -1; + while (++index2 < config.transforms.length) { + tree = config.transforms[index2](tree) || tree; + } + return tree; + } + function prepareList(events, start, length) { + let index2 = start - 1; + let containerBalance = -1; + let listSpread = false; + let listItem3; + let lineIndex; + let firstBlankLineIndex; + let atMarker; + while (++index2 <= length) { + const event = events[index2]; + if (event[1].type === "listUnordered" || event[1].type === "listOrdered" || event[1].type === "blockQuote") { + if (event[0] === "enter") { + containerBalance++; + } else { + containerBalance--; + } + atMarker = void 0; + } else if (event[1].type === "lineEndingBlank") { + if (event[0] === "enter") { + if (listItem3 && !atMarker && !containerBalance && !firstBlankLineIndex) { + firstBlankLineIndex = index2; + } + atMarker = void 0; + } + } else if (event[1].type === "linePrefix" || event[1].type === "listItemValue" || event[1].type === "listItemMarker" || event[1].type === "listItemPrefix" || event[1].type === "listItemPrefixWhitespace") + ; + else { + atMarker = void 0; + } + if (!containerBalance && event[0] === "enter" && event[1].type === "listItemPrefix" || containerBalance === -1 && event[0] === "exit" && (event[1].type === "listUnordered" || event[1].type === "listOrdered")) { + if (listItem3) { + let tailIndex = index2; + lineIndex = void 0; + while (tailIndex--) { + const tailEvent = events[tailIndex]; + if (tailEvent[1].type === "lineEnding" || tailEvent[1].type === "lineEndingBlank") { + if (tailEvent[0] === "exit") + continue; + if (lineIndex) { + events[lineIndex][1].type = "lineEndingBlank"; + listSpread = true; + } + tailEvent[1].type = "lineEnding"; + lineIndex = tailIndex; + } else if (tailEvent[1].type === "linePrefix" || tailEvent[1].type === "blockQuotePrefix" || tailEvent[1].type === "blockQuotePrefixWhitespace" || tailEvent[1].type === "blockQuoteMarker" || tailEvent[1].type === "listItemIndent") + ; + else { + break; + } + } + if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) { + listItem3._spread = true; + } + listItem3.end = Object.assign( + {}, + lineIndex ? events[lineIndex][1].start : event[1].end + ); + events.splice(lineIndex || index2, 0, ["exit", listItem3, event[2]]); + index2++; + length++; + } + if (event[1].type === "listItemPrefix") { + listItem3 = { + type: "listItem", + _spread: false, + start: Object.assign({}, event[1].start) + }; + events.splice(index2, 0, ["enter", listItem3, event[2]]); + index2++; + length++; + firstBlankLineIndex = void 0; + atMarker = true; + } + } + } + events[start][1]._spread = listSpread; + return length; + } + function setData(key, value) { + data[key] = value; + } + function getData(key) { + return data[key]; + } + function point2(d) { + return { + line: d.line, + column: d.column, + offset: d.offset + }; + } + function opener(create2, and) { + return open; + function open(token) { + enter.call(this, create2(token), token); + if (and) + and.call(this, token); + } + } + function buffer() { + this.stack.push({ + type: "fragment", + children: [] + }); + } + function enter(node, token, errorHandler) { + const parent = this.stack[this.stack.length - 1]; + parent.children.push(node); + this.stack.push(node); + this.tokenStack.push([token, errorHandler]); + node.position = { + start: point2(token.start) + }; + return node; + } + function closer(and) { + return close; + function close(token) { + if (and) + and.call(this, token); + exit2.call(this, token); + } + } + function exit2(token, onExitError) { + const node = this.stack.pop(); + const open = this.tokenStack.pop(); + if (!open) { + throw new Error( + "Cannot close `" + token.type + "` (" + stringifyPosition({ + start: token.start, + end: token.end + }) + "): it\u2019s not open" + ); + } else if (open[0].type !== token.type) { + if (onExitError) { + onExitError.call(this, token, open[0]); + } else { + const handler = open[1] || defaultOnError; + handler.call(this, token, open[0]); + } + } + node.position.end = point2(token.end); + return node; + } + function resume() { + return toString(this.stack.pop()); + } + function onenterlistordered() { + setData("expectingFirstListItemValue", true); + } + function onenterlistitemvalue(token) { + if (getData("expectingFirstListItemValue")) { + const ancestor = this.stack[this.stack.length - 2]; + ancestor.start = Number.parseInt(this.sliceSerialize(token), 10); + setData("expectingFirstListItemValue"); + } + } + function onexitcodefencedfenceinfo() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.lang = data2; + } + function onexitcodefencedfencemeta() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.meta = data2; + } + function onexitcodefencedfence() { + if (getData("flowCodeInside")) + return; + this.buffer(); + setData("flowCodeInside", true); + } + function onexitcodefenced() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data2.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""); + setData("flowCodeInside"); + } + function onexitcodeindented() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data2.replace(/(\r?\n|\r)$/g, ""); + } + function onexitdefinitionlabelstring(token) { + const label = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.label = label; + node.identifier = normalizeIdentifier( + this.sliceSerialize(token) + ).toLowerCase(); + } + function onexitdefinitiontitlestring() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.title = data2; + } + function onexitdefinitiondestinationstring() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.url = data2; + } + function onexitatxheadingsequence(token) { + const node = this.stack[this.stack.length - 1]; + if (!node.depth) { + const depth = this.sliceSerialize(token).length; + node.depth = depth; + } + } + function onexitsetextheadingtext() { + setData("setextHeadingSlurpLineEnding", true); + } + function onexitsetextheadinglinesequence(token) { + const node = this.stack[this.stack.length - 1]; + node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2; + } + function onexitsetextheading() { + setData("setextHeadingSlurpLineEnding"); + } + function onenterdata(token) { + const parent = this.stack[this.stack.length - 1]; + let tail = parent.children[parent.children.length - 1]; + if (!tail || tail.type !== "text") { + tail = text2(); + tail.position = { + start: point2(token.start) + }; + parent.children.push(tail); + } + this.stack.push(tail); + } + function onexitdata(token) { + const tail = this.stack.pop(); + tail.value += this.sliceSerialize(token); + tail.position.end = point2(token.end); + } + function onexitlineending(token) { + const context = this.stack[this.stack.length - 1]; + if (getData("atHardBreak")) { + const tail = context.children[context.children.length - 1]; + tail.position.end = point2(token.end); + setData("atHardBreak"); + return; + } + if (!getData("setextHeadingSlurpLineEnding") && config.canContainEols.includes(context.type)) { + onenterdata.call(this, token); + onexitdata.call(this, token); + } + } + function onexithardbreak() { + setData("atHardBreak", true); + } + function onexithtmlflow() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data2; + } + function onexithtmltext() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data2; + } + function onexitcodetext() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data2; + } + function onexitlink() { + const context = this.stack[this.stack.length - 1]; + if (getData("inReference")) { + context.type += "Reference"; + context.referenceType = getData("referenceType") || "shortcut"; + delete context.url; + delete context.title; + } else { + delete context.identifier; + delete context.label; + } + setData("referenceType"); + } + function onexitimage() { + const context = this.stack[this.stack.length - 1]; + if (getData("inReference")) { + context.type += "Reference"; + context.referenceType = getData("referenceType") || "shortcut"; + delete context.url; + delete context.title; + } else { + delete context.identifier; + delete context.label; + } + setData("referenceType"); + } + function onexitlabeltext(token) { + const ancestor = this.stack[this.stack.length - 2]; + const string2 = this.sliceSerialize(token); + ancestor.label = decodeString(string2); + ancestor.identifier = normalizeIdentifier(string2).toLowerCase(); + } + function onexitlabel() { + const fragment = this.stack[this.stack.length - 1]; + const value = this.resume(); + const node = this.stack[this.stack.length - 1]; + setData("inReference", true); + if (node.type === "link") { + node.children = fragment.children; + } else { + node.alt = value; + } + } + function onexitresourcedestinationstring() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.url = data2; + } + function onexitresourcetitlestring() { + const data2 = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.title = data2; + } + function onexitresource() { + setData("inReference"); + } + function onenterreference() { + setData("referenceType", "collapsed"); + } + function onexitreferencestring(token) { + const label = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.label = label; + node.identifier = normalizeIdentifier( + this.sliceSerialize(token) + ).toLowerCase(); + setData("referenceType", "full"); + } + function onexitcharacterreferencemarker(token) { + setData("characterReferenceType", token.type); + } + function onexitcharacterreferencevalue(token) { + const data2 = this.sliceSerialize(token); + const type = getData("characterReferenceType"); + let value; + if (type) { + value = decodeNumericCharacterReference( + data2, + type === "characterReferenceMarkerNumeric" ? 10 : 16 + ); + setData("characterReferenceType"); + } else { + value = decodeNamedCharacterReference(data2); + } + const tail = this.stack.pop(); + tail.value += value; + tail.position.end = point2(token.end); + } + function onexitautolinkprotocol(token) { + onexitdata.call(this, token); + const node = this.stack[this.stack.length - 1]; + node.url = this.sliceSerialize(token); + } + function onexitautolinkemail(token) { + onexitdata.call(this, token); + const node = this.stack[this.stack.length - 1]; + node.url = "mailto:" + this.sliceSerialize(token); + } + function blockQuote2() { + return { + type: "blockquote", + children: [] + }; + } + function codeFlow() { + return { + type: "code", + lang: null, + meta: null, + value: "" + }; + } + function codeText2() { + return { + type: "inlineCode", + value: "" + }; + } + function definition2() { + return { + type: "definition", + identifier: "", + label: null, + title: null, + url: "" + }; + } + function emphasis2() { + return { + type: "emphasis", + children: [] + }; + } + function heading2() { + return { + type: "heading", + depth: void 0, + children: [] + }; + } + function hardBreak2() { + return { + type: "break" + }; + } + function html2() { + return { + type: "html", + value: "" + }; + } + function image2() { + return { + type: "image", + title: null, + url: "", + alt: null + }; + } + function link2() { + return { + type: "link", + title: null, + url: "", + children: [] + }; + } + function list2(token) { + return { + type: "list", + ordered: token.type === "listOrdered", + start: null, + spread: token._spread, + children: [] + }; + } + function listItem2(token) { + return { + type: "listItem", + spread: token._spread, + checked: null, + children: [] + }; + } + function paragraph2() { + return { + type: "paragraph", + children: [] + }; + } + function strong2() { + return { + type: "strong", + children: [] + }; + } + function text2() { + return { + type: "text", + value: "" + }; + } + function thematicBreak2() { + return { + type: "thematicBreak" + }; + } +} +function configure(combined, extensions) { + let index2 = -1; + while (++index2 < extensions.length) { + const value = extensions[index2]; + if (Array.isArray(value)) { + configure(combined, value); + } else { + extension(combined, value); + } + } + return combined; +} +function extension(combined, extension2) { + let key; + for (key in extension2) { + if (own$6.call(extension2, key)) { + const list2 = key === "canContainEols" || key === "transforms"; + const maybe = own$6.call(combined, key) ? combined[key] : void 0; + const left = maybe || (combined[key] = list2 ? [] : {}); + const right = extension2[key]; + if (right) { + if (list2) { + combined[key] = [...left, ...right]; + } else { + Object.assign(left, right); + } + } + } + } +} +function defaultOnError(left, right) { + if (left) { + throw new Error( + "Cannot close `" + left.type + "` (" + stringifyPosition({ + start: left.start, + end: left.end + }) + "): a different token (`" + right.type + "`, " + stringifyPosition({ + start: right.start, + end: right.end + }) + ") is open" + ); + } else { + throw new Error( + "Cannot close document, a token (`" + right.type + "`, " + stringifyPosition({ + start: right.start, + end: right.end + }) + ") is still open" + ); + } +} +function remarkParse(options) { + const parser = (doc) => { + const settings = this.data("settings"); + return fromMarkdown( + doc, + Object.assign({}, settings, options, { + extensions: this.data("micromarkExtensions") || [], + mdastExtensions: this.data("fromMarkdownExtensions") || [] + }) + ); + }; + Object.assign(this, { Parser: parser }); +} +const convert$2 = function(test) { + if (test === void 0 || test === null) { + return ok$1; + } + if (typeof test === "string") { + return typeFactory$1(test); + } + if (typeof test === "object") { + return Array.isArray(test) ? anyFactory$1(test) : propsFactory(test); + } + if (typeof test === "function") { + return castFactory(test); + } + throw new Error("Expected function, string, or object as test"); +}; +function anyFactory$1(tests) { + const checks2 = []; + let index2 = -1; + while (++index2 < tests.length) { + checks2[index2] = convert$2(tests[index2]); + } + return castFactory(any); + function any(...parameters) { + let index3 = -1; + while (++index3 < checks2.length) { + if (checks2[index3].call(this, ...parameters)) + return true; + } + return false; + } +} +function propsFactory(check) { + return castFactory(all2); + function all2(node) { + let key; + for (key in check) { + if (node[key] !== check[key]) + return false; + } + return true; + } +} +function typeFactory$1(check) { + return castFactory(type); + function type(node) { + return node && node.type === check; + } +} +function castFactory(check) { + return assertion; + function assertion(...parameters) { + return Boolean(check.call(this, ...parameters)); + } +} +function ok$1() { + return true; +} +function color(d) { + return d; +} +const CONTINUE$2 = true; +const SKIP$2 = "skip"; +const EXIT$2 = false; +const visitParents$2 = function(tree, test, visitor2, reverse) { + if (typeof test === "function" && typeof visitor2 !== "function") { + reverse = visitor2; + visitor2 = test; + test = null; + } + const is = convert$2(test); + const step = reverse ? -1 : 1; + factory2(tree, null, [])(); + function factory2(node, index2, parents) { + const value = typeof node === "object" && node !== null ? node : {}; + let name; + if (typeof value.type === "string") { + name = typeof value.tagName === "string" ? value.tagName : typeof value.name === "string" ? value.name : void 0; + Object.defineProperty(visit2, "name", { + value: "node (" + color(value.type + (name ? "<" + name + ">" : "")) + ")" + }); + } + return visit2; + function visit2() { + let result = []; + let subresult; + let offset; + let grandparents; + if (!test || is(node, index2, parents[parents.length - 1] || null)) { + result = toResult$1(visitor2(node, parents)); + if (result[0] === EXIT$2) { + return result; + } + } + if (node.children && result[0] !== SKIP$2) { + offset = (reverse ? node.children.length : -1) + step; + grandparents = parents.concat(node); + while (offset > -1 && offset < node.children.length) { + subresult = factory2(node.children[offset], offset, grandparents)(); + if (subresult[0] === EXIT$2) { + return subresult; + } + offset = typeof subresult[1] === "number" ? subresult[1] : offset + step; + } + } + return result; + } + } +}; +function toResult$1(value) { + if (Array.isArray(value)) { + return value; + } + if (typeof value === "number") { + return [CONTINUE$2, value]; + } + return [value]; +} +const visit$2 = function(tree, test, visitor2, reverse) { + if (typeof test === "function" && typeof visitor2 !== "function") { + reverse = visitor2; + visitor2 = test; + test = null; + } + visitParents$2(tree, test, overload, reverse); + function overload(node, parents) { + const parent = parents[parents.length - 1]; + return visitor2( + node, + parent ? parent.children.indexOf(node) : null, + parent + ); + } +}; +const find$1 = /[\t ]*(?:\r?\n|\r)/g; +function remarkBreaks() { + return (tree) => { + visit$2(tree, "text", (node, index2, parent) => { + const result = []; + let start = 0; + find$1.lastIndex = 0; + let match = find$1.exec(node.value); + while (match) { + const position2 = match.index; + if (start !== position2) { + result.push({ type: "text", value: node.value.slice(start, position2) }); + } + result.push({ type: "break" }); + start = position2 + match[0].length; + match = find$1.exec(node.value); + } + if (result.length > 0 && parent && typeof index2 === "number") { + if (start < node.value.length) { + result.push({ type: "text", value: node.value.slice(start) }); + } + parent.children.splice(index2, 1, ...result); + return index2 + result.length; + } + }); + }; +} +var u = function(type, props, value) { + var node = { type: String(type) }; + if ((value === void 0 || value === null) && (typeof props === "string" || Array.isArray(props))) { + value = props; + } else { + Object.assign(node, props); + } + if (Array.isArray(value)) { + node.children = value; + } else if (value !== void 0 && value !== null) { + node.value = String(value); + } + return node; +}; +const own$5 = {}.hasOwnProperty; +function unknown(h, node) { + const data = node.data || {}; + if ("value" in node && !(own$5.call(data, "hName") || own$5.call(data, "hProperties") || own$5.call(data, "hChildren"))) { + return h.augment(node, u("text", node.value)); + } + return h(node, "div", all(h, node)); +} +function one(h, node, parent) { + const type = node && node.type; + let fn; + if (!type) { + throw new Error("Expected node, got `" + node + "`"); + } + if (own$5.call(h.handlers, type)) { + fn = h.handlers[type]; + } else if (h.passThrough && h.passThrough.includes(type)) { + fn = returnNode; + } else { + fn = h.unknownHandler; + } + return (typeof fn === "function" ? fn : unknown)(h, node, parent); +} +function returnNode(h, node) { + return "children" in node ? { ...node, children: all(h, node) } : node; +} +function all(h, parent) { + const values = []; + if ("children" in parent) { + const nodes = parent.children; + let index2 = -1; + while (++index2 < nodes.length) { + const result = one(h, nodes[index2], parent); + if (result) { + if (index2 && nodes[index2 - 1].type === "break") { + if (!Array.isArray(result) && result.type === "text") { + result.value = result.value.replace(/^\s+/, ""); + } + if (!Array.isArray(result) && result.type === "element") { + const head = result.children[0]; + if (head && head.type === "text") { + head.value = head.value.replace(/^\s+/, ""); + } + } + } + if (Array.isArray(result)) { + values.push(...result); + } else { + values.push(result); + } + } + } + } + return values; +} +const pointStart = point("start"); +const pointEnd = point("end"); +function point(type) { + return point2; + function point2(node) { + const point3 = node && node.position && node.position[type] || {}; + return { + line: point3.line || null, + column: point3.column || null, + offset: point3.offset > -1 ? point3.offset : null + }; + } +} +function generated(node) { + return !node || !node.position || !node.position.start || !node.position.start.line || !node.position.start.column || !node.position.end || !node.position.end.line || !node.position.end.column; +} +const own$4 = {}.hasOwnProperty; +function definitions(node) { + const cache = /* @__PURE__ */ Object.create(null); + if (!node || !node.type) { + throw new Error("mdast-util-definitions expected node"); + } + visit$2(node, "definition", (definition3) => { + const id = clean(definition3.identifier); + if (id && !own$4.call(cache, id)) { + cache[id] = definition3; + } + }); + return definition2; + function definition2(identifier) { + const id = clean(identifier); + return id && own$4.call(cache, id) ? cache[id] : null; + } +} +function clean(value) { + return String(value || "").toUpperCase(); +} +const characterReferences = { '"': "quot", "&": "amp", "<": "lt", ">": "gt" }; +function encode$1(value) { + return value.replace(/["&<>]/g, replace); + function replace(value2) { + return "&" + characterReferences[value2] + ";"; + } +} +function sanitizeUri(url, protocol) { + const value = encode$1(normalizeUri(url || "")); + if (!protocol) { + return value; + } + const colon = value.indexOf(":"); + const questionMark = value.indexOf("?"); + const numberSign = value.indexOf("#"); + const slash = value.indexOf("/"); + if (colon < 0 || slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign || protocol.test(value.slice(0, colon))) { + return value; + } + return ""; +} +function normalizeUri(value) { + const result = []; + let index2 = -1; + let start = 0; + let skip = 0; + while (++index2 < value.length) { + const code2 = value.charCodeAt(index2); + let replace = ""; + if (code2 === 37 && asciiAlphanumeric(value.charCodeAt(index2 + 1)) && asciiAlphanumeric(value.charCodeAt(index2 + 2))) { + skip = 2; + } else if (code2 < 128) { + if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code2))) { + replace = String.fromCharCode(code2); + } + } else if (code2 > 55295 && code2 < 57344) { + const next = value.charCodeAt(index2 + 1); + if (code2 < 56320 && next > 56319 && next < 57344) { + replace = String.fromCharCode(code2, next); + skip = 1; + } else { + replace = "\uFFFD"; + } + } else { + replace = String.fromCharCode(code2); + } + if (replace) { + result.push(value.slice(start, index2), encodeURIComponent(replace)); + start = index2 + skip + 1; + replace = ""; + } + if (skip) { + index2 += skip; + skip = 0; + } + } + return result.join("") + value.slice(start); +} +function wrap(nodes, loose) { + const result = []; + let index2 = -1; + if (loose) { + result.push(u("text", "\n")); + } + while (++index2 < nodes.length) { + if (index2) + result.push(u("text", "\n")); + result.push(nodes[index2]); + } + if (loose && nodes.length > 0) { + result.push(u("text", "\n")); + } + return result; +} +function footer(h) { + let index2 = -1; + const listItems = []; + while (++index2 < h.footnoteOrder.length) { + const def = h.footnoteById[h.footnoteOrder[index2].toUpperCase()]; + if (!def) { + continue; + } + const content2 = all(h, def); + const id = String(def.identifier); + const safeId = sanitizeUri(id.toLowerCase()); + let referenceIndex = 0; + const backReferences = []; + while (++referenceIndex <= h.footnoteCounts[id]) { + const backReference = { + type: "element", + tagName: "a", + properties: { + href: "#" + h.clobberPrefix + "fnref-" + safeId + (referenceIndex > 1 ? "-" + referenceIndex : ""), + dataFootnoteBackref: true, + className: ["data-footnote-backref"], + ariaLabel: h.footnoteBackLabel + }, + children: [{ type: "text", value: "\u21A9" }] + }; + if (referenceIndex > 1) { + backReference.children.push({ + type: "element", + tagName: "sup", + children: [{ type: "text", value: String(referenceIndex) }] + }); + } + if (backReferences.length > 0) { + backReferences.push({ type: "text", value: " " }); + } + backReferences.push(backReference); + } + const tail = content2[content2.length - 1]; + if (tail && tail.type === "element" && tail.tagName === "p") { + const tailTail = tail.children[tail.children.length - 1]; + if (tailTail && tailTail.type === "text") { + tailTail.value += " "; + } else { + tail.children.push({ type: "text", value: " " }); + } + tail.children.push(...backReferences); + } else { + content2.push(...backReferences); + } + const listItem2 = { + type: "element", + tagName: "li", + properties: { id: h.clobberPrefix + "fn-" + safeId }, + children: wrap(content2, true) + }; + if (def.position) { + listItem2.position = def.position; + } + listItems.push(listItem2); + } + if (listItems.length === 0) { + return null; + } + return { + type: "element", + tagName: "section", + properties: { dataFootnotes: true, className: ["footnotes"] }, + children: [ + { + type: "element", + tagName: h.footnoteLabelTagName, + properties: JSON.parse(JSON.stringify(h.footnoteLabelProperties)), + children: [u("text", h.footnoteLabel)] + }, + { type: "text", value: "\n" }, + { + type: "element", + tagName: "ol", + properties: {}, + children: wrap(listItems, true) + }, + { type: "text", value: "\n" } + ] + }; +} +function blockquote(h, node) { + return h(node, "blockquote", wrap(all(h, node), true)); +} +function hardBreak(h, node) { + return [h(node, "br"), u("text", "\n")]; +} +function code(h, node) { + const value = node.value ? node.value + "\n" : ""; + const lang = node.lang && node.lang.match(/^[^ \t]+(?=[ \t]|$)/); + const props = {}; + if (lang) { + props.className = ["language-" + lang]; + } + const code2 = h(node, "code", props, [u("text", value)]); + if (node.meta) { + code2.data = { meta: node.meta }; + } + return h(node.position, "pre", [code2]); +} +function strikethrough(h, node) { + return h(node, "del", all(h, node)); +} +function emphasis(h, node) { + return h(node, "em", all(h, node)); +} +function footnoteReference(h, node) { + const id = String(node.identifier); + const safeId = sanitizeUri(id.toLowerCase()); + const index2 = h.footnoteOrder.indexOf(id); + let counter; + if (index2 === -1) { + h.footnoteOrder.push(id); + h.footnoteCounts[id] = 1; + counter = h.footnoteOrder.length; + } else { + h.footnoteCounts[id]++; + counter = index2 + 1; + } + const reuseCounter = h.footnoteCounts[id]; + return h(node, "sup", [ + h( + node.position, + "a", + { + href: "#" + h.clobberPrefix + "fn-" + safeId, + id: h.clobberPrefix + "fnref-" + safeId + (reuseCounter > 1 ? "-" + reuseCounter : ""), + dataFootnoteRef: true, + ariaDescribedBy: "footnote-label" + }, + [u("text", String(counter))] + ) + ]); +} +function footnote(h, node) { + const footnoteById = h.footnoteById; + let no = 1; + while (no in footnoteById) + no++; + const identifier = String(no); + footnoteById[identifier] = { + type: "footnoteDefinition", + identifier, + children: [{ type: "paragraph", children: node.children }], + position: node.position + }; + return footnoteReference(h, { + type: "footnoteReference", + identifier, + position: node.position + }); +} +function heading(h, node) { + return h(node, "h" + node.depth, all(h, node)); +} +function html$2(h, node) { + return h.dangerous ? h.augment(node, u("raw", node.value)) : null; +} +var encodeCache = {}; +function getEncodeCache(exclude) { + var i, ch, cache = encodeCache[exclude]; + if (cache) { + return cache; + } + cache = encodeCache[exclude] = []; + for (i = 0; i < 128; i++) { + ch = String.fromCharCode(i); + if (/^[0-9a-z]$/i.test(ch)) { + cache.push(ch); + } else { + cache.push("%" + ("0" + i.toString(16).toUpperCase()).slice(-2)); + } + } + for (i = 0; i < exclude.length; i++) { + cache[exclude.charCodeAt(i)] = exclude[i]; + } + return cache; +} +function encode(string2, exclude, keepEscaped) { + var i, l, code2, nextCode, cache, result = ""; + if (typeof exclude !== "string") { + keepEscaped = exclude; + exclude = encode.defaultChars; + } + if (typeof keepEscaped === "undefined") { + keepEscaped = true; + } + cache = getEncodeCache(exclude); + for (i = 0, l = string2.length; i < l; i++) { + code2 = string2.charCodeAt(i); + if (keepEscaped && code2 === 37 && i + 2 < l) { + if (/^[0-9a-f]{2}$/i.test(string2.slice(i + 1, i + 3))) { + result += string2.slice(i, i + 3); + i += 2; + continue; + } + } + if (code2 < 128) { + result += cache[code2]; + continue; + } + if (code2 >= 55296 && code2 <= 57343) { + if (code2 >= 55296 && code2 <= 56319 && i + 1 < l) { + nextCode = string2.charCodeAt(i + 1); + if (nextCode >= 56320 && nextCode <= 57343) { + result += encodeURIComponent(string2[i] + string2[i + 1]); + i++; + continue; + } + } + result += "%EF%BF%BD"; + continue; + } + result += encodeURIComponent(string2[i]); + } + return result; +} +encode.defaultChars = ";/?:@&=+$,-_.!~*'()#"; +encode.componentChars = "-_.!~*'()"; +var encode_1 = encode; +function revert(h, node) { + const subtype = node.referenceType; + let suffix = "]"; + if (subtype === "collapsed") { + suffix += "[]"; + } else if (subtype === "full") { + suffix += "[" + (node.label || node.identifier) + "]"; + } + if (node.type === "imageReference") { + return u("text", "![" + node.alt + suffix); + } + const contents = all(h, node); + const head = contents[0]; + if (head && head.type === "text") { + head.value = "[" + head.value; + } else { + contents.unshift(u("text", "[")); + } + const tail = contents[contents.length - 1]; + if (tail && tail.type === "text") { + tail.value += suffix; + } else { + contents.push(u("text", suffix)); + } + return contents; +} +function imageReference(h, node) { + const def = h.definition(node.identifier); + if (!def) { + return revert(h, node); + } + const props = { src: encode_1(def.url || ""), alt: node.alt }; + if (def.title !== null && def.title !== void 0) { + props.title = def.title; + } + return h(node, "img", props); +} +function image(h, node) { + const props = { src: encode_1(node.url), alt: node.alt }; + if (node.title !== null && node.title !== void 0) { + props.title = node.title; + } + return h(node, "img", props); +} +function inlineCode(h, node) { + return h(node, "code", [u("text", node.value.replace(/\r?\n|\r/g, " "))]); +} +function linkReference(h, node) { + const def = h.definition(node.identifier); + if (!def) { + return revert(h, node); + } + const props = { href: encode_1(def.url || "") }; + if (def.title !== null && def.title !== void 0) { + props.title = def.title; + } + return h(node, "a", props, all(h, node)); +} +function link(h, node) { + const props = { href: encode_1(node.url) }; + if (node.title !== null && node.title !== void 0) { + props.title = node.title; + } + return h(node, "a", props, all(h, node)); +} +function listItem(h, node, parent) { + const result = all(h, node); + const loose = parent ? listLoose(parent) : listItemLoose(node); + const props = {}; + const wrapped = []; + if (typeof node.checked === "boolean") { + let paragraph2; + if (result[0] && result[0].type === "element" && result[0].tagName === "p") { + paragraph2 = result[0]; + } else { + paragraph2 = h(null, "p", []); + result.unshift(paragraph2); + } + if (paragraph2.children.length > 0) { + paragraph2.children.unshift(u("text", " ")); + } + paragraph2.children.unshift( + h(null, "input", { + type: "checkbox", + checked: node.checked, + disabled: true + }) + ); + props.className = ["task-list-item"]; + } + let index2 = -1; + while (++index2 < result.length) { + const child = result[index2]; + if (loose || index2 !== 0 || child.type !== "element" || child.tagName !== "p") { + wrapped.push(u("text", "\n")); + } + if (child.type === "element" && child.tagName === "p" && !loose) { + wrapped.push(...child.children); + } else { + wrapped.push(child); + } + } + const tail = result[result.length - 1]; + if (tail && (loose || !("tagName" in tail) || tail.tagName !== "p")) { + wrapped.push(u("text", "\n")); + } + return h(node, "li", props, wrapped); +} +function listLoose(node) { + let loose = node.spread; + const children = node.children; + let index2 = -1; + while (!loose && ++index2 < children.length) { + loose = listItemLoose(children[index2]); + } + return Boolean(loose); +} +function listItemLoose(node) { + const spread = node.spread; + return spread === void 0 || spread === null ? node.children.length > 1 : spread; +} +function list(h, node) { + const props = {}; + const name = node.ordered ? "ol" : "ul"; + const items = all(h, node); + let index2 = -1; + if (typeof node.start === "number" && node.start !== 1) { + props.start = node.start; + } + while (++index2 < items.length) { + const item = items[index2]; + if (item.type === "element" && item.tagName === "li" && item.properties && Array.isArray(item.properties.className) && item.properties.className.includes("task-list-item")) { + props.className = ["contains-task-list"]; + break; + } + } + return h(node, name, props, wrap(items, true)); +} +function paragraph(h, node) { + return h(node, "p", all(h, node)); +} +function root$1(h, node) { + return h.augment(node, u("root", wrap(all(h, node)))); +} +function strong(h, node) { + return h(node, "strong", all(h, node)); +} +function table(h, node) { + const rows = node.children; + let index2 = -1; + const align = node.align || []; + const result = []; + while (++index2 < rows.length) { + const row = rows[index2].children; + const name = index2 === 0 ? "th" : "td"; + const out = []; + let cellIndex = -1; + const length = node.align ? align.length : row.length; + while (++cellIndex < length) { + const cell = row[cellIndex]; + out.push( + h(cell, name, { align: align[cellIndex] }, cell ? all(h, cell) : []) + ); + } + result[index2] = h(rows[index2], "tr", wrap(out, true)); + } + return h( + node, + "table", + wrap( + [h(result[0].position, "thead", wrap([result[0]], true))].concat( + result[1] ? h( + { + start: pointStart(result[1]), + end: pointEnd(result[result.length - 1]) + }, + "tbody", + wrap(result.slice(1), true) + ) : [] + ), + true + ) + ); +} +const tab = 9; +const space = 32; +function trimLines(value) { + const source = String(value); + const search2 = /\r?\n|\r/g; + let match = search2.exec(source); + let last = 0; + const lines = []; + while (match) { + lines.push( + trimLine(source.slice(last, match.index), last > 0, true), + match[0] + ); + last = match.index + match[0].length; + match = search2.exec(source); + } + lines.push(trimLine(source.slice(last), last > 0, false)); + return lines.join(""); +} +function trimLine(value, start, end) { + let startIndex = 0; + let endIndex = value.length; + if (start) { + let code2 = value.codePointAt(startIndex); + while (code2 === tab || code2 === space) { + startIndex++; + code2 = value.codePointAt(startIndex); + } + } + if (end) { + let code2 = value.codePointAt(endIndex - 1); + while (code2 === tab || code2 === space) { + endIndex--; + code2 = value.codePointAt(endIndex - 1); + } + } + return endIndex > startIndex ? value.slice(startIndex, endIndex) : ""; +} +function text$1(h, node) { + return h.augment(node, u("text", trimLines(String(node.value)))); +} +function thematicBreak(h, node) { + return h(node, "hr"); +} +const handlers = { + blockquote, + break: hardBreak, + code, + delete: strikethrough, + emphasis, + footnoteReference, + footnote, + heading, + html: html$2, + imageReference, + image, + inlineCode, + linkReference, + link, + listItem, + list, + paragraph, + root: root$1, + strong, + table, + text: text$1, + thematicBreak, + toml: ignore, + yaml: ignore, + definition: ignore, + footnoteDefinition: ignore +}; +function ignore() { + return null; +} +const own$3 = {}.hasOwnProperty; +function factory(tree, options) { + const settings = options || {}; + const dangerous = settings.allowDangerousHtml || false; + const footnoteById = {}; + h.dangerous = dangerous; + h.clobberPrefix = settings.clobberPrefix === void 0 || settings.clobberPrefix === null ? "user-content-" : settings.clobberPrefix; + h.footnoteLabel = settings.footnoteLabel || "Footnotes"; + h.footnoteLabelTagName = settings.footnoteLabelTagName || "h2"; + h.footnoteLabelProperties = settings.footnoteLabelProperties || { + id: "footnote-label", + className: ["sr-only"] + }; + h.footnoteBackLabel = settings.footnoteBackLabel || "Back to content"; + h.definition = definitions(tree); + h.footnoteById = footnoteById; + h.footnoteOrder = []; + h.footnoteCounts = {}; + h.augment = augment; + h.handlers = { ...handlers, ...settings.handlers }; + h.unknownHandler = settings.unknownHandler; + h.passThrough = settings.passThrough; + visit$2(tree, "footnoteDefinition", (definition2) => { + const id = String(definition2.identifier).toUpperCase(); + if (!own$3.call(footnoteById, id)) { + footnoteById[id] = definition2; + } + }); + return h; + function augment(left, right) { + if (left && "data" in left && left.data) { + const data = left.data; + if (data.hName) { + if (right.type !== "element") { + right = { + type: "element", + tagName: "", + properties: {}, + children: [] + }; + } + right.tagName = data.hName; + } + if (right.type === "element" && data.hProperties) { + right.properties = { ...right.properties, ...data.hProperties }; + } + if ("children" in right && right.children && data.hChildren) { + right.children = data.hChildren; + } + } + if (left) { + const ctx = "type" in left ? left : { position: left }; + if (!generated(ctx)) { + right.position = { start: pointStart(ctx), end: pointEnd(ctx) }; + } + } + return right; + } + function h(node, tagName, props, children) { + if (Array.isArray(props)) { + children = props; + props = {}; + } + return augment(node, { + type: "element", + tagName, + properties: props || {}, + children: children || [] + }); + } +} +function toHast(tree, options) { + const h = factory(tree, options); + const node = one(h, tree, null); + const foot = footer(h); + if (foot) { + node.children.push(u("text", "\n"), foot); + } + return Array.isArray(node) ? { type: "root", children: node } : node; +} +const remarkRehype = function(destination, options) { + return destination && "run" in destination ? bridge(destination, options) : mutate(destination || options); +}; +const remark2rehype = remarkRehype; +function bridge(destination, options) { + return (node, file, next) => { + destination.run(toHast(node, options), file, (error) => { + next(error); + }); + }; +} +function mutate(options) { + return (node) => toHast(node, options); +} +class Schema { + constructor(property, normal, space2) { + this.property = property; + this.normal = normal; + if (space2) { + this.space = space2; + } + } +} +Schema.prototype.property = {}; +Schema.prototype.normal = {}; +Schema.prototype.space = null; +function merge(definitions2, space2) { + const property = {}; + const normal = {}; + let index2 = -1; + while (++index2 < definitions2.length) { + Object.assign(property, definitions2[index2].property); + Object.assign(normal, definitions2[index2].normal); + } + return new Schema(property, normal, space2); +} +function normalize(value) { + return value.toLowerCase(); +} +class Info { + constructor(property, attribute) { + this.property = property; + this.attribute = attribute; + } +} +Info.prototype.space = null; +Info.prototype.boolean = false; +Info.prototype.booleanish = false; +Info.prototype.overloadedBoolean = false; +Info.prototype.number = false; +Info.prototype.commaSeparated = false; +Info.prototype.spaceSeparated = false; +Info.prototype.commaOrSpaceSeparated = false; +Info.prototype.mustUseProperty = false; +Info.prototype.defined = false; +let powers = 0; +const boolean = increment(); +const booleanish = increment(); +const overloadedBoolean = increment(); +const number = increment(); +const spaceSeparated = increment(); +const commaSeparated = increment(); +const commaOrSpaceSeparated = increment(); +function increment() { + return 2 ** ++powers; +} +const types = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + boolean, + booleanish, + overloadedBoolean, + number, + spaceSeparated, + commaSeparated, + commaOrSpaceSeparated +}, Symbol.toStringTag, { value: "Module" })); +const checks = Object.keys(types); +class DefinedInfo extends Info { + constructor(property, attribute, mask, space2) { + let index2 = -1; + super(property, attribute); + mark(this, "space", space2); + if (typeof mask === "number") { + while (++index2 < checks.length) { + const check = checks[index2]; + mark(this, checks[index2], (mask & types[check]) === types[check]); + } + } + } +} +DefinedInfo.prototype.defined = true; +function mark(values, key, value) { + if (value) { + values[key] = value; + } +} +const own$2 = {}.hasOwnProperty; +function create(definition2) { + const property = {}; + const normal = {}; + let prop; + for (prop in definition2.properties) { + if (own$2.call(definition2.properties, prop)) { + const value = definition2.properties[prop]; + const info = new DefinedInfo( + prop, + definition2.transform(definition2.attributes || {}, prop), + value, + definition2.space + ); + if (definition2.mustUseProperty && definition2.mustUseProperty.includes(prop)) { + info.mustUseProperty = true; + } + property[prop] = info; + normal[normalize(prop)] = prop; + normal[normalize(info.attribute)] = prop; + } + } + return new Schema(property, normal, definition2.space); +} +const xlink = create({ + space: "xlink", + transform(_, prop) { + return "xlink:" + prop.slice(5).toLowerCase(); + }, + properties: { + xLinkActuate: null, + xLinkArcRole: null, + xLinkHref: null, + xLinkRole: null, + xLinkShow: null, + xLinkTitle: null, + xLinkType: null + } +}); +const xml = create({ + space: "xml", + transform(_, prop) { + return "xml:" + prop.slice(3).toLowerCase(); + }, + properties: { xmlLang: null, xmlBase: null, xmlSpace: null } +}); +function caseSensitiveTransform(attributes, attribute) { + return attribute in attributes ? attributes[attribute] : attribute; +} +function caseInsensitiveTransform(attributes, property) { + return caseSensitiveTransform(attributes, property.toLowerCase()); +} +const xmlns = create({ + space: "xmlns", + attributes: { xmlnsxlink: "xmlns:xlink" }, + transform: caseInsensitiveTransform, + properties: { xmlns: null, xmlnsXLink: null } +}); +const aria = create({ + transform(_, prop) { + return prop === "role" ? prop : "aria-" + prop.slice(4).toLowerCase(); + }, + properties: { + ariaActiveDescendant: null, + ariaAtomic: booleanish, + ariaAutoComplete: null, + ariaBusy: booleanish, + ariaChecked: booleanish, + ariaColCount: number, + ariaColIndex: number, + ariaColSpan: number, + ariaControls: spaceSeparated, + ariaCurrent: null, + ariaDescribedBy: spaceSeparated, + ariaDetails: null, + ariaDisabled: booleanish, + ariaDropEffect: spaceSeparated, + ariaErrorMessage: null, + ariaExpanded: booleanish, + ariaFlowTo: spaceSeparated, + ariaGrabbed: booleanish, + ariaHasPopup: null, + ariaHidden: booleanish, + ariaInvalid: null, + ariaKeyShortcuts: null, + ariaLabel: null, + ariaLabelledBy: spaceSeparated, + ariaLevel: number, + ariaLive: null, + ariaModal: booleanish, + ariaMultiLine: booleanish, + ariaMultiSelectable: booleanish, + ariaOrientation: null, + ariaOwns: spaceSeparated, + ariaPlaceholder: null, + ariaPosInSet: number, + ariaPressed: booleanish, + ariaReadOnly: booleanish, + ariaRelevant: null, + ariaRequired: booleanish, + ariaRoleDescription: spaceSeparated, + ariaRowCount: number, + ariaRowIndex: number, + ariaRowSpan: number, + ariaSelected: booleanish, + ariaSetSize: number, + ariaSort: null, + ariaValueMax: number, + ariaValueMin: number, + ariaValueNow: number, + ariaValueText: null, + role: null + } +}); +const html$1 = create({ + space: "html", + attributes: { + acceptcharset: "accept-charset", + classname: "class", + htmlfor: "for", + httpequiv: "http-equiv" + }, + transform: caseInsensitiveTransform, + mustUseProperty: ["checked", "multiple", "muted", "selected"], + properties: { + abbr: null, + accept: commaSeparated, + acceptCharset: spaceSeparated, + accessKey: spaceSeparated, + action: null, + allow: null, + allowFullScreen: boolean, + allowPaymentRequest: boolean, + allowUserMedia: boolean, + alt: null, + as: null, + async: boolean, + autoCapitalize: null, + autoComplete: spaceSeparated, + autoFocus: boolean, + autoPlay: boolean, + capture: boolean, + charSet: null, + checked: boolean, + cite: null, + className: spaceSeparated, + cols: number, + colSpan: null, + content: null, + contentEditable: booleanish, + controls: boolean, + controlsList: spaceSeparated, + coords: number | commaSeparated, + crossOrigin: null, + data: null, + dateTime: null, + decoding: null, + default: boolean, + defer: boolean, + dir: null, + dirName: null, + disabled: boolean, + download: overloadedBoolean, + draggable: booleanish, + encType: null, + enterKeyHint: null, + form: null, + formAction: null, + formEncType: null, + formMethod: null, + formNoValidate: boolean, + formTarget: null, + headers: spaceSeparated, + height: number, + hidden: boolean, + high: number, + href: null, + hrefLang: null, + htmlFor: spaceSeparated, + httpEquiv: spaceSeparated, + id: null, + imageSizes: null, + imageSrcSet: null, + inputMode: null, + integrity: null, + is: null, + isMap: boolean, + itemId: null, + itemProp: spaceSeparated, + itemRef: spaceSeparated, + itemScope: boolean, + itemType: spaceSeparated, + kind: null, + label: null, + lang: null, + language: null, + list: null, + loading: null, + loop: boolean, + low: number, + manifest: null, + max: null, + maxLength: number, + media: null, + method: null, + min: null, + minLength: number, + multiple: boolean, + muted: boolean, + name: null, + nonce: null, + noModule: boolean, + noValidate: boolean, + onAbort: null, + onAfterPrint: null, + onAuxClick: null, + onBeforePrint: null, + onBeforeUnload: null, + onBlur: null, + onCancel: null, + onCanPlay: null, + onCanPlayThrough: null, + onChange: null, + onClick: null, + onClose: null, + onContextLost: null, + onContextMenu: null, + onContextRestored: null, + onCopy: null, + onCueChange: null, + onCut: null, + onDblClick: null, + onDrag: null, + onDragEnd: null, + onDragEnter: null, + onDragExit: null, + onDragLeave: null, + onDragOver: null, + onDragStart: null, + onDrop: null, + onDurationChange: null, + onEmptied: null, + onEnded: null, + onError: null, + onFocus: null, + onFormData: null, + onHashChange: null, + onInput: null, + onInvalid: null, + onKeyDown: null, + onKeyPress: null, + onKeyUp: null, + onLanguageChange: null, + onLoad: null, + onLoadedData: null, + onLoadedMetadata: null, + onLoadEnd: null, + onLoadStart: null, + onMessage: null, + onMessageError: null, + onMouseDown: null, + onMouseEnter: null, + onMouseLeave: null, + onMouseMove: null, + onMouseOut: null, + onMouseOver: null, + onMouseUp: null, + onOffline: null, + onOnline: null, + onPageHide: null, + onPageShow: null, + onPaste: null, + onPause: null, + onPlay: null, + onPlaying: null, + onPopState: null, + onProgress: null, + onRateChange: null, + onRejectionHandled: null, + onReset: null, + onResize: null, + onScroll: null, + onSecurityPolicyViolation: null, + onSeeked: null, + onSeeking: null, + onSelect: null, + onSlotChange: null, + onStalled: null, + onStorage: null, + onSubmit: null, + onSuspend: null, + onTimeUpdate: null, + onToggle: null, + onUnhandledRejection: null, + onUnload: null, + onVolumeChange: null, + onWaiting: null, + onWheel: null, + open: boolean, + optimum: number, + pattern: null, + ping: spaceSeparated, + placeholder: null, + playsInline: boolean, + poster: null, + preload: null, + readOnly: boolean, + referrerPolicy: null, + rel: spaceSeparated, + required: boolean, + reversed: boolean, + rows: number, + rowSpan: number, + sandbox: spaceSeparated, + scope: null, + scoped: boolean, + seamless: boolean, + selected: boolean, + shape: null, + size: number, + sizes: null, + slot: null, + span: number, + spellCheck: booleanish, + src: null, + srcDoc: null, + srcLang: null, + srcSet: null, + start: number, + step: null, + style: null, + tabIndex: number, + target: null, + title: null, + translate: null, + type: null, + typeMustMatch: boolean, + useMap: null, + value: booleanish, + width: number, + wrap: null, + align: null, + aLink: null, + archive: spaceSeparated, + axis: null, + background: null, + bgColor: null, + border: number, + borderColor: null, + bottomMargin: number, + cellPadding: null, + cellSpacing: null, + char: null, + charOff: null, + classId: null, + clear: null, + code: null, + codeBase: null, + codeType: null, + color: null, + compact: boolean, + declare: boolean, + event: null, + face: null, + frame: null, + frameBorder: null, + hSpace: number, + leftMargin: number, + link: null, + longDesc: null, + lowSrc: null, + marginHeight: number, + marginWidth: number, + noResize: boolean, + noHref: boolean, + noShade: boolean, + noWrap: boolean, + object: null, + profile: null, + prompt: null, + rev: null, + rightMargin: number, + rules: null, + scheme: null, + scrolling: booleanish, + standby: null, + summary: null, + text: null, + topMargin: number, + valueType: null, + version: null, + vAlign: null, + vLink: null, + vSpace: number, + allowTransparency: null, + autoCorrect: null, + autoSave: null, + disablePictureInPicture: boolean, + disableRemotePlayback: boolean, + prefix: null, + property: null, + results: number, + security: null, + unselectable: null + } +}); +const svg$1 = create({ + space: "svg", + attributes: { + accentHeight: "accent-height", + alignmentBaseline: "alignment-baseline", + arabicForm: "arabic-form", + baselineShift: "baseline-shift", + capHeight: "cap-height", + className: "class", + clipPath: "clip-path", + clipRule: "clip-rule", + colorInterpolation: "color-interpolation", + colorInterpolationFilters: "color-interpolation-filters", + colorProfile: "color-profile", + colorRendering: "color-rendering", + crossOrigin: "crossorigin", + dataType: "datatype", + dominantBaseline: "dominant-baseline", + enableBackground: "enable-background", + fillOpacity: "fill-opacity", + fillRule: "fill-rule", + floodColor: "flood-color", + floodOpacity: "flood-opacity", + fontFamily: "font-family", + fontSize: "font-size", + fontSizeAdjust: "font-size-adjust", + fontStretch: "font-stretch", + fontStyle: "font-style", + fontVariant: "font-variant", + fontWeight: "font-weight", + glyphName: "glyph-name", + glyphOrientationHorizontal: "glyph-orientation-horizontal", + glyphOrientationVertical: "glyph-orientation-vertical", + hrefLang: "hreflang", + horizAdvX: "horiz-adv-x", + horizOriginX: "horiz-origin-x", + horizOriginY: "horiz-origin-y", + imageRendering: "image-rendering", + letterSpacing: "letter-spacing", + lightingColor: "lighting-color", + markerEnd: "marker-end", + markerMid: "marker-mid", + markerStart: "marker-start", + navDown: "nav-down", + navDownLeft: "nav-down-left", + navDownRight: "nav-down-right", + navLeft: "nav-left", + navNext: "nav-next", + navPrev: "nav-prev", + navRight: "nav-right", + navUp: "nav-up", + navUpLeft: "nav-up-left", + navUpRight: "nav-up-right", + onAbort: "onabort", + onActivate: "onactivate", + onAfterPrint: "onafterprint", + onBeforePrint: "onbeforeprint", + onBegin: "onbegin", + onCancel: "oncancel", + onCanPlay: "oncanplay", + onCanPlayThrough: "oncanplaythrough", + onChange: "onchange", + onClick: "onclick", + onClose: "onclose", + onCopy: "oncopy", + onCueChange: "oncuechange", + onCut: "oncut", + onDblClick: "ondblclick", + onDrag: "ondrag", + onDragEnd: "ondragend", + onDragEnter: "ondragenter", + onDragExit: "ondragexit", + onDragLeave: "ondragleave", + onDragOver: "ondragover", + onDragStart: "ondragstart", + onDrop: "ondrop", + onDurationChange: "ondurationchange", + onEmptied: "onemptied", + onEnd: "onend", + onEnded: "onended", + onError: "onerror", + onFocus: "onfocus", + onFocusIn: "onfocusin", + onFocusOut: "onfocusout", + onHashChange: "onhashchange", + onInput: "oninput", + onInvalid: "oninvalid", + onKeyDown: "onkeydown", + onKeyPress: "onkeypress", + onKeyUp: "onkeyup", + onLoad: "onload", + onLoadedData: "onloadeddata", + onLoadedMetadata: "onloadedmetadata", + onLoadStart: "onloadstart", + onMessage: "onmessage", + onMouseDown: "onmousedown", + onMouseEnter: "onmouseenter", + onMouseLeave: "onmouseleave", + onMouseMove: "onmousemove", + onMouseOut: "onmouseout", + onMouseOver: "onmouseover", + onMouseUp: "onmouseup", + onMouseWheel: "onmousewheel", + onOffline: "onoffline", + onOnline: "ononline", + onPageHide: "onpagehide", + onPageShow: "onpageshow", + onPaste: "onpaste", + onPause: "onpause", + onPlay: "onplay", + onPlaying: "onplaying", + onPopState: "onpopstate", + onProgress: "onprogress", + onRateChange: "onratechange", + onRepeat: "onrepeat", + onReset: "onreset", + onResize: "onresize", + onScroll: "onscroll", + onSeeked: "onseeked", + onSeeking: "onseeking", + onSelect: "onselect", + onShow: "onshow", + onStalled: "onstalled", + onStorage: "onstorage", + onSubmit: "onsubmit", + onSuspend: "onsuspend", + onTimeUpdate: "ontimeupdate", + onToggle: "ontoggle", + onUnload: "onunload", + onVolumeChange: "onvolumechange", + onWaiting: "onwaiting", + onZoom: "onzoom", + overlinePosition: "overline-position", + overlineThickness: "overline-thickness", + paintOrder: "paint-order", + panose1: "panose-1", + pointerEvents: "pointer-events", + referrerPolicy: "referrerpolicy", + renderingIntent: "rendering-intent", + shapeRendering: "shape-rendering", + stopColor: "stop-color", + stopOpacity: "stop-opacity", + strikethroughPosition: "strikethrough-position", + strikethroughThickness: "strikethrough-thickness", + strokeDashArray: "stroke-dasharray", + strokeDashOffset: "stroke-dashoffset", + strokeLineCap: "stroke-linecap", + strokeLineJoin: "stroke-linejoin", + strokeMiterLimit: "stroke-miterlimit", + strokeOpacity: "stroke-opacity", + strokeWidth: "stroke-width", + tabIndex: "tabindex", + textAnchor: "text-anchor", + textDecoration: "text-decoration", + textRendering: "text-rendering", + typeOf: "typeof", + underlinePosition: "underline-position", + underlineThickness: "underline-thickness", + unicodeBidi: "unicode-bidi", + unicodeRange: "unicode-range", + unitsPerEm: "units-per-em", + vAlphabetic: "v-alphabetic", + vHanging: "v-hanging", + vIdeographic: "v-ideographic", + vMathematical: "v-mathematical", + vectorEffect: "vector-effect", + vertAdvY: "vert-adv-y", + vertOriginX: "vert-origin-x", + vertOriginY: "vert-origin-y", + wordSpacing: "word-spacing", + writingMode: "writing-mode", + xHeight: "x-height", + playbackOrder: "playbackorder", + timelineBegin: "timelinebegin" + }, + transform: caseSensitiveTransform, + properties: { + about: commaOrSpaceSeparated, + accentHeight: number, + accumulate: null, + additive: null, + alignmentBaseline: null, + alphabetic: number, + amplitude: number, + arabicForm: null, + ascent: number, + attributeName: null, + attributeType: null, + azimuth: number, + bandwidth: null, + baselineShift: null, + baseFrequency: null, + baseProfile: null, + bbox: null, + begin: null, + bias: number, + by: null, + calcMode: null, + capHeight: number, + className: spaceSeparated, + clip: null, + clipPath: null, + clipPathUnits: null, + clipRule: null, + color: null, + colorInterpolation: null, + colorInterpolationFilters: null, + colorProfile: null, + colorRendering: null, + content: null, + contentScriptType: null, + contentStyleType: null, + crossOrigin: null, + cursor: null, + cx: null, + cy: null, + d: null, + dataType: null, + defaultAction: null, + descent: number, + diffuseConstant: number, + direction: null, + display: null, + dur: null, + divisor: number, + dominantBaseline: null, + download: boolean, + dx: null, + dy: null, + edgeMode: null, + editable: null, + elevation: number, + enableBackground: null, + end: null, + event: null, + exponent: number, + externalResourcesRequired: null, + fill: null, + fillOpacity: number, + fillRule: null, + filter: null, + filterRes: null, + filterUnits: null, + floodColor: null, + floodOpacity: null, + focusable: null, + focusHighlight: null, + fontFamily: null, + fontSize: null, + fontSizeAdjust: null, + fontStretch: null, + fontStyle: null, + fontVariant: null, + fontWeight: null, + format: null, + fr: null, + from: null, + fx: null, + fy: null, + g1: commaSeparated, + g2: commaSeparated, + glyphName: commaSeparated, + glyphOrientationHorizontal: null, + glyphOrientationVertical: null, + glyphRef: null, + gradientTransform: null, + gradientUnits: null, + handler: null, + hanging: number, + hatchContentUnits: null, + hatchUnits: null, + height: null, + href: null, + hrefLang: null, + horizAdvX: number, + horizOriginX: number, + horizOriginY: number, + id: null, + ideographic: number, + imageRendering: null, + initialVisibility: null, + in: null, + in2: null, + intercept: number, + k: number, + k1: number, + k2: number, + k3: number, + k4: number, + kernelMatrix: commaOrSpaceSeparated, + kernelUnitLength: null, + keyPoints: null, + keySplines: null, + keyTimes: null, + kerning: null, + lang: null, + lengthAdjust: null, + letterSpacing: null, + lightingColor: null, + limitingConeAngle: number, + local: null, + markerEnd: null, + markerMid: null, + markerStart: null, + markerHeight: null, + markerUnits: null, + markerWidth: null, + mask: null, + maskContentUnits: null, + maskUnits: null, + mathematical: null, + max: null, + media: null, + mediaCharacterEncoding: null, + mediaContentEncodings: null, + mediaSize: number, + mediaTime: null, + method: null, + min: null, + mode: null, + name: null, + navDown: null, + navDownLeft: null, + navDownRight: null, + navLeft: null, + navNext: null, + navPrev: null, + navRight: null, + navUp: null, + navUpLeft: null, + navUpRight: null, + numOctaves: null, + observer: null, + offset: null, + onAbort: null, + onActivate: null, + onAfterPrint: null, + onBeforePrint: null, + onBegin: null, + onCancel: null, + onCanPlay: null, + onCanPlayThrough: null, + onChange: null, + onClick: null, + onClose: null, + onCopy: null, + onCueChange: null, + onCut: null, + onDblClick: null, + onDrag: null, + onDragEnd: null, + onDragEnter: null, + onDragExit: null, + onDragLeave: null, + onDragOver: null, + onDragStart: null, + onDrop: null, + onDurationChange: null, + onEmptied: null, + onEnd: null, + onEnded: null, + onError: null, + onFocus: null, + onFocusIn: null, + onFocusOut: null, + onHashChange: null, + onInput: null, + onInvalid: null, + onKeyDown: null, + onKeyPress: null, + onKeyUp: null, + onLoad: null, + onLoadedData: null, + onLoadedMetadata: null, + onLoadStart: null, + onMessage: null, + onMouseDown: null, + onMouseEnter: null, + onMouseLeave: null, + onMouseMove: null, + onMouseOut: null, + onMouseOver: null, + onMouseUp: null, + onMouseWheel: null, + onOffline: null, + onOnline: null, + onPageHide: null, + onPageShow: null, + onPaste: null, + onPause: null, + onPlay: null, + onPlaying: null, + onPopState: null, + onProgress: null, + onRateChange: null, + onRepeat: null, + onReset: null, + onResize: null, + onScroll: null, + onSeeked: null, + onSeeking: null, + onSelect: null, + onShow: null, + onStalled: null, + onStorage: null, + onSubmit: null, + onSuspend: null, + onTimeUpdate: null, + onToggle: null, + onUnload: null, + onVolumeChange: null, + onWaiting: null, + onZoom: null, + opacity: null, + operator: null, + order: null, + orient: null, + orientation: null, + origin: null, + overflow: null, + overlay: null, + overlinePosition: number, + overlineThickness: number, + paintOrder: null, + panose1: null, + path: null, + pathLength: number, + patternContentUnits: null, + patternTransform: null, + patternUnits: null, + phase: null, + ping: spaceSeparated, + pitch: null, + playbackOrder: null, + pointerEvents: null, + points: null, + pointsAtX: number, + pointsAtY: number, + pointsAtZ: number, + preserveAlpha: null, + preserveAspectRatio: null, + primitiveUnits: null, + propagate: null, + property: commaOrSpaceSeparated, + r: null, + radius: null, + referrerPolicy: null, + refX: null, + refY: null, + rel: commaOrSpaceSeparated, + rev: commaOrSpaceSeparated, + renderingIntent: null, + repeatCount: null, + repeatDur: null, + requiredExtensions: commaOrSpaceSeparated, + requiredFeatures: commaOrSpaceSeparated, + requiredFonts: commaOrSpaceSeparated, + requiredFormats: commaOrSpaceSeparated, + resource: null, + restart: null, + result: null, + rotate: null, + rx: null, + ry: null, + scale: null, + seed: null, + shapeRendering: null, + side: null, + slope: null, + snapshotTime: null, + specularConstant: number, + specularExponent: number, + spreadMethod: null, + spacing: null, + startOffset: null, + stdDeviation: null, + stemh: null, + stemv: null, + stitchTiles: null, + stopColor: null, + stopOpacity: null, + strikethroughPosition: number, + strikethroughThickness: number, + string: null, + stroke: null, + strokeDashArray: commaOrSpaceSeparated, + strokeDashOffset: null, + strokeLineCap: null, + strokeLineJoin: null, + strokeMiterLimit: number, + strokeOpacity: number, + strokeWidth: null, + style: null, + surfaceScale: number, + syncBehavior: null, + syncBehaviorDefault: null, + syncMaster: null, + syncTolerance: null, + syncToleranceDefault: null, + systemLanguage: commaOrSpaceSeparated, + tabIndex: number, + tableValues: null, + target: null, + targetX: number, + targetY: number, + textAnchor: null, + textDecoration: null, + textRendering: null, + textLength: null, + timelineBegin: null, + title: null, + transformBehavior: null, + type: null, + typeOf: commaOrSpaceSeparated, + to: null, + transform: null, + u1: null, + u2: null, + underlinePosition: number, + underlineThickness: number, + unicode: null, + unicodeBidi: null, + unicodeRange: null, + unitsPerEm: number, + values: null, + vAlphabetic: number, + vMathematical: number, + vectorEffect: null, + vHanging: number, + vIdeographic: number, + version: null, + vertAdvY: number, + vertOriginX: number, + vertOriginY: number, + viewBox: null, + viewTarget: null, + visibility: null, + width: null, + widths: null, + wordSpacing: null, + writingMode: null, + x: null, + x1: null, + x2: null, + xChannelSelector: null, + xHeight: number, + y: null, + y1: null, + y2: null, + yChannelSelector: null, + z: null, + zoomAndPan: null + } +}); +const valid = /^data[-\w.:]+$/i; +const dash = /-[a-z]/g; +const cap = /[A-Z]/g; +function find(schema, value) { + const normal = normalize(value); + let prop = value; + let Type = Info; + if (normal in schema.normal) { + return schema.property[schema.normal[normal]]; + } + if (normal.length > 4 && normal.slice(0, 4) === "data" && valid.test(value)) { + if (value.charAt(4) === "-") { + const rest = value.slice(5).replace(dash, camelcase); + prop = "data" + rest.charAt(0).toUpperCase() + rest.slice(1); + } else { + const rest = value.slice(4); + if (!dash.test(rest)) { + let dashes = rest.replace(cap, kebab); + if (dashes.charAt(0) !== "-") { + dashes = "-" + dashes; + } + value = "data" + dashes; + } + } + Type = DefinedInfo; + } + return new Type(prop, value); +} +function kebab($0) { + return "-" + $0.toLowerCase(); +} +function camelcase($0) { + return $0.charAt(1).toUpperCase(); +} +const hastToReact = { + classId: "classID", + dataType: "datatype", + itemId: "itemID", + strokeDashArray: "strokeDasharray", + strokeDashOffset: "strokeDashoffset", + strokeLineCap: "strokeLinecap", + strokeLineJoin: "strokeLinejoin", + strokeMiterLimit: "strokeMiterlimit", + typeOf: "typeof", + xLinkActuate: "xlinkActuate", + xLinkArcRole: "xlinkArcrole", + xLinkHref: "xlinkHref", + xLinkRole: "xlinkRole", + xLinkShow: "xlinkShow", + xLinkTitle: "xlinkTitle", + xLinkType: "xlinkType", + xmlnsXLink: "xmlnsXlink" +}; +const html = merge([xml, xlink, xmlns, aria, html$1], "html"); +const svg = merge([xml, xlink, xmlns, aria, svg$1], "svg"); +function stringify$1(values) { + return values.join(" ").trim(); +} +function stringify(values, options) { + var settings = options || {}; + if (values[values.length - 1] === "") { + values = values.concat(""); + } + return values.join( + (settings.padRight ? " " : "") + "," + (settings.padLeft === false ? "" : " ") + ).trim(); +} +var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g; +var NEWLINE_REGEX = /\n/g; +var WHITESPACE_REGEX = /^\s*/; +var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/; +var COLON_REGEX = /^:\s*/; +var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/; +var SEMICOLON_REGEX = /^[;\s]*/; +var TRIM_REGEX = /^\s+|\s+$/g; +var NEWLINE = "\n"; +var FORWARD_SLASH = "/"; +var ASTERISK = "*"; +var EMPTY_STRING = ""; +var TYPE_COMMENT = "comment"; +var TYPE_DECLARATION = "declaration"; +var inlineStyleParser = function(style, options) { + if (typeof style !== "string") { + throw new TypeError("First argument must be a string"); + } + if (!style) + return []; + options = options || {}; + var lineno = 1; + var column = 1; + 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; + } + function position2() { + var start = { line: lineno, column }; + return function(node) { + node.position = new Position(start); + whitespace2(); + return node; + }; + } + function Position(start) { + this.start = start; + this.end = { line: lineno, column }; + this.source = options.source; + } + Position.prototype.content = style; + 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) + ; + else { + throw err; + } + } + function match(re) { + var m = re.exec(style); + if (!m) + return; + var str = m[0]; + updatePosition(str); + style = style.slice(str.length); + return m; + } + function whitespace2() { + match(WHITESPACE_REGEX); + } + function comments(rules) { + var c; + rules = rules || []; + while (c = comment()) { + if (c !== false) { + rules.push(c); + } + } + return rules; + } + function comment() { + var pos = position2(); + 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 + }); + } + function declaration() { + var pos = position2(); + var prop = match(PROPERTY_REGEX); + if (!prop) + return; + comment(); + if (!match(COLON_REGEX)) + return error("property missing ':'"); + 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; + } + function declarations() { + var decls = []; + comments(decls); + var decl; + while (decl = declaration()) { + if (decl !== false) { + decls.push(decl); + comments(decls); + } + } + return decls; + } + whitespace2(); + return declarations(); +}; +function trim(str) { + return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING; +} +var parse$1 = inlineStyleParser; +function StyleToObject(style, iterator) { + var output = null; + if (!style || typeof style !== "string") { + return output; + } + var declaration; + var declarations = parse$1(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; +} +var styleToObject = StyleToObject; +const webNamespaces = { + html: "http://www.w3.org/1999/xhtml", + mathml: "http://www.w3.org/1998/Math/MathML", + svg: "http://www.w3.org/2000/svg", + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" +}; +const ns = webNamespaces; +const toReact = hastToReact; +const own$1 = {}.hasOwnProperty; +const root = convert$2("root"); +const element = convert$2("element"); +const text = convert$2("text"); +function toH(h, tree, options) { + if (typeof h !== "function") { + throw new TypeError("h is not a function"); + } + const r = react(h); + const v = vue(h); + const vd = vdom(h); + let prefix; + let node; + if (typeof options === "string" || typeof options === "boolean") { + prefix = options; + options = {}; + } else { + if (!options) + options = {}; + prefix = options.prefix; + } + if (root(tree)) { + node = tree.children.length === 1 && element(tree.children[0]) ? tree.children[0] : { + type: "element", + tagName: "div", + properties: {}, + children: tree.children + }; + } else if (element(tree)) { + node = tree; + } else { + throw new Error( + "Expected root or element, not `" + (tree && tree.type || tree) + "`" + ); + } + return transform(h, node, { + schema: options.space === "svg" ? svg : html, + prefix: prefix === void 0 || prefix === null ? r || v || vd ? "h-" : null : typeof prefix === "string" ? prefix : prefix ? "h-" : null, + key: 0, + react: r, + vue: v, + vdom: vd, + hyperscript: hyperscript(h) + }); +} +function transform(h, node, ctx) { + const parentSchema = ctx.schema; + let schema = parentSchema; + let name = node.tagName; + const attributes = {}; + const nodes = []; + let index2 = -1; + let key; + if (parentSchema.space === "html" && name.toLowerCase() === "svg") { + schema = svg; + ctx.schema = schema; + } + for (key in node.properties) { + if (node.properties && own$1.call(node.properties, key)) { + addAttribute(attributes, key, node.properties[key], ctx, name); + } + } + if (ctx.vdom) { + if (schema.space === "html") { + name = name.toUpperCase(); + } else if (schema.space) { + attributes.namespace = ns[schema.space]; + } + } + if (ctx.prefix) { + ctx.key++; + attributes.key = ctx.prefix + ctx.key; + } + if (node.children) { + while (++index2 < node.children.length) { + const value = node.children[index2]; + if (element(value)) { + nodes.push(transform(h, value, ctx)); + } else if (text(value)) { + nodes.push(value.value); + } + } + } + ctx.schema = parentSchema; + return nodes.length > 0 ? h.call(node, name, attributes, nodes) : h.call(node, name, attributes); +} +function addAttribute(props, prop, value, ctx, name) { + const info = find(ctx.schema, prop); + let subprop; + if (value === void 0 || value === null || typeof value === "number" && Number.isNaN(value) || value === false && (ctx.vue || ctx.vdom || ctx.hyperscript) || !value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript)) { + return; + } + if (Array.isArray(value)) { + value = info.commaSeparated ? stringify(value) : stringify$1(value); + } + if (info.boolean && ctx.hyperscript) { + value = ""; + } + if (info.property === "style" && typeof value === "string" && (ctx.react || ctx.vue || ctx.vdom)) { + value = parseStyle(value, name); + } + if (ctx.vue) { + if (info.property !== "style") + subprop = "attrs"; + } else if (!info.mustUseProperty) { + if (ctx.vdom) { + if (info.property !== "style") + subprop = "attributes"; + } else if (ctx.hyperscript) { + subprop = "attrs"; + } + } + if (subprop) { + props[subprop] = Object.assign(props[subprop] || {}, { + [info.attribute]: value + }); + } else if (info.space && ctx.react) { + props[toReact[info.property] || info.property] = value; + } else { + props[info.attribute] = value; + } +} +function react(h) { + const node = h("div", {}); + return Boolean( + node && ("_owner" in node || "_store" in node) && (node.key === void 0 || node.key === null) + ); +} +function hyperscript(h) { + return "context" in h && "cleanup" in h; +} +function vdom(h) { + const node = h("div", {}); + return node.type === "VirtualNode"; +} +function vue(h) { + const node = h("div", {}); + return Boolean(node && node.context && node.context._isVue); +} +function parseStyle(value, tagName) { + const result = {}; + try { + styleToObject(value, (name, value2) => { + if (name.slice(0, 4) === "-ms-") + name = "ms-" + name.slice(4); + result[name.replace( + /-([a-z])/g, + (_, $1) => $1.toUpperCase() + )] = value2; + }); + } catch (error) { + error.message = tagName + "[style]" + error.message.slice("undefined".length); + throw error; + } + return result; +} +var convert_1 = convert$1; +function convert$1(test) { + if (typeof test === "string") { + return typeFactory(test); + } + if (test === null || test === void 0) { + 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 index2 = -1; + while (++index2 < length) { + results[index2] = convert$1(tests[index2]); + } + return results; +} +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 checks2 = convertAll(tests); + var length = checks2.length; + return matches; + function matches() { + var index2 = -1; + while (++index2 < length) { + if (checks2[index2].apply(this, arguments)) { + return true; + } + } + return false; + } +} +function typeFactory(test) { + return type; + function type(node) { + return Boolean(node && node.type === test); + } +} +function ok() { + return true; +} +var unistUtilVisitParents = visitParents$1; +var convert = convert_1; +var CONTINUE$1 = true; +var SKIP$1 = "skip"; +var EXIT$1 = false; +visitParents$1.CONTINUE = CONTINUE$1; +visitParents$1.SKIP = SKIP$1; +visitParents$1.EXIT = EXIT$1; +function visitParents$1(tree, test, visitor2, reverse) { + var is; + if (typeof test === "function" && typeof visitor2 !== "function") { + reverse = visitor2; + visitor2 = test; + test = null; + } + is = convert(test); + one2(tree, null, []); + function one2(node, index2, parents) { + var result = []; + var subresult; + if (!test || is(node, index2, parents[parents.length - 1] || null)) { + result = toResult(visitor2(node, parents)); + if (result[0] === EXIT$1) { + return result; + } + } + if (node.children && result[0] !== SKIP$1) { + subresult = toResult(all2(node.children, parents.concat(node))); + return subresult[0] === EXIT$1 ? subresult : result; + } + return result; + } + function all2(children, parents) { + var min = -1; + var step = reverse ? -1 : 1; + var index2 = (reverse ? children.length : min) + step; + var result; + while (index2 > min && index2 < children.length) { + result = one2(children[index2], index2, parents); + if (result[0] === EXIT$1) { + return result; + } + index2 = typeof result[1] === "number" ? result[1] : index2 + step; + } + } +} +function toResult(value) { + if (value !== null && typeof value === "object" && "length" in value) { + return value; + } + if (typeof value === "number") { + return [CONTINUE$1, value]; + } + return [value]; +} +var unistUtilVisit = visit$1; +var visitParents = unistUtilVisitParents; +var CONTINUE = visitParents.CONTINUE; +var SKIP = visitParents.SKIP; +var EXIT = visitParents.EXIT; +visit$1.CONTINUE = CONTINUE; +visit$1.SKIP = SKIP; +visit$1.EXIT = EXIT; +function visit$1(tree, test, visitor2, reverse) { + if (typeof test === "function" && typeof visitor2 !== "function") { + reverse = visitor2; + visitor2 = test; + test = null; + } + visitParents(tree, test, overload, reverse); + function overload(node, parents) { + var parent = parents[parents.length - 1]; + var index2 = parent ? parent.children.indexOf(node) : null; + return visitor2(node, index2, parent); + } +} +var visit = unistUtilVisit; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var hastCssPropertyMap = { + align: "text-align", + valign: "vertical-align", + height: "height", + width: "width" +}; +var hastUtilTableCellStyle = 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] === void 0) { + 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; +} +const tableCellStyle2 = hastUtilTableCellStyle; +function whitespace(thing) { + var value = thing && typeof thing === "object" && thing.type === "text" ? thing.value || "" : thing; + return typeof value === "string" && value.replace(/[ \t\n\f\r]/g, "") === ""; +} +const own = {}.hasOwnProperty; +const tableElements = /* @__PURE__ */ new Set([ + "table", + "thead", + "tbody", + "tfoot", + "tr", + "th", + "td" +]); +function rehypeReact(options) { + if (!options || typeof options.createElement !== "function") { + throw new TypeError("createElement is not a function"); + } + const createElement = options.createElement; + Object.assign(this, { Compiler: compiler2 }); + function compiler2(node) { + let result = toH(h, tableCellStyle2(node), options.prefix); + if (node.type === "root") { + result = result && typeof result === "object" && "type" in result && "props" in result && result.type === "div" && (node.children.length !== 1 || node.children[0].type !== "element") ? result.props.children : [result]; + return createElement(options.Fragment || "div", {}, result); + } + return result; + } + function h(name, props, children) { + if (children && tableElements.has(name)) { + children = children.filter((child) => !whitespace(child)); + } + if (options.components && own.call(options.components, name)) { + const component = options.components[name]; + if (options.passNode && typeof component === "function") { + props = Object.assign({ node: this }, props); + } + return createElement(component, props, children); + } + return createElement(name, props, children); + } +} +function parse(value) { + const input = String(value || "").trim(); + return input ? input.split(/[ \t\n\r\f]+/g) : []; +} +const ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/; +const WINDOWS_PATH_REGEX = /^[a-zA-Z]:\\/; +function isAbsoluteUrl(url) { + if (typeof url !== "string") { + throw new TypeError(`Expected a \`string\`, got \`${typeof url}\``); + } + if (WINDOWS_PATH_REGEX.test(url)) { + return false; + } + return ABSOLUTE_URL_REGEX.test(url); +} +const defaultTarget = "_blank"; +const defaultRel = ["nofollow", "noopener", "noreferrer"]; +const defaultProtocols = ["http", "https"]; +function remarkExternalLinks(options = {}) { + const target = options.target; + const rel = typeof options.rel === "string" ? parse(options.rel) : options.rel; + const protocols = options.protocols || defaultProtocols; + const content2 = options.content && !Array.isArray(options.content) ? [options.content] : options.content; + const contentProperties = options.contentProperties || {}; + return (tree) => { + const definition2 = definitions(tree); + visit$2(tree, (node) => { + if (node.type === "link" || node.type === "linkReference") { + const ctx = node.type === "link" ? node : definition2(node.identifier); + if (!ctx) + return; + const protocol = ctx.url.slice(0, ctx.url.indexOf(":")); + if (isAbsoluteUrl(ctx.url) && protocols.includes(protocol)) { + const data = node.data || (node.data = {}); + const props = data.hProperties || (data.hProperties = {}); + if (target !== false) { + props.target = target || defaultTarget; + } + if (rel !== false) { + props.rel = (rel || defaultRel).concat(); + } + if (content2) { + node.children.push({ + type: "fragment", + children: [], + data: { + hName: "span", + hProperties: extend(true, contentProperties), + hChildren: extend(true, content2) + } + }); + } + } + } + }); + }; +} +const Link = { + name: "Link", + functional: true, + props: { + href: { + type: String, + required: true + } + }, + render(h, { data, props }) { + return h("a", { + attrs: { + href: props.href, + rel: "noopener noreferrer", + target: "_blank", + class: "rich-text--external-link" + } + }, [props.href.trim()]); + } +}; +const remarkAutolink = function({ autolink: autolink2, useMarkdown }) { + return function(tree) { + if (!useMarkdown || !autolink2) { + return; + } + visit$2(tree, (node) => node.type === "text", (node, index2, parent) => { + let parsed = parseUrl(node.value); + parsed = parsed.map((n) => { + if (typeof n === "string") { + return u("text", n); + } + return u("link", { + url: n.props.href + }, [u("text", n.props.href)]); + }).filter((x) => x); + parent.children.splice(index2, 1, ...parsed.flat()); + return [SKIP$2, index2 + parsed.flat().length]; + }); + }; +}; +const parseUrl = (text2, linkComponent) => { + let match = URL_PATTERN_AUTOLINK.exec(text2); + const list2 = []; + let start = 0; + while (match !== null) { + let href = match[2]; + let textAfter; + let textBefore = text2.substring(start, match.index + match[1].length); + if (href[0] === " ") { + textBefore += href[0]; + href = href.substring(1).trim(); + } + const lastChar = href[href.length - 1]; + if (lastChar === "." || lastChar === "," || lastChar === ";" || match[0][0] === "(" && lastChar === ")") { + href = href.substring(0, href.length - 1); + textAfter = lastChar; + } + list2.push(textBefore); + list2.push({ component: Link, props: { href } }); + if (textAfter) { + list2.push(textAfter); + } + start = match.index + match[0].length; + match = URL_PATTERN_AUTOLINK.exec(text2); + } + list2.push(text2.substring(start)); + const joinedText = list2.map((item) => typeof item === "string" ? item : item.props.href).join(""); + if (text2 === joinedText) { + return list2; + } + console.error("Failed to reassemble the chunked text: " + text2); + return text2; +}; +const remarkPlaceholder = function() { + return function(ast) { + visit$2(ast, (node) => node.type === "text", visitor2); + function visitor2(node, index2, parent) { + const placeholders = node.value.split(/(\{[a-z\-_.0-9]+\})/ig).map((entry, index3, list2) => { + const matches = entry.match(/^\{([a-z\-_.0-9]+)\}$/i); + if (!matches) { + return u("text", entry); + } + const [, component] = matches; + return u("element", { + tagName: `#${component}` + }); + }); + node = u("element", { tagName: "span" }, [ + ...placeholders + ]); + parent.children[index2] = node; + } + }; +}; +const prepareTextNode = ({ h, context }, text2) => { + if (context.autolink) { + text2 = parseUrl(text2); + } + if (Array.isArray(text2)) { + return text2.map((entry) => { + if (typeof entry === "string") { + return entry; + } + const { component, props } = entry; + return h(component, { + props, + class: "rich-text--component" + }); + }); + } + return text2; +}; +const RichText_vue_vue_type_style_index_0_scoped_a8ade67f_lang = ""; +const _sfc_main = { + name: "RichText", + components: { + ReferenceList + }, + props: { + text: { + type: String, + default: "" + }, + arguments: { + type: Object, + default: () => { + return {}; + } + }, + referenceLimit: { + type: Number, + default: 0 + }, + references: { + type: Object, + default: null + }, + markdownCssClasses: { + type: Object, + default: () => { + return { + a: "rich-text--external-link", + ol: "rich-text--ordered-list", + ul: "rich-text--un-ordered-list", + li: "rich-text--list-item", + strong: "rich-text--strong", + em: "rich-text--italic", + h1: "rich-text--heading rich-text--heading-1", + h2: "rich-text--heading rich-text--heading-2", + h3: "rich-text--heading rich-text--heading-3", + h4: "rich-text--heading rich-text--heading-4", + h5: "rich-text--heading rich-text--heading-5", + h6: "rich-text--heading rich-text--heading-6", + hr: "rich-text--hr", + table: "rich-text--table", + pre: "rich-text--pre", + code: "rich-text--code", + blockquote: "rich-text--blockquote" + }; + } + }, + useMarkdown: { + type: Boolean, + default: false + }, + autolink: { + type: Boolean, + default: true + } + }, + methods: { + renderPlaintext(h) { + const context = this; + const placeholders = this.text.split(/(\{[a-z\-_.0-9]+\})/ig).map(function(entry, index2, list2) { + const matches = entry.match(/^\{([a-z\-_.0-9]+)\}$/i); + if (!matches) { + return prepareTextNode({ h, context }, entry); + } + const argumentId = matches[1]; + const argument = context.arguments[argumentId]; + if (typeof argument === "object") { + const { component, props } = argument; + return h(component, { + props, + class: "rich-text--component" + }); + } + if (argument) { + return h("span", { class: "rich-text--fallback" }, argument); + } + return entry; + }); + return h("div", { class: "rich-text--wrapper" }, [ + h("div", {}, placeholders.flat()), + this.referenceLimit > 0 ? h("div", { class: "rich-text--reference-widget" }, [ + h(ReferenceList, { props: { text: this.text, referenceData: this.references } }) + ]) : null + ]); + }, + renderMarkdown(h) { + const renderedMarkdown = unified().use(remarkParse).use(remarkAutolink, { + autolink: this.autolink, + useMarkdown: this.useMarkdown + }).use(remarkExternalLinks, { + target: "_blank", + rel: ["noopener noreferrer"] + }).use(remarkBreaks).use(remark2rehype, { + handlers: { + component(toHast2, node) { + return toHast2(node, node.component, { value: node.value }); + } + } + }).use(remarkPlaceholder).use(rehypeReact, { + createElement: (tag, attrs, children) => { + if (!tag.startsWith("#")) { + return h(tag, attrs, children); + } + const placeholder = this.arguments[tag.slice(1)]; + if (!placeholder) { + return h("span", { ...{ attrs }, ...{ class: "rich-text--fallback" } }, [`{${tag.slice(1)}}`]); + } + if (!placeholder.component) { + return h("span", attrs, [placeholder]); + } + return h( + placeholder.component, + { + attrs, + props: placeholder.props, + class: "rich-text--component" + }, + children + ); + }, + prefix: false + }).processSync(this.text).result; + return h("div", { class: "rich-text--wrapper" }, [ + renderedMarkdown, + this.referenceLimit > 0 ? h("div", { class: "rich-text--reference-widget" }, [ + h(ReferenceList, { props: { text: this.text, referenceData: this.references } }) + ]) : null + ]); + } + }, + render(h) { + if (!this.useMarkdown) { + return this.renderPlaintext(h); + } + return this.renderMarkdown(h); + } +}; +const _sfc_render = null; +const _sfc_staticRenderFns = null; +var __component__ = /* @__PURE__ */ normalizeComponent( + _sfc_main, + _sfc_render, + _sfc_staticRenderFns, + false, + null, + "a8ade67f", + null, + null +); +const RichText = __component__.exports; + + + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/Components/NcAvatar.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/Components/NcAvatar.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/*! For license information please see NcAvatar.js.LICENSE.txt */ +!function(t,e){ true?module.exports=e():0}(self,(()=>(()=>{var t={5378:(t,e,a)=>{"use strict";a.d(e,{default:()=>k});const n={name:"NcLoadingIcon",props:{size:{type:Number,default:20},appearance:{type:String,validator:function(t){return["auto","light","dark"].includes(t)},default:"auto"},title:{type:String,default:""}},computed:{colors:function(){var t=["#777","#CCC"];return"light"===this.appearance?t:"dark"===this.appearance?t.reverse():["var(--color-loading-light)","var(--color-loading-dark)"]}}};var i=a(3379),o=a.n(i),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),u=a(3565),d=a.n(u),m=a(9216),p=a.n(m),h=a(4589),g=a.n(h),v=a(5030),f={};f.styleTagTransform=g(),f.setAttributes=d(),f.insert=c().bind(null,"head"),f.domAPI=s(),f.insertStyleElement=p();o()(v.Z,f);v.Z&&v.Z.locals&&v.Z.locals;var A=a(1900),b=a(9280),y=a.n(b),C=(0,A.Z)(n,(function(){var t=this,e=t._self._c;return e("span",{staticClass:"material-design-icon loading-icon",attrs:{"aria-label":t.title,role:"img"}},[e("svg",{attrs:{width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{fill:t.colors[0],d:"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z"}}),t._v(" "),e("path",{attrs:{fill:t.colors[1],d:"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,"c4a9cada",null);"function"==typeof y()&&y()(C);const k=C.exports},8563:(t,e,a)=>{"use strict";a.d(e,{default:()=>E});var n=a(9454),i=a(4505),o=a(1206),r=a(5108);function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function l(){l=function(){return t};var t={},e=Object.prototype,a=e.hasOwnProperty,n=Object.defineProperty||function(t,e,a){t[e]=a.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",r=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function u(t,e,a){return Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,a){return t[e]=a}}function d(t,e,a,i){var o=e&&e.prototype instanceof h?e:h,r=Object.create(o.prototype),s=new N(i||[]);return n(r,"_invoke",{value:w(t,a,s)}),r}function m(t,e,a){try{return{type:"normal",arg:t.call(e,a)}}catch(t){return{type:"throw",arg:t}}}t.wrap=d;var p={};function h(){}function g(){}function v(){}var f={};u(f,o,(function(){return this}));var A=Object.getPrototypeOf,b=A&&A(A(z([])));b&&b!==e&&a.call(b,o)&&(f=b);var y=v.prototype=h.prototype=Object.create(f);function C(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function i(n,o,r,l){var c=m(t[n],t,o);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==s(d)&&a.call(d,"__await")?e.resolve(d.__await).then((function(t){i("next",t,r,l)}),(function(t){i("throw",t,r,l)})):e.resolve(d).then((function(t){u.value=t,r(u)}),(function(t){return i("throw",t,r,l)}))}l(c.arg)}var o;n(this,"_invoke",{value:function(t,a){function n(){return new e((function(e,n){i(t,a,e,n)}))}return o=o?o.then(n,n):n()}})}function w(t,e,a){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return P()}for(a.method=i,a.arg=o;;){var r=a.delegate;if(r){var s=S(r,a);if(s){if(s===p)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if("suspendedStart"===n)throw n="completed",a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);n="executing";var l=m(t,e,a);if("normal"===l.type){if(n=a.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:a.done}}"throw"===l.type&&(n="completed",a.method="throw",a.arg=l.arg)}}}function S(t,e){var a=e.method,n=t.iterator[a];if(void 0===n)return e.delegate=null,"throw"===a&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==a&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+a+"' method")),p;var i=m(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,p;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function z(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var o=this.tryEntries[i],r=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev=0;--e){var a=this.tryEntries[e];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),j(a),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var a=this.tryEntries[e];if(a.tryLoc===t){var n=a.completion;if("throw"===n.type){var i=n.arg;j(a)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,a){return this.delegate={iterator:z(t),resultName:e,nextLoc:a},"next"===this.method&&(this.arg=void 0),p}},t}function c(t,e,a,n,i,o,r){try{var s=t[o](r),l=s.value}catch(t){return void a(t)}s.done?e(l):Promise.resolve(l).then(n,i)}const u={name:"NcPopover",components:{Dropdown:n.Dropdown},props:{popoverBaseClass:{type:String,default:""},focusTrap:{type:Boolean,default:!0},setReturnFocus:{default:void 0,type:[HTMLElement,SVGElement,String,Boolean]}},emits:["after-show","after-hide"],beforeDestroy:function(){this.clearFocusTrap()},methods:{useFocusTrap:function(){var t,e=this;return(t=l().mark((function t(){var a,n,r;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$nextTick();case 2:if(e.focusTrap){t.next=4;break}return t.abrupt("return");case 4:if(r=null===(a=e.$refs.popover)||void 0===a||null===(n=a.$refs.popperContent)||void 0===n?void 0:n.$el){t.next=7;break}return t.abrupt("return");case 7:e.$focusTrap=(0,i.createFocusTrap)(r,{escapeDeactivates:!1,allowOutsideClick:!0,setReturnFocus:e.setReturnFocus,trapStack:(0,o.L)()}),e.$focusTrap.activate();case 9:case"end":return t.stop()}}),t)})),function(){var e=this,a=arguments;return new Promise((function(n,i){var o=t.apply(e,a);function r(t){c(o,n,i,r,s,"next",t)}function s(t){c(o,n,i,r,s,"throw",t)}r(void 0)}))})()},clearFocusTrap:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var e;null===(e=this.$focusTrap)||void 0===e||e.deactivate(t),this.$focusTrap=null}catch(t){r.warn(t)}},afterShow:function(){var t=this;this.$nextTick((function(){t.$emit("after-show"),t.useFocusTrap()}))},afterHide:function(){this.$emit("after-hide"),this.clearFocusTrap()}}},d=u;var m=a(3379),p=a.n(m),h=a(7795),g=a.n(h),v=a(569),f=a.n(v),A=a(3565),b=a.n(A),y=a(9216),C=a.n(y),k=a(4589),w=a.n(k),S=a(3197),x={};x.styleTagTransform=w(),x.setAttributes=b(),x.insert=f().bind(null,"head"),x.domAPI=g(),x.insertStyleElement=C();p()(S.Z,x);S.Z&&S.Z.locals&&S.Z.locals;var j=a(1900),N=a(2405),z=a.n(N),P=(0,j.Z)(d,(function(){var t=this;return(0,t._self._c)("Dropdown",t._g(t._b({ref:"popover",attrs:{distance:10,"arrow-padding":10,"no-auto-focus":!0,"popper-class":t.popoverBaseClass},on:{"apply-show":t.afterShow,"apply-hide":t.afterHide},scopedSlots:t._u([{key:"popper",fn:function(){return[t._t("default")]},proxy:!0}],null,!0)},"Dropdown",t.$attrs,!1),t.$listeners),[t._t("trigger")],2)}),[],!1,null,null,null);"function"==typeof z()&&z()(P);const E=P.exports},1109:(t,e,a)=>{"use strict";a.d(e,{default:()=>N});const n={name:"NcPopoverMenuItem",props:{item:{type:Object,required:!0,default:function(){return{key:"nextcloud-link",href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}},validator:function(t){return!t.input||-1!==["text","checkbox"].indexOf(t.input)}}},computed:{key:function(){return this.item.key?this.item.key:Math.round(16*Math.random()*1e6).toString(16)},iconIsUrl:function(){try{return new URL(this.item.icon),!0}catch(t){return!1}}},methods:{action:function(t){this.item.action&&this.item.action(t)}}};var i=a(3379),o=a.n(i),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),u=a(3565),d=a.n(u),m=a(9216),p=a.n(m),h=a(4589),g=a.n(h),v=a(5578),f={};f.styleTagTransform=g(),f.setAttributes=d(),f.insert=c().bind(null,"head"),f.domAPI=s(),f.insertStyleElement=p();o()(v.Z,f);v.Z&&v.Z.locals&&v.Z.locals;var A=a(5772),b={};b.styleTagTransform=g(),b.setAttributes=d(),b.insert=c().bind(null,"head"),b.domAPI=s(),b.insertStyleElement=p();o()(A.Z,b);A.Z&&A.Z.locals&&A.Z.locals;var y=a(1900);const C={name:"NcPopoverMenu",components:{NcPopoverMenuItem:(0,y.Z)(n,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"popover__menuitem"},[t.item.href?e("a",{staticClass:"focusable",attrs:{href:t.item.href?t.item.href:"#",target:t.item.target?t.item.target:"",download:t.item.download,rel:"nofollow noreferrer noopener"},on:{click:t.action}},[t.iconIsUrl?e("img",{attrs:{src:t.item.icon}}):e("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?e("p",[e("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),e("br"),t._v(" "),e("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?e("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?e("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):t.item.input?e("span",{staticClass:"menuitem",class:{active:t.item.active}},["checkbox"!==t.item.input?e("span",{class:t.item.icon}):t._e(),t._v(" "),"text"===t.item.input?e("form",{class:t.item.input,on:{submit:function(e){return e.preventDefault(),t.item.action.apply(null,arguments)}}},[e("input",{attrs:{type:t.item.input,placeholder:t.item.text,required:""},domProps:{value:t.item.value}}),t._v(" "),e("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]):["checkbox"===t.item.input?e("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"checkbox"},domProps:{checked:Array.isArray(t.item.model)?t._i(t.item.model,null)>-1:t.item.model},on:{change:[function(e){var a=t.item.model,n=e.target,i=!!n.checked;if(Array.isArray(a)){var o=t._i(a,null);n.checked?o<0&&t.$set(t.item,"model",a.concat([null])):o>-1&&t.$set(t.item,"model",a.slice(0,o).concat(a.slice(o+1)))}else t.$set(t.item,"model",i)},t.item.action]}}):"radio"===t.item.input?e("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"radio"},domProps:{checked:t._q(t.item.model,null)},on:{change:[function(e){return t.$set(t.item,"model",null)},t.item.action]}}):e("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:t.item.input},domProps:{value:t.item.model},on:{change:t.item.action,input:function(e){e.target.composing||t.$set(t.item,"model",e.target.value)}}}),t._v(" "),e("label",{attrs:{for:t.key},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action.apply(null,arguments)}}},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")])]],2):t.item.action?e("button",{staticClass:"menuitem focusable",class:{active:t.item.active},attrs:{disabled:t.item.disabled,type:"button"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action.apply(null,arguments)}}},[e("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?e("p",[e("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),e("br"),t._v(" "),e("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?e("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?e("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):e("span",{staticClass:"menuitem",class:{active:t.item.active}},[e("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?e("p",[e("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),e("br"),t._v(" "),e("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?e("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?e("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()])])}),[],!1,null,"0ce1cbf1",null).exports},props:{menu:{type:Array,default:function(){return[{href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}]},required:!0}}};var k=a(2),w={};w.styleTagTransform=g(),w.setAttributes=d(),w.insert=c().bind(null,"head"),w.domAPI=s(),w.insertStyleElement=p();o()(k.Z,w);k.Z&&k.Z.locals&&k.Z.locals;var S=a(1174),x=a.n(S),j=(0,y.Z)(C,(function(){var t=this,e=t._self._c;return e("ul",{staticClass:"popover__menu"},t._l(t.menu,(function(t,a){return e("NcPopoverMenuItem",{key:a,attrs:{item:t}})})),1)}),[],!1,null,"31ffd2d4",null);"function"==typeof x()&&x()(j);const N=j.exports},7993:(t,e,a)=>{"use strict";a.d(e,{default:()=>r});var n=a(6609);const i=__webpack_require__(/*! md5 */ "./node_modules/md5/md5.js");var o=a.n(i);const r=function(t){var e=t.toLowerCase();null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=o()(e)),e=e.replace(/[^0-9a-f]/g,"");return(0,n.Z)(6)[function(t,e){for(var a=0,n=[],i=0;i{"use strict";a.d(e,{t:()=>r});var n=a(7931),i=(0,n.getGettextBuilder)().detectLocale();[{locale:"ar",translations:{"{tag} (invisible)":"{tag} (غير مرئي)","{tag} (restricted)":"{tag} (مقيد)",Actions:"الإجراءات",Activities:"النشاطات","Animals & Nature":"الحيوانات والطبيعة","Anything shared with the same group of people will show up here":"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا","Avatar of {displayName}":"صورة {displayName} الرمزية","Avatar of {displayName}, {status}":"صورة {displayName} الرمزية، {status}","Cancel changes":"إلغاء التغييرات","Change title":"تغيير العنوان",Choose:"إختيار","Clear text":"مسح النص",Close:"أغلق","Close modal":"قفل الشرط","Close navigation":"إغلاق المتصفح","Close sidebar":"قفل الشريط الجانبي","Confirm changes":"تأكيد التغييرات",Custom:"مخصص","Edit item":"تعديل عنصر","Error getting related resources":"خطأ في تحصيل مصادر ذات صلة","External documentation for {title}":"الوثائق الخارجية لـ{title}",Favorite:"مفضلة",Flags:"الأعلام","Food & Drink":"الطعام والشراب","Frequently used":"كثيرا ما تستخدم",Global:"عالمي","Go back to the list":"العودة إلى القائمة","Hide password":"إخفاء كلمة السر","Message limit of {count} characters reached":"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف","More items …":"عناصر أخرى ...",Next:"التالي","No emoji found":"لم يتم العثور على أي رمز تعبيري","No results":"ليس هناك أية نتيجة",Objects:"الأشياء",Open:"فتح",'Open link to "{resourceTitle}"':'فتح رابط إلى "{resourceTitle}"',"Open navigation":"فتح المتصفح","Password is secure":"كلمة السر مُؤمّنة","Pause slideshow":"إيقاف العرض مؤقتًا","People & Body":"الناس والجسم","Pick an emoji":"اختر رمزًا تعبيريًا","Please select a time zone:":"الرجاء تحديد المنطقة الزمنية:",Previous:"السابق","Related resources":"مصادر ذات صلة",Search:"بحث","Search results":"نتائج البحث","Select a tag":"اختر علامة",Settings:"الإعدادات","Settings navigation":"إعدادات المتصفح","Show password":"أعرض كلمة السر","Smileys & Emotion":"الوجوه و الرموز التعبيرية","Start slideshow":"بدء العرض",Submit:"إرسال",Symbols:"الرموز","Travel & Places":"السفر والأماكن","Type to search time zone":"اكتب للبحث عن منطقة زمنية","Unable to search the group":"تعذر البحث في المجموعة","Undo changes":"التراجع عن التغييرات","Write message, @ to mention someone, : for emoji autocompletion …":"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ..."}},{locale:"br",translations:{"{tag} (invisible)":"{tag} (diwelus)","{tag} (restricted)":"{tag} (bevennet)",Actions:"Oberioù",Activities:"Oberiantizoù","Animals & Nature":"Loened & Natur",Choose:"Dibab",Close:"Serriñ",Custom:"Personelañ",Flags:"Bannieloù","Food & Drink":"Boued & Evajoù","Frequently used":"Implijet alies",Next:"Da heul","No emoji found":"Emoji ebet kavet","No results":"Disoc'h ebet",Objects:"Traoù","Pause slideshow":"Arsav an diaporama","People & Body":"Tud & Korf","Pick an emoji":"Choaz un emoji",Previous:"A-raok",Search:"Klask","Search results":"Disoc'hoù an enklask","Select a tag":"Choaz ur c'hlav",Settings:"Arventennoù","Smileys & Emotion":"Smileyioù & Fromoù","Start slideshow":"Kregiñ an diaporama",Symbols:"Arouezioù","Travel & Places":"Beaj & Lec'hioù","Unable to search the group":"Dibosupl eo klask ar strollad"}},{locale:"ca",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringit)",Actions:"Accions",Activities:"Activitats","Animals & Nature":"Animals i natura","Anything shared with the same group of people will show up here":"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancel·la els canvis","Change title":"Canviar títol",Choose:"Tria","Clear text":"Netejar text",Close:"Tanca","Close modal":"Tancar el mode","Close navigation":"Tanca la navegació","Close sidebar":"Tancar la barra lateral","Confirm changes":"Confirmeu els canvis",Custom:"Personalitzat","Edit item":"Edita l'element","Error getting related resources":"Error obtenint els recursos relacionats","Error parsing svg":"Error en l'anàlisi del svg","External documentation for {title}":"Documentació externa per a {title}",Favorite:"Preferit",Flags:"Marques","Food & Drink":"Menjar i begudes","Frequently used":"Utilitzats recentment",Global:"Global","Go back to the list":"Torna a la llista","Hide password":"Amagar contrasenya","Message limit of {count} characters reached":"S'ha arribat al límit de {count} caràcters per missatge","More items …":"Més artícles...",Next:"Següent","No emoji found":"No s'ha trobat cap emoji","No results":"Sense resultats",Objects:"Objectes",Open:"Obrir",'Open link to "{resourceTitle}"':'Obrir enllaç a "{resourceTitle}"',"Open navigation":"Obre la navegació","Password is secure":"Contrasenya segura
","Pause slideshow":"Atura la presentació","People & Body":"Persones i cos","Pick an emoji":"Trieu un emoji","Please select a time zone:":"Seleccioneu una zona horària:",Previous:"Anterior","Related resources":"Recursos relacionats",Search:"Cerca","Search results":"Resultats de cerca","Select a tag":"Seleccioneu una etiqueta",Settings:"Paràmetres","Settings navigation":"Navegació d'opcions","Show password":"Mostrar contrasenya","Smileys & Emotion":"Cares i emocions","Start slideshow":"Inicia la presentació",Submit:"Envia",Symbols:"Símbols","Travel & Places":"Viatges i llocs","Type to search time zone":"Escriviu per cercar la zona horària","Unable to search the group":"No es pot cercar el grup","Undo changes":"Desfés els canvis",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escriu missatge, fes servir "@" per esmentar algú, fes servir ":" per autocompletar emojis...'}},{locale:"cs_CZ",translations:{"{tag} (invisible)":"{tag} (neviditelné)","{tag} (restricted)":"{tag} (omezené)",Actions:"Akce",Activities:"Aktivity","Animals & Nature":"Zvířata a příroda","Anything shared with the same group of people will show up here":"Cokoli nasdíleného stejné skupině lidí se zobrazí zde","Avatar of {displayName}":"Zástupný obrázek uživatele {displayName}","Avatar of {displayName}, {status}":"Zástupný obrázek uživatele {displayName}, {status}","Cancel changes":"Zrušit změny","Change title":"Změnit nadpis",Choose:"Zvolit","Clear text":"Čitelný text",Close:"Zavřít","Close modal":"Zavřít dialogové okno","Close navigation":"Zavřít navigaci","Close sidebar":"Zavřít postranní panel","Confirm changes":"Potvrdit změny",Custom:"Uživatelsky určené","Edit item":"Upravit položku","Error getting related resources":"Chyba při získávání souvisejících prostředků","Error parsing svg":"Chyba při zpracovávání svg","External documentation for {title}":"Externí dokumentace k {title}",Favorite:"Oblíbené",Flags:"Příznaky","Food & Drink":"Jídlo a pití","Frequently used":"Často používané",Global:"Globální","Go back to the list":"Jít zpět na seznam","Hide password":"Skrýt heslo","Message limit of {count} characters reached":"Dosaženo limitu počtu ({count}) znaků zprávy","More items …":"Další položky…",Next:"Následující","No emoji found":"Nenalezeno žádné emoji","No results":"Nic nenalezeno",Objects:"Objekty",Open:"Otevřít",'Open link to "{resourceTitle}"':"Otevřít odkaz na „{resourceTitle}“","Open navigation":"Otevřít navigaci","Password is secure":"Heslo je bezpečné","Pause slideshow":"Pozastavit prezentaci","People & Body":"Lidé a tělo","Pick an emoji":"Vybrat emoji","Please select a time zone:":"Vyberte časovou zónu:",Previous:"Předchozí","Related resources":"Související prostředky",Search:"Hledat","Search results":"Výsledky hledání","Select a tag":"Vybrat štítek",Settings:"Nastavení","Settings navigation":"Pohyb po nastavení","Show password":"Zobrazit heslo","Smileys & Emotion":"Úsměvy a emoce","Start slideshow":"Spustit prezentaci",Submit:"Odeslat",Symbols:"Symboly","Travel & Places":"Cestování a místa","Type to search time zone":"Psaním vyhledejte časovou zónu","Unable to search the group":"Nedaří se hledat skupinu","Undo changes":"Vzít změny zpět",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…"}},{locale:"da",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (begrænset)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr & Natur","Anything shared with the same group of people will show up here":"Alt der deles med samme gruppe af personer vil vises her","Avatar of {displayName}":"Avatar af {displayName}","Avatar of {displayName}, {status}":"Avatar af {displayName}, {status}","Cancel changes":"Annuller ændringer","Change title":"Ret titel",Choose:"Vælg","Clear text":"Ryd tekst",Close:"Luk","Close modal":"Luk vindue","Close navigation":"Luk navigation","Close sidebar":"Luk sidepanel","Confirm changes":"Bekræft ændringer",Custom:"Brugerdefineret","Edit item":"Rediger emne","Error getting related resources":"Kunne ikke hente tilknyttede data","Error parsing svg":"Fejl ved analysering af svg","External documentation for {title}":"Ekstern dokumentation for {title}",Favorite:"Favorit",Flags:"Flag","Food & Drink":"Mad & Drikke","Frequently used":"Ofte brugt",Global:"Global","Go back to the list":"Tilbage til listen","Hide password":"Skjul kodeord","Message limit of {count} characters reached":"Begrænsning på {count} tegn er nået","More items …":"Mere ...",Next:"Videre","No emoji found":"Ingen emoji fundet","No results":"Ingen resultater",Objects:"Objekter",Open:"Åbn",'Open link to "{resourceTitle}"':'Åbn link til "{resourceTitle}"',"Open navigation":"Åbn navigation","Password is secure":"Kodeordet er sikkert","Pause slideshow":"Suspender fremvisning","People & Body":"Mennesker & Menneskekroppen","Pick an emoji":"Vælg en emoji","Please select a time zone:":"Vælg venligst en tidszone:",Previous:"Forrige","Related resources":"Relaterede emner",Search:"Søg","Search results":"Søgeresultater","Select a tag":"Vælg et mærke",Settings:"Indstillinger","Settings navigation":"Naviger i indstillinger","Show password":"Vis kodeord","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start fremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Rejser & Rejsemål","Type to search time zone":"Indtast for at søge efter tidszone","Unable to search the group":"Kan ikke søge på denne gruppe","Undo changes":"Fortryd ændringer",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv besked, brug "@" for at nævne nogen, brug ":" til emoji-autofuldførelse ...'}},{locale:"de",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Anything shared with the same group of people will show up here":"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","Error parsing svg":"Fehler beim Einlesen der SVG","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Gegenstände",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte wählen Sie eine Zeitzone:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um Zeitzone zu suchen","Unable to search the group":"Die Gruppe konnte nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Nachricht schreiben, "@" um jemanden zu erwähnen, ":" für die automatische Vervollständigung von Emojis …'}},{locale:"de_DE",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Anything shared with the same group of people will show up here":"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","Error parsing svg":"Fehler beim Einlesen der SVG","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Objekte",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte eine Zeitzone auswählen:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um eine Zeitzone zu suchen","Unable to search the group":"Die Gruppe kann nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Nachricht schreiben, "@" um jemanden zu erwähnen, ":" für die automatische Vervollständigung von Emojis …'}},{locale:"el",translations:{"{tag} (invisible)":"{tag} (αόρατο)","{tag} (restricted)":"{tag} (περιορισμένο)",Actions:"Ενέργειες",Activities:"Δραστηριότητες","Animals & Nature":"Ζώα & Φύση","Anything shared with the same group of people will show up here":"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ","Avatar of {displayName}":"Άβαταρ του {displayName}","Avatar of {displayName}, {status}":"Άβαταρ του {displayName}, {status}","Cancel changes":"Ακύρωση αλλαγών","Change title":"Αλλαγή τίτλου",Choose:"Επιλογή","Clear text":"Εκκαθάριση κειμένου",Close:"Κλείσιμο","Close modal":"Βοηθητικό κλείσιμο","Close navigation":"Κλείσιμο πλοήγησης","Close sidebar":"Κλείσιμο πλευρικής μπάρας","Confirm changes":"Επιβεβαίωση αλλαγών",Custom:"Προσαρμογή","Edit item":"Επεξεργασία","Error getting related resources":"Σφάλμα λήψης σχετικών πόρων","Error parsing svg":"Σφάλμα ανάλυσης svg","External documentation for {title}":"Εξωτερική τεκμηρίωση για {title}",Favorite:"Αγαπημένα",Flags:"Σημαίες","Food & Drink":"Φαγητό & Ποτό","Frequently used":"Συχνά χρησιμοποιούμενο",Global:"Καθολικό","Go back to the list":"Επιστροφή στην αρχική λίστα ","Hide password":"Απόκρυψη κωδικού πρόσβασης","Message limit of {count} characters reached":"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος","More items …":"Περισσότερα στοιχεία …",Next:"Επόμενο","No emoji found":"Δεν βρέθηκε emoji","No results":"Κανένα αποτέλεσμα",Objects:"Αντικείμενα",Open:"Άνοιγμα",'Open link to "{resourceTitle}"':'Άνοιγμα συνδέσμου στο "{resourceTitle}"',"Open navigation":"Άνοιγμα πλοήγησης","Password is secure":"Ο κωδικός πρόσβασης είναι ασφαλής","Pause slideshow":"Παύση προβολής διαφανειών","People & Body":"Άνθρωποι & Σώμα","Pick an emoji":"Επιλέξτε ένα emoji","Please select a time zone:":"Παρακαλούμε επιλέξτε μια ζώνη ώρας:",Previous:"Προηγούμενο","Related resources":"Σχετικοί πόροι",Search:"Αναζήτηση","Search results":"Αποτελέσματα αναζήτησης","Select a tag":"Επιλογή ετικέτας",Settings:"Ρυθμίσεις","Settings navigation":"Πλοήγηση ρυθμίσεων","Show password":"Εμφάνιση κωδικού πρόσβασης","Smileys & Emotion":"Φατσούλες & Συναίσθημα","Start slideshow":"Έναρξη προβολής διαφανειών",Submit:"Υποβολή",Symbols:"Σύμβολα","Travel & Places":"Ταξίδια & Τοποθεσίες","Type to search time zone":"Πληκτρολογήστε για αναζήτηση ζώνης ώρας","Unable to search the group":"Δεν είναι δυνατή η αναζήτηση της ομάδας","Undo changes":"Αναίρεση Αλλαγών",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε "@" για να αναφέρετε κάποιον, χρησιμοποιείστε ":" για αυτόματη συμπλήρωση emoji …'}},{locale:"en_GB",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restricted)",Actions:"Actions",Activities:"Activities","Animals & Nature":"Animals & Nature","Anything shared with the same group of people will show up here":"Anything shared with the same group of people will show up here","Avatar of {displayName}":"Avatar of {displayName}","Avatar of {displayName}, {status}":"Avatar of {displayName}, {status}","Cancel changes":"Cancel changes","Change title":"Change title",Choose:"Choose","Clear text":"Clear text",Close:"Close","Close modal":"Close modal","Close navigation":"Close navigation","Close sidebar":"Close sidebar","Confirm changes":"Confirm changes",Custom:"Custom","Edit item":"Edit item","Error getting related resources":"Error getting related resources","Error parsing svg":"Error parsing svg","External documentation for {title}":"External documentation for {title}",Favorite:"Favourite",Flags:"Flags","Food & Drink":"Food & Drink","Frequently used":"Frequently used",Global:"Global","Go back to the list":"Go back to the list","Hide password":"Hide password","Message limit of {count} characters reached":"Message limit of {count} characters reached","More items …":"More items …",Next:"Next","No emoji found":"No emoji found","No results":"No results",Objects:"Objects",Open:"Open",'Open link to "{resourceTitle}"':'Open link to "{resourceTitle}"',"Open navigation":"Open navigation","Password is secure":"Password is secure","Pause slideshow":"Pause slideshow","People & Body":"People & Body","Pick an emoji":"Pick an emoji","Please select a time zone:":"Please select a time zone:",Previous:"Previous","Related resources":"Related resources",Search:"Search","Search results":"Search results","Select a tag":"Select a tag",Settings:"Settings","Settings navigation":"Settings navigation","Show password":"Show password","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start slideshow",Submit:"Submit",Symbols:"Symbols","Travel & Places":"Travel & Places","Type to search time zone":"Type to search time zone","Unable to search the group":"Unable to search the group","Undo changes":"Undo changes",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Write message, use "@" to mention someone, use ":" for emoji autocompletion …'}},{locale:"eo",translations:{"{tag} (invisible)":"{tag} (kaŝita)","{tag} (restricted)":"{tag} (limigita)",Actions:"Agoj",Activities:"Aktiveco","Animals & Nature":"Bestoj & Naturo",Choose:"Elektu",Close:"Fermu",Custom:"Propra",Flags:"Flagoj","Food & Drink":"Manĝaĵo & Trinkaĵo","Frequently used":"Ofte uzataj","Message limit of {count} characters reached":"La limo je {count} da literoj atingita",Next:"Sekva","No emoji found":"La emoĝio forestas","No results":"La rezulto forestas",Objects:"Objektoj","Pause slideshow":"Payzi bildprezenton","People & Body":"Homoj & Korpo","Pick an emoji":"Elekti emoĝion ",Previous:"Antaŭa",Search:"Serĉi","Search results":"Serĉrezultoj","Select a tag":"Elektu etikedon",Settings:"Agordo","Settings navigation":"Agorda navigado","Smileys & Emotion":"Ridoj kaj Emocioj","Start slideshow":"Komenci bildprezenton",Symbols:"Signoj","Travel & Places":"Vojaĵoj & Lokoj","Unable to search the group":"Ne eblas serĉi en la grupo","Write message, @ to mention someone …":"Mesaĝi, uzu @ por mencii iun ..."}},{locale:"es",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringido)",Actions:"Acciones",Activities:"Actividades","Animals & Nature":"Animales y naturaleza","Anything shared with the same group of people will show up here":"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar cambios","Change title":"Cambiar título",Choose:"Elegir","Clear text":"Limpiar texto",Close:"Cerrar","Close modal":"Cerrar modal","Close navigation":"Cerrar navegación","Close sidebar":"Cerrar barra lateral","Confirm changes":"Confirmar cambios",Custom:"Personalizado","Edit item":"Editar elemento","Error getting related resources":"Se encontró un error al obtener los recursos relacionados","Error parsing svg":"Error procesando svg","External documentation for {title}":"Documentacion externa de {title}",Favorite:"Favorito",Flags:"Banderas","Food & Drink":"Comida y bebida","Frequently used":"Usado con frecuenca",Global:"Global","Go back to the list":"Volver a la lista","Hide password":"Ocultar contraseña","Message limit of {count} characters reached":"El mensaje ha alcanzado el límite de {count} caracteres","More items …":"Más ítems...",Next:"Siguiente","No emoji found":"No hay ningún emoji","No results":" Ningún resultado",Objects:"Objetos",Open:"Abrir",'Open link to "{resourceTitle}"':'Abrir enlace a "{resourceTitle}"',"Open navigation":"Abrir navegación","Password is secure":"La contraseña es segura","Pause slideshow":"Pausar la presentación ","People & Body":"Personas y cuerpos","Pick an emoji":"Elegir un emoji","Please select a time zone:":"Por favor elige un huso de horario:",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Buscar","Search results":"Resultados de la búsqueda","Select a tag":"Seleccione una etiqueta",Settings:"Ajustes","Settings navigation":"Navegación por ajustes","Show password":"Mostrar contraseña","Smileys & Emotion":"Smileys y emoticonos","Start slideshow":"Iniciar la presentación",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viajes y lugares","Type to search time zone":"Escribe para buscar un huso de horario","Unable to search the group":"No es posible buscar en el grupo","Undo changes":"Deshacer cambios",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escribir mensaje, utilice "@" para mencionar a alguien, utilice ":" para autocompletado de emojis ...'}},{locale:"eu",translations:{"{tag} (invisible)":"{tag} (ikusezina)","{tag} (restricted)":"{tag} (mugatua)",Actions:"Ekintzak",Activities:"Jarduerak","Animals & Nature":"Animaliak eta Natura","Anything shared with the same group of people will show up here":"Pertsona-talde berarekin partekatutako edozer agertuko da hemen","Avatar of {displayName}":"{displayName}-(e)n irudia","Avatar of {displayName}, {status}":"{displayName} -(e)n irudia, {status}","Cancel changes":"Ezeztatu aldaketak","Change title":"Aldatu titulua",Choose:"Aukeratu","Clear text":"Garbitu testua",Close:"Itxi","Close modal":"Itxi modala","Close navigation":"Itxi nabigazioa","Close sidebar":"Itxi albo-barra","Confirm changes":"Baieztatu aldaketak",Custom:"Pertsonalizatua","Edit item":"Editatu elementua","Error getting related resources":"Errorea erlazionatutako baliabideak lortzerakoan","Error parsing svg":"Errore bat gertatu da svg-a analizatzean","External documentation for {title}":"Kanpoko dokumentazioa {title}(r)entzat",Favorite:"Gogokoa",Flags:"Banderak","Food & Drink":"Janaria eta edariak","Frequently used":"Askotan erabilia",Global:"Globala","Go back to the list":"Bueltatu zerrendara","Hide password":"Ezkutatu pasahitza","Message limit of {count} characters reached":"Mezuaren {count} karaketere-limitera heldu zara","More items …":"Elementu gehiago …",Next:"Hurrengoa","No emoji found":"Ez da emojirik aurkitu","No results":"Emaitzarik ez",Objects:"Objektuak",Open:"Ireki",'Open link to "{resourceTitle}"':'Ireki esteka: "{resourceTitle}"',"Open navigation":"Ireki nabigazioa","Password is secure":"Pasahitza segurua da","Pause slideshow":"Pausatu diaporama","People & Body":"Jendea eta gorputza","Pick an emoji":"Hautatu emoji bat","Please select a time zone:":"Mesedez hautatu ordu-zona bat:",Previous:"Aurrekoa","Related resources":"Erlazionatutako baliabideak",Search:"Bilatu","Search results":"Bilaketa emaitzak","Select a tag":"Hautatu etiketa bat",Settings:"Ezarpenak","Settings navigation":"Nabigazio ezarpenak","Show password":"Erakutsi pasahitza","Smileys & Emotion":"Smileyak eta emozioa","Start slideshow":"Hasi diaporama",Submit:"Bidali",Symbols:"Sinboloak","Travel & Places":"Bidaiak eta lekuak","Type to search time zone":"Idatzi ordu-zona bat bilatzeko","Unable to search the group":"Ezin izan da taldea bilatu","Undo changes":"Aldaketak desegin",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Idatzi mezua, erabili "@" norbait aipatzeko, erabili ":" emojiak automatikoki osatzeko...'}},{locale:"fi_FI",translations:{"{tag} (invisible)":"{tag} (näkymätön)","{tag} (restricted)":"{tag} (rajoitettu)",Actions:"Toiminnot",Activities:"Aktiviteetit","Animals & Nature":"Eläimet & luonto","Avatar of {displayName}":"Käyttäjän {displayName} avatar","Avatar of {displayName}, {status}":"Käyttäjän {displayName} avatar, {status}","Cancel changes":"Peruuta muutokset",Choose:"Valitse",Close:"Sulje","Close navigation":"Sulje navigaatio","Confirm changes":"Vahvista muutokset",Custom:"Mukautettu","Edit item":"Muokkaa kohdetta","External documentation for {title}":"Ulkoinen dokumentaatio kohteelle {title}",Flags:"Liput","Food & Drink":"Ruoka & juoma","Frequently used":"Usein käytetyt",Global:"Yleinen","Go back to the list":"Siirry takaisin listaan","Message limit of {count} characters reached":"Viestin merkken enimmäisimäärä {count} täynnä ",Next:"Seuraava","No emoji found":"Emojia ei löytynyt","No results":"Ei tuloksia",Objects:"Esineet & asiat","Open navigation":"Avaa navigaatio","Pause slideshow":"Keskeytä diaesitys","People & Body":"Ihmiset & keho","Pick an emoji":"Valitse emoji","Please select a time zone:":"Valitse aikavyöhyke:",Previous:"Edellinen",Search:"Etsi","Search results":"Hakutulokset","Select a tag":"Valitse tagi",Settings:"Asetukset","Settings navigation":"Asetusnavigaatio","Smileys & Emotion":"Hymiöt & tunteet","Start slideshow":"Aloita diaesitys",Submit:"Lähetä",Symbols:"Symbolit","Travel & Places":"Matkustus & kohteet","Type to search time zone":"Kirjoita etsiäksesi aikavyöhyke","Unable to search the group":"Ryhmää ei voi hakea","Undo changes":"Kumoa muutokset","Write message, @ to mention someone, : for emoji autocompletion …":"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…"}},{locale:"fr",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restreint)",Actions:"Actions",Activities:"Activités","Animals & Nature":"Animaux & Nature","Anything shared with the same group of people will show up here":"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Annuler les modifications","Change title":"Modifier le titre",Choose:"Choisir","Clear text":"Effacer le texte",Close:"Fermer","Close modal":"Fermer la fenêtre","Close navigation":"Fermer la navigation","Close sidebar":"Fermer la barre latérale","Confirm changes":"Confirmer les modifications",Custom:"Personnalisé","Edit item":"Éditer l'élément","Error getting related resources":"Erreur à la récupération des ressources liées","Error parsing svg":"Erreur d'analyse SVG","External documentation for {title}":"Documentation externe pour {title}",Favorite:"Favori",Flags:"Drapeaux","Food & Drink":"Nourriture & Boissons","Frequently used":"Utilisés fréquemment",Global:"Global","Go back to the list":"Retourner à la liste","Hide password":"Cacher le mot de passe","Message limit of {count} characters reached":"Limite de messages de {count} caractères atteinte","More items …":"Plus d'éléments...",Next:"Suivant","No emoji found":"Pas d’émoji trouvé","No results":"Aucun résultat",Objects:"Objets",Open:"Ouvrir",'Open link to "{resourceTitle}"':'Ouvrir le lien vers "{resourceTitle}"',"Open navigation":"Ouvrir la navigation","Password is secure":"Le mot de passe est sécurisé","Pause slideshow":"Mettre le diaporama en pause","People & Body":"Personnes & Corps","Pick an emoji":"Choisissez un émoji","Please select a time zone:":"Sélectionnez un fuseau horaire : ",Previous:"Précédent","Related resources":"Ressources liées",Search:"Chercher","Search results":"Résultats de recherche","Select a tag":"Sélectionnez une balise",Settings:"Paramètres","Settings navigation":"Navigation dans les paramètres","Show password":"Afficher le mot de passe","Smileys & Emotion":"Smileys & Émotions","Start slideshow":"Démarrer le diaporama",Submit:"Valider",Symbols:"Symboles","Travel & Places":"Voyage & Lieux","Type to search time zone":"Saisissez les premiers lettres pour rechercher un fuseau horaire","Unable to search the group":"Impossible de chercher le groupe","Undo changes":"Annuler les changements",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Écrire un message, utiliser "@" pour mentionner une personne, ":" pour l\'autocomplétion des émojis...'}},{locale:"gl",translations:{"{tag} (invisible)":"{tag} (invisíbel)","{tag} (restricted)":"{tag} (restrinxido)",Actions:"Accións",Activities:"Actividades","Animals & Nature":"Animais e natureza","Cancel changes":"Cancelar os cambios",Choose:"Escoller",Close:"Pechar","Confirm changes":"Confirma os cambios",Custom:"Personalizado","External documentation for {title}":"Documentación externa para {title}",Flags:"Bandeiras","Food & Drink":"Comida e bebida","Frequently used":"Usado con frecuencia","Message limit of {count} characters reached":"Acadouse o límite de {count} caracteres por mensaxe",Next:"Seguinte","No emoji found":"Non se atopou ningún «emoji»","No results":"Sen resultados",Objects:"Obxectos","Pause slideshow":"Pausar o diaporama","People & Body":"Persoas e corpo","Pick an emoji":"Escolla un «emoji»",Previous:"Anterir",Search:"Buscar","Search results":"Resultados da busca","Select a tag":"Seleccione unha etiqueta",Settings:"Axustes","Settings navigation":"Navegación polos axustes","Smileys & Emotion":"Sorrisos e emocións","Start slideshow":"Iniciar o diaporama",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viaxes e lugares","Unable to search the group":"Non foi posíbel buscar o grupo","Write message, @ to mention someone …":"Escriba a mensaxe, @ para mencionar a alguén…"}},{locale:"he",translations:{"{tag} (invisible)":"{tag} (נסתר)","{tag} (restricted)":"{tag} (מוגבל)",Actions:"פעולות",Activities:"פעילויות","Animals & Nature":"חיות וטבע",Choose:"בחירה",Close:"סגירה",Custom:"בהתאמה אישית",Flags:"דגלים","Food & Drink":"מזון ומשקאות","Frequently used":"בשימוש תדיר",Next:"הבא","No emoji found":"לא נמצא אמוג׳י","No results":"אין תוצאות",Objects:"חפצים","Pause slideshow":"השהיית מצגת","People & Body":"אנשים וגוף","Pick an emoji":"נא לבחור אמוג׳י",Previous:"הקודם",Search:"חיפוש","Search results":"תוצאות חיפוש","Select a tag":"בחירת תגית",Settings:"הגדרות","Smileys & Emotion":"חייכנים ורגשונים","Start slideshow":"התחלת המצגת",Symbols:"סמלים","Travel & Places":"טיולים ומקומות","Unable to search the group":"לא ניתן לחפש בקבוצה"}},{locale:"hu_HU",translations:{"{tag} (invisible)":"{tag} (láthatatlan)","{tag} (restricted)":"{tag} (korlátozott)",Actions:"Műveletek",Activities:"Tevékenységek","Animals & Nature":"Állatok és természet","Anything shared with the same group of people will show up here":"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni","Avatar of {displayName}":"{displayName} profilképe","Avatar of {displayName}, {status}":"{displayName} profilképe, {status}","Cancel changes":"Változtatások elvetése","Change title":"Cím megváltoztatása",Choose:"Válassszon","Clear text":"Szöveg törlése",Close:"Bezárás","Close modal":"Ablak bezárása","Close navigation":"Navigáció bezárása","Close sidebar":"Oldalsáv bezárása","Confirm changes":"Változtatások megerősítése",Custom:"Egyéni","Edit item":"Elem szerkesztése","Error getting related resources":"Hiba a kapcsolódó erőforrások lekérésekor","Error parsing svg":"Hiba az SVG feldolgozásakor","External documentation for {title}":"Külső dokumentáció ehhez: {title}",Favorite:"Kedvenc",Flags:"Zászlók","Food & Drink":"Étel és ital","Frequently used":"Gyakran használt",Global:"Globális","Go back to the list":"Ugrás vissza a listához","Hide password":"Jelszó elrejtése","Message limit of {count} characters reached":"{count} karakteres üzenetkorlát elérve","More items …":"További elemek...",Next:"Következő","No emoji found":"Nem található emodzsi","No results":"Nincs találat",Objects:"Tárgyak",Open:"Megnyitás",'Open link to "{resourceTitle}"':"A(z) „{resourceTitle}” hivatkozásának megnyitása","Open navigation":"Navigáció megnyitása","Password is secure":"A jelszó biztonságos","Pause slideshow":"Diavetítés szüneteltetése","People & Body":"Emberek és test","Pick an emoji":"Válasszon egy emodzsit","Please select a time zone:":"Válasszon időzónát:",Previous:"Előző","Related resources":"Kapcsolódó erőforrások",Search:"Keresés","Search results":"Találatok","Select a tag":"Válasszon címkét",Settings:"Beállítások","Settings navigation":"Navigáció a beállításokban","Show password":"Jelszó megjelenítése","Smileys & Emotion":"Mosolyok és érzelmek","Start slideshow":"Diavetítés indítása",Submit:"Beküldés",Symbols:"Szimbólumok","Travel & Places":"Utazás és helyek","Type to search time zone":"Gépeljen az időzóna kereséséhez","Unable to search the group":"A csoport nem kereshető","Undo changes":"Változtatások visszavonása",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…"}},{locale:"is",translations:{"{tag} (invisible)":"{tag} (ósýnilegt)","{tag} (restricted)":"{tag} (takmarkað)",Actions:"Aðgerðir",Activities:"Aðgerðir","Animals & Nature":"Dýr og náttúra",Choose:"Velja",Close:"Loka",Custom:"Sérsniðið",Flags:"Flögg","Food & Drink":"Matur og drykkur","Frequently used":"Oftast notað",Next:"Næsta","No emoji found":"Ekkert tjáningartákn fannst","No results":"Engar niðurstöður",Objects:"Hlutir","Pause slideshow":"Gera hlé á skyggnusýningu","People & Body":"Fólk og líkami","Pick an emoji":"Veldu tjáningartákn",Previous:"Fyrri",Search:"Leita","Search results":"Leitarniðurstöður","Select a tag":"Veldu merki",Settings:"Stillingar","Smileys & Emotion":"Broskallar og tilfinningar","Start slideshow":"Byrja skyggnusýningu",Symbols:"Tákn","Travel & Places":"Staðir og ferðalög","Unable to search the group":"Get ekki leitað í hópnum"}},{locale:"it",translations:{"{tag} (invisible)":"{tag} (invisibile)","{tag} (restricted)":"{tag} (limitato)",Actions:"Azioni",Activities:"Attività","Animals & Nature":"Animali e natura","Anything shared with the same group of people will show up here":"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui","Avatar of {displayName}":"Avatar di {displayName}","Avatar of {displayName}, {status}":"Avatar di {displayName}, {status}","Cancel changes":"Annulla modifiche","Change title":"Modifica il titolo",Choose:"Scegli","Clear text":"Cancella il testo",Close:"Chiudi","Close modal":"Chiudi il messaggio modale","Close navigation":"Chiudi la navigazione","Close sidebar":"Chiudi la barra laterale","Confirm changes":"Conferma modifiche",Custom:"Personalizzato","Edit item":"Modifica l'elemento","Error getting related resources":"Errore nell'ottenere risorse correlate","Error parsing svg":"Errore nell'analizzare l'svg","External documentation for {title}":"Documentazione esterna per {title}",Favorite:"Preferito",Flags:"Bandiere","Food & Drink":"Cibo e bevande","Frequently used":"Usati di frequente",Global:"Globale","Go back to the list":"Torna all'elenco","Hide password":"Nascondi la password","Message limit of {count} characters reached":"Limite dei messaggi di {count} caratteri raggiunto","More items …":"Più elementi ...",Next:"Successivo","No emoji found":"Nessun emoji trovato","No results":"Nessun risultato",Objects:"Oggetti",Open:"Apri",'Open link to "{resourceTitle}"':'Apri il link a "{resourceTitle}"',"Open navigation":"Apri la navigazione","Password is secure":"La password è sicura","Pause slideshow":"Presentazione in pausa","People & Body":"Persone e corpo","Pick an emoji":"Scegli un emoji","Please select a time zone:":"Si prega di selezionare un fuso orario:",Previous:"Precedente","Related resources":"Risorse correlate",Search:"Cerca","Search results":"Risultati di ricerca","Select a tag":"Seleziona un'etichetta",Settings:"Impostazioni","Settings navigation":"Navigazione delle impostazioni","Show password":"Mostra la password","Smileys & Emotion":"Faccine ed emozioni","Start slideshow":"Avvia presentazione",Submit:"Invia",Symbols:"Simboli","Travel & Places":"Viaggi e luoghi","Type to search time zone":"Digita per cercare un fuso orario","Unable to search the group":"Impossibile cercare il gruppo","Undo changes":"Cancella i cambiamenti",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrivi un messaggio, "@" per menzionare qualcuno, ":" per il completamento automatico delle emoji ...'}},{locale:"ja_JP",translations:{"{tag} (invisible)":"{タグ} (不可視)","{tag} (restricted)":"{タグ} (制限付)",Actions:"操作",Activities:"アクティビティ","Animals & Nature":"動物と自然","Anything shared with the same group of people will show up here":"同じグループで共有しているものは、全てここに表示されます","Avatar of {displayName}":"{displayName} のアバター","Avatar of {displayName}, {status}":"{displayName}, {status} のアバター","Cancel changes":"変更をキャンセル","Change title":"タイトルを変更",Choose:"選択","Clear text":"テキストをクリア",Close:"閉じる","Close modal":"モーダルを閉じる","Close navigation":"ナビゲーションを閉じる","Close sidebar":"サイドバーを閉じる","Confirm changes":"変更を承認",Custom:"カスタム","Edit item":"編集","Error getting related resources":"関連リソースの取得エラー","Error parsing svg":"svgの解析エラー","External documentation for {title}":"{title} のための添付文書",Favorite:"お気に入り",Flags:"国旗","Food & Drink":"食べ物と飲み物","Frequently used":"よく使うもの",Global:"全体","Go back to the list":"リストに戻る","Hide password":"パスワードを非表示","Message limit of {count} characters reached":"{count} 文字のメッセージ上限に達しています","More items …":"他のアイテム",Next:"次","No emoji found":"絵文字が見つかりません","No results":"なし",Objects:"物",Open:"開く",'Open link to "{resourceTitle}"':'"{resourceTitle}"のリンクを開く',"Open navigation":"ナビゲーションを開く","Password is secure":"パスワードは保護されています","Pause slideshow":"スライドショーを一時停止","People & Body":"様々な人と体の部位","Pick an emoji":"絵文字を選択","Please select a time zone:":"タイムゾーンを選んで下さい:",Previous:"前","Related resources":"関連リソース",Search:"検索","Search results":"検索結果","Select a tag":"タグを選択",Settings:"設定","Settings navigation":"ナビゲーション設定","Show password":"パスワードを表示","Smileys & Emotion":"感情表現","Start slideshow":"スライドショーを開始",Submit:"提出",Symbols:"記号","Travel & Places":"旅行と場所","Type to search time zone":"タイムゾーン検索のため入力してください","Unable to search the group":"グループを検索できません","Undo changes":"変更を取り消し",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'メッセージを記入、"@"でメンション、":"で絵文字の自動補完 ...'}},{locale:"lt_LT",translations:{"{tag} (invisible)":"{tag} (nematoma)","{tag} (restricted)":"{tag} (apribota)",Actions:"Veiksmai",Activities:"Veiklos","Animals & Nature":"Gyvūnai ir gamta",Choose:"Pasirinkti",Close:"Užverti",Custom:"Tinkinti","External documentation for {title}":"Išorinė {title} dokumentacija",Flags:"Vėliavos","Food & Drink":"Maistas ir gėrimai","Frequently used":"Dažniausiai naudoti","Message limit of {count} characters reached":"Pasiekta {count} simbolių žinutės riba",Next:"Kitas","No emoji found":"Nerasta jaustukų","No results":"Nėra rezultatų",Objects:"Objektai","Pause slideshow":"Pristabdyti skaidrių rodymą","People & Body":"Žmonės ir kūnas","Pick an emoji":"Pasirinkti jaustuką",Previous:"Ankstesnis",Search:"Ieškoti","Search results":"Paieškos rezultatai","Select a tag":"Pasirinkti žymę",Settings:"Nustatymai","Settings navigation":"Naršymas nustatymuose","Smileys & Emotion":"Šypsenos ir emocijos","Start slideshow":"Pradėti skaidrių rodymą",Submit:"Pateikti",Symbols:"Simboliai","Travel & Places":"Kelionės ir vietos","Unable to search the group":"Nepavyko atlikti paiešką grupėje","Write message, @ to mention someone …":"Rašykite žinutę, naudokite @ norėdami kažką paminėti…"}},{locale:"lv",translations:{"{tag} (invisible)":"{tag} (neredzams)","{tag} (restricted)":"{tag} (ierobežots)",Choose:"Izvēlēties",Close:"Aizvērt",Next:"Nākamais","No results":"Nav rezultātu","Pause slideshow":"Pauzēt slaidrādi",Previous:"Iepriekšējais","Select a tag":"Izvēlēties birku",Settings:"Iestatījumi","Start slideshow":"Sākt slaidrādi"}},{locale:"mk",translations:{"{tag} (invisible)":"{tag} (невидливо)","{tag} (restricted)":"{tag} (ограничено)",Actions:"Акции",Activities:"Активности","Animals & Nature":"Животни & Природа","Avatar of {displayName}":"Аватар на {displayName}","Avatar of {displayName}, {status}":"Аватар на {displayName}, {status}","Cancel changes":"Откажи ги промените","Change title":"Промени наслов",Choose:"Избери",Close:"Затвори","Close modal":"Затвори модал","Close navigation":"Затвори навигација","Confirm changes":"Потврди ги промените",Custom:"Прилагодени","Edit item":"Уреди","External documentation for {title}":"Надворешна документација за {title}",Favorite:"Фаворити",Flags:"Знамиња","Food & Drink":"Храна & Пијалоци","Frequently used":"Најчесто користени",Global:"Глобално","Go back to the list":"Врати се на листата",items:"ставки","Message limit of {count} characters reached":"Ограничувањето на должината на пораката од {count} карактери е надминато","More {dashboardItemType} …":"Повеќе {dashboardItemType} …",Next:"Следно","No emoji found":"Не се пронајдени емотикони","No results":"Нема резултати",Objects:"Објекти",Open:"Отвори","Open navigation":"Отвори навигација","Pause slideshow":"Пузирај слајдшоу","People & Body":"Луѓе & Тело","Pick an emoji":"Избери емотикон","Please select a time zone:":"Изберете временска зона:",Previous:"Предходно",Search:"Барај","Search results":"Резултати од барувањето","Select a tag":"Избери ознака",Settings:"Параметри","Settings navigation":"Параметри за навигација","Smileys & Emotion":"Смешковци & Емотикони","Start slideshow":"Стартувај слајдшоу",Submit:"Испрати",Symbols:"Симболи","Travel & Places":"Патувања & Места","Type to search time zone":"Напишете за да пребарате временска зона","Unable to search the group":"Неможе да се принајде групата","Undo changes":"Врати ги промените","Write message, @ to mention someone, : for emoji autocompletion …":"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ..."}},{locale:"my",translations:{"{tag} (invisible)":"{tag} (ကွယ်ဝှက်ထား)","{tag} (restricted)":"{tag} (ကန့်သတ်)",Actions:"လုပ်ဆောင်ချက်များ",Activities:"ပြုလုပ်ဆောင်တာများ","Animals & Nature":"တိရစ္ဆာန်များနှင့် သဘာဝ","Avatar of {displayName}":"{displayName} ၏ ကိုယ်ပွား","Cancel changes":"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်",Choose:"ရွေးချယ်ရန်",Close:"ပိတ်ရန်","Confirm changes":"ပြောင်းလဲမှုများ အတည်ပြုရန်",Custom:"အလိုကျချိန်ညှိမှု","External documentation for {title}":"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း",Flags:"အလံများ","Food & Drink":"အစားအသောက်","Frequently used":"မကြာခဏအသုံးပြုသော",Global:"ကမ္ဘာလုံးဆိုင်ရာ","Message limit of {count} characters reached":"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ",Next:"နောက်သို့ဆက်ရန်","No emoji found":"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ","No results":"ရလဒ်မရှိပါ",Objects:"အရာဝတ္ထုများ","Pause slideshow":"စလိုက်ရှိုး ခေတ္တရပ်ရန်","People & Body":"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်","Pick an emoji":"အီမိုဂျီရွေးရန်","Please select a time zone:":"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ",Previous:"ယခင်",Search:"ရှာဖွေရန်","Search results":"ရှာဖွေမှု ရလဒ်များ","Select a tag":"tag ရွေးချယ်ရန်",Settings:"ချိန်ညှိချက်များ","Settings navigation":"ချိန်ညှိချက်အညွှန်း","Smileys & Emotion":"စမိုင်လီများနှင့် အီမိုရှင်း","Start slideshow":"စလိုက်ရှိုးအား စတင်ရန်",Submit:"တင်သွင်းရန်",Symbols:"သင်္ကေတများ","Travel & Places":"ခရီးသွားလာခြင်းနှင့် နေရာများ","Type to search time zone":"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ","Unable to search the group":"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ","Write message, @ to mention someone …":"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်..."}},{locale:"nb_NO",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (beskyttet)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr og natur","Anything shared with the same group of people will show up here":"Alt som er delt med den samme gruppen vil vises her","Avatar of {displayName}":"Avataren til {displayName}","Avatar of {displayName}, {status}":"{displayName}'s avatar, {status}","Cancel changes":"Avbryt endringer","Change title":"Endre tittel",Choose:"Velg","Clear text":"Fjern tekst",Close:"Lukk","Close modal":"Lukk modal","Close navigation":"Lukk navigasjon","Close sidebar":"Lukk sidepanel","Confirm changes":"Bekreft endringer",Custom:"Tilpasset","Edit item":"Rediger","Error getting related resources":"Feil ved henting av relaterte ressurser","Error parsing svg":"Feil ved parsing av svg","External documentation for {title}":"Ekstern dokumentasjon for {title}",Favorite:"Favoritt",Flags:"Flagg","Food & Drink":"Mat og drikke","Frequently used":"Ofte brukt",Global:"Global","Go back to the list":"Gå tilbake til listen","Hide password":"Skjul passord","Message limit of {count} characters reached":"Karakter begrensing {count} nådd i melding","More items …":"Flere gjenstander...",Next:"Neste","No emoji found":"Fant ingen emoji","No results":"Ingen resultater",Objects:"Objekter",Open:"Åpne",'Open link to "{resourceTitle}"':'Åpne link til "{resourceTitle}"',"Open navigation":"Åpne navigasjon","Password is secure":"Passordet er sikkert","Pause slideshow":"Pause lysbildefremvisning","People & Body":"Mennesker og kropp","Pick an emoji":"Velg en emoji","Please select a time zone:":"Vennligst velg tidssone",Previous:"Forrige","Related resources":"Relaterte ressurser",Search:"Søk","Search results":"Søkeresultater","Select a tag":"Velg en merkelapp",Settings:"Innstillinger","Settings navigation":"Navigasjonsinstillinger","Show password":"Vis passord","Smileys & Emotion":"Smilefjes og følelser","Start slideshow":"Start lysbildefremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Reise og steder","Type to search time zone":"Tast for å søke etter tidssone","Unable to search the group":"Kunne ikke søke i gruppen","Undo changes":"Tilbakestill endringer",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv melding, bruk "@" for å nevne noen, bruk ":" for autofullføring av emoji...'}},{locale:"nl",translations:{"{tag} (invisible)":"{tag} (onzichtbaar)","{tag} (restricted)":"{tag} (beperkt)",Actions:"Acties",Activities:"Activiteiten","Animals & Nature":"Dieren & Natuur","Avatar of {displayName}":"Avatar van {displayName}","Avatar of {displayName}, {status}":"Avatar van {displayName}, {status}","Cancel changes":"Wijzigingen annuleren",Choose:"Kies",Close:"Sluiten","Close navigation":"Navigatie sluiten","Confirm changes":"Wijzigingen bevestigen",Custom:"Aangepast","Edit item":"Item bewerken","External documentation for {title}":"Externe documentatie voor {title}",Flags:"Vlaggen","Food & Drink":"Eten & Drinken","Frequently used":"Vaak gebruikt",Global:"Globaal","Go back to the list":"Ga terug naar de lijst","Message limit of {count} characters reached":"Berichtlimiet van {count} karakters bereikt",Next:"Volgende","No emoji found":"Geen emoji gevonden","No results":"Geen resultaten",Objects:"Objecten","Open navigation":"Navigatie openen","Pause slideshow":"Pauzeer diavoorstelling","People & Body":"Mensen & Lichaam","Pick an emoji":"Kies een emoji","Please select a time zone:":"Selecteer een tijdzone:",Previous:"Vorige",Search:"Zoeken","Search results":"Zoekresultaten","Select a tag":"Selecteer een label",Settings:"Instellingen","Settings navigation":"Instellingen navigatie","Smileys & Emotion":"Smileys & Emotie","Start slideshow":"Start diavoorstelling",Submit:"Verwerken",Symbols:"Symbolen","Travel & Places":"Reizen & Plaatsen","Type to search time zone":"Type om de tijdzone te zoeken","Unable to search the group":"Kan niet in de groep zoeken","Undo changes":"Wijzigingen ongedaan maken","Write message, @ to mention someone, : for emoji autocompletion …":"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ..."}},{locale:"oc",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (limit)",Actions:"Accions",Choose:"Causir",Close:"Tampar",Next:"Seguent","No results":"Cap de resultat","Pause slideshow":"Metre en pausa lo diaporama",Previous:"Precedent","Select a tag":"Seleccionar una etiqueta",Settings:"Paramètres","Start slideshow":"Lançar lo diaporama"}},{locale:"pl",translations:{"{tag} (invisible)":"{tag} (niewidoczna)","{tag} (restricted)":"{tag} (ograniczona)",Actions:"Działania",Activities:"Aktywność","Animals & Nature":"Zwierzęta i natura","Anything shared with the same group of people will show up here":"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób","Avatar of {displayName}":"Awatar {displayName}","Avatar of {displayName}, {status}":"Awatar {displayName}, {status}","Cancel changes":"Anuluj zmiany","Change title":"Zmień tytuł",Choose:"Wybierz","Clear text":"Wyczyść tekst",Close:"Zamknij","Close modal":"Zamknij modal","Close navigation":"Zamknij nawigację","Close sidebar":"Zamknij pasek boczny","Confirm changes":"Potwierdź zmiany",Custom:"Zwyczajne","Edit item":"Edytuj element","Error getting related resources":"Błąd podczas pobierania powiązanych zasobów","Error parsing svg":"Błąd podczas analizowania svg","External documentation for {title}":"Dokumentacja zewnętrzna dla {title}",Favorite:"Ulubiony",Flags:"Flagi","Food & Drink":"Jedzenie i picie","Frequently used":"Często używane",Global:"Globalnie","Go back to the list":"Powrót do listy","Hide password":"Ukryj hasło","Message limit of {count} characters reached":"Przekroczono limit wiadomości wynoszący {count} znaków","More items …":"Więcej pozycji…",Next:"Następny","No emoji found":"Nie znaleziono emoji","No results":"Brak wyników",Objects:"Obiekty",Open:"Otwórz",'Open link to "{resourceTitle}"':'Otwórz link do "{resourceTitle}"',"Open navigation":"Otwórz nawigację","Password is secure":"Hasło jest bezpieczne","Pause slideshow":"Wstrzymaj pokaz slajdów","People & Body":"Ludzie i ciało","Pick an emoji":"Wybierz emoji","Please select a time zone:":"Wybierz strefę czasową:",Previous:"Poprzedni","Related resources":"Powiązane zasoby",Search:"Szukaj","Search results":"Wyniki wyszukiwania","Select a tag":"Wybierz etykietę",Settings:"Ustawienia","Settings navigation":"Ustawienia nawigacji","Show password":"Pokaż hasło","Smileys & Emotion":"Buźki i emotikony","Start slideshow":"Rozpocznij pokaz slajdów",Submit:"Wyślij",Symbols:"Symbole","Travel & Places":"Podróże i miejsca","Type to search time zone":"Wpisz, aby wyszukać strefę czasową","Unable to search the group":"Nie można przeszukać grupy","Undo changes":"Cofnij zmiany",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Napisz wiadomość, "@" aby o kimś wspomnieć, ":" dla autouzupełniania emoji…'}},{locale:"pt_BR",translations:{"{tag} (invisible)":"{tag} (invisível)","{tag} (restricted)":"{tag} (restrito) ",Actions:"Ações",Activities:"Atividades","Animals & Nature":"Animais & Natureza","Anything shared with the same group of people will show up here":"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar alterações","Change title":"Alterar título",Choose:"Escolher","Clear text":"Limpar texto",Close:"Fechar","Close modal":"Fechar modal","Close navigation":"Fechar navegação","Close sidebar":"Fechar barra lateral","Confirm changes":"Confirmar alterações",Custom:"Personalizado","Edit item":"Editar item","Error getting related resources":"Erro ao obter recursos relacionados","Error parsing svg":"Erro ao analisar svg","External documentation for {title}":"Documentação externa para {title}",Favorite:"Favorito",Flags:"Bandeiras","Food & Drink":"Comida & Bebida","Frequently used":"Mais usados",Global:"Global","Go back to the list":"Volte para a lista","Hide password":"Ocultar a senha","Message limit of {count} characters reached":"Limite de mensagem de {count} caracteres atingido","More items …":"Mais itens …",Next:"Próximo","No emoji found":"Nenhum emoji encontrado","No results":"Sem resultados",Objects:"Objetos",Open:"Aberto",'Open link to "{resourceTitle}"':'Abrir link para "{resourceTitle}"',"Open navigation":"Abrir navegação","Password is secure":"A senha é segura","Pause slideshow":"Pausar apresentação de slides","People & Body":"Pessoas & Corpo","Pick an emoji":"Escolha um emoji","Please select a time zone:":"Selecione um fuso horário: ",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Pesquisar","Search results":"Resultados da pesquisa","Select a tag":"Selecionar uma tag",Settings:"Configurações","Settings navigation":"Navegação de configurações","Show password":"Mostrar senha","Smileys & Emotion":"Smiles & Emoções","Start slideshow":"Iniciar apresentação de slides",Submit:"Enviar",Symbols:"Símbolo","Travel & Places":"Viagem & Lugares","Type to search time zone":"Digite para pesquisar o fuso horário ","Unable to search the group":"Não foi possível pesquisar o grupo","Undo changes":"Desfazer modificações",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escreva mensagens, use "@" para mencionar algum, use ":" for autocompletar emoji …'}},{locale:"pt_PT",translations:{"{tag} (invisible)":"{tag} (invisivel)","{tag} (restricted)":"{tag} (restrito)",Actions:"Ações",Choose:"Escolher",Close:"Fechar",Next:"Seguinte","No results":"Sem resultados","Pause slideshow":"Pausar diaporama",Previous:"Anterior","Select a tag":"Selecionar uma etiqueta",Settings:"Definições","Start slideshow":"Iniciar diaporama","Unable to search the group":"Não é possível pesquisar o grupo"}},{locale:"ro",translations:{"{tag} (invisible)":"{tag} (invizibil)","{tag} (restricted)":"{tag} (restricționat)",Actions:"Acțiuni",Activities:"Activități","Animals & Nature":"Animale și natură","Anything shared with the same group of people will show up here":"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici","Avatar of {displayName}":"Avatarul lui {displayName}","Avatar of {displayName}, {status}":"Avatarul lui {displayName}, {status}","Cancel changes":"Anulează modificările","Change title":"Modificați titlul",Choose:"Alegeți","Clear text":"Șterge textul",Close:"Închideți","Close modal":"Închideți modulul","Close navigation":"Închideți navigarea","Close sidebar":"Închide bara laterală","Confirm changes":"Confirmați modificările",Custom:"Personalizat","Edit item":"Editați elementul","Error getting related resources":" Eroare la returnarea resurselor legate","Error parsing svg":"Eroare de analizare a svg","External documentation for {title}":"Documentație externă pentru {title}",Favorite:"Favorit",Flags:"Marcaje","Food & Drink":"Alimente și băuturi","Frequently used":"Utilizate frecvent",Global:"Global","Go back to the list":"Întoarceți-vă la listă","Hide password":"Ascunde parola","Message limit of {count} characters reached":"Limita mesajului de {count} caractere a fost atinsă","More items …":"Mai multe articole ...",Next:"Următorul","No emoji found":"Nu s-a găsit niciun emoji","No results":"Nu există rezultate",Objects:"Obiecte",Open:"Deschideți",'Open link to "{resourceTitle}"':'Deschide legătura la "{resourceTitle}"',"Open navigation":"Deschideți navigația","Password is secure":"Parola este sigură","Pause slideshow":"Pauză prezentare de diapozitive","People & Body":"Oameni și corp","Pick an emoji":"Alege un emoji","Please select a time zone:":"Vă rugăm să selectați un fus orar:",Previous:"Anterior","Related resources":"Resurse legate",Search:"Căutare","Search results":"Rezultatele căutării","Select a tag":"Selectați o etichetă",Settings:"Setări","Settings navigation":"Navigare setări","Show password":"Arată parola","Smileys & Emotion":"Zâmbete și emoții","Start slideshow":"Începeți prezentarea de diapozitive",Submit:"Trimiteți",Symbols:"Simboluri","Travel & Places":"Călătorii și locuri","Type to search time zone":"Tastați pentru a căuta fusul orar","Unable to search the group":"Imposibilitatea de a căuta în grup","Undo changes":"Anularea modificărilor",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrie un mesaj, folosește "@" pentru a menționa pe cineva, folosește ":" pentru autocompletarea cu emoji ...'}},{locale:"ru",translations:{"{tag} (invisible)":"{tag} (невидимое)","{tag} (restricted)":"{tag} (ограниченное)",Actions:"Действия ",Activities:"События","Animals & Nature":"Животные и природа ","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Фотография {displayName}, {status}","Cancel changes":"Отменить изменения",Choose:"Выберите",Close:"Закрыть","Close modal":"Закрыть модальное окно","Close navigation":"Закрыть навигацию","Confirm changes":"Подтвердить изменения",Custom:"Пользовательское","Edit item":"Изменить элемент","External documentation for {title}":"Внешняя документация для {title}",Flags:"Флаги","Food & Drink":"Еда, напиток","Frequently used":"Часто используемый",Global:"Глобальный","Go back to the list":"Вернуться к списку",items:"элементов","Message limit of {count} characters reached":"Достигнуто ограничение на количество символов в {count}","More {dashboardItemType} …":"Больше {dashboardItemType} …",Next:"Следующее","No emoji found":"Эмодзи не найдено","No results":"Результаты отсуствуют",Objects:"Объекты",Open:"Открыть","Open navigation":"Открыть навигацию","Pause slideshow":"Приостановить показ слйдов","People & Body":"Люди и тело","Pick an emoji":"Выберите эмодзи","Please select a time zone:":"Пожалуйста, выберите часовой пояс:",Previous:"Предыдущее",Search:"Поиск","Search results":"Результаты поиска","Select a tag":"Выберите метку",Settings:"Параметры","Settings navigation":"Навигация по настройкам","Smileys & Emotion":"Смайлики и эмоции","Start slideshow":"Начать показ слайдов",Submit:"Утвердить",Symbols:"Символы","Travel & Places":"Путешествия и места","Type to search time zone":"Введите для поиска часового пояса","Unable to search the group":"Невозможно найти группу","Undo changes":"Отменить изменения","Write message, @ to mention someone, : for emoji autocompletion …":"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …"}},{locale:"sk_SK",translations:{"{tag} (invisible)":"{tag} (neviditeľný)","{tag} (restricted)":"{tag} (obmedzený)",Actions:"Akcie",Activities:"Aktivity","Animals & Nature":"Zvieratá a príroda","Avatar of {displayName}":"Avatar {displayName}","Avatar of {displayName}, {status}":"Avatar {displayName}, {status}","Cancel changes":"Zrušiť zmeny",Choose:"Vybrať",Close:"Zatvoriť","Close navigation":"Zavrieť navigáciu","Confirm changes":"Potvrdiť zmeny",Custom:"Zvyk","Edit item":"Upraviť položku","External documentation for {title}":"Externá dokumentácia pre {title}",Flags:"Vlajky","Food & Drink":"Jedlo a nápoje","Frequently used":"Často používané",Global:"Globálne","Go back to the list":"Naspäť na zoznam","Message limit of {count} characters reached":"Limit správy na {count} znakov dosiahnutý",Next:"Ďalší","No emoji found":"Nenašli sa žiadne emodži","No results":"Žiadne výsledky",Objects:"Objekty","Open navigation":"Otvoriť navigáciu","Pause slideshow":"Pozastaviť prezentáciu","People & Body":"Ľudia a telo","Pick an emoji":"Vyberte si emodži","Please select a time zone:":"Prosím vyberte časovú zónu:",Previous:"Predchádzajúci",Search:"Hľadať","Search results":"Výsledky vyhľadávania","Select a tag":"Vybrať štítok",Settings:"Nastavenia","Settings navigation":"Navigácia v nastaveniach","Smileys & Emotion":"Smajlíky a emócie","Start slideshow":"Začať prezentáciu",Submit:"Odoslať",Symbols:"Symboly","Travel & Places":"Cestovanie a miesta","Type to search time zone":"Začníte písať pre vyhľadávanie časovej zóny","Unable to search the group":"Skupinu sa nepodarilo nájsť","Undo changes":"Vrátiť zmeny","Write message, @ to mention someone, : for emoji autocompletion …":"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…"}},{locale:"sl",translations:{"{tag} (invisible)":"{tag} (nevidno)","{tag} (restricted)":"{tag} (omejeno)",Actions:"Dejanja",Activities:"Dejavnosti","Animals & Nature":"Živali in Narava","Avatar of {displayName}":"Podoba {displayName}","Avatar of {displayName}, {status}":"Prikazna slika {displayName}, {status}","Cancel changes":"Prekliči spremembe","Change title":"Spremeni naziv",Choose:"Izbor","Clear text":"Počisti besedilo",Close:"Zapri","Close modal":"Zapri pojavno okno","Close navigation":"Zapri krmarjenje","Close sidebar":"Zapri stransko vrstico","Confirm changes":"Potrdi spremembe",Custom:"Po meri","Edit item":"Uredi predmet","Error getting related resources":"Napaka pridobivanja povezanih virov","External documentation for {title}":"Zunanja dokumentacija za {title}",Favorite:"Priljubljeno",Flags:"Zastavice","Food & Drink":"Hrana in Pijača","Frequently used":"Pogostost uporabe",Global:"Splošno","Go back to the list":"Vrni se na seznam","Hide password":"Skrij geslo","Message limit of {count} characters reached":"Dosežena omejitev {count} znakov na sporočilo.","More items …":"Več predmetov ...",Next:"Naslednji","No emoji found":"Ni najdenih izraznih ikon","No results":"Ni zadetkov",Objects:"Predmeti",Open:"Odpri",'Open link to "{resourceTitle}"':"Odpri povezavo do »{resourceTitle}«","Open navigation":"Odpri krmarjenje","Password is secure":"Geslo je varno","Pause slideshow":"Ustavi predstavitev","People & Body":"Ljudje in Telo","Pick a date":"Izbor datuma","Pick a date and a time":"Izbor datuma in časa","Pick a month":"Izbor meseca","Pick a time":"Izbor časa","Pick a week":"Izbor tedna","Pick a year":"Izbor leta","Pick an emoji":"Izbor izrazne ikone","Please select a time zone:":"Izbor časovnega pasu:",Previous:"Predhodni","Related resources":"Povezani viri",Search:"Iskanje","Search results":"Zadetki iskanja","Select a tag":"Izbor oznake",Settings:"Nastavitve","Settings navigation":"Krmarjenje nastavitev","Show password":"Pokaži geslo","Smileys & Emotion":"Izrazne ikone","Start slideshow":"Začni predstavitev",Submit:"Pošlji",Symbols:"Simboli","Travel & Places":"Potovanja in Kraji","Type to search time zone":"Vpišite niz za iskanje časovnega pasu","Unable to search the group":"Ni mogoče iskati po skupini","Undo changes":"Razveljavi spremembe","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …"}},{locale:"sr",translations:{"{tag} (invisible)":"{tag} (nevidljivo)","{tag} (restricted)":"{tag} (ograničeno)",Actions:"Radnje",Activities:"Aktivnosti","Animals & Nature":"Životinje i Priroda","Avatar of {displayName}":"Avatar za {displayName}","Avatar of {displayName}, {status}":"Avatar za {displayName}, {status}","Cancel changes":"Otkaži izmene","Change title":"Izmeni naziv",Choose:"Изаберите",Close:"Затвори","Close modal":"Zatvori modal","Close navigation":"Zatvori navigaciju","Close sidebar":"Zatvori bočnu traku","Confirm changes":"Potvrdite promene",Custom:"Po meri","Edit item":"Uredi stavku","External documentation for {title}":"Eksterna dokumentacija za {title}",Favorite:"Omiljeni",Flags:"Zastave","Food & Drink":"Hrana i Piće","Frequently used":"Često korišćeno",Global:"Globalno","Go back to the list":"Natrag na listu",items:"stavke","Message limit of {count} characters reached":"Dostignuto je ograničenje za poruke od {count} znakova","More {dashboardItemType} …":"Više {dashboardItemType} …",Next:"Следеће","No emoji found":"Nije pronađen nijedan emodži","No results":"Нема резултата",Objects:"Objekti",Open:"Otvori","Open navigation":"Otvori navigaciju","Pause slideshow":"Паузирај слајд шоу","People & Body":"Ljudi i Telo","Pick an emoji":"Izaberi emodži","Please select a time zone:":"Molimo izaberite vremensku zonu:",Previous:"Претходно",Search:"Pretraži","Search results":"Rezultati pretrage","Select a tag":"Изаберите ознаку",Settings:"Поставке","Settings navigation":"Navigacija u podešavanjima","Smileys & Emotion":"Smajli i Emocije","Start slideshow":"Покрени слајд шоу",Submit:"Prihvati",Symbols:"Simboli","Travel & Places":"Putovanja i Mesta","Type to search time zone":"Ukucaj da pretražiš vremenske zone","Unable to search the group":"Nije moguće pretražiti grupu","Undo changes":"Poništi promene","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…"}},{locale:"sv",translations:{"{tag} (invisible)":"{tag} (osynlig)","{tag} (restricted)":"{tag} (begränsad)",Actions:"Åtgärder",Activities:"Aktiviteter","Animals & Nature":"Djur & Natur","Anything shared with the same group of people will show up here":"Något som delats med samma grupp av personer kommer att visas här","Avatar of {displayName}":"{displayName}s avatar","Avatar of {displayName}, {status}":"{displayName}s avatar, {status}","Cancel changes":"Avbryt ändringar","Change title":"Ändra titel",Choose:"Välj","Clear text":"Ta bort text",Close:"Stäng","Close modal":"Stäng modal","Close navigation":"Stäng navigering","Close sidebar":"Stäng sidopanel","Confirm changes":"Bekräfta ändringar",Custom:"Anpassad","Edit item":"Ändra","Error getting related resources":"Problem att hämta relaterade resurser","Error parsing svg":"Fel vid inläsning av svg","External documentation for {title}":"Extern dokumentation för {title}",Favorite:"Favorit",Flags:"Flaggor","Food & Drink":"Mat & Dryck","Frequently used":"Används ofta",Global:"Global","Go back to the list":"Gå tillbaka till listan","Hide password":"Göm lössenordet","Message limit of {count} characters reached":"Meddelandegräns {count} tecken används","More items …":"Fler objekt",Next:"Nästa","No emoji found":"Hittade inga emojis","No results":"Inga resultat",Objects:"Objekt",Open:"Öppna",'Open link to "{resourceTitle}"':'Öppna länk till "{resourceTitle}"',"Open navigation":"Öppna navigering","Password is secure":"Lössenordet är säkert","Pause slideshow":"Pausa bildspelet","People & Body":"Kropp & Själ","Pick an emoji":"Välj en emoji","Please select a time zone:":"Välj tidszon:",Previous:"Föregående","Related resources":"Relaterade resurser",Search:"Sök","Search results":"Sökresultat","Select a tag":"Välj en tag",Settings:"Inställningar","Settings navigation":"Inställningsmeny","Show password":"Visa lössenordet","Smileys & Emotion":"Selfies & Känslor","Start slideshow":"Starta bildspelet",Submit:"Skicka",Symbols:"Symboler","Travel & Places":"Resor & Sevärdigheter","Type to search time zone":"Skriv för att välja tidszon","Unable to search the group":"Kunde inte söka i gruppen","Undo changes":"Ångra ändringar",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv meddelande, använd "@" för att nämna någon, använd ":" för automatiska emojiförslag ...'}},{locale:"tr",translations:{"{tag} (invisible)":"{tag} (görünmez)","{tag} (restricted)":"{tag} (kısıtlı)",Actions:"İşlemler",Activities:"Etkinlikler","Animals & Nature":"Hayvanlar ve Doğa","Anything shared with the same group of people will show up here":"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir","Avatar of {displayName}":"{displayName} avatarı","Avatar of {displayName}, {status}":"{displayName}, {status} avatarı","Cancel changes":"Değişiklikleri iptal et","Change title":"Başlığı değiştir",Choose:"Seçin","Clear text":"Metni temizle",Close:"Kapat","Close modal":"Üste açılan pencereyi kapat","Close navigation":"Gezinmeyi kapat","Close sidebar":"Yan çubuğu kapat","Confirm changes":"Değişiklikleri onayla",Custom:"Özel","Edit item":"Ögeyi düzenle","Error getting related resources":"İlgili kaynaklar alınırken sorun çıktı","Error parsing svg":"svg işlenirken sorun çıktı","External documentation for {title}":"{title} için dış belgeler",Favorite:"Sık kullanılanlara ekle",Flags:"Bayraklar","Food & Drink":"Yeme ve İçme","Frequently used":"Sık kullanılanlar",Global:"Evrensel","Go back to the list":"Listeye dön","Hide password":"Parolayı gizle","Message limit of {count} characters reached":"{count} karakter ileti sınırına ulaşıldı","More items …":"Diğer ögeler…",Next:"Sonraki","No emoji found":"Herhangi bir emoji bulunamadı","No results":"Herhangi bir sonuç bulunamadı",Objects:"Nesneler",Open:"Aç",'Open link to "{resourceTitle}"':'"{resourceTitle}" bağlantısını aç',"Open navigation":"Gezinmeyi aç","Password is secure":"Parola güvenli","Pause slideshow":"Slayt sunumunu duraklat","People & Body":"İnsanlar ve Beden","Pick an emoji":"Bir emoji seçin","Please select a time zone:":"Lütfen bir saat dilimi seçin:",Previous:"Önceki","Related resources":"İlgili kaynaklar",Search:"Arama","Search results":"Arama sonuçları","Select a tag":"Bir etiket seçin",Settings:"Ayarlar","Settings navigation":"Gezinme ayarları","Show password":"Parolayı görüntüle","Smileys & Emotion":"İfadeler ve Duygular","Start slideshow":"Slayt sunumunu başlat",Submit:"Gönder",Symbols:"Simgeler","Travel & Places":"Gezi ve Yerler","Type to search time zone":"Saat dilimi aramak için yazmaya başlayın","Unable to search the group":"Grupta arama yapılamadı","Undo changes":"Değişiklikleri geri al",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için ":" kullanın…'}},{locale:"uk",translations:{"{tag} (invisible)":"{tag} (невидимий)","{tag} (restricted)":"{tag} (обмежений)",Actions:"Дії",Activities:"Діяльність","Animals & Nature":"Тварини та природа","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Аватар {displayName}, {status}","Cancel changes":"Скасувати зміни","Change title":"Змінити назву",Choose:"ВиберітьВиберіть","Clear text":"Очистити текст",Close:"Закрити","Close modal":"Закрити модаль","Close navigation":"Закрити навігацію","Close sidebar":"Закрити бічну панель","Confirm changes":"Підтвердити зміни",Custom:"Власне","Edit item":"Редагувати елемент","External documentation for {title}":"Зовнішня документація для {title}",Favorite:"Улюблений",Flags:"Прапори","Food & Drink":"Їжа та напої","Frequently used":"Найчастіші",Global:"Глобальний","Go back to the list":"Повернутися до списку","Hide password":"Приховати пароль",items:"елементи","Message limit of {count} characters reached":"Вичерпано ліміт у {count} символів для повідомлення","More {dashboardItemType} …":"Більше {dashboardItemType}…",Next:"Вперед","No emoji found":"Емоційки відсутні","No results":"Відсутні результати",Objects:"Об'єкти",Open:"Відкрити","Open navigation":"Відкрити навігацію","Password is secure":"Пароль безпечний","Pause slideshow":"Пауза у показі слайдів","People & Body":"Люди та жести","Pick an emoji":"Виберіть емоційку","Please select a time zone:":"Виберіть часовий пояс:",Previous:"Назад",Search:"Пошук","Search results":"Результати пошуку","Select a tag":"Виберіть позначку",Settings:"Налаштування","Settings navigation":"Навігація у налаштуваннях","Show password":"Показати пароль","Smileys & Emotion":"Смайли та емоції","Start slideshow":"Почати показ слайдів",Submit:"Надіслати",Symbols:"Символи","Travel & Places":"Поїздки та місця","Type to search time zone":"Введіть для пошуку часовий пояс","Unable to search the group":"Неможливо шукати в групі","Undo changes":"Скасувати зміни","Write message, @ to mention someone, : for emoji autocompletion …":"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…"}},{locale:"zh_CN",translations:{"{tag} (invisible)":"{tag} (不可见)","{tag} (restricted)":"{tag} (受限)",Actions:"行为",Activities:"活动","Animals & Nature":"动物 & 自然","Anything shared with the same group of people will show up here":"与同组用户分享的所有内容都会显示于此","Avatar of {displayName}":"{displayName}的头像","Avatar of {displayName}, {status}":"{displayName}的头像,{status}","Cancel changes":"取消更改","Change title":"更改标题",Choose:"选择","Clear text":"清除文本",Close:"关闭","Close modal":"关闭窗口","Close navigation":"关闭导航","Close sidebar":"关闭侧边栏","Confirm changes":"确认更改",Custom:"自定义","Edit item":"编辑项目","Error getting related resources":"获取相关资源时出错","Error parsing svg":"解析 svg 时出错","External documentation for {title}":"{title}的外部文档",Favorite:"喜爱",Flags:"旗帜","Food & Drink":"食物 & 饮品","Frequently used":"经常使用",Global:"全局","Go back to the list":"返回至列表","Hide password":"隐藏密码","Message limit of {count} characters reached":"已达到 {count} 个字符的消息限制","More items …":"更多项目…",Next:"下一个","No emoji found":"表情未找到","No results":"无结果",Objects:"物体",Open:"打开",'Open link to "{resourceTitle}"':'打开"{resourceTitle}"的连接',"Open navigation":"开启导航","Password is secure":"密码安全","Pause slideshow":"暂停幻灯片","People & Body":"人 & 身体","Pick an emoji":"选择一个表情","Please select a time zone:":"请选择一个时区:",Previous:"上一个","Related resources":"相关资源",Search:"搜索","Search results":"搜索结果","Select a tag":"选择一个标签",Settings:"设置","Settings navigation":"设置向导","Show password":"显示密码","Smileys & Emotion":"笑脸 & 情感","Start slideshow":"开始幻灯片",Submit:"提交",Symbols:"符号","Travel & Places":"旅游 & 地点","Type to search time zone":"打字以搜索时区","Unable to search the group":"无法搜索分组","Undo changes":"撤销更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'写信息,使用"@"来提及某人,使用":"进行表情符号自动完成 ...'}},{locale:"zh_HK",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然","Anything shared with the same group of people will show up here":"與同一組人共享的任何內容都會顯示在此處","Avatar of {displayName}":"{displayName} 的頭像","Avatar of {displayName}, {status}":"{displayName} 的頭像,{status}","Cancel changes":"取消更改","Change title":"更改標題",Choose:"選擇","Clear text":"清除文本",Close:"關閉","Close modal":"關閉模態","Close navigation":"關閉導航","Close sidebar":"關閉側邊欄","Confirm changes":"確認更改",Custom:"自定義","Edit item":"編輯項目","Error getting related resources":"獲取相關資源出錯","Error parsing svg":"解析 svg 時出錯","External documentation for {title}":"{title} 的外部文檔",Favorite:"喜愛",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"經常使用",Global:"全球的","Go back to the list":"返回清單","Hide password":"隱藏密碼","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制","More items …":"更多項目 …",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件",Open:"打開",'Open link to "{resourceTitle}"':"打開指向 “{resourceTitle}” 的鏈結","Open navigation":"開啟導航","Password is secure":"密碼是安全的","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號","Please select a time zone:":"請選擇時區:",Previous:"上一個","Related resources":"相關資源",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Show password":"顯示密碼","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Submit:"提交",Symbols:"標誌","Travel & Places":"旅遊與景點","Type to search time zone":"鍵入以搜索時區","Unable to search the group":"無法搜尋群組","Undo changes":"取消更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'寫訊息,使用 "@" 來指代某人,使用 ":" 用於表情符號自動填充 ...'}},{locale:"zh_TW",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然",Choose:"選擇",Close:"關閉",Custom:"自定義",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"最近使用","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號",Previous:"上一個",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Symbols:"標誌","Travel & Places":"旅遊與景點","Unable to search the group":"無法搜尋群組","Write message, @ to mention someone …":"輸入訊息時可使用 @ 來標示某人..."}}].forEach((function(t){var e={};for(var a in t.translations)t.translations[a].pluralId?e[a]={msgid:a,msgid_plural:t.translations[a].pluralId,msgstr:t.translations[a].msgstr}:e[a]={msgid:a,msgstr:[t.translations[a]]};i.addTranslation(t.locale,{translations:{"":e}})}));var o=i.build(),r=(o.ngettext.bind(o),o.gettext.bind(o))},9150:()=>{"use strict"},3351:(t,e,a)=>{"use strict";a.d(e,{iQ:()=>m});a(9150),a(8136),a(334),a(3132);var n=a(3607),i=a(768),o=a.n(i);const r=__webpack_require__(/*! @nextcloud/capabilities */ "./node_modules/@nextcloud/capabilities/dist/index.js");var s=a(4262),l=a(5108);function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function u(){u=function(){return t};var t={},e=Object.prototype,a=e.hasOwnProperty,n=Object.defineProperty||function(t,e,a){t[e]=a.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",r=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(t,e,a){return Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,a){return t[e]=a}}function d(t,e,a,i){var o=e&&e.prototype instanceof h?e:h,r=Object.create(o.prototype),s=new N(i||[]);return n(r,"_invoke",{value:w(t,a,s)}),r}function m(t,e,a){try{return{type:"normal",arg:t.call(e,a)}}catch(t){return{type:"throw",arg:t}}}t.wrap=d;var p={};function h(){}function g(){}function v(){}var f={};l(f,o,(function(){return this}));var A=Object.getPrototypeOf,b=A&&A(A(z([])));b&&b!==e&&a.call(b,o)&&(f=b);var y=v.prototype=h.prototype=Object.create(f);function C(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function i(n,o,r,s){var l=m(t[n],t,o);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==c(d)&&a.call(d,"__await")?e.resolve(d.__await).then((function(t){i("next",t,r,s)}),(function(t){i("throw",t,r,s)})):e.resolve(d).then((function(t){u.value=t,r(u)}),(function(t){return i("throw",t,r,s)}))}s(l.arg)}var o;n(this,"_invoke",{value:function(t,a){function n(){return new e((function(e,n){i(t,a,e,n)}))}return o=o?o.then(n,n):n()}})}function w(t,e,a){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return P()}for(a.method=i,a.arg=o;;){var r=a.delegate;if(r){var s=S(r,a);if(s){if(s===p)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if("suspendedStart"===n)throw n="completed",a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);n="executing";var l=m(t,e,a);if("normal"===l.type){if(n=a.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:a.done}}"throw"===l.type&&(n="completed",a.method="throw",a.arg=l.arg)}}}function S(t,e){var a=e.method,n=t.iterator[a];if(void 0===n)return e.delegate=null,"throw"===a&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==a&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+a+"' method")),p;var i=m(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,p;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function z(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var o=this.tryEntries[i],r=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev=0;--e){var a=this.tryEntries[e];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),j(a),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var a=this.tryEntries[e];if(a.tryLoc===t){var n=a.completion;if("throw"===n.type){var i=n.arg;j(a)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,a){return this.delegate={iterator:z(t),resultName:e,nextLoc:a},"next"===this.method&&(this.arg=void 0),p}},t}function d(t,e,a,n,i,o,r){try{var s=t[o](r),l=s.value}catch(t){return void a(t)}s.done?e(l):Promise.resolve(l).then(n,i)}const m={data:function(){return{hasStatus:!1,userStatus:{status:null,message:null,icon:null}}},methods:{fetchUserStatus:function(t){var e,a=this;return(e=u().mark((function e(){var i,c,d,m,p,h,g,v,f;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:if(i=(0,r.getCapabilities)(),Object.prototype.hasOwnProperty.call(i,"user_status")&&i.user_status.enabled){e.next=5;break}return e.abrupt("return");case 5:if((0,n.getCurrentUser)()){e.next=7;break}return e.abrupt("return");case 7:return e.prev=7,e.next=10,o().get((0,s.generateOcsUrl)("apps/user_status/api/v1/statuses/{userId}",{userId:t}));case 10:c=e.sent,d=c.data,m=d.ocs.data,p=m.status,h=m.message,g=m.icon,a.userStatus.status=p,a.userStatus.message=h||"",a.userStatus.icon=g||"",a.hasStatus=!0,e.next=24;break;case 19:if(e.prev=19,e.t0=e.catch(7),404!==e.t0.response.status||0!==(null===(v=e.t0.response.data.ocs)||void 0===v||null===(f=v.data)||void 0===f?void 0:f.length)){e.next=23;break}return e.abrupt("return");case 23:l.error(e.t0);case 24:case"end":return e.stop()}}),e,null,[[7,19]])})),function(){var t=this,a=arguments;return new Promise((function(n,i){var o=e.apply(t,a);function r(t){d(o,n,i,r,s,"next",t)}function s(t){d(o,n,i,r,s,"throw",t)}r(void 0)}))})()}}}},8136:()=>{"use strict"},334:(t,e,a)=>{"use strict";var n=a(2734);new(a.n(n)())({data:function(){return{isMobile:!1}},watch:{isMobile:function(t){this.$emit("changed",t)}},created:function(){window.addEventListener("resize",this.handleWindowResize),this.handleWindowResize()},beforeDestroy:function(){window.removeEventListener("resize",this.handleWindowResize)},methods:{handleWindowResize:function(){this.isMobile=document.documentElement.clientWidth<1024}}})},3132:(t,e,a)=>{"use strict";a(2774),a(1390);__webpack_require__(/*! escape-html */ "./node_modules/escape-html/index.js");__webpack_require__(/*! striptags */ "./node_modules/striptags/src/striptags.js");a(2734);var n="(?:^|\\s)",i="(?:[^a-z]|$)";new RegExp("".concat(n,"(@[a-zA-Z0-9_.@\\-']+)(").concat(i,")"),"gi"),new RegExp("".concat(n,"(@"[a-zA-Z0-9 _.@\\-']+")(").concat(i,")"),"gi")},6609:(t,e,a)=>{"use strict";function n(t,e,a){this.r=t,this.g=e,this.b=a}function i(t,e,a){var i=[];i.push(e);for(var o=function(t,e){var a=new Array(3);return a[0]=(e[1].r-e[0].r)/t,a[1]=(e[1].g-e[0].g)/t,a[2]=(e[1].b-e[0].b)/t,a}(t,[e,a]),r=1;ro});const o=function(t){t||(t=6);var e=new n(182,70,157),a=new n(221,203,85),o=new n(0,130,201),r=i(t,e,a),s=i(t,a,o),l=i(t,o,e);return r.concat(s).concat(l)}},1390:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});const n=__webpack_require__(/*! linkify-string */ "./node_modules/linkify-string/dist/linkify-string.es.js");var i=a.n(n);const o=function(t){return i()(t,{defaultProtocol:"https",target:"_blank",className:"external linkified",attributes:{rel:"nofollow noopener noreferrer"}})}},1206:(t,e,a)=>{"use strict";a.d(e,{L:()=>n});a(4505);var n=function(){return Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]}),window._nc_focus_trap}},5108:(t,e,a)=>{var n=a(6464),i=a(9084);function o(){return(new Date).getTime()}var r,s=Array.prototype.slice,l={};r=void 0!==a.g&&a.g.console?a.g.console:"undefined"!=typeof window&&window.console?window.console:{};for(var c=[[function(){},"log"],[function(){r.log.apply(r,arguments)},"info"],[function(){r.log.apply(r,arguments)},"warn"],[function(){r.warn.apply(r,arguments)},"error"],[function(t){l[t]=o()},"time"],[function(t){var e=l[t];if(!e)throw new Error("No such label: "+t);delete l[t];var a=o()-e;r.log(t+": "+a+"ms")},"timeEnd"],[function(){var t=new Error;t.name="Trace",t.message=n.format.apply(null,arguments),r.error(t.stack)},"trace"],[function(t){r.log(n.inspect(t)+"\n")},"dir"],[function(t){if(!t){var e=s.call(arguments,1);i.ok(!1,n.format.apply(null,e))}},"assert"]],u=0;u{"use strict";a.d(e,{Z:()=>v});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o),s=a(1667),l=a.n(s),c=new URL(a(3423),a.b),u=new URL(a(2605),a.b),d=new URL(a(7127),a.b),m=r()(i()),p=l()(c),h=l()(u),g=l()(d);m.push([t.id,".material-design-icon[data-v-69abe502]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.avatardiv[data-v-69abe502]{position:relative;display:inline-block;width:var(--size);height:var(--size)}.avatardiv--unknown[data-v-69abe502]{position:relative;background-color:var(--color-main-background)}.avatardiv[data-v-69abe502]:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:0 0 5px rgba(0,0,0,.05) inset}.avatardiv--with-menu[data-v-69abe502]{cursor:pointer}.avatardiv--with-menu[data-v-69abe502] .v-popper{position:absolute;top:0;left:0}.avatardiv--with-menu .icon-more[data-v-69abe502]{cursor:pointer;opacity:0}.avatardiv--with-menu:focus .icon-more[data-v-69abe502],.avatardiv--with-menu:hover .icon-more[data-v-69abe502]{opacity:1}.avatardiv--with-menu:focus img[data-v-69abe502],.avatardiv--with-menu:hover img[data-v-69abe502]{opacity:.3}.avatardiv--with-menu .icon-more[data-v-69abe502],.avatardiv--with-menu img[data-v-69abe502]{transition:opacity var(--animation-quick)}.avatardiv .avatardiv__initials-wrapper[data-v-69abe502]{height:var(--size);width:var(--size);background-color:var(--color-main-background);border-radius:50%}.avatardiv .avatardiv__initials-wrapper .unknown[data-v-69abe502]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;font-weight:normal}.avatardiv img[data-v-69abe502]{width:100%;height:100%;object-fit:cover}.avatardiv .material-design-icon[data-v-69abe502]{width:var(--size);height:var(--size)}.avatardiv .avatardiv__user-status[data-v-69abe502]{position:absolute;right:-4px;bottom:-4px;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-69abe502]{border-color:var(--color-background-hover);background-color:var(--color-background-hover)}.acli.active .avatardiv .avatardiv__user-status[data-v-69abe502]{border-color:var(--color-primary-light);background-color:var(--color-primary-light)}.avatardiv .avatardiv__user-status--online[data-v-69abe502]{background-image:url("+p+")}.avatardiv .avatardiv__user-status--dnd[data-v-69abe502]{background-image:url("+h+");background-color:#fff}.avatardiv .avatardiv__user-status--away[data-v-69abe502]{background-image:url("+g+")}.avatardiv .avatardiv__user-status--icon[data-v-69abe502]{border:none;background-color:rgba(0,0,0,0)}.avatardiv .popovermenu-wrapper[data-v-69abe502]{position:relative;display:inline-block}.avatar-class-icon[data-v-69abe502]{border-radius:50%;background-color:var(--color-background-darker);height:100%}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcAvatar/NcAvatar.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,4BACC,iBAAA,CACA,oBAAA,CACA,iBAAA,CACA,kBAAA,CAEA,qCACC,iBAAA,CACA,6CAAA,CAGD,qDAEC,wDAAA,CACA,wCAAA,CAGD,uCACC,cAAA,CACA,iDACC,iBAAA,CACA,KAAA,CACA,MAAA,CAED,kDACC,cAAA,CACA,SAAA,CAIA,gHACC,SAAA,CAED,kGACC,UAAA,CAGF,6FAEC,yCAAA,CAIF,yDACC,kBAAA,CACA,iBAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kEACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,aAAA,CACA,UAAA,CACA,iBAAA,CACA,kBAAA,CAIF,gCAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CAGD,kDACC,iBAAA,CACA,kBAAA,CAGD,oDACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,cAAA,CACA,UAAA,CACA,SAAA,CACA,gBAAA,CACA,kCAAA,CACA,6CAAA,CACA,6CAAA,CACA,2BAAA,CACA,oBAAA,CACA,0BAAA,CACA,iBAAA,CAEA,gEACC,0CAAA,CACA,8CAAA,CAED,iEACC,uCAAA,CACA,2CAAA,CAGD,4DACC,wDAAA,CAED,yDACC,wDAAA,CACA,qBAAA,CAED,0DACC,wDAAA,CAED,0DACC,WAAA,CACA,8BAAA,CAIF,iDACC,iBAAA,CACA,oBAAA,CAIF,oCACC,iBAAA,CACA,+CAAA,CACA,WAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\n.avatardiv {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: var(--size);\n\theight: var(--size);\n\n\t&--unknown {\n\t\tposition: relative;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&:not(&--unknown) {\n\t\t// White/black background for avatars with transparency\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\n\t}\n\n\t&--with-menu {\n\t\tcursor: pointer;\n\t\t:deep(.v-popper) {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t}\n\t\t.icon-more {\n\t\t\tcursor: pointer;\n\t\t\topacity: 0;\n\t\t}\n\t\t&:focus,\n\t\t&:hover {\n\t\t\t.icon-more {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t\timg {\n\t\t\t\topacity: 0.3;\n\t\t\t}\n\t\t}\n\t\t.icon-more,\n\t\timg {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\t}\n\n\t.avatardiv__initials-wrapper {\n\t\theight: var(--size);\n\t\twidth: var(--size);\n\t\tbackground-color: var(--color-main-background);\n\t\tborder-radius: 50%;\n\n\t\t.unknown {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\ttext-align: center;\n\t\t\tfont-weight: normal;\n\t\t}\n\t}\n\n\timg {\n\t\t// Cover entire area\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\t// Keep ratio\n\t\tobject-fit: cover;\n\t}\n\n\t.material-design-icon {\n\t\twidth: var(--size);\n\t\theight: var(--size);\n\t}\n\n\t.avatardiv__user-status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tmax-height: 18px;\n\t\tmax-width: 18px;\n\t\theight: 40%;\n\t\twidth: 40%;\n\t\tline-height: 15px;\n\t\tfont-size: var(--default-font-size);\n\t\tborder: 2px solid var(--color-main-background);\n\t\tbackground-color: var(--color-main-background);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\t\tborder-radius: 50%;\n\n\t\t.acli:hover & {\n\t\t\tborder-color: var(--color-background-hover);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t\t.acli.active & {\n\t\t\tborder-color: var(--color-primary-light);\n\t\t\tbackground-color: var(--color-primary-light);\n\t\t}\n\n\t\t&--online{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\n\t\t}\n\t\t&--dnd{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\n\t\t\tbackground-color: #ffffff;\n\t\t}\n\t\t&--away{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\n\t\t}\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t.popovermenu-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n}\n\n.avatar-class-icon {\n\tborder-radius: 50%;\n\tbackground-color: var(--color-background-darker);\n\theight: 100%;\n}\n\n"],sourceRoot:""}]);const v=m},5030:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,".material-design-icon[data-v-c4a9cada]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.loading-icon svg[data-v-c4a9cada]{animation:rotate var(--animation-duration, 0.8s) linear infinite}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcLoadingIcon/NcLoadingIcon.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,mCACC,gEAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\n.loading-icon svg{\n\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\n}\n"],sourceRoot:""}]);const s=r},3197:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,".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:rgba(0,0,0,0);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);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:rgba(0,0,0,0);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}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopover/NcPopover.vue"],names:[],mappings:"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,iBACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,8BAAA,CACA,mBAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CAGD,wBACC,aAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,eAAA,CACA,mBAAA,CACA,UAAA,CAMA,2CACC,cAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CAEA,sDAAA,CAEA,4DACC,SAAA,CACA,4BAAA,CACA,kCAAA,CACA,eAAA,CACA,uCAAA,CAGD,sEACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBA1BW,CA6BZ,kGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAGD,qGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAGD,oGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAGD,mGACC,WAAA,CACA,oBAAA,CACA,8CAAA,CAGD,6DACC,iBAAA,CACA,2EAAA,CACA,SAAA,CAGD,8DACC,kBAAA,CACA,yCAAA,CACA,SAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\n\n.resize-observer {\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\tz-index:-1;\n\twidth:100%;\n\theight:100%;\n\tborder:none;\n\tbackground-color:transparent;\n\tpointer-events:none;\n\tdisplay:block;\n\toverflow:hidden;\n\topacity:0\n}\n\n.resize-observer object {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\theight:100%;\n\twidth:100%;\n\toverflow:hidden;\n\tpointer-events:none;\n\tz-index:-1\n}\n\n$arrow-width: 10px;\n\n.v-popper--theme-dropdown {\n\t&.v-popper__popper {\n\t\tz-index: 100000;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block !important;\n\n\t\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t\t.v-popper__inner {\n\t\t\tpadding: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\toverflow: hidden;\n\t\t\tbackground: var(--color-main-background);\n\t\t}\n\n\t\t.v-popper__arrow-container {\n\t\t\tposition: absolute;\n\t\t\tz-index: 1;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t\tborder-color: transparent;\n\t\t\tborder-width: $arrow-width;\n\t\t}\n\n\t\t&[data-popper-placement^='top'] .v-popper__arrow-container {\n\t\t\tbottom: -$arrow-width;\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-top-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\n\t\t\ttop: -$arrow-width;\n\t\t\tborder-top-width: 0;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='right'] .v-popper__arrow-container {\n\t\t\tleft: -$arrow-width;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='left'] .v-popper__arrow-container {\n\t\t\tright: -$arrow-width;\n\t\t\tborder-right-width: 0;\n\t\t\tborder-left-color: var(--color-main-background);\n\t\t}\n\n\t\t&[aria-hidden='true'] {\n\t\t\tvisibility: hidden;\n\t\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\t\topacity: 0;\n\t\t}\n\n\t\t&[aria-hidden='false'] {\n\t\t\tvisibility: visible;\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=r},2:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,".material-design-icon[data-v-31ffd2d4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}ul[data-v-31ffd2d4]{display:flex;flex-direction:column;gap:4px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopoverMenu/NcPopoverMenu.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,oBACC,YAAA,CACA,qBAAA,CACA,OAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\nul {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n}\n"],sourceRoot:""}]);const s=r},5772:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,'.material-design-icon[data-v-0ce1cbf1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li[data-v-0ce1cbf1]{display:flex;flex:0 0 auto}li.hidden[data-v-0ce1cbf1]{display:none}li>button[data-v-0ce1cbf1],li>a[data-v-0ce1cbf1],li>.menuitem[data-v-0ce1cbf1]{cursor:pointer;line-height:44px;border:0;background-color:rgba(0,0,0,0);display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^=icon-][data-v-0ce1cbf1],li>button span[class*=" icon-"][data-v-0ce1cbf1],li>button[class^=icon-][data-v-0ce1cbf1],li>button[class*=" icon-"][data-v-0ce1cbf1],li>a span[class^=icon-][data-v-0ce1cbf1],li>a span[class*=" icon-"][data-v-0ce1cbf1],li>a[class^=icon-][data-v-0ce1cbf1],li>a[class*=" icon-"][data-v-0ce1cbf1],li>.menuitem span[class^=icon-][data-v-0ce1cbf1],li>.menuitem span[class*=" icon-"][data-v-0ce1cbf1],li>.menuitem[class^=icon-][data-v-0ce1cbf1],li>.menuitem[class*=" icon-"][data-v-0ce1cbf1]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^=icon-][data-v-0ce1cbf1],li>button span[class*=" icon-"][data-v-0ce1cbf1],li>a span[class^=icon-][data-v-0ce1cbf1],li>a span[class*=" icon-"][data-v-0ce1cbf1],li>.menuitem span[class^=icon-][data-v-0ce1cbf1],li>.menuitem span[class*=" icon-"][data-v-0ce1cbf1]{padding:22px 0 22px 44px}li>button:not([class^=icon-]):not([class*=icon-])>span[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>button:not([class^=icon-]):not([class*=icon-])>input[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>button:not([class^=icon-]):not([class*=icon-])>form[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>span[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>input[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>form[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>span[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>input[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>form[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child{margin-left:44px}li>button[class^=icon-][data-v-0ce1cbf1],li>button[class*=" icon-"][data-v-0ce1cbf1],li>a[class^=icon-][data-v-0ce1cbf1],li>a[class*=" icon-"][data-v-0ce1cbf1],li>.menuitem[class^=icon-][data-v-0ce1cbf1],li>.menuitem[class*=" icon-"][data-v-0ce1cbf1]{padding:0 14px 0 44px}li>button[data-v-0ce1cbf1]:not(:disabled):hover,li>button[data-v-0ce1cbf1]:not(:disabled):focus,li>button:not(:disabled).active[data-v-0ce1cbf1],li>a[data-v-0ce1cbf1]:not(:disabled):hover,li>a[data-v-0ce1cbf1]:not(:disabled):focus,li>a:not(:disabled).active[data-v-0ce1cbf1],li>.menuitem[data-v-0ce1cbf1]:not(:disabled):hover,li>.menuitem[data-v-0ce1cbf1]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-0ce1cbf1]{opacity:1 !important}li>button.action[data-v-0ce1cbf1],li>a.action[data-v-0ce1cbf1],li>.menuitem.action[data-v-0ce1cbf1]{padding:inherit !important}li>button>span[data-v-0ce1cbf1],li>a>span[data-v-0ce1cbf1],li>.menuitem>span[data-v-0ce1cbf1]{cursor:pointer;white-space:nowrap}li>button>p[data-v-0ce1cbf1],li>a>p[data-v-0ce1cbf1],li>.menuitem>p[data-v-0ce1cbf1]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal;overflow:hidden;text-overflow:ellipsis}li>button>select[data-v-0ce1cbf1],li>a>select[data-v-0ce1cbf1],li>.menuitem>select[data-v-0ce1cbf1]{margin:0;margin-left:6px}li>button[data-v-0ce1cbf1]:not(:empty),li>a[data-v-0ce1cbf1]:not(:empty),li>.menuitem[data-v-0ce1cbf1]:not(:empty){padding-right:14px !important}li>button>img[data-v-0ce1cbf1],li>a>img[data-v-0ce1cbf1],li>.menuitem>img[data-v-0ce1cbf1]{width:16px;height:16px;margin:14px}li>button>input.radio+label[data-v-0ce1cbf1],li>button>input.checkbox+label[data-v-0ce1cbf1],li>a>input.radio+label[data-v-0ce1cbf1],li>a>input.checkbox+label[data-v-0ce1cbf1],li>.menuitem>input.radio+label[data-v-0ce1cbf1],li>.menuitem>input.checkbox+label[data-v-0ce1cbf1]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-0ce1cbf1]::before,li>a>input.checkbox+label[data-v-0ce1cbf1]::before,li>.menuitem>input.checkbox+label[data-v-0ce1cbf1]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-0ce1cbf1]::before,li>a>input.radio+label[data-v-0ce1cbf1]::before,li>.menuitem>input.radio+label[data-v-0ce1cbf1]::before{margin:-2px 12px 0}li>button>input[data-v-0ce1cbf1]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-0ce1cbf1]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-0ce1cbf1]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-0ce1cbf1],li>a form[data-v-0ce1cbf1],li>.menuitem form[data-v-0ce1cbf1]{display:flex;flex:1 1 auto}li>button form[data-v-0ce1cbf1]:not(:first-child),li>a form[data-v-0ce1cbf1]:not(:first-child),li>.menuitem form[data-v-0ce1cbf1]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-0ce1cbf1],li>button>span[style*="display:none"]+form[data-v-0ce1cbf1],li>a>span.hidden+form[data-v-0ce1cbf1],li>a>span[style*="display:none"]+form[data-v-0ce1cbf1],li>.menuitem>span.hidden+form[data-v-0ce1cbf1],li>.menuitem>span[style*="display:none"]+form[data-v-0ce1cbf1]{margin-left:0}li>button input[data-v-0ce1cbf1],li>a input[data-v-0ce1cbf1],li>.menuitem input[data-v-0ce1cbf1]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-0ce1cbf1]:not(:first-child),li>a input[data-v-0ce1cbf1]:not(:first-child),li>.menuitem input[data-v-0ce1cbf1]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*="display:none"]):first-of-type>button>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>button>input[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>a>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>a>input[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input[data-v-0ce1cbf1]{margin-top:12px}li:not(.hidden):not([style*="display:none"]):last-of-type>button>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>button>input[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>a>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>a>input[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input[data-v-0ce1cbf1]{margin-bottom:12px}li>button[data-v-0ce1cbf1]{padding:0}li>button span[data-v-0ce1cbf1]{opacity:1}',"",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopoverMenu/NcPopoverMenuItem.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,oBACC,YAAA,CACA,aAAA,CAEA,2BACC,YAAA,CAGD,+EAGC,cAAA,CACA,gBCWe,CDVf,QAAA,CACA,8BAAA,CACA,YAAA,CACA,sBAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,kBAAA,CACA,eAAA,CACA,UAAA,CACA,4BAAA,CACA,kBAAA,CACA,UCgBe,CDbf,ohBAIC,WAAA,CACA,YAAA,CACA,+BAAA,CACA,oBCRS,CDWV,yRAIC,wBAAA,CAQC,ylCACC,gBC5BY,CDiCf,2PAEC,qBAAA,CAGD,6aAGC,oBAAA,CAID,oGACC,0BAAA,CAGD,8FACC,cAAA,CACA,kBAAA,CAID,qFACC,WAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CAGA,eAAA,CACA,sBAAA,CAID,oGACC,QAAA,CACA,eAAA,CAID,mHACC,6BAAA,CAKD,2FACC,UC5ES,CD6ET,WC7ES,CD8ET,WC1EW,CD8EZ,mRAEC,oBAAA,CACA,UAAA,CAED,sKACC,kBAAA,CAED,6JACC,kBAAA,CAED,4QACC,WAAA,CAID,8FACC,YAAA,CACA,aAAA,CAGA,oJACC,eAAA,CAIF,oTAEC,aAAA,CAGD,iGACC,cCtHc,CDuHd,eAAA,CACA,YAAA,CACA,aAAA,CAEA,uJACC,eAAA,CAUA,+gBACC,eAAA,CAMD,ygBACC,kBAAA,CAKJ,2BACC,SAAA,CACA,gCACC,SCnIY",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\nli {\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n\n\t> button,\n\t> a,\n\t> .menuitem {\n\t\tcursor: pointer;\n\t\tline-height: $clickable-area;\n\t\tborder: 0;\n\t\tbackground-color: transparent;\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tfont-weight: normal;\n\t\tbox-shadow: none;\n\t\twidth: 100%;\n\t\tcolor: var(--color-main-text);\n\t\twhite-space: nowrap;\n\t\topacity: $opacity_normal;\n\n\t\t// TODO split into individual components for readability\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'],\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tmin-width: 0; /* Overwrite icons*/\n\t\t\tmin-height: 0;\n\t\t\tbackground-position: #{$icon-margin} center;\n\t\t\tbackground-size: $icon-size;\n\t\t}\n\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'] {\n\t\t\t/* Keep padding to define the width to\n\t\t\t\tassure correct position of a possible text */\n\t\t\tpadding: #{math.div($clickable-area, 2)} 0 #{math.div($clickable-area, 2)} $clickable-area;\n\t\t}\n\n\t\t// If no icons set, force left margin to align\n\t\t&:not([class^='icon-']):not([class*='icon-']) {\n\t\t\t> span,\n\t\t\t> input,\n\t\t\t> form {\n\t\t\t\t&:not([class^='icon-']):not([class*='icon-']):first-child {\n\t\t\t\t\tmargin-left: $clickable-area;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tpadding: 0 $icon-margin 0 $clickable-area;\n\t\t}\n\n\t\t&:not(:disabled):hover,\n\t\t&:not(:disabled):focus,\n\t\t&:not(:disabled).active {\n\t\t\topacity: $opacity_full !important;\n\t\t}\n\n\t\t/* prevent .action class to break the design */\n\t\t&.action {\n\t\t\tpadding: inherit !important;\n\t\t}\n\n\t\t> span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t// long text area\n\t\t> p {\n\t\t\twidth: 150px;\n\t\t\tline-height: 1.6em;\n\t\t\tpadding: 8px 0;\n\t\t\twhite-space: normal;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t// TODO: do we really supports it?\n\t\t> select {\n\t\t\tmargin: 0;\n\t\t\tmargin-left: 6px;\n\t\t}\n\n\t\t/* Add padding if contains icon+text */\n\t\t&:not(:empty) {\n\t\t\tpadding-right: $icon-margin !important;\n\t\t}\n\n\t\t/* DEPRECATED! old img in popover fallback\n\t\t\t* TODO: to remove */\n\t\t> img {\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t\tmargin: $icon-margin;\n\t\t}\n\n\t\t/* checkbox/radio fixes */\n\t\t> input.radio + label,\n\t\t> input.checkbox + label {\n\t\t\tpadding: 0 !important;\n\t\t\twidth: 100%;\n\t\t}\n\t\t> input.checkbox + label::before {\n\t\t\tmargin: -2px 13px 0;\n\t\t}\n\t\t> input.radio + label::before {\n\t\t\tmargin: -2px 12px 0;\n\t\t}\n\t\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\n\t\t\twidth: 150px;\n\t\t}\n\n\t\t// Forms & text inputs\n\t\tform {\n\t\t\tdisplay: flex;\n\t\t\tflex: 1 1 auto;\n\t\t\t/* put a small space between text and form\n\t\t\t\tif there is an element before */\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t\t/* no margin if hidden span before */\n\t\t> span.hidden + form,\n\t\t> span[style*='display:none'] + form {\n\t\t\tmargin-left: 0;\n\t\t}\n\t\t/* Inputs inside popover supports text, submit & reset */\n\t\tinput {\n\t\t\tmin-width: $clickable-area;\n\t\t\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\n\t\t\tmargin: 2px 0;\n\t\t\tflex: 1 1 auto;\n\t\t\t// space between inline inputs\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: do that in js, should be cleaner\n\t/* css hack, only first not hidden */\n\t&:not(.hidden):not([style*='display:none']) {\n\t\t&:first-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-top: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&:last-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-bottom: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t> button {\n\t\tpadding: 0;\n\t\tspan {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=r},4477:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,".material-design-icon[data-v-32fccbe9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mention-bubble--primary .mention-bubble__content[data-v-32fccbe9]{color:var(--color-primary-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-32fccbe9]{max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-32fccbe9]{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-32fccbe9]{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-32fccbe9]{color:inherit;background-size:cover}.mention-bubble__title[data-v-32fccbe9]{overflow:hidden;margin-left:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-32fccbe9]::before{content:attr(title)}.mention-bubble__select[data-v-32fccbe9]{position:absolute;z-index:-1;left:-1000px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcRichContenteditable/NcMentionBubble.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CAAA,mECCC,+BAAA,CACA,6CAAA,CAGD,0CACC,eAXiB,CAajB,WAAA,CACA,0BAAA,CACA,mBAAA,CACA,kBAAA,CAGD,0CACC,mBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,WAzBc,CA0Bd,wBAAA,CACA,gBAAA,CACA,iBAAA,CACA,gBA3Be,CA4Bf,kBAAA,CACA,6CAAA,CAGD,uCACC,iBAAA,CACA,UAjCmB,CAkCnB,WAlCmB,CAmCnB,iBAAA,CACA,+CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CAEA,oDACC,aAAA,CACA,qBAAA,CAIF,wCACC,eAAA,CACA,eAlDe,CAmDf,kBAAA,CACA,sBAAA,CAEA,gDACC,mBAAA,CAKF,yCACC,iBAAA,CACA,UAAA,CACA,YAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: math.div($bubble-height, 2);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: math.div($bubble-avatar-size, 2);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put label in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -1000px;\n\t}\n}\n\n"],sourceRoot:""}]);const s=r},5578:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,"\nbutton.menuitem[data-v-0ce1cbf1] {\n\tborder-radius: var(--border-radius-large) !important;\n\ttext-align: left;\n}\nbutton.menuitem *[data-v-0ce1cbf1] {\n\tcursor: pointer;\n}\nbutton.menuitem[data-v-0ce1cbf1]:disabled {\n\topacity: 0.5 !important;\n\tcursor: default;\n}\nbutton.menuitem:disabled *[data-v-0ce1cbf1] {\n\tcursor: default;\n}\n.menuitem.active[data-v-0ce1cbf1] {\n\tborder-left: 4px solid var(--color-primary);\n\tborder-radius: 0 var(--border-radius-large) var(--border-radius-large) 0 !important;\n}\n","",{version:3,sources:["webpack://./src/components/NcPopoverMenu/NcPopoverMenuItem.vue"],names:[],mappings:";AAgYA;CACA,oDAAA;CACA,gBAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,uBAAA;CACA,eAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,2CAAA;CACA,mFAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 John Molakvoæ \n -\n - @author John Molakvoæ \n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see .\n -\n --\x3e\n\n\n\n