9133 lines
344 KiB
JavaScript
9133 lines
344 KiB
JavaScript
/******/ (() => { // webpackBootstrap
|
|
/******/ var __webpack_modules__ = ({
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js":
|
|
/*!*********************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js ***!
|
|
\*********************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
const debug = __webpack_require__(/*! ../internal/debug */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js")
|
|
const { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(/*! ../internal/constants */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js")
|
|
const { safeRe: re, t } = __webpack_require__(/*! ../internal/re */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js")
|
|
|
|
const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js")
|
|
const { compareIdentifiers } = __webpack_require__(/*! ../internal/identifiers */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js")
|
|
class SemVer {
|
|
constructor (version, options) {
|
|
options = parseOptions(options)
|
|
|
|
if (version instanceof SemVer) {
|
|
if (version.loose === !!options.loose &&
|
|
version.includePrerelease === !!options.includePrerelease) {
|
|
return version
|
|
} else {
|
|
version = version.version
|
|
}
|
|
} else if (typeof version !== 'string') {
|
|
throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
|
|
}
|
|
|
|
if (version.length > MAX_LENGTH) {
|
|
throw new TypeError(
|
|
`version is longer than ${MAX_LENGTH} characters`
|
|
)
|
|
}
|
|
|
|
debug('SemVer', version, options)
|
|
this.options = options
|
|
this.loose = !!options.loose
|
|
// this isn't actually relevant for versions, but keep it so that we
|
|
// don't run into trouble passing this.options around.
|
|
this.includePrerelease = !!options.includePrerelease
|
|
|
|
const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
|
|
|
|
if (!m) {
|
|
throw new TypeError(`Invalid Version: ${version}`)
|
|
}
|
|
|
|
this.raw = version
|
|
|
|
// these are actually numbers
|
|
this.major = +m[1]
|
|
this.minor = +m[2]
|
|
this.patch = +m[3]
|
|
|
|
if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
|
|
throw new TypeError('Invalid major version')
|
|
}
|
|
|
|
if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
|
|
throw new TypeError('Invalid minor version')
|
|
}
|
|
|
|
if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
|
|
throw new TypeError('Invalid patch version')
|
|
}
|
|
|
|
// numberify any prerelease numeric ids
|
|
if (!m[4]) {
|
|
this.prerelease = []
|
|
} else {
|
|
this.prerelease = m[4].split('.').map((id) => {
|
|
if (/^[0-9]+$/.test(id)) {
|
|
const num = +id
|
|
if (num >= 0 && num < MAX_SAFE_INTEGER) {
|
|
return num
|
|
}
|
|
}
|
|
return id
|
|
})
|
|
}
|
|
|
|
this.build = m[5] ? m[5].split('.') : []
|
|
this.format()
|
|
}
|
|
|
|
format () {
|
|
this.version = `${this.major}.${this.minor}.${this.patch}`
|
|
if (this.prerelease.length) {
|
|
this.version += `-${this.prerelease.join('.')}`
|
|
}
|
|
return this.version
|
|
}
|
|
|
|
toString () {
|
|
return this.version
|
|
}
|
|
|
|
compare (other) {
|
|
debug('SemVer.compare', this.version, this.options, other)
|
|
if (!(other instanceof SemVer)) {
|
|
if (typeof other === 'string' && other === this.version) {
|
|
return 0
|
|
}
|
|
other = new SemVer(other, this.options)
|
|
}
|
|
|
|
if (other.version === this.version) {
|
|
return 0
|
|
}
|
|
|
|
return this.compareMain(other) || this.comparePre(other)
|
|
}
|
|
|
|
compareMain (other) {
|
|
if (!(other instanceof SemVer)) {
|
|
other = new SemVer(other, this.options)
|
|
}
|
|
|
|
return (
|
|
compareIdentifiers(this.major, other.major) ||
|
|
compareIdentifiers(this.minor, other.minor) ||
|
|
compareIdentifiers(this.patch, other.patch)
|
|
)
|
|
}
|
|
|
|
comparePre (other) {
|
|
if (!(other instanceof SemVer)) {
|
|
other = new SemVer(other, this.options)
|
|
}
|
|
|
|
// NOT having a prerelease is > having one
|
|
if (this.prerelease.length && !other.prerelease.length) {
|
|
return -1
|
|
} else if (!this.prerelease.length && other.prerelease.length) {
|
|
return 1
|
|
} else if (!this.prerelease.length && !other.prerelease.length) {
|
|
return 0
|
|
}
|
|
|
|
let i = 0
|
|
do {
|
|
const a = this.prerelease[i]
|
|
const b = other.prerelease[i]
|
|
debug('prerelease compare', i, a, b)
|
|
if (a === undefined && b === undefined) {
|
|
return 0
|
|
} else if (b === undefined) {
|
|
return 1
|
|
} else if (a === undefined) {
|
|
return -1
|
|
} else if (a === b) {
|
|
continue
|
|
} else {
|
|
return compareIdentifiers(a, b)
|
|
}
|
|
} while (++i)
|
|
}
|
|
|
|
compareBuild (other) {
|
|
if (!(other instanceof SemVer)) {
|
|
other = new SemVer(other, this.options)
|
|
}
|
|
|
|
let i = 0
|
|
do {
|
|
const a = this.build[i]
|
|
const b = other.build[i]
|
|
debug('prerelease compare', i, a, b)
|
|
if (a === undefined && b === undefined) {
|
|
return 0
|
|
} else if (b === undefined) {
|
|
return 1
|
|
} else if (a === undefined) {
|
|
return -1
|
|
} else if (a === b) {
|
|
continue
|
|
} else {
|
|
return compareIdentifiers(a, b)
|
|
}
|
|
} while (++i)
|
|
}
|
|
|
|
// preminor will bump the version up to the next minor release, and immediately
|
|
// down to pre-release. premajor and prepatch work the same way.
|
|
inc (release, identifier, identifierBase) {
|
|
switch (release) {
|
|
case 'premajor':
|
|
this.prerelease.length = 0
|
|
this.patch = 0
|
|
this.minor = 0
|
|
this.major++
|
|
this.inc('pre', identifier, identifierBase)
|
|
break
|
|
case 'preminor':
|
|
this.prerelease.length = 0
|
|
this.patch = 0
|
|
this.minor++
|
|
this.inc('pre', identifier, identifierBase)
|
|
break
|
|
case 'prepatch':
|
|
// If this is already a prerelease, it will bump to the next version
|
|
// drop any prereleases that might already exist, since they are not
|
|
// relevant at this point.
|
|
this.prerelease.length = 0
|
|
this.inc('patch', identifier, identifierBase)
|
|
this.inc('pre', identifier, identifierBase)
|
|
break
|
|
// If the input is a non-prerelease version, this acts the same as
|
|
// prepatch.
|
|
case 'prerelease':
|
|
if (this.prerelease.length === 0) {
|
|
this.inc('patch', identifier, identifierBase)
|
|
}
|
|
this.inc('pre', identifier, identifierBase)
|
|
break
|
|
|
|
case 'major':
|
|
// If this is a pre-major version, bump up to the same major version.
|
|
// Otherwise increment major.
|
|
// 1.0.0-5 bumps to 1.0.0
|
|
// 1.1.0 bumps to 2.0.0
|
|
if (
|
|
this.minor !== 0 ||
|
|
this.patch !== 0 ||
|
|
this.prerelease.length === 0
|
|
) {
|
|
this.major++
|
|
}
|
|
this.minor = 0
|
|
this.patch = 0
|
|
this.prerelease = []
|
|
break
|
|
case 'minor':
|
|
// If this is a pre-minor version, bump up to the same minor version.
|
|
// Otherwise increment minor.
|
|
// 1.2.0-5 bumps to 1.2.0
|
|
// 1.2.1 bumps to 1.3.0
|
|
if (this.patch !== 0 || this.prerelease.length === 0) {
|
|
this.minor++
|
|
}
|
|
this.patch = 0
|
|
this.prerelease = []
|
|
break
|
|
case 'patch':
|
|
// If this is not a pre-release version, it will increment the patch.
|
|
// If it is a pre-release it will bump up to the same patch version.
|
|
// 1.2.0-5 patches to 1.2.0
|
|
// 1.2.0 patches to 1.2.1
|
|
if (this.prerelease.length === 0) {
|
|
this.patch++
|
|
}
|
|
this.prerelease = []
|
|
break
|
|
// This probably shouldn't be used publicly.
|
|
// 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
|
|
case 'pre': {
|
|
const base = Number(identifierBase) ? 1 : 0
|
|
|
|
if (!identifier && identifierBase === false) {
|
|
throw new Error('invalid increment argument: identifier is empty')
|
|
}
|
|
|
|
if (this.prerelease.length === 0) {
|
|
this.prerelease = [base]
|
|
} else {
|
|
let i = this.prerelease.length
|
|
while (--i >= 0) {
|
|
if (typeof this.prerelease[i] === 'number') {
|
|
this.prerelease[i]++
|
|
i = -2
|
|
}
|
|
}
|
|
if (i === -1) {
|
|
// didn't increment anything
|
|
if (identifier === this.prerelease.join('.') && identifierBase === false) {
|
|
throw new Error('invalid increment argument: identifier already exists')
|
|
}
|
|
this.prerelease.push(base)
|
|
}
|
|
}
|
|
if (identifier) {
|
|
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
|
|
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
|
|
let prerelease = [identifier, base]
|
|
if (identifierBase === false) {
|
|
prerelease = [identifier]
|
|
}
|
|
if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
|
|
if (isNaN(this.prerelease[1])) {
|
|
this.prerelease = prerelease
|
|
}
|
|
} else {
|
|
this.prerelease = prerelease
|
|
}
|
|
}
|
|
break
|
|
}
|
|
default:
|
|
throw new Error(`invalid increment argument: ${release}`)
|
|
}
|
|
this.raw = this.format()
|
|
if (this.build.length) {
|
|
this.raw += `+${this.build.join('.')}`
|
|
}
|
|
return this
|
|
}
|
|
}
|
|
|
|
module.exports = SemVer
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js":
|
|
/*!**********************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js ***!
|
|
\**********************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js")
|
|
const major = (a, loose) => new SemVer(a, loose).major
|
|
module.exports = major
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js":
|
|
/*!**********************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js ***!
|
|
\**********************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js")
|
|
const parse = (version, options, throwErrors = false) => {
|
|
if (version instanceof SemVer) {
|
|
return version
|
|
}
|
|
try {
|
|
return new SemVer(version, options)
|
|
} catch (er) {
|
|
if (!throwErrors) {
|
|
return null
|
|
}
|
|
throw er
|
|
}
|
|
}
|
|
|
|
module.exports = parse
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js":
|
|
/*!**********************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js ***!
|
|
\**********************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
const parse = __webpack_require__(/*! ./parse */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js")
|
|
const valid = (version, options) => {
|
|
const v = parse(version, options)
|
|
return v ? v.version : null
|
|
}
|
|
module.exports = valid
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js":
|
|
/*!*************************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js ***!
|
|
\*************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
// Note: this is the semver.org version of the spec that it implements
|
|
// Not necessarily the package version of this code.
|
|
const SEMVER_SPEC_VERSION = '2.0.0'
|
|
|
|
const MAX_LENGTH = 256
|
|
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
|
|
/* istanbul ignore next */ 9007199254740991
|
|
|
|
// Max safe segment length for coercion.
|
|
const MAX_SAFE_COMPONENT_LENGTH = 16
|
|
|
|
// Max safe length for a build identifier. The max length minus 6 characters for
|
|
// the shortest version with a build 0.0.0+BUILD.
|
|
const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
|
|
|
|
const RELEASE_TYPES = [
|
|
'major',
|
|
'premajor',
|
|
'minor',
|
|
'preminor',
|
|
'patch',
|
|
'prepatch',
|
|
'prerelease',
|
|
]
|
|
|
|
module.exports = {
|
|
MAX_LENGTH,
|
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
MAX_SAFE_BUILD_LENGTH,
|
|
MAX_SAFE_INTEGER,
|
|
RELEASE_TYPES,
|
|
SEMVER_SPEC_VERSION,
|
|
FLAG_INCLUDE_PRERELEASE: 0b001,
|
|
FLAG_LOOSE: 0b010,
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js":
|
|
/*!*********************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js ***!
|
|
\*********************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
/* provided dependency */ var process = __webpack_require__(/*! ./node_modules/process/browser.js */ "./node_modules/process/browser.js");
|
|
const debug = (
|
|
typeof process === 'object' &&
|
|
process.env &&
|
|
process.env.NODE_DEBUG &&
|
|
/\bsemver\b/i.test(process.env.NODE_DEBUG)
|
|
) ? (...args) => console.error('SEMVER', ...args)
|
|
: () => {}
|
|
|
|
module.exports = debug
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js":
|
|
/*!***************************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js ***!
|
|
\***************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
const numeric = /^[0-9]+$/
|
|
const compareIdentifiers = (a, b) => {
|
|
const anum = numeric.test(a)
|
|
const bnum = numeric.test(b)
|
|
|
|
if (anum && bnum) {
|
|
a = +a
|
|
b = +b
|
|
}
|
|
|
|
return a === b ? 0
|
|
: (anum && !bnum) ? -1
|
|
: (bnum && !anum) ? 1
|
|
: a < b ? -1
|
|
: 1
|
|
}
|
|
|
|
const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
|
|
|
|
module.exports = {
|
|
compareIdentifiers,
|
|
rcompareIdentifiers,
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js":
|
|
/*!*****************************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js ***!
|
|
\*****************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
// parse out just the options we care about
|
|
const looseOption = Object.freeze({ loose: true })
|
|
const emptyOpts = Object.freeze({ })
|
|
const parseOptions = options => {
|
|
if (!options) {
|
|
return emptyOpts
|
|
}
|
|
|
|
if (typeof options !== 'object') {
|
|
return looseOption
|
|
}
|
|
|
|
return options
|
|
}
|
|
module.exports = parseOptions
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js":
|
|
/*!******************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js ***!
|
|
\******************************************************************************/
|
|
/***/ ((module, exports, __webpack_require__) => {
|
|
|
|
const {
|
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
MAX_SAFE_BUILD_LENGTH,
|
|
MAX_LENGTH,
|
|
} = __webpack_require__(/*! ./constants */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js")
|
|
const debug = __webpack_require__(/*! ./debug */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js")
|
|
exports = module.exports = {}
|
|
|
|
// The actual regexps go on exports.re
|
|
const re = exports.re = []
|
|
const safeRe = exports.safeRe = []
|
|
const src = exports.src = []
|
|
const t = exports.t = {}
|
|
let R = 0
|
|
|
|
const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
|
|
|
|
// Replace some greedy regex tokens to prevent regex dos issues. These regex are
|
|
// used internally via the safeRe object since all inputs in this library get
|
|
// normalized first to trim and collapse all extra whitespace. The original
|
|
// regexes are exported for userland consumption and lower level usage. A
|
|
// future breaking change could export the safer regex only with a note that
|
|
// all input should have extra whitespace removed.
|
|
const safeRegexReplacements = [
|
|
['\\s', 1],
|
|
['\\d', MAX_LENGTH],
|
|
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
|
|
]
|
|
|
|
const makeSafeRegex = (value) => {
|
|
for (const [token, max] of safeRegexReplacements) {
|
|
value = value
|
|
.split(`${token}*`).join(`${token}{0,${max}}`)
|
|
.split(`${token}+`).join(`${token}{1,${max}}`)
|
|
}
|
|
return value
|
|
}
|
|
|
|
const createToken = (name, value, isGlobal) => {
|
|
const safe = makeSafeRegex(value)
|
|
const index = R++
|
|
debug(name, index, value)
|
|
t[name] = index
|
|
src[index] = value
|
|
re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
|
|
safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
|
|
}
|
|
|
|
// The following Regular Expressions can be used for tokenizing,
|
|
// validating, and parsing SemVer version strings.
|
|
|
|
// ## Numeric Identifier
|
|
// A single `0`, or a non-zero digit followed by zero or more digits.
|
|
|
|
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
|
|
createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
|
|
|
|
// ## Non-numeric Identifier
|
|
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
|
// more letters, digits, or hyphens.
|
|
|
|
createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
|
|
|
|
// ## Main Version
|
|
// Three dot-separated numeric identifiers.
|
|
|
|
createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
|
|
`(${src[t.NUMERICIDENTIFIER]})\\.` +
|
|
`(${src[t.NUMERICIDENTIFIER]})`)
|
|
|
|
createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
|
|
`(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
|
|
`(${src[t.NUMERICIDENTIFIERLOOSE]})`)
|
|
|
|
// ## Pre-release Version Identifier
|
|
// A numeric identifier, or a non-numeric identifier.
|
|
|
|
createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
|
|
}|${src[t.NONNUMERICIDENTIFIER]})`)
|
|
|
|
createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
|
|
}|${src[t.NONNUMERICIDENTIFIER]})`)
|
|
|
|
// ## Pre-release Version
|
|
// Hyphen, followed by one or more dot-separated pre-release version
|
|
// identifiers.
|
|
|
|
createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
|
|
}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
|
|
|
|
createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
|
|
}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
|
|
|
|
// ## Build Metadata Identifier
|
|
// Any combination of digits, letters, or hyphens.
|
|
|
|
createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
|
|
|
|
// ## Build Metadata
|
|
// Plus sign, followed by one or more period-separated build metadata
|
|
// identifiers.
|
|
|
|
createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
|
|
}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
|
|
|
|
// ## Full Version String
|
|
// A main version, followed optionally by a pre-release version and
|
|
// build metadata.
|
|
|
|
// Note that the only major, minor, patch, and pre-release sections of
|
|
// the version string are capturing groups. The build metadata is not a
|
|
// capturing group, because it should not ever be used in version
|
|
// comparison.
|
|
|
|
createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
|
|
}${src[t.PRERELEASE]}?${
|
|
src[t.BUILD]}?`)
|
|
|
|
createToken('FULL', `^${src[t.FULLPLAIN]}$`)
|
|
|
|
// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
|
|
// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
|
|
// common in the npm registry.
|
|
createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
|
|
}${src[t.PRERELEASELOOSE]}?${
|
|
src[t.BUILD]}?`)
|
|
|
|
createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
|
|
|
|
createToken('GTLT', '((?:<|>)?=?)')
|
|
|
|
// Something like "2.*" or "1.2.x".
|
|
// Note that "x.x" is a valid xRange identifer, meaning "any version"
|
|
// Only the first item is strictly required.
|
|
createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
|
|
createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
|
|
|
|
createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
|
|
`(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
|
|
`(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
|
|
`(?:${src[t.PRERELEASE]})?${
|
|
src[t.BUILD]}?` +
|
|
`)?)?`)
|
|
|
|
createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
|
|
`(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
|
|
`(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
|
|
`(?:${src[t.PRERELEASELOOSE]})?${
|
|
src[t.BUILD]}?` +
|
|
`)?)?`)
|
|
|
|
createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
|
|
createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
|
|
|
|
// Coercion.
|
|
// Extract anything that could conceivably be a part of a valid semver
|
|
createToken('COERCEPLAIN', `${'(^|[^\\d])' +
|
|
'(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
|
|
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
|
|
`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)
|
|
createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`)
|
|
createToken('COERCEFULL', src[t.COERCEPLAIN] +
|
|
`(?:${src[t.PRERELEASE]})?` +
|
|
`(?:${src[t.BUILD]})?` +
|
|
`(?:$|[^\\d])`)
|
|
createToken('COERCERTL', src[t.COERCE], true)
|
|
createToken('COERCERTLFULL', src[t.COERCEFULL], true)
|
|
|
|
// Tilde ranges.
|
|
// Meaning is "reasonably at or greater than"
|
|
createToken('LONETILDE', '(?:~>?)')
|
|
|
|
createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
|
|
exports.tildeTrimReplace = '$1~'
|
|
|
|
createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
|
|
createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
|
|
|
|
// Caret ranges.
|
|
// Meaning is "at least and backwards compatible with"
|
|
createToken('LONECARET', '(?:\\^)')
|
|
|
|
createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
|
|
exports.caretTrimReplace = '$1^'
|
|
|
|
createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
|
|
createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
|
|
|
|
// A simple gt/lt/eq thing, or just "" to indicate "any version"
|
|
createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
|
|
createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
|
|
|
|
// An expression to strip any whitespace between the gtlt and the thing
|
|
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
|
|
createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
|
|
}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
|
|
exports.comparatorTrimReplace = '$1$2$3'
|
|
|
|
// Something like `1.2.3 - 1.2.4`
|
|
// Note that these all use the loose form, because they'll be
|
|
// checked against either the strict or loose comparator form
|
|
// later.
|
|
createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
|
|
`\\s+-\\s+` +
|
|
`(${src[t.XRANGEPLAIN]})` +
|
|
`\\s*$`)
|
|
|
|
createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
|
|
`\\s+-\\s+` +
|
|
`(${src[t.XRANGEPLAINLOOSE]})` +
|
|
`\\s*$`)
|
|
|
|
// Star ranges basically just allow anything at all.
|
|
createToken('STAR', '(<|>)?=?\\s*\\*')
|
|
// >=0.0.0 is like a star
|
|
createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
|
|
createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/l10n/node_modules/@nextcloud/router/dist/index.js":
|
|
/*!***********************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/l10n/node_modules/@nextcloud/router/dist/index.js ***!
|
|
\***********************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
|
|
Object.defineProperty(exports, "__esModule", ({
|
|
value: true
|
|
}));
|
|
exports.generateUrl = exports.generateRemoteUrl = exports.generateOcsUrl = exports.generateFilePath = void 0;
|
|
exports.getAppRootUrl = getAppRootUrl;
|
|
exports.getRootUrl = getRootUrl;
|
|
exports.linkTo = exports.imagePath = void 0;
|
|
__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
|
|
/**
|
|
* Get an url with webroot to a file in an app
|
|
*
|
|
* @param {string} app the id of the app the file belongs to
|
|
* @param {string} file the file path relative to the app folder
|
|
* @return {string} URL with webroot to a file
|
|
*/
|
|
const linkTo = (app, file) => generateFilePath(app, '', file);
|
|
|
|
/**
|
|
* Creates a relative url for remote use
|
|
*
|
|
* @param {string} service id
|
|
* @return {string} the url
|
|
*/
|
|
exports.linkTo = linkTo;
|
|
const linkToRemoteBase = service => getRootUrl() + '/remote.php/' + service;
|
|
|
|
/**
|
|
* @brief Creates an absolute url for remote use
|
|
* @param {string} service id
|
|
* @return {string} the url
|
|
*/
|
|
const generateRemoteUrl = service => window.location.protocol + '//' + window.location.host + linkToRemoteBase(service);
|
|
|
|
/**
|
|
* Get the base path for the given OCS API service
|
|
*
|
|
* @param {string} url OCS API service url
|
|
* @param {object} params parameters to be replaced into the service url
|
|
* @param {UrlOptions} options options for the parameter replacement
|
|
* @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true)
|
|
* @param {Number} options.ocsVersion OCS version to use (defaults to 2)
|
|
* @return {string} Absolute path for the OCS URL
|
|
*/
|
|
exports.generateRemoteUrl = generateRemoteUrl;
|
|
const generateOcsUrl = (url, params, options) => {
|
|
const allOptions = Object.assign({
|
|
ocsVersion: 2
|
|
}, options || {});
|
|
const version = allOptions.ocsVersion === 1 ? 1 : 2;
|
|
return window.location.protocol + '//' + window.location.host + getRootUrl() + '/ocs/v' + version + '.php' + _generateUrlPath(url, params, options);
|
|
};
|
|
exports.generateOcsUrl = generateOcsUrl;
|
|
/**
|
|
* Generate a url path, which can contain parameters
|
|
*
|
|
* Parameters will be URL encoded automatically
|
|
*
|
|
* @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token
|
|
* @param {object} params parameters to be replaced into the address
|
|
* @param {UrlOptions} options options for the parameter replacement
|
|
* @return {string} Path part for the given URL
|
|
*/
|
|
const _generateUrlPath = (url, params, options) => {
|
|
const allOptions = Object.assign({
|
|
escape: true
|
|
}, options || {});
|
|
const _build = function (text, vars) {
|
|
vars = vars || {};
|
|
return text.replace(/{([^{}]*)}/g, function (a, b) {
|
|
var r = vars[b];
|
|
if (allOptions.escape) {
|
|
return typeof r === 'string' || typeof r === 'number' ? encodeURIComponent(r.toString()) : encodeURIComponent(a);
|
|
} else {
|
|
return typeof r === 'string' || typeof r === 'number' ? r.toString() : a;
|
|
}
|
|
});
|
|
};
|
|
if (url.charAt(0) !== '/') {
|
|
url = '/' + url;
|
|
}
|
|
return _build(url, params || {});
|
|
};
|
|
|
|
/**
|
|
* Generate the url with webroot for the given relative url, which can contain parameters
|
|
*
|
|
* Parameters will be URL encoded automatically
|
|
*
|
|
* @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token
|
|
* @param {object} params parameters to be replaced into the url
|
|
* @param {UrlOptions} options options for the parameter replacement
|
|
* @param {boolean} options.noRewrite True if you want to force index.php being added
|
|
* @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true)
|
|
* @return {string} URL with webroot for the given relative URL
|
|
*/
|
|
const generateUrl = (url, params, options) => {
|
|
var _window;
|
|
const allOptions = Object.assign({
|
|
noRewrite: false
|
|
}, options || {});
|
|
if (((_window = window) === null || _window === void 0 || (_window = _window.OC) === null || _window === void 0 || (_window = _window.config) === null || _window === void 0 ? void 0 : _window.modRewriteWorking) === true && !allOptions.noRewrite) {
|
|
return getRootUrl() + _generateUrlPath(url, params, options);
|
|
}
|
|
return getRootUrl() + '/index.php' + _generateUrlPath(url, params, options);
|
|
};
|
|
|
|
/**
|
|
* Get the path with webroot to an image file
|
|
* if no extension is given for the image, it will automatically decide
|
|
* between .png and .svg based on what the browser supports
|
|
*
|
|
* @param {string} app the app id to which the image belongs
|
|
* @param {string} file the name of the image file
|
|
* @return {string}
|
|
*/
|
|
exports.generateUrl = generateUrl;
|
|
const imagePath = (app, file) => {
|
|
if (file.indexOf('.') === -1) {
|
|
//if no extension is given, use svg
|
|
return generateFilePath(app, 'img', file + '.svg');
|
|
}
|
|
return generateFilePath(app, 'img', file);
|
|
};
|
|
|
|
/**
|
|
* Get the url with webroot for a file in an app
|
|
*
|
|
* @param {string} app the id of the app
|
|
* @param {string} type the type of the file to link to (e.g. css,img,ajax.template)
|
|
* @param {string} file the filename
|
|
* @return {string} URL with webroot for a file in an app
|
|
*/
|
|
exports.imagePath = imagePath;
|
|
const generateFilePath = (app, type, file) => {
|
|
var _window2;
|
|
const isCore = ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.OC) === null || _window2 === void 0 || (_window2 = _window2.coreApps) === null || _window2 === void 0 ? void 0 : _window2.indexOf(app)) !== -1;
|
|
let link = getRootUrl();
|
|
if (file.substring(file.length - 3) === 'php' && !isCore) {
|
|
link += '/index.php/apps/' + app;
|
|
if (file !== 'index.php') {
|
|
link += '/';
|
|
if (type) {
|
|
link += encodeURI(type + '/');
|
|
}
|
|
link += file;
|
|
}
|
|
} else if (file.substring(file.length - 3) !== 'php' && !isCore) {
|
|
link = getAppRootUrl(app);
|
|
if (type) {
|
|
link += '/' + type + '/';
|
|
}
|
|
if (link.substring(link.length - 1) !== '/') {
|
|
link += '/';
|
|
}
|
|
link += file;
|
|
} else {
|
|
if ((app === 'settings' || app === 'core' || app === 'search') && type === 'ajax') {
|
|
link += '/index.php/';
|
|
} else {
|
|
link += '/';
|
|
}
|
|
if (!isCore) {
|
|
link += 'apps/';
|
|
}
|
|
if (app !== '') {
|
|
app += '/';
|
|
link += app;
|
|
}
|
|
if (type) {
|
|
link += type + '/';
|
|
}
|
|
link += file;
|
|
}
|
|
return link;
|
|
};
|
|
|
|
/**
|
|
* Return the web root path where this Nextcloud instance
|
|
* is accessible, with a leading slash.
|
|
* For example "/nextcloud".
|
|
*
|
|
* @return {string} web root path
|
|
*/
|
|
exports.generateFilePath = generateFilePath;
|
|
function getRootUrl() {
|
|
let webroot = window._oc_webroot;
|
|
if (typeof webroot === 'undefined') {
|
|
webroot = location.pathname;
|
|
const pos = webroot.indexOf('/index.php/');
|
|
if (pos !== -1) {
|
|
webroot = webroot.substr(0, pos);
|
|
} else {
|
|
webroot = webroot.substr(0, webroot.lastIndexOf('/'));
|
|
}
|
|
}
|
|
return webroot;
|
|
}
|
|
|
|
/**
|
|
* Return the web root path for a given app
|
|
* @param {string} app The ID of the app
|
|
*/
|
|
function getAppRootUrl(app) {
|
|
var _window$_oc_appswebro, _webroots$app;
|
|
const webroots = (_window$_oc_appswebro = window._oc_appswebroots) !== null && _window$_oc_appswebro !== void 0 ? _window$_oc_appswebro : {};
|
|
return (_webroots$app = webroots[app]) !== null && _webroots$app !== void 0 ? _webroots$app : '';
|
|
}
|
|
//# sourceMappingURL=index.js.map
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./css/calendar.scss":
|
|
/*!***************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./css/calendar.scss ***!
|
|
\***************************************************************************************************************************************************************************/
|
|
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js");
|
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
// Imports
|
|
|
|
|
|
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
// Module
|
|
___CSS_LOADER_EXPORT___.push([module.id, `@charset "UTF-8";
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2019 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2016 Raghu Nayyar <hey@raghunayyar.com>
|
|
* @copyright 2018 Georg Ehrke <oc.list@georgehrke.com>
|
|
* @copyright 2017 John Molakvoæ <skjnldsv@protonmail.com>
|
|
*
|
|
* @author Raghu Nayyar
|
|
* @author Georg Ehrke
|
|
* @author John Molakvoæ
|
|
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
.app-calendar .datepicker-button-section,
|
|
.app-calendar .today-button-section,
|
|
.app-calendar .view-button-section {
|
|
display: flex;
|
|
}
|
|
.app-calendar .datepicker-button-section .button,
|
|
.app-calendar .today-button-section .button,
|
|
.app-calendar .view-button-section .button {
|
|
border-radius: 0;
|
|
font-weight: normal;
|
|
margin: 0 0 var(--default-grid-baseline) 0;
|
|
flex-grow: 1;
|
|
}
|
|
.app-calendar .datepicker-button-section .button:first-child:not(:only-of-type),
|
|
.app-calendar .today-button-section .button:first-child:not(:only-of-type),
|
|
.app-calendar .view-button-section .button:first-child:not(:only-of-type) {
|
|
border-radius: var(--border-radius-pill) 0 0 var(--border-radius-pill);
|
|
}
|
|
.app-calendar .datepicker-button-section .button:last-child:not(:only-of-type),
|
|
.app-calendar .today-button-section .button:last-child:not(:only-of-type),
|
|
.app-calendar .view-button-section .button:last-child:not(:only-of-type) {
|
|
border-radius: 0 var(--border-radius-pill) var(--border-radius-pill) 0;
|
|
}
|
|
.app-calendar .datepicker-button-section .button:not(:only-of-type):not(:first-child):not(:last-child),
|
|
.app-calendar .today-button-section .button:not(:only-of-type):not(:first-child):not(:last-child),
|
|
.app-calendar .view-button-section .button:not(:only-of-type):not(:first-child):not(:last-child) {
|
|
border-radius: 0;
|
|
}
|
|
.app-calendar .datepicker-button-section .button:only-child,
|
|
.app-calendar .today-button-section .button:only-child,
|
|
.app-calendar .view-button-section .button:only-child {
|
|
border-radius: var(--border-radius-pill);
|
|
}
|
|
.app-calendar .datepicker-button-section .button:hover,
|
|
.app-calendar .datepicker-button-section .button:focus,
|
|
.app-calendar .datepicker-button-section .button.active,
|
|
.app-calendar .today-button-section .button:hover,
|
|
.app-calendar .today-button-section .button:focus,
|
|
.app-calendar .today-button-section .button.active,
|
|
.app-calendar .view-button-section .button:hover,
|
|
.app-calendar .view-button-section .button:focus,
|
|
.app-calendar .view-button-section .button.active {
|
|
z-index: 50;
|
|
}
|
|
.app-calendar .datepicker-button-section__datepicker-label {
|
|
flex-grow: 4 !important;
|
|
text-align: center;
|
|
}
|
|
.app-calendar .datepicker-button-section__datepicker {
|
|
margin-left: 26px;
|
|
margin-top: 48px;
|
|
position: absolute !important;
|
|
width: 0 !important;
|
|
}
|
|
.app-calendar .datepicker-button-section__datepicker .mx-input-wrapper {
|
|
display: none !important;
|
|
}
|
|
.app-calendar .datepicker-button-section__previous, .app-calendar .datepicker-button-section__next {
|
|
background-size: 10px;
|
|
flex-grow: 0 !important;
|
|
width: 34px;
|
|
padding: 0 6px !important;
|
|
}
|
|
.app-calendar .app-navigation-header {
|
|
padding: calc(var(--default-grid-baseline, 4px) * 2);
|
|
}
|
|
.app-calendar .new-event-today-view-section {
|
|
display: flex;
|
|
}
|
|
.app-calendar .new-event-today-view-section .button {
|
|
margin: 0 var(--default-grid-baseline) 0 0;
|
|
}
|
|
.app-calendar .new-event-today-view-section .new-event {
|
|
flex-grow: 5;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
}
|
|
.app-calendar .new-event-today-view-section .today {
|
|
flex-grow: 1;
|
|
font-weight: normal !important;
|
|
}
|
|
.app-calendar .app-navigation-toggle {
|
|
background-color: var(--color-main-background) !important;
|
|
}
|
|
.app-calendar .app-navigation button.icon-share {
|
|
opacity: 0.3 !important;
|
|
}
|
|
.app-calendar .app-navigation button.icon-shared,
|
|
.app-calendar .app-navigation button.icon-public {
|
|
opacity: 0.7 !important;
|
|
}
|
|
.app-calendar .app-navigation button.icon-share:active,
|
|
.app-calendar .app-navigation button.icon-share:focus,
|
|
.app-calendar .app-navigation button.icon-share:hover,
|
|
.app-calendar .app-navigation button.icon-shared:active,
|
|
.app-calendar .app-navigation button.icon-shared:focus,
|
|
.app-calendar .app-navigation button.icon-shared:hover,
|
|
.app-calendar .app-navigation button.icon-public:active,
|
|
.app-calendar .app-navigation button.icon-public:focus,
|
|
.app-calendar .app-navigation button.icon-public:hover {
|
|
opacity: 1 !important;
|
|
}
|
|
.app-calendar .app-navigation #calendars-list {
|
|
display: block !important;
|
|
}
|
|
.app-calendar .app-navigation li.app-navigation-loading-placeholder-entry div.icon.icon-loading {
|
|
min-height: 44px;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-wrapper.deleted .app-navigation-entry__name {
|
|
text-decoration: line-through;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-wrapper.open-sharing {
|
|
box-shadow: inset 4px 0 var(--color-primary-element) !important;
|
|
margin-left: -6px;
|
|
padding-left: 6px;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-wrapper.disabled .app-navigation-entry__name {
|
|
color: var(--color-text-lighter) !important;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-wrapper .app-navigation-entry__children .app-navigation-entry {
|
|
padding-left: 0 !important;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-wrapper .app-navigation-entry__children .app-navigation-entry .avatar {
|
|
width: 32px;
|
|
height: 32px;
|
|
background-color: var(--color-border-dark);
|
|
background-size: 16px;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-wrapper .app-navigation-entry__children .app-navigation-entry .avatar.published {
|
|
background-color: var(--color-primary-element);
|
|
color: white;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry__multiselect {
|
|
padding: 0 8px;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry__multiselect .multiselect {
|
|
width: 100%;
|
|
border-radius: var(--border-radius-large);
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry__multiselect .multiselect__content-wrapper {
|
|
z-index: 200 !important;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry__utils .action-checkbox__label {
|
|
padding-right: 0 !important;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry__utils .action-checkbox__label::before {
|
|
margin: 0 4px 0 !important;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-new-calendar .app-navigation-entry__name {
|
|
color: var(--color-text-maxcontrast) !important;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-new-calendar:hover .app-navigation-entry__name, .app-calendar .app-navigation .app-navigation-entry-new-calendar--open .app-navigation-entry__name {
|
|
color: var(--color-text-light) !important;
|
|
}
|
|
.app-calendar .app-navigation .app-navigation-entry-new-calendar .action-item:not(.action-item--open) .action-item__menutoggle:not(:hover):not(:focus):not(:active) {
|
|
opacity: 0.5;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section div.multiselect {
|
|
width: calc(100% - 14px);
|
|
max-width: none;
|
|
z-index: 105;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .oneline {
|
|
white-space: nowrap;
|
|
position: relative;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList {
|
|
list-style-type: none;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li {
|
|
height: 44px;
|
|
white-space: normal;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
position: relative;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li .username {
|
|
padding: 0 8px;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup {
|
|
margin-left: auto;
|
|
display: flex;
|
|
align-items: center;
|
|
white-space: nowrap;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > a:hover,
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > a:focus,
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .share-menu > a:hover,
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .share-menu > a:focus {
|
|
box-shadow: none !important;
|
|
opacity: 1 !important;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .icon:not(.hidden),
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .share-menu .icon:not(.hidden) {
|
|
padding: 14px;
|
|
height: 44px;
|
|
width: 44px;
|
|
opacity: 0.5;
|
|
display: block;
|
|
cursor: pointer;
|
|
}
|
|
.app-calendar .app-navigation ul > li.app-navigation-entry-wrapper div.sharing-section .shareWithList > li > .sharingOptionsGroup > .share-menu {
|
|
position: relative;
|
|
display: block;
|
|
}
|
|
.app-calendar .app-navigation ul .appointment-config-list .app-navigation-caption {
|
|
margin-top: 22px;
|
|
}
|
|
.app-calendar .app-navigation ul .appointment-config-list .app-navigation-entry-link,
|
|
.app-calendar .app-navigation ul .appointment-config-list .app-navigation-entry-link * {
|
|
cursor: default;
|
|
}
|
|
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2019 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
.app-calendar .app-sidebar .editor-invitee-list-empty-message,
|
|
.app-calendar .app-sidebar .editor-reminders-list-empty-message,
|
|
.app-calendar .app-sidebar .editor-invitee-list-no-email-configured-message,
|
|
.event-popover .event-popover__inner .editor-invitee-list-empty-message,
|
|
.event-popover .event-popover__inner .editor-reminders-list-empty-message,
|
|
.event-popover .event-popover__inner .editor-invitee-list-no-email-configured-message {
|
|
margin-top: 20px;
|
|
}
|
|
.app-calendar .app-sidebar .editor-invitee-list-empty-message__icon,
|
|
.app-calendar .app-sidebar .editor-reminders-list-empty-message__icon,
|
|
.app-calendar .app-sidebar .editor-invitee-list-no-email-configured-message__icon,
|
|
.event-popover .event-popover__inner .editor-invitee-list-empty-message__icon,
|
|
.event-popover .event-popover__inner .editor-reminders-list-empty-message__icon,
|
|
.event-popover .event-popover__inner .editor-invitee-list-no-email-configured-message__icon {
|
|
background-size: 50px;
|
|
height: 50px;
|
|
width: 50px;
|
|
margin: 0 auto;
|
|
opacity: 0.5;
|
|
}
|
|
.app-calendar .app-sidebar .editor-invitee-list-empty-message__caption,
|
|
.app-calendar .app-sidebar .editor-reminders-list-empty-message__caption,
|
|
.app-calendar .app-sidebar .editor-invitee-list-no-email-configured-message__caption,
|
|
.event-popover .event-popover__inner .editor-invitee-list-empty-message__caption,
|
|
.event-popover .event-popover__inner .editor-reminders-list-empty-message__caption,
|
|
.event-popover .event-popover__inner .editor-invitee-list-no-email-configured-message__caption {
|
|
margin-top: 8px;
|
|
text-align: center;
|
|
color: var(--color-text-lighter);
|
|
}
|
|
.app-calendar .app-sidebar .editor-invitee-list-no-email-configured-message__icon,
|
|
.event-popover .event-popover__inner .editor-invitee-list-no-email-configured-message__icon {
|
|
font-size: 50px;
|
|
line-height: 1em;
|
|
user-select: none;
|
|
}
|
|
.app-calendar .app-sidebar .editor-reminders-list-new-button,
|
|
.event-popover .event-popover__inner .editor-reminders-list-new-button {
|
|
width: 100%;
|
|
background-position-x: 8px;
|
|
}
|
|
.app-calendar .app-sidebar .app-sidebar-tab,
|
|
.event-popover .event-popover__inner .app-sidebar-tab {
|
|
overflow: unset !important;
|
|
max-height: unset !important;
|
|
height: auto !important;
|
|
}
|
|
.app-calendar .app-sidebar .app-sidebar-tab__buttons,
|
|
.event-popover .event-popover__inner .app-sidebar-tab__buttons {
|
|
position: fixed;
|
|
bottom: var(--body-container-margin);
|
|
z-index: 2;
|
|
width: calc(27vw - 11px);
|
|
min-width: 289px;
|
|
max-width: 489px;
|
|
background-color: var(--color-main-background);
|
|
border-radius: 0 0 var(--body-container-radius) 0;
|
|
padding: 0 8px 6px 0;
|
|
}
|
|
.app-calendar .app-sidebar .app-sidebar-tab__buttons button,
|
|
.event-popover .event-popover__inner .app-sidebar-tab__buttons button {
|
|
width: 100%;
|
|
height: 44px;
|
|
}
|
|
.app-calendar .app-sidebar .app-sidebar-tab__content,
|
|
.event-popover .event-popover__inner .app-sidebar-tab__content {
|
|
margin-bottom: 120px;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker-loading-placeholder,
|
|
.event-popover .event-popover__inner .property-title-time-picker-loading-placeholder {
|
|
width: 100%;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker-loading-placeholder__icon,
|
|
.event-popover .event-popover__inner .property-title-time-picker-loading-placeholder__icon {
|
|
margin: 0 auto;
|
|
height: 62px;
|
|
width: 62px;
|
|
background-size: 62px;
|
|
}
|
|
.app-calendar .app-sidebar .app-sidebar__loading-indicator,
|
|
.event-popover .event-popover__inner .app-sidebar__loading-indicator {
|
|
width: 100%;
|
|
margin-top: 20vh;
|
|
}
|
|
.app-calendar .app-sidebar .app-sidebar__loading-indicator__icon,
|
|
.event-popover .event-popover__inner .app-sidebar__loading-indicator__icon {
|
|
margin: 0 auto;
|
|
height: 44px;
|
|
width: 44px;
|
|
background-size: 44px;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section:not(:first-of-type),
|
|
.event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section:not(:first-of-type) {
|
|
margin-top: 20px;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section--on-the-select,
|
|
.event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section--on-the-select {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section--on-the-select .v-select,
|
|
.event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section--on-the-select .v-select {
|
|
width: 100%;
|
|
min-width: 100px !important;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section__title,
|
|
.event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section__title {
|
|
list-style: none;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section__grid,
|
|
.event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section__grid {
|
|
display: grid;
|
|
grid-gap: 0;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set .repeat-option-set-section__grid .repeat-option-set-section-grid-item,
|
|
.event-popover .event-popover__inner .repeat-option-set .repeat-option-set-section__grid .repeat-option-set-section-grid-item {
|
|
padding: 8px;
|
|
border: 1px solid var(--color-border-dark);
|
|
text-align: center;
|
|
margin: 0;
|
|
border-radius: 0;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set--weekly .repeat-option-set-section__grid, .app-calendar .app-sidebar .repeat-option-set--monthly .repeat-option-set-section__grid,
|
|
.event-popover .event-popover__inner .repeat-option-set--weekly .repeat-option-set-section__grid,
|
|
.event-popover .event-popover__inner .repeat-option-set--monthly .repeat-option-set-section__grid {
|
|
grid-template-columns: repeat(7, auto);
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set--yearly .repeat-option-set-section__grid,
|
|
.event-popover .event-popover__inner .repeat-option-set--yearly .repeat-option-set-section__grid {
|
|
grid-template-columns: repeat(4, auto);
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set--interval-freq,
|
|
.event-popover .event-popover__inner .repeat-option-set--interval-freq {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set--interval-freq .multiselect,
|
|
.app-calendar .app-sidebar .repeat-option-set--interval-freq input[type=number],
|
|
.event-popover .event-popover__inner .repeat-option-set--interval-freq .multiselect,
|
|
.event-popover .event-popover__inner .repeat-option-set--interval-freq input[type=number] {
|
|
min-width: 100px;
|
|
width: 25%;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set--end,
|
|
.event-popover .event-popover__inner .repeat-option-set--end {
|
|
margin-top: 20px;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set--end .repeat-option-end__label, .app-calendar .app-sidebar .repeat-option-set--end .repeat-option-end__end-type-select,
|
|
.event-popover .event-popover__inner .repeat-option-set--end .repeat-option-end__label,
|
|
.event-popover .event-popover__inner .repeat-option-set--end .repeat-option-end__end-type-select {
|
|
display: block;
|
|
min-width: 160px;
|
|
width: 25%;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set--end .repeat-option-end__until,
|
|
.event-popover .event-popover__inner .repeat-option-set--end .repeat-option-end__until {
|
|
min-width: 75px;
|
|
width: 50%;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set--end .repeat-option-end__count,
|
|
.event-popover .event-popover__inner .repeat-option-set--end .repeat-option-end__count {
|
|
min-width: 75px;
|
|
width: 25%;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-set__label,
|
|
.event-popover .event-popover__inner .repeat-option-set__label {
|
|
margin-right: auto;
|
|
}
|
|
.app-calendar .app-sidebar .repeat-option-warning,
|
|
.event-popover .event-popover__inner .repeat-option-warning {
|
|
text-align: center;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker,
|
|
.event-popover .event-popover__inner .property-title-time-picker {
|
|
width: 100%;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker--readonly,
|
|
.event-popover .event-popover__inner .property-title-time-picker--readonly {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__icon,
|
|
.event-popover .event-popover__inner .property-title-time-picker__icon {
|
|
width: 34px;
|
|
height: 34px;
|
|
margin-left: -5px;
|
|
margin-right: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers, .app-calendar .app-sidebar .property-title-time-picker__all-day,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers,
|
|
.event-popover .event-popover__inner .property-title-time-picker__all-day {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers {
|
|
flex-wrap: wrap;
|
|
justify-content: space-between;
|
|
gap: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers .mx-datepicker,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers .mx-datepicker {
|
|
flex: 1 auto;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers .mx-datepicker .mx-input-append,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers .mx-datepicker .mx-input-append {
|
|
background-color: transparent !important;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly {
|
|
justify-content: start;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 8px 7px;
|
|
background-color: var(--color-main-background);
|
|
color: var(--color-main-text);
|
|
outline: none;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper--start-date,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper--start-date {
|
|
padding-right: 0;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper--end-date,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper--end-date {
|
|
padding-left: 0;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon {
|
|
margin-left: 8px;
|
|
height: 16px;
|
|
width: 16px;
|
|
opacity: 0.3;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon--highlighted,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon--highlighted {
|
|
opacity: 0.7;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon:focus, .app-calendar .app-sidebar .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon:hover,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon:focus,
|
|
.event-popover .event-popover__inner .property-title-time-picker__time-pickers--readonly .property-title-time-picker-read-only-wrapper__icon:hover {
|
|
opacity: 1;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__all-day,
|
|
.event-popover .event-popover__inner .property-title-time-picker__all-day {
|
|
padding-left: 3px;
|
|
margin-top: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker__all-day .checkbox-radio-switch__label,
|
|
.event-popover .event-popover__inner .property-title-time-picker__all-day .checkbox-radio-switch__label {
|
|
min-height: 32px;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker .datetime-picker-inline-icon,
|
|
.event-popover .event-popover__inner .property-title-time-picker .datetime-picker-inline-icon {
|
|
margin-top: 17px;
|
|
opacity: 0.3;
|
|
border: none;
|
|
background-color: transparent;
|
|
border-radius: 0;
|
|
padding: 6px !important;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker .datetime-picker-inline-icon--highlighted,
|
|
.event-popover .event-popover__inner .property-title-time-picker .datetime-picker-inline-icon--highlighted {
|
|
opacity: 0.7;
|
|
}
|
|
.app-calendar .app-sidebar .property-title-time-picker .datetime-picker-inline-icon:focus, .app-calendar .app-sidebar .property-title-time-picker .datetime-picker-inline-icon:hover,
|
|
.event-popover .event-popover__inner .property-title-time-picker .datetime-picker-inline-icon:focus,
|
|
.event-popover .event-popover__inner .property-title-time-picker .datetime-picker-inline-icon:hover {
|
|
opacity: 1;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-list,
|
|
.event-popover .event-popover__inner .property-alarm-list {
|
|
width: 100%;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item,
|
|
.event-popover .event-popover__inner .property-alarm-item {
|
|
display: flex;
|
|
align-items: center;
|
|
min-height: 44px;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__icon,
|
|
.event-popover .event-popover__inner .property-alarm-item__icon {
|
|
align-self: flex-start;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__icon--hidden,
|
|
.event-popover .event-popover__inner .property-alarm-item__icon--hidden {
|
|
visibility: hidden;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__icon .icon,
|
|
.event-popover .event-popover__inner .property-alarm-item__icon .icon {
|
|
width: 34px;
|
|
height: 44px;
|
|
margin-left: -5px;
|
|
margin-right: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__label,
|
|
.event-popover .event-popover__inner .property-alarm-item__label {
|
|
padding: 0 7px;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
align-self: center;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__options,
|
|
.event-popover .event-popover__inner .property-alarm-item__options {
|
|
margin-left: auto;
|
|
display: flex;
|
|
align-items: center;
|
|
white-space: nowrap;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-width: 0;
|
|
padding-right: 8px;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit input[type=number],
|
|
.event-popover .event-popover__inner .property-alarm-item__edit input[type=number] {
|
|
width: 4em;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit .multiselect,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit .multiselect {
|
|
flex: 1 auto;
|
|
height: 34px;
|
|
min-width: 0;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit .mx-datepicker,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit .mx-datepicker {
|
|
flex: 1 auto;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit--all-day,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit--all-day {
|
|
flex-wrap: wrap;
|
|
margin-bottom: 5px;
|
|
gap: 0 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit--all-day__distance, .app-calendar .app-sidebar .property-alarm-item__edit--all-day__time,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit--all-day__distance,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit--all-day__time {
|
|
display: flex;
|
|
flex: 1;
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit--all-day__distance .multiselect,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit--all-day__distance .multiselect {
|
|
width: 6em;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit--all-day__time__before-at-label,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit--all-day__time__before-at-label {
|
|
flex: 0 0 auto;
|
|
margin-right: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit--all-day__time .mx-datepicker,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit--all-day__time .mx-datepicker {
|
|
width: 7em;
|
|
}
|
|
.app-calendar .app-sidebar .property-alarm-item__edit--absolute .mx-datepicker,
|
|
.event-popover .event-popover__inner .property-alarm-item__edit--absolute .mx-datepicker {
|
|
width: unset;
|
|
}
|
|
.app-calendar .app-sidebar .property-repeat,
|
|
.event-popover .event-popover__inner .property-repeat {
|
|
width: 100%;
|
|
}
|
|
.app-calendar .app-sidebar .property-repeat__summary,
|
|
.event-popover .event-popover__inner .property-repeat__summary {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .property-repeat__summary__icon,
|
|
.event-popover .event-popover__inner .property-repeat__summary__icon {
|
|
width: 34px;
|
|
height: 34px;
|
|
margin-left: -5px;
|
|
margin-right: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-repeat__summary__content,
|
|
.event-popover .event-popover__inner .property-repeat__summary__content {
|
|
flex: 1 auto;
|
|
padding: 8px 7px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.app-calendar .app-sidebar .property-repeat__options,
|
|
.event-popover .event-popover__inner .property-repeat__options {
|
|
margin-bottom: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .resource-list-item,
|
|
.app-calendar .app-sidebar .invitees-list-item,
|
|
.event-popover .event-popover__inner .resource-list-item,
|
|
.event-popover .event-popover__inner .invitees-list-item {
|
|
display: flex;
|
|
align-items: center;
|
|
min-height: 44px;
|
|
}
|
|
.app-calendar .app-sidebar .resource-list-item__displayname,
|
|
.app-calendar .app-sidebar .invitees-list-item__displayname,
|
|
.event-popover .event-popover__inner .resource-list-item__displayname,
|
|
.event-popover .event-popover__inner .invitees-list-item__displayname {
|
|
margin-left: 8px;
|
|
}
|
|
.app-calendar .app-sidebar .resource-list-item__actions,
|
|
.app-calendar .app-sidebar .invitees-list-item__actions,
|
|
.event-popover .event-popover__inner .resource-list-item__actions,
|
|
.event-popover .event-popover__inner .invitees-list-item__actions {
|
|
margin-left: auto;
|
|
}
|
|
.app-calendar .app-sidebar .resource-list-item__organizer-hint,
|
|
.app-calendar .app-sidebar .invitees-list-item__organizer-hint,
|
|
.event-popover .event-popover__inner .resource-list-item__organizer-hint,
|
|
.event-popover .event-popover__inner .invitees-list-item__organizer-hint {
|
|
color: var(--color-text-maxcontrast);
|
|
font-weight: 300;
|
|
margin-left: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .resource-search__capacity,
|
|
.event-popover .event-popover__inner .resource-search__capacity {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .resource-search__capacity__actions,
|
|
.event-popover .event-popover__inner .resource-search__capacity__actions {
|
|
margin-left: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .avatar-participation-status,
|
|
.event-popover .event-popover__inner .avatar-participation-status {
|
|
position: relative;
|
|
height: 38px;
|
|
width: 38px;
|
|
}
|
|
.app-calendar .app-sidebar .avatar-participation-status__indicator,
|
|
.event-popover .event-popover__inner .avatar-participation-status__indicator {
|
|
position: absolute;
|
|
bottom: 0;
|
|
right: 0;
|
|
background-size: 10px;
|
|
height: 15px;
|
|
width: 15px;
|
|
border-radius: 50%;
|
|
}
|
|
.app-calendar .app-sidebar .avatar-participation-status__indicator.accepted,
|
|
.event-popover .event-popover__inner .avatar-participation-status__indicator.accepted {
|
|
background-color: #2fb130;
|
|
}
|
|
.app-calendar .app-sidebar .avatar-participation-status__indicator.declined,
|
|
.event-popover .event-popover__inner .avatar-participation-status__indicator.declined {
|
|
background-color: #ff0000;
|
|
}
|
|
.app-calendar .app-sidebar .avatar-participation-status__indicator.tentative,
|
|
.event-popover .event-popover__inner .avatar-participation-status__indicator.tentative {
|
|
background-color: #ffa704;
|
|
}
|
|
.app-calendar .app-sidebar .avatar-participation-status__indicator.delegated, .app-calendar .app-sidebar .avatar-participation-status__indicator.no-response,
|
|
.event-popover .event-popover__inner .avatar-participation-status__indicator.delegated,
|
|
.event-popover .event-popover__inner .avatar-participation-status__indicator.no-response {
|
|
background-color: grey;
|
|
}
|
|
.app-calendar .app-sidebar .property-text,
|
|
.app-calendar .app-sidebar .property-select,
|
|
.app-calendar .app-sidebar .property-color,
|
|
.app-calendar .app-sidebar .property-select-multiple,
|
|
.app-calendar .app-sidebar .property-title,
|
|
.app-calendar .app-sidebar .resource-capacity,
|
|
.app-calendar .app-sidebar .resource-room-type,
|
|
.event-popover .event-popover__inner .property-text,
|
|
.event-popover .event-popover__inner .property-select,
|
|
.event-popover .event-popover__inner .property-color,
|
|
.event-popover .event-popover__inner .property-select-multiple,
|
|
.event-popover .event-popover__inner .property-title,
|
|
.event-popover .event-popover__inner .resource-capacity,
|
|
.event-popover .event-popover__inner .resource-room-type {
|
|
display: flex;
|
|
width: 100%;
|
|
align-items: flex-start;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__icon, .app-calendar .app-sidebar .property-text__info,
|
|
.app-calendar .app-sidebar .property-select__icon,
|
|
.app-calendar .app-sidebar .property-select__info,
|
|
.app-calendar .app-sidebar .property-color__icon,
|
|
.app-calendar .app-sidebar .property-color__info,
|
|
.app-calendar .app-sidebar .property-select-multiple__icon,
|
|
.app-calendar .app-sidebar .property-select-multiple__info,
|
|
.app-calendar .app-sidebar .property-title__icon,
|
|
.app-calendar .app-sidebar .property-title__info,
|
|
.app-calendar .app-sidebar .resource-capacity__icon,
|
|
.app-calendar .app-sidebar .resource-capacity__info,
|
|
.app-calendar .app-sidebar .resource-room-type__icon,
|
|
.app-calendar .app-sidebar .resource-room-type__info,
|
|
.event-popover .event-popover__inner .property-text__icon,
|
|
.event-popover .event-popover__inner .property-text__info,
|
|
.event-popover .event-popover__inner .property-select__icon,
|
|
.event-popover .event-popover__inner .property-select__info,
|
|
.event-popover .event-popover__inner .property-color__icon,
|
|
.event-popover .event-popover__inner .property-color__info,
|
|
.event-popover .event-popover__inner .property-select-multiple__icon,
|
|
.event-popover .event-popover__inner .property-select-multiple__info,
|
|
.event-popover .event-popover__inner .property-title__icon,
|
|
.event-popover .event-popover__inner .property-title__info,
|
|
.event-popover .event-popover__inner .resource-capacity__icon,
|
|
.event-popover .event-popover__inner .resource-capacity__info,
|
|
.event-popover .event-popover__inner .resource-room-type__icon,
|
|
.event-popover .event-popover__inner .resource-room-type__info {
|
|
height: 34px;
|
|
width: 34px;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__icon--hidden,
|
|
.app-calendar .app-sidebar .property-select__icon--hidden,
|
|
.app-calendar .app-sidebar .property-color__icon--hidden,
|
|
.app-calendar .app-sidebar .property-select-multiple__icon--hidden,
|
|
.app-calendar .app-sidebar .property-title__icon--hidden,
|
|
.app-calendar .app-sidebar .resource-capacity__icon--hidden,
|
|
.app-calendar .app-sidebar .resource-room-type__icon--hidden,
|
|
.event-popover .event-popover__inner .property-text__icon--hidden,
|
|
.event-popover .event-popover__inner .property-select__icon--hidden,
|
|
.event-popover .event-popover__inner .property-color__icon--hidden,
|
|
.event-popover .event-popover__inner .property-select-multiple__icon--hidden,
|
|
.event-popover .event-popover__inner .property-title__icon--hidden,
|
|
.event-popover .event-popover__inner .resource-capacity__icon--hidden,
|
|
.event-popover .event-popover__inner .resource-room-type__icon--hidden {
|
|
visibility: hidden;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__info,
|
|
.app-calendar .app-sidebar .property-select__info,
|
|
.app-calendar .app-sidebar .property-color__info,
|
|
.app-calendar .app-sidebar .property-select-multiple__info,
|
|
.app-calendar .app-sidebar .property-title__info,
|
|
.app-calendar .app-sidebar .resource-capacity__info,
|
|
.app-calendar .app-sidebar .resource-room-type__info,
|
|
.event-popover .event-popover__inner .property-text__info,
|
|
.event-popover .event-popover__inner .property-select__info,
|
|
.event-popover .event-popover__inner .property-color__info,
|
|
.event-popover .event-popover__inner .property-select-multiple__info,
|
|
.event-popover .event-popover__inner .property-title__info,
|
|
.event-popover .event-popover__inner .resource-capacity__info,
|
|
.event-popover .event-popover__inner .resource-room-type__info {
|
|
display: flex;
|
|
justify-content: center;
|
|
flex-shrink: 0;
|
|
opacity: 0.5;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__info:hover,
|
|
.app-calendar .app-sidebar .property-select__info:hover,
|
|
.app-calendar .app-sidebar .property-color__info:hover,
|
|
.app-calendar .app-sidebar .property-select-multiple__info:hover,
|
|
.app-calendar .app-sidebar .property-title__info:hover,
|
|
.app-calendar .app-sidebar .resource-capacity__info:hover,
|
|
.app-calendar .app-sidebar .resource-room-type__info:hover,
|
|
.event-popover .event-popover__inner .property-text__info:hover,
|
|
.event-popover .event-popover__inner .property-select__info:hover,
|
|
.event-popover .event-popover__inner .property-color__info:hover,
|
|
.event-popover .event-popover__inner .property-select-multiple__info:hover,
|
|
.event-popover .event-popover__inner .property-title__info:hover,
|
|
.event-popover .event-popover__inner .resource-capacity__info:hover,
|
|
.event-popover .event-popover__inner .resource-room-type__info:hover {
|
|
opacity: 1;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__icon,
|
|
.app-calendar .app-sidebar .property-select__icon,
|
|
.app-calendar .app-sidebar .property-color__icon,
|
|
.app-calendar .app-sidebar .property-select-multiple__icon,
|
|
.app-calendar .app-sidebar .property-title__icon,
|
|
.app-calendar .app-sidebar .resource-capacity__icon,
|
|
.app-calendar .app-sidebar .resource-room-type__icon,
|
|
.event-popover .event-popover__inner .property-text__icon,
|
|
.event-popover .event-popover__inner .property-select__icon,
|
|
.event-popover .event-popover__inner .property-color__icon,
|
|
.event-popover .event-popover__inner .property-select-multiple__icon,
|
|
.event-popover .event-popover__inner .property-title__icon,
|
|
.event-popover .event-popover__inner .resource-capacity__icon,
|
|
.event-popover .event-popover__inner .resource-room-type__icon {
|
|
flex-shrink: 0;
|
|
margin-left: -5px;
|
|
margin-right: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__input,
|
|
.app-calendar .app-sidebar .property-select__input,
|
|
.app-calendar .app-sidebar .property-color__input,
|
|
.app-calendar .app-sidebar .property-select-multiple__input,
|
|
.app-calendar .app-sidebar .property-title__input,
|
|
.app-calendar .app-sidebar .resource-capacity__input,
|
|
.app-calendar .app-sidebar .resource-room-type__input,
|
|
.event-popover .event-popover__inner .property-text__input,
|
|
.event-popover .event-popover__inner .property-select__input,
|
|
.event-popover .event-popover__inner .property-color__input,
|
|
.event-popover .event-popover__inner .property-select-multiple__input,
|
|
.event-popover .event-popover__inner .property-title__input,
|
|
.event-popover .event-popover__inner .resource-capacity__input,
|
|
.event-popover .event-popover__inner .resource-room-type__input {
|
|
flex-grow: 2;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__input textarea,
|
|
.app-calendar .app-sidebar .property-text__input input,
|
|
.app-calendar .app-sidebar .property-text__input div.v-select,
|
|
.app-calendar .app-sidebar .property-select__input textarea,
|
|
.app-calendar .app-sidebar .property-select__input input,
|
|
.app-calendar .app-sidebar .property-select__input div.v-select,
|
|
.app-calendar .app-sidebar .property-color__input textarea,
|
|
.app-calendar .app-sidebar .property-color__input input,
|
|
.app-calendar .app-sidebar .property-color__input div.v-select,
|
|
.app-calendar .app-sidebar .property-select-multiple__input textarea,
|
|
.app-calendar .app-sidebar .property-select-multiple__input input,
|
|
.app-calendar .app-sidebar .property-select-multiple__input div.v-select,
|
|
.app-calendar .app-sidebar .property-title__input textarea,
|
|
.app-calendar .app-sidebar .property-title__input input,
|
|
.app-calendar .app-sidebar .property-title__input div.v-select,
|
|
.app-calendar .app-sidebar .resource-capacity__input textarea,
|
|
.app-calendar .app-sidebar .resource-capacity__input input,
|
|
.app-calendar .app-sidebar .resource-capacity__input div.v-select,
|
|
.app-calendar .app-sidebar .resource-room-type__input textarea,
|
|
.app-calendar .app-sidebar .resource-room-type__input input,
|
|
.app-calendar .app-sidebar .resource-room-type__input div.v-select,
|
|
.event-popover .event-popover__inner .property-text__input textarea,
|
|
.event-popover .event-popover__inner .property-text__input input,
|
|
.event-popover .event-popover__inner .property-text__input div.v-select,
|
|
.event-popover .event-popover__inner .property-select__input textarea,
|
|
.event-popover .event-popover__inner .property-select__input input,
|
|
.event-popover .event-popover__inner .property-select__input div.v-select,
|
|
.event-popover .event-popover__inner .property-color__input textarea,
|
|
.event-popover .event-popover__inner .property-color__input input,
|
|
.event-popover .event-popover__inner .property-color__input div.v-select,
|
|
.event-popover .event-popover__inner .property-select-multiple__input textarea,
|
|
.event-popover .event-popover__inner .property-select-multiple__input input,
|
|
.event-popover .event-popover__inner .property-select-multiple__input div.v-select,
|
|
.event-popover .event-popover__inner .property-title__input textarea,
|
|
.event-popover .event-popover__inner .property-title__input input,
|
|
.event-popover .event-popover__inner .property-title__input div.v-select,
|
|
.event-popover .event-popover__inner .resource-capacity__input textarea,
|
|
.event-popover .event-popover__inner .resource-capacity__input input,
|
|
.event-popover .event-popover__inner .resource-capacity__input div.v-select,
|
|
.event-popover .event-popover__inner .resource-room-type__input textarea,
|
|
.event-popover .event-popover__inner .resource-room-type__input input,
|
|
.event-popover .event-popover__inner .resource-room-type__input div.v-select {
|
|
width: 100%;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__input textarea,
|
|
.app-calendar .app-sidebar .property-select__input textarea,
|
|
.app-calendar .app-sidebar .property-color__input textarea,
|
|
.app-calendar .app-sidebar .property-select-multiple__input textarea,
|
|
.app-calendar .app-sidebar .property-title__input textarea,
|
|
.app-calendar .app-sidebar .resource-capacity__input textarea,
|
|
.app-calendar .app-sidebar .resource-room-type__input textarea,
|
|
.event-popover .event-popover__inner .property-text__input textarea,
|
|
.event-popover .event-popover__inner .property-select__input textarea,
|
|
.event-popover .event-popover__inner .property-color__input textarea,
|
|
.event-popover .event-popover__inner .property-select-multiple__input textarea,
|
|
.event-popover .event-popover__inner .property-title__input textarea,
|
|
.event-popover .event-popover__inner .resource-capacity__input textarea,
|
|
.event-popover .event-popover__inner .resource-room-type__input textarea {
|
|
max-height: calc(100vh - 500px);
|
|
vertical-align: top;
|
|
margin: 0;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__input--readonly div,
|
|
.app-calendar .app-sidebar .property-select__input--readonly div,
|
|
.app-calendar .app-sidebar .property-color__input--readonly div,
|
|
.app-calendar .app-sidebar .property-select-multiple__input--readonly div,
|
|
.app-calendar .app-sidebar .property-title__input--readonly div,
|
|
.app-calendar .app-sidebar .resource-capacity__input--readonly div,
|
|
.app-calendar .app-sidebar .resource-room-type__input--readonly div,
|
|
.event-popover .event-popover__inner .property-text__input--readonly div,
|
|
.event-popover .event-popover__inner .property-select__input--readonly div,
|
|
.event-popover .event-popover__inner .property-color__input--readonly div,
|
|
.event-popover .event-popover__inner .property-select-multiple__input--readonly div,
|
|
.event-popover .event-popover__inner .property-title__input--readonly div,
|
|
.event-popover .event-popover__inner .resource-capacity__input--readonly div,
|
|
.event-popover .event-popover__inner .resource-room-type__input--readonly div {
|
|
width: calc(100% - 8px); /* for typical (thin) scrollbar size */
|
|
white-space: pre-line;
|
|
padding: 8px 7px;
|
|
background-color: var(--color-main-background);
|
|
color: var(--color-main-text);
|
|
outline: none;
|
|
overflow-y: scroll;
|
|
word-break: break-word; /* allows breaking on long URLs */
|
|
max-height: 30vh;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.app-calendar .app-sidebar .property-select__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.app-calendar .app-sidebar .property-color__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.app-calendar .app-sidebar .property-select-multiple__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.app-calendar .app-sidebar .property-title__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.app-calendar .app-sidebar .resource-capacity__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.app-calendar .app-sidebar .resource-room-type__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.event-popover .event-popover__inner .property-text__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.event-popover .event-popover__inner .property-select__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.event-popover .event-popover__inner .property-color__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.event-popover .event-popover__inner .property-select-multiple__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.event-popover .event-popover__inner .property-title__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.event-popover .event-popover__inner .resource-capacity__input--readonly-calendar-picker div.calendar-picker-option,
|
|
.event-popover .event-popover__inner .resource-room-type__input--readonly-calendar-picker div.calendar-picker-option {
|
|
padding: 8px 7px;
|
|
}
|
|
.app-calendar .app-sidebar .property-text,
|
|
.app-calendar .app-sidebar .property-select,
|
|
.app-calendar .app-sidebar .property-color,
|
|
.app-calendar .app-sidebar .property-select-multiple,
|
|
.app-calendar .app-sidebar .property-title,
|
|
.app-calendar .app-sidebar .property-repeat,
|
|
.app-calendar .app-sidebar .resource-capacity,
|
|
.app-calendar .app-sidebar .resource-room-type,
|
|
.event-popover .event-popover__inner .property-text,
|
|
.event-popover .event-popover__inner .property-select,
|
|
.event-popover .event-popover__inner .property-color,
|
|
.event-popover .event-popover__inner .property-select-multiple,
|
|
.event-popover .event-popover__inner .property-title,
|
|
.event-popover .event-popover__inner .property-repeat,
|
|
.event-popover .event-popover__inner .resource-capacity,
|
|
.event-popover .event-popover__inner .resource-room-type {
|
|
margin-bottom: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-text--readonly,
|
|
.app-calendar .app-sidebar .property-select--readonly,
|
|
.app-calendar .app-sidebar .property-color--readonly,
|
|
.app-calendar .app-sidebar .property-select-multiple--readonly,
|
|
.app-calendar .app-sidebar .property-title--readonly,
|
|
.app-calendar .app-sidebar .property-repeat--readonly,
|
|
.app-calendar .app-sidebar .resource-capacity--readonly,
|
|
.app-calendar .app-sidebar .resource-room-type--readonly,
|
|
.event-popover .event-popover__inner .property-text--readonly,
|
|
.event-popover .event-popover__inner .property-select--readonly,
|
|
.event-popover .event-popover__inner .property-color--readonly,
|
|
.event-popover .event-popover__inner .property-select-multiple--readonly,
|
|
.event-popover .event-popover__inner .property-title--readonly,
|
|
.event-popover .event-popover__inner .property-repeat--readonly,
|
|
.event-popover .event-popover__inner .resource-capacity--readonly,
|
|
.event-popover .event-popover__inner .resource-room-type--readonly {
|
|
margin-bottom: 0;
|
|
}
|
|
.app-calendar .app-sidebar .property-select,
|
|
.app-calendar .app-sidebar .property-select-multiple,
|
|
.event-popover .event-popover__inner .property-select,
|
|
.event-popover .event-popover__inner .property-select-multiple {
|
|
align-items: center;
|
|
}
|
|
.app-calendar .app-sidebar .property-select .v-select,
|
|
.app-calendar .app-sidebar .property-select-multiple .v-select,
|
|
.event-popover .event-popover__inner .property-select .v-select,
|
|
.event-popover .event-popover__inner .property-select-multiple .v-select {
|
|
min-width: unset !important;
|
|
}
|
|
.app-calendar .app-sidebar .property-color__input,
|
|
.event-popover .event-popover__inner .property-color__input {
|
|
display: flex;
|
|
gap: 5px;
|
|
margin-bottom: 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-color__input--readonly,
|
|
.event-popover .event-popover__inner .property-color__input--readonly {
|
|
margin: 3px 0 3px 7px;
|
|
}
|
|
.app-calendar .app-sidebar .property-color__color-preview,
|
|
.event-popover .event-popover__inner .property-color__color-preview {
|
|
width: 44px !important;
|
|
height: 44px !important;
|
|
border-radius: 44px;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__icon,
|
|
.event-popover .event-popover__inner .property-text__icon {
|
|
height: unset;
|
|
align-self: flex-start;
|
|
padding-top: 12px;
|
|
}
|
|
.app-calendar .app-sidebar .property-text--readonly .property-text__icon,
|
|
.event-popover .event-popover__inner .property-text--readonly .property-text__icon {
|
|
padding-top: 10px;
|
|
}
|
|
.app-calendar .app-sidebar .property-text__input--readonly,
|
|
.event-popover .event-popover__inner .property-text__input--readonly {
|
|
line-height: 1;
|
|
padding-top: calc(var(--default-line-height) / 2 - 0.5lh);
|
|
}
|
|
.app-calendar .app-sidebar .property-text__input textarea,
|
|
.event-popover .event-popover__inner .property-text__input textarea {
|
|
resize: none;
|
|
}
|
|
.app-calendar .app-sidebar .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly,
|
|
.event-popover .event-popover__inner .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly {
|
|
width: 100%;
|
|
}
|
|
.app-calendar .app-sidebar .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly .property-select-multiple-colored-tag-wrapper,
|
|
.event-popover .event-popover__inner .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly .property-select-multiple-colored-tag-wrapper {
|
|
align-items: center;
|
|
overflow: hidden;
|
|
max-width: 100%;
|
|
position: relative;
|
|
padding: 3px 5px;
|
|
}
|
|
.app-calendar .app-sidebar .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly .property-select-multiple-colored-tag-wrapper .multiselect__tag,
|
|
.event-popover .event-popover__inner .property-select-multiple .property-select-multiple__input.property-select-multiple__input--readonly .property-select-multiple-colored-tag-wrapper .multiselect__tag {
|
|
line-height: 20px;
|
|
padding: 1px 5px;
|
|
background-image: none;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
border-radius: 3px;
|
|
max-width: fit-content;
|
|
margin: 3px;
|
|
}
|
|
.app-calendar .app-sidebar .property-title__input, .app-calendar .app-sidebar .property-title input,
|
|
.event-popover .event-popover__inner .property-title__input,
|
|
.event-popover .event-popover__inner .property-title input {
|
|
font-weight: bold;
|
|
}
|
|
.app-calendar .app-sidebar .property-title__input--readonly,
|
|
.event-popover .event-popover__inner .property-title__input--readonly {
|
|
font-size: 18px;
|
|
}
|
|
.app-calendar .app-sidebar .property-title input,
|
|
.app-calendar .app-sidebar .property-title-time-picker input,
|
|
.event-popover .event-popover__inner .property-title input,
|
|
.event-popover .event-popover__inner .property-title-time-picker input {
|
|
margin: 0;
|
|
}
|
|
.app-calendar .app-sidebar .resource-room-type,
|
|
.event-popover .event-popover__inner .resource-room-type {
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.event-popover .event-popover__inner .event-popover__response-buttons {
|
|
margin-top: 8px;
|
|
margin-bottom: 0;
|
|
}
|
|
.event-popover .event-popover__inner .property-text__icon,
|
|
.event-popover .event-popover__inner .property-title-time-picker__icon {
|
|
margin: 0 !important;
|
|
}
|
|
|
|
.timezone-popover-wrapper .popover__inner {
|
|
padding: 20px;
|
|
}
|
|
.timezone-popover-wrapper__title {
|
|
margin-bottom: 8px;
|
|
}
|
|
.timezone-popover-wrapper__timezone-select {
|
|
min-width: 200px;
|
|
}
|
|
|
|
.event-popover .v-popper__inner {
|
|
overflow: unset !important;
|
|
}
|
|
.event-popover .event-popover__inner {
|
|
text-align: left;
|
|
max-width: 480px;
|
|
width: 480px;
|
|
padding: 5px 10px 10px 10px;
|
|
}
|
|
.event-popover .event-popover__inner .empty-content {
|
|
margin-top: 0 !important;
|
|
padding: 50px 0;
|
|
}
|
|
.event-popover .event-popover__inner .property-title-time-picker:not(.property-title-time-picker--readonly) {
|
|
margin-bottom: 12px;
|
|
}
|
|
.event-popover .event-popover__inner .event-popover__invitees .avatar-participation-status__text {
|
|
bottom: 22px;
|
|
}
|
|
.event-popover .event-popover__inner .event-popover__buttons {
|
|
margin-top: 8px;
|
|
}
|
|
.event-popover .event-popover__inner .event-popover__top-right-actions {
|
|
display: flex;
|
|
gap: var(--default-grid-baseline);
|
|
position: absolute !important;
|
|
top: var(--default-grid-baseline) !important;
|
|
right: var(--default-grid-baseline) !important;
|
|
z-index: 100 !important;
|
|
opacity: 0.7 !important;
|
|
border-radius: 22px !important;
|
|
}
|
|
.event-popover .event-popover__inner .event-popover__top-right-actions .action-item.action-item--single {
|
|
width: 44px !important;
|
|
height: 44px !important;
|
|
}
|
|
.event-popover .event-popover__inner .popover-loading-indicator {
|
|
width: 100%;
|
|
}
|
|
.event-popover .event-popover__inner .popover-loading-indicator__icon {
|
|
margin: 0 auto;
|
|
height: 62px;
|
|
width: 62px;
|
|
background-size: 62px;
|
|
}
|
|
.event-popover[x-out-of-boundaries] {
|
|
margin-top: 75px;
|
|
}
|
|
|
|
.event-popover[x-placement^=bottom] .popover__arrow {
|
|
border-bottom-color: var(--color-background-dark);
|
|
}
|
|
|
|
.calendar-picker-option {
|
|
display: flex;
|
|
align-items: center;
|
|
overflow: hidden;
|
|
}
|
|
.calendar-picker-option__color-indicator {
|
|
width: 12px;
|
|
height: 12px;
|
|
border-radius: 50%;
|
|
border: none;
|
|
margin-right: 8px;
|
|
flex-basis: 12px;
|
|
flex-shrink: 0;
|
|
}
|
|
.calendar-picker-option__label {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
flex-grow: 1;
|
|
}
|
|
.calendar-picker-option__avatar {
|
|
flex-basis: 18px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.property-select-multiple-colored-tag {
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.property-select-multiple-colored-tag__color-indicator {
|
|
width: 12px;
|
|
height: 12px;
|
|
border-radius: 50%;
|
|
border: none;
|
|
margin-right: 8px;
|
|
flex-shrink: 0;
|
|
}
|
|
.property-select-multiple-colored-tag .icon {
|
|
margin-left: 4px;
|
|
scale: 0.8;
|
|
}
|
|
|
|
.resource-list-button-group,
|
|
.invitees-list-button-group {
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
.resource-list-button-group:not(:empty),
|
|
.invitees-list-button-group:not(:empty) {
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.vs__dropdown-option span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.resource-search-list-item,
|
|
.invitees-search-list-item {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
padding-right: 32px;
|
|
}
|
|
.resource-search-list-item__label,
|
|
.invitees-search-list-item__label {
|
|
width: 100%;
|
|
padding: 0 8px;
|
|
}
|
|
.resource-search-list-item__label__availability,
|
|
.invitees-search-list-item__label__availability {
|
|
color: var(--color-text-maxcontrast);
|
|
}
|
|
.resource-search-list-item__label div,
|
|
.invitees-search-list-item__label div {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.resource-search-list-item__label div:nth-child(1),
|
|
.invitees-search-list-item__label div:nth-child(1) {
|
|
color: var(--color-main-text);
|
|
}
|
|
.resource-search-list-item__label div:nth-child(2),
|
|
.invitees-search-list-item__label div:nth-child(2) {
|
|
color: var(--color-text-lighter);
|
|
line-height: 1;
|
|
}
|
|
|
|
.resource-search__multiselect,
|
|
.invitees-search__multiselect {
|
|
width: 100%;
|
|
}
|
|
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2019 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
#app-settings .settings-fieldset-interior-item {
|
|
padding: 5px 0;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item .action-checkbox {
|
|
line-height: unset !important;
|
|
white-space: unset !important;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item .action-checkbox__label::before {
|
|
margin: 0 6px 3px 3px !important;
|
|
flex-shrink: 0;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item .action-button {
|
|
min-height: unset !important;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item .action-button__icon {
|
|
margin: 0 6px 3px 3px !important;
|
|
height: 14px !important;
|
|
width: 14px !important;
|
|
background-position: unset !important;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item .action-button__longtext {
|
|
width: unset !important;
|
|
padding: 0 !important;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item__import-button {
|
|
display: block;
|
|
text-align: center;
|
|
background-position-x: 8px;
|
|
position: relative;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item__import-button .material-design-icon {
|
|
position: absolute;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item--slotDuration, #app-settings .settings-fieldset-interior-item--defaultReminder {
|
|
display: table;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item--slotDuration label, #app-settings .settings-fieldset-interior-item--defaultReminder label {
|
|
display: block;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item--slotDuration .multiselect, #app-settings .settings-fieldset-interior-item--defaultReminder .multiselect {
|
|
display: block;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item--timezone, #app-settings .settings-fieldset-interior-item--default-calendar {
|
|
width: 100%;
|
|
}
|
|
#app-settings .settings-fieldset-interior-item--timezone .multiselect, #app-settings .settings-fieldset-interior-item--default-calendar .multiselect {
|
|
width: 100%;
|
|
}
|
|
|
|
.shortcut-overview-modal .modal-container {
|
|
display: flex !important;
|
|
flex-wrap: wrap;
|
|
padding: 0 12px 12px 12px !important;
|
|
}
|
|
.shortcut-overview-modal .modal-container * {
|
|
box-sizing: border-box;
|
|
}
|
|
.shortcut-overview-modal .modal-container .shortcut-section {
|
|
width: 50%;
|
|
flex-grow: 0;
|
|
flex-shrink: 0;
|
|
padding: 10px;
|
|
}
|
|
.shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item {
|
|
width: 100%;
|
|
display: grid;
|
|
grid-template-columns: 33% 67%;
|
|
column-gap: 10px;
|
|
}
|
|
.shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item:not(:first-child) {
|
|
margin-top: 10px;
|
|
}
|
|
.shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item__keys {
|
|
display: block;
|
|
text-align: right;
|
|
}
|
|
.shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item__label {
|
|
display: block;
|
|
text-align: left;
|
|
padding-top: 5px;
|
|
}
|
|
.shortcut-overview-modal .modal-container .shortcut-section .shortcut-section-item__spacer {
|
|
margin: 0 3px;
|
|
}
|
|
|
|
@media screen and (max-width: 800px) {
|
|
.shortcut-overview-modal .modal-container .shortcut-section {
|
|
width: 100%;
|
|
}
|
|
}
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2021 Richard Steinmetz <richard@steinmetz.cloud>
|
|
*
|
|
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
.appointment-config-modal {
|
|
padding: 2vw;
|
|
}
|
|
.appointment-config-modal__form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
}
|
|
.appointment-config-modal__form fieldset {
|
|
padding: 20px 0;
|
|
}
|
|
.appointment-config-modal__form fieldset header {
|
|
font-size: 16px;
|
|
margin-bottom: 3px;
|
|
}
|
|
.appointment-config-modal__form .availability-select, .appointment-config-modal__form .calendar-select {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.appointment-config-modal__form__row--wrapped {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10px 50px;
|
|
}
|
|
.appointment-config-modal__form__row--wrapped > div {
|
|
flex: 1 200px;
|
|
}
|
|
.appointment-config-modal__form__row--local {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.appointment-config-modal__form__row + .appointment-config-modal__form__row {
|
|
margin-top: 10px;
|
|
}
|
|
.appointment-config-modal__form .multiselect__tags {
|
|
height: unset !important;
|
|
margin: 0 !important;
|
|
}
|
|
.appointment-config-modal__submit-button {
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.app-config-modal-confirmation .empty-content {
|
|
margin-top: 0 !important;
|
|
margin-bottom: 20px;
|
|
}
|
|
.app-config-modal-confirmation__buttons {
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 0 10px;
|
|
}
|
|
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2019 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
.modal--scheduler {
|
|
position: relative;
|
|
}
|
|
.modal--scheduler .fc-bgevent {
|
|
opacity: 0.8;
|
|
}
|
|
.modal--scheduler .blocking-event-free-busy {
|
|
border-color: var(--color-primary-element);
|
|
border-style: solid;
|
|
border-left-width: 2px;
|
|
border-right-width: 2px;
|
|
background-color: transparent !important;
|
|
opacity: 0.7 !important;
|
|
z-index: 2;
|
|
}
|
|
.modal--scheduler .blocking-event-free-busy.blocking-event-free-busy--first-row {
|
|
border-radius: var(--border-radius) var(--border-radius) 0 0;
|
|
border-top-width: 2px;
|
|
}
|
|
.modal--scheduler .blocking-event-free-busy.blocking-event-free-busy--last-row {
|
|
border-radius: 0 0 var(--border-radius) var(--border-radius);
|
|
border-bottom-width: 2px;
|
|
}
|
|
.modal--scheduler .loading-indicator {
|
|
width: 100%;
|
|
position: absolute;
|
|
top: 0;
|
|
height: 50px;
|
|
margin-top: 75px;
|
|
}
|
|
|
|
.freebusy-caption {
|
|
margin-top: 10px;
|
|
}
|
|
.freebusy-caption__calendar-user-types, .freebusy-caption__colors {
|
|
width: 50%;
|
|
display: flex;
|
|
}
|
|
.freebusy-caption__colors {
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: 5px;
|
|
}
|
|
.freebusy-caption__colors .freebusy-caption-item {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-right: 30px;
|
|
}
|
|
.freebusy-caption__colors .freebusy-caption-item__color {
|
|
height: 1em;
|
|
width: 2em;
|
|
display: block;
|
|
border: 1px solid var(--color-border-dark);
|
|
opacity: 0.8;
|
|
}
|
|
.freebusy-caption__colors .freebusy-caption-item__label {
|
|
margin-left: 5px;
|
|
}
|
|
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2020 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
* @author René Gieling <github@dartcafe.de>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
/** Override some FullCalendar CSS vars: */
|
|
.fc {
|
|
--fc-small-font-size: 0.875em;
|
|
--fc-page-bg-color: var(--color-main-background) !important;
|
|
--fc-neutral-bg-color: var(--color-background-dark) !important;
|
|
--fc-neutral-text-color: var(--color-text-lighter) !important;
|
|
--fc-border-color: var(--color-border) !important;
|
|
--fc-daygrid-event-dot-width: 10px !important;
|
|
--fc-event-bg-color: var(--color-primary-element);
|
|
--fc-event-border-color: var(--color-primary-element-text);
|
|
--fc-event-text-color: var(--color-primary-element-text);
|
|
--fc-event-selected-overlay-color: var(--color-box-shadow);
|
|
--fc-event-resizer-thickness: 8px;
|
|
--fc-event-resizer-dot-total-width: 8px;
|
|
--fc-event-resizer-dot-border-width: 1px;
|
|
--fc-non-business-color: var(--color-background-dark);
|
|
--fc-bg-event-color: var(--color-primary-element);
|
|
--fc-bg-event-opacity: 0.3;
|
|
--fc-highlight-color: rgba(188, 232, 241, 0.3);
|
|
--fc-today-bg-color: var(--color-main-background) !important;
|
|
--fc-now-indicator-color: red;
|
|
--fc-list-event-hover-bg-color: var(--color-background-hover) !important;
|
|
}
|
|
|
|
.fc {
|
|
font-family: var(--font-face) !important;
|
|
}
|
|
|
|
.fc-timegrid-axis-frame,
|
|
.fc-timegrid-slot-label,
|
|
.fc-col-header-cell a {
|
|
color: var(--color-text-lighter) !important;
|
|
}
|
|
|
|
.fc .fc-timegrid-slot-minor {
|
|
border-top-style: none !important;
|
|
}
|
|
|
|
.fc-daygrid-day-top {
|
|
justify-content: center;
|
|
}
|
|
|
|
.fc-state-highlight.fc-day-number,
|
|
.fc tbody tr,
|
|
.fc tbody tr:hover,
|
|
.fc tbody tr:focus {
|
|
background: inherit !important;
|
|
}
|
|
|
|
.fc-day-today.fc-col-header-cell a, .fc-day-today.fc-col-header-cell span {
|
|
padding: 2px 6px;
|
|
font-weight: bold;
|
|
background-color: var(--color-primary-element);
|
|
color: var(--color-primary-element-text) !important;
|
|
border-radius: var(--border-radius-pill);
|
|
}
|
|
.fc-day-today .fc-event {
|
|
box-shadow: 0px 0px 0px 1px var(--color-primary-element-light) !important;
|
|
}
|
|
.fc-day-today .fc-daygrid-day-top .fc-daygrid-day-number {
|
|
margin: 4px;
|
|
width: 24px;
|
|
height: 24px;
|
|
text-align: center;
|
|
font-weight: bold !important;
|
|
padding: 0 !important;
|
|
background: var(--color-primary-element);
|
|
color: var(--color-primary-element-text);
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.fc-list-table td {
|
|
white-space: normal;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.fc .fc-list-sticky .fc-list-day > * {
|
|
z-index: 1;
|
|
}
|
|
|
|
.fc-list-table .fc-list-day-cushion {
|
|
padding-left: calc(var(--default-clickable-area) + var(--default-grid-baseline) * 2);
|
|
}
|
|
|
|
.fc-timeGridWeek-view .fc-col-header-cell.fc-day-today,
|
|
.fc-timeGridWeek-view .fc-daygrid-day.fc-day-today,
|
|
.fc-timeGridWeek-view .fc-timegrid-col.fc-day-today,
|
|
.fc-dayGridMonth-view .fc-col-header-cell.fc-day-today,
|
|
.fc-dayGridMonth-view .fc-daygrid-day.fc-day-today,
|
|
.fc-dayGridMonth-view .fc-timegrid-col.fc-day-today {
|
|
background-color: var(--color-primary-element-light) !important;
|
|
}
|
|
|
|
.fc-daygrid-day.fc-day.fc-day-other,
|
|
.fc .fc-daygrid-day.fc-day-today.fc-day-other {
|
|
background-color: var(--color-background-dark) !important;
|
|
border: 1px solid var(--color-background-darker);
|
|
}
|
|
.fc-daygrid-day.fc-day.fc-day-other .fc-daygrid-day-top,
|
|
.fc .fc-daygrid-day.fc-day-today.fc-day-other .fc-daygrid-day-top {
|
|
opacity: 0.6;
|
|
}
|
|
|
|
.fc-event {
|
|
padding-left: 3px;
|
|
}
|
|
.fc-event.fc-event-nc-task-completed, .fc-event.fc-event-nc-tentative, .fc-event.fc-event-nc-cancelled {
|
|
opacity: 0.5;
|
|
}
|
|
.fc-event.fc-event-nc-task-completed .fc-event-title,
|
|
.fc-event.fc-event-nc-task-completed .fc-list-event-title, .fc-event.fc-event-nc-cancelled .fc-event-title,
|
|
.fc-event.fc-event-nc-cancelled .fc-list-event-title {
|
|
text-decoration: line-through !important;
|
|
}
|
|
.fc-event .fc-event-title {
|
|
text-overflow: ellipsis;
|
|
}
|
|
.fc-event .fc-event-nc-alarms .icon-event-reminder {
|
|
background-color: inherit;
|
|
background-position: right;
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
}
|
|
.fc-event .fc-event-nc-alarms .icon-event-reminder--light {
|
|
background-image: var(--icon-calendar-reminder-fffffe);
|
|
}
|
|
.fc-event .fc-event-nc-alarms .icon-event-reminder--dark {
|
|
background-image: var(--icon-calendar-reminder-000001);
|
|
}
|
|
.fc-event .fc-event-title-container {
|
|
display: flex;
|
|
align-content: center;
|
|
}
|
|
.fc-event .fc-event-title-container .fc-event-title-checkbox {
|
|
margin: 4px 4px 0 0;
|
|
line-height: 1;
|
|
}
|
|
.fc-event .fc-list-event-checkbox {
|
|
margin: 2px 4px 0 -2px;
|
|
line-height: 1;
|
|
}
|
|
.fc-event .fc-daygrid-event-checkbox {
|
|
margin: 2px 4px 0 4px;
|
|
line-height: 1;
|
|
}
|
|
.fc-event .fc-list-event-location span,
|
|
.fc-event .fc-list-event-description span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: 3;
|
|
-webkit-box-orient: vertical;
|
|
white-space: pre-wrap;
|
|
max-width: 25vw;
|
|
}
|
|
@media only screen and (max-width: 767px) {
|
|
.fc-event .fc-list-event-location,
|
|
.fc-event .fc-list-event-description {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.fc-list-empty .fc-list-empty-cushion {
|
|
display: none;
|
|
}
|
|
.fc-list-empty .empty-content {
|
|
margin-top: 0 !important;
|
|
}
|
|
|
|
.fc-col-header-cell {
|
|
word-break: break-word;
|
|
white-space: normal;
|
|
}
|
|
|
|
.fc-timeGridWeek-view .fc-daygrid-more-link {
|
|
word-break: break-all;
|
|
white-space: normal;
|
|
}
|
|
.fc-timeGridWeek-view .fc-event-main {
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.fc-v-event {
|
|
min-height: 4em;
|
|
}
|
|
.fc-v-event.fc-timegrid-event-short {
|
|
min-height: 2em;
|
|
}
|
|
.fc-v-event .fc-event-title {
|
|
white-space: initial;
|
|
}
|
|
|
|
.fc-dayGridMonth-view .fc-daygrid-more-link {
|
|
word-break: break-word;
|
|
white-space: normal;
|
|
}
|
|
.fc-dayGridMonth-view .fc-daygrid-day-frame {
|
|
min-height: 150px !important;
|
|
}
|
|
|
|
.fc-daygrid-day-events {
|
|
position: relative !important;
|
|
}
|
|
|
|
.fc-col-header-cell {
|
|
padding-top: 10px !important;
|
|
}
|
|
|
|
.fc-timegrid-axis-cushion {
|
|
margin-top: 44px;
|
|
}
|
|
|
|
.fc-timegrid-axis.fc-scrollgrid-shrink {
|
|
height: 65px;
|
|
}
|
|
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2019 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
.toast-calendar-multiline {
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
.content.app-calendar > div.app-content {
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.pending-event {
|
|
position: relative;
|
|
}
|
|
|
|
.pending-event::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 0.3px;
|
|
background: rgb(23, 23, 23);
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2019 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
.import-modal .modal-container {
|
|
padding: 24px !important;
|
|
min-width: 50%;
|
|
overflow: visible !important;
|
|
}
|
|
.import-modal .modal-container .import-modal__title,
|
|
.import-modal .modal-container .import-modal__subtitle {
|
|
text-align: center;
|
|
}
|
|
.import-modal .modal-container .import-modal__actions {
|
|
display: flex;
|
|
gap: 5px;
|
|
}
|
|
.import-modal .modal-container .import-modal-file-item {
|
|
display: flex;
|
|
padding-top: 10px;
|
|
}
|
|
.import-modal .modal-container .import-modal-file-item--header {
|
|
font-weight: bold;
|
|
}
|
|
.import-modal .modal-container .import-modal-file-item__filename {
|
|
flex: 2 1 0;
|
|
}
|
|
.import-modal .modal-container .import-modal-file-item__calendar-select {
|
|
flex: 1 1 0;
|
|
}
|
|
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2019 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
@media print {
|
|
.app-navigation {
|
|
display: none;
|
|
}
|
|
}
|
|
/**
|
|
* Calendar App
|
|
*
|
|
* @copyright 2019 Georg Ehrke <oc.list@georgehrke.com>
|
|
*
|
|
* @author Georg Ehrke
|
|
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
#emptycontent-container #emptycontent {
|
|
color: #a9a9a9 !important;
|
|
}
|
|
|
|
.content.app-calendar.app-calendar-public-embedded #embed-header {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
height: 50px;
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
background-color: var(--color-main-background);
|
|
border-bottom: 1px solid var(--color-border);
|
|
overflow: visible;
|
|
z-index: 2000;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
.content.app-calendar.app-calendar-public-embedded #embed-header .embed-header__date-section,
|
|
.content.app-calendar.app-calendar-public-embedded #embed-header .embed-header__share-section {
|
|
display: flex;
|
|
gap: 5px;
|
|
}
|
|
.content.app-calendar.app-calendar-public-embedded #embed-header .view-button-section .button {
|
|
min-width: 75px;
|
|
}
|
|
.content.app-calendar.app-calendar-public-embedded #embed-header .datepicker-button-section__datepicker-label {
|
|
min-width: 150px;
|
|
}
|
|
.content.app-calendar.app-calendar-public-embedded .app-content {
|
|
margin-top: 44px;
|
|
}
|
|
|
|
#body-public input#initial-state-calendar-is_embed ~ header#header {
|
|
display: none;
|
|
}
|
|
#body-public .app-calendar-public + footer {
|
|
border-radius: 0 0 var(--border-radius-large) var(--border-radius-large);
|
|
}
|
|
#body-public .app-calendar-public .app-content {
|
|
height: calc(100% - 65px) !important;
|
|
}
|
|
|
|
.property-text__input--linkify {
|
|
flex-basis: min-content;
|
|
}
|
|
|
|
.linkify-links {
|
|
border: 2px solid var(--color-border-maxcontrast);
|
|
border-radius: var(--border-radius-large);
|
|
cursor: text;
|
|
width: 100% !important;
|
|
box-sizing: border-box;
|
|
padding: 12px;
|
|
white-space: pre-line;
|
|
overflow: auto;
|
|
line-height: normal;
|
|
word-break: break-word;
|
|
display: inline-block;
|
|
vertical-align: top;
|
|
max-height: 16em;
|
|
max-height: calc(100vh - 500px);
|
|
}
|
|
.linkify-links a.linkified {
|
|
text-decoration: underline;
|
|
margin: 0;
|
|
}
|
|
.linkify-links a.linkified::after {
|
|
content: " ↗";
|
|
}`, ""]);
|
|
// Exports
|
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/css-loader/dist/runtime/api.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
|
\*****************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
|
|
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
module.exports = function (cssWithMappingToString) {
|
|
var list = [];
|
|
|
|
// return the list of modules as css string
|
|
list.toString = function toString() {
|
|
return this.map(function (item) {
|
|
var content = "";
|
|
var needLayer = typeof item[5] !== "undefined";
|
|
if (item[4]) {
|
|
content += "@supports (".concat(item[4], ") {");
|
|
}
|
|
if (item[2]) {
|
|
content += "@media ".concat(item[2], " {");
|
|
}
|
|
if (needLayer) {
|
|
content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
|
|
}
|
|
content += cssWithMappingToString(item);
|
|
if (needLayer) {
|
|
content += "}";
|
|
}
|
|
if (item[2]) {
|
|
content += "}";
|
|
}
|
|
if (item[4]) {
|
|
content += "}";
|
|
}
|
|
return content;
|
|
}).join("");
|
|
};
|
|
|
|
// import a list of modules into the list
|
|
list.i = function i(modules, media, dedupe, supports, layer) {
|
|
if (typeof modules === "string") {
|
|
modules = [[null, modules, undefined]];
|
|
}
|
|
var alreadyImportedModules = {};
|
|
if (dedupe) {
|
|
for (var k = 0; k < this.length; k++) {
|
|
var id = this[k][0];
|
|
if (id != null) {
|
|
alreadyImportedModules[id] = true;
|
|
}
|
|
}
|
|
}
|
|
for (var _k = 0; _k < modules.length; _k++) {
|
|
var item = [].concat(modules[_k]);
|
|
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
continue;
|
|
}
|
|
if (typeof layer !== "undefined") {
|
|
if (typeof item[5] === "undefined") {
|
|
item[5] = layer;
|
|
} else {
|
|
item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
|
|
item[5] = layer;
|
|
}
|
|
}
|
|
if (media) {
|
|
if (!item[2]) {
|
|
item[2] = media;
|
|
} else {
|
|
item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
|
|
item[2] = media;
|
|
}
|
|
}
|
|
if (supports) {
|
|
if (!item[4]) {
|
|
item[4] = "".concat(supports);
|
|
} else {
|
|
item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
|
|
item[4] = supports;
|
|
}
|
|
}
|
|
list.push(item);
|
|
}
|
|
};
|
|
return list;
|
|
};
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js":
|
|
/*!**************************************************************!*\
|
|
!*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***!
|
|
\**************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
|
|
module.exports = function (i) {
|
|
return i[1];
|
|
};
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/dompurify/dist/purify.js":
|
|
/*!***********************************************!*\
|
|
!*** ./node_modules/dompurify/dist/purify.js ***!
|
|
\***********************************************/
|
|
/***/ (function(module) {
|
|
|
|
/*! @license DOMPurify 3.0.8 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.8/LICENSE */
|
|
|
|
(function (global, factory) {
|
|
true ? module.exports = factory() :
|
|
0;
|
|
})(this, (function () { 'use strict';
|
|
|
|
const {
|
|
entries,
|
|
setPrototypeOf,
|
|
isFrozen,
|
|
getPrototypeOf,
|
|
getOwnPropertyDescriptor
|
|
} = Object;
|
|
let {
|
|
freeze,
|
|
seal,
|
|
create
|
|
} = Object; // eslint-disable-line import/no-mutable-exports
|
|
let {
|
|
apply,
|
|
construct
|
|
} = typeof Reflect !== 'undefined' && Reflect;
|
|
if (!freeze) {
|
|
freeze = function freeze(x) {
|
|
return x;
|
|
};
|
|
}
|
|
if (!seal) {
|
|
seal = function seal(x) {
|
|
return x;
|
|
};
|
|
}
|
|
if (!apply) {
|
|
apply = function apply(fun, thisValue, args) {
|
|
return fun.apply(thisValue, args);
|
|
};
|
|
}
|
|
if (!construct) {
|
|
construct = function construct(Func, args) {
|
|
return new Func(...args);
|
|
};
|
|
}
|
|
const arrayForEach = unapply(Array.prototype.forEach);
|
|
const arrayPop = unapply(Array.prototype.pop);
|
|
const arrayPush = unapply(Array.prototype.push);
|
|
const stringToLowerCase = unapply(String.prototype.toLowerCase);
|
|
const stringToString = unapply(String.prototype.toString);
|
|
const stringMatch = unapply(String.prototype.match);
|
|
const stringReplace = unapply(String.prototype.replace);
|
|
const stringIndexOf = unapply(String.prototype.indexOf);
|
|
const stringTrim = unapply(String.prototype.trim);
|
|
const regExpTest = unapply(RegExp.prototype.test);
|
|
const typeErrorCreate = unconstruct(TypeError);
|
|
|
|
/**
|
|
* Creates a new function that calls the given function with a specified thisArg and arguments.
|
|
*
|
|
* @param {Function} func - The function to be wrapped and called.
|
|
* @returns {Function} A new function that calls the given function with a specified thisArg and arguments.
|
|
*/
|
|
function unapply(func) {
|
|
return function (thisArg) {
|
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
args[_key - 1] = arguments[_key];
|
|
}
|
|
return apply(func, thisArg, args);
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Creates a new function that constructs an instance of the given constructor function with the provided arguments.
|
|
*
|
|
* @param {Function} func - The constructor function to be wrapped and called.
|
|
* @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.
|
|
*/
|
|
function unconstruct(func) {
|
|
return function () {
|
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
args[_key2] = arguments[_key2];
|
|
}
|
|
return construct(func, args);
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Add properties to a lookup table
|
|
*
|
|
* @param {Object} set - The set to which elements will be added.
|
|
* @param {Array} array - The array containing elements to be added to the set.
|
|
* @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.
|
|
* @returns {Object} The modified set with added elements.
|
|
*/
|
|
function addToSet(set, array) {
|
|
let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;
|
|
if (setPrototypeOf) {
|
|
// Make 'in' and truthy checks like Boolean(set.constructor)
|
|
// independent of any properties defined on Object.prototype.
|
|
// Prevent prototype setters from intercepting set as a this value.
|
|
setPrototypeOf(set, null);
|
|
}
|
|
let l = array.length;
|
|
while (l--) {
|
|
let element = array[l];
|
|
if (typeof element === 'string') {
|
|
const lcElement = transformCaseFunc(element);
|
|
if (lcElement !== element) {
|
|
// Config presets (e.g. tags.js, attrs.js) are immutable.
|
|
if (!isFrozen(array)) {
|
|
array[l] = lcElement;
|
|
}
|
|
element = lcElement;
|
|
}
|
|
}
|
|
set[element] = true;
|
|
}
|
|
return set;
|
|
}
|
|
|
|
/**
|
|
* Clean up an array to harden against CSPP
|
|
*
|
|
* @param {Array} array - The array to be cleaned.
|
|
* @returns {Array} The cleaned version of the array
|
|
*/
|
|
function cleanArray(array) {
|
|
for (let index = 0; index < array.length; index++) {
|
|
if (getOwnPropertyDescriptor(array, index) === undefined) {
|
|
array[index] = null;
|
|
}
|
|
}
|
|
return array;
|
|
}
|
|
|
|
/**
|
|
* Shallow clone an object
|
|
*
|
|
* @param {Object} object - The object to be cloned.
|
|
* @returns {Object} A new object that copies the original.
|
|
*/
|
|
function clone(object) {
|
|
const newObject = create(null);
|
|
for (const [property, value] of entries(object)) {
|
|
if (getOwnPropertyDescriptor(object, property) !== undefined) {
|
|
if (Array.isArray(value)) {
|
|
newObject[property] = cleanArray(value);
|
|
} else if (value && typeof value === 'object' && value.constructor === Object) {
|
|
newObject[property] = clone(value);
|
|
} else {
|
|
newObject[property] = value;
|
|
}
|
|
}
|
|
}
|
|
return newObject;
|
|
}
|
|
|
|
/**
|
|
* This method automatically checks if the prop is function or getter and behaves accordingly.
|
|
*
|
|
* @param {Object} object - The object to look up the getter function in its prototype chain.
|
|
* @param {String} prop - The property name for which to find the getter function.
|
|
* @returns {Function} The getter function found in the prototype chain or a fallback function.
|
|
*/
|
|
function lookupGetter(object, prop) {
|
|
while (object !== null) {
|
|
const desc = getOwnPropertyDescriptor(object, prop);
|
|
if (desc) {
|
|
if (desc.get) {
|
|
return unapply(desc.get);
|
|
}
|
|
if (typeof desc.value === 'function') {
|
|
return unapply(desc.value);
|
|
}
|
|
}
|
|
object = getPrototypeOf(object);
|
|
}
|
|
function fallbackValue(element) {
|
|
console.warn('fallback value for', element);
|
|
return null;
|
|
}
|
|
return fallbackValue;
|
|
}
|
|
|
|
const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);
|
|
|
|
// SVG
|
|
const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
|
|
const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);
|
|
|
|
// List of SVG elements that are disallowed by default.
|
|
// We still need to know them so that we can do namespace
|
|
// checks properly in case one wants to add them to
|
|
// allow-list.
|
|
const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);
|
|
const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);
|
|
|
|
// Similarly to SVG, we want to know all MathML elements,
|
|
// even those that we disallow by default.
|
|
const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);
|
|
const text = freeze(['#text']);
|
|
|
|
const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);
|
|
const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
|
|
const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
|
|
const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
|
|
|
|
// eslint-disable-next-line unicorn/better-regex
|
|
const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
|
|
const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
|
|
const TMPLIT_EXPR = seal(/\${[\w\W]*}/gm);
|
|
const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape
|
|
const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
|
|
const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
|
|
);
|
|
|
|
const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
|
|
const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex
|
|
);
|
|
|
|
const DOCTYPE_NAME = seal(/^html$/i);
|
|
|
|
var EXPRESSIONS = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
MUSTACHE_EXPR: MUSTACHE_EXPR,
|
|
ERB_EXPR: ERB_EXPR,
|
|
TMPLIT_EXPR: TMPLIT_EXPR,
|
|
DATA_ATTR: DATA_ATTR,
|
|
ARIA_ATTR: ARIA_ATTR,
|
|
IS_ALLOWED_URI: IS_ALLOWED_URI,
|
|
IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
|
|
ATTR_WHITESPACE: ATTR_WHITESPACE,
|
|
DOCTYPE_NAME: DOCTYPE_NAME
|
|
});
|
|
|
|
const getGlobal = function getGlobal() {
|
|
return typeof window === 'undefined' ? null : window;
|
|
};
|
|
|
|
/**
|
|
* Creates a no-op policy for internal use only.
|
|
* Don't export this function outside this module!
|
|
* @param {TrustedTypePolicyFactory} trustedTypes The policy factory.
|
|
* @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).
|
|
* @return {TrustedTypePolicy} The policy created (or null, if Trusted Types
|
|
* are not supported or creating the policy failed).
|
|
*/
|
|
const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {
|
|
if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {
|
|
return null;
|
|
}
|
|
|
|
// Allow the callers to control the unique policy name
|
|
// by adding a data-tt-policy-suffix to the script element with the DOMPurify.
|
|
// Policy creation with duplicate names throws in Trusted Types.
|
|
let suffix = null;
|
|
const ATTR_NAME = 'data-tt-policy-suffix';
|
|
if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
|
|
suffix = purifyHostElement.getAttribute(ATTR_NAME);
|
|
}
|
|
const policyName = 'dompurify' + (suffix ? '#' + suffix : '');
|
|
try {
|
|
return trustedTypes.createPolicy(policyName, {
|
|
createHTML(html) {
|
|
return html;
|
|
},
|
|
createScriptURL(scriptUrl) {
|
|
return scriptUrl;
|
|
}
|
|
});
|
|
} catch (_) {
|
|
// Policy creation failed (most likely another DOMPurify script has
|
|
// already run). Skip creating the policy, as this will only cause errors
|
|
// if TT are enforced.
|
|
console.warn('TrustedTypes policy ' + policyName + ' could not be created.');
|
|
return null;
|
|
}
|
|
};
|
|
function createDOMPurify() {
|
|
let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
|
|
const DOMPurify = root => createDOMPurify(root);
|
|
|
|
/**
|
|
* Version label, exposed for easier checks
|
|
* if DOMPurify is up to date or not
|
|
*/
|
|
DOMPurify.version = '3.0.8';
|
|
|
|
/**
|
|
* Array of elements that DOMPurify removed during sanitation.
|
|
* Empty if nothing was removed.
|
|
*/
|
|
DOMPurify.removed = [];
|
|
if (!window || !window.document || window.document.nodeType !== 9) {
|
|
// Not running in a browser, provide a factory function
|
|
// so that you can pass your own Window
|
|
DOMPurify.isSupported = false;
|
|
return DOMPurify;
|
|
}
|
|
let {
|
|
document
|
|
} = window;
|
|
const originalDocument = document;
|
|
const currentScript = originalDocument.currentScript;
|
|
const {
|
|
DocumentFragment,
|
|
HTMLTemplateElement,
|
|
Node,
|
|
Element,
|
|
NodeFilter,
|
|
NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,
|
|
HTMLFormElement,
|
|
DOMParser,
|
|
trustedTypes
|
|
} = window;
|
|
const ElementPrototype = Element.prototype;
|
|
const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
|
|
const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
|
|
const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
|
|
const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
|
|
|
|
// As per issue #47, the web-components registry is inherited by a
|
|
// new document created via createHTMLDocument. As per the spec
|
|
// (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
|
|
// a new empty registry is used when creating a template contents owner
|
|
// document, so we use that as our parent document to ensure nothing
|
|
// is inherited.
|
|
if (typeof HTMLTemplateElement === 'function') {
|
|
const template = document.createElement('template');
|
|
if (template.content && template.content.ownerDocument) {
|
|
document = template.content.ownerDocument;
|
|
}
|
|
}
|
|
let trustedTypesPolicy;
|
|
let emptyHTML = '';
|
|
const {
|
|
implementation,
|
|
createNodeIterator,
|
|
createDocumentFragment,
|
|
getElementsByTagName
|
|
} = document;
|
|
const {
|
|
importNode
|
|
} = originalDocument;
|
|
let hooks = {};
|
|
|
|
/**
|
|
* Expose whether this browser supports running the full DOMPurify.
|
|
*/
|
|
DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
|
|
const {
|
|
MUSTACHE_EXPR,
|
|
ERB_EXPR,
|
|
TMPLIT_EXPR,
|
|
DATA_ATTR,
|
|
ARIA_ATTR,
|
|
IS_SCRIPT_OR_DATA,
|
|
ATTR_WHITESPACE
|
|
} = EXPRESSIONS;
|
|
let {
|
|
IS_ALLOWED_URI: IS_ALLOWED_URI$1
|
|
} = EXPRESSIONS;
|
|
|
|
/**
|
|
* We consider the elements and attributes below to be safe. Ideally
|
|
* don't add any new ones but feel free to remove unwanted ones.
|
|
*/
|
|
|
|
/* allowed element names */
|
|
let ALLOWED_TAGS = null;
|
|
const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);
|
|
|
|
/* Allowed attribute names */
|
|
let ALLOWED_ATTR = null;
|
|
const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
|
|
|
|
/*
|
|
* Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.
|
|
* @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)
|
|
* @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)
|
|
* @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.
|
|
*/
|
|
let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
|
|
tagNameCheck: {
|
|
writable: true,
|
|
configurable: false,
|
|
enumerable: true,
|
|
value: null
|
|
},
|
|
attributeNameCheck: {
|
|
writable: true,
|
|
configurable: false,
|
|
enumerable: true,
|
|
value: null
|
|
},
|
|
allowCustomizedBuiltInElements: {
|
|
writable: true,
|
|
configurable: false,
|
|
enumerable: true,
|
|
value: false
|
|
}
|
|
}));
|
|
|
|
/* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */
|
|
let FORBID_TAGS = null;
|
|
|
|
/* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
|
|
let FORBID_ATTR = null;
|
|
|
|
/* Decide if ARIA attributes are okay */
|
|
let ALLOW_ARIA_ATTR = true;
|
|
|
|
/* Decide if custom data attributes are okay */
|
|
let ALLOW_DATA_ATTR = true;
|
|
|
|
/* Decide if unknown protocols are okay */
|
|
let ALLOW_UNKNOWN_PROTOCOLS = false;
|
|
|
|
/* Decide if self-closing tags in attributes are allowed.
|
|
* Usually removed due to a mXSS issue in jQuery 3.0 */
|
|
let ALLOW_SELF_CLOSE_IN_ATTR = true;
|
|
|
|
/* Output should be safe for common template engines.
|
|
* This means, DOMPurify removes data attributes, mustaches and ERB
|
|
*/
|
|
let SAFE_FOR_TEMPLATES = false;
|
|
|
|
/* Decide if document with <html>... should be returned */
|
|
let WHOLE_DOCUMENT = false;
|
|
|
|
/* Track whether config is already set on this instance of DOMPurify. */
|
|
let SET_CONFIG = false;
|
|
|
|
/* Decide if all elements (e.g. style, script) must be children of
|
|
* document.body. By default, browsers might move them to document.head */
|
|
let FORCE_BODY = false;
|
|
|
|
/* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html
|
|
* string (or a TrustedHTML object if Trusted Types are supported).
|
|
* If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead
|
|
*/
|
|
let RETURN_DOM = false;
|
|
|
|
/* Decide if a DOM `DocumentFragment` should be returned, instead of a html
|
|
* string (or a TrustedHTML object if Trusted Types are supported) */
|
|
let RETURN_DOM_FRAGMENT = false;
|
|
|
|
/* Try to return a Trusted Type object instead of a string, return a string in
|
|
* case Trusted Types are not supported */
|
|
let RETURN_TRUSTED_TYPE = false;
|
|
|
|
/* Output should be free from DOM clobbering attacks?
|
|
* This sanitizes markups named with colliding, clobberable built-in DOM APIs.
|
|
*/
|
|
let SANITIZE_DOM = true;
|
|
|
|
/* Achieve full DOM Clobbering protection by isolating the namespace of named
|
|
* properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.
|
|
*
|
|
* HTML/DOM spec rules that enable DOM Clobbering:
|
|
* - Named Access on Window (§7.3.3)
|
|
* - DOM Tree Accessors (§3.1.5)
|
|
* - Form Element Parent-Child Relations (§4.10.3)
|
|
* - Iframe srcdoc / Nested WindowProxies (§4.8.5)
|
|
* - HTMLCollection (§4.2.10.2)
|
|
*
|
|
* Namespace isolation is implemented by prefixing `id` and `name` attributes
|
|
* with a constant string, i.e., `user-content-`
|
|
*/
|
|
let SANITIZE_NAMED_PROPS = false;
|
|
const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';
|
|
|
|
/* Keep element content when removing element? */
|
|
let KEEP_CONTENT = true;
|
|
|
|
/* If a `Node` is passed to sanitize(), then performs sanitization in-place instead
|
|
* of importing it into a new Document and returning a sanitized copy */
|
|
let IN_PLACE = false;
|
|
|
|
/* Allow usage of profiles like html, svg and mathMl */
|
|
let USE_PROFILES = {};
|
|
|
|
/* Tags to ignore content of when KEEP_CONTENT is true */
|
|
let FORBID_CONTENTS = null;
|
|
const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);
|
|
|
|
/* Tags that are safe for data: URIs */
|
|
let DATA_URI_TAGS = null;
|
|
const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);
|
|
|
|
/* Attributes safe for values like "javascript:" */
|
|
let URI_SAFE_ATTRIBUTES = null;
|
|
const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);
|
|
const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
|
|
const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
|
|
const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
|
|
/* Document namespace */
|
|
let NAMESPACE = HTML_NAMESPACE;
|
|
let IS_EMPTY_INPUT = false;
|
|
|
|
/* Allowed XHTML+XML namespaces */
|
|
let ALLOWED_NAMESPACES = null;
|
|
const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
|
|
|
|
/* Parsing of strict XHTML documents */
|
|
let PARSER_MEDIA_TYPE = null;
|
|
const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];
|
|
const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';
|
|
let transformCaseFunc = null;
|
|
|
|
/* Keep a reference to config to pass to hooks */
|
|
let CONFIG = null;
|
|
|
|
/* Ideally, do not touch anything below this line */
|
|
/* ______________________________________________ */
|
|
|
|
const formElement = document.createElement('form');
|
|
const isRegexOrFunction = function isRegexOrFunction(testValue) {
|
|
return testValue instanceof RegExp || testValue instanceof Function;
|
|
};
|
|
|
|
/**
|
|
* _parseConfig
|
|
*
|
|
* @param {Object} cfg optional config literal
|
|
*/
|
|
// eslint-disable-next-line complexity
|
|
const _parseConfig = function _parseConfig() {
|
|
let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
if (CONFIG && CONFIG === cfg) {
|
|
return;
|
|
}
|
|
|
|
/* Shield configuration object from tampering */
|
|
if (!cfg || typeof cfg !== 'object') {
|
|
cfg = {};
|
|
}
|
|
|
|
/* Shield configuration object from prototype pollution */
|
|
cfg = clone(cfg);
|
|
PARSER_MEDIA_TYPE =
|
|
// eslint-disable-next-line unicorn/prefer-includes
|
|
SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
|
|
|
|
// HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
|
|
transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;
|
|
|
|
/* Set configuration parameters */
|
|
ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
|
|
ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
|
|
ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
|
|
URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES),
|
|
// eslint-disable-line indent
|
|
cfg.ADD_URI_SAFE_ATTR,
|
|
// eslint-disable-line indent
|
|
transformCaseFunc // eslint-disable-line indent
|
|
) // eslint-disable-line indent
|
|
: DEFAULT_URI_SAFE_ATTRIBUTES;
|
|
DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS),
|
|
// eslint-disable-line indent
|
|
cfg.ADD_DATA_URI_TAGS,
|
|
// eslint-disable-line indent
|
|
transformCaseFunc // eslint-disable-line indent
|
|
) // eslint-disable-line indent
|
|
: DEFAULT_DATA_URI_TAGS;
|
|
FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
|
|
FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};
|
|
FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};
|
|
USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;
|
|
ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
|
|
ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
|
|
ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false
|
|
ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true
|
|
SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false
|
|
WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false
|
|
RETURN_DOM = cfg.RETURN_DOM || false; // Default false
|
|
RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false
|
|
RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false
|
|
FORCE_BODY = cfg.FORCE_BODY || false; // Default false
|
|
SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true
|
|
SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false
|
|
KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true
|
|
IN_PLACE = cfg.IN_PLACE || false; // Default false
|
|
IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
|
|
NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
|
|
CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
|
|
if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
|
|
CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
|
|
}
|
|
if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
|
|
CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
|
|
}
|
|
if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {
|
|
CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
|
|
}
|
|
if (SAFE_FOR_TEMPLATES) {
|
|
ALLOW_DATA_ATTR = false;
|
|
}
|
|
if (RETURN_DOM_FRAGMENT) {
|
|
RETURN_DOM = true;
|
|
}
|
|
|
|
/* Parse profile info */
|
|
if (USE_PROFILES) {
|
|
ALLOWED_TAGS = addToSet({}, text);
|
|
ALLOWED_ATTR = [];
|
|
if (USE_PROFILES.html === true) {
|
|
addToSet(ALLOWED_TAGS, html$1);
|
|
addToSet(ALLOWED_ATTR, html);
|
|
}
|
|
if (USE_PROFILES.svg === true) {
|
|
addToSet(ALLOWED_TAGS, svg$1);
|
|
addToSet(ALLOWED_ATTR, svg);
|
|
addToSet(ALLOWED_ATTR, xml);
|
|
}
|
|
if (USE_PROFILES.svgFilters === true) {
|
|
addToSet(ALLOWED_TAGS, svgFilters);
|
|
addToSet(ALLOWED_ATTR, svg);
|
|
addToSet(ALLOWED_ATTR, xml);
|
|
}
|
|
if (USE_PROFILES.mathMl === true) {
|
|
addToSet(ALLOWED_TAGS, mathMl$1);
|
|
addToSet(ALLOWED_ATTR, mathMl);
|
|
addToSet(ALLOWED_ATTR, xml);
|
|
}
|
|
}
|
|
|
|
/* Merge configuration parameters */
|
|
if (cfg.ADD_TAGS) {
|
|
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
|
|
ALLOWED_TAGS = clone(ALLOWED_TAGS);
|
|
}
|
|
addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
|
|
}
|
|
if (cfg.ADD_ATTR) {
|
|
if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
|
|
ALLOWED_ATTR = clone(ALLOWED_ATTR);
|
|
}
|
|
addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
|
|
}
|
|
if (cfg.ADD_URI_SAFE_ATTR) {
|
|
addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
|
|
}
|
|
if (cfg.FORBID_CONTENTS) {
|
|
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
|
|
FORBID_CONTENTS = clone(FORBID_CONTENTS);
|
|
}
|
|
addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
|
|
}
|
|
|
|
/* Add #text in case KEEP_CONTENT is set to true */
|
|
if (KEEP_CONTENT) {
|
|
ALLOWED_TAGS['#text'] = true;
|
|
}
|
|
|
|
/* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */
|
|
if (WHOLE_DOCUMENT) {
|
|
addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);
|
|
}
|
|
|
|
/* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */
|
|
if (ALLOWED_TAGS.table) {
|
|
addToSet(ALLOWED_TAGS, ['tbody']);
|
|
delete FORBID_TAGS.tbody;
|
|
}
|
|
if (cfg.TRUSTED_TYPES_POLICY) {
|
|
if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {
|
|
throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
|
|
}
|
|
if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {
|
|
throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
|
|
}
|
|
|
|
// Overwrite existing TrustedTypes policy.
|
|
trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
|
|
|
|
// Sign local variables required by `sanitize`.
|
|
emptyHTML = trustedTypesPolicy.createHTML('');
|
|
} else {
|
|
// Uninitialized policy, attempt to initialize the internal dompurify policy.
|
|
if (trustedTypesPolicy === undefined) {
|
|
trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
|
|
}
|
|
|
|
// If creating the internal policy succeeded sign internal variables.
|
|
if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {
|
|
emptyHTML = trustedTypesPolicy.createHTML('');
|
|
}
|
|
}
|
|
|
|
// Prevent further manipulation of configuration.
|
|
// Not available in IE8, Safari 5, etc.
|
|
if (freeze) {
|
|
freeze(cfg);
|
|
}
|
|
CONFIG = cfg;
|
|
};
|
|
const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);
|
|
const HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);
|
|
|
|
// Certain elements are allowed in both SVG and HTML
|
|
// namespace. We need to specify them explicitly
|
|
// so that they don't get erroneously deleted from
|
|
// HTML namespace.
|
|
const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);
|
|
|
|
/* Keep track of all possible SVG and MathML tags
|
|
* so that we can perform the namespace checks
|
|
* correctly. */
|
|
const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
|
|
const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
|
|
|
|
/**
|
|
* @param {Element} element a DOM element whose namespace is being checked
|
|
* @returns {boolean} Return false if the element has a
|
|
* namespace that a spec-compliant parser would never
|
|
* return. Return true otherwise.
|
|
*/
|
|
const _checkValidNamespace = function _checkValidNamespace(element) {
|
|
let parent = getParentNode(element);
|
|
|
|
// In JSDOM, if we're inside shadow DOM, then parentNode
|
|
// can be null. We just simulate parent in this case.
|
|
if (!parent || !parent.tagName) {
|
|
parent = {
|
|
namespaceURI: NAMESPACE,
|
|
tagName: 'template'
|
|
};
|
|
}
|
|
const tagName = stringToLowerCase(element.tagName);
|
|
const parentTagName = stringToLowerCase(parent.tagName);
|
|
if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
|
|
return false;
|
|
}
|
|
if (element.namespaceURI === SVG_NAMESPACE) {
|
|
// The only way to switch from HTML namespace to SVG
|
|
// is via <svg>. If it happens via any other tag, then
|
|
// it should be killed.
|
|
if (parent.namespaceURI === HTML_NAMESPACE) {
|
|
return tagName === 'svg';
|
|
}
|
|
|
|
// The only way to switch from MathML to SVG is via`
|
|
// svg if parent is either <annotation-xml> or MathML
|
|
// text integration points.
|
|
if (parent.namespaceURI === MATHML_NAMESPACE) {
|
|
return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
|
|
}
|
|
|
|
// We only allow elements that are defined in SVG
|
|
// spec. All others are disallowed in SVG namespace.
|
|
return Boolean(ALL_SVG_TAGS[tagName]);
|
|
}
|
|
if (element.namespaceURI === MATHML_NAMESPACE) {
|
|
// The only way to switch from HTML namespace to MathML
|
|
// is via <math>. If it happens via any other tag, then
|
|
// it should be killed.
|
|
if (parent.namespaceURI === HTML_NAMESPACE) {
|
|
return tagName === 'math';
|
|
}
|
|
|
|
// The only way to switch from SVG to MathML is via
|
|
// <math> and HTML integration points
|
|
if (parent.namespaceURI === SVG_NAMESPACE) {
|
|
return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];
|
|
}
|
|
|
|
// We only allow elements that are defined in MathML
|
|
// spec. All others are disallowed in MathML namespace.
|
|
return Boolean(ALL_MATHML_TAGS[tagName]);
|
|
}
|
|
if (element.namespaceURI === HTML_NAMESPACE) {
|
|
// The only way to switch from SVG to HTML is via
|
|
// HTML integration points, and from MathML to HTML
|
|
// is via MathML text integration points
|
|
if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
|
|
return false;
|
|
}
|
|
if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
|
|
return false;
|
|
}
|
|
|
|
// We disallow tags that are specific for MathML
|
|
// or SVG and should never appear in HTML namespace
|
|
return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
|
|
}
|
|
|
|
// For XHTML and XML documents that support custom namespaces
|
|
if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {
|
|
return true;
|
|
}
|
|
|
|
// The code should never reach this place (this means
|
|
// that the element somehow got namespace that is not
|
|
// HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).
|
|
// Return false just in case.
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* _forceRemove
|
|
*
|
|
* @param {Node} node a DOM node
|
|
*/
|
|
const _forceRemove = function _forceRemove(node) {
|
|
arrayPush(DOMPurify.removed, {
|
|
element: node
|
|
});
|
|
try {
|
|
// eslint-disable-next-line unicorn/prefer-dom-node-remove
|
|
node.parentNode.removeChild(node);
|
|
} catch (_) {
|
|
node.remove();
|
|
}
|
|
};
|
|
|
|
/**
|
|
* _removeAttribute
|
|
*
|
|
* @param {String} name an Attribute name
|
|
* @param {Node} node a DOM node
|
|
*/
|
|
const _removeAttribute = function _removeAttribute(name, node) {
|
|
try {
|
|
arrayPush(DOMPurify.removed, {
|
|
attribute: node.getAttributeNode(name),
|
|
from: node
|
|
});
|
|
} catch (_) {
|
|
arrayPush(DOMPurify.removed, {
|
|
attribute: null,
|
|
from: node
|
|
});
|
|
}
|
|
node.removeAttribute(name);
|
|
|
|
// We void attribute values for unremovable "is"" attributes
|
|
if (name === 'is' && !ALLOWED_ATTR[name]) {
|
|
if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
|
|
try {
|
|
_forceRemove(node);
|
|
} catch (_) {}
|
|
} else {
|
|
try {
|
|
node.setAttribute(name, '');
|
|
} catch (_) {}
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* _initDocument
|
|
*
|
|
* @param {String} dirty a string of dirty markup
|
|
* @return {Document} a DOM, filled with the dirty markup
|
|
*/
|
|
const _initDocument = function _initDocument(dirty) {
|
|
/* Create a HTML document */
|
|
let doc = null;
|
|
let leadingWhitespace = null;
|
|
if (FORCE_BODY) {
|
|
dirty = '<remove></remove>' + dirty;
|
|
} else {
|
|
/* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */
|
|
const matches = stringMatch(dirty, /^[\r\n\t ]+/);
|
|
leadingWhitespace = matches && matches[0];
|
|
}
|
|
if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {
|
|
// Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)
|
|
dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + '</body></html>';
|
|
}
|
|
const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
|
|
/*
|
|
* Use the DOMParser API by default, fallback later if needs be
|
|
* DOMParser not work for svg when has multiple root element.
|
|
*/
|
|
if (NAMESPACE === HTML_NAMESPACE) {
|
|
try {
|
|
doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
|
|
} catch (_) {}
|
|
}
|
|
|
|
/* Use createHTMLDocument in case DOMParser is not available */
|
|
if (!doc || !doc.documentElement) {
|
|
doc = implementation.createDocument(NAMESPACE, 'template', null);
|
|
try {
|
|
doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
|
|
} catch (_) {
|
|
// Syntax error if dirtyPayload is invalid xml
|
|
}
|
|
}
|
|
const body = doc.body || doc.documentElement;
|
|
if (dirty && leadingWhitespace) {
|
|
body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
|
|
}
|
|
|
|
/* Work on whole document or just its body */
|
|
if (NAMESPACE === HTML_NAMESPACE) {
|
|
return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];
|
|
}
|
|
return WHOLE_DOCUMENT ? doc.documentElement : body;
|
|
};
|
|
|
|
/**
|
|
* Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
|
|
*
|
|
* @param {Node} root The root element or node to start traversing on.
|
|
* @return {NodeIterator} The created NodeIterator
|
|
*/
|
|
const _createNodeIterator = function _createNodeIterator(root) {
|
|
return createNodeIterator.call(root.ownerDocument || root, root,
|
|
// eslint-disable-next-line no-bitwise
|
|
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null);
|
|
};
|
|
|
|
/**
|
|
* _isClobbered
|
|
*
|
|
* @param {Node} elm element to check for clobbering attacks
|
|
* @return {Boolean} true if clobbered, false if safe
|
|
*/
|
|
const _isClobbered = function _isClobbered(elm) {
|
|
return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');
|
|
};
|
|
|
|
/**
|
|
* Checks whether the given object is a DOM node.
|
|
*
|
|
* @param {Node} object object to check whether it's a DOM node
|
|
* @return {Boolean} true is object is a DOM node
|
|
*/
|
|
const _isNode = function _isNode(object) {
|
|
return typeof Node === 'function' && object instanceof Node;
|
|
};
|
|
|
|
/**
|
|
* _executeHook
|
|
* Execute user configurable hooks
|
|
*
|
|
* @param {String} entryPoint Name of the hook's entry point
|
|
* @param {Node} currentNode node to work on with the hook
|
|
* @param {Object} data additional hook parameters
|
|
*/
|
|
const _executeHook = function _executeHook(entryPoint, currentNode, data) {
|
|
if (!hooks[entryPoint]) {
|
|
return;
|
|
}
|
|
arrayForEach(hooks[entryPoint], hook => {
|
|
hook.call(DOMPurify, currentNode, data, CONFIG);
|
|
});
|
|
};
|
|
|
|
/**
|
|
* _sanitizeElements
|
|
*
|
|
* @protect nodeName
|
|
* @protect textContent
|
|
* @protect removeChild
|
|
*
|
|
* @param {Node} currentNode to check for permission to exist
|
|
* @return {Boolean} true if node was killed, false if left alive
|
|
*/
|
|
const _sanitizeElements = function _sanitizeElements(currentNode) {
|
|
let content = null;
|
|
|
|
/* Execute a hook if present */
|
|
_executeHook('beforeSanitizeElements', currentNode, null);
|
|
|
|
/* Check if element is clobbered or can clobber */
|
|
if (_isClobbered(currentNode)) {
|
|
_forceRemove(currentNode);
|
|
return true;
|
|
}
|
|
|
|
/* Now let's check the element's type and name */
|
|
const tagName = transformCaseFunc(currentNode.nodeName);
|
|
|
|
/* Execute a hook if present */
|
|
_executeHook('uponSanitizeElement', currentNode, {
|
|
tagName,
|
|
allowedTags: ALLOWED_TAGS
|
|
});
|
|
|
|
/* Detect mXSS attempts abusing namespace confusion */
|
|
if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) {
|
|
_forceRemove(currentNode);
|
|
return true;
|
|
}
|
|
|
|
/* Remove element if anything forbids its presence */
|
|
if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
|
|
/* Check if we have a custom element to handle */
|
|
if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
|
|
if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
|
|
return false;
|
|
}
|
|
if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/* Keep content except for bad-listed elements */
|
|
if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
|
|
const parentNode = getParentNode(currentNode) || currentNode.parentNode;
|
|
const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
|
|
if (childNodes && parentNode) {
|
|
const childCount = childNodes.length;
|
|
for (let i = childCount - 1; i >= 0; --i) {
|
|
parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));
|
|
}
|
|
}
|
|
}
|
|
_forceRemove(currentNode);
|
|
return true;
|
|
}
|
|
|
|
/* Check whether element has a valid namespace */
|
|
if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
|
|
_forceRemove(currentNode);
|
|
return true;
|
|
}
|
|
|
|
/* Make sure that older browsers don't get fallback-tag mXSS */
|
|
if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
|
|
_forceRemove(currentNode);
|
|
return true;
|
|
}
|
|
|
|
/* Sanitize element content to be template-safe */
|
|
if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {
|
|
/* Get the element's text content */
|
|
content = currentNode.textContent;
|
|
arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
|
|
content = stringReplace(content, expr, ' ');
|
|
});
|
|
if (currentNode.textContent !== content) {
|
|
arrayPush(DOMPurify.removed, {
|
|
element: currentNode.cloneNode()
|
|
});
|
|
currentNode.textContent = content;
|
|
}
|
|
}
|
|
|
|
/* Execute a hook if present */
|
|
_executeHook('afterSanitizeElements', currentNode, null);
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* _isValidAttribute
|
|
*
|
|
* @param {string} lcTag Lowercase tag name of containing element.
|
|
* @param {string} lcName Lowercase attribute name.
|
|
* @param {string} value Attribute value.
|
|
* @return {Boolean} Returns true if `value` is valid, otherwise false.
|
|
*/
|
|
// eslint-disable-next-line complexity
|
|
const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
|
|
/* Make sure attribute cannot clobber */
|
|
if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
|
|
return false;
|
|
}
|
|
|
|
/* Allow valid data-* attributes: At least one character after "-"
|
|
(https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
|
|
XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
|
|
We don't need to check the value; it's always URI safe. */
|
|
if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
|
|
if (
|
|
// First condition does a very basic check if a) it's basically a valid custom element tagname AND
|
|
// b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
|
|
// and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
|
|
_isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||
|
|
// Alternative, second condition checks if it's an `is`-attribute, AND
|
|
// the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
|
|
lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {
|
|
return false;
|
|
}
|
|
/* Check value is safe. First, is attr inert? If so, is safe */
|
|
} else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {
|
|
return false;
|
|
} else ;
|
|
return true;
|
|
};
|
|
|
|
/**
|
|
* _isBasicCustomElement
|
|
* checks if at least one dash is included in tagName, and it's not the first char
|
|
* for more sophisticated checking see https://github.com/sindresorhus/validate-element-name
|
|
*
|
|
* @param {string} tagName name of the tag of the node to sanitize
|
|
* @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
|
|
*/
|
|
const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
|
|
return tagName.indexOf('-') > 0;
|
|
};
|
|
|
|
/**
|
|
* _sanitizeAttributes
|
|
*
|
|
* @protect attributes
|
|
* @protect nodeName
|
|
* @protect removeAttribute
|
|
* @protect setAttribute
|
|
*
|
|
* @param {Node} currentNode to sanitize
|
|
*/
|
|
const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
|
|
/* Execute a hook if present */
|
|
_executeHook('beforeSanitizeAttributes', currentNode, null);
|
|
const {
|
|
attributes
|
|
} = currentNode;
|
|
|
|
/* Check if we have attributes; if not we might have a text node */
|
|
if (!attributes) {
|
|
return;
|
|
}
|
|
const hookEvent = {
|
|
attrName: '',
|
|
attrValue: '',
|
|
keepAttr: true,
|
|
allowedAttributes: ALLOWED_ATTR
|
|
};
|
|
let l = attributes.length;
|
|
|
|
/* Go backwards over all attributes; safely remove bad ones */
|
|
while (l--) {
|
|
const attr = attributes[l];
|
|
const {
|
|
name,
|
|
namespaceURI,
|
|
value: attrValue
|
|
} = attr;
|
|
const lcName = transformCaseFunc(name);
|
|
let value = name === 'value' ? attrValue : stringTrim(attrValue);
|
|
|
|
/* Execute a hook if present */
|
|
hookEvent.attrName = lcName;
|
|
hookEvent.attrValue = value;
|
|
hookEvent.keepAttr = true;
|
|
hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set
|
|
_executeHook('uponSanitizeAttribute', currentNode, hookEvent);
|
|
value = hookEvent.attrValue;
|
|
/* Did the hooks approve of the attribute? */
|
|
if (hookEvent.forceKeepAttr) {
|
|
continue;
|
|
}
|
|
|
|
/* Remove attribute */
|
|
_removeAttribute(name, currentNode);
|
|
|
|
/* Did the hooks approve of the attribute? */
|
|
if (!hookEvent.keepAttr) {
|
|
continue;
|
|
}
|
|
|
|
/* Work around a security issue in jQuery 3.0 */
|
|
if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
|
|
_removeAttribute(name, currentNode);
|
|
continue;
|
|
}
|
|
|
|
/* Sanitize attribute content to be template-safe */
|
|
if (SAFE_FOR_TEMPLATES) {
|
|
arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
|
|
value = stringReplace(value, expr, ' ');
|
|
});
|
|
}
|
|
|
|
/* Is `value` valid for this attribute? */
|
|
const lcTag = transformCaseFunc(currentNode.nodeName);
|
|
if (!_isValidAttribute(lcTag, lcName, value)) {
|
|
continue;
|
|
}
|
|
|
|
/* Full DOM Clobbering protection via namespace isolation,
|
|
* Prefix id and name attributes with `user-content-`
|
|
*/
|
|
if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {
|
|
// Remove the attribute with this value
|
|
_removeAttribute(name, currentNode);
|
|
|
|
// Prefix the value and later re-create the attribute with the sanitized value
|
|
value = SANITIZE_NAMED_PROPS_PREFIX + value;
|
|
}
|
|
|
|
/* Handle attributes that require Trusted Types */
|
|
if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {
|
|
if (namespaceURI) ; else {
|
|
switch (trustedTypes.getAttributeType(lcTag, lcName)) {
|
|
case 'TrustedHTML':
|
|
{
|
|
value = trustedTypesPolicy.createHTML(value);
|
|
break;
|
|
}
|
|
case 'TrustedScriptURL':
|
|
{
|
|
value = trustedTypesPolicy.createScriptURL(value);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Handle invalid data-* attribute set by try-catching it */
|
|
try {
|
|
if (namespaceURI) {
|
|
currentNode.setAttributeNS(namespaceURI, name, value);
|
|
} else {
|
|
/* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
|
|
currentNode.setAttribute(name, value);
|
|
}
|
|
arrayPop(DOMPurify.removed);
|
|
} catch (_) {}
|
|
}
|
|
|
|
/* Execute a hook if present */
|
|
_executeHook('afterSanitizeAttributes', currentNode, null);
|
|
};
|
|
|
|
/**
|
|
* _sanitizeShadowDOM
|
|
*
|
|
* @param {DocumentFragment} fragment to iterate over recursively
|
|
*/
|
|
const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
|
|
let shadowNode = null;
|
|
const shadowIterator = _createNodeIterator(fragment);
|
|
|
|
/* Execute a hook if present */
|
|
_executeHook('beforeSanitizeShadowDOM', fragment, null);
|
|
while (shadowNode = shadowIterator.nextNode()) {
|
|
/* Execute a hook if present */
|
|
_executeHook('uponSanitizeShadowNode', shadowNode, null);
|
|
|
|
/* Sanitize tags and elements */
|
|
if (_sanitizeElements(shadowNode)) {
|
|
continue;
|
|
}
|
|
|
|
/* Deep shadow DOM detected */
|
|
if (shadowNode.content instanceof DocumentFragment) {
|
|
_sanitizeShadowDOM(shadowNode.content);
|
|
}
|
|
|
|
/* Check attributes, sanitize if necessary */
|
|
_sanitizeAttributes(shadowNode);
|
|
}
|
|
|
|
/* Execute a hook if present */
|
|
_executeHook('afterSanitizeShadowDOM', fragment, null);
|
|
};
|
|
|
|
/**
|
|
* Sanitize
|
|
* Public method providing core sanitation functionality
|
|
*
|
|
* @param {String|Node} dirty string or DOM node
|
|
* @param {Object} cfg object
|
|
*/
|
|
// eslint-disable-next-line complexity
|
|
DOMPurify.sanitize = function (dirty) {
|
|
let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
let body = null;
|
|
let importedNode = null;
|
|
let currentNode = null;
|
|
let returnNode = null;
|
|
/* Make sure we have a string to sanitize.
|
|
DO NOT return early, as this will return the wrong type if
|
|
the user has requested a DOM object rather than a string */
|
|
IS_EMPTY_INPUT = !dirty;
|
|
if (IS_EMPTY_INPUT) {
|
|
dirty = '<!-->';
|
|
}
|
|
|
|
/* Stringify, in case dirty is an object */
|
|
if (typeof dirty !== 'string' && !_isNode(dirty)) {
|
|
if (typeof dirty.toString === 'function') {
|
|
dirty = dirty.toString();
|
|
if (typeof dirty !== 'string') {
|
|
throw typeErrorCreate('dirty is not a string, aborting');
|
|
}
|
|
} else {
|
|
throw typeErrorCreate('toString is not a function');
|
|
}
|
|
}
|
|
|
|
/* Return dirty HTML if DOMPurify cannot run */
|
|
if (!DOMPurify.isSupported) {
|
|
return dirty;
|
|
}
|
|
|
|
/* Assign config vars */
|
|
if (!SET_CONFIG) {
|
|
_parseConfig(cfg);
|
|
}
|
|
|
|
/* Clean up removed elements */
|
|
DOMPurify.removed = [];
|
|
|
|
/* Check if dirty is correctly typed for IN_PLACE */
|
|
if (typeof dirty === 'string') {
|
|
IN_PLACE = false;
|
|
}
|
|
if (IN_PLACE) {
|
|
/* Do some early pre-sanitization to avoid unsafe root nodes */
|
|
if (dirty.nodeName) {
|
|
const tagName = transformCaseFunc(dirty.nodeName);
|
|
if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
|
|
throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
|
|
}
|
|
}
|
|
} else if (dirty instanceof Node) {
|
|
/* If dirty is a DOM element, append to an empty document to avoid
|
|
elements being stripped by the parser */
|
|
body = _initDocument('<!---->');
|
|
importedNode = body.ownerDocument.importNode(dirty, true);
|
|
if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {
|
|
/* Node is already a body, use as is */
|
|
body = importedNode;
|
|
} else if (importedNode.nodeName === 'HTML') {
|
|
body = importedNode;
|
|
} else {
|
|
// eslint-disable-next-line unicorn/prefer-dom-node-append
|
|
body.appendChild(importedNode);
|
|
}
|
|
} else {
|
|
/* Exit directly if we have nothing to do */
|
|
if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&
|
|
// eslint-disable-next-line unicorn/prefer-includes
|
|
dirty.indexOf('<') === -1) {
|
|
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
|
|
}
|
|
|
|
/* Initialize the document to work on */
|
|
body = _initDocument(dirty);
|
|
|
|
/* Check we have a DOM node from the data */
|
|
if (!body) {
|
|
return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';
|
|
}
|
|
}
|
|
|
|
/* Remove first element node (ours) if FORCE_BODY is set */
|
|
if (body && FORCE_BODY) {
|
|
_forceRemove(body.firstChild);
|
|
}
|
|
|
|
/* Get node iterator */
|
|
const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
|
|
|
|
/* Now start iterating over the created document */
|
|
while (currentNode = nodeIterator.nextNode()) {
|
|
/* Sanitize tags and elements */
|
|
if (_sanitizeElements(currentNode)) {
|
|
continue;
|
|
}
|
|
|
|
/* Shadow DOM detected, sanitize it */
|
|
if (currentNode.content instanceof DocumentFragment) {
|
|
_sanitizeShadowDOM(currentNode.content);
|
|
}
|
|
|
|
/* Check attributes, sanitize if necessary */
|
|
_sanitizeAttributes(currentNode);
|
|
}
|
|
|
|
/* If we sanitized `dirty` in-place, return it. */
|
|
if (IN_PLACE) {
|
|
return dirty;
|
|
}
|
|
|
|
/* Return sanitized string or DOM */
|
|
if (RETURN_DOM) {
|
|
if (RETURN_DOM_FRAGMENT) {
|
|
returnNode = createDocumentFragment.call(body.ownerDocument);
|
|
while (body.firstChild) {
|
|
// eslint-disable-next-line unicorn/prefer-dom-node-append
|
|
returnNode.appendChild(body.firstChild);
|
|
}
|
|
} else {
|
|
returnNode = body;
|
|
}
|
|
if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
|
|
/*
|
|
AdoptNode() is not used because internal state is not reset
|
|
(e.g. the past names map of a HTMLFormElement), this is safe
|
|
in theory but we would rather not risk another attack vector.
|
|
The state that is cloned by importNode() is explicitly defined
|
|
by the specs.
|
|
*/
|
|
returnNode = importNode.call(originalDocument, returnNode, true);
|
|
}
|
|
return returnNode;
|
|
}
|
|
let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
|
|
|
|
/* Serialize doctype if allowed */
|
|
if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
|
|
serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\n' + serializedHTML;
|
|
}
|
|
|
|
/* Sanitize final string template-safe */
|
|
if (SAFE_FOR_TEMPLATES) {
|
|
arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
|
|
serializedHTML = stringReplace(serializedHTML, expr, ' ');
|
|
});
|
|
}
|
|
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
|
|
};
|
|
|
|
/**
|
|
* Public method to set the configuration once
|
|
* setConfig
|
|
*
|
|
* @param {Object} cfg configuration object
|
|
*/
|
|
DOMPurify.setConfig = function () {
|
|
let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
_parseConfig(cfg);
|
|
SET_CONFIG = true;
|
|
};
|
|
|
|
/**
|
|
* Public method to remove the configuration
|
|
* clearConfig
|
|
*
|
|
*/
|
|
DOMPurify.clearConfig = function () {
|
|
CONFIG = null;
|
|
SET_CONFIG = false;
|
|
};
|
|
|
|
/**
|
|
* Public method to check if an attribute value is valid.
|
|
* Uses last set config, if any. Otherwise, uses config defaults.
|
|
* isValidAttribute
|
|
*
|
|
* @param {String} tag Tag name of containing element.
|
|
* @param {String} attr Attribute name.
|
|
* @param {String} value Attribute value.
|
|
* @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.
|
|
*/
|
|
DOMPurify.isValidAttribute = function (tag, attr, value) {
|
|
/* Initialize shared config vars if necessary. */
|
|
if (!CONFIG) {
|
|
_parseConfig({});
|
|
}
|
|
const lcTag = transformCaseFunc(tag);
|
|
const lcName = transformCaseFunc(attr);
|
|
return _isValidAttribute(lcTag, lcName, value);
|
|
};
|
|
|
|
/**
|
|
* AddHook
|
|
* Public method to add DOMPurify hooks
|
|
*
|
|
* @param {String} entryPoint entry point for the hook to add
|
|
* @param {Function} hookFunction function to execute
|
|
*/
|
|
DOMPurify.addHook = function (entryPoint, hookFunction) {
|
|
if (typeof hookFunction !== 'function') {
|
|
return;
|
|
}
|
|
hooks[entryPoint] = hooks[entryPoint] || [];
|
|
arrayPush(hooks[entryPoint], hookFunction);
|
|
};
|
|
|
|
/**
|
|
* RemoveHook
|
|
* Public method to remove a DOMPurify hook at a given entryPoint
|
|
* (pops it from the stack of hooks if more are present)
|
|
*
|
|
* @param {String} entryPoint entry point for the hook to remove
|
|
* @return {Function} removed(popped) hook
|
|
*/
|
|
DOMPurify.removeHook = function (entryPoint) {
|
|
if (hooks[entryPoint]) {
|
|
return arrayPop(hooks[entryPoint]);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* RemoveHooks
|
|
* Public method to remove all DOMPurify hooks at a given entryPoint
|
|
*
|
|
* @param {String} entryPoint entry point for the hooks to remove
|
|
*/
|
|
DOMPurify.removeHooks = function (entryPoint) {
|
|
if (hooks[entryPoint]) {
|
|
hooks[entryPoint] = [];
|
|
}
|
|
};
|
|
|
|
/**
|
|
* RemoveAllHooks
|
|
* Public method to remove all DOMPurify hooks
|
|
*/
|
|
DOMPurify.removeAllHooks = function () {
|
|
hooks = {};
|
|
};
|
|
return DOMPurify;
|
|
}
|
|
var purify = createDOMPurify();
|
|
|
|
return purify;
|
|
|
|
}));
|
|
//# sourceMappingURL=purify.js.map
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/escape-html/index.js":
|
|
/*!*******************************************!*\
|
|
!*** ./node_modules/escape-html/index.js ***!
|
|
\*******************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
/*!
|
|
* escape-html
|
|
* Copyright(c) 2012-2013 TJ Holowaychuk
|
|
* Copyright(c) 2015 Andreas Lubbe
|
|
* Copyright(c) 2015 Tiancheng "Timothy" Gu
|
|
* MIT Licensed
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
* Module variables.
|
|
* @private
|
|
*/
|
|
|
|
var matchHtmlRegExp = /["'&<>]/;
|
|
|
|
/**
|
|
* Module exports.
|
|
* @public
|
|
*/
|
|
|
|
module.exports = escapeHtml;
|
|
|
|
/**
|
|
* Escape special characters in the given string of html.
|
|
*
|
|
* @param {string} string The string to escape for inserting into HTML
|
|
* @return {string}
|
|
* @public
|
|
*/
|
|
|
|
function escapeHtml(string) {
|
|
var str = '' + string;
|
|
var match = matchHtmlRegExp.exec(str);
|
|
|
|
if (!match) {
|
|
return str;
|
|
}
|
|
|
|
var escape;
|
|
var html = '';
|
|
var index = 0;
|
|
var lastIndex = 0;
|
|
|
|
for (index = match.index; index < str.length; index++) {
|
|
switch (str.charCodeAt(index)) {
|
|
case 34: // "
|
|
escape = '"';
|
|
break;
|
|
case 38: // &
|
|
escape = '&';
|
|
break;
|
|
case 39: // '
|
|
escape = ''';
|
|
break;
|
|
case 60: // <
|
|
escape = '<';
|
|
break;
|
|
case 62: // >
|
|
escape = '>';
|
|
break;
|
|
default:
|
|
continue;
|
|
}
|
|
|
|
if (lastIndex !== index) {
|
|
html += str.substring(lastIndex, index);
|
|
}
|
|
|
|
lastIndex = index + 1;
|
|
html += escape;
|
|
}
|
|
|
|
return lastIndex !== index
|
|
? html + str.substring(lastIndex, index)
|
|
: html;
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/process/browser.js":
|
|
/*!*****************************************!*\
|
|
!*** ./node_modules/process/browser.js ***!
|
|
\*****************************************/
|
|
/***/ ((module) => {
|
|
|
|
// shim for using process in browser
|
|
var process = module.exports = {};
|
|
|
|
// cached from whatever global is present so that test runners that stub it
|
|
// don't break things. But we need to wrap it in a try catch in case it is
|
|
// wrapped in strict mode code which doesn't define any globals. It's inside a
|
|
// function because try/catches deoptimize in certain engines.
|
|
|
|
var cachedSetTimeout;
|
|
var cachedClearTimeout;
|
|
|
|
function defaultSetTimout() {
|
|
throw new Error('setTimeout has not been defined');
|
|
}
|
|
function defaultClearTimeout () {
|
|
throw new Error('clearTimeout has not been defined');
|
|
}
|
|
(function () {
|
|
try {
|
|
if (typeof setTimeout === 'function') {
|
|
cachedSetTimeout = setTimeout;
|
|
} else {
|
|
cachedSetTimeout = defaultSetTimout;
|
|
}
|
|
} catch (e) {
|
|
cachedSetTimeout = defaultSetTimout;
|
|
}
|
|
try {
|
|
if (typeof clearTimeout === 'function') {
|
|
cachedClearTimeout = clearTimeout;
|
|
} else {
|
|
cachedClearTimeout = defaultClearTimeout;
|
|
}
|
|
} catch (e) {
|
|
cachedClearTimeout = defaultClearTimeout;
|
|
}
|
|
} ())
|
|
function runTimeout(fun) {
|
|
if (cachedSetTimeout === setTimeout) {
|
|
//normal enviroments in sane situations
|
|
return setTimeout(fun, 0);
|
|
}
|
|
// if setTimeout wasn't available but was latter defined
|
|
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
|
|
cachedSetTimeout = setTimeout;
|
|
return setTimeout(fun, 0);
|
|
}
|
|
try {
|
|
// when when somebody has screwed with setTimeout but no I.E. maddness
|
|
return cachedSetTimeout(fun, 0);
|
|
} catch(e){
|
|
try {
|
|
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
|
return cachedSetTimeout.call(null, fun, 0);
|
|
} catch(e){
|
|
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
|
|
return cachedSetTimeout.call(this, fun, 0);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
function runClearTimeout(marker) {
|
|
if (cachedClearTimeout === clearTimeout) {
|
|
//normal enviroments in sane situations
|
|
return clearTimeout(marker);
|
|
}
|
|
// if clearTimeout wasn't available but was latter defined
|
|
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
|
|
cachedClearTimeout = clearTimeout;
|
|
return clearTimeout(marker);
|
|
}
|
|
try {
|
|
// when when somebody has screwed with setTimeout but no I.E. maddness
|
|
return cachedClearTimeout(marker);
|
|
} catch (e){
|
|
try {
|
|
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
|
|
return cachedClearTimeout.call(null, marker);
|
|
} catch (e){
|
|
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
|
|
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
|
|
return cachedClearTimeout.call(this, marker);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
var queue = [];
|
|
var draining = false;
|
|
var currentQueue;
|
|
var queueIndex = -1;
|
|
|
|
function cleanUpNextTick() {
|
|
if (!draining || !currentQueue) {
|
|
return;
|
|
}
|
|
draining = false;
|
|
if (currentQueue.length) {
|
|
queue = currentQueue.concat(queue);
|
|
} else {
|
|
queueIndex = -1;
|
|
}
|
|
if (queue.length) {
|
|
drainQueue();
|
|
}
|
|
}
|
|
|
|
function drainQueue() {
|
|
if (draining) {
|
|
return;
|
|
}
|
|
var timeout = runTimeout(cleanUpNextTick);
|
|
draining = true;
|
|
|
|
var len = queue.length;
|
|
while(len) {
|
|
currentQueue = queue;
|
|
queue = [];
|
|
while (++queueIndex < len) {
|
|
if (currentQueue) {
|
|
currentQueue[queueIndex].run();
|
|
}
|
|
}
|
|
queueIndex = -1;
|
|
len = queue.length;
|
|
}
|
|
currentQueue = null;
|
|
draining = false;
|
|
runClearTimeout(timeout);
|
|
}
|
|
|
|
process.nextTick = function (fun) {
|
|
var args = new Array(arguments.length - 1);
|
|
if (arguments.length > 1) {
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
args[i - 1] = arguments[i];
|
|
}
|
|
}
|
|
queue.push(new Item(fun, args));
|
|
if (queue.length === 1 && !draining) {
|
|
runTimeout(drainQueue);
|
|
}
|
|
};
|
|
|
|
// v8 likes predictible objects
|
|
function Item(fun, array) {
|
|
this.fun = fun;
|
|
this.array = array;
|
|
}
|
|
Item.prototype.run = function () {
|
|
this.fun.apply(null, this.array);
|
|
};
|
|
process.title = 'browser';
|
|
process.browser = true;
|
|
process.env = {};
|
|
process.argv = [];
|
|
process.version = ''; // empty string to avoid regexp issues
|
|
process.versions = {};
|
|
|
|
function noop() {}
|
|
|
|
process.on = noop;
|
|
process.addListener = noop;
|
|
process.once = noop;
|
|
process.off = noop;
|
|
process.removeListener = noop;
|
|
process.removeAllListeners = noop;
|
|
process.emit = noop;
|
|
process.prependListener = noop;
|
|
process.prependOnceListener = noop;
|
|
|
|
process.listeners = function (name) { return [] }
|
|
|
|
process.binding = function (name) {
|
|
throw new Error('process.binding is not supported');
|
|
};
|
|
|
|
process.cwd = function () { return '/' };
|
|
process.chdir = function (dir) {
|
|
throw new Error('process.chdir is not supported');
|
|
};
|
|
process.umask = function() { return 0; };
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./css/calendar.scss":
|
|
/*!***************************!*\
|
|
!*** ./css/calendar.scss ***!
|
|
\***************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
// style-loader: Adds some css to the DOM by adding a <style> tag
|
|
|
|
// load the styles
|
|
var content = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!../node_modules/resolve-url-loader/index.js!../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./calendar.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./css/calendar.scss");
|
|
if(content.__esModule) content = content.default;
|
|
if(typeof content === 'string') content = [[module.id, content, '']];
|
|
if(content.locals) module.exports = content.locals;
|
|
// add the styles to the DOM
|
|
var add = (__webpack_require__(/*! !../node_modules/vue-style-loader/lib/addStylesClient.js */ "./node_modules/vue-style-loader/lib/addStylesClient.js")["default"])
|
|
var update = add("301f1732", content, false, {});
|
|
// Hot Module Replacement
|
|
if(false) {}
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/vue-style-loader/lib/addStylesClient.js":
|
|
/*!**************************************************************!*\
|
|
!*** ./node_modules/vue-style-loader/lib/addStylesClient.js ***!
|
|
\**************************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "default": () => (/* binding */ addStylesClient)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _listToStyles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./listToStyles */ "./node_modules/vue-style-loader/lib/listToStyles.js");
|
|
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
Modified by Evan You @yyx990803
|
|
*/
|
|
|
|
|
|
|
|
var hasDocument = typeof document !== 'undefined'
|
|
|
|
if (typeof DEBUG !== 'undefined' && DEBUG) {
|
|
if (!hasDocument) {
|
|
throw new Error(
|
|
'vue-style-loader cannot be used in a non-browser environment. ' +
|
|
"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
|
|
) }
|
|
}
|
|
|
|
/*
|
|
type StyleObject = {
|
|
id: number;
|
|
parts: Array<StyleObjectPart>
|
|
}
|
|
|
|
type StyleObjectPart = {
|
|
css: string;
|
|
media: string;
|
|
sourceMap: ?string
|
|
}
|
|
*/
|
|
|
|
var stylesInDom = {/*
|
|
[id: number]: {
|
|
id: number,
|
|
refs: number,
|
|
parts: Array<(obj?: StyleObjectPart) => void>
|
|
}
|
|
*/}
|
|
|
|
var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
|
|
var singletonElement = null
|
|
var singletonCounter = 0
|
|
var isProduction = false
|
|
var noop = function () {}
|
|
var options = null
|
|
var ssrIdKey = 'data-vue-ssr-id'
|
|
|
|
// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
|
|
// tags it will allow on a page
|
|
var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
|
|
|
|
function addStylesClient (parentId, list, _isProduction, _options) {
|
|
isProduction = _isProduction
|
|
|
|
options = _options || {}
|
|
|
|
var styles = (0,_listToStyles__WEBPACK_IMPORTED_MODULE_0__["default"])(parentId, list)
|
|
addStylesToDom(styles)
|
|
|
|
return function update (newList) {
|
|
var mayRemove = []
|
|
for (var i = 0; i < styles.length; i++) {
|
|
var item = styles[i]
|
|
var domStyle = stylesInDom[item.id]
|
|
domStyle.refs--
|
|
mayRemove.push(domStyle)
|
|
}
|
|
if (newList) {
|
|
styles = (0,_listToStyles__WEBPACK_IMPORTED_MODULE_0__["default"])(parentId, newList)
|
|
addStylesToDom(styles)
|
|
} else {
|
|
styles = []
|
|
}
|
|
for (var i = 0; i < mayRemove.length; i++) {
|
|
var domStyle = mayRemove[i]
|
|
if (domStyle.refs === 0) {
|
|
for (var j = 0; j < domStyle.parts.length; j++) {
|
|
domStyle.parts[j]()
|
|
}
|
|
delete stylesInDom[domStyle.id]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function addStylesToDom (styles /* Array<StyleObject> */) {
|
|
for (var i = 0; i < styles.length; i++) {
|
|
var item = styles[i]
|
|
var domStyle = stylesInDom[item.id]
|
|
if (domStyle) {
|
|
domStyle.refs++
|
|
for (var j = 0; j < domStyle.parts.length; j++) {
|
|
domStyle.parts[j](item.parts[j])
|
|
}
|
|
for (; j < item.parts.length; j++) {
|
|
domStyle.parts.push(addStyle(item.parts[j]))
|
|
}
|
|
if (domStyle.parts.length > item.parts.length) {
|
|
domStyle.parts.length = item.parts.length
|
|
}
|
|
} else {
|
|
var parts = []
|
|
for (var j = 0; j < item.parts.length; j++) {
|
|
parts.push(addStyle(item.parts[j]))
|
|
}
|
|
stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
|
|
}
|
|
}
|
|
}
|
|
|
|
function createStyleElement () {
|
|
var styleElement = document.createElement('style')
|
|
styleElement.type = 'text/css'
|
|
head.appendChild(styleElement)
|
|
return styleElement
|
|
}
|
|
|
|
function addStyle (obj /* StyleObjectPart */) {
|
|
var update, remove
|
|
var styleElement = document.querySelector('style[' + ssrIdKey + '~="' + obj.id + '"]')
|
|
|
|
if (styleElement) {
|
|
if (isProduction) {
|
|
// has SSR styles and in production mode.
|
|
// simply do nothing.
|
|
return noop
|
|
} else {
|
|
// has SSR styles but in dev mode.
|
|
// for some reason Chrome can't handle source map in server-rendered
|
|
// style tags - source maps in <style> only works if the style tag is
|
|
// created and inserted dynamically. So we remove the server rendered
|
|
// styles and inject new ones.
|
|
styleElement.parentNode.removeChild(styleElement)
|
|
}
|
|
}
|
|
|
|
if (isOldIE) {
|
|
// use singleton mode for IE9.
|
|
var styleIndex = singletonCounter++
|
|
styleElement = singletonElement || (singletonElement = createStyleElement())
|
|
update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
|
|
remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
|
|
} else {
|
|
// use multi-style-tag mode in all other cases
|
|
styleElement = createStyleElement()
|
|
update = applyToTag.bind(null, styleElement)
|
|
remove = function () {
|
|
styleElement.parentNode.removeChild(styleElement)
|
|
}
|
|
}
|
|
|
|
update(obj)
|
|
|
|
return function updateStyle (newObj /* StyleObjectPart */) {
|
|
if (newObj) {
|
|
if (newObj.css === obj.css &&
|
|
newObj.media === obj.media &&
|
|
newObj.sourceMap === obj.sourceMap) {
|
|
return
|
|
}
|
|
update(obj = newObj)
|
|
} else {
|
|
remove()
|
|
}
|
|
}
|
|
}
|
|
|
|
var replaceText = (function () {
|
|
var textStore = []
|
|
|
|
return function (index, replacement) {
|
|
textStore[index] = replacement
|
|
return textStore.filter(Boolean).join('\n')
|
|
}
|
|
})()
|
|
|
|
function applyToSingletonTag (styleElement, index, remove, obj) {
|
|
var css = remove ? '' : obj.css
|
|
|
|
if (styleElement.styleSheet) {
|
|
styleElement.styleSheet.cssText = replaceText(index, css)
|
|
} else {
|
|
var cssNode = document.createTextNode(css)
|
|
var childNodes = styleElement.childNodes
|
|
if (childNodes[index]) styleElement.removeChild(childNodes[index])
|
|
if (childNodes.length) {
|
|
styleElement.insertBefore(cssNode, childNodes[index])
|
|
} else {
|
|
styleElement.appendChild(cssNode)
|
|
}
|
|
}
|
|
}
|
|
|
|
function applyToTag (styleElement, obj) {
|
|
var css = obj.css
|
|
var media = obj.media
|
|
var sourceMap = obj.sourceMap
|
|
|
|
if (media) {
|
|
styleElement.setAttribute('media', media)
|
|
}
|
|
if (options.ssrId) {
|
|
styleElement.setAttribute(ssrIdKey, obj.id)
|
|
}
|
|
|
|
if (sourceMap) {
|
|
// https://developer.chrome.com/devtools/docs/javascript-debugging
|
|
// this makes source maps inside style tags work properly in Chrome
|
|
css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
|
|
// http://stackoverflow.com/a/26603875
|
|
css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
|
|
}
|
|
|
|
if (styleElement.styleSheet) {
|
|
styleElement.styleSheet.cssText = css
|
|
} else {
|
|
while (styleElement.firstChild) {
|
|
styleElement.removeChild(styleElement.firstChild)
|
|
}
|
|
styleElement.appendChild(document.createTextNode(css))
|
|
}
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/vue-style-loader/lib/listToStyles.js":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/vue-style-loader/lib/listToStyles.js ***!
|
|
\***********************************************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ "default": () => (/* binding */ listToStyles)
|
|
/* harmony export */ });
|
|
/**
|
|
* Translates the list format produced by css-loader into something
|
|
* easier to manipulate.
|
|
*/
|
|
function listToStyles (parentId, list) {
|
|
var styles = []
|
|
var newStyles = {}
|
|
for (var i = 0; i < list.length; i++) {
|
|
var item = list[i]
|
|
var id = item[0]
|
|
var css = item[1]
|
|
var media = item[2]
|
|
var sourceMap = item[3]
|
|
var part = {
|
|
id: parentId + ':' + i,
|
|
css: css,
|
|
media: media,
|
|
sourceMap: sourceMap
|
|
}
|
|
if (!newStyles[id]) {
|
|
styles.push(newStyles[id] = { id: id, parts: [part] })
|
|
} else {
|
|
newStyles[id].parts.push(part)
|
|
}
|
|
}
|
|
return styles
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/a-callable.js":
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/a-callable.js ***!
|
|
\******************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js");
|
|
|
|
var $TypeError = TypeError;
|
|
|
|
// `Assert: IsCallable(argument) is true`
|
|
module.exports = function (argument) {
|
|
if (isCallable(argument)) return argument;
|
|
throw new $TypeError(tryToString(argument) + ' is not a function');
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/advance-string-index.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/advance-string-index.js ***!
|
|
\****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt);
|
|
|
|
// `AdvanceStringIndex` abstract operation
|
|
// https://tc39.es/ecma262/#sec-advancestringindex
|
|
module.exports = function (S, index, unicode) {
|
|
return index + (unicode ? charAt(S, index).length : 1);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/an-object.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/core-js/internals/an-object.js ***!
|
|
\*****************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
|
|
|
var $String = String;
|
|
var $TypeError = TypeError;
|
|
|
|
// `Assert: Type(argument) is Object`
|
|
module.exports = function (argument) {
|
|
if (isObject(argument)) return argument;
|
|
throw new $TypeError($String(argument) + ' is not an object');
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/array-includes.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/array-includes.js ***!
|
|
\**********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
|
|
var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
|
|
var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js");
|
|
|
|
// `Array.prototype.{ indexOf, includes }` methods implementation
|
|
var createMethod = function (IS_INCLUDES) {
|
|
return function ($this, el, fromIndex) {
|
|
var O = toIndexedObject($this);
|
|
var length = lengthOfArrayLike(O);
|
|
if (length === 0) return !IS_INCLUDES && -1;
|
|
var index = toAbsoluteIndex(fromIndex, length);
|
|
var value;
|
|
// Array#includes uses SameValueZero equality algorithm
|
|
// eslint-disable-next-line no-self-compare -- NaN check
|
|
if (IS_INCLUDES && el !== el) while (length > index) {
|
|
value = O[index++];
|
|
// eslint-disable-next-line no-self-compare -- NaN check
|
|
if (value !== value) return true;
|
|
// Array#indexOf ignores holes, Array#includes - not
|
|
} else for (;length > index; index++) {
|
|
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
|
|
} return !IS_INCLUDES && -1;
|
|
};
|
|
};
|
|
|
|
module.exports = {
|
|
// `Array.prototype.includes` method
|
|
// https://tc39.es/ecma262/#sec-array.prototype.includes
|
|
includes: createMethod(true),
|
|
// `Array.prototype.indexOf` method
|
|
// https://tc39.es/ecma262/#sec-array.prototype.indexof
|
|
indexOf: createMethod(false)
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/classof-raw.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/classof-raw.js ***!
|
|
\*******************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
|
|
var toString = uncurryThis({}.toString);
|
|
var stringSlice = uncurryThis(''.slice);
|
|
|
|
module.exports = function (it) {
|
|
return stringSlice(toString(it), 8, -1);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/classof.js":
|
|
/*!***************************************************!*\
|
|
!*** ./node_modules/core-js/internals/classof.js ***!
|
|
\***************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
|
|
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
|
|
|
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
var $Object = Object;
|
|
|
|
// ES3 wrong here
|
|
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';
|
|
|
|
// fallback for IE11 Script Access Denied error
|
|
var tryGet = function (it, key) {
|
|
try {
|
|
return it[key];
|
|
} catch (error) { /* empty */ }
|
|
};
|
|
|
|
// getting tag from ES6+ `Object.prototype.toString`
|
|
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
|
|
var O, tag, result;
|
|
return it === undefined ? 'Undefined' : it === null ? 'Null'
|
|
// @@toStringTag case
|
|
: typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag
|
|
// builtinTag case
|
|
: CORRECT_ARGUMENTS ? classofRaw(O)
|
|
// ES3 arguments fallback
|
|
: (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/copy-constructor-properties.js":
|
|
/*!***********************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
|
|
\***********************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
|
|
var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js");
|
|
var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
|
|
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
|
|
|
|
module.exports = function (target, source, exceptions) {
|
|
var keys = ownKeys(source);
|
|
var defineProperty = definePropertyModule.f;
|
|
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
|
|
for (var i = 0; i < keys.length; i++) {
|
|
var key = keys[i];
|
|
if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
|
|
defineProperty(target, key, getOwnPropertyDescriptor(source, key));
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/create-non-enumerable-property.js":
|
|
/*!**************************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***!
|
|
\**************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
|
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
|
|
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
|
|
|
|
module.exports = DESCRIPTORS ? function (object, key, value) {
|
|
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
|
|
} : function (object, key, value) {
|
|
object[key] = value;
|
|
return object;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/create-property-descriptor.js":
|
|
/*!**********************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/create-property-descriptor.js ***!
|
|
\**********************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
module.exports = function (bitmap, value) {
|
|
return {
|
|
enumerable: !(bitmap & 1),
|
|
configurable: !(bitmap & 2),
|
|
writable: !(bitmap & 4),
|
|
value: value
|
|
};
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/define-built-in.js":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/define-built-in.js ***!
|
|
\***********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
|
|
var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "./node_modules/core-js/internals/make-built-in.js");
|
|
var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
|
|
|
|
module.exports = function (O, key, value, options) {
|
|
if (!options) options = {};
|
|
var simple = options.enumerable;
|
|
var name = options.name !== undefined ? options.name : key;
|
|
if (isCallable(value)) makeBuiltIn(value, name, options);
|
|
if (options.global) {
|
|
if (simple) O[key] = value;
|
|
else defineGlobalProperty(key, value);
|
|
} else {
|
|
try {
|
|
if (!options.unsafe) delete O[key];
|
|
else if (O[key]) simple = true;
|
|
} catch (error) { /* empty */ }
|
|
if (simple) O[key] = value;
|
|
else definePropertyModule.f(O, key, {
|
|
value: value,
|
|
enumerable: false,
|
|
configurable: !options.nonConfigurable,
|
|
writable: !options.nonWritable
|
|
});
|
|
} return O;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/define-global-property.js":
|
|
/*!******************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/define-global-property.js ***!
|
|
\******************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
|
|
// eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
var defineProperty = Object.defineProperty;
|
|
|
|
module.exports = function (key, value) {
|
|
try {
|
|
defineProperty(global, key, { value: value, configurable: true, writable: true });
|
|
} catch (error) {
|
|
global[key] = value;
|
|
} return value;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/descriptors.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/descriptors.js ***!
|
|
\*******************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
|
|
// Detect IE8's incomplete defineProperty implementation
|
|
module.exports = !fails(function () {
|
|
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/document-create-element.js":
|
|
/*!*******************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/document-create-element.js ***!
|
|
\*******************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
|
|
|
var document = global.document;
|
|
// typeof document.createElement is 'object' in old IE
|
|
var EXISTS = isObject(document) && isObject(document.createElement);
|
|
|
|
module.exports = function (it) {
|
|
return EXISTS ? document.createElement(it) : {};
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/engine-user-agent.js":
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/engine-user-agent.js ***!
|
|
\*************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/engine-v8-version.js":
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/engine-v8-version.js ***!
|
|
\*************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "./node_modules/core-js/internals/engine-user-agent.js");
|
|
|
|
var process = global.process;
|
|
var Deno = global.Deno;
|
|
var versions = process && process.versions || Deno && Deno.version;
|
|
var v8 = versions && versions.v8;
|
|
var match, version;
|
|
|
|
if (v8) {
|
|
match = v8.split('.');
|
|
// in old Chrome, versions of V8 isn't V8 = Chrome / 10
|
|
// but their correct versions are not interesting for us
|
|
version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
|
|
}
|
|
|
|
// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
|
|
// so check `userAgent` even if `.v8` exists, but 0
|
|
if (!version && userAgent) {
|
|
match = userAgent.match(/Edge\/(\d+)/);
|
|
if (!match || match[1] >= 74) {
|
|
match = userAgent.match(/Chrome\/(\d+)/);
|
|
if (match) version = +match[1];
|
|
}
|
|
}
|
|
|
|
module.exports = version;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/enum-bug-keys.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/enum-bug-keys.js ***!
|
|
\*********************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
// IE8- don't enum bug keys
|
|
module.exports = [
|
|
'constructor',
|
|
'hasOwnProperty',
|
|
'isPrototypeOf',
|
|
'propertyIsEnumerable',
|
|
'toLocaleString',
|
|
'toString',
|
|
'valueOf'
|
|
];
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/export.js":
|
|
/*!**************************************************!*\
|
|
!*** ./node_modules/core-js/internals/export.js ***!
|
|
\**************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f);
|
|
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
|
|
var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js");
|
|
var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
|
|
var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js");
|
|
var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js");
|
|
|
|
/*
|
|
options.target - name of the target object
|
|
options.global - target is the global object
|
|
options.stat - export as static methods of target
|
|
options.proto - export as prototype methods of target
|
|
options.real - real prototype method for the `pure` version
|
|
options.forced - export even if the native feature is available
|
|
options.bind - bind methods to the target, required for the `pure` version
|
|
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
|
|
options.unsafe - use the simple assignment of property instead of delete + defineProperty
|
|
options.sham - add a flag to not completely full polyfills
|
|
options.enumerable - export as enumerable property
|
|
options.dontCallGetSet - prevent calling a getter on target
|
|
options.name - the .name of the function if it does not match the key
|
|
*/
|
|
module.exports = function (options, source) {
|
|
var TARGET = options.target;
|
|
var GLOBAL = options.global;
|
|
var STATIC = options.stat;
|
|
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
|
|
if (GLOBAL) {
|
|
target = global;
|
|
} else if (STATIC) {
|
|
target = global[TARGET] || defineGlobalProperty(TARGET, {});
|
|
} else {
|
|
target = global[TARGET] && global[TARGET].prototype;
|
|
}
|
|
if (target) for (key in source) {
|
|
sourceProperty = source[key];
|
|
if (options.dontCallGetSet) {
|
|
descriptor = getOwnPropertyDescriptor(target, key);
|
|
targetProperty = descriptor && descriptor.value;
|
|
} else targetProperty = target[key];
|
|
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
|
|
// contained in target
|
|
if (!FORCED && targetProperty !== undefined) {
|
|
if (typeof sourceProperty == typeof targetProperty) continue;
|
|
copyConstructorProperties(sourceProperty, targetProperty);
|
|
}
|
|
// add a flag to not completely full polyfills
|
|
if (options.sham || (targetProperty && targetProperty.sham)) {
|
|
createNonEnumerableProperty(sourceProperty, 'sham', true);
|
|
}
|
|
defineBuiltIn(target, key, sourceProperty, options);
|
|
}
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/fails.js":
|
|
/*!*************************************************!*\
|
|
!*** ./node_modules/core-js/internals/fails.js ***!
|
|
\*************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
module.exports = function (exec) {
|
|
try {
|
|
return !!exec();
|
|
} catch (error) {
|
|
return true;
|
|
}
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js":
|
|
/*!******************************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***!
|
|
\******************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
// TODO: Remove from `core-js@4` since it's moved to entry points
|
|
__webpack_require__(/*! ../modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js");
|
|
var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
|
|
var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js");
|
|
var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
|
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
|
|
|
|
var SPECIES = wellKnownSymbol('species');
|
|
var RegExpPrototype = RegExp.prototype;
|
|
|
|
module.exports = function (KEY, exec, FORCED, SHAM) {
|
|
var SYMBOL = wellKnownSymbol(KEY);
|
|
|
|
var DELEGATES_TO_SYMBOL = !fails(function () {
|
|
// String methods call symbol-named RegExp methods
|
|
var O = {};
|
|
O[SYMBOL] = function () { return 7; };
|
|
return ''[KEY](O) !== 7;
|
|
});
|
|
|
|
var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
|
|
// Symbol-named RegExp methods call .exec
|
|
var execCalled = false;
|
|
var re = /a/;
|
|
|
|
if (KEY === 'split') {
|
|
// We can't use real regex here since it causes deoptimization
|
|
// and serious performance degradation in V8
|
|
// https://github.com/zloirock/core-js/issues/306
|
|
re = {};
|
|
// RegExp[@@split] doesn't call the regex's exec method, but first creates
|
|
// a new one. We need to return the patched regex when creating the new one.
|
|
re.constructor = {};
|
|
re.constructor[SPECIES] = function () { return re; };
|
|
re.flags = '';
|
|
re[SYMBOL] = /./[SYMBOL];
|
|
}
|
|
|
|
re.exec = function () {
|
|
execCalled = true;
|
|
return null;
|
|
};
|
|
|
|
re[SYMBOL]('');
|
|
return !execCalled;
|
|
});
|
|
|
|
if (
|
|
!DELEGATES_TO_SYMBOL ||
|
|
!DELEGATES_TO_EXEC ||
|
|
FORCED
|
|
) {
|
|
var nativeRegExpMethod = /./[SYMBOL];
|
|
var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
|
|
var $exec = regexp.exec;
|
|
if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
|
|
if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
|
|
// The native String method already delegates to @@method (this
|
|
// polyfilled function), leasing to infinite recursion.
|
|
// We avoid it by directly calling the native @@method method.
|
|
return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };
|
|
}
|
|
return { done: true, value: call(nativeMethod, str, regexp, arg2) };
|
|
}
|
|
return { done: false };
|
|
});
|
|
|
|
defineBuiltIn(String.prototype, KEY, methods[0]);
|
|
defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);
|
|
}
|
|
|
|
if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/function-apply.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/function-apply.js ***!
|
|
\**********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
|
|
|
|
var FunctionPrototype = Function.prototype;
|
|
var apply = FunctionPrototype.apply;
|
|
var call = FunctionPrototype.call;
|
|
|
|
// eslint-disable-next-line es/no-reflect -- safe
|
|
module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {
|
|
return call.apply(apply, arguments);
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/function-bind-native.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/function-bind-native.js ***!
|
|
\****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
|
|
module.exports = !fails(function () {
|
|
// eslint-disable-next-line es/no-function-prototype-bind -- safe
|
|
var test = (function () { /* empty */ }).bind();
|
|
// eslint-disable-next-line no-prototype-builtins -- safe
|
|
return typeof test != 'function' || test.hasOwnProperty('prototype');
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/function-call.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/function-call.js ***!
|
|
\*********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
|
|
|
|
var call = Function.prototype.call;
|
|
|
|
module.exports = NATIVE_BIND ? call.bind(call) : function () {
|
|
return call.apply(call, arguments);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/function-name.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/function-name.js ***!
|
|
\*********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
|
var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
|
|
|
|
var FunctionPrototype = Function.prototype;
|
|
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
|
|
|
|
var EXISTS = hasOwn(FunctionPrototype, 'name');
|
|
// additional protection from minified / mangled / dropped function names
|
|
var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
|
|
var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
|
|
|
|
module.exports = {
|
|
EXISTS: EXISTS,
|
|
PROPER: PROPER,
|
|
CONFIGURABLE: CONFIGURABLE
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/function-uncurry-this.js":
|
|
/*!*****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/function-uncurry-this.js ***!
|
|
\*****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
|
|
|
|
var FunctionPrototype = Function.prototype;
|
|
var call = FunctionPrototype.call;
|
|
var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);
|
|
|
|
module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {
|
|
return function () {
|
|
return call.apply(fn, arguments);
|
|
};
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/get-built-in.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/get-built-in.js ***!
|
|
\********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
|
|
var aFunction = function (argument) {
|
|
return isCallable(argument) ? argument : undefined;
|
|
};
|
|
|
|
module.exports = function (namespace, method) {
|
|
return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/get-method.js":
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/get-method.js ***!
|
|
\******************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js");
|
|
var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
|
|
|
|
// `GetMethod` abstract operation
|
|
// https://tc39.es/ecma262/#sec-getmethod
|
|
module.exports = function (V, P) {
|
|
var func = V[P];
|
|
return isNullOrUndefined(func) ? undefined : aCallable(func);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/get-substitution.js":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/get-substitution.js ***!
|
|
\************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
|
|
|
|
var floor = Math.floor;
|
|
var charAt = uncurryThis(''.charAt);
|
|
var replace = uncurryThis(''.replace);
|
|
var stringSlice = uncurryThis(''.slice);
|
|
// eslint-disable-next-line redos/no-vulnerable -- safe
|
|
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
|
|
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
|
|
|
|
// `GetSubstitution` abstract operation
|
|
// https://tc39.es/ecma262/#sec-getsubstitution
|
|
module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
|
|
var tailPos = position + matched.length;
|
|
var m = captures.length;
|
|
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
|
|
if (namedCaptures !== undefined) {
|
|
namedCaptures = toObject(namedCaptures);
|
|
symbols = SUBSTITUTION_SYMBOLS;
|
|
}
|
|
return replace(replacement, symbols, function (match, ch) {
|
|
var capture;
|
|
switch (charAt(ch, 0)) {
|
|
case '$': return '$';
|
|
case '&': return matched;
|
|
case '`': return stringSlice(str, 0, position);
|
|
case "'": return stringSlice(str, tailPos);
|
|
case '<':
|
|
capture = namedCaptures[stringSlice(ch, 1, -1)];
|
|
break;
|
|
default: // \d\d?
|
|
var n = +ch;
|
|
if (n === 0) return match;
|
|
if (n > m) {
|
|
var f = floor(n / 10);
|
|
if (f === 0) return match;
|
|
if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);
|
|
return match;
|
|
}
|
|
capture = captures[n - 1];
|
|
}
|
|
return capture === undefined ? '' : capture;
|
|
});
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/global.js":
|
|
/*!**************************************************!*\
|
|
!*** ./node_modules/core-js/internals/global.js ***!
|
|
\**************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
var check = function (it) {
|
|
return it && it.Math === Math && it;
|
|
};
|
|
|
|
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
|
|
module.exports =
|
|
// eslint-disable-next-line es/no-global-this -- safe
|
|
check(typeof globalThis == 'object' && globalThis) ||
|
|
check(typeof window == 'object' && window) ||
|
|
// eslint-disable-next-line no-restricted-globals -- safe
|
|
check(typeof self == 'object' && self) ||
|
|
check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||
|
|
check(typeof this == 'object' && this) ||
|
|
// eslint-disable-next-line no-new-func -- fallback
|
|
(function () { return this; })() || Function('return this')();
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/has-own-property.js":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/has-own-property.js ***!
|
|
\************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
|
|
|
|
var hasOwnProperty = uncurryThis({}.hasOwnProperty);
|
|
|
|
// `HasOwnProperty` abstract operation
|
|
// https://tc39.es/ecma262/#sec-hasownproperty
|
|
// eslint-disable-next-line es/no-object-hasown -- safe
|
|
module.exports = Object.hasOwn || function hasOwn(it, key) {
|
|
return hasOwnProperty(toObject(it), key);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/hidden-keys.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/hidden-keys.js ***!
|
|
\*******************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
module.exports = {};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/html.js":
|
|
/*!************************************************!*\
|
|
!*** ./node_modules/core-js/internals/html.js ***!
|
|
\************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
|
|
|
|
module.exports = getBuiltIn('document', 'documentElement');
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/ie8-dom-define.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
|
|
\**********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
|
|
|
|
// Thanks to IE8 for its funny defineProperty
|
|
module.exports = !DESCRIPTORS && !fails(function () {
|
|
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
return Object.defineProperty(createElement('div'), 'a', {
|
|
get: function () { return 7; }
|
|
}).a !== 7;
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/indexed-object.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/indexed-object.js ***!
|
|
\**********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
|
|
|
|
var $Object = Object;
|
|
var split = uncurryThis(''.split);
|
|
|
|
// fallback for non-array-like ES3 and non-enumerable old V8 strings
|
|
module.exports = fails(function () {
|
|
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
|
|
// eslint-disable-next-line no-prototype-builtins -- safe
|
|
return !$Object('z').propertyIsEnumerable(0);
|
|
}) ? function (it) {
|
|
return classof(it) === 'String' ? split(it, '') : $Object(it);
|
|
} : $Object;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/inspect-source.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/inspect-source.js ***!
|
|
\**********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
|
|
|
|
var functionToString = uncurryThis(Function.toString);
|
|
|
|
// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
|
|
if (!isCallable(store.inspectSource)) {
|
|
store.inspectSource = function (it) {
|
|
return functionToString(it);
|
|
};
|
|
}
|
|
|
|
module.exports = store.inspectSource;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/internal-state.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/internal-state.js ***!
|
|
\**********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ "./node_modules/core-js/internals/weak-map-basic-detection.js");
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
|
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
|
|
var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
|
|
var shared = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
|
|
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
|
|
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
|
|
|
|
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
|
|
var TypeError = global.TypeError;
|
|
var WeakMap = global.WeakMap;
|
|
var set, get, has;
|
|
|
|
var enforce = function (it) {
|
|
return has(it) ? get(it) : set(it, {});
|
|
};
|
|
|
|
var getterFor = function (TYPE) {
|
|
return function (it) {
|
|
var state;
|
|
if (!isObject(it) || (state = get(it)).type !== TYPE) {
|
|
throw new TypeError('Incompatible receiver, ' + TYPE + ' required');
|
|
} return state;
|
|
};
|
|
};
|
|
|
|
if (NATIVE_WEAK_MAP || shared.state) {
|
|
var store = shared.state || (shared.state = new WeakMap());
|
|
/* eslint-disable no-self-assign -- prototype methods protection */
|
|
store.get = store.get;
|
|
store.has = store.has;
|
|
store.set = store.set;
|
|
/* eslint-enable no-self-assign -- prototype methods protection */
|
|
set = function (it, metadata) {
|
|
if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
|
|
metadata.facade = it;
|
|
store.set(it, metadata);
|
|
return metadata;
|
|
};
|
|
get = function (it) {
|
|
return store.get(it) || {};
|
|
};
|
|
has = function (it) {
|
|
return store.has(it);
|
|
};
|
|
} else {
|
|
var STATE = sharedKey('state');
|
|
hiddenKeys[STATE] = true;
|
|
set = function (it, metadata) {
|
|
if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
|
|
metadata.facade = it;
|
|
createNonEnumerableProperty(it, STATE, metadata);
|
|
return metadata;
|
|
};
|
|
get = function (it) {
|
|
return hasOwn(it, STATE) ? it[STATE] : {};
|
|
};
|
|
has = function (it) {
|
|
return hasOwn(it, STATE);
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
set: set,
|
|
get: get,
|
|
has: has,
|
|
enforce: enforce,
|
|
getterFor: getterFor
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/is-callable.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/is-callable.js ***!
|
|
\*******************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
|
|
var documentAll = typeof document == 'object' && document.all;
|
|
|
|
// `IsCallable` abstract operation
|
|
// https://tc39.es/ecma262/#sec-iscallable
|
|
// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing
|
|
module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {
|
|
return typeof argument == 'function' || argument === documentAll;
|
|
} : function (argument) {
|
|
return typeof argument == 'function';
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/is-forced.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/core-js/internals/is-forced.js ***!
|
|
\*****************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
|
|
var replacement = /#|\.prototype\./;
|
|
|
|
var isForced = function (feature, detection) {
|
|
var value = data[normalize(feature)];
|
|
return value === POLYFILL ? true
|
|
: value === NATIVE ? false
|
|
: isCallable(detection) ? fails(detection)
|
|
: !!detection;
|
|
};
|
|
|
|
var normalize = isForced.normalize = function (string) {
|
|
return String(string).replace(replacement, '.').toLowerCase();
|
|
};
|
|
|
|
var data = isForced.data = {};
|
|
var NATIVE = isForced.NATIVE = 'N';
|
|
var POLYFILL = isForced.POLYFILL = 'P';
|
|
|
|
module.exports = isForced;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/is-null-or-undefined.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/is-null-or-undefined.js ***!
|
|
\****************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
// we can't use just `it == null` since of `document.all` special case
|
|
// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec
|
|
module.exports = function (it) {
|
|
return it === null || it === undefined;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/is-object.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/core-js/internals/is-object.js ***!
|
|
\*****************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
|
|
module.exports = function (it) {
|
|
return typeof it == 'object' ? it !== null : isCallable(it);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/is-pure.js":
|
|
/*!***************************************************!*\
|
|
!*** ./node_modules/core-js/internals/is-pure.js ***!
|
|
\***************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
module.exports = false;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/is-symbol.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/core-js/internals/is-symbol.js ***!
|
|
\*****************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js");
|
|
var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js");
|
|
|
|
var $Object = Object;
|
|
|
|
module.exports = USE_SYMBOL_AS_UID ? function (it) {
|
|
return typeof it == 'symbol';
|
|
} : function (it) {
|
|
var $Symbol = getBuiltIn('Symbol');
|
|
return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/length-of-array-like.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/length-of-array-like.js ***!
|
|
\****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
|
|
|
|
// `LengthOfArrayLike` abstract operation
|
|
// https://tc39.es/ecma262/#sec-lengthofarraylike
|
|
module.exports = function (obj) {
|
|
return toLength(obj.length);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/make-built-in.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/make-built-in.js ***!
|
|
\*********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
|
|
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
|
var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").CONFIGURABLE);
|
|
var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js");
|
|
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
|
|
|
|
var enforceInternalState = InternalStateModule.enforce;
|
|
var getInternalState = InternalStateModule.get;
|
|
var $String = String;
|
|
// eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
var defineProperty = Object.defineProperty;
|
|
var stringSlice = uncurryThis(''.slice);
|
|
var replace = uncurryThis(''.replace);
|
|
var join = uncurryThis([].join);
|
|
|
|
var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {
|
|
return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;
|
|
});
|
|
|
|
var TEMPLATE = String(String).split('String');
|
|
|
|
var makeBuiltIn = module.exports = function (value, name, options) {
|
|
if (stringSlice($String(name), 0, 7) === 'Symbol(') {
|
|
name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']';
|
|
}
|
|
if (options && options.getter) name = 'get ' + name;
|
|
if (options && options.setter) name = 'set ' + name;
|
|
if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
|
|
if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });
|
|
else value.name = name;
|
|
}
|
|
if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {
|
|
defineProperty(value, 'length', { value: options.arity });
|
|
}
|
|
try {
|
|
if (options && hasOwn(options, 'constructor') && options.constructor) {
|
|
if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });
|
|
// in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable
|
|
} else if (value.prototype) value.prototype = undefined;
|
|
} catch (error) { /* empty */ }
|
|
var state = enforceInternalState(value);
|
|
if (!hasOwn(state, 'source')) {
|
|
state.source = join(TEMPLATE, typeof name == 'string' ? name : '');
|
|
} return value;
|
|
};
|
|
|
|
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
|
|
// eslint-disable-next-line no-extend-native -- required
|
|
Function.prototype.toString = makeBuiltIn(function toString() {
|
|
return isCallable(this) && getInternalState(this).source || inspectSource(this);
|
|
}, 'toString');
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/math-trunc.js":
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/math-trunc.js ***!
|
|
\******************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
var ceil = Math.ceil;
|
|
var floor = Math.floor;
|
|
|
|
// `Math.trunc` method
|
|
// https://tc39.es/ecma262/#sec-math.trunc
|
|
// eslint-disable-next-line es/no-math-trunc -- safe
|
|
module.exports = Math.trunc || function trunc(x) {
|
|
var n = +x;
|
|
return (n > 0 ? floor : ceil)(n);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-create.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-create.js ***!
|
|
\*********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
/* global ActiveXObject -- old IE, WSH */
|
|
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
|
var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
|
|
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
|
|
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
|
|
var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
|
|
var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
|
|
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
|
|
|
|
var GT = '>';
|
|
var LT = '<';
|
|
var PROTOTYPE = 'prototype';
|
|
var SCRIPT = 'script';
|
|
var IE_PROTO = sharedKey('IE_PROTO');
|
|
|
|
var EmptyConstructor = function () { /* empty */ };
|
|
|
|
var scriptTag = function (content) {
|
|
return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
|
|
};
|
|
|
|
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
|
|
var NullProtoObjectViaActiveX = function (activeXDocument) {
|
|
activeXDocument.write(scriptTag(''));
|
|
activeXDocument.close();
|
|
var temp = activeXDocument.parentWindow.Object;
|
|
activeXDocument = null; // avoid memory leak
|
|
return temp;
|
|
};
|
|
|
|
// Create object with fake `null` prototype: use iframe Object with cleared prototype
|
|
var NullProtoObjectViaIFrame = function () {
|
|
// Thrash, waste and sodomy: IE GC bug
|
|
var iframe = documentCreateElement('iframe');
|
|
var JS = 'java' + SCRIPT + ':';
|
|
var iframeDocument;
|
|
iframe.style.display = 'none';
|
|
html.appendChild(iframe);
|
|
// https://github.com/zloirock/core-js/issues/475
|
|
iframe.src = String(JS);
|
|
iframeDocument = iframe.contentWindow.document;
|
|
iframeDocument.open();
|
|
iframeDocument.write(scriptTag('document.F=Object'));
|
|
iframeDocument.close();
|
|
return iframeDocument.F;
|
|
};
|
|
|
|
// Check for document.domain and active x support
|
|
// No need to use active x approach when document.domain is not set
|
|
// see https://github.com/es-shims/es5-shim/issues/150
|
|
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
|
|
// avoid IE GC bug
|
|
var activeXDocument;
|
|
var NullProtoObject = function () {
|
|
try {
|
|
activeXDocument = new ActiveXObject('htmlfile');
|
|
} catch (error) { /* ignore */ }
|
|
NullProtoObject = typeof document != 'undefined'
|
|
? document.domain && activeXDocument
|
|
? NullProtoObjectViaActiveX(activeXDocument) // old IE
|
|
: NullProtoObjectViaIFrame()
|
|
: NullProtoObjectViaActiveX(activeXDocument); // WSH
|
|
var length = enumBugKeys.length;
|
|
while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
|
|
return NullProtoObject();
|
|
};
|
|
|
|
hiddenKeys[IE_PROTO] = true;
|
|
|
|
// `Object.create` method
|
|
// https://tc39.es/ecma262/#sec-object.create
|
|
// eslint-disable-next-line es/no-object-create -- safe
|
|
module.exports = Object.create || function create(O, Properties) {
|
|
var result;
|
|
if (O !== null) {
|
|
EmptyConstructor[PROTOTYPE] = anObject(O);
|
|
result = new EmptyConstructor();
|
|
EmptyConstructor[PROTOTYPE] = null;
|
|
// add "__proto__" for Object.getPrototypeOf polyfill
|
|
result[IE_PROTO] = O;
|
|
} else result = NullProtoObject();
|
|
return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-define-properties.js":
|
|
/*!********************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-define-properties.js ***!
|
|
\********************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
|
var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js");
|
|
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
|
|
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
|
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
|
|
var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");
|
|
|
|
// `Object.defineProperties` method
|
|
// https://tc39.es/ecma262/#sec-object.defineproperties
|
|
// eslint-disable-next-line es/no-object-defineproperties -- safe
|
|
exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
|
|
anObject(O);
|
|
var props = toIndexedObject(Properties);
|
|
var keys = objectKeys(Properties);
|
|
var length = keys.length;
|
|
var index = 0;
|
|
var key;
|
|
while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
|
|
return O;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-define-property.js":
|
|
/*!******************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-define-property.js ***!
|
|
\******************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
|
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
|
|
var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js");
|
|
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
|
var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js");
|
|
|
|
var $TypeError = TypeError;
|
|
// eslint-disable-next-line es/no-object-defineproperty -- safe
|
|
var $defineProperty = Object.defineProperty;
|
|
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
|
var ENUMERABLE = 'enumerable';
|
|
var CONFIGURABLE = 'configurable';
|
|
var WRITABLE = 'writable';
|
|
|
|
// `Object.defineProperty` method
|
|
// https://tc39.es/ecma262/#sec-object.defineproperty
|
|
exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
|
|
anObject(O);
|
|
P = toPropertyKey(P);
|
|
anObject(Attributes);
|
|
if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
|
|
var current = $getOwnPropertyDescriptor(O, P);
|
|
if (current && current[WRITABLE]) {
|
|
O[P] = Attributes.value;
|
|
Attributes = {
|
|
configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
|
|
enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
|
|
writable: false
|
|
};
|
|
}
|
|
} return $defineProperty(O, P, Attributes);
|
|
} : $defineProperty : function defineProperty(O, P, Attributes) {
|
|
anObject(O);
|
|
P = toPropertyKey(P);
|
|
anObject(Attributes);
|
|
if (IE8_DOM_DEFINE) try {
|
|
return $defineProperty(O, P, Attributes);
|
|
} catch (error) { /* empty */ }
|
|
if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');
|
|
if ('value' in Attributes) O[P] = Attributes.value;
|
|
return O;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js":
|
|
/*!******************************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!
|
|
\******************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
|
var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
|
|
var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js");
|
|
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
|
|
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
|
|
var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js");
|
|
var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
|
|
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
|
|
|
|
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
|
|
|
// `Object.getOwnPropertyDescriptor` method
|
|
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
|
|
exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
|
|
O = toIndexedObject(O);
|
|
P = toPropertyKey(P);
|
|
if (IE8_DOM_DEFINE) try {
|
|
return $getOwnPropertyDescriptor(O, P);
|
|
} catch (error) { /* empty */ }
|
|
if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-get-own-property-names.js":
|
|
/*!*************************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!
|
|
\*************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
|
|
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
|
|
|
|
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
|
|
|
|
// `Object.getOwnPropertyNames` method
|
|
// https://tc39.es/ecma262/#sec-object.getownpropertynames
|
|
// eslint-disable-next-line es/no-object-getownpropertynames -- safe
|
|
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
|
|
return internalObjectKeys(O, hiddenKeys);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js":
|
|
/*!***************************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!
|
|
\***************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
"use strict";
|
|
|
|
// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
|
|
exports.f = Object.getOwnPropertySymbols;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-is-prototype-of.js":
|
|
/*!******************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-is-prototype-of.js ***!
|
|
\******************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
|
|
module.exports = uncurryThis({}.isPrototypeOf);
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-keys-internal.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-keys-internal.js ***!
|
|
\****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
|
|
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
|
|
var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf);
|
|
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
|
|
|
|
var push = uncurryThis([].push);
|
|
|
|
module.exports = function (object, names) {
|
|
var O = toIndexedObject(object);
|
|
var i = 0;
|
|
var result = [];
|
|
var key;
|
|
for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
|
|
// Don't enum bug & hidden keys
|
|
while (names.length > i) if (hasOwn(O, key = names[i++])) {
|
|
~indexOf(result, key) || push(result, key);
|
|
}
|
|
return result;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-keys.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-keys.js ***!
|
|
\*******************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
|
|
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
|
|
|
|
// `Object.keys` method
|
|
// https://tc39.es/ecma262/#sec-object.keys
|
|
// eslint-disable-next-line es/no-object-keys -- safe
|
|
module.exports = Object.keys || function keys(O) {
|
|
return internalObjectKeys(O, enumBugKeys);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js":
|
|
/*!*************************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!
|
|
\*************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
"use strict";
|
|
|
|
var $propertyIsEnumerable = {}.propertyIsEnumerable;
|
|
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
|
|
|
// Nashorn ~ JDK8 bug
|
|
var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
|
|
|
|
// `Object.prototype.propertyIsEnumerable` method implementation
|
|
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
|
|
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
|
|
var descriptor = getOwnPropertyDescriptor(this, V);
|
|
return !!descriptor && descriptor.enumerable;
|
|
} : $propertyIsEnumerable;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/ordinary-to-primitive.js":
|
|
/*!*****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/ordinary-to-primitive.js ***!
|
|
\*****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
|
|
|
var $TypeError = TypeError;
|
|
|
|
// `OrdinaryToPrimitive` abstract operation
|
|
// https://tc39.es/ecma262/#sec-ordinarytoprimitive
|
|
module.exports = function (input, pref) {
|
|
var fn, val;
|
|
if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
|
|
if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
|
|
if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
|
|
throw new $TypeError("Can't convert object to primitive value");
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/own-keys.js":
|
|
/*!****************************************************!*\
|
|
!*** ./node_modules/core-js/internals/own-keys.js ***!
|
|
\****************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js");
|
|
var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js");
|
|
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
|
|
|
var concat = uncurryThis([].concat);
|
|
|
|
// all object keys, includes non-enumerable and symbols
|
|
module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
|
|
var keys = getOwnPropertyNamesModule.f(anObject(it));
|
|
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
|
|
return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/regexp-exec-abstract.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/regexp-exec-abstract.js ***!
|
|
\****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
|
|
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
|
|
var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
|
|
|
|
var $TypeError = TypeError;
|
|
|
|
// `RegExpExec` abstract operation
|
|
// https://tc39.es/ecma262/#sec-regexpexec
|
|
module.exports = function (R, S) {
|
|
var exec = R.exec;
|
|
if (isCallable(exec)) {
|
|
var result = call(exec, R, S);
|
|
if (result !== null) anObject(result);
|
|
return result;
|
|
}
|
|
if (classof(R) === 'RegExp') return call(regexpExec, R, S);
|
|
throw new $TypeError('RegExp#exec called on incompatible receiver');
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/regexp-exec.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/regexp-exec.js ***!
|
|
\*******************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
|
|
/* eslint-disable regexp/no-useless-quantifier -- testing */
|
|
var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
|
|
var regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js");
|
|
var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js");
|
|
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
|
|
var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
|
|
var getInternalState = (__webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").get);
|
|
var UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js");
|
|
var UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ "./node_modules/core-js/internals/regexp-unsupported-ncg.js");
|
|
|
|
var nativeReplace = shared('native-string-replace', String.prototype.replace);
|
|
var nativeExec = RegExp.prototype.exec;
|
|
var patchedExec = nativeExec;
|
|
var charAt = uncurryThis(''.charAt);
|
|
var indexOf = uncurryThis(''.indexOf);
|
|
var replace = uncurryThis(''.replace);
|
|
var stringSlice = uncurryThis(''.slice);
|
|
|
|
var UPDATES_LAST_INDEX_WRONG = (function () {
|
|
var re1 = /a/;
|
|
var re2 = /b*/g;
|
|
call(nativeExec, re1, 'a');
|
|
call(nativeExec, re2, 'a');
|
|
return re1.lastIndex !== 0 || re2.lastIndex !== 0;
|
|
})();
|
|
|
|
var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;
|
|
|
|
// nonparticipating capturing group, copied from es5-shim's String#split patch.
|
|
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
|
|
|
|
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
|
|
|
|
if (PATCH) {
|
|
patchedExec = function exec(string) {
|
|
var re = this;
|
|
var state = getInternalState(re);
|
|
var str = toString(string);
|
|
var raw = state.raw;
|
|
var result, reCopy, lastIndex, match, i, object, group;
|
|
|
|
if (raw) {
|
|
raw.lastIndex = re.lastIndex;
|
|
result = call(patchedExec, raw, str);
|
|
re.lastIndex = raw.lastIndex;
|
|
return result;
|
|
}
|
|
|
|
var groups = state.groups;
|
|
var sticky = UNSUPPORTED_Y && re.sticky;
|
|
var flags = call(regexpFlags, re);
|
|
var source = re.source;
|
|
var charsAdded = 0;
|
|
var strCopy = str;
|
|
|
|
if (sticky) {
|
|
flags = replace(flags, 'y', '');
|
|
if (indexOf(flags, 'g') === -1) {
|
|
flags += 'g';
|
|
}
|
|
|
|
strCopy = stringSlice(str, re.lastIndex);
|
|
// Support anchored sticky behavior.
|
|
if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) {
|
|
source = '(?: ' + source + ')';
|
|
strCopy = ' ' + strCopy;
|
|
charsAdded++;
|
|
}
|
|
// ^(? + rx + ) is needed, in combination with some str slicing, to
|
|
// simulate the 'y' flag.
|
|
reCopy = new RegExp('^(?:' + source + ')', flags);
|
|
}
|
|
|
|
if (NPCG_INCLUDED) {
|
|
reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
|
|
}
|
|
if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
|
|
|
|
match = call(nativeExec, sticky ? reCopy : re, strCopy);
|
|
|
|
if (sticky) {
|
|
if (match) {
|
|
match.input = stringSlice(match.input, charsAdded);
|
|
match[0] = stringSlice(match[0], charsAdded);
|
|
match.index = re.lastIndex;
|
|
re.lastIndex += match[0].length;
|
|
} else re.lastIndex = 0;
|
|
} else if (UPDATES_LAST_INDEX_WRONG && match) {
|
|
re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
|
|
}
|
|
if (NPCG_INCLUDED && match && match.length > 1) {
|
|
// Fix browsers whose `exec` methods don't consistently return `undefined`
|
|
// for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/
|
|
call(nativeReplace, match[0], reCopy, function () {
|
|
for (i = 1; i < arguments.length - 2; i++) {
|
|
if (arguments[i] === undefined) match[i] = undefined;
|
|
}
|
|
});
|
|
}
|
|
|
|
if (match && groups) {
|
|
match.groups = object = create(null);
|
|
for (i = 0; i < groups.length; i++) {
|
|
group = groups[i];
|
|
object[group[0]] = match[group[1]];
|
|
}
|
|
}
|
|
|
|
return match;
|
|
};
|
|
}
|
|
|
|
module.exports = patchedExec;
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/regexp-flags.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/regexp-flags.js ***!
|
|
\********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
|
|
|
// `RegExp.prototype.flags` getter implementation
|
|
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
|
|
module.exports = function () {
|
|
var that = anObject(this);
|
|
var result = '';
|
|
if (that.hasIndices) result += 'd';
|
|
if (that.global) result += 'g';
|
|
if (that.ignoreCase) result += 'i';
|
|
if (that.multiline) result += 'm';
|
|
if (that.dotAll) result += 's';
|
|
if (that.unicode) result += 'u';
|
|
if (that.unicodeSets) result += 'v';
|
|
if (that.sticky) result += 'y';
|
|
return result;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/regexp-sticky-helpers.js":
|
|
/*!*****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/regexp-sticky-helpers.js ***!
|
|
\*****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
|
|
// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
|
|
var $RegExp = global.RegExp;
|
|
|
|
var UNSUPPORTED_Y = fails(function () {
|
|
var re = $RegExp('a', 'y');
|
|
re.lastIndex = 2;
|
|
return re.exec('abcd') !== null;
|
|
});
|
|
|
|
// UC Browser bug
|
|
// https://github.com/zloirock/core-js/issues/1008
|
|
var MISSED_STICKY = UNSUPPORTED_Y || fails(function () {
|
|
return !$RegExp('a', 'y').sticky;
|
|
});
|
|
|
|
var BROKEN_CARET = UNSUPPORTED_Y || fails(function () {
|
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=773687
|
|
var re = $RegExp('^r', 'gy');
|
|
re.lastIndex = 2;
|
|
return re.exec('str') !== null;
|
|
});
|
|
|
|
module.exports = {
|
|
BROKEN_CARET: BROKEN_CARET,
|
|
MISSED_STICKY: MISSED_STICKY,
|
|
UNSUPPORTED_Y: UNSUPPORTED_Y
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js":
|
|
/*!**********************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/regexp-unsupported-dot-all.js ***!
|
|
\**********************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
|
|
// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
|
|
var $RegExp = global.RegExp;
|
|
|
|
module.exports = fails(function () {
|
|
var re = $RegExp('.', 's');
|
|
return !(re.dotAll && re.test('\n') && re.flags === 's');
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/regexp-unsupported-ncg.js":
|
|
/*!******************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/regexp-unsupported-ncg.js ***!
|
|
\******************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
|
|
// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
|
|
var $RegExp = global.RegExp;
|
|
|
|
module.exports = fails(function () {
|
|
var re = $RegExp('(?<a>b)', 'g');
|
|
return re.exec('b').groups.a !== 'b' ||
|
|
'b'.replace(re, '$<a>c') !== 'bc';
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/require-object-coercible.js":
|
|
/*!********************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/require-object-coercible.js ***!
|
|
\********************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
|
|
|
|
var $TypeError = TypeError;
|
|
|
|
// `RequireObjectCoercible` abstract operation
|
|
// https://tc39.es/ecma262/#sec-requireobjectcoercible
|
|
module.exports = function (it) {
|
|
if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it);
|
|
return it;
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/shared-key.js":
|
|
/*!******************************************************!*\
|
|
!*** ./node_modules/core-js/internals/shared-key.js ***!
|
|
\******************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
|
|
var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
|
|
|
|
var keys = shared('keys');
|
|
|
|
module.exports = function (key) {
|
|
return keys[key] || (keys[key] = uid(key));
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/shared-store.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/shared-store.js ***!
|
|
\********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
|
|
var globalThis = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
|
|
|
|
var SHARED = '__core-js_shared__';
|
|
var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});
|
|
|
|
(store.versions || (store.versions = [])).push({
|
|
version: '3.36.1',
|
|
mode: IS_PURE ? 'pure' : 'global',
|
|
copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',
|
|
license: 'https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE',
|
|
source: 'https://github.com/zloirock/core-js'
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/shared.js":
|
|
/*!**************************************************!*\
|
|
!*** ./node_modules/core-js/internals/shared.js ***!
|
|
\**************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
|
|
|
|
module.exports = function (key, value) {
|
|
return store[key] || (store[key] = value || {});
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/string-multibyte.js":
|
|
/*!************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/string-multibyte.js ***!
|
|
\************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
|
|
var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
|
|
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
|
|
|
|
var charAt = uncurryThis(''.charAt);
|
|
var charCodeAt = uncurryThis(''.charCodeAt);
|
|
var stringSlice = uncurryThis(''.slice);
|
|
|
|
var createMethod = function (CONVERT_TO_STRING) {
|
|
return function ($this, pos) {
|
|
var S = toString(requireObjectCoercible($this));
|
|
var position = toIntegerOrInfinity(pos);
|
|
var size = S.length;
|
|
var first, second;
|
|
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
|
|
first = charCodeAt(S, position);
|
|
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|
|
|| (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF
|
|
? CONVERT_TO_STRING
|
|
? charAt(S, position)
|
|
: first
|
|
: CONVERT_TO_STRING
|
|
? stringSlice(S, position, position + 2)
|
|
: (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
|
|
};
|
|
};
|
|
|
|
module.exports = {
|
|
// `String.prototype.codePointAt` method
|
|
// https://tc39.es/ecma262/#sec-string.prototype.codepointat
|
|
codeAt: createMethod(false),
|
|
// `String.prototype.at` method
|
|
// https://github.com/mathiasbynens/String.prototype.at
|
|
charAt: createMethod(true)
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/symbol-constructor-detection.js":
|
|
/*!************************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/symbol-constructor-detection.js ***!
|
|
\************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
/* eslint-disable es/no-symbol -- required for testing */
|
|
var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js/internals/engine-v8-version.js");
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
|
|
var $String = global.String;
|
|
|
|
// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
|
|
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
|
|
var symbol = Symbol('symbol detection');
|
|
// Chrome 38 Symbol has incorrect toString conversion
|
|
// `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
|
|
// nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
|
|
// of course, fail.
|
|
return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||
|
|
// Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
|
|
!Symbol.sham && V8_VERSION && V8_VERSION < 41;
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-absolute-index.js":
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-absolute-index.js ***!
|
|
\*************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
|
|
|
|
var max = Math.max;
|
|
var min = Math.min;
|
|
|
|
// Helper for a popular repeating case of the spec:
|
|
// Let integer be ? ToInteger(index).
|
|
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
|
|
module.exports = function (index, length) {
|
|
var integer = toIntegerOrInfinity(index);
|
|
return integer < 0 ? max(integer + length, 0) : min(integer, length);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-indexed-object.js":
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-indexed-object.js ***!
|
|
\*************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
// toObject with fallback for non-array-like ES3 strings
|
|
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
|
|
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
|
|
|
|
module.exports = function (it) {
|
|
return IndexedObject(requireObjectCoercible(it));
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-integer-or-infinity.js":
|
|
/*!******************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-integer-or-infinity.js ***!
|
|
\******************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var trunc = __webpack_require__(/*! ../internals/math-trunc */ "./node_modules/core-js/internals/math-trunc.js");
|
|
|
|
// `ToIntegerOrInfinity` abstract operation
|
|
// https://tc39.es/ecma262/#sec-tointegerorinfinity
|
|
module.exports = function (argument) {
|
|
var number = +argument;
|
|
// eslint-disable-next-line no-self-compare -- NaN check
|
|
return number !== number || number === 0 ? 0 : trunc(number);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-length.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-length.js ***!
|
|
\*****************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
|
|
|
|
var min = Math.min;
|
|
|
|
// `ToLength` abstract operation
|
|
// https://tc39.es/ecma262/#sec-tolength
|
|
module.exports = function (argument) {
|
|
var len = toIntegerOrInfinity(argument);
|
|
return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-object.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-object.js ***!
|
|
\*****************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
|
|
|
|
var $Object = Object;
|
|
|
|
// `ToObject` abstract operation
|
|
// https://tc39.es/ecma262/#sec-toobject
|
|
module.exports = function (argument) {
|
|
return $Object(requireObjectCoercible(argument));
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-primitive.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-primitive.js ***!
|
|
\********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
|
|
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
|
|
var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js");
|
|
var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
|
|
var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "./node_modules/core-js/internals/ordinary-to-primitive.js");
|
|
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
|
|
|
var $TypeError = TypeError;
|
|
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
|
|
|
|
// `ToPrimitive` abstract operation
|
|
// https://tc39.es/ecma262/#sec-toprimitive
|
|
module.exports = function (input, pref) {
|
|
if (!isObject(input) || isSymbol(input)) return input;
|
|
var exoticToPrim = getMethod(input, TO_PRIMITIVE);
|
|
var result;
|
|
if (exoticToPrim) {
|
|
if (pref === undefined) pref = 'default';
|
|
result = call(exoticToPrim, input, pref);
|
|
if (!isObject(result) || isSymbol(result)) return result;
|
|
throw new $TypeError("Can't convert object to primitive value");
|
|
}
|
|
if (pref === undefined) pref = 'number';
|
|
return ordinaryToPrimitive(input, pref);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-property-key.js":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-property-key.js ***!
|
|
\***********************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
|
|
var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js");
|
|
|
|
// `ToPropertyKey` abstract operation
|
|
// https://tc39.es/ecma262/#sec-topropertykey
|
|
module.exports = function (argument) {
|
|
var key = toPrimitive(argument, 'string');
|
|
return isSymbol(key) ? key : key + '';
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-string-tag-support.js":
|
|
/*!*****************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-string-tag-support.js ***!
|
|
\*****************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
|
|
|
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
var test = {};
|
|
|
|
test[TO_STRING_TAG] = 'z';
|
|
|
|
module.exports = String(test) === '[object z]';
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/to-string.js":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/core-js/internals/to-string.js ***!
|
|
\*****************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
|
|
|
|
var $String = String;
|
|
|
|
module.exports = function (argument) {
|
|
if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
|
|
return $String(argument);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/try-to-string.js":
|
|
/*!*********************************************************!*\
|
|
!*** ./node_modules/core-js/internals/try-to-string.js ***!
|
|
\*********************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
|
|
var $String = String;
|
|
|
|
module.exports = function (argument) {
|
|
try {
|
|
return $String(argument);
|
|
} catch (error) {
|
|
return 'Object';
|
|
}
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/uid.js":
|
|
/*!***********************************************!*\
|
|
!*** ./node_modules/core-js/internals/uid.js ***!
|
|
\***********************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
|
|
var id = 0;
|
|
var postfix = Math.random();
|
|
var toString = uncurryThis(1.0.toString);
|
|
|
|
module.exports = function (key) {
|
|
return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/use-symbol-as-uid.js":
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/use-symbol-as-uid.js ***!
|
|
\*************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
/* eslint-disable es/no-symbol -- required for testing */
|
|
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js");
|
|
|
|
module.exports = NATIVE_SYMBOL
|
|
&& !Symbol.sham
|
|
&& typeof Symbol.iterator == 'symbol';
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/v8-prototype-define-bug.js":
|
|
/*!*******************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/v8-prototype-define-bug.js ***!
|
|
\*******************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
|
|
// V8 ~ Chrome 36-
|
|
// https://bugs.chromium.org/p/v8/issues/detail?id=3334
|
|
module.exports = DESCRIPTORS && fails(function () {
|
|
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
return Object.defineProperty(function () { /* empty */ }, 'prototype', {
|
|
value: 42,
|
|
writable: false
|
|
}).prototype !== 42;
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/weak-map-basic-detection.js":
|
|
/*!********************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/weak-map-basic-detection.js ***!
|
|
\********************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
|
|
var WeakMap = global.WeakMap;
|
|
|
|
module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/internals/well-known-symbol.js":
|
|
/*!*************************************************************!*\
|
|
!*** ./node_modules/core-js/internals/well-known-symbol.js ***!
|
|
\*************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
|
|
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
|
|
var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
|
|
var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
|
|
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js");
|
|
var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js");
|
|
|
|
var Symbol = global.Symbol;
|
|
var WellKnownSymbolsStore = shared('wks');
|
|
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;
|
|
|
|
module.exports = function (name) {
|
|
if (!hasOwn(WellKnownSymbolsStore, name)) {
|
|
WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)
|
|
? Symbol[name]
|
|
: createWellKnownSymbol('Symbol.' + name);
|
|
} return WellKnownSymbolsStore[name];
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/modules/es.regexp.exec.js":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/core-js/modules/es.regexp.exec.js ***!
|
|
\********************************************************/
|
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
|
|
var exec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
|
|
|
|
// `RegExp.prototype.exec` method
|
|
// https://tc39.es/ecma262/#sec-regexp.prototype.exec
|
|
$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
|
|
exec: exec
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/core-js/modules/es.string.replace.js":
|
|
/*!***********************************************************!*\
|
|
!*** ./node_modules/core-js/modules/es.string.replace.js ***!
|
|
\***********************************************************/
|
|
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
|
|
var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js");
|
|
var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
|
|
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
|
|
var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js");
|
|
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
|
|
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
|
|
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
|
|
var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
|
|
var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
|
|
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
|
|
var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
|
|
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
|
|
var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js");
|
|
var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
|
|
var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ "./node_modules/core-js/internals/get-substitution.js");
|
|
var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js");
|
|
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
|
|
|
|
var REPLACE = wellKnownSymbol('replace');
|
|
var max = Math.max;
|
|
var min = Math.min;
|
|
var concat = uncurryThis([].concat);
|
|
var push = uncurryThis([].push);
|
|
var stringIndexOf = uncurryThis(''.indexOf);
|
|
var stringSlice = uncurryThis(''.slice);
|
|
|
|
var maybeToString = function (it) {
|
|
return it === undefined ? it : String(it);
|
|
};
|
|
|
|
// IE <= 11 replaces $0 with the whole match, as if it was $&
|
|
// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
|
|
var REPLACE_KEEPS_$0 = (function () {
|
|
// eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
|
|
return 'a'.replace(/./, '$0') === '$0';
|
|
})();
|
|
|
|
// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
|
|
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
|
|
if (/./[REPLACE]) {
|
|
return /./[REPLACE]('a', '$0') === '';
|
|
}
|
|
return false;
|
|
})();
|
|
|
|
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
|
|
var re = /./;
|
|
re.exec = function () {
|
|
var result = [];
|
|
result.groups = { a: '7' };
|
|
return result;
|
|
};
|
|
// eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
|
|
return ''.replace(re, '$<a>') !== '7';
|
|
});
|
|
|
|
// @@replace logic
|
|
fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {
|
|
var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
|
|
|
|
return [
|
|
// `String.prototype.replace` method
|
|
// https://tc39.es/ecma262/#sec-string.prototype.replace
|
|
function replace(searchValue, replaceValue) {
|
|
var O = requireObjectCoercible(this);
|
|
var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);
|
|
return replacer
|
|
? call(replacer, searchValue, O, replaceValue)
|
|
: call(nativeReplace, toString(O), searchValue, replaceValue);
|
|
},
|
|
// `RegExp.prototype[@@replace]` method
|
|
// https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
|
|
function (string, replaceValue) {
|
|
var rx = anObject(this);
|
|
var S = toString(string);
|
|
|
|
if (
|
|
typeof replaceValue == 'string' &&
|
|
stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&
|
|
stringIndexOf(replaceValue, '$<') === -1
|
|
) {
|
|
var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
|
|
if (res.done) return res.value;
|
|
}
|
|
|
|
var functionalReplace = isCallable(replaceValue);
|
|
if (!functionalReplace) replaceValue = toString(replaceValue);
|
|
|
|
var global = rx.global;
|
|
var fullUnicode;
|
|
if (global) {
|
|
fullUnicode = rx.unicode;
|
|
rx.lastIndex = 0;
|
|
}
|
|
|
|
var results = [];
|
|
var result;
|
|
while (true) {
|
|
result = regExpExec(rx, S);
|
|
if (result === null) break;
|
|
|
|
push(results, result);
|
|
if (!global) break;
|
|
|
|
var matchStr = toString(result[0]);
|
|
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
|
|
}
|
|
|
|
var accumulatedResult = '';
|
|
var nextSourcePosition = 0;
|
|
for (var i = 0; i < results.length; i++) {
|
|
result = results[i];
|
|
|
|
var matched = toString(result[0]);
|
|
var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
|
|
var captures = [];
|
|
var replacement;
|
|
// NOTE: This is equivalent to
|
|
// captures = result.slice(1).map(maybeToString)
|
|
// but for some reason `nativeSlice.call(result, 1, result.length)` (called in
|
|
// the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
|
|
// causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
|
|
for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));
|
|
var namedCaptures = result.groups;
|
|
if (functionalReplace) {
|
|
var replacerArgs = concat([matched], captures, position, S);
|
|
if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);
|
|
replacement = toString(apply(replaceValue, undefined, replacerArgs));
|
|
} else {
|
|
replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
|
|
}
|
|
if (position >= nextSourcePosition) {
|
|
accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;
|
|
nextSourcePosition = position + matched.length;
|
|
}
|
|
}
|
|
|
|
return accumulatedResult + stringSlice(S, nextSourcePosition);
|
|
}
|
|
];
|
|
}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/auth/dist/index.es.mjs":
|
|
/*!********************************************************!*\
|
|
!*** ./node_modules/@nextcloud/auth/dist/index.es.mjs ***!
|
|
\********************************************************/
|
|
/***/ ((__unused_webpack___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.mjs");
|
|
|
|
|
|
let token = undefined;
|
|
const observers = [];
|
|
/**
|
|
* Get current request token
|
|
*
|
|
* @return {string|null} Current request token or null if not set
|
|
*/
|
|
function getRequestToken() {
|
|
if (token === undefined) {
|
|
// Only on first load, try to get token from document
|
|
const tokenElement = document?.getElementsByTagName('head')[0];
|
|
token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null;
|
|
}
|
|
return token;
|
|
}
|
|
/**
|
|
* Add an observer which is called when the CSRF token changes
|
|
*
|
|
* @param observer The observer
|
|
*/
|
|
function onRequestTokenUpdate(observer) {
|
|
observers.push(observer);
|
|
}
|
|
// Listen to server event and keep token in sync
|
|
(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;
|
|
};
|
|
let currentUser = undefined;
|
|
function getCurrentUser() {
|
|
if (currentUser !== undefined) {
|
|
return currentUser;
|
|
}
|
|
const head = document?.getElementsByTagName('head')[0];
|
|
if (!head) {
|
|
return null;
|
|
}
|
|
// No user logged in so cache and return null
|
|
const uid = getAttribute(head, 'data-user');
|
|
if (uid === null) {
|
|
currentUser = null;
|
|
return currentUser;
|
|
}
|
|
currentUser = {
|
|
uid,
|
|
displayName: getAttribute(head, 'data-user-displayname'),
|
|
isAdmin: !!window._oc_isadmin,
|
|
};
|
|
return currentUser;
|
|
}
|
|
|
|
|
|
//# sourceMappingURL=index.es.mjs.map
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/event-bus/dist/index.mjs":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/@nextcloud/event-bus/dist/index.mjs ***!
|
|
\**********************************************************/
|
|
/***/ ((__unused_webpack___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_major_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! semver/functions/major.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js");
|
|
|
|
|
|
|
|
class ProxyBus {
|
|
bus;
|
|
constructor(bus) {
|
|
if (typeof bus.getVersion !== 'function' || !semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0__(bus.getVersion())) {
|
|
console.warn('Proxying an event bus with an unknown or invalid version');
|
|
}
|
|
else if (semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1__(bus.getVersion()) !== semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1__(this.getVersion())) {
|
|
console.warn('Proxying an event bus of version ' + bus.getVersion() + ' with ' + this.getVersion());
|
|
}
|
|
this.bus = bus;
|
|
}
|
|
getVersion() {
|
|
return "3.1.0";
|
|
}
|
|
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.1.0";
|
|
}
|
|
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);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
let bus = null;
|
|
function getBus() {
|
|
if (bus !== null) {
|
|
return bus;
|
|
}
|
|
if (typeof window === 'undefined') {
|
|
// testing or SSR
|
|
return new Proxy({}, {
|
|
get: () => {
|
|
return () => console.error('Window not available, EventBus can not be established!');
|
|
}
|
|
});
|
|
}
|
|
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') {
|
|
bus = new ProxyBus(window._nc_event_bus);
|
|
}
|
|
else {
|
|
bus = window._nc_event_bus = new SimpleBus();
|
|
}
|
|
return bus;
|
|
}
|
|
/**
|
|
* 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) {
|
|
getBus().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) {
|
|
getBus().unsubscribe(name, handler);
|
|
}
|
|
/**
|
|
* Emit an event
|
|
*
|
|
* @param name name of the event
|
|
* @param event event payload
|
|
*/
|
|
function emit(name, event) {
|
|
getBus().emit(name, event);
|
|
}
|
|
|
|
|
|
//# sourceMappingURL=index.mjs.map
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/l10n/dist/index.mjs":
|
|
/*!*****************************************************!*\
|
|
!*** ./node_modules/@nextcloud/l10n/dist/index.mjs ***!
|
|
\*****************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ getCanonicalLocale: () => (/* binding */ getCanonicalLocale),
|
|
/* harmony export */ getDayNames: () => (/* binding */ getDayNames),
|
|
/* harmony export */ getDayNamesMin: () => (/* binding */ getDayNamesMin),
|
|
/* harmony export */ getDayNamesShort: () => (/* binding */ getDayNamesShort),
|
|
/* harmony export */ getFirstDay: () => (/* binding */ getFirstDay),
|
|
/* harmony export */ getLanguage: () => (/* binding */ getLanguage),
|
|
/* harmony export */ getLocale: () => (/* binding */ getLocale),
|
|
/* harmony export */ getMonthNames: () => (/* binding */ getMonthNames),
|
|
/* harmony export */ getMonthNamesShort: () => (/* binding */ getMonthNamesShort),
|
|
/* harmony export */ getPlural: () => (/* binding */ getPlural),
|
|
/* harmony export */ isRTL: () => (/* binding */ isRTL),
|
|
/* harmony export */ loadTranslations: () => (/* binding */ loadTranslations),
|
|
/* harmony export */ register: () => (/* binding */ register),
|
|
/* harmony export */ translate: () => (/* binding */ translate),
|
|
/* harmony export */ translatePlural: () => (/* binding */ translatePlural),
|
|
/* harmony export */ unregister: () => (/* binding */ unregister)
|
|
/* harmony export */ });
|
|
/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/l10n/node_modules/@nextcloud/router/dist/index.js");
|
|
/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dompurify */ "./node_modules/dompurify/dist/purify.js");
|
|
/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! escape-html */ "./node_modules/escape-html/index.js");
|
|
|
|
|
|
|
|
|
|
/// <reference types="@nextcloud/typings" />
|
|
/**
|
|
* Get the first day of the week
|
|
*
|
|
* @return {number}
|
|
*/
|
|
function getFirstDay() {
|
|
if (typeof window.firstDay === 'undefined') {
|
|
console.warn('No firstDay found');
|
|
return 1;
|
|
}
|
|
return window.firstDay;
|
|
}
|
|
/**
|
|
* Get a list of day names (full names)
|
|
*
|
|
* @return {string[]}
|
|
*/
|
|
function getDayNames() {
|
|
if (typeof window.dayNames === 'undefined') {
|
|
console.warn('No dayNames found');
|
|
return [
|
|
'Sunday',
|
|
'Monday',
|
|
'Tuesday',
|
|
'Wednesday',
|
|
'Thursday',
|
|
'Friday',
|
|
'Saturday',
|
|
];
|
|
}
|
|
return window.dayNames;
|
|
}
|
|
/**
|
|
* Get a list of day names (short names)
|
|
*
|
|
* @return {string[]}
|
|
*/
|
|
function getDayNamesShort() {
|
|
if (typeof window.dayNamesShort === 'undefined') {
|
|
console.warn('No dayNamesShort found');
|
|
return ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'];
|
|
}
|
|
return window.dayNamesShort;
|
|
}
|
|
/**
|
|
* Get a list of day names (minified names)
|
|
*
|
|
* @return {string[]}
|
|
*/
|
|
function getDayNamesMin() {
|
|
if (typeof window.dayNamesMin === 'undefined') {
|
|
console.warn('No dayNamesMin found');
|
|
return ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
|
|
}
|
|
return window.dayNamesMin;
|
|
}
|
|
/**
|
|
* Get a list of month names (full names)
|
|
*
|
|
* @return {string[]}
|
|
*/
|
|
function getMonthNames() {
|
|
if (typeof window.monthNames === 'undefined') {
|
|
console.warn('No monthNames found');
|
|
return [
|
|
'January',
|
|
'February',
|
|
'March',
|
|
'April',
|
|
'May',
|
|
'June',
|
|
'July',
|
|
'August',
|
|
'September',
|
|
'October',
|
|
'November',
|
|
'December',
|
|
];
|
|
}
|
|
return window.monthNames;
|
|
}
|
|
/**
|
|
* Get a list of month names (short names)
|
|
*
|
|
* @return {string[]}
|
|
*/
|
|
function getMonthNamesShort() {
|
|
if (typeof window.monthNamesShort === 'undefined') {
|
|
console.warn('No monthNamesShort found');
|
|
return [
|
|
'Jan.',
|
|
'Feb.',
|
|
'Mar.',
|
|
'Apr.',
|
|
'May.',
|
|
'Jun.',
|
|
'Jul.',
|
|
'Aug.',
|
|
'Sep.',
|
|
'Oct.',
|
|
'Nov.',
|
|
'Dec.',
|
|
];
|
|
}
|
|
return window.monthNamesShort;
|
|
}
|
|
|
|
/**
|
|
* Returns the user's locale
|
|
*/
|
|
function getLocale() {
|
|
return document.documentElement.dataset.locale || 'en';
|
|
}
|
|
/**
|
|
* Returns user's locale in canonical form
|
|
* E.g. `en-US` instead of `en_US`
|
|
*/
|
|
function getCanonicalLocale() {
|
|
return getLocale().replace(/_/g, '-');
|
|
}
|
|
/**
|
|
* Returns the user's language
|
|
*/
|
|
function getLanguage() {
|
|
return document.documentElement.lang || 'en';
|
|
}
|
|
/**
|
|
* Check whether the current, or a given, language is read right-to-left
|
|
*
|
|
* @param language Language code to check, defaults to current language
|
|
*/
|
|
function isRTL(language) {
|
|
const languageCode = language || getLanguage();
|
|
// Source: https://meta.wikimedia.org/wiki/Template:List_of_language_names_ordered_by_code
|
|
const rtlLanguages = [
|
|
/* eslint-disable no-multi-spaces */
|
|
'ae',
|
|
'ar',
|
|
'arc',
|
|
'arz',
|
|
'bcc',
|
|
'bqi',
|
|
'ckb',
|
|
'dv',
|
|
'fa',
|
|
'glk',
|
|
'ha',
|
|
'he',
|
|
'khw',
|
|
'ks',
|
|
'ku',
|
|
'mzn',
|
|
'nqo',
|
|
'pnb',
|
|
'ps',
|
|
'sd',
|
|
'ug',
|
|
'ur',
|
|
'uzs',
|
|
'yi', // 'ייִדיש', Yiddish
|
|
/* eslint-enable no-multi-spaces */
|
|
];
|
|
// special case for Uzbek Afghan
|
|
if ((language || getCanonicalLocale()).startsWith('uz-AF')) {
|
|
return true;
|
|
}
|
|
return rtlLanguages.includes(languageCode);
|
|
}
|
|
|
|
/// <reference types="@nextcloud/typings" />
|
|
/**
|
|
* Check if translations and plural function are set for given app
|
|
*
|
|
* @param {string} appId the app id
|
|
* @return {boolean}
|
|
*/
|
|
function hasAppTranslations(appId) {
|
|
var _a, _b;
|
|
return (((_a = window._oc_l10n_registry_translations) === null || _a === void 0 ? void 0 : _a[appId]) !== undefined
|
|
&& ((_b = window._oc_l10n_registry_plural_functions) === null || _b === void 0 ? void 0 : _b[appId]) !== undefined);
|
|
}
|
|
/**
|
|
* Register new, or extend available, translations for an app
|
|
*
|
|
* @param {string} appId the app id
|
|
* @param {object} translations the translations list
|
|
* @param {Function} pluralFunction the plural function
|
|
*/
|
|
function registerAppTranslations(appId, translations, pluralFunction) {
|
|
var _a;
|
|
window._oc_l10n_registry_translations = Object.assign(window._oc_l10n_registry_translations || {}, {
|
|
[appId]: Object.assign(((_a = window._oc_l10n_registry_translations) === null || _a === void 0 ? void 0 : _a[appId]) || {}, translations),
|
|
});
|
|
window._oc_l10n_registry_plural_functions = Object.assign(window._oc_l10n_registry_plural_functions || {}, {
|
|
[appId]: pluralFunction,
|
|
});
|
|
}
|
|
/**
|
|
* Unregister all translations and plural function for given app
|
|
*
|
|
* @param {string} appId the app id
|
|
*/
|
|
function unregisterAppTranslations(appId) {
|
|
var _a, _b;
|
|
(_a = window._oc_l10n_registry_translations) === null || _a === void 0 ? true : delete _a[appId];
|
|
(_b = window._oc_l10n_registry_plural_functions) === null || _b === void 0 ? true : delete _b[appId];
|
|
}
|
|
/**
|
|
* Get translations bundle for given app and current locale
|
|
*
|
|
* @param {string} appId the app id
|
|
* @return {object}
|
|
*/
|
|
function getAppTranslations(appId) {
|
|
var _a, _b, _c, _d;
|
|
return {
|
|
translations: (_b = (_a = window._oc_l10n_registry_translations) === null || _a === void 0 ? void 0 : _a[appId]) !== null && _b !== void 0 ? _b : {},
|
|
pluralFunction: (_d = (_c = window._oc_l10n_registry_plural_functions) === null || _c === void 0 ? void 0 : _c[appId]) !== null && _d !== void 0 ? _d : ((number) => number),
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Translate a string
|
|
*
|
|
* @param {string} app the id of the app for which to translate the string
|
|
* @param {string} text the string to translate
|
|
* @param {object} vars map of placeholder key to value
|
|
* @param {number} number to replace %n with
|
|
* @param {object} [options] options object
|
|
* @return {string}
|
|
*/
|
|
function translate(app, text, vars, number, options) {
|
|
const defaultOptions = {
|
|
escape: true,
|
|
sanitize: true,
|
|
};
|
|
const allOptions = Object.assign({}, defaultOptions, options || {});
|
|
const identity = (value) => value;
|
|
const optSanitize = allOptions.sanitize ? dompurify__WEBPACK_IMPORTED_MODULE_1__.sanitize : identity;
|
|
const optEscape = allOptions.escape ? escape_html__WEBPACK_IMPORTED_MODULE_2__ : identity;
|
|
// TODO: cache this function to avoid inline recreation
|
|
// of the same function over and over again in case
|
|
// translate() is used in a loop
|
|
const _build = (text, vars, number) => {
|
|
return text.replace(/%n/g, '' + number).replace(/{([^{}]*)}/g, (match, key) => {
|
|
if (vars === undefined || !(key in vars)) {
|
|
return optSanitize(match);
|
|
}
|
|
const r = vars[key];
|
|
if (typeof r === 'string' || typeof r === 'number') {
|
|
return optSanitize(optEscape(r));
|
|
}
|
|
else {
|
|
return optSanitize(match);
|
|
}
|
|
});
|
|
};
|
|
const bundle = getAppTranslations(app);
|
|
let translation = bundle.translations[text] || text;
|
|
translation = Array.isArray(translation) ? translation[0] : translation;
|
|
if (typeof vars === 'object' || number !== undefined) {
|
|
return optSanitize(_build(translation, vars, number));
|
|
}
|
|
else {
|
|
return optSanitize(translation);
|
|
}
|
|
}
|
|
/**
|
|
* Translate a string containing an object which possibly requires a plural form
|
|
*
|
|
* @param {string} app the id of the app for which to translate the string
|
|
* @param {string} textSingular the string to translate for exactly one object
|
|
* @param {string} textPlural the string to translate for n objects
|
|
* @param {number} number number to determine whether to use singular or plural
|
|
* @param {object} vars of placeholder key to value
|
|
* @param {object} options options object
|
|
*/
|
|
function translatePlural(app, textSingular, textPlural, number, vars, options) {
|
|
const identifier = '_' + textSingular + '_::_' + textPlural + '_';
|
|
const bundle = getAppTranslations(app);
|
|
const value = bundle.translations[identifier];
|
|
if (typeof value !== 'undefined') {
|
|
const translation = value;
|
|
if (Array.isArray(translation)) {
|
|
const plural = bundle.pluralFunction(number);
|
|
return translate(app, translation[plural], vars, number, options);
|
|
}
|
|
}
|
|
if (number === 1) {
|
|
return translate(app, textSingular, vars, number, options);
|
|
}
|
|
else {
|
|
return translate(app, textPlural, vars, number, options);
|
|
}
|
|
}
|
|
/**
|
|
* Load an app's translation bundle if not loaded already.
|
|
*
|
|
* @param {string} appName name of the app
|
|
* @param {Function} callback callback to be called when
|
|
* the translations are loaded
|
|
* @return {Promise} promise
|
|
*/
|
|
function loadTranslations(appName, callback) {
|
|
if (hasAppTranslations(appName) || getLocale() === 'en') {
|
|
return Promise.resolve().then(callback);
|
|
}
|
|
const url = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.generateFilePath)(appName, 'l10n', getLocale() + '.json');
|
|
const promise = new Promise((resolve, reject) => {
|
|
const request = new XMLHttpRequest();
|
|
request.open('GET', url, true);
|
|
request.onerror = () => {
|
|
reject(new Error(request.statusText || 'Network error'));
|
|
};
|
|
request.onload = () => {
|
|
if (request.status >= 200 && request.status < 300) {
|
|
try {
|
|
const bundle = JSON.parse(request.responseText);
|
|
if (typeof bundle.translations === 'object')
|
|
resolve(bundle);
|
|
}
|
|
catch (error) {
|
|
// error is probably a SyntaxError due to invalid response text, this is handled by next line
|
|
}
|
|
reject(new Error('Invalid content of translation bundle'));
|
|
}
|
|
else {
|
|
reject(new Error(request.statusText));
|
|
}
|
|
};
|
|
request.send();
|
|
});
|
|
// load JSON translation bundle per AJAX
|
|
return promise
|
|
.then((result) => {
|
|
register(appName, result.translations);
|
|
return result;
|
|
})
|
|
.then(callback);
|
|
}
|
|
/**
|
|
* Register an app's translation bundle.
|
|
*
|
|
* @param {string} appName name of the app
|
|
* @param {Object<string, string>} bundle translation bundle
|
|
*/
|
|
function register(appName, bundle) {
|
|
registerAppTranslations(appName, bundle, getPlural);
|
|
}
|
|
/**
|
|
* Unregister all translations of an app
|
|
*
|
|
* @param appName name of the app
|
|
* @since 2.1.0
|
|
*/
|
|
function unregister(appName) {
|
|
return unregisterAppTranslations(appName);
|
|
}
|
|
/**
|
|
* Get array index of translations for a plural form
|
|
*
|
|
*
|
|
* @param {number} number the number of elements
|
|
* @return {number} 0 for the singular form(, 1 for the first plural form, ...)
|
|
*/
|
|
function getPlural(number) {
|
|
let language = getLanguage();
|
|
if (language === 'pt-BR') {
|
|
// temporary set a locale for brazilian
|
|
language = 'xbr';
|
|
}
|
|
if (language.length > 3) {
|
|
language = language.substring(0, language.lastIndexOf('-'));
|
|
}
|
|
/*
|
|
* The plural rules are derived from code of the Zend Framework (2010-09-25),
|
|
* which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).
|
|
* Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
|
*/
|
|
switch (language) {
|
|
case 'az':
|
|
case 'bo':
|
|
case 'dz':
|
|
case 'id':
|
|
case 'ja':
|
|
case 'jv':
|
|
case 'ka':
|
|
case 'km':
|
|
case 'kn':
|
|
case 'ko':
|
|
case 'ms':
|
|
case 'th':
|
|
case 'tr':
|
|
case 'vi':
|
|
case 'zh':
|
|
return 0;
|
|
case 'af':
|
|
case 'bn':
|
|
case 'bg':
|
|
case 'ca':
|
|
case 'da':
|
|
case 'de':
|
|
case 'el':
|
|
case 'en':
|
|
case 'eo':
|
|
case 'es':
|
|
case 'et':
|
|
case 'eu':
|
|
case 'fa':
|
|
case 'fi':
|
|
case 'fo':
|
|
case 'fur':
|
|
case 'fy':
|
|
case 'gl':
|
|
case 'gu':
|
|
case 'ha':
|
|
case 'he':
|
|
case 'hu':
|
|
case 'is':
|
|
case 'it':
|
|
case 'ku':
|
|
case 'lb':
|
|
case 'ml':
|
|
case 'mn':
|
|
case 'mr':
|
|
case 'nah':
|
|
case 'nb':
|
|
case 'ne':
|
|
case 'nl':
|
|
case 'nn':
|
|
case 'no':
|
|
case 'oc':
|
|
case 'om':
|
|
case 'or':
|
|
case 'pa':
|
|
case 'pap':
|
|
case 'ps':
|
|
case 'pt':
|
|
case 'so':
|
|
case 'sq':
|
|
case 'sv':
|
|
case 'sw':
|
|
case 'ta':
|
|
case 'te':
|
|
case 'tk':
|
|
case 'ur':
|
|
case 'zu':
|
|
return number === 1 ? 0 : 1;
|
|
case 'am':
|
|
case 'bh':
|
|
case 'fil':
|
|
case 'fr':
|
|
case 'gun':
|
|
case 'hi':
|
|
case 'hy':
|
|
case 'ln':
|
|
case 'mg':
|
|
case 'nso':
|
|
case 'xbr':
|
|
case 'ti':
|
|
case 'wa':
|
|
return number === 0 || number === 1 ? 0 : 1;
|
|
case 'be':
|
|
case 'bs':
|
|
case 'hr':
|
|
case 'ru':
|
|
case 'sh':
|
|
case 'sr':
|
|
case 'uk':
|
|
return number % 10 === 1 && number % 100 !== 11
|
|
? 0
|
|
: number % 10 >= 2
|
|
&& number % 10 <= 4
|
|
&& (number % 100 < 10 || number % 100 >= 20)
|
|
? 1
|
|
: 2;
|
|
case 'cs':
|
|
case 'sk':
|
|
return number === 1 ? 0 : number >= 2 && number <= 4 ? 1 : 2;
|
|
case 'ga':
|
|
return number === 1 ? 0 : number === 2 ? 1 : 2;
|
|
case 'lt':
|
|
return number % 10 === 1 && number % 100 !== 11
|
|
? 0
|
|
: number % 10 >= 2 && (number % 100 < 10 || number % 100 >= 20)
|
|
? 1
|
|
: 2;
|
|
case 'sl':
|
|
return number % 100 === 1
|
|
? 0
|
|
: number % 100 === 2
|
|
? 1
|
|
: number % 100 === 3 || number % 100 === 4
|
|
? 2
|
|
: 3;
|
|
case 'mk':
|
|
return number % 10 === 1 ? 0 : 1;
|
|
case 'mt':
|
|
return number === 1
|
|
? 0
|
|
: number === 0 || (number % 100 > 1 && number % 100 < 11)
|
|
? 1
|
|
: number % 100 > 10 && number % 100 < 20
|
|
? 2
|
|
: 3;
|
|
case 'lv':
|
|
return number === 0
|
|
? 0
|
|
: number % 10 === 1 && number % 100 !== 11
|
|
? 1
|
|
: 2;
|
|
case 'pl':
|
|
return number === 1
|
|
? 0
|
|
: number % 10 >= 2
|
|
&& number % 10 <= 4
|
|
&& (number % 100 < 12 || number % 100 > 14)
|
|
? 1
|
|
: 2;
|
|
case 'cy':
|
|
return number === 1
|
|
? 0
|
|
: number === 2
|
|
? 1
|
|
: number === 8 || number === 11
|
|
? 2
|
|
: 3;
|
|
case 'ro':
|
|
return number === 1
|
|
? 0
|
|
: number === 0 || (number % 100 > 0 && number % 100 < 20)
|
|
? 1
|
|
: 2;
|
|
case 'ar':
|
|
return number === 0
|
|
? 0
|
|
: number === 1
|
|
? 1
|
|
: number === 2
|
|
? 2
|
|
: number % 100 >= 3 && number % 100 <= 10
|
|
? 3
|
|
: number % 100 >= 11 && number % 100 <= 99
|
|
? 4
|
|
: 5;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/router/dist/index.mjs":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/@nextcloud/router/dist/index.mjs ***!
|
|
\*******************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ generateFilePath: () => (/* binding */ u),
|
|
/* harmony export */ generateOcsUrl: () => (/* binding */ v),
|
|
/* harmony export */ generateRemoteUrl: () => (/* binding */ U),
|
|
/* harmony export */ generateUrl: () => (/* binding */ _),
|
|
/* harmony export */ getAppRootUrl: () => (/* binding */ b),
|
|
/* harmony export */ getBaseUrl: () => (/* binding */ w),
|
|
/* harmony export */ getRootUrl: () => (/* binding */ f),
|
|
/* harmony export */ imagePath: () => (/* binding */ h),
|
|
/* harmony export */ linkTo: () => (/* binding */ R)
|
|
/* harmony export */ });
|
|
const R = (n, e) => u(n, "", e), g = (n) => "/remote.php/" + n, U = (n, e) => {
|
|
var o;
|
|
return ((o = e == null ? void 0 : e.baseURL) != null ? o : w()) + g(n);
|
|
}, v = (n, e, o) => {
|
|
var c;
|
|
const i = Object.assign({
|
|
ocsVersion: 2
|
|
}, o || {}).ocsVersion === 1 ? 1 : 2;
|
|
return ((c = o == null ? void 0 : o.baseURL) != null ? c : w()) + "/ocs/v" + i + ".php" + d(n, e, o);
|
|
}, d = (n, e, o) => {
|
|
const c = Object.assign({
|
|
escape: !0
|
|
}, o || {}), s = function(i, r) {
|
|
return r = r || {}, i.replace(
|
|
/{([^{}]*)}/g,
|
|
function(l, t) {
|
|
const a = r[t];
|
|
return c.escape ? encodeURIComponent(typeof a == "string" || typeof a == "number" ? a.toString() : l) : typeof a == "string" || typeof a == "number" ? a.toString() : l;
|
|
}
|
|
);
|
|
};
|
|
return n.charAt(0) !== "/" && (n = "/" + n), s(n, e || {});
|
|
}, _ = (n, e, o) => {
|
|
var c, s, i;
|
|
const r = Object.assign({
|
|
noRewrite: !1
|
|
}, o || {}), l = (c = o == null ? void 0 : o.baseURL) != null ? c : f();
|
|
return ((i = (s = window == null ? void 0 : window.OC) == null ? void 0 : s.config) == null ? void 0 : i.modRewriteWorking) === !0 && !r.noRewrite ? l + d(n, e, o) : l + "/index.php" + d(n, e, o);
|
|
}, h = (n, e) => e.indexOf(".") === -1 ? u(n, "img", e + ".svg") : u(n, "img", e), u = (n, e, o) => {
|
|
var c, s, i;
|
|
const r = (i = (s = (c = window == null ? void 0 : window.OC) == null ? void 0 : c.coreApps) == null ? void 0 : s.includes(n)) != null ? i : !1, l = o.slice(-3) === "php";
|
|
let t = f();
|
|
return l && !r ? (t += "/index.php/apps/".concat(n), e && (t += "/".concat(encodeURI(e))), o !== "index.php" && (t += "/".concat(o))) : !l && !r ? (t = b(n), e && (t += "/".concat(e, "/")), t.at(-1) !== "/" && (t += "/"), t += o) : ((n === "settings" || n === "core" || n === "search") && e === "ajax" && (t += "/index.php"), n && (t += "/".concat(n)), e && (t += "/".concat(e)), t += "/".concat(o)), t;
|
|
}, w = () => window.location.protocol + "//" + window.location.host + f();
|
|
function f() {
|
|
let n = window._oc_webroot;
|
|
if (typeof n > "u") {
|
|
n = location.pathname;
|
|
const e = n.indexOf("/index.php/");
|
|
if (e !== -1)
|
|
n = n.slice(0, e);
|
|
else {
|
|
const o = n.indexOf("/", 1);
|
|
n = n.slice(0, o > 0 ? o : void 0);
|
|
}
|
|
}
|
|
return n;
|
|
}
|
|
function b(n) {
|
|
var e, o;
|
|
return (o = ((e = window._oc_appswebroots) != null ? e : {})[n]) != null ? o : "";
|
|
}
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./node_modules/@nextcloud/vue/dist/Functions/registerReference.mjs":
|
|
/*!**************************************************************************!*\
|
|
!*** ./node_modules/@nextcloud/vue/dist/Functions/registerReference.mjs ***!
|
|
\**************************************************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
"use strict";
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
/* harmony export */ NcCustomPickerRenderResult: () => (/* binding */ w),
|
|
/* harmony export */ destroyCustomPickerElement: () => (/* binding */ g),
|
|
/* harmony export */ destroyWidget: () => (/* binding */ u),
|
|
/* harmony export */ getCustomPickerElementSize: () => (/* binding */ d),
|
|
/* harmony export */ isCustomPickerElementRegistered: () => (/* binding */ l),
|
|
/* harmony export */ isWidgetRegistered: () => (/* binding */ s),
|
|
/* harmony export */ registerCustomPickerElement: () => (/* binding */ _),
|
|
/* harmony export */ registerWidget: () => (/* binding */ o),
|
|
/* harmony export */ renderCustomPickerElement: () => (/* binding */ m),
|
|
/* harmony export */ renderWidget: () => (/* binding */ c)
|
|
/* harmony export */ });
|
|
window._vue_richtext_widgets || (window._vue_richtext_widgets = {});
|
|
const s = (e) => !!window._vue_richtext_widgets[e], o = (e, t, r = (i) => {
|
|
}) => {
|
|
if (window._vue_richtext_widgets[e]) {
|
|
console.error("Widget for id " + e + " already registered");
|
|
return;
|
|
}
|
|
window._vue_richtext_widgets[e] = {
|
|
id: e,
|
|
callback: t,
|
|
onDestroy: r
|
|
};
|
|
}, c = (e, { richObjectType: t, richObject: r, accessible: i, interactive: n }) => {
|
|
if (t !== "open-graph") {
|
|
if (!window._vue_richtext_widgets[t]) {
|
|
console.error("Widget for rich object type " + t + " not registered");
|
|
return;
|
|
}
|
|
window._vue_richtext_widgets[t].callback(e, { richObjectType: t, richObject: r, accessible: i, interactive: n });
|
|
}
|
|
}, u = (e, t) => {
|
|
e !== "open-graph" && window._vue_richtext_widgets[e] && window._vue_richtext_widgets[e].onDestroy(t);
|
|
};
|
|
window._registerWidget = o;
|
|
window._vue_richtext_custom_picker_elements || (window._vue_richtext_custom_picker_elements = {});
|
|
class w {
|
|
/**
|
|
* @param {HTMLElement} element The HTML element
|
|
* @param {object} object The object
|
|
*/
|
|
constructor(t, r) {
|
|
this.element = t, this.object = r;
|
|
}
|
|
}
|
|
const l = (e) => !!window._vue_richtext_custom_picker_elements[e], d = (e) => {
|
|
const t = window._vue_richtext_custom_picker_elements[e]?.size;
|
|
return ["small", "normal", "large", "full"].includes(t) ? t : null;
|
|
}, _ = (e, t, r = (n) => {
|
|
}, i = "large") => {
|
|
if (window._vue_richtext_custom_picker_elements[e]) {
|
|
console.error("Custom reference picker element for id " + e + " already registered");
|
|
return;
|
|
}
|
|
window._vue_richtext_custom_picker_elements[e] = {
|
|
id: e,
|
|
callback: t,
|
|
onDestroy: r,
|
|
size: i
|
|
};
|
|
}, m = (e, { providerId: t, accessible: r }) => {
|
|
if (!window._vue_richtext_custom_picker_elements[t]) {
|
|
console.error("Custom reference picker element for reference provider ID " + t + " not registered");
|
|
return;
|
|
}
|
|
return window._vue_richtext_custom_picker_elements[t].callback(e, { providerId: t, accessible: r });
|
|
}, g = (e, t, r) => {
|
|
window._vue_richtext_custom_picker_elements[e] && window._vue_richtext_custom_picker_elements[e].onDestroy(t, r);
|
|
};
|
|
window._registerCustomPickerElement = _;
|
|
|
|
|
|
|
|
/***/ })
|
|
|
|
/******/ });
|
|
/************************************************************************/
|
|
/******/ // The module cache
|
|
/******/ var __webpack_module_cache__ = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/ // Check if module is in cache
|
|
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
/******/ if (cachedModule !== undefined) {
|
|
/******/ return cachedModule.exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
/******/ id: moduleId,
|
|
/******/ loaded: false,
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.loaded = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = __webpack_modules__;
|
|
/******/
|
|
/************************************************************************/
|
|
/******/ /* webpack/runtime/amd define */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.amdD = function () {
|
|
/******/ throw new Error('define cannot be used indirect');
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/amd options */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.amdO = {};
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/compat get default export */
|
|
/******/ (() => {
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
/******/ __webpack_require__.n = (module) => {
|
|
/******/ var getter = module && module.__esModule ?
|
|
/******/ () => (module['default']) :
|
|
/******/ () => (module);
|
|
/******/ __webpack_require__.d(getter, { a: getter });
|
|
/******/ return getter;
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/create fake namespace object */
|
|
/******/ (() => {
|
|
/******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
|
|
/******/ var leafPrototypes;
|
|
/******/ // create a fake namespace object
|
|
/******/ // mode & 1: value is a module id, require it
|
|
/******/ // mode & 2: merge all properties of value into the ns
|
|
/******/ // mode & 4: return value when already ns object
|
|
/******/ // mode & 16: return value when it's Promise-like
|
|
/******/ // mode & 8|1: behave like require
|
|
/******/ __webpack_require__.t = function(value, mode) {
|
|
/******/ if(mode & 1) value = this(value);
|
|
/******/ if(mode & 8) return value;
|
|
/******/ if(typeof value === 'object' && value) {
|
|
/******/ if((mode & 4) && value.__esModule) return value;
|
|
/******/ if((mode & 16) && typeof value.then === 'function') return value;
|
|
/******/ }
|
|
/******/ var ns = Object.create(null);
|
|
/******/ __webpack_require__.r(ns);
|
|
/******/ var def = {};
|
|
/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
|
|
/******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
|
|
/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
|
|
/******/ }
|
|
/******/ def['default'] = () => (value);
|
|
/******/ __webpack_require__.d(ns, def);
|
|
/******/ return ns;
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/define property getters */
|
|
/******/ (() => {
|
|
/******/ // define getter functions for harmony exports
|
|
/******/ __webpack_require__.d = (exports, definition) => {
|
|
/******/ for(var key in definition) {
|
|
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
/******/ }
|
|
/******/ }
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/ensure chunk */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.f = {};
|
|
/******/ // This file contains only the entry chunk.
|
|
/******/ // The chunk loading function for additional chunks
|
|
/******/ __webpack_require__.e = (chunkId) => {
|
|
/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
|
|
/******/ __webpack_require__.f[key](chunkId, promises);
|
|
/******/ return promises;
|
|
/******/ }, []));
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/get javascript chunk filename */
|
|
/******/ (() => {
|
|
/******/ // This function allow to reference async chunks
|
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
/******/ // return url for filenames based on template
|
|
/******/ return "calendar-" + chunkId + ".js?v=" + {"vendors-node_modules_vue_dist_vue_runtime_esm_js":"7e3171593bdc0f62040b","vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981":"3a2ab5c12f0771c82ad1","vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b":"c3b3db23da041c717fc1","vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8":"b90524c103590fa7a133","vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065":"88354dc01b19c1f3f2fe","vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5":"1d12f5e341e36b0fcd1d","src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790":"7cf71b4f92d5bbc180b4","src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258":"7910aecb675dcdfa620c","src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254":"8b44a8dca72f653e70b2","vendors-node_modules_webdav_dist_web_index_js":"454da8f908d41b47c607","src_store_index_js":"9676b305963c286b748b","vendors-node_modules_path-browserify_index_js-node_modules_nextcloud_dialogs_dist_chunks_Dial-e0595f":"214ba50739254b654bf4","node_modules_nextcloud_dialogs_dist_legacy_mjs":"8be838e4c6e9aae56c87","vendors-node_modules_nextcloud_dialogs_dist_chunks_FilePicker-8ibBgPg__mjs":"ea54a36450de178d1141","public-calendar-subscription-picker":"5cfd324844c891720a08","vendors-node_modules_moment_locale_af_js-node_modules_moment_locale_ar-dz_js-node_modules_mom-582c96":"ce1bed825f57dd1d117a","node_modules_moment_locale_sync_recursive_":"4bc2c39c5e0ff182c2e3"}[chunkId] + "";
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/global */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.g = (function() {
|
|
/******/ if (typeof globalThis === 'object') return globalThis;
|
|
/******/ try {
|
|
/******/ return this || new Function('return this')();
|
|
/******/ } catch (e) {
|
|
/******/ if (typeof window === 'object') return window;
|
|
/******/ }
|
|
/******/ })();
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/load script */
|
|
/******/ (() => {
|
|
/******/ var inProgress = {};
|
|
/******/ var dataWebpackPrefix = "calendar:";
|
|
/******/ // loadScript function to load a script via script tag
|
|
/******/ __webpack_require__.l = (url, done, key, chunkId) => {
|
|
/******/ if(inProgress[url]) { inProgress[url].push(done); return; }
|
|
/******/ var script, needAttach;
|
|
/******/ if(key !== undefined) {
|
|
/******/ var scripts = document.getElementsByTagName("script");
|
|
/******/ for(var i = 0; i < scripts.length; i++) {
|
|
/******/ var s = scripts[i];
|
|
/******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; }
|
|
/******/ }
|
|
/******/ }
|
|
/******/ if(!script) {
|
|
/******/ needAttach = true;
|
|
/******/ script = document.createElement('script');
|
|
/******/
|
|
/******/ script.charset = 'utf-8';
|
|
/******/ script.timeout = 120;
|
|
/******/ if (__webpack_require__.nc) {
|
|
/******/ script.setAttribute("nonce", __webpack_require__.nc);
|
|
/******/ }
|
|
/******/ script.setAttribute("data-webpack", dataWebpackPrefix + key);
|
|
/******/
|
|
/******/ script.src = url;
|
|
/******/ }
|
|
/******/ inProgress[url] = [done];
|
|
/******/ var onScriptComplete = (prev, event) => {
|
|
/******/ // avoid mem leaks in IE.
|
|
/******/ script.onerror = script.onload = null;
|
|
/******/ clearTimeout(timeout);
|
|
/******/ var doneFns = inProgress[url];
|
|
/******/ delete inProgress[url];
|
|
/******/ script.parentNode && script.parentNode.removeChild(script);
|
|
/******/ doneFns && doneFns.forEach((fn) => (fn(event)));
|
|
/******/ if(prev) return prev(event);
|
|
/******/ }
|
|
/******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
|
|
/******/ script.onerror = onScriptComplete.bind(null, script.onerror);
|
|
/******/ script.onload = onScriptComplete.bind(null, script.onload);
|
|
/******/ needAttach && document.head.appendChild(script);
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/make namespace object */
|
|
/******/ (() => {
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = (exports) => {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/node module decorator */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.nmd = (module) => {
|
|
/******/ module.paths = [];
|
|
/******/ if (!module.children) module.children = [];
|
|
/******/ return module;
|
|
/******/ };
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/publicPath */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.p = "\\apps\\calendar\\js\\";
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/jsonp chunk loading */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.b = document.baseURI || self.location.href;
|
|
/******/
|
|
/******/ // object to store loaded and loading chunks
|
|
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
|
|
/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
|
|
/******/ var installedChunks = {
|
|
/******/ "reference": 0
|
|
/******/ };
|
|
/******/
|
|
/******/ __webpack_require__.f.j = (chunkId, promises) => {
|
|
/******/ // JSONP chunk loading for javascript
|
|
/******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
|
|
/******/ if(installedChunkData !== 0) { // 0 means "already installed".
|
|
/******/
|
|
/******/ // a Promise means "currently loading".
|
|
/******/ if(installedChunkData) {
|
|
/******/ promises.push(installedChunkData[2]);
|
|
/******/ } else {
|
|
/******/ if(true) { // all chunks have JS
|
|
/******/ // setup Promise in chunk cache
|
|
/******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));
|
|
/******/ promises.push(installedChunkData[2] = promise);
|
|
/******/
|
|
/******/ // start chunk loading
|
|
/******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId);
|
|
/******/ // create error before stack unwound to get useful stacktrace later
|
|
/******/ var error = new Error();
|
|
/******/ var loadingEnded = (event) => {
|
|
/******/ if(__webpack_require__.o(installedChunks, chunkId)) {
|
|
/******/ installedChunkData = installedChunks[chunkId];
|
|
/******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
|
|
/******/ if(installedChunkData) {
|
|
/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
|
|
/******/ var realSrc = event && event.target && event.target.src;
|
|
/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
|
|
/******/ error.name = 'ChunkLoadError';
|
|
/******/ error.type = errorType;
|
|
/******/ error.request = realSrc;
|
|
/******/ installedChunkData[1](error);
|
|
/******/ }
|
|
/******/ }
|
|
/******/ };
|
|
/******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId);
|
|
/******/ }
|
|
/******/ }
|
|
/******/ }
|
|
/******/ };
|
|
/******/
|
|
/******/ // no prefetching
|
|
/******/
|
|
/******/ // no preloaded
|
|
/******/
|
|
/******/ // no HMR
|
|
/******/
|
|
/******/ // no HMR manifest
|
|
/******/
|
|
/******/ // no on chunks loaded
|
|
/******/
|
|
/******/ // install a JSONP callback for chunk loading
|
|
/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
|
|
/******/ var [chunkIds, moreModules, runtime] = data;
|
|
/******/ // add "moreModules" to the modules object,
|
|
/******/ // then flag all "chunkIds" as loaded and fire callback
|
|
/******/ var moduleId, chunkId, i = 0;
|
|
/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
|
|
/******/ for(moduleId in moreModules) {
|
|
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
|
|
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
|
|
/******/ }
|
|
/******/ }
|
|
/******/ if(runtime) var result = runtime(__webpack_require__);
|
|
/******/ }
|
|
/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
|
|
/******/ for(;i < chunkIds.length; i++) {
|
|
/******/ chunkId = chunkIds[i];
|
|
/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
|
|
/******/ installedChunks[chunkId][0]();
|
|
/******/ }
|
|
/******/ installedChunks[chunkId] = 0;
|
|
/******/ }
|
|
/******/
|
|
/******/ }
|
|
/******/
|
|
/******/ var chunkLoadingGlobal = self["webpackChunkcalendar"] = self["webpackChunkcalendar"] || [];
|
|
/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
|
|
/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
|
|
/******/ })();
|
|
/******/
|
|
/******/ /* webpack/runtime/nonce */
|
|
/******/ (() => {
|
|
/******/ __webpack_require__.nc = undefined;
|
|
/******/ })();
|
|
/******/
|
|
/************************************************************************/
|
|
var __webpack_exports__ = {};
|
|
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
|
|
(() => {
|
|
"use strict";
|
|
/*!**************************!*\
|
|
!*** ./src/reference.js ***!
|
|
\**************************/
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony import */ var _nextcloud_vue_dist_Functions_registerReference_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/vue/dist/Functions/registerReference.js */ "./node_modules/@nextcloud/vue/dist/Functions/registerReference.mjs");
|
|
/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.mjs");
|
|
/* harmony import */ var _nextcloud_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.es.mjs");
|
|
/* harmony import */ var _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @nextcloud/l10n */ "./node_modules/@nextcloud/l10n/dist/index.mjs");
|
|
/* harmony import */ var _css_calendar_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../css/calendar.scss */ "./css/calendar.scss");
|
|
/* harmony import */ var _css_calendar_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_css_calendar_scss__WEBPACK_IMPORTED_MODULE_4__);
|
|
|
|
|
|
|
|
|
|
|
|
__webpack_require__.nc = btoa((0,_nextcloud_auth__WEBPACK_IMPORTED_MODULE_2__.getRequestToken)()); // eslint-disable-line
|
|
__webpack_require__.p = (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.linkTo)('calendar', 'js/'); // eslint-disable-line
|
|
|
|
(0,_nextcloud_vue_dist_Functions_registerReference_js__WEBPACK_IMPORTED_MODULE_0__.registerWidget)('calendar_widget', async (el, _ref) => {
|
|
let {
|
|
richObjectType,
|
|
richObject,
|
|
accessible,
|
|
interactive
|
|
} = _ref;
|
|
const {
|
|
default: Vue
|
|
} = await __webpack_require__.e(/*! import() */ "vendors-node_modules_vue_dist_vue_runtime_esm_js").then(__webpack_require__.bind(__webpack_require__, /*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"));
|
|
const {
|
|
default: Calendar
|
|
} = await Promise.all(/*! import() */[__webpack_require__.e("vendors-node_modules_nextcloud_capabilities_dist_index_js-node_modules_nextcloud_vue-select_d-877981"), __webpack_require__.e("vendors-node_modules_vue_dist_vue_runtime_esm_js"), __webpack_require__.e("vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b"), __webpack_require__.e("vendors-node_modules_vue-material-design-icons_CalendarBlank_vue-node_modules_vue-material-de-e2c1f8"), __webpack_require__.e("vendors-node_modules_axios_index_js-node_modules_vue-material-design-icons_CalendarBlankOutli-1d3065"), __webpack_require__.e("vendors-node_modules_autosize_dist_autosize_esm_js-node_modules_html-entities_lib_index_js-no-4072c5"), __webpack_require__.e("src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790"), __webpack_require__.e("src_fullcalendar_eventSources_eventSourceFunction_js-src_utils_moment_js-data_image_svg_xml_3-b73258"), __webpack_require__.e("src_views_Calendar_vue-data_image_svg_xml_3csvg_20xmlns_27http_www_w3_org_2000_svg_27_20heigh-4a4254")]).then(__webpack_require__.bind(__webpack_require__, /*! ./views/Calendar.vue */ "./src/views/Calendar.vue"));
|
|
const {
|
|
default: store
|
|
} = await Promise.all(/*! import() */[__webpack_require__.e("vendors-node_modules_vue_dist_vue_runtime_esm_js"), __webpack_require__.e("vendors-node_modules_nextcloud_cdav-library_dist_dist_js-node_modules_nextcloud_logger_dist_i-36c16b"), __webpack_require__.e("vendors-node_modules_webdav_dist_web_index_js"), __webpack_require__.e("src_models_rfcProps_js-src_services_caldavService_js-src_services_talkService_js-src_services-8a2790"), __webpack_require__.e("src_store_index_js")]).then(__webpack_require__.bind(__webpack_require__, /*! ./store/index.js */ "./src/store/index.js"));
|
|
Vue.prototype.$t = _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translate;
|
|
Vue.prototype.$n = _nextcloud_l10n__WEBPACK_IMPORTED_MODULE_3__.translatePlural;
|
|
Vue.mixin({
|
|
methods: {
|
|
t,
|
|
n
|
|
}
|
|
});
|
|
const Widget = Vue.extend(Calendar);
|
|
const vueElement = new Widget({
|
|
store,
|
|
propsData: {
|
|
isWidget: true,
|
|
referenceToken: richObject.token
|
|
}
|
|
}).$mount(el);
|
|
return new _nextcloud_vue_dist_Functions_registerReference_js__WEBPACK_IMPORTED_MODULE_0__.NcCustomPickerRenderResult(vueElement.$el, vueElement);
|
|
}, (el, renderResult) => {
|
|
renderResult.object.$destroy();
|
|
}, true);
|
|
})();
|
|
|
|
/******/ })()
|
|
;
|
|
//# sourceMappingURL=calendar-reference.js.map?v=41137bb0b6ba342967a4
|