| @@ -1,3431 +1,4114 @@ | ||
| 1 | -(function(react, react_dom, _elementor_ui, _wordpress_i18n, _elementor_icons, _elementor_ui_DialogHeaderGroup, _elementor_ui_DialogHeader) { | |
| 1 | +/******/ (() => { // webpackBootstrap | |
| 2 | +/******/ var __webpack_modules__ = ({ | |
| 2 | 3 | |
| 3 | -//#region \0rolldown/runtime.js | |
| 4 | - var __create = Object.create; | |
| 5 | - var __defProp = Object.defineProperty; | |
| 6 | - var __name = (target, value) => __defProp(target, "name", { | |
| 7 | - value, | |
| 8 | - configurable: true | |
| 9 | - }); | |
| 10 | - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
| 11 | - var __getOwnPropNames = Object.getOwnPropertyNames; | |
| 12 | - var __getProtoOf = Object.getPrototypeOf; | |
| 13 | - var __hasOwnProp = Object.prototype.hasOwnProperty; | |
| 14 | - var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports); | |
| 15 | - var __copyProps = (to, from, except, desc) => { | |
| 16 | - if (from && typeof from === "object" || typeof from === "function") { | |
| 17 | - for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { | |
| 18 | - key = keys[i]; | |
| 19 | - if (!__hasOwnProp.call(to, key) && key !== except) { | |
| 20 | - __defProp(to, key, { | |
| 21 | - get: ((k) => from[k]).bind(null, key), | |
| 22 | - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable | |
| 23 | - }); | |
| 24 | - } | |
| 25 | - } | |
| 26 | - } | |
| 27 | - return to; | |
| 28 | - }; | |
| 29 | - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { | |
| 30 | - value: mod, | |
| 31 | - enumerable: true | |
| 32 | - }) : target, mod)); | |
| 4 | +/***/ "../assets/dev/js/utils/react.js": | |
| 5 | +/*!***************************************!*\ | |
| 6 | + !*** ../assets/dev/js/utils/react.js ***! | |
| 7 | + \***************************************/ | |
| 8 | +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | |
| 33 | 9 | |
| 34 | -//#endregion | |
| 35 | -react = __toESM(react); | |
| 36 | -react_dom = __toESM(react_dom); | |
| 37 | -_elementor_ui_DialogHeaderGroup = __toESM(_elementor_ui_DialogHeaderGroup); | |
| 38 | -_elementor_ui_DialogHeader = __toESM(_elementor_ui_DialogHeader); | |
| 10 | +"use strict"; | |
| 39 | 11 | |
| 40 | -//#region node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js | |
| 41 | -/** @license React v16.13.1 | |
| 42 | - * react-is.development.js | |
| 43 | - * | |
| 44 | - * Copyright (c) Facebook, Inc. and its affiliates. | |
| 45 | - * | |
| 46 | - * This source code is licensed under the MIT license found in the | |
| 47 | - * LICENSE file in the root directory of this source tree. | |
| 48 | - */ | |
| 49 | - var require_react_is_development = /* @__PURE__ */ __commonJSMin(((exports) => { | |
| 50 | - (function() { | |
| 51 | - "use strict"; | |
| 52 | - var hasSymbol = typeof Symbol === "function" && Symbol.for; | |
| 53 | - var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for("react.element") : 60103; | |
| 54 | - var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for("react.portal") : 60106; | |
| 55 | - var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for("react.fragment") : 60107; | |
| 56 | - var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for("react.strict_mode") : 60108; | |
| 57 | - var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for("react.profiler") : 60114; | |
| 58 | - var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for("react.provider") : 60109; | |
| 59 | - var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for("react.context") : 60110; | |
| 60 | - var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for("react.async_mode") : 60111; | |
| 61 | - var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for("react.concurrent_mode") : 60111; | |
| 62 | - var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for("react.forward_ref") : 60112; | |
| 63 | - var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for("react.suspense") : 60113; | |
| 64 | - var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for("react.suspense_list") : 60120; | |
| 65 | - var REACT_MEMO_TYPE = hasSymbol ? Symbol.for("react.memo") : 60115; | |
| 66 | - var REACT_LAZY_TYPE = hasSymbol ? Symbol.for("react.lazy") : 60116; | |
| 67 | - var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for("react.block") : 60121; | |
| 68 | - var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for("react.fundamental") : 60117; | |
| 69 | - var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118; | |
| 70 | - var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119; | |
| 71 | - function isValidElementType(type) { | |
| 72 | - return typeof type === "string" || typeof type === "function" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); | |
| 73 | - } | |
| 74 | - function typeOf(object) { | |
| 75 | - if (typeof object === "object" && object !== null) { | |
| 76 | - var $$typeof = object.$$typeof; | |
| 77 | - switch ($$typeof) { | |
| 78 | - case REACT_ELEMENT_TYPE: | |
| 79 | - var type = object.type; | |
| 80 | - switch (type) { | |
| 81 | - case REACT_ASYNC_MODE_TYPE: | |
| 82 | - case REACT_CONCURRENT_MODE_TYPE: | |
| 83 | - case REACT_FRAGMENT_TYPE: | |
| 84 | - case REACT_PROFILER_TYPE: | |
| 85 | - case REACT_STRICT_MODE_TYPE: | |
| 86 | - case REACT_SUSPENSE_TYPE: return type; | |
| 87 | - default: | |
| 88 | - var $$typeofType = type && type.$$typeof; | |
| 89 | - switch ($$typeofType) { | |
| 90 | - case REACT_CONTEXT_TYPE: | |
| 91 | - case REACT_FORWARD_REF_TYPE: | |
| 92 | - case REACT_LAZY_TYPE: | |
| 93 | - case REACT_MEMO_TYPE: | |
| 94 | - case REACT_PROVIDER_TYPE: return $$typeofType; | |
| 95 | - default: return $$typeof; | |
| 96 | - } | |
| 97 | - } | |
| 98 | - case REACT_PORTAL_TYPE: return $$typeof; | |
| 99 | - } | |
| 100 | - } | |
| 101 | - } | |
| 102 | - var AsyncMode = REACT_ASYNC_MODE_TYPE; | |
| 103 | - var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; | |
| 104 | - var ContextConsumer = REACT_CONTEXT_TYPE; | |
| 105 | - var ContextProvider = REACT_PROVIDER_TYPE; | |
| 106 | - var Element = REACT_ELEMENT_TYPE; | |
| 107 | - var ForwardRef = REACT_FORWARD_REF_TYPE; | |
| 108 | - var Fragment = REACT_FRAGMENT_TYPE; | |
| 109 | - var Lazy = REACT_LAZY_TYPE; | |
| 110 | - var Memo = REACT_MEMO_TYPE; | |
| 111 | - var Portal = REACT_PORTAL_TYPE; | |
| 112 | - var Profiler = REACT_PROFILER_TYPE; | |
| 113 | - var StrictMode = REACT_STRICT_MODE_TYPE; | |
| 114 | - var Suspense = REACT_SUSPENSE_TYPE; | |
| 115 | - var hasWarnedAboutDeprecatedIsAsyncMode = false; | |
| 116 | - function isAsyncMode(object) { | |
| 117 | - if (!hasWarnedAboutDeprecatedIsAsyncMode) { | |
| 118 | - hasWarnedAboutDeprecatedIsAsyncMode = true; | |
| 119 | - console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API."); | |
| 120 | - } | |
| 121 | - return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; | |
| 122 | - } | |
| 123 | - function isConcurrentMode(object) { | |
| 124 | - return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; | |
| 125 | - } | |
| 126 | - function isContextConsumer(object) { | |
| 127 | - return typeOf(object) === REACT_CONTEXT_TYPE; | |
| 128 | - } | |
| 129 | - function isContextProvider(object) { | |
| 130 | - return typeOf(object) === REACT_PROVIDER_TYPE; | |
| 131 | - } | |
| 132 | - function isElement(object) { | |
| 133 | - return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; | |
| 134 | - } | |
| 135 | - function isForwardRef(object) { | |
| 136 | - return typeOf(object) === REACT_FORWARD_REF_TYPE; | |
| 137 | - } | |
| 138 | - function isFragment(object) { | |
| 139 | - return typeOf(object) === REACT_FRAGMENT_TYPE; | |
| 140 | - } | |
| 141 | - function isLazy(object) { | |
| 142 | - return typeOf(object) === REACT_LAZY_TYPE; | |
| 143 | - } | |
| 144 | - function isMemo(object) { | |
| 145 | - return typeOf(object) === REACT_MEMO_TYPE; | |
| 146 | - } | |
| 147 | - function isPortal(object) { | |
| 148 | - return typeOf(object) === REACT_PORTAL_TYPE; | |
| 149 | - } | |
| 150 | - function isProfiler(object) { | |
| 151 | - return typeOf(object) === REACT_PROFILER_TYPE; | |
| 152 | - } | |
| 153 | - function isStrictMode(object) { | |
| 154 | - return typeOf(object) === REACT_STRICT_MODE_TYPE; | |
| 155 | - } | |
| 156 | - function isSuspense(object) { | |
| 157 | - return typeOf(object) === REACT_SUSPENSE_TYPE; | |
| 158 | - } | |
| 159 | - exports.AsyncMode = AsyncMode; | |
| 160 | - exports.ConcurrentMode = ConcurrentMode; | |
| 161 | - exports.ContextConsumer = ContextConsumer; | |
| 162 | - exports.ContextProvider = ContextProvider; | |
| 163 | - exports.Element = Element; | |
| 164 | - exports.ForwardRef = ForwardRef; | |
| 165 | - exports.Fragment = Fragment; | |
| 166 | - exports.Lazy = Lazy; | |
| 167 | - exports.Memo = Memo; | |
| 168 | - exports.Portal = Portal; | |
| 169 | - exports.Profiler = Profiler; | |
| 170 | - exports.StrictMode = StrictMode; | |
| 171 | - exports.Suspense = Suspense; | |
| 172 | - exports.isAsyncMode = isAsyncMode; | |
| 173 | - exports.isConcurrentMode = isConcurrentMode; | |
| 174 | - exports.isContextConsumer = isContextConsumer; | |
| 175 | - exports.isContextProvider = isContextProvider; | |
| 176 | - exports.isElement = isElement; | |
| 177 | - exports.isForwardRef = isForwardRef; | |
| 178 | - exports.isFragment = isFragment; | |
| 179 | - exports.isLazy = isLazy; | |
| 180 | - exports.isMemo = isMemo; | |
| 181 | - exports.isPortal = isPortal; | |
| 182 | - exports.isProfiler = isProfiler; | |
| 183 | - exports.isStrictMode = isStrictMode; | |
| 184 | - exports.isSuspense = isSuspense; | |
| 185 | - exports.isValidElementType = isValidElementType; | |
| 186 | - exports.typeOf = typeOf; | |
| 187 | - })(); | |
| 188 | - })); | |
| 189 | 12 | |
| 190 | -//#endregion | |
| 191 | -//#region node_modules/prop-types/node_modules/react-is/index.js | |
| 192 | - var require_react_is = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 193 | - module.exports = require_react_is_development(); | |
| 194 | - })); | |
| 13 | +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); | |
| 14 | +Object.defineProperty(exports, "__esModule", ({ | |
| 15 | + value: true | |
| 16 | +})); | |
| 17 | +exports["default"] = void 0; | |
| 18 | +var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); | |
| 19 | +var ReactDOM = _interopRequireWildcard(__webpack_require__(/*! react-dom */ "react-dom")); | |
| 20 | +var _client = __webpack_require__(/*! react-dom/client */ "../node_modules/react-dom/client.js"); | |
| 21 | +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } | |
| 22 | +/** | |
| 23 | + * Support conditional rendering of a React App to the DOM, based on the React version. | |
| 24 | + * We use `createRoot` when available, but fallback to `ReactDOM.render` for older versions. | |
| 25 | + * | |
| 26 | + * @param { React.ReactElement } app The app to render. | |
| 27 | + * @param { HTMLElement } domElement The DOM element to render the app into. | |
| 28 | + * | |
| 29 | + * @return {{ unmount: () => void }} The unmount function. | |
| 30 | + */ | |
| 31 | +function render(app, domElement) { | |
| 32 | + var unmountFunction; | |
| 33 | + try { | |
| 34 | + var root = (0, _client.createRoot)(domElement); | |
| 35 | + root.render(app); | |
| 36 | + unmountFunction = function unmountFunction() { | |
| 37 | + root.unmount(); | |
| 38 | + }; | |
| 39 | + } catch (e) { | |
| 40 | + // eslint-disable-next-line react/no-deprecated | |
| 41 | + ReactDOM.render(app, domElement); | |
| 42 | + unmountFunction = function unmountFunction() { | |
| 43 | + // eslint-disable-next-line react/no-deprecated | |
| 44 | + ReactDOM.unmountComponentAtNode(domElement); | |
| 45 | + }; | |
| 46 | + } | |
| 47 | + return { | |
| 48 | + unmount: unmountFunction | |
| 49 | + }; | |
| 50 | +} | |
| 51 | +var _default = exports["default"] = { | |
| 52 | + render: render | |
| 53 | +}; | |
| 195 | 54 | |
| 196 | -//#endregion | |
| 197 | -//#region node_modules/object-assign/index.js | |
| 198 | -/* | |
| 199 | - object-assign | |
| 200 | - (c) Sindre Sorhus | |
| 201 | - @license MIT | |
| 202 | - */ | |
| 203 | - var require_object_assign = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 204 | - var getOwnPropertySymbols = Object.getOwnPropertySymbols; | |
| 205 | - var hasOwnProperty = Object.prototype.hasOwnProperty; | |
| 206 | - var propIsEnumerable = Object.prototype.propertyIsEnumerable; | |
| 207 | - function toObject(val) { | |
| 208 | - if (val === null || val === void 0) throw new TypeError("Object.assign cannot be called with null or undefined"); | |
| 209 | - return Object(val); | |
| 210 | - } | |
| 211 | - function shouldUseNative() { | |
| 212 | - try { | |
| 213 | - if (!Object.assign) return false; | |
| 214 | - var test1 = /* @__PURE__ */ new String("abc"); | |
| 215 | - test1[5] = "de"; | |
| 216 | - if (Object.getOwnPropertyNames(test1)[0] === "5") return false; | |
| 217 | - var test2 = {}; | |
| 218 | - for (var i = 0; i < 10; i++) test2["_" + String.fromCharCode(i)] = i; | |
| 219 | - if (Object.getOwnPropertyNames(test2).map(function(n) { | |
| 220 | - return test2[n]; | |
| 221 | - }).join("") !== "0123456789") return false; | |
| 222 | - var test3 = {}; | |
| 223 | - "abcdefghijklmnopqrst".split("").forEach(function(letter) { | |
| 224 | - test3[letter] = letter; | |
| 225 | - }); | |
| 226 | - if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") return false; | |
| 227 | - return true; | |
| 228 | - } catch (err) { | |
| 229 | - return false; | |
| 230 | - } | |
| 231 | - } | |
| 232 | - module.exports = shouldUseNative() ? Object.assign : function(target, source) { | |
| 233 | - var from; | |
| 234 | - var to = toObject(target); | |
| 235 | - var symbols; | |
| 236 | - for (var s = 1; s < arguments.length; s++) { | |
| 237 | - from = Object(arguments[s]); | |
| 238 | - for (var key in from) if (hasOwnProperty.call(from, key)) to[key] = from[key]; | |
| 239 | - if (getOwnPropertySymbols) { | |
| 240 | - symbols = getOwnPropertySymbols(from); | |
| 241 | - for (var i = 0; i < symbols.length; i++) if (propIsEnumerable.call(from, symbols[i])) to[symbols[i]] = from[symbols[i]]; | |
| 242 | - } | |
| 243 | - } | |
| 244 | - return to; | |
| 245 | - }; | |
| 246 | - })); | |
| 55 | +/***/ }), | |
| 247 | 56 | |
| 248 | -//#endregion | |
| 249 | -//#region node_modules/prop-types/lib/ReactPropTypesSecret.js | |
| 250 | -/** | |
| 251 | - * Copyright (c) 2013-present, Facebook, Inc. | |
| 252 | - * | |
| 253 | - * This source code is licensed under the MIT license found in the | |
| 254 | - * LICENSE file in the root directory of this source tree. | |
| 255 | - */ | |
| 256 | - var require_ReactPropTypesSecret = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 257 | - var ReactPropTypesSecret = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"; | |
| 258 | - module.exports = ReactPropTypesSecret; | |
| 259 | - })); | |
| 57 | +/***/ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-api.js": | |
| 58 | +/*!********************************************************************!*\ | |
| 59 | + !*** ../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-api.js ***! | |
| 60 | + \********************************************************************/ | |
| 61 | +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | |
| 260 | 62 | |
| 261 | -//#endregion | |
| 262 | -//#region node_modules/prop-types/lib/has.js | |
| 263 | - var require_has = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 264 | - module.exports = Function.call.bind(Object.prototype.hasOwnProperty); | |
| 265 | - })); | |
| 63 | +"use strict"; | |
| 266 | 64 | |
| 267 | -//#endregion | |
| 268 | -//#region node_modules/prop-types/checkPropTypes.js | |
| 269 | -/** | |
| 270 | - * Copyright (c) 2013-present, Facebook, Inc. | |
| 271 | - * | |
| 272 | - * This source code is licensed under the MIT license found in the | |
| 273 | - * LICENSE file in the root directory of this source tree. | |
| 274 | - */ | |
| 275 | - var require_checkPropTypes = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 276 | - var printWarning = function() {}; | |
| 277 | - var ReactPropTypesSecret = require_ReactPropTypesSecret(); | |
| 278 | - var loggedTypeFailures = {}; | |
| 279 | - var has = require_has(); | |
| 280 | - printWarning = function(text) { | |
| 281 | - var message = "Warning: " + text; | |
| 282 | - if (typeof console !== "undefined") console.error(message); | |
| 283 | - try { | |
| 284 | - throw new Error(message); | |
| 285 | - } catch (x) {} | |
| 286 | - }; | |
| 287 | - /** | |
| 288 | - * Assert that the values match with the type specs. | |
| 289 | - * Error messages are memorized and will only be shown once. | |
| 290 | - * | |
| 291 | - * @param {object} typeSpecs Map of name to a ReactPropType | |
| 292 | - * @param {object} values Runtime values that need to be type-checked | |
| 293 | - * @param {string} location e.g. "prop", "context", "child context" | |
| 294 | - * @param {string} componentName Name of the component for error messages. | |
| 295 | - * @param {?Function} getStack Returns the component stack. | |
| 296 | - * @private | |
| 297 | - */ | |
| 298 | - function checkPropTypes(typeSpecs, values, location, componentName, getStack) { | |
| 299 | - for (var typeSpecName in typeSpecs) if (has(typeSpecs, typeSpecName)) { | |
| 300 | - var error; | |
| 301 | - try { | |
| 302 | - if (typeof typeSpecs[typeSpecName] !== "function") { | |
| 303 | - var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); | |
| 304 | - err.name = "Invariant Violation"; | |
| 305 | - throw err; | |
| 306 | - } | |
| 307 | - error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); | |
| 308 | - } catch (ex) { | |
| 309 | - error = ex; | |
| 310 | - } | |
| 311 | - if (error && !(error instanceof Error)) printWarning((componentName || "React class") + ": type specification of " + location + " `" + typeSpecName + "` is invalid; the type checker function must return `null` or an `Error` but returned a " + typeof error + ". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."); | |
| 312 | - if (error instanceof Error && !(error.message in loggedTypeFailures)) { | |
| 313 | - loggedTypeFailures[error.message] = true; | |
| 314 | - var stack = getStack ? getStack() : ""; | |
| 315 | - printWarning("Failed " + location + " type: " + error.message + (stack != null ? stack : "")); | |
| 316 | - } | |
| 317 | - } | |
| 318 | - } | |
| 319 | - /** | |
| 320 | - * Resets warning cache when testing. | |
| 321 | - * | |
| 322 | - * @private | |
| 323 | - */ | |
| 324 | - checkPropTypes.resetWarningCache = function() { | |
| 325 | - loggedTypeFailures = {}; | |
| 326 | - }; | |
| 327 | - module.exports = checkPropTypes; | |
| 328 | - })); | |
| 329 | 65 | |
| 330 | -//#endregion | |
| 331 | -//#region node_modules/prop-types/factoryWithTypeCheckers.js | |
| 332 | -/** | |
| 333 | - * Copyright (c) 2013-present, Facebook, Inc. | |
| 334 | - * | |
| 335 | - * This source code is licensed under the MIT license found in the | |
| 336 | - * LICENSE file in the root directory of this source tree. | |
| 337 | - */ | |
| 338 | - var require_factoryWithTypeCheckers = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 339 | - var ReactIs = require_react_is(); | |
| 340 | - var assign = require_object_assign(); | |
| 341 | - var ReactPropTypesSecret = require_ReactPropTypesSecret(); | |
| 342 | - var has = require_has(); | |
| 343 | - var checkPropTypes = require_checkPropTypes(); | |
| 344 | - var printWarning = function() {}; | |
| 345 | - printWarning = function(text) { | |
| 346 | - var message = "Warning: " + text; | |
| 347 | - if (typeof console !== "undefined") console.error(message); | |
| 348 | - try { | |
| 349 | - throw new Error(message); | |
| 350 | - } catch (x) {} | |
| 351 | - }; | |
| 352 | - function emptyFunctionThatReturnsNull() { | |
| 353 | - return null; | |
| 354 | - } | |
| 355 | - module.exports = function(isValidElement, throwOnDirectAccess) { | |
| 356 | - var ITERATOR_SYMBOL = typeof Symbol === "function" && Symbol.iterator; | |
| 357 | - var FAUX_ITERATOR_SYMBOL = "@@iterator"; | |
| 358 | - /** | |
| 359 | - * Returns the iterator method function contained on the iterable object. | |
| 360 | - * | |
| 361 | - * Be sure to invoke the function with the iterable as context: | |
| 362 | - * | |
| 363 | - * var iteratorFn = getIteratorFn(myIterable); | |
| 364 | - * if (iteratorFn) { | |
| 365 | - * var iterator = iteratorFn.call(myIterable); | |
| 366 | - * ... | |
| 367 | - * } | |
| 368 | - * | |
| 369 | - * @param {?object} maybeIterable | |
| 370 | - * @return {?function} | |
| 371 | - */ | |
| 372 | - function getIteratorFn(maybeIterable) { | |
| 373 | - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); | |
| 374 | - if (typeof iteratorFn === "function") return iteratorFn; | |
| 375 | - } | |
| 376 | - /** | |
| 377 | - * Collection of methods that allow declaration and validation of props that are | |
| 378 | - * supplied to React components. Example usage: | |
| 379 | - * | |
| 380 | - * var Props = require('ReactPropTypes'); | |
| 381 | - * var MyArticle = React.createClass({ | |
| 382 | - * propTypes: { | |
| 383 | - * // An optional string prop named "description". | |
| 384 | - * description: Props.string, | |
| 385 | - * | |
| 386 | - * // A required enum prop named "category". | |
| 387 | - * category: Props.oneOf(['News','Photos']).isRequired, | |
| 388 | - * | |
| 389 | - * // A prop named "dialog" that requires an instance of Dialog. | |
| 390 | - * dialog: Props.instanceOf(Dialog).isRequired | |
| 391 | - * }, | |
| 392 | - * render: function() { ... } | |
| 393 | - * }); | |
| 394 | - * | |
| 395 | - * A more formal specification of how these methods are used: | |
| 396 | - * | |
| 397 | - * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) | |
| 398 | - * decl := ReactPropTypes.{type}(.isRequired)? | |
| 399 | - * | |
| 400 | - * Each and every declaration produces a function with the same signature. This | |
| 401 | - * allows the creation of custom validation functions. For example: | |
| 402 | - * | |
| 403 | - * var MyLink = React.createClass({ | |
| 404 | - * propTypes: { | |
| 405 | - * // An optional string or URI prop named "href". | |
| 406 | - * href: function(props, propName, componentName) { | |
| 407 | - * var propValue = props[propName]; | |
| 408 | - * if (propValue != null && typeof propValue !== 'string' && | |
| 409 | - * !(propValue instanceof URI)) { | |
| 410 | - * return new Error( | |
| 411 | - * 'Expected a string or an URI for ' + propName + ' in ' + | |
| 412 | - * componentName | |
| 413 | - * ); | |
| 414 | - * } | |
| 415 | - * } | |
| 416 | - * }, | |
| 417 | - * render: function() {...} | |
| 418 | - * }); | |
| 419 | - * | |
| 420 | - * @internal | |
| 421 | - */ | |
| 422 | - var ANONYMOUS = "<<anonymous>>"; | |
| 423 | - var ReactPropTypes = { | |
| 424 | - array: createPrimitiveTypeChecker("array"), | |
| 425 | - bigint: createPrimitiveTypeChecker("bigint"), | |
| 426 | - bool: createPrimitiveTypeChecker("boolean"), | |
| 427 | - func: createPrimitiveTypeChecker("function"), | |
| 428 | - number: createPrimitiveTypeChecker("number"), | |
| 429 | - object: createPrimitiveTypeChecker("object"), | |
| 430 | - string: createPrimitiveTypeChecker("string"), | |
| 431 | - symbol: createPrimitiveTypeChecker("symbol"), | |
| 432 | - any: createAnyTypeChecker(), | |
| 433 | - arrayOf: createArrayOfTypeChecker, | |
| 434 | - element: createElementTypeChecker(), | |
| 435 | - elementType: createElementTypeTypeChecker(), | |
| 436 | - instanceOf: createInstanceTypeChecker, | |
| 437 | - node: createNodeChecker(), | |
| 438 | - objectOf: createObjectOfTypeChecker, | |
| 439 | - oneOf: createEnumTypeChecker, | |
| 440 | - oneOfType: createUnionTypeChecker, | |
| 441 | - shape: createShapeTypeChecker, | |
| 442 | - exact: createStrictShapeTypeChecker | |
| 443 | - }; | |
| 444 | - /** | |
| 445 | - * inlined Object.is polyfill to avoid requiring consumers ship their own | |
| 446 | - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is | |
| 447 | - */ | |
| 448 | - function is(x, y) { | |
| 449 | - if (x === y) return x !== 0 || 1 / x === 1 / y; | |
| 450 | - else return x !== x && y !== y; | |
| 451 | - } | |
| 452 | - /** | |
| 453 | - * We use an Error-like object for backward compatibility as people may call | |
| 454 | - * PropTypes directly and inspect their output. However, we don't use real | |
| 455 | - * Errors anymore. We don't inspect their stack anyway, and creating them | |
| 456 | - * is prohibitively expensive if they are created too often, such as what | |
| 457 | - * happens in oneOfType() for any type before the one that matched. | |
| 458 | - */ | |
| 459 | - function PropTypeError(message, data) { | |
| 460 | - this.message = message; | |
| 461 | - this.data = data && typeof data === "object" ? data : {}; | |
| 462 | - this.stack = ""; | |
| 463 | - } | |
| 464 | - PropTypeError.prototype = Error.prototype; | |
| 465 | - function createChainableTypeChecker(validate) { | |
| 466 | - var manualPropTypeCallCache = {}; | |
| 467 | - var manualPropTypeWarningCount = 0; | |
| 468 | - function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { | |
| 469 | - componentName = componentName || ANONYMOUS; | |
| 470 | - propFullName = propFullName || propName; | |
| 471 | - if (secret !== ReactPropTypesSecret) { | |
| 472 | - if (throwOnDirectAccess) { | |
| 473 | - var err = /* @__PURE__ */ new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types"); | |
| 474 | - err.name = "Invariant Violation"; | |
| 475 | - throw err; | |
| 476 | - } else if (typeof console !== "undefined") { | |
| 477 | - var cacheKey = componentName + ":" + propName; | |
| 478 | - if (!manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3) { | |
| 479 | - printWarning("You are manually calling a React.PropTypes validation function for the `" + propFullName + "` prop on `" + componentName + "`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."); | |
| 480 | - manualPropTypeCallCache[cacheKey] = true; | |
| 481 | - manualPropTypeWarningCount++; | |
| 482 | - } | |
| 483 | - } | |
| 484 | - } | |
| 485 | - if (props[propName] == null) { | |
| 486 | - if (isRequired) { | |
| 487 | - if (props[propName] === null) return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required " + ("in `" + componentName + "`, but its value is `null`.")); | |
| 488 | - return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required in " + ("`" + componentName + "`, but its value is `undefined`.")); | |
| 489 | - } | |
| 490 | - return null; | |
| 491 | - } else return validate(props, propName, componentName, location, propFullName); | |
| 492 | - } | |
| 493 | - var chainedCheckType = checkType.bind(null, false); | |
| 494 | - chainedCheckType.isRequired = checkType.bind(null, true); | |
| 495 | - return chainedCheckType; | |
| 496 | - } | |
| 497 | - function createPrimitiveTypeChecker(expectedType) { | |
| 498 | - function validate(props, propName, componentName, location, propFullName, secret) { | |
| 499 | - var propValue = props[propName]; | |
| 500 | - if (getPropType(propValue) !== expectedType) { | |
| 501 | - var preciseType = getPreciseType(propValue); | |
| 502 | - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + preciseType + "` supplied to `" + componentName + "`, expected ") + ("`" + expectedType + "`."), { expectedType }); | |
| 503 | - } | |
| 504 | - return null; | |
| 505 | - } | |
| 506 | - return createChainableTypeChecker(validate); | |
| 507 | - } | |
| 508 | - function createAnyTypeChecker() { | |
| 509 | - return createChainableTypeChecker(emptyFunctionThatReturnsNull); | |
| 510 | - } | |
| 511 | - function createArrayOfTypeChecker(typeChecker) { | |
| 512 | - function validate(props, propName, componentName, location, propFullName) { | |
| 513 | - if (typeof typeChecker !== "function") return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside arrayOf."); | |
| 514 | - var propValue = props[propName]; | |
| 515 | - if (!Array.isArray(propValue)) { | |
| 516 | - var propType = getPropType(propValue); | |
| 517 | - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an array.")); | |
| 518 | - } | |
| 519 | - for (var i = 0; i < propValue.length; i++) { | |
| 520 | - var error = typeChecker(propValue, i, componentName, location, propFullName + "[" + i + "]", ReactPropTypesSecret); | |
| 521 | - if (error instanceof Error) return error; | |
| 522 | - } | |
| 523 | - return null; | |
| 524 | - } | |
| 525 | - return createChainableTypeChecker(validate); | |
| 526 | - } | |
| 527 | - function createElementTypeChecker() { | |
| 528 | - function validate(props, propName, componentName, location, propFullName) { | |
| 529 | - var propValue = props[propName]; | |
| 530 | - if (!isValidElement(propValue)) { | |
| 531 | - var propType = getPropType(propValue); | |
| 532 | - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement.")); | |
| 533 | - } | |
| 534 | - return null; | |
| 535 | - } | |
| 536 | - return createChainableTypeChecker(validate); | |
| 537 | - } | |
| 538 | - function createElementTypeTypeChecker() { | |
| 539 | - function validate(props, propName, componentName, location, propFullName) { | |
| 540 | - var propValue = props[propName]; | |
| 541 | - if (!ReactIs.isValidElementType(propValue)) { | |
| 542 | - var propType = getPropType(propValue); | |
| 543 | - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement type.")); | |
| 544 | - } | |
| 545 | - return null; | |
| 546 | - } | |
| 547 | - return createChainableTypeChecker(validate); | |
| 548 | - } | |
| 549 | - function createInstanceTypeChecker(expectedClass) { | |
| 550 | - function validate(props, propName, componentName, location, propFullName) { | |
| 551 | - if (!(props[propName] instanceof expectedClass)) { | |
| 552 | - var expectedClassName = expectedClass.name || ANONYMOUS; | |
| 553 | - var actualClassName = getClassName(props[propName]); | |
| 554 | - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + actualClassName + "` supplied to `" + componentName + "`, expected ") + ("instance of `" + expectedClassName + "`.")); | |
| 555 | - } | |
| 556 | - return null; | |
| 557 | - } | |
| 558 | - return createChainableTypeChecker(validate); | |
| 559 | - } | |
| 560 | - function createEnumTypeChecker(expectedValues) { | |
| 561 | - if (!Array.isArray(expectedValues)) { | |
| 562 | - if (arguments.length > 1) printWarning("Invalid arguments supplied to oneOf, expected an array, got " + arguments.length + " arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."); | |
| 563 | - else printWarning("Invalid argument supplied to oneOf, expected an array."); | |
| 564 | - return emptyFunctionThatReturnsNull; | |
| 565 | - } | |
| 566 | - function validate(props, propName, componentName, location, propFullName) { | |
| 567 | - var propValue = props[propName]; | |
| 568 | - for (var i = 0; i < expectedValues.length; i++) if (is(propValue, expectedValues[i])) return null; | |
| 569 | - var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { | |
| 570 | - if (getPreciseType(value) === "symbol") return String(value); | |
| 571 | - return value; | |
| 572 | - }); | |
| 573 | - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of value `" + String(propValue) + "` " + ("supplied to `" + componentName + "`, expected one of " + valuesString + ".")); | |
| 574 | - } | |
| 575 | - return createChainableTypeChecker(validate); | |
| 576 | - } | |
| 577 | - function createObjectOfTypeChecker(typeChecker) { | |
| 578 | - function validate(props, propName, componentName, location, propFullName) { | |
| 579 | - if (typeof typeChecker !== "function") return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside objectOf."); | |
| 580 | - var propValue = props[propName]; | |
| 581 | - var propType = getPropType(propValue); | |
| 582 | - if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an object.")); | |
| 583 | - for (var key in propValue) if (has(propValue, key)) { | |
| 584 | - var error = typeChecker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); | |
| 585 | - if (error instanceof Error) return error; | |
| 586 | - } | |
| 587 | - return null; | |
| 588 | - } | |
| 589 | - return createChainableTypeChecker(validate); | |
| 590 | - } | |
| 591 | - function createUnionTypeChecker(arrayOfTypeCheckers) { | |
| 592 | - if (!Array.isArray(arrayOfTypeCheckers)) { | |
| 593 | - printWarning("Invalid argument supplied to oneOfType, expected an instance of array."); | |
| 594 | - return emptyFunctionThatReturnsNull; | |
| 595 | - } | |
| 596 | - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { | |
| 597 | - var checker = arrayOfTypeCheckers[i]; | |
| 598 | - if (typeof checker !== "function") { | |
| 599 | - printWarning("Invalid argument supplied to oneOfType. Expected an array of check functions, but received " + getPostfixForTypeWarning(checker) + " at index " + i + "."); | |
| 600 | - return emptyFunctionThatReturnsNull; | |
| 601 | - } | |
| 602 | - } | |
| 603 | - function validate(props, propName, componentName, location, propFullName) { | |
| 604 | - var expectedTypes = []; | |
| 605 | - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { | |
| 606 | - var checker = arrayOfTypeCheckers[i]; | |
| 607 | - var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); | |
| 608 | - if (checkerResult == null) return null; | |
| 609 | - if (checkerResult.data && has(checkerResult.data, "expectedType")) expectedTypes.push(checkerResult.data.expectedType); | |
| 610 | - } | |
| 611 | - var expectedTypesMessage = expectedTypes.length > 0 ? ", expected one of type [" + expectedTypes.join(", ") + "]" : ""; | |
| 612 | - return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`" + expectedTypesMessage + ".")); | |
| 613 | - } | |
| 614 | - return createChainableTypeChecker(validate); | |
| 615 | - } | |
| 616 | - function createNodeChecker() { | |
| 617 | - function validate(props, propName, componentName, location, propFullName) { | |
| 618 | - if (!isNode(props[propName])) return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`, expected a ReactNode.")); | |
| 619 | - return null; | |
| 620 | - } | |
| 621 | - return createChainableTypeChecker(validate); | |
| 622 | - } | |
| 623 | - function invalidValidatorError(componentName, location, propFullName, key, type) { | |
| 624 | - return new PropTypeError((componentName || "React class") + ": " + location + " type `" + propFullName + "." + key + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + type + "`."); | |
| 625 | - } | |
| 626 | - function createShapeTypeChecker(shapeTypes) { | |
| 627 | - function validate(props, propName, componentName, location, propFullName) { | |
| 628 | - var propValue = props[propName]; | |
| 629 | - var propType = getPropType(propValue); | |
| 630 | - if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); | |
| 631 | - for (var key in shapeTypes) { | |
| 632 | - var checker = shapeTypes[key]; | |
| 633 | - if (typeof checker !== "function") return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); | |
| 634 | - var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); | |
| 635 | - if (error) return error; | |
| 636 | - } | |
| 637 | - return null; | |
| 638 | - } | |
| 639 | - return createChainableTypeChecker(validate); | |
| 640 | - } | |
| 641 | - function createStrictShapeTypeChecker(shapeTypes) { | |
| 642 | - function validate(props, propName, componentName, location, propFullName) { | |
| 643 | - var propValue = props[propName]; | |
| 644 | - var propType = getPropType(propValue); | |
| 645 | - if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); | |
| 646 | - for (var key in assign({}, props[propName], shapeTypes)) { | |
| 647 | - var checker = shapeTypes[key]; | |
| 648 | - if (has(shapeTypes, key) && typeof checker !== "function") return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); | |
| 649 | - if (!checker) return new PropTypeError("Invalid " + location + " `" + propFullName + "` key `" + key + "` supplied to `" + componentName + "`.\nBad object: " + JSON.stringify(props[propName], null, " ") + "\nValid keys: " + JSON.stringify(Object.keys(shapeTypes), null, " ")); | |
| 650 | - var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); | |
| 651 | - if (error) return error; | |
| 652 | - } | |
| 653 | - return null; | |
| 654 | - } | |
| 655 | - return createChainableTypeChecker(validate); | |
| 656 | - } | |
| 657 | - function isNode(propValue) { | |
| 658 | - switch (typeof propValue) { | |
| 659 | - case "number": | |
| 660 | - case "string": | |
| 661 | - case "undefined": return true; | |
| 662 | - case "boolean": return !propValue; | |
| 663 | - case "object": | |
| 664 | - if (Array.isArray(propValue)) return propValue.every(isNode); | |
| 665 | - if (propValue === null || isValidElement(propValue)) return true; | |
| 666 | - var iteratorFn = getIteratorFn(propValue); | |
| 667 | - if (iteratorFn) { | |
| 668 | - var iterator = iteratorFn.call(propValue); | |
| 669 | - var step; | |
| 670 | - if (iteratorFn !== propValue.entries) { | |
| 671 | - while (!(step = iterator.next()).done) if (!isNode(step.value)) return false; | |
| 672 | - } else while (!(step = iterator.next()).done) { | |
| 673 | - var entry = step.value; | |
| 674 | - if (entry) { | |
| 675 | - if (!isNode(entry[1])) return false; | |
| 676 | - } | |
| 677 | - } | |
| 678 | - } else return false; | |
| 679 | - return true; | |
| 680 | - default: return false; | |
| 681 | - } | |
| 682 | - } | |
| 683 | - function isSymbol(propType, propValue) { | |
| 684 | - if (propType === "symbol") return true; | |
| 685 | - if (!propValue) return false; | |
| 686 | - if (propValue["@@toStringTag"] === "Symbol") return true; | |
| 687 | - if (typeof Symbol === "function" && propValue instanceof Symbol) return true; | |
| 688 | - return false; | |
| 689 | - } | |
| 690 | - function getPropType(propValue) { | |
| 691 | - var propType = typeof propValue; | |
| 692 | - if (Array.isArray(propValue)) return "array"; | |
| 693 | - if (propValue instanceof RegExp) return "object"; | |
| 694 | - if (isSymbol(propType, propValue)) return "symbol"; | |
| 695 | - return propType; | |
| 696 | - } | |
| 697 | - function getPreciseType(propValue) { | |
| 698 | - if (typeof propValue === "undefined" || propValue === null) return "" + propValue; | |
| 699 | - var propType = getPropType(propValue); | |
| 700 | - if (propType === "object") { | |
| 701 | - if (propValue instanceof Date) return "date"; | |
| 702 | - else if (propValue instanceof RegExp) return "regexp"; | |
| 703 | - } | |
| 704 | - return propType; | |
| 705 | - } | |
| 706 | - function getPostfixForTypeWarning(value) { | |
| 707 | - var type = getPreciseType(value); | |
| 708 | - switch (type) { | |
| 709 | - case "array": | |
| 710 | - case "object": return "an " + type; | |
| 711 | - case "boolean": | |
| 712 | - case "date": | |
| 713 | - case "regexp": return "a " + type; | |
| 714 | - default: return type; | |
| 715 | - } | |
| 716 | - } | |
| 717 | - function getClassName(propValue) { | |
| 718 | - if (!propValue.constructor || !propValue.constructor.name) return ANONYMOUS; | |
| 719 | - return propValue.constructor.name; | |
| 720 | - } | |
| 721 | - ReactPropTypes.checkPropTypes = checkPropTypes; | |
| 722 | - ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; | |
| 723 | - ReactPropTypes.PropTypes = ReactPropTypes; | |
| 724 | - return ReactPropTypes; | |
| 725 | - }; | |
| 726 | - })); | |
| 66 | +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); | |
| 67 | +Object.defineProperty(exports, "__esModule", ({ | |
| 68 | + value: true | |
| 69 | +})); | |
| 70 | +exports.triggerOptOut = exports.triggerOptIn = void 0; | |
| 71 | +var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js")); | |
| 72 | +var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js")); | |
| 73 | +var triggerOptIn = exports.triggerOptIn = /*#__PURE__*/function () { | |
| 74 | + var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() { | |
| 75 | + return _regenerator.default.wrap(function (_context) { | |
| 76 | + while (1) switch (_context.prev = _context.next) { | |
| 77 | + case 0: | |
| 78 | + return _context.abrupt("return", elementorCommon.ajax.addRequest('editor_v4_opt_in')); | |
| 79 | + case 1: | |
| 80 | + case "end": | |
| 81 | + return _context.stop(); | |
| 82 | + } | |
| 83 | + }, _callee); | |
| 84 | + })); | |
| 85 | + return function triggerOptIn() { | |
| 86 | + return _ref.apply(this, arguments); | |
| 87 | + }; | |
| 88 | +}(); | |
| 89 | +var triggerOptOut = exports.triggerOptOut = /*#__PURE__*/function () { | |
| 90 | + var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() { | |
| 91 | + return _regenerator.default.wrap(function (_context2) { | |
| 92 | + while (1) switch (_context2.prev = _context2.next) { | |
| 93 | + case 0: | |
| 94 | + return _context2.abrupt("return", elementorCommon.ajax.addRequest('editor_v4_opt_out')); | |
| 95 | + case 1: | |
| 96 | + case "end": | |
| 97 | + return _context2.stop(); | |
| 98 | + } | |
| 99 | + }, _callee2); | |
| 100 | + })); | |
| 101 | + return function triggerOptOut() { | |
| 102 | + return _ref2.apply(this, arguments); | |
| 103 | + }; | |
| 104 | +}(); | |
| 727 | 105 | |
| 728 | -//#endregion | |
| 729 | -//#region node_modules/prop-types/index.js | |
| 730 | - var require_prop_types = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 731 | - var ReactIs = require_react_is(); | |
| 732 | - var throwOnDirectAccess = true; | |
| 733 | - module.exports = require_factoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess); | |
| 734 | - })); | |
| 106 | +/***/ }), | |
| 735 | 107 | |
| 736 | -//#endregion | |
| 737 | -//#region node_modules/react-dom/client.js | |
| 738 | - var require_client = /* @__PURE__ */ __commonJSMin(((exports) => { | |
| 739 | - var m = (globalThis.ReactDOM); | |
| 740 | - var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; | |
| 741 | - exports.createRoot = function(c, o) { | |
| 742 | - i.usingClientEntryPoint = true; | |
| 743 | - try { | |
| 744 | - return m.createRoot(c, o); | |
| 745 | - } finally { | |
| 746 | - i.usingClientEntryPoint = false; | |
| 747 | - } | |
| 748 | - }; | |
| 749 | - })); | |
| 108 | +/***/ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-content.js": | |
| 109 | +/*!************************************************************************!*\ | |
| 110 | + !*** ../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-content.js ***! | |
| 111 | + \************************************************************************/ | |
| 112 | +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | |
| 750 | 113 | |
| 751 | -//#endregion | |
| 752 | -//#region assets/dev/js/utils/react.js | |
| 753 | -var import_prop_types = /* @__PURE__ */ __toESM(require_prop_types()); | |
| 754 | - var import_client = require_client(); | |
| 755 | - /** | |
| 756 | - * Support conditional rendering of a React App to the DOM, based on the React version. | |
| 757 | - * We use `createRoot` when available, but fallback to `ReactDOM.render` for older versions. | |
| 758 | - * | |
| 759 | - * @param {Promise.resolve(React).ReactElement} app The app to render. | |
| 760 | - * @param {HTMLElement} domElement The DOM element to render the app into. | |
| 761 | - * | |
| 762 | - * @return {{ unmount: () => void }} The unmount function. | |
| 763 | - */ | |
| 764 | - function render(app, domElement) { | |
| 765 | - var unmountFunction; | |
| 766 | - try { | |
| 767 | - var root = (0, import_client.createRoot)(domElement); | |
| 768 | - root.render(app); | |
| 769 | - unmountFunction = function unmountFunction() { | |
| 770 | - root.unmount(); | |
| 771 | - }; | |
| 772 | - } catch (e) { | |
| 773 | - react_dom.render(app, domElement); | |
| 774 | - unmountFunction = function unmountFunction() { | |
| 775 | - react_dom.unmountComponentAtNode(domElement); | |
| 776 | - }; | |
| 777 | - } | |
| 778 | - return { unmount: unmountFunction }; | |
| 779 | - } | |
| 780 | - var react_default = { render }; | |
| 114 | +"use strict"; | |
| 115 | +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); | |
| 781 | 116 | |
| 782 | -//#endregion | |
| 783 | -//#region node_modules/@babel/runtime/helpers/esm/typeof.js | |
| 784 | - function _typeof(o) { | |
| 785 | - "@babel/helpers - typeof"; | |
| 786 | - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { | |
| 787 | - return typeof o; | |
| 788 | - } : function(o) { | |
| 789 | - return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; | |
| 790 | - }, _typeof(o); | |
| 791 | - } | |
| 792 | 117 | |
| 793 | -//#endregion | |
| 794 | -//#region node_modules/@babel/runtime/helpers/esm/toPrimitive.js | |
| 795 | - function toPrimitive(t, r) { | |
| 796 | - if ("object" != _typeof(t) || !t) return t; | |
| 797 | - var e = t[Symbol.toPrimitive]; | |
| 798 | - if (void 0 !== e) { | |
| 799 | - var i = e.call(t, r || "default"); | |
| 800 | - if ("object" != _typeof(i)) return i; | |
| 801 | - throw new TypeError("@@toPrimitive must return a primitive value."); | |
| 802 | - } | |
| 803 | - return ("string" === r ? String : Number)(t); | |
| 804 | - } | |
| 118 | +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); | |
| 119 | +Object.defineProperty(exports, "__esModule", ({ | |
| 120 | + value: true | |
| 121 | +})); | |
| 122 | +exports.TextNode = exports.ContentListItem = exports.ContentList = exports.AdvantagesListItem = exports.AdvantagesList = void 0; | |
| 123 | +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); | |
| 124 | +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); | |
| 125 | +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); | |
| 126 | +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); | |
| 127 | +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); | |
| 128 | +var _excluded = ["children"], | |
| 129 | + _excluded2 = ["children"], | |
| 130 | + _excluded3 = ["children"], | |
| 131 | + _excluded4 = ["children"], | |
| 132 | + _excluded5 = ["children"]; | |
| 133 | +var TextNode = exports.TextNode = function TextNode(_ref) { | |
| 134 | + var children = _ref.children, | |
| 135 | + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); | |
| 136 | + return /*#__PURE__*/_react.default.createElement(_ui.Typography, (0, _extends2.default)({ | |
| 137 | + color: "text.primary" | |
| 138 | + }, props), children); | |
| 139 | +}; | |
| 140 | +TextNode.propTypes = { | |
| 141 | + children: PropTypes.node | |
| 142 | +}; | |
| 143 | +var ContentList = exports.ContentList = function ContentList(_ref2) { | |
| 144 | + var children = _ref2.children, | |
| 145 | + props = (0, _objectWithoutProperties2.default)(_ref2, _excluded2); | |
| 146 | + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ | |
| 147 | + component: "ul", | |
| 148 | + sx: { | |
| 149 | + my: 0 | |
| 150 | + } | |
| 151 | + }, props), children); | |
| 152 | +}; | |
| 153 | +ContentList.propTypes = { | |
| 154 | + children: PropTypes.node | |
| 155 | +}; | |
| 156 | +var ContentListItem = exports.ContentListItem = function ContentListItem(_ref3) { | |
| 157 | + var children = _ref3.children, | |
| 158 | + props = (0, _objectWithoutProperties2.default)(_ref3, _excluded3); | |
| 159 | + return /*#__PURE__*/_react.default.createElement(TextNode, (0, _extends2.default)({ | |
| 160 | + component: "li", | |
| 161 | + sx: { | |
| 162 | + listStyle: 'disc', | |
| 163 | + marginInlineStart: 3 | |
| 164 | + } | |
| 165 | + }, props), children); | |
| 166 | +}; | |
| 167 | +ContentListItem.propTypes = { | |
| 168 | + children: PropTypes.node | |
| 169 | +}; | |
| 170 | +var AdvantagesList = exports.AdvantagesList = function AdvantagesList(_ref4) { | |
| 171 | + var children = _ref4.children, | |
| 172 | + props = (0, _objectWithoutProperties2.default)(_ref4, _excluded4); | |
| 173 | + return /*#__PURE__*/_react.default.createElement(_ui.Box, (0, _extends2.default)({ | |
| 174 | + component: "ul", | |
| 175 | + sx: { | |
| 176 | + display: 'flex', | |
| 177 | + flexDirection: 'column', | |
| 178 | + gap: 0.5, | |
| 179 | + my: 0 | |
| 180 | + } | |
| 181 | + }, props), children); | |
| 182 | +}; | |
| 183 | +AdvantagesList.propTypes = { | |
| 184 | + children: PropTypes.node | |
| 185 | +}; | |
| 186 | +var AdvantagesListItem = exports.AdvantagesListItem = function AdvantagesListItem(_ref5) { | |
| 187 | + var children = _ref5.children, | |
| 188 | + props = (0, _objectWithoutProperties2.default)(_ref5, _excluded5); | |
| 189 | + return /*#__PURE__*/_react.default.createElement(TextNode, (0, _extends2.default)({ | |
| 190 | + component: "li", | |
| 191 | + sx: { | |
| 192 | + listStyle: 'none', | |
| 193 | + marginInlineStart: 0, | |
| 194 | + lineHeight: '150%', | |
| 195 | + display: 'flex', | |
| 196 | + alignItems: 'flex-start', | |
| 197 | + gap: 0.5 | |
| 198 | + } | |
| 199 | + }, props), /*#__PURE__*/_react.default.createElement(_icons.CheckIcon, { | |
| 200 | + fontSize: "small" | |
| 201 | + }), children); | |
| 202 | +}; | |
| 203 | +AdvantagesListItem.propTypes = { | |
| 204 | + children: PropTypes.node | |
| 205 | +}; | |
| 805 | 206 | |
| 806 | -//#endregion | |
| 807 | -//#region node_modules/@babel/runtime/helpers/esm/toPropertyKey.js | |
| 808 | - function toPropertyKey(t) { | |
| 809 | - var i = toPrimitive(t, "string"); | |
| 810 | - return "symbol" == _typeof(i) ? i : i + ""; | |
| 811 | - } | |
| 207 | +/***/ }), | |
| 812 | 208 | |
| 813 | -//#endregion | |
| 814 | -//#region node_modules/@babel/runtime/helpers/esm/defineProperty.js | |
| 815 | - function _defineProperty(e, r, t) { | |
| 816 | - return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { | |
| 817 | - value: t, | |
| 818 | - enumerable: !0, | |
| 819 | - configurable: !0, | |
| 820 | - writable: !0 | |
| 821 | - }) : e[r] = t, e; | |
| 822 | - } | |
| 209 | +/***/ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-img-placeholders.js": | |
| 210 | +/*!*********************************************************************************!*\ | |
| 211 | + !*** ../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-img-placeholders.js ***! | |
| 212 | + \*********************************************************************************/ | |
| 213 | +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | |
| 823 | 214 | |
| 824 | -//#endregion | |
| 825 | -//#region node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js | |
| 826 | - function _arrayWithHoles(r) { | |
| 827 | - if (Array.isArray(r)) return r; | |
| 828 | - } | |
| 215 | +"use strict"; | |
| 829 | 216 | |
| 830 | -//#endregion | |
| 831 | -//#region node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js | |
| 832 | - function _iterableToArrayLimit(r, l) { | |
| 833 | - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; | |
| 834 | - if (null != t) { | |
| 835 | - var e; | |
| 836 | - var n; | |
| 837 | - var i; | |
| 838 | - var u; | |
| 839 | - var a = []; | |
| 840 | - var f = !0; | |
| 841 | - var o = !1; | |
| 842 | - try { | |
| 843 | - if (i = (t = t.call(r)).next, 0 === l) { | |
| 844 | - if (Object(t) !== t) return; | |
| 845 | - f = !1; | |
| 846 | - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); | |
| 847 | - } catch (r) { | |
| 848 | - o = !0, n = r; | |
| 849 | - } finally { | |
| 850 | - try { | |
| 851 | - if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; | |
| 852 | - } finally { | |
| 853 | - if (o) throw n; | |
| 854 | - } | |
| 855 | - } | |
| 856 | - return a; | |
| 857 | - } | |
| 858 | - } | |
| 859 | 217 | |
| 860 | -//#endregion | |
| 861 | -//#region node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js | |
| 862 | - function _arrayLikeToArray(r, a) { | |
| 863 | - (null == a || a > r.length) && (a = r.length); | |
| 864 | - for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; | |
| 865 | - return n; | |
| 866 | - } | |
| 218 | +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); | |
| 219 | +Object.defineProperty(exports, "__esModule", ({ | |
| 220 | + value: true | |
| 221 | +})); | |
| 222 | +exports.ImageSquarePlaceholder = exports.ImageLandscapePlaceholder = void 0; | |
| 223 | +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); | |
| 224 | +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); | |
| 225 | +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); | |
| 226 | +var ImageLandscapePlaceholder = exports.ImageLandscapePlaceholder = function ImageLandscapePlaceholder(props) { | |
| 227 | + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ | |
| 228 | + viewBox: "0 0 600 260" | |
| 229 | + }, props), /*#__PURE__*/_react.default.createElement("rect", { | |
| 230 | + x: "0", | |
| 231 | + y: "0", | |
| 232 | + width: "600", | |
| 233 | + height: "260", | |
| 234 | + fill: "#d9d9d9" | |
| 235 | + })); | |
| 236 | +}; | |
| 237 | +var ImageSquarePlaceholder = exports.ImageSquarePlaceholder = function ImageSquarePlaceholder(props) { | |
| 238 | + return /*#__PURE__*/_react.default.createElement(_ui.SvgIcon, (0, _extends2.default)({ | |
| 239 | + viewBox: "0 0 500 500" | |
| 240 | + }, props), /*#__PURE__*/_react.default.createElement("rect", { | |
| 241 | + x: "0", | |
| 242 | + y: "0", | |
| 243 | + width: "500", | |
| 244 | + height: "500", | |
| 245 | + fill: "#d9d9d9" | |
| 246 | + })); | |
| 247 | +}; | |
| 867 | 248 | |
| 868 | -//#endregion | |
| 869 | -//#region node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js | |
| 870 | - function _unsupportedIterableToArray(r, a) { | |
| 871 | - if (r) { | |
| 872 | - if ("string" == typeof r) return _arrayLikeToArray(r, a); | |
| 873 | - var t = {}.toString.call(r).slice(8, -1); | |
| 874 | - return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; | |
| 875 | - } | |
| 876 | - } | |
| 249 | +/***/ }), | |
| 877 | 250 | |
| 878 | -//#endregion | |
| 879 | -//#region node_modules/@babel/runtime/helpers/esm/nonIterableRest.js | |
| 880 | - function _nonIterableRest() { | |
| 881 | - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); | |
| 882 | - } | |
| 251 | +/***/ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-message.js": | |
| 252 | +/*!************************************************************************!*\ | |
| 253 | + !*** ../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-message.js ***! | |
| 254 | + \************************************************************************/ | |
| 255 | +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | |
| 883 | 256 | |
| 884 | -//#endregion | |
| 885 | -//#region node_modules/@babel/runtime/helpers/esm/slicedToArray.js | |
| 886 | - function _slicedToArray(r, e) { | |
| 887 | - return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); | |
| 888 | - } | |
| 257 | +"use strict"; | |
| 258 | +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); | |
| 889 | 259 | |
| 890 | -//#endregion | |
| 891 | -//#region node_modules/@babel/runtime/helpers/esm/extends.js | |
| 892 | - function _extends() { | |
| 893 | - return _extends = Object.assign ? Object.assign.bind() : function(n) { | |
| 894 | - for (var e = 1; e < arguments.length; e++) { | |
| 895 | - var t = arguments[e]; | |
| 896 | - for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); | |
| 897 | - } | |
| 898 | - return n; | |
| 899 | - }, _extends.apply(null, arguments); | |
| 900 | - } | |
| 901 | 260 | |
| 902 | -//#endregion | |
| 903 | -//#region node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js | |
| 904 | - function _objectWithoutPropertiesLoose(r, e) { | |
| 905 | - if (null == r) return {}; | |
| 906 | - var t = {}; | |
| 907 | - for (var n in r) if ({}.hasOwnProperty.call(r, n)) { | |
| 908 | - if (-1 !== e.indexOf(n)) continue; | |
| 909 | - t[n] = r[n]; | |
| 910 | - } | |
| 911 | - return t; | |
| 912 | - } | |
| 261 | +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); | |
| 262 | +Object.defineProperty(exports, "__esModule", ({ | |
| 263 | + value: true | |
| 264 | +})); | |
| 265 | +exports.Message = void 0; | |
| 266 | +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); | |
| 267 | +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); | |
| 268 | +var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons"); | |
| 269 | +var Message = exports.Message = function Message(_ref) { | |
| 270 | + var action = _ref.action, | |
| 271 | + children = _ref.children, | |
| 272 | + _ref$severity = _ref.severity, | |
| 273 | + severity = _ref$severity === void 0 ? 'message' : _ref$severity, | |
| 274 | + onClose = _ref.onClose; | |
| 275 | + return /*#__PURE__*/_react.default.createElement(_ui.Snackbar, { | |
| 276 | + open: true, | |
| 277 | + autoHideDuration: 4000, | |
| 278 | + anchorOrigin: { | |
| 279 | + vertical: 'bottom', | |
| 280 | + horizontal: 'right' | |
| 281 | + }, | |
| 282 | + onClose: onClose | |
| 283 | + }, 'message' !== severity ? /*#__PURE__*/_react.default.createElement(_ui.Alert, { | |
| 284 | + variant: "filled", | |
| 285 | + severity: severity, | |
| 286 | + onClose: onClose | |
| 287 | + }, children) : /*#__PURE__*/_react.default.createElement(_ui.SnackbarContent, { | |
| 288 | + message: /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 289 | + direction: "row", | |
| 290 | + gap: 1.5, | |
| 291 | + alignItems: "center" | |
| 292 | + }, /*#__PURE__*/_react.default.createElement(_icons.CircleCheckFilledIcon, null), children), | |
| 293 | + action: /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 294 | + direction: "row", | |
| 295 | + spacing: 1, | |
| 296 | + alignItems: "center" | |
| 297 | + }, action, /*#__PURE__*/_react.default.createElement(_ui.IconButton, { | |
| 298 | + color: "inherit", | |
| 299 | + size: "small", | |
| 300 | + onClick: onClose | |
| 301 | + }, /*#__PURE__*/_react.default.createElement(_icons.XIcon, { | |
| 302 | + fontSize: "small" | |
| 303 | + }))) | |
| 304 | + })); | |
| 305 | +}; | |
| 306 | +Message.propTypes = { | |
| 307 | + action: PropTypes.node, | |
| 308 | + children: PropTypes.node, | |
| 309 | + severity: PropTypes.oneOf(['message', 'success', 'warning', 'error']), | |
| 310 | + onClose: PropTypes.func | |
| 311 | +}; | |
| 913 | 312 | |
| 914 | -//#endregion | |
| 915 | -//#region node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js | |
| 916 | - function _objectWithoutProperties(e, t) { | |
| 917 | - if (null == e) return {}; | |
| 918 | - var o; | |
| 919 | - var r; | |
| 920 | - var i = _objectWithoutPropertiesLoose(e, t); | |
| 921 | - if (Object.getOwnPropertySymbols) { | |
| 922 | - var n = Object.getOwnPropertySymbols(e); | |
| 923 | - for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); | |
| 924 | - } | |
| 925 | - return i; | |
| 926 | - } | |
| 313 | +/***/ }), | |
| 927 | 314 | |
| 928 | -//#endregion | |
| 929 | -//#region modules/atomic-opt-in/assets/js/opt-in-page/opt-in-content.js | |
| 930 | - var _excluded$1 = ["children"]; | |
| 931 | - var _excluded2 = ["children"]; | |
| 932 | - var _excluded3 = ["children"]; | |
| 933 | - var _excluded4 = ["children"]; | |
| 934 | - var _excluded5 = ["children"]; | |
| 935 | - var TextNode = function TextNode(_ref) { | |
| 936 | - var children = _ref.children; | |
| 937 | - var props = _objectWithoutProperties(_ref, _excluded$1); | |
| 938 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, _extends({ color: "text.primary" }, props), children); | |
| 939 | - }; | |
| 940 | - TextNode.propTypes = { children: import_prop_types.default.node }; | |
| 941 | - var ContentList = function ContentList(_ref2) { | |
| 942 | - var children = _ref2.children; | |
| 943 | - var props = _objectWithoutProperties(_ref2, _excluded2); | |
| 944 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, _extends({ | |
| 945 | - component: "ul", | |
| 946 | - sx: { listStyle: "disc" } | |
| 947 | - }, props), children); | |
| 948 | - }; | |
| 949 | - ContentList.propTypes = { children: import_prop_types.default.node }; | |
| 950 | - var ContentListItem = function ContentListItem(_ref3) { | |
| 951 | - var children = _ref3.children; | |
| 952 | - var props = _objectWithoutProperties(_ref3, _excluded3); | |
| 953 | - return /*#__PURE__*/ react.default.createElement(TextNode, _extends({ component: "li" }, props), children); | |
| 954 | - }; | |
| 955 | - ContentListItem.propTypes = { children: import_prop_types.default.node }; | |
| 956 | - var AdvantagesList = function AdvantagesList(_ref4) { | |
| 957 | - var children = _ref4.children; | |
| 958 | - var props = _objectWithoutProperties(_ref4, _excluded4); | |
| 959 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, _extends({ | |
| 960 | - component: "ul", | |
| 961 | - sx: { marginInlineStart: 2 } | |
| 962 | - }, props), children); | |
| 963 | - }; | |
| 964 | - AdvantagesList.propTypes = { children: import_prop_types.default.node }; | |
| 965 | - var AdvantagesListItem = function AdvantagesListItem(_ref5) { | |
| 966 | - var children = _ref5.children; | |
| 967 | - var props = _objectWithoutProperties(_ref5, _excluded5); | |
| 968 | - return /*#__PURE__*/ react.default.createElement(TextNode, _extends({ | |
| 969 | - component: "li", | |
| 970 | - sx: { | |
| 971 | - lineHeight: "150%", | |
| 972 | - listStyle: "disc" | |
| 973 | - } | |
| 974 | - }, props), children); | |
| 975 | - }; | |
| 976 | - AdvantagesListItem.propTypes = { children: import_prop_types.default.node }; | |
| 315 | +/***/ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-terms.js": | |
| 316 | +/*!**********************************************************************!*\ | |
| 317 | + !*** ../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-terms.js ***! | |
| 318 | + \**********************************************************************/ | |
| 319 | +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | |
| 977 | 320 | |
| 978 | -//#endregion | |
| 979 | -//#region modules/atomic-opt-in/assets/js/opt-in-page/opt-in-img-placeholders.js | |
| 980 | - var ImageLandscapePlaceholder = function ImageLandscapePlaceholder(props) { | |
| 981 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.SvgIcon, _extends({ viewBox: "0 0 600 260" }, props), /*#__PURE__*/ react.default.createElement("rect", { | |
| 982 | - x: "0", | |
| 983 | - y: "0", | |
| 984 | - width: "600", | |
| 985 | - height: "260", | |
| 986 | - fill: "#d9d9d9" | |
| 987 | - })); | |
| 988 | - }; | |
| 989 | - var ImageSquarePlaceholder = function ImageSquarePlaceholder(props) { | |
| 990 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.SvgIcon, _extends({ viewBox: "0 0 500 500" }, props), /*#__PURE__*/ react.default.createElement("rect", { | |
| 991 | - x: "0", | |
| 992 | - y: "0", | |
| 993 | - width: "500", | |
| 994 | - height: "500", | |
| 995 | - fill: "#d9d9d9" | |
| 996 | - })); | |
| 997 | - }; | |
| 321 | +"use strict"; | |
| 322 | +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); | |
| 998 | 323 | |
| 999 | -//#endregion | |
| 1000 | -//#region modules/atomic-opt-in/assets/js/opt-in-page/opt-in-message.js | |
| 1001 | - var Message = function Message(_ref) { | |
| 1002 | - var action = _ref.action; | |
| 1003 | - var children = _ref.children; | |
| 1004 | - var _ref$severity = _ref.severity; | |
| 1005 | - var severity = _ref$severity === void 0 ? "message" : _ref$severity; | |
| 1006 | - var onClose = _ref.onClose; | |
| 1007 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.Snackbar, { | |
| 1008 | - open: true, | |
| 1009 | - autoHideDuration: 4e3, | |
| 1010 | - anchorOrigin: { | |
| 1011 | - vertical: "bottom", | |
| 1012 | - horizontal: "center" | |
| 1013 | - }, | |
| 1014 | - onClose | |
| 1015 | - }, "message" !== severity ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Alert, { | |
| 1016 | - variant: "filled", | |
| 1017 | - severity, | |
| 1018 | - onClose | |
| 1019 | - }, children) : /*#__PURE__*/ react.default.createElement(_elementor_ui.SnackbarContent, { | |
| 1020 | - message: /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { | |
| 1021 | - direction: "row", | |
| 1022 | - gap: 1.5, | |
| 1023 | - alignItems: "center" | |
| 1024 | - }, /*#__PURE__*/ react.default.createElement(_elementor_icons.CircleCheckFilledIcon, null), children), | |
| 1025 | - action: /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { | |
| 1026 | - direction: "row", | |
| 1027 | - spacing: 1, | |
| 1028 | - alignItems: "center" | |
| 1029 | - }, action, /*#__PURE__*/ react.default.createElement(_elementor_ui.IconButton, { | |
| 1030 | - color: "inherit", | |
| 1031 | - size: "small", | |
| 1032 | - onClick: onClose | |
| 1033 | - }, /*#__PURE__*/ react.default.createElement(_elementor_icons.XIcon, { fontSize: "small" }))) | |
| 1034 | - })); | |
| 1035 | - }; | |
| 1036 | - Message.propTypes = { | |
| 1037 | - action: import_prop_types.default.node, | |
| 1038 | - children: import_prop_types.default.node, | |
| 1039 | - severity: import_prop_types.default.oneOf([ | |
| 1040 | - "message", | |
| 1041 | - "success", | |
| 1042 | - "warning", | |
| 1043 | - "error" | |
| 1044 | - ]), | |
| 1045 | - onClose: import_prop_types.default.func | |
| 1046 | - }; | |
| 1047 | 324 | |
| 1048 | -//#endregion | |
| 1049 | -//#region node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js | |
| 1050 | - function asyncGeneratorStep(n, t, e, r, o, a, c) { | |
| 1051 | - try { | |
| 1052 | - var i = n[a](c); | |
| 1053 | - var u = i.value; | |
| 1054 | - } catch (n) { | |
| 1055 | - e(n); | |
| 1056 | - return; | |
| 1057 | - } | |
| 1058 | - i.done ? t(u) : Promise.resolve(u).then(r, o); | |
| 1059 | - } | |
| 1060 | - function _asyncToGenerator(n) { | |
| 1061 | - return function() { | |
| 1062 | - var t = this; | |
| 1063 | - var e = arguments; | |
| 1064 | - return new Promise(function(r, o) { | |
| 1065 | - var a = n.apply(t, e); | |
| 1066 | - function _next(n) { | |
| 1067 | - asyncGeneratorStep(a, r, o, _next, _throw, "next", n); | |
| 1068 | - } | |
| 1069 | - function _throw(n) { | |
| 1070 | - asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); | |
| 1071 | - } | |
| 1072 | - _next(void 0); | |
| 1073 | - }); | |
| 1074 | - }; | |
| 1075 | - } | |
| 325 | +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); | |
| 326 | +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); | |
| 327 | +Object.defineProperty(exports, "__esModule", ({ | |
| 328 | + value: true | |
| 329 | +})); | |
| 330 | +exports.Terms = void 0; | |
| 331 | +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); | |
| 332 | +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); | |
| 333 | +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); | |
| 334 | +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); | |
| 335 | +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); | |
| 336 | +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); | |
| 337 | +var _optInContent = __webpack_require__(/*! ./opt-in-content */ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-content.js"); | |
| 338 | +var _DialogHeaderGroup = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogHeaderGroup */ "@elementor/ui/DialogHeaderGroup")); | |
| 339 | +var _DialogHeader = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogHeader */ "@elementor/ui/DialogHeader")); | |
| 340 | +var _excluded = ["onClose", "onSubmit", "isEnrolled"]; | |
| 341 | +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } | |
| 342 | +var i18n = { | |
| 343 | + header: (0, _i18n.__)('Version 4', 'elementor'), | |
| 344 | + chip: (0, _i18n.__)('Beta', 'elementor'), | |
| 345 | + checkboxText: (0, _i18n.__)('I’ve read and understood.', 'elementor'), | |
| 346 | + optIn: { | |
| 347 | + titleText: (0, _i18n.__)('You are about to enable version 4 features!', 'elementor'), | |
| 348 | + introText: (0, _i18n.__)('By activating, you’ll get early access to the next generation of Elementor’s Editor. This is your chance to explore new capabilities and help shape the future of Elementor! ', 'elementor'), | |
| 349 | + notesHeader: (0, _i18n.__)(' Important notes:', 'elementor'), | |
| 350 | + notes: { | |
| 351 | + details: [(0, _i18n.__)('Features are still in development, but the beta is safe to use in production.', 'elementor'), (0, _i18n.__)('When you activate, you’ll also be activating Containers and Nested Elements. You can turn them back off by going to: WP Admin > Elementor > Settings > Features.', 'elementor')] | |
| 352 | + }, | |
| 353 | + activateButton: (0, _i18n.__)('Activate', 'elementor'), | |
| 354 | + cancelButton: (0, _i18n.__)('Cancel', 'elementor') | |
| 355 | + }, | |
| 356 | + optOut: { | |
| 357 | + titleText: (0, _i18n.__)('You\'re about to lose all content created with version 4', 'elementor'), | |
| 358 | + notes: { | |
| 359 | + details: [(0, _i18n.__)('By deactivating, you’ll lose all Atomic Elements, Classes and Variables. Any content you created with these features will no longer be available or appear on your site.', 'elementor'), (0, _i18n.__)('Containers and Nested Elements will stay in their current status.', 'elementor')] | |
| 360 | + }, | |
| 361 | + activateButton: (0, _i18n.__)('Deactivate', 'elementor'), | |
| 362 | + cancelButton: (0, _i18n.__)('Cancel', 'elementor') | |
| 363 | + } | |
| 364 | +}; | |
| 365 | +var Terms = exports.Terms = function Terms(_ref) { | |
| 366 | + var onClose = _ref.onClose, | |
| 367 | + onSubmit = _ref.onSubmit, | |
| 368 | + isEnrolled = _ref.isEnrolled, | |
| 369 | + props = (0, _objectWithoutProperties2.default)(_ref, _excluded); | |
| 370 | + var _useState = (0, _react.useState)(false), | |
| 371 | + _useState2 = (0, _slicedToArray2.default)(_useState, 2), | |
| 372 | + checked = _useState2[0], | |
| 373 | + setChecked = _useState2[1]; | |
| 374 | + var handleCheckboxChange = function handleCheckboxChange() { | |
| 375 | + setChecked(function (prev) { | |
| 376 | + return !prev; | |
| 377 | + }); | |
| 378 | + }; | |
| 379 | + var handleSubmit = function handleSubmit() { | |
| 380 | + if (checked) { | |
| 381 | + onSubmit(); | |
| 382 | + } | |
| 383 | + }; | |
| 384 | + var currentState = isEnrolled ? 'optOut' : 'optIn'; | |
| 385 | + return /*#__PURE__*/_react.default.createElement(_ui.Dialog, (0, _extends2.default)({}, props, { | |
| 386 | + open: true, | |
| 387 | + onClose: onClose | |
| 388 | + }), /*#__PURE__*/_react.default.createElement(_DialogHeader.default, null, /*#__PURE__*/_react.default.createElement(_DialogHeaderGroup.default, null, /*#__PURE__*/_react.default.createElement(_ui.DialogTitle, null, i18n.header), /*#__PURE__*/_react.default.createElement(_ui.Chip, { | |
| 389 | + label: i18n.chip, | |
| 390 | + color: "secondary", | |
| 391 | + variant: "filled", | |
| 392 | + size: "small" | |
| 393 | + }))), /*#__PURE__*/_react.default.createElement(_ui.DialogContent, { | |
| 394 | + dividers: true | |
| 395 | + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 396 | + gap: 2.5 | |
| 397 | + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 398 | + gap: 1 | |
| 399 | + }, /*#__PURE__*/_react.default.createElement(_optInContent.TextNode, { | |
| 400 | + align: "center", | |
| 401 | + variant: "h6" | |
| 402 | + }, i18n[currentState].titleText), /*#__PURE__*/_react.default.createElement(_optInContent.TextNode, { | |
| 403 | + align: "center", | |
| 404 | + variant: "body2" | |
| 405 | + }, i18n[currentState].introText)), /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 406 | + gap: 1 | |
| 407 | + }, /*#__PURE__*/_react.default.createElement(_optInContent.TextNode, { | |
| 408 | + variant: "body2" | |
| 409 | + }, i18n[currentState].notesHeader), /*#__PURE__*/_react.default.createElement(_optInContent.ContentList, null, /*#__PURE__*/_react.default.createElement(_optInContent.ContentListItem, { | |
| 410 | + variant: "body2" | |
| 411 | + }, i18n[currentState].notes.details[0]), i18n[currentState].notes.details.slice(1).map(function (entry, index) { | |
| 412 | + return /*#__PURE__*/_react.default.createElement(_optInContent.ContentListItem, { | |
| 413 | + key: index, | |
| 414 | + variant: "body2" | |
| 415 | + }, entry); | |
| 416 | + }))), /*#__PURE__*/_react.default.createElement(_ui.FormControlLabel, { | |
| 417 | + control: /*#__PURE__*/_react.default.createElement(_ui.Checkbox, { | |
| 418 | + checked: !!checked, | |
| 419 | + onChange: handleCheckboxChange, | |
| 420 | + color: "secondary", | |
| 421 | + size: "small" | |
| 422 | + }), | |
| 423 | + label: /*#__PURE__*/_react.default.createElement(_optInContent.TextNode, { | |
| 424 | + variant: "body2" | |
| 425 | + }, i18n.checkboxText) | |
| 426 | + }))), /*#__PURE__*/_react.default.createElement(_ui.DialogActions, null, /*#__PURE__*/_react.default.createElement(_ui.Button, { | |
| 427 | + variant: "text", | |
| 428 | + color: "secondary", | |
| 429 | + onClick: onClose | |
| 430 | + }, i18n[currentState].cancelButton), /*#__PURE__*/_react.default.createElement(_ui.Button, { | |
| 431 | + disabled: !checked, | |
| 432 | + variant: "contained", | |
| 433 | + onClick: handleSubmit | |
| 434 | + }, i18n[currentState].activateButton))); | |
| 435 | +}; | |
| 436 | +Terms.propTypes = { | |
| 437 | + onClose: PropTypes.func, | |
| 438 | + onSubmit: PropTypes.func, | |
| 439 | + isEnrolled: PropTypes.bool | |
| 440 | +}; | |
| 1076 | 441 | |
| 1077 | -//#endregion | |
| 1078 | -//#region node_modules/@babel/runtime/helpers/OverloadYield.js | |
| 1079 | - var require_OverloadYield = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1080 | - function _OverloadYield(e, d) { | |
| 1081 | - this.v = e, this.k = d; | |
| 1082 | - } | |
| 1083 | - module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1084 | - })); | |
| 442 | +/***/ }), | |
| 1085 | 443 | |
| 1086 | -//#endregion | |
| 1087 | -//#region node_modules/@babel/runtime/helpers/regeneratorDefine.js | |
| 1088 | - var require_regeneratorDefine = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1089 | - function _regeneratorDefine(e, r, n, t) { | |
| 1090 | - var i = Object.defineProperty; | |
| 1091 | - try { | |
| 1092 | - i({}, "", {}); | |
| 1093 | - } catch (e) { | |
| 1094 | - i = 0; | |
| 1095 | - } | |
| 1096 | - module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) { | |
| 1097 | - function o(r, n) { | |
| 1098 | - _regeneratorDefine(e, r, function(e) { | |
| 1099 | - return this._invoke(r, n, e); | |
| 1100 | - }); | |
| 1101 | - } | |
| 1102 | - r ? i ? i(e, r, { | |
| 1103 | - value: n, | |
| 1104 | - enumerable: !t, | |
| 1105 | - configurable: !t, | |
| 1106 | - writable: !t | |
| 1107 | - }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); | |
| 1108 | - }, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t); | |
| 1109 | - } | |
| 1110 | - module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1111 | - })); | |
| 444 | +/***/ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in.js": | |
| 445 | +/*!****************************************************************!*\ | |
| 446 | + !*** ../modules/atomic-opt-in/assets/js/opt-in-page/opt-in.js ***! | |
| 447 | + \****************************************************************/ | |
| 448 | +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | |
| 1112 | 449 | |
| 1113 | -//#endregion | |
| 1114 | -//#region node_modules/@babel/runtime/helpers/regenerator.js | |
| 1115 | - var require_regenerator$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1116 | - var regeneratorDefine = require_regeneratorDefine(); | |
| 1117 | - function _regenerator() { | |
| 1118 | - /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ | |
| 1119 | - var e; | |
| 1120 | - var t; | |
| 1121 | - var r = "function" == typeof Symbol ? Symbol : {}; | |
| 1122 | - var n = r.iterator || "@@iterator"; | |
| 1123 | - var o = r.toStringTag || "@@toStringTag"; | |
| 1124 | - function i(r, n, o, i) { | |
| 1125 | - var c = n && n.prototype instanceof Generator ? n : Generator; | |
| 1126 | - var u = Object.create(c.prototype); | |
| 1127 | - return regeneratorDefine(u, "_invoke", function(r, n, o) { | |
| 1128 | - var i; | |
| 1129 | - var c; | |
| 1130 | - var u; | |
| 1131 | - var f = 0; | |
| 1132 | - var p = o || []; | |
| 1133 | - var y = !1; | |
| 1134 | - var G = { | |
| 1135 | - p: 0, | |
| 1136 | - n: 0, | |
| 1137 | - v: e, | |
| 1138 | - a: d, | |
| 1139 | - f: d.bind(e, 4), | |
| 1140 | - d: function d(t, r) { | |
| 1141 | - return i = t, c = 0, u = e, G.n = r, a; | |
| 1142 | - } | |
| 1143 | - }; | |
| 1144 | - function d(r, n) { | |
| 1145 | - for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { | |
| 1146 | - var o; | |
| 1147 | - var i = p[t]; | |
| 1148 | - var d = G.p; | |
| 1149 | - var l = i[2]; | |
| 1150 | - r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); | |
| 1151 | - } | |
| 1152 | - if (o || r > 1) return a; | |
| 1153 | - throw y = !0, n; | |
| 1154 | - } | |
| 1155 | - return function(o, p, l) { | |
| 1156 | - if (f > 1) throw TypeError("Generator is already running"); | |
| 1157 | - for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { | |
| 1158 | - i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); | |
| 1159 | - try { | |
| 1160 | - if (f = 2, i) { | |
| 1161 | - if (c || (o = "next"), t = i[o]) { | |
| 1162 | - if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); | |
| 1163 | - if (!t.done) return t; | |
| 1164 | - u = t.value, c < 2 && (c = 0); | |
| 1165 | - } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); | |
| 1166 | - i = e; | |
| 1167 | - } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; | |
| 1168 | - } catch (t) { | |
| 1169 | - i = e, c = 1, u = t; | |
| 1170 | - } finally { | |
| 1171 | - f = 1; | |
| 1172 | - } | |
| 1173 | - } | |
| 1174 | - return { | |
| 1175 | - value: t, | |
| 1176 | - done: y | |
| 1177 | - }; | |
| 1178 | - }; | |
| 1179 | - }(r, o, i), !0), u; | |
| 1180 | - } | |
| 1181 | - var a = {}; | |
| 1182 | - function Generator() {} | |
| 1183 | - function GeneratorFunction() {} | |
| 1184 | - function GeneratorFunctionPrototype() {} | |
| 1185 | - t = Object.getPrototypeOf; | |
| 1186 | - var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function() { | |
| 1187 | - return this; | |
| 1188 | - }), t); | |
| 1189 | - var u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); | |
| 1190 | - function f(e) { | |
| 1191 | - return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; | |
| 1192 | - } | |
| 1193 | - return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function() { | |
| 1194 | - return this; | |
| 1195 | - }), regeneratorDefine(u, "toString", function() { | |
| 1196 | - return "[object Generator]"; | |
| 1197 | - }), (module.exports = _regenerator = function _regenerator() { | |
| 1198 | - return { | |
| 1199 | - w: i, | |
| 1200 | - m: f | |
| 1201 | - }; | |
| 1202 | - }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); | |
| 1203 | - } | |
| 1204 | - module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1205 | - })); | |
| 450 | +"use strict"; | |
| 451 | +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); | |
| 1206 | 452 | |
| 1207 | -//#endregion | |
| 1208 | -//#region node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js | |
| 1209 | - var require_regeneratorAsyncIterator = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1210 | - var OverloadYield = require_OverloadYield(); | |
| 1211 | - var regeneratorDefine = require_regeneratorDefine(); | |
| 1212 | - function AsyncIterator(t, e) { | |
| 1213 | - function n(r, o, i, f) { | |
| 1214 | - try { | |
| 1215 | - var c = t[r](o); | |
| 1216 | - var u = c.value; | |
| 1217 | - return u instanceof OverloadYield ? e.resolve(u.v).then(function(t) { | |
| 1218 | - n("next", t, i, f); | |
| 1219 | - }, function(t) { | |
| 1220 | - n("throw", t, i, f); | |
| 1221 | - }) : e.resolve(u).then(function(t) { | |
| 1222 | - c.value = t, i(c); | |
| 1223 | - }, function(t) { | |
| 1224 | - return n("throw", t, i, f); | |
| 1225 | - }); | |
| 1226 | - } catch (t) { | |
| 1227 | - f(t); | |
| 1228 | - } | |
| 1229 | - } | |
| 1230 | - var r; | |
| 1231 | - this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function() { | |
| 1232 | - return this; | |
| 1233 | - })), regeneratorDefine(this, "_invoke", function(t, o, i) { | |
| 1234 | - function f() { | |
| 1235 | - return new e(function(e, r) { | |
| 1236 | - n(t, i, e, r); | |
| 1237 | - }); | |
| 1238 | - } | |
| 1239 | - return r = r ? r.then(f, f) : f(); | |
| 1240 | - }, !0); | |
| 1241 | - } | |
| 1242 | - module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1243 | - })); | |
| 1244 | 453 | |
| 1245 | -//#endregion | |
| 1246 | -//#region node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js | |
| 1247 | - var require_regeneratorAsyncGen = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1248 | - var regenerator = require_regenerator$1(); | |
| 1249 | - var regeneratorAsyncIterator = require_regeneratorAsyncIterator(); | |
| 1250 | - function _regeneratorAsyncGen(r, e, t, o, n) { | |
| 1251 | - return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise); | |
| 1252 | - } | |
| 1253 | - module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1254 | - })); | |
| 454 | +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); | |
| 455 | +var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); | |
| 456 | +Object.defineProperty(exports, "__esModule", ({ | |
| 457 | + value: true | |
| 458 | +})); | |
| 459 | +exports.OptIn = void 0; | |
| 460 | +var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); | |
| 461 | +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); | |
| 462 | +var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); | |
| 463 | +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); | |
| 464 | +var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); | |
| 465 | +var _optInContent = __webpack_require__(/*! ./opt-in-content */ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-content.js"); | |
| 466 | +var _optInImgPlaceholders = __webpack_require__(/*! ./opt-in-img-placeholders */ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-img-placeholders.js"); | |
| 467 | +var _optInMessage = __webpack_require__(/*! ./opt-in-message */ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-message.js"); | |
| 468 | +var _optInApi = __webpack_require__(/*! ./opt-in-api */ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-api.js"); | |
| 469 | +var _dompurify = _interopRequireDefault(__webpack_require__(/*! dompurify */ "../node_modules/dompurify/dist/purify.cjs.js")); | |
| 470 | +var _optInTerms = __webpack_require__(/*! ./opt-in-terms */ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in-terms.js"); | |
| 471 | +var _elementorSettingsEdi; | |
| 472 | +function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } | |
| 473 | +function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } | |
| 474 | +function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } | |
| 475 | +var decodeHtmlUrl = function decodeHtmlUrl(html) { | |
| 476 | + var textarea = document.createElement('textarea'); | |
| 477 | + textarea.innerHTML = html; | |
| 478 | + return textarea.value; | |
| 479 | +}; | |
| 480 | +var OPT_IN_MSG = 'e-editor-v4-opt-in-message'; | |
| 481 | +var OPT_OUT_MSG = 'e-editor-v4-opt-out-message'; | |
| 482 | +var i18n = { | |
| 483 | + title: (0, _i18n.__)('The next generation of web creation', 'elementor'), | |
| 484 | + chip: (0, _i18n.__)('Beta', 'elementor'), | |
| 485 | + welcomeText: (0, _i18n.__)('Welcome to version 4 of Elementor\'s Editor. It’s faster, more flexible, and built on a fully atomic approach to structure & styling.', 'elementor'), | |
| 486 | + advantagesHeader: (0, _i18n.__)('Here’s what’s inside the beta version:', 'elementor'), | |
| 487 | + advantages: [(0, _i18n.__)('Unparalleled performance - Cleaner code & a lighter CSS footprint with single-div wrappers.', 'elementor'), (0, _i18n.__)('Professional tools at your fingertips - Variables, Classes and States.', 'elementor'), (0, _i18n.__)('Consistent styling experience - A unified Style tab for all atomic elements.', 'elementor'), (0, _i18n.__)('Fully responsive design - Customize any style property per screen.', 'elementor')], | |
| 488 | + andMore: (0, _i18n.__)('And much more!', 'elementor'), | |
| 489 | + readMore: (0, _i18n.__)('Learn more', 'elementor'), | |
| 490 | + feedback: (0, _i18n.__)('We’d love your feedback!', 'elementor'), | |
| 491 | + overToGithub: (0, _i18n.__)('Head over to Github', 'elementor'), | |
| 492 | + tellUsWhy: (0, _i18n.__)('Tell us why', 'elementor'), | |
| 493 | + image: (0, _i18n.__)('Editor V4', 'elementor'), | |
| 494 | + buttons: { | |
| 495 | + tryOut: (0, _i18n.__)('Try out the new experience', 'elementor'), | |
| 496 | + optIn: (0, _i18n.__)('Activate the new experience', 'elementor'), | |
| 497 | + optOut: (0, _i18n.__)('Deactivate V4', 'elementor') | |
| 498 | + }, | |
| 499 | + messages: { | |
| 500 | + optInSuccess: (0, _i18n.__)('Welcome! You’ve got the newest version of the editor.', 'elementor'), | |
| 501 | + optOut: (0, _i18n.__)('You’ve deactivated the new Editor. Have feedback?', 'elementor'), | |
| 502 | + error: (0, _i18n.__)('Ouch, there was a glitch. Try activating V4 again soon.', 'elementor') | |
| 503 | + } | |
| 504 | +}; | |
| 505 | +var optInLinks = { | |
| 506 | + feedbackUrl: 'https://go.elementor.com/wp-dash-opt-in-v4-feedback/', | |
| 507 | + readMoreUrl: 'https://go.elementor.com/wp-dash-opt-in-v4-help-center/', | |
| 508 | + tryOutUrl: _dompurify.default.sanitize(decodeHtmlUrl((_elementorSettingsEdi = elementorSettingsEditor4OptIn) === null || _elementorSettingsEdi === void 0 || (_elementorSettingsEdi = _elementorSettingsEdi.urls) === null || _elementorSettingsEdi === void 0 ? void 0 : _elementorSettingsEdi.start_building)) || '#' | |
| 509 | +}; | |
| 510 | +var optInImages = { | |
| 511 | + square: { | |
| 512 | + src: 'https://assets.elementor.com/v4-promotion/v1/images/v4_opt_in_500.png', | |
| 513 | + sx: { | |
| 514 | + width: '100%', | |
| 515 | + maxHeight: '507px', | |
| 516 | + maxWidth: 'sm', | |
| 517 | + height: 'auto', | |
| 518 | + mx: 'auto', | |
| 519 | + borderRadius: 2 | |
| 520 | + } | |
| 521 | + }, | |
| 522 | + landscape: { | |
| 523 | + src: 'https://assets.elementor.com/v4-promotion/v1/images/v4_opt_in_260.png', | |
| 524 | + sx: { | |
| 525 | + width: '100%', | |
| 526 | + height: 'auto', | |
| 527 | + maxHeight: '260px', | |
| 528 | + mx: 'auto', | |
| 529 | + maxWidth: 'sm', | |
| 530 | + borderRadius: 2 | |
| 531 | + } | |
| 532 | + } | |
| 533 | +}; | |
| 534 | +var OptIn = exports.OptIn = function OptIn(_ref) { | |
| 535 | + var _state$features; | |
| 536 | + var state = _ref.state; | |
| 537 | + var _useState = (0, _react.useState)(false), | |
| 538 | + _useState2 = (0, _slicedToArray2.default)(_useState, 2), | |
| 539 | + showTerms = _useState2[0], | |
| 540 | + setShowTerms = _useState2[1]; | |
| 541 | + var _useState3 = (0, _react.useState)(''), | |
| 542 | + _useState4 = (0, _slicedToArray2.default)(_useState3, 2), | |
| 543 | + optInMessage = _useState4[0], | |
| 544 | + setOptInMessage = _useState4[1]; | |
| 545 | + var _useState5 = (0, _react.useState)(''), | |
| 546 | + _useState6 = (0, _slicedToArray2.default)(_useState5, 2), | |
| 547 | + optOutMessage = _useState6[0], | |
| 548 | + setOptOutMessage = _useState6[1]; | |
| 549 | + var _useState7 = (0, _react.useState)(''), | |
| 550 | + _useState8 = (0, _slicedToArray2.default)(_useState7, 2), | |
| 551 | + errorMessage = _useState8[0], | |
| 552 | + setErrorMessage = _useState8[1]; | |
| 553 | + (0, _react.useEffect)(function () { | |
| 554 | + var optInMsg = sessionStorage.getItem(OPT_IN_MSG); | |
| 555 | + var optOutMsg = sessionStorage.getItem(OPT_OUT_MSG); | |
| 556 | + if (optInMsg) { | |
| 557 | + setTimeout(function () { | |
| 558 | + setOptInMessage(optInMsg); | |
| 559 | + }, 100); | |
| 560 | + sessionStorage.removeItem(OPT_IN_MSG); | |
| 561 | + } | |
| 562 | + if (optOutMsg) { | |
| 563 | + setTimeout(function () { | |
| 564 | + setOptOutMessage(optOutMsg); | |
| 565 | + }, 100); | |
| 566 | + sessionStorage.removeItem(OPT_OUT_MSG); | |
| 567 | + } | |
| 568 | + }, []); | |
| 569 | + var maybeOptIn = function maybeOptIn() { | |
| 570 | + (0, _optInApi.triggerOptIn)().then(function () { | |
| 571 | + sessionStorage.setItem(OPT_IN_MSG, i18n.messages.optInSuccess); | |
| 572 | + window.location.reload(); | |
| 573 | + }).catch(function () { | |
| 574 | + setErrorMessage(i18n.messages.error); | |
| 575 | + }); | |
| 576 | + }; | |
| 577 | + var maybeOptOut = function maybeOptOut() { | |
| 578 | + (0, _optInApi.triggerOptOut)().then(function () { | |
| 579 | + sessionStorage.setItem(OPT_OUT_MSG, i18n.messages.optOut); | |
| 580 | + window.location.reload(); | |
| 581 | + }).catch(function () { | |
| 582 | + setErrorMessage(i18n.messages.error); | |
| 583 | + }); | |
| 584 | + }; | |
| 585 | + var handlePopoverClose = function handlePopoverClose() { | |
| 586 | + setShowTerms(false); | |
| 587 | + }; | |
| 588 | + var isEnrolled = !!(state !== null && state !== void 0 && (_state$features = state.features) !== null && _state$features !== void 0 && _state$features.editor_v4); | |
| 589 | + return /*#__PURE__*/_react.default.createElement(_ui.Container, { | |
| 590 | + maxWidth: "xl", | |
| 591 | + sx: { | |
| 592 | + marginBlockStart: 2.5, | |
| 593 | + display: 'flex', | |
| 594 | + flexBasis: '100%', | |
| 595 | + gap: 3, | |
| 596 | + flexDirection: { | |
| 597 | + xs: 'column-reverse', | |
| 598 | + md: 'row' | |
| 599 | + } | |
| 600 | + } | |
| 601 | + }, /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 602 | + sx: { | |
| 603 | + flex: 1, | |
| 604 | + maxWidth: { | |
| 605 | + md: '580px', | |
| 606 | + sm: '600px' | |
| 607 | + }, | |
| 608 | + gap: 2.5, | |
| 609 | + mx: 'auto' | |
| 610 | + } | |
| 611 | + }, /*#__PURE__*/_react.default.createElement(_optInContent.TextNode, { | |
| 612 | + variant: "h4", | |
| 613 | + width: "fit-content" | |
| 614 | + }, /*#__PURE__*/_react.default.createElement("span", null, i18n.title), /*#__PURE__*/_react.default.createElement(_ui.Chip, { | |
| 615 | + size: "small", | |
| 616 | + color: "secondary", | |
| 617 | + variant: "filled", | |
| 618 | + label: i18n.chip, | |
| 619 | + sx: { | |
| 620 | + verticalAlign: 'baseline', | |
| 621 | + transform: 'translateY(-4px)', | |
| 622 | + ml: 1 | |
| 623 | + } | |
| 624 | + })), /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 625 | + direction: "column", | |
| 626 | + gap: 3 | |
| 627 | + }, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_optInContent.TextNode, null, i18n.welcomeText)), /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_optInContent.TextNode, { | |
| 628 | + variant: "subtitle1", | |
| 629 | + sx: { | |
| 630 | + mb: 1.5 | |
| 631 | + } | |
| 632 | + }, i18n.advantagesHeader), /*#__PURE__*/_react.default.createElement(_optInContent.AdvantagesList, null, i18n.advantages.map(function (entry, i) { | |
| 633 | + return /*#__PURE__*/_react.default.createElement(_optInContent.AdvantagesListItem, { | |
| 634 | + key: i | |
| 635 | + }, entry); | |
| 636 | + }), /*#__PURE__*/_react.default.createElement(_optInContent.AdvantagesListItem, { | |
| 637 | + key: i18n.advantages.length | |
| 638 | + }, i18n.andMore, " ", /*#__PURE__*/_react.default.createElement(_ui.Link, { | |
| 639 | + color: "text.primary", | |
| 640 | + href: optInLinks.readMoreUrl, | |
| 641 | + target: "_blank" | |
| 642 | + }, i18n.readMore))))), /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 643 | + direction: "column", | |
| 644 | + width: "clamp(240px, max(340px, 75%), 340px)", | |
| 645 | + maxWidth: "100%", | |
| 646 | + gap: 2 | |
| 647 | + }, !isEnrolled ? /*#__PURE__*/_react.default.createElement(_ui.Button, { | |
| 648 | + onClick: function onClick() { | |
| 649 | + setShowTerms(true); | |
| 650 | + }, | |
| 651 | + size: "large", | |
| 652 | + color: "primary", | |
| 653 | + variant: "contained", | |
| 654 | + sx: { | |
| 655 | + flexGrow: 1 | |
| 656 | + } | |
| 657 | + }, i18n.buttons.optIn) : /*#__PURE__*/_react.default.createElement(_ui.Button, { | |
| 658 | + onClick: function onClick() { | |
| 659 | + return window.location.href = optInLinks.tryOutUrl; | |
| 660 | + }, | |
| 661 | + size: "large", | |
| 662 | + color: "primary", | |
| 663 | + variant: "contained", | |
| 664 | + sx: { | |
| 665 | + flexGrow: 1 | |
| 666 | + } | |
| 667 | + }, i18n.buttons.tryOut), /*#__PURE__*/_react.default.createElement(_ui.Button, { | |
| 668 | + onClick: function onClick() { | |
| 669 | + setShowTerms(true); | |
| 670 | + }, | |
| 671 | + size: "large", | |
| 672 | + color: "secondary", | |
| 673 | + variant: "outlined", | |
| 674 | + sx: { | |
| 675 | + flexGrow: 1, | |
| 676 | + visibility: isEnrolled ? 'visible' : 'hidden' | |
| 677 | + } | |
| 678 | + }, i18n.buttons.optOut)), /*#__PURE__*/_react.default.createElement(_optInContent.TextNode, null, i18n.feedback, " ", /*#__PURE__*/_react.default.createElement(_ui.Link, { | |
| 679 | + underline: "hover", | |
| 680 | + href: optInLinks.feedbackUrl, | |
| 681 | + target: "_blank" | |
| 682 | + }, i18n.overToGithub))), /*#__PURE__*/_react.default.createElement(_ui.Stack, { | |
| 683 | + sx: { | |
| 684 | + flex: 1, | |
| 685 | + px: 0, | |
| 686 | + maxWidth: { | |
| 687 | + md: '507px', | |
| 688 | + sm: '600px' | |
| 689 | + }, | |
| 690 | + mx: 'auto' | |
| 691 | + } | |
| 692 | + }, optInImages.square.src ? /*#__PURE__*/_react.default.createElement(_ui.Image, { | |
| 693 | + src: optInImages.square.src, | |
| 694 | + alt: i18n.image, | |
| 695 | + sx: _objectSpread(_objectSpread({}, optInImages.square.sx), {}, { | |
| 696 | + display: { | |
| 697 | + xs: 'none', | |
| 698 | + md: 'block' | |
| 699 | + } | |
| 700 | + }) | |
| 701 | + }) : /*#__PURE__*/_react.default.createElement(_optInImgPlaceholders.ImageSquarePlaceholder, { | |
| 702 | + sx: _objectSpread(_objectSpread({}, optInImages.square.sx), {}, { | |
| 703 | + display: { | |
| 704 | + xs: 'none', | |
| 705 | + md: 'block' | |
| 706 | + } | |
| 707 | + }) | |
| 708 | + }), optInImages.landscape.src ? /*#__PURE__*/_react.default.createElement(_ui.Image, { | |
| 709 | + src: optInImages.landscape.src, | |
| 710 | + alt: i18n.image, | |
| 711 | + sx: _objectSpread(_objectSpread({}, optInImages.landscape.sx), {}, { | |
| 712 | + display: { | |
| 713 | + xs: 'block', | |
| 714 | + md: 'none' | |
| 715 | + } | |
| 716 | + }) | |
| 717 | + }) : /*#__PURE__*/_react.default.createElement(_optInImgPlaceholders.ImageLandscapePlaceholder, { | |
| 718 | + sx: _objectSpread(_objectSpread({}, optInImages.landscape.sx), {}, { | |
| 719 | + display: { | |
| 720 | + xs: 'block', | |
| 721 | + md: 'none' | |
| 722 | + } | |
| 723 | + }) | |
| 724 | + })), showTerms && /*#__PURE__*/_react.default.createElement(_optInTerms.Terms, { | |
| 725 | + onClose: handlePopoverClose, | |
| 726 | + onSubmit: isEnrolled ? maybeOptOut : maybeOptIn, | |
| 727 | + isEnrolled: isEnrolled | |
| 728 | + }), optInMessage && /*#__PURE__*/_react.default.createElement(_optInMessage.Message, { | |
| 729 | + onClose: function onClose() { | |
| 730 | + return setOptInMessage(''); | |
| 731 | + } | |
| 732 | + }, optInMessage), optOutMessage && /*#__PURE__*/_react.default.createElement(_optInMessage.Message, { | |
| 733 | + onClose: function onClose() { | |
| 734 | + return setOptOutMessage(''); | |
| 735 | + }, | |
| 736 | + action: /*#__PURE__*/_react.default.createElement(_ui.Link, { | |
| 737 | + href: optInLinks.feedbackUrl, | |
| 738 | + target: "_blank", | |
| 739 | + color: "inherit", | |
| 740 | + sx: { | |
| 741 | + cursor: 'pointer', | |
| 742 | + textDecoration: 'none', | |
| 743 | + pl: 3 | |
| 744 | + } | |
| 745 | + }, i18n.tellUsWhy) | |
| 746 | + }, optOutMessage), errorMessage && /*#__PURE__*/_react.default.createElement(_optInMessage.Message, { | |
| 747 | + severity: "error", | |
| 748 | + onClose: function onClose() { | |
| 749 | + return setErrorMessage(''); | |
| 750 | + } | |
| 751 | + }, errorMessage)); | |
| 752 | +}; | |
| 753 | +OptIn.propTypes = { | |
| 754 | + state: PropTypes.shape({ | |
| 755 | + features: PropTypes.shape({ | |
| 756 | + editor_v4: PropTypes.bool | |
| 757 | + }) | |
| 758 | + }).isRequired | |
| 759 | +}; | |
| 1255 | 760 | |
| 1256 | -//#endregion | |
| 1257 | -//#region node_modules/@babel/runtime/helpers/regeneratorAsync.js | |
| 1258 | - var require_regeneratorAsync = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1259 | - var regeneratorAsyncGen = require_regeneratorAsyncGen(); | |
| 1260 | - function _regeneratorAsync(n, e, r, t, o) { | |
| 1261 | - var a = regeneratorAsyncGen(n, e, r, t, o); | |
| 1262 | - return a.next().then(function(n) { | |
| 1263 | - return n.done ? n.value : a.next(); | |
| 1264 | - }); | |
| 1265 | - } | |
| 1266 | - module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1267 | - })); | |
| 761 | +/***/ }), | |
| 1268 | 762 | |
| 1269 | -//#endregion | |
| 1270 | -//#region node_modules/@babel/runtime/helpers/regeneratorKeys.js | |
| 1271 | - var require_regeneratorKeys = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1272 | - function _regeneratorKeys(e) { | |
| 1273 | - var n = Object(e); | |
| 1274 | - var r = []; | |
| 1275 | - for (var t in n) r.unshift(t); | |
| 1276 | - return function e() { | |
| 1277 | - for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; | |
| 1278 | - return e.done = !0, e; | |
| 1279 | - }; | |
| 1280 | - } | |
| 1281 | - module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1282 | - })); | |
| 763 | +/***/ "../node_modules/@babel/runtime/helpers/OverloadYield.js": | |
| 764 | +/*!***************************************************************!*\ | |
| 765 | + !*** ../node_modules/@babel/runtime/helpers/OverloadYield.js ***! | |
| 766 | + \***************************************************************/ | |
| 767 | +/***/ ((module) => { | |
| 1283 | 768 | |
| 1284 | -//#endregion | |
| 1285 | -//#region node_modules/@babel/runtime/helpers/typeof.js | |
| 1286 | - var require_typeof = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1287 | - function _typeof(o) { | |
| 1288 | - "@babel/helpers - typeof"; | |
| 1289 | - return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { | |
| 1290 | - return typeof o; | |
| 1291 | - } : function(o) { | |
| 1292 | - return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; | |
| 1293 | - }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); | |
| 1294 | - } | |
| 1295 | - module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1296 | - })); | |
| 769 | +function _OverloadYield(e, d) { | |
| 770 | + this.v = e, this.k = d; | |
| 771 | +} | |
| 772 | +module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1297 | 773 | |
| 1298 | -//#endregion | |
| 1299 | -//#region node_modules/@babel/runtime/helpers/regeneratorValues.js | |
| 1300 | - var require_regeneratorValues = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1301 | - var _typeof = require_typeof()["default"]; | |
| 1302 | - function _regeneratorValues(e) { | |
| 1303 | - if (null != e) { | |
| 1304 | - var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"]; | |
| 1305 | - var r = 0; | |
| 1306 | - if (t) return t.call(e); | |
| 1307 | - if ("function" == typeof e.next) return e; | |
| 1308 | - if (!isNaN(e.length)) return { next: function next() { | |
| 1309 | - return e && r >= e.length && (e = void 0), { | |
| 1310 | - value: e && e[r++], | |
| 1311 | - done: !e | |
| 1312 | - }; | |
| 1313 | - } }; | |
| 1314 | - } | |
| 1315 | - throw new TypeError(_typeof(e) + " is not iterable"); | |
| 1316 | - } | |
| 1317 | - module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1318 | - })); | |
| 774 | +/***/ }), | |
| 1319 | 775 | |
| 1320 | -//#endregion | |
| 1321 | -//#region node_modules/@babel/runtime/helpers/regeneratorRuntime.js | |
| 1322 | - var require_regeneratorRuntime = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1323 | - var OverloadYield = require_OverloadYield(); | |
| 1324 | - var regenerator = require_regenerator$1(); | |
| 1325 | - var regeneratorAsync = require_regeneratorAsync(); | |
| 1326 | - var regeneratorAsyncGen = require_regeneratorAsyncGen(); | |
| 1327 | - var regeneratorAsyncIterator = require_regeneratorAsyncIterator(); | |
| 1328 | - var regeneratorKeys = require_regeneratorKeys(); | |
| 1329 | - var regeneratorValues = require_regeneratorValues(); | |
| 1330 | - function _regeneratorRuntime() { | |
| 1331 | - "use strict"; | |
| 1332 | - var r = regenerator(); | |
| 1333 | - var e = r.m(_regeneratorRuntime); | |
| 1334 | - var t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; | |
| 1335 | - function n(r) { | |
| 1336 | - var e = "function" == typeof r && r.constructor; | |
| 1337 | - return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); | |
| 1338 | - } | |
| 1339 | - var o = { | |
| 1340 | - "throw": 1, | |
| 1341 | - "return": 2, | |
| 1342 | - "break": 3, | |
| 1343 | - "continue": 3 | |
| 1344 | - }; | |
| 1345 | - function a(r) { | |
| 1346 | - var e; | |
| 1347 | - var t; | |
| 1348 | - return function(n) { | |
| 1349 | - e || (e = { | |
| 1350 | - stop: function stop() { | |
| 1351 | - return t(n.a, 2); | |
| 1352 | - }, | |
| 1353 | - "catch": function _catch() { | |
| 1354 | - return n.v; | |
| 1355 | - }, | |
| 1356 | - abrupt: function abrupt(r, e) { | |
| 1357 | - return t(n.a, o[r], e); | |
| 1358 | - }, | |
| 1359 | - delegateYield: function delegateYield(r, o, a) { | |
| 1360 | - return e.resultName = o, t(n.d, regeneratorValues(r), a); | |
| 1361 | - }, | |
| 1362 | - finish: function finish(r) { | |
| 1363 | - return t(n.f, r); | |
| 1364 | - } | |
| 1365 | - }, t = function t(r, _t, o) { | |
| 1366 | - n.p = e.prev, n.n = e.next; | |
| 1367 | - try { | |
| 1368 | - return r(_t, o); | |
| 1369 | - } finally { | |
| 1370 | - e.next = n.n; | |
| 1371 | - } | |
| 1372 | - }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; | |
| 1373 | - try { | |
| 1374 | - return r.call(this, e); | |
| 1375 | - } finally { | |
| 1376 | - n.p = e.prev, n.n = e.next; | |
| 1377 | - } | |
| 1378 | - }; | |
| 1379 | - } | |
| 1380 | - return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() { | |
| 1381 | - return { | |
| 1382 | - wrap: function wrap(e, t, n, o) { | |
| 1383 | - return r.w(a(e), t, n, o && o.reverse()); | |
| 1384 | - }, | |
| 1385 | - isGeneratorFunction: n, | |
| 1386 | - mark: r.m, | |
| 1387 | - awrap: function awrap(r, e) { | |
| 1388 | - return new OverloadYield(r, e); | |
| 1389 | - }, | |
| 1390 | - AsyncIterator: regeneratorAsyncIterator, | |
| 1391 | - async: function async(r, e, t, o, u) { | |
| 1392 | - return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u); | |
| 1393 | - }, | |
| 1394 | - keys: regeneratorKeys, | |
| 1395 | - values: regeneratorValues | |
| 1396 | - }; | |
| 1397 | - }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); | |
| 1398 | - } | |
| 1399 | - module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1400 | - })); | |
| 776 | +/***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js": | |
| 777 | +/*!******************************************************************!*\ | |
| 778 | + !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! | |
| 779 | + \******************************************************************/ | |
| 780 | +/***/ ((module) => { | |
| 1401 | 781 | |
| 1402 | -//#endregion | |
| 1403 | -//#region node_modules/@babel/runtime/regenerator/index.js | |
| 1404 | - var require_regenerator = /* @__PURE__ */ __commonJSMin(((exports, module) => { | |
| 1405 | - var runtime = require_regeneratorRuntime()(); | |
| 1406 | - module.exports = runtime; | |
| 1407 | - try { | |
| 1408 | - regeneratorRuntime = runtime; | |
| 1409 | - } catch (accidentalStrictMode) { | |
| 1410 | - if (typeof globalThis === "object") globalThis.regeneratorRuntime = runtime; | |
| 1411 | - else Function("r", "regeneratorRuntime = r")(runtime); | |
| 1412 | - } | |
| 1413 | - })); | |
| 782 | +function _arrayLikeToArray(r, a) { | |
| 783 | + (null == a || a > r.length) && (a = r.length); | |
| 784 | + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; | |
| 785 | + return n; | |
| 786 | +} | |
| 787 | +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1414 | 788 | |
| 1415 | -//#endregion | |
| 1416 | -//#region modules/atomic-opt-in/assets/js/opt-in-page/opt-in-api.js | |
| 1417 | - var import_regenerator = /* @__PURE__ */ __toESM(require_regenerator()); | |
| 1418 | - var triggerOptIn = /*#__PURE__*/ function() { | |
| 1419 | - var _ref = _asyncToGenerator(/*#__PURE__*/ import_regenerator.default.mark(function _callee() { | |
| 1420 | - return import_regenerator.default.wrap(function(_context) { | |
| 1421 | - while (1) switch (_context.prev = _context.next) { | |
| 1422 | - case 0: return _context.abrupt("return", elementorCommon.ajax.addRequest("editor_v4_opt_in")); | |
| 1423 | - case 1: | |
| 1424 | - case "end": return _context.stop(); | |
| 1425 | - } | |
| 1426 | - }, _callee); | |
| 1427 | - })); | |
| 1428 | - return function triggerOptIn() { | |
| 1429 | - return _ref.apply(this, arguments); | |
| 1430 | - }; | |
| 1431 | - }(); | |
| 1432 | - var triggerOptOut = /*#__PURE__*/ function() { | |
| 1433 | - var _ref2 = _asyncToGenerator(/*#__PURE__*/ import_regenerator.default.mark(function _callee2() { | |
| 1434 | - return import_regenerator.default.wrap(function(_context2) { | |
| 1435 | - while (1) switch (_context2.prev = _context2.next) { | |
| 1436 | - case 0: return _context2.abrupt("return", elementorCommon.ajax.addRequest("editor_v4_opt_out")); | |
| 1437 | - case 1: | |
| 1438 | - case "end": return _context2.stop(); | |
| 1439 | - } | |
| 1440 | - }, _callee2); | |
| 1441 | - })); | |
| 1442 | - return function triggerOptOut() { | |
| 1443 | - return _ref2.apply(this, arguments); | |
| 1444 | - }; | |
| 1445 | - }(); | |
| 789 | +/***/ }), | |
| 1446 | 790 | |
| 1447 | -//#endregion | |
| 1448 | -//#region node_modules/dompurify/dist/purify.es.mjs | |
| 791 | +/***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js": | |
| 792 | +/*!****************************************************************!*\ | |
| 793 | + !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! | |
| 794 | + \****************************************************************/ | |
| 795 | +/***/ ((module) => { | |
| 796 | + | |
| 797 | +function _arrayWithHoles(r) { | |
| 798 | + if (Array.isArray(r)) return r; | |
| 799 | +} | |
| 800 | +module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 801 | + | |
| 802 | +/***/ }), | |
| 803 | + | |
| 804 | +/***/ "../node_modules/@babel/runtime/helpers/asyncToGenerator.js": | |
| 805 | +/*!******************************************************************!*\ | |
| 806 | + !*** ../node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! | |
| 807 | + \******************************************************************/ | |
| 808 | +/***/ ((module) => { | |
| 809 | + | |
| 810 | +function asyncGeneratorStep(n, t, e, r, o, a, c) { | |
| 811 | + try { | |
| 812 | + var i = n[a](c), | |
| 813 | + u = i.value; | |
| 814 | + } catch (n) { | |
| 815 | + return void e(n); | |
| 816 | + } | |
| 817 | + i.done ? t(u) : Promise.resolve(u).then(r, o); | |
| 818 | +} | |
| 819 | +function _asyncToGenerator(n) { | |
| 820 | + return function () { | |
| 821 | + var t = this, | |
| 822 | + e = arguments; | |
| 823 | + return new Promise(function (r, o) { | |
| 824 | + var a = n.apply(t, e); | |
| 825 | + function _next(n) { | |
| 826 | + asyncGeneratorStep(a, r, o, _next, _throw, "next", n); | |
| 827 | + } | |
| 828 | + function _throw(n) { | |
| 829 | + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); | |
| 830 | + } | |
| 831 | + _next(void 0); | |
| 832 | + }); | |
| 833 | + }; | |
| 834 | +} | |
| 835 | +module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 836 | + | |
| 837 | +/***/ }), | |
| 838 | + | |
| 839 | +/***/ "../node_modules/@babel/runtime/helpers/defineProperty.js": | |
| 840 | +/*!****************************************************************!*\ | |
| 841 | + !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***! | |
| 842 | + \****************************************************************/ | |
| 843 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 844 | + | |
| 845 | +var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); | |
| 846 | +function _defineProperty(e, r, t) { | |
| 847 | + return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { | |
| 848 | + value: t, | |
| 849 | + enumerable: !0, | |
| 850 | + configurable: !0, | |
| 851 | + writable: !0 | |
| 852 | + }) : e[r] = t, e; | |
| 853 | +} | |
| 854 | +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 855 | + | |
| 856 | +/***/ }), | |
| 857 | + | |
| 858 | +/***/ "../node_modules/@babel/runtime/helpers/extends.js": | |
| 859 | +/*!*********************************************************!*\ | |
| 860 | + !*** ../node_modules/@babel/runtime/helpers/extends.js ***! | |
| 861 | + \*********************************************************/ | |
| 862 | +/***/ ((module) => { | |
| 863 | + | |
| 864 | +function _extends() { | |
| 865 | + return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) { | |
| 866 | + for (var e = 1; e < arguments.length; e++) { | |
| 867 | + var t = arguments[e]; | |
| 868 | + for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); | |
| 869 | + } | |
| 870 | + return n; | |
| 871 | + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _extends.apply(null, arguments); | |
| 872 | +} | |
| 873 | +module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 874 | + | |
| 875 | +/***/ }), | |
| 876 | + | |
| 877 | +/***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": | |
| 878 | +/*!***********************************************************************!*\ | |
| 879 | + !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! | |
| 880 | + \***********************************************************************/ | |
| 881 | +/***/ ((module) => { | |
| 882 | + | |
| 883 | +function _interopRequireDefault(e) { | |
| 884 | + return e && e.__esModule ? e : { | |
| 885 | + "default": e | |
| 886 | + }; | |
| 887 | +} | |
| 888 | +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 889 | + | |
| 890 | +/***/ }), | |
| 891 | + | |
| 892 | +/***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": | |
| 893 | +/*!**********************************************************************!*\ | |
| 894 | + !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! | |
| 895 | + \**********************************************************************/ | |
| 896 | +/***/ ((module) => { | |
| 897 | + | |
| 898 | +function _iterableToArrayLimit(r, l) { | |
| 899 | + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; | |
| 900 | + if (null != t) { | |
| 901 | + var e, | |
| 902 | + n, | |
| 903 | + i, | |
| 904 | + u, | |
| 905 | + a = [], | |
| 906 | + f = !0, | |
| 907 | + o = !1; | |
| 908 | + try { | |
| 909 | + if (i = (t = t.call(r)).next, 0 === l) { | |
| 910 | + if (Object(t) !== t) return; | |
| 911 | + f = !1; | |
| 912 | + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); | |
| 913 | + } catch (r) { | |
| 914 | + o = !0, n = r; | |
| 915 | + } finally { | |
| 916 | + try { | |
| 917 | + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; | |
| 918 | + } finally { | |
| 919 | + if (o) throw n; | |
| 920 | + } | |
| 921 | + } | |
| 922 | + return a; | |
| 923 | + } | |
| 924 | +} | |
| 925 | +module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 926 | + | |
| 927 | +/***/ }), | |
| 928 | + | |
| 929 | +/***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js": | |
| 930 | +/*!*****************************************************************!*\ | |
| 931 | + !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***! | |
| 932 | + \*****************************************************************/ | |
| 933 | +/***/ ((module) => { | |
| 934 | + | |
| 935 | +function _nonIterableRest() { | |
| 936 | + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); | |
| 937 | +} | |
| 938 | +module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 939 | + | |
| 940 | +/***/ }), | |
| 941 | + | |
| 942 | +/***/ "../node_modules/@babel/runtime/helpers/objectWithoutProperties.js": | |
| 943 | +/*!*************************************************************************!*\ | |
| 944 | + !*** ../node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***! | |
| 945 | + \*************************************************************************/ | |
| 946 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 947 | + | |
| 948 | +var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"); | |
| 949 | +function _objectWithoutProperties(e, t) { | |
| 950 | + if (null == e) return {}; | |
| 951 | + var o, | |
| 952 | + r, | |
| 953 | + i = objectWithoutPropertiesLoose(e, t); | |
| 954 | + if (Object.getOwnPropertySymbols) { | |
| 955 | + var n = Object.getOwnPropertySymbols(e); | |
| 956 | + for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); | |
| 957 | + } | |
| 958 | + return i; | |
| 959 | +} | |
| 960 | +module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 961 | + | |
| 962 | +/***/ }), | |
| 963 | + | |
| 964 | +/***/ "../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js": | |
| 965 | +/*!******************************************************************************!*\ | |
| 966 | + !*** ../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***! | |
| 967 | + \******************************************************************************/ | |
| 968 | +/***/ ((module) => { | |
| 969 | + | |
| 970 | +function _objectWithoutPropertiesLoose(r, e) { | |
| 971 | + if (null == r) return {}; | |
| 972 | + var t = {}; | |
| 973 | + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { | |
| 974 | + if (-1 !== e.indexOf(n)) continue; | |
| 975 | + t[n] = r[n]; | |
| 976 | + } | |
| 977 | + return t; | |
| 978 | +} | |
| 979 | +module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 980 | + | |
| 981 | +/***/ }), | |
| 982 | + | |
| 983 | +/***/ "../node_modules/@babel/runtime/helpers/regenerator.js": | |
| 984 | +/*!*************************************************************!*\ | |
| 985 | + !*** ../node_modules/@babel/runtime/helpers/regenerator.js ***! | |
| 986 | + \*************************************************************/ | |
| 987 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 988 | + | |
| 989 | +var regeneratorDefine = __webpack_require__(/*! ./regeneratorDefine.js */ "../node_modules/@babel/runtime/helpers/regeneratorDefine.js"); | |
| 990 | +function _regenerator() { | |
| 991 | + /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ | |
| 992 | + var e, | |
| 993 | + t, | |
| 994 | + r = "function" == typeof Symbol ? Symbol : {}, | |
| 995 | + n = r.iterator || "@@iterator", | |
| 996 | + o = r.toStringTag || "@@toStringTag"; | |
| 997 | + function i(r, n, o, i) { | |
| 998 | + var c = n && n.prototype instanceof Generator ? n : Generator, | |
| 999 | + u = Object.create(c.prototype); | |
| 1000 | + return regeneratorDefine(u, "_invoke", function (r, n, o) { | |
| 1001 | + var i, | |
| 1002 | + c, | |
| 1003 | + u, | |
| 1004 | + f = 0, | |
| 1005 | + p = o || [], | |
| 1006 | + y = !1, | |
| 1007 | + G = { | |
| 1008 | + p: 0, | |
| 1009 | + n: 0, | |
| 1010 | + v: e, | |
| 1011 | + a: d, | |
| 1012 | + f: d.bind(e, 4), | |
| 1013 | + d: function d(t, r) { | |
| 1014 | + return i = t, c = 0, u = e, G.n = r, a; | |
| 1015 | + } | |
| 1016 | + }; | |
| 1017 | + function d(r, n) { | |
| 1018 | + for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { | |
| 1019 | + var o, | |
| 1020 | + i = p[t], | |
| 1021 | + d = G.p, | |
| 1022 | + l = i[2]; | |
| 1023 | + r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); | |
| 1024 | + } | |
| 1025 | + if (o || r > 1) return a; | |
| 1026 | + throw y = !0, n; | |
| 1027 | + } | |
| 1028 | + return function (o, p, l) { | |
| 1029 | + if (f > 1) throw TypeError("Generator is already running"); | |
| 1030 | + for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { | |
| 1031 | + i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); | |
| 1032 | + try { | |
| 1033 | + if (f = 2, i) { | |
| 1034 | + if (c || (o = "next"), t = i[o]) { | |
| 1035 | + if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); | |
| 1036 | + if (!t.done) return t; | |
| 1037 | + u = t.value, c < 2 && (c = 0); | |
| 1038 | + } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); | |
| 1039 | + i = e; | |
| 1040 | + } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; | |
| 1041 | + } catch (t) { | |
| 1042 | + i = e, c = 1, u = t; | |
| 1043 | + } finally { | |
| 1044 | + f = 1; | |
| 1045 | + } | |
| 1046 | + } | |
| 1047 | + return { | |
| 1048 | + value: t, | |
| 1049 | + done: y | |
| 1050 | + }; | |
| 1051 | + }; | |
| 1052 | + }(r, o, i), !0), u; | |
| 1053 | + } | |
| 1054 | + var a = {}; | |
| 1055 | + function Generator() {} | |
| 1056 | + function GeneratorFunction() {} | |
| 1057 | + function GeneratorFunctionPrototype() {} | |
| 1058 | + t = Object.getPrototypeOf; | |
| 1059 | + var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () { | |
| 1060 | + return this; | |
| 1061 | + }), t), | |
| 1062 | + u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); | |
| 1063 | + function f(e) { | |
| 1064 | + return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; | |
| 1065 | + } | |
| 1066 | + return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function () { | |
| 1067 | + return this; | |
| 1068 | + }), regeneratorDefine(u, "toString", function () { | |
| 1069 | + return "[object Generator]"; | |
| 1070 | + }), (module.exports = _regenerator = function _regenerator() { | |
| 1071 | + return { | |
| 1072 | + w: i, | |
| 1073 | + m: f | |
| 1074 | + }; | |
| 1075 | + }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); | |
| 1076 | +} | |
| 1077 | +module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1078 | + | |
| 1079 | +/***/ }), | |
| 1080 | + | |
| 1081 | +/***/ "../node_modules/@babel/runtime/helpers/regeneratorAsync.js": | |
| 1082 | +/*!******************************************************************!*\ | |
| 1083 | + !*** ../node_modules/@babel/runtime/helpers/regeneratorAsync.js ***! | |
| 1084 | + \******************************************************************/ | |
| 1085 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1086 | + | |
| 1087 | +var regeneratorAsyncGen = __webpack_require__(/*! ./regeneratorAsyncGen.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js"); | |
| 1088 | +function _regeneratorAsync(n, e, r, t, o) { | |
| 1089 | + var a = regeneratorAsyncGen(n, e, r, t, o); | |
| 1090 | + return a.next().then(function (n) { | |
| 1091 | + return n.done ? n.value : a.next(); | |
| 1092 | + }); | |
| 1093 | +} | |
| 1094 | +module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1095 | + | |
| 1096 | +/***/ }), | |
| 1097 | + | |
| 1098 | +/***/ "../node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js": | |
| 1099 | +/*!*********************************************************************!*\ | |
| 1100 | + !*** ../node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js ***! | |
| 1101 | + \*********************************************************************/ | |
| 1102 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1103 | + | |
| 1104 | +var regenerator = __webpack_require__(/*! ./regenerator.js */ "../node_modules/@babel/runtime/helpers/regenerator.js"); | |
| 1105 | +var regeneratorAsyncIterator = __webpack_require__(/*! ./regeneratorAsyncIterator.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js"); | |
| 1106 | +function _regeneratorAsyncGen(r, e, t, o, n) { | |
| 1107 | + return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise); | |
| 1108 | +} | |
| 1109 | +module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1110 | + | |
| 1111 | +/***/ }), | |
| 1112 | + | |
| 1113 | +/***/ "../node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js": | |
| 1114 | +/*!**************************************************************************!*\ | |
| 1115 | + !*** ../node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js ***! | |
| 1116 | + \**************************************************************************/ | |
| 1117 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1118 | + | |
| 1119 | +var OverloadYield = __webpack_require__(/*! ./OverloadYield.js */ "../node_modules/@babel/runtime/helpers/OverloadYield.js"); | |
| 1120 | +var regeneratorDefine = __webpack_require__(/*! ./regeneratorDefine.js */ "../node_modules/@babel/runtime/helpers/regeneratorDefine.js"); | |
| 1121 | +function AsyncIterator(t, e) { | |
| 1122 | + function n(r, o, i, f) { | |
| 1123 | + try { | |
| 1124 | + var c = t[r](o), | |
| 1125 | + u = c.value; | |
| 1126 | + return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) { | |
| 1127 | + n("next", t, i, f); | |
| 1128 | + }, function (t) { | |
| 1129 | + n("throw", t, i, f); | |
| 1130 | + }) : e.resolve(u).then(function (t) { | |
| 1131 | + c.value = t, i(c); | |
| 1132 | + }, function (t) { | |
| 1133 | + return n("throw", t, i, f); | |
| 1134 | + }); | |
| 1135 | + } catch (t) { | |
| 1136 | + f(t); | |
| 1137 | + } | |
| 1138 | + } | |
| 1139 | + var r; | |
| 1140 | + this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { | |
| 1141 | + return this; | |
| 1142 | + })), regeneratorDefine(this, "_invoke", function (t, o, i) { | |
| 1143 | + function f() { | |
| 1144 | + return new e(function (e, r) { | |
| 1145 | + n(t, i, e, r); | |
| 1146 | + }); | |
| 1147 | + } | |
| 1148 | + return r = r ? r.then(f, f) : f(); | |
| 1149 | + }, !0); | |
| 1150 | +} | |
| 1151 | +module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1152 | + | |
| 1153 | +/***/ }), | |
| 1154 | + | |
| 1155 | +/***/ "../node_modules/@babel/runtime/helpers/regeneratorDefine.js": | |
| 1156 | +/*!*******************************************************************!*\ | |
| 1157 | + !*** ../node_modules/@babel/runtime/helpers/regeneratorDefine.js ***! | |
| 1158 | + \*******************************************************************/ | |
| 1159 | +/***/ ((module) => { | |
| 1160 | + | |
| 1161 | +function _regeneratorDefine(e, r, n, t) { | |
| 1162 | + var i = Object.defineProperty; | |
| 1163 | + try { | |
| 1164 | + i({}, "", {}); | |
| 1165 | + } catch (e) { | |
| 1166 | + i = 0; | |
| 1167 | + } | |
| 1168 | + module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) { | |
| 1169 | + function o(r, n) { | |
| 1170 | + _regeneratorDefine(e, r, function (e) { | |
| 1171 | + return this._invoke(r, n, e); | |
| 1172 | + }); | |
| 1173 | + } | |
| 1174 | + r ? i ? i(e, r, { | |
| 1175 | + value: n, | |
| 1176 | + enumerable: !t, | |
| 1177 | + configurable: !t, | |
| 1178 | + writable: !t | |
| 1179 | + }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); | |
| 1180 | + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t); | |
| 1181 | +} | |
| 1182 | +module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1183 | + | |
| 1184 | +/***/ }), | |
| 1185 | + | |
| 1186 | +/***/ "../node_modules/@babel/runtime/helpers/regeneratorKeys.js": | |
| 1187 | +/*!*****************************************************************!*\ | |
| 1188 | + !*** ../node_modules/@babel/runtime/helpers/regeneratorKeys.js ***! | |
| 1189 | + \*****************************************************************/ | |
| 1190 | +/***/ ((module) => { | |
| 1191 | + | |
| 1192 | +function _regeneratorKeys(e) { | |
| 1193 | + var n = Object(e), | |
| 1194 | + r = []; | |
| 1195 | + for (var t in n) r.unshift(t); | |
| 1196 | + return function e() { | |
| 1197 | + for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; | |
| 1198 | + return e.done = !0, e; | |
| 1199 | + }; | |
| 1200 | +} | |
| 1201 | +module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1202 | + | |
| 1203 | +/***/ }), | |
| 1204 | + | |
| 1205 | +/***/ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js": | |
| 1206 | +/*!********************************************************************!*\ | |
| 1207 | + !*** ../node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! | |
| 1208 | + \********************************************************************/ | |
| 1209 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1210 | + | |
| 1211 | +var OverloadYield = __webpack_require__(/*! ./OverloadYield.js */ "../node_modules/@babel/runtime/helpers/OverloadYield.js"); | |
| 1212 | +var regenerator = __webpack_require__(/*! ./regenerator.js */ "../node_modules/@babel/runtime/helpers/regenerator.js"); | |
| 1213 | +var regeneratorAsync = __webpack_require__(/*! ./regeneratorAsync.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsync.js"); | |
| 1214 | +var regeneratorAsyncGen = __webpack_require__(/*! ./regeneratorAsyncGen.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js"); | |
| 1215 | +var regeneratorAsyncIterator = __webpack_require__(/*! ./regeneratorAsyncIterator.js */ "../node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js"); | |
| 1216 | +var regeneratorKeys = __webpack_require__(/*! ./regeneratorKeys.js */ "../node_modules/@babel/runtime/helpers/regeneratorKeys.js"); | |
| 1217 | +var regeneratorValues = __webpack_require__(/*! ./regeneratorValues.js */ "../node_modules/@babel/runtime/helpers/regeneratorValues.js"); | |
| 1218 | +function _regeneratorRuntime() { | |
| 1219 | + "use strict"; | |
| 1220 | + | |
| 1221 | + var r = regenerator(), | |
| 1222 | + e = r.m(_regeneratorRuntime), | |
| 1223 | + t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; | |
| 1224 | + function n(r) { | |
| 1225 | + var e = "function" == typeof r && r.constructor; | |
| 1226 | + return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); | |
| 1227 | + } | |
| 1228 | + var o = { | |
| 1229 | + "throw": 1, | |
| 1230 | + "return": 2, | |
| 1231 | + "break": 3, | |
| 1232 | + "continue": 3 | |
| 1233 | + }; | |
| 1234 | + function a(r) { | |
| 1235 | + var e, t; | |
| 1236 | + return function (n) { | |
| 1237 | + e || (e = { | |
| 1238 | + stop: function stop() { | |
| 1239 | + return t(n.a, 2); | |
| 1240 | + }, | |
| 1241 | + "catch": function _catch() { | |
| 1242 | + return n.v; | |
| 1243 | + }, | |
| 1244 | + abrupt: function abrupt(r, e) { | |
| 1245 | + return t(n.a, o[r], e); | |
| 1246 | + }, | |
| 1247 | + delegateYield: function delegateYield(r, o, a) { | |
| 1248 | + return e.resultName = o, t(n.d, regeneratorValues(r), a); | |
| 1249 | + }, | |
| 1250 | + finish: function finish(r) { | |
| 1251 | + return t(n.f, r); | |
| 1252 | + } | |
| 1253 | + }, t = function t(r, _t, o) { | |
| 1254 | + n.p = e.prev, n.n = e.next; | |
| 1255 | + try { | |
| 1256 | + return r(_t, o); | |
| 1257 | + } finally { | |
| 1258 | + e.next = n.n; | |
| 1259 | + } | |
| 1260 | + }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; | |
| 1261 | + try { | |
| 1262 | + return r.call(this, e); | |
| 1263 | + } finally { | |
| 1264 | + n.p = e.prev, n.n = e.next; | |
| 1265 | + } | |
| 1266 | + }; | |
| 1267 | + } | |
| 1268 | + return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() { | |
| 1269 | + return { | |
| 1270 | + wrap: function wrap(e, t, n, o) { | |
| 1271 | + return r.w(a(e), t, n, o && o.reverse()); | |
| 1272 | + }, | |
| 1273 | + isGeneratorFunction: n, | |
| 1274 | + mark: r.m, | |
| 1275 | + awrap: function awrap(r, e) { | |
| 1276 | + return new OverloadYield(r, e); | |
| 1277 | + }, | |
| 1278 | + AsyncIterator: regeneratorAsyncIterator, | |
| 1279 | + async: function async(r, e, t, o, u) { | |
| 1280 | + return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u); | |
| 1281 | + }, | |
| 1282 | + keys: regeneratorKeys, | |
| 1283 | + values: regeneratorValues | |
| 1284 | + }; | |
| 1285 | + }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); | |
| 1286 | +} | |
| 1287 | +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1288 | + | |
| 1289 | +/***/ }), | |
| 1290 | + | |
| 1291 | +/***/ "../node_modules/@babel/runtime/helpers/regeneratorValues.js": | |
| 1292 | +/*!*******************************************************************!*\ | |
| 1293 | + !*** ../node_modules/@babel/runtime/helpers/regeneratorValues.js ***! | |
| 1294 | + \*******************************************************************/ | |
| 1295 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1296 | + | |
| 1297 | +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); | |
| 1298 | +function _regeneratorValues(e) { | |
| 1299 | + if (null != e) { | |
| 1300 | + var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], | |
| 1301 | + r = 0; | |
| 1302 | + if (t) return t.call(e); | |
| 1303 | + if ("function" == typeof e.next) return e; | |
| 1304 | + if (!isNaN(e.length)) return { | |
| 1305 | + next: function next() { | |
| 1306 | + return e && r >= e.length && (e = void 0), { | |
| 1307 | + value: e && e[r++], | |
| 1308 | + done: !e | |
| 1309 | + }; | |
| 1310 | + } | |
| 1311 | + }; | |
| 1312 | + } | |
| 1313 | + throw new TypeError(_typeof(e) + " is not iterable"); | |
| 1314 | +} | |
| 1315 | +module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1316 | + | |
| 1317 | +/***/ }), | |
| 1318 | + | |
| 1319 | +/***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js": | |
| 1320 | +/*!***************************************************************!*\ | |
| 1321 | + !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***! | |
| 1322 | + \***************************************************************/ | |
| 1323 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1324 | + | |
| 1325 | +var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js"); | |
| 1326 | +var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"); | |
| 1327 | +var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); | |
| 1328 | +var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js"); | |
| 1329 | +function _slicedToArray(r, e) { | |
| 1330 | + return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest(); | |
| 1331 | +} | |
| 1332 | +module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1333 | + | |
| 1334 | +/***/ }), | |
| 1335 | + | |
| 1336 | +/***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js": | |
| 1337 | +/*!*************************************************************!*\ | |
| 1338 | + !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***! | |
| 1339 | + \*************************************************************/ | |
| 1340 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1341 | + | |
| 1342 | +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); | |
| 1343 | +function toPrimitive(t, r) { | |
| 1344 | + if ("object" != _typeof(t) || !t) return t; | |
| 1345 | + var e = t[Symbol.toPrimitive]; | |
| 1346 | + if (void 0 !== e) { | |
| 1347 | + var i = e.call(t, r || "default"); | |
| 1348 | + if ("object" != _typeof(i)) return i; | |
| 1349 | + throw new TypeError("@@toPrimitive must return a primitive value."); | |
| 1350 | + } | |
| 1351 | + return ("string" === r ? String : Number)(t); | |
| 1352 | +} | |
| 1353 | +module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1354 | + | |
| 1355 | +/***/ }), | |
| 1356 | + | |
| 1357 | +/***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js": | |
| 1358 | +/*!***************************************************************!*\ | |
| 1359 | + !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***! | |
| 1360 | + \***************************************************************/ | |
| 1361 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1362 | + | |
| 1363 | +var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); | |
| 1364 | +var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js"); | |
| 1365 | +function toPropertyKey(t) { | |
| 1366 | + var i = toPrimitive(t, "string"); | |
| 1367 | + return "symbol" == _typeof(i) ? i : i + ""; | |
| 1368 | +} | |
| 1369 | +module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1370 | + | |
| 1371 | +/***/ }), | |
| 1372 | + | |
| 1373 | +/***/ "../node_modules/@babel/runtime/helpers/typeof.js": | |
| 1374 | +/*!********************************************************!*\ | |
| 1375 | + !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! | |
| 1376 | + \********************************************************/ | |
| 1377 | +/***/ ((module) => { | |
| 1378 | + | |
| 1379 | +function _typeof(o) { | |
| 1380 | + "@babel/helpers - typeof"; | |
| 1381 | + | |
| 1382 | + return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { | |
| 1383 | + return typeof o; | |
| 1384 | + } : function (o) { | |
| 1385 | + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; | |
| 1386 | + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); | |
| 1387 | +} | |
| 1388 | +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1389 | + | |
| 1390 | +/***/ }), | |
| 1391 | + | |
| 1392 | +/***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": | |
| 1393 | +/*!****************************************************************************!*\ | |
| 1394 | + !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! | |
| 1395 | + \****************************************************************************/ | |
| 1396 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1397 | + | |
| 1398 | +var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); | |
| 1399 | +function _unsupportedIterableToArray(r, a) { | |
| 1400 | + if (r) { | |
| 1401 | + if ("string" == typeof r) return arrayLikeToArray(r, a); | |
| 1402 | + var t = {}.toString.call(r).slice(8, -1); | |
| 1403 | + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0; | |
| 1404 | + } | |
| 1405 | +} | |
| 1406 | +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; | |
| 1407 | + | |
| 1408 | +/***/ }), | |
| 1409 | + | |
| 1410 | +/***/ "../node_modules/@babel/runtime/regenerator/index.js": | |
| 1411 | +/*!***********************************************************!*\ | |
| 1412 | + !*** ../node_modules/@babel/runtime/regenerator/index.js ***! | |
| 1413 | + \***********************************************************/ | |
| 1414 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 1415 | + | |
| 1416 | +// TODO(Babel 8): Remove this file. | |
| 1417 | + | |
| 1418 | +var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js")(); | |
| 1419 | +module.exports = runtime; | |
| 1420 | + | |
| 1421 | +// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= | |
| 1422 | +try { | |
| 1423 | + regeneratorRuntime = runtime; | |
| 1424 | +} catch (accidentalStrictMode) { | |
| 1425 | + if (typeof globalThis === "object") { | |
| 1426 | + globalThis.regeneratorRuntime = runtime; | |
| 1427 | + } else { | |
| 1428 | + Function("r", "regeneratorRuntime = r")(runtime); | |
| 1429 | + } | |
| 1430 | +} | |
| 1431 | + | |
| 1432 | + | |
| 1433 | +/***/ }), | |
| 1434 | + | |
| 1435 | +/***/ "../node_modules/dompurify/dist/purify.cjs.js": | |
| 1436 | +/*!****************************************************!*\ | |
| 1437 | + !*** ../node_modules/dompurify/dist/purify.cjs.js ***! | |
| 1438 | + \****************************************************/ | |
| 1439 | +/***/ ((module) => { | |
| 1440 | + | |
| 1441 | +"use strict"; | |
| 1449 | 1442 | /*! @license DOMPurify 3.3.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.0/LICENSE */ |
| 1450 | - var { entries, setPrototypeOf, isFrozen, getPrototypeOf, getOwnPropertyDescriptor } = Object; | |
| 1451 | - var { freeze, seal, create } = Object; | |
| 1452 | - var { apply, construct } = typeof Reflect !== "undefined" && Reflect; | |
| 1453 | - if (!freeze) freeze = function freeze(x) { | |
| 1454 | - return x; | |
| 1455 | - }; | |
| 1456 | - if (!seal) seal = function seal(x) { | |
| 1457 | - return x; | |
| 1458 | - }; | |
| 1459 | - if (!apply) apply = function apply(func, thisArg) { | |
| 1460 | - for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key]; | |
| 1461 | - return func.apply(thisArg, args); | |
| 1462 | - }; | |
| 1463 | - if (!construct) construct = function construct(Func) { | |
| 1464 | - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2]; | |
| 1465 | - return new Func(...args); | |
| 1466 | - }; | |
| 1467 | - var arrayForEach = unapply(Array.prototype.forEach); | |
| 1468 | - var arrayLastIndexOf = unapply(Array.prototype.lastIndexOf); | |
| 1469 | - var arrayPop = unapply(Array.prototype.pop); | |
| 1470 | - var arrayPush = unapply(Array.prototype.push); | |
| 1471 | - var arraySplice = unapply(Array.prototype.splice); | |
| 1472 | - var stringToLowerCase = unapply(String.prototype.toLowerCase); | |
| 1473 | - var stringToString = unapply(String.prototype.toString); | |
| 1474 | - var stringMatch = unapply(String.prototype.match); | |
| 1475 | - var stringReplace = unapply(String.prototype.replace); | |
| 1476 | - var stringIndexOf = unapply(String.prototype.indexOf); | |
| 1477 | - var stringTrim = unapply(String.prototype.trim); | |
| 1478 | - var objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty); | |
| 1479 | - var regExpTest = unapply(RegExp.prototype.test); | |
| 1480 | - var typeErrorCreate = unconstruct(TypeError); | |
| 1481 | - /** | |
| 1482 | - * Creates a new function that calls the given function with a specified thisArg and arguments. | |
| 1483 | - * | |
| 1484 | - * @param func - The function to be wrapped and called. | |
| 1485 | - * @returns A new function that calls the given function with a specified thisArg and arguments. | |
| 1486 | - */ | |
| 1487 | - function unapply(func) { | |
| 1488 | - return function(thisArg) { | |
| 1489 | - if (thisArg instanceof RegExp) thisArg.lastIndex = 0; | |
| 1490 | - for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3]; | |
| 1491 | - return apply(func, thisArg, args); | |
| 1492 | - }; | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | +const { | |
| 1447 | + entries, | |
| 1448 | + setPrototypeOf, | |
| 1449 | + isFrozen, | |
| 1450 | + getPrototypeOf, | |
| 1451 | + getOwnPropertyDescriptor | |
| 1452 | +} = Object; | |
| 1453 | +let { | |
| 1454 | + freeze, | |
| 1455 | + seal, | |
| 1456 | + create | |
| 1457 | +} = Object; // eslint-disable-line import/no-mutable-exports | |
| 1458 | +let { | |
| 1459 | + apply, | |
| 1460 | + construct | |
| 1461 | +} = typeof Reflect !== 'undefined' && Reflect; | |
| 1462 | +if (!freeze) { | |
| 1463 | + freeze = function freeze(x) { | |
| 1464 | + return x; | |
| 1465 | + }; | |
| 1466 | +} | |
| 1467 | +if (!seal) { | |
| 1468 | + seal = function seal(x) { | |
| 1469 | + return x; | |
| 1470 | + }; | |
| 1471 | +} | |
| 1472 | +if (!apply) { | |
| 1473 | + apply = function apply(func, thisArg) { | |
| 1474 | + for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { | |
| 1475 | + args[_key - 2] = arguments[_key]; | |
| 1476 | + } | |
| 1477 | + return func.apply(thisArg, args); | |
| 1478 | + }; | |
| 1479 | +} | |
| 1480 | +if (!construct) { | |
| 1481 | + construct = function construct(Func) { | |
| 1482 | + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { | |
| 1483 | + args[_key2 - 1] = arguments[_key2]; | |
| 1484 | + } | |
| 1485 | + return new Func(...args); | |
| 1486 | + }; | |
| 1487 | +} | |
| 1488 | +const arrayForEach = unapply(Array.prototype.forEach); | |
| 1489 | +const arrayLastIndexOf = unapply(Array.prototype.lastIndexOf); | |
| 1490 | +const arrayPop = unapply(Array.prototype.pop); | |
| 1491 | +const arrayPush = unapply(Array.prototype.push); | |
| 1492 | +const arraySplice = unapply(Array.prototype.splice); | |
| 1493 | +const stringToLowerCase = unapply(String.prototype.toLowerCase); | |
| 1494 | +const stringToString = unapply(String.prototype.toString); | |
| 1495 | +const stringMatch = unapply(String.prototype.match); | |
| 1496 | +const stringReplace = unapply(String.prototype.replace); | |
| 1497 | +const stringIndexOf = unapply(String.prototype.indexOf); | |
| 1498 | +const stringTrim = unapply(String.prototype.trim); | |
| 1499 | +const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty); | |
| 1500 | +const regExpTest = unapply(RegExp.prototype.test); | |
| 1501 | +const typeErrorCreate = unconstruct(TypeError); | |
| 1502 | +/** | |
| 1503 | + * Creates a new function that calls the given function with a specified thisArg and arguments. | |
| 1504 | + * | |
| 1505 | + * @param func - The function to be wrapped and called. | |
| 1506 | + * @returns A new function that calls the given function with a specified thisArg and arguments. | |
| 1507 | + */ | |
| 1508 | +function unapply(func) { | |
| 1509 | + return function (thisArg) { | |
| 1510 | + if (thisArg instanceof RegExp) { | |
| 1511 | + thisArg.lastIndex = 0; | |
| 1512 | + } | |
| 1513 | + for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { | |
| 1514 | + args[_key3 - 1] = arguments[_key3]; | |
| 1515 | + } | |
| 1516 | + return apply(func, thisArg, args); | |
| 1517 | + }; | |
| 1518 | +} | |
| 1519 | +/** | |
| 1520 | + * Creates a new function that constructs an instance of the given constructor function with the provided arguments. | |
| 1521 | + * | |
| 1522 | + * @param func - The constructor function to be wrapped and called. | |
| 1523 | + * @returns A new function that constructs an instance of the given constructor function with the provided arguments. | |
| 1524 | + */ | |
| 1525 | +function unconstruct(Func) { | |
| 1526 | + return function () { | |
| 1527 | + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { | |
| 1528 | + args[_key4] = arguments[_key4]; | |
| 1529 | + } | |
| 1530 | + return construct(Func, args); | |
| 1531 | + }; | |
| 1532 | +} | |
| 1533 | +/** | |
| 1534 | + * Add properties to a lookup table | |
| 1535 | + * | |
| 1536 | + * @param set - The set to which elements will be added. | |
| 1537 | + * @param array - The array containing elements to be added to the set. | |
| 1538 | + * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set. | |
| 1539 | + * @returns The modified set with added elements. | |
| 1540 | + */ | |
| 1541 | +function addToSet(set, array) { | |
| 1542 | + let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase; | |
| 1543 | + if (setPrototypeOf) { | |
| 1544 | + // Make 'in' and truthy checks like Boolean(set.constructor) | |
| 1545 | + // independent of any properties defined on Object.prototype. | |
| 1546 | + // Prevent prototype setters from intercepting set as a this value. | |
| 1547 | + setPrototypeOf(set, null); | |
| 1548 | + } | |
| 1549 | + let l = array.length; | |
| 1550 | + while (l--) { | |
| 1551 | + let element = array[l]; | |
| 1552 | + if (typeof element === 'string') { | |
| 1553 | + const lcElement = transformCaseFunc(element); | |
| 1554 | + if (lcElement !== element) { | |
| 1555 | + // Config presets (e.g. tags.js, attrs.js) are immutable. | |
| 1556 | + if (!isFrozen(array)) { | |
| 1557 | + array[l] = lcElement; | |
| 1558 | + } | |
| 1559 | + element = lcElement; | |
| 1560 | + } | |
| 1561 | + } | |
| 1562 | + set[element] = true; | |
| 1563 | + } | |
| 1564 | + return set; | |
| 1565 | +} | |
| 1566 | +/** | |
| 1567 | + * Clean up an array to harden against CSPP | |
| 1568 | + * | |
| 1569 | + * @param array - The array to be cleaned. | |
| 1570 | + * @returns The cleaned version of the array | |
| 1571 | + */ | |
| 1572 | +function cleanArray(array) { | |
| 1573 | + for (let index = 0; index < array.length; index++) { | |
| 1574 | + const isPropertyExist = objectHasOwnProperty(array, index); | |
| 1575 | + if (!isPropertyExist) { | |
| 1576 | + array[index] = null; | |
| 1577 | + } | |
| 1578 | + } | |
| 1579 | + return array; | |
| 1580 | +} | |
| 1581 | +/** | |
| 1582 | + * Shallow clone an object | |
| 1583 | + * | |
| 1584 | + * @param object - The object to be cloned. | |
| 1585 | + * @returns A new object that copies the original. | |
| 1586 | + */ | |
| 1587 | +function clone(object) { | |
| 1588 | + const newObject = create(null); | |
| 1589 | + for (const [property, value] of entries(object)) { | |
| 1590 | + const isPropertyExist = objectHasOwnProperty(object, property); | |
| 1591 | + if (isPropertyExist) { | |
| 1592 | + if (Array.isArray(value)) { | |
| 1593 | + newObject[property] = cleanArray(value); | |
| 1594 | + } else if (value && typeof value === 'object' && value.constructor === Object) { | |
| 1595 | + newObject[property] = clone(value); | |
| 1596 | + } else { | |
| 1597 | + newObject[property] = value; | |
| 1598 | + } | |
| 1599 | + } | |
| 1600 | + } | |
| 1601 | + return newObject; | |
| 1602 | +} | |
| 1603 | +/** | |
| 1604 | + * This method automatically checks if the prop is function or getter and behaves accordingly. | |
| 1605 | + * | |
| 1606 | + * @param object - The object to look up the getter function in its prototype chain. | |
| 1607 | + * @param prop - The property name for which to find the getter function. | |
| 1608 | + * @returns The getter function found in the prototype chain or a fallback function. | |
| 1609 | + */ | |
| 1610 | +function lookupGetter(object, prop) { | |
| 1611 | + while (object !== null) { | |
| 1612 | + const desc = getOwnPropertyDescriptor(object, prop); | |
| 1613 | + if (desc) { | |
| 1614 | + if (desc.get) { | |
| 1615 | + return unapply(desc.get); | |
| 1616 | + } | |
| 1617 | + if (typeof desc.value === 'function') { | |
| 1618 | + return unapply(desc.value); | |
| 1619 | + } | |
| 1620 | + } | |
| 1621 | + object = getPrototypeOf(object); | |
| 1622 | + } | |
| 1623 | + function fallbackValue() { | |
| 1624 | + return null; | |
| 1625 | + } | |
| 1626 | + return fallbackValue; | |
| 1627 | +} | |
| 1628 | + | |
| 1629 | +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', 'search', 'section', 'select', 'shadow', 'slot', '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']); | |
| 1630 | +const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']); | |
| 1631 | +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']); | |
| 1632 | +// List of SVG elements that are disallowed by default. | |
| 1633 | +// We still need to know them so that we can do namespace | |
| 1634 | +// checks properly in case one wants to add them to | |
| 1635 | +// allow-list. | |
| 1636 | +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']); | |
| 1637 | +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']); | |
| 1638 | +// Similarly to SVG, we want to know all MathML elements, | |
| 1639 | +// even those that we disallow by default. | |
| 1640 | +const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']); | |
| 1641 | +const text = freeze(['#text']); | |
| 1642 | + | |
| 1643 | +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', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', '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', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']); | |
| 1644 | +const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', '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', 'exponent', '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', 'intercept', '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', 'mask-type', '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', 'slope', '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', 'tablevalues', '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']); | |
| 1645 | +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']); | |
| 1646 | +const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']); | |
| 1647 | + | |
| 1648 | +// eslint-disable-next-line unicorn/better-regex | |
| 1649 | +const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode | |
| 1650 | +const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); | |
| 1651 | +const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); // eslint-disable-line unicorn/better-regex | |
| 1652 | +const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); // eslint-disable-line no-useless-escape | |
| 1653 | +const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape | |
| 1654 | +const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape | |
| 1655 | +); | |
| 1656 | +const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); | |
| 1657 | +const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex | |
| 1658 | +); | |
| 1659 | +const DOCTYPE_NAME = seal(/^html$/i); | |
| 1660 | +const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i); | |
| 1661 | + | |
| 1662 | +var EXPRESSIONS = /*#__PURE__*/Object.freeze({ | |
| 1663 | + __proto__: null, | |
| 1664 | + ARIA_ATTR: ARIA_ATTR, | |
| 1665 | + ATTR_WHITESPACE: ATTR_WHITESPACE, | |
| 1666 | + CUSTOM_ELEMENT: CUSTOM_ELEMENT, | |
| 1667 | + DATA_ATTR: DATA_ATTR, | |
| 1668 | + DOCTYPE_NAME: DOCTYPE_NAME, | |
| 1669 | + ERB_EXPR: ERB_EXPR, | |
| 1670 | + IS_ALLOWED_URI: IS_ALLOWED_URI, | |
| 1671 | + IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA, | |
| 1672 | + MUSTACHE_EXPR: MUSTACHE_EXPR, | |
| 1673 | + TMPLIT_EXPR: TMPLIT_EXPR | |
| 1674 | +}); | |
| 1675 | + | |
| 1676 | +/* eslint-disable @typescript-eslint/indent */ | |
| 1677 | +// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType | |
| 1678 | +const NODE_TYPE = { | |
| 1679 | + element: 1, | |
| 1680 | + attribute: 2, | |
| 1681 | + text: 3, | |
| 1682 | + cdataSection: 4, | |
| 1683 | + entityReference: 5, | |
| 1684 | + // Deprecated | |
| 1685 | + entityNode: 6, | |
| 1686 | + // Deprecated | |
| 1687 | + progressingInstruction: 7, | |
| 1688 | + comment: 8, | |
| 1689 | + document: 9, | |
| 1690 | + documentType: 10, | |
| 1691 | + documentFragment: 11, | |
| 1692 | + notation: 12 // Deprecated | |
| 1693 | +}; | |
| 1694 | +const getGlobal = function getGlobal() { | |
| 1695 | + return typeof window === 'undefined' ? null : window; | |
| 1696 | +}; | |
| 1697 | +/** | |
| 1698 | + * Creates a no-op policy for internal use only. | |
| 1699 | + * Don't export this function outside this module! | |
| 1700 | + * @param trustedTypes The policy factory. | |
| 1701 | + * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix). | |
| 1702 | + * @return The policy created (or null, if Trusted Types | |
| 1703 | + * are not supported or creating the policy failed). | |
| 1704 | + */ | |
| 1705 | +const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) { | |
| 1706 | + if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') { | |
| 1707 | + return null; | |
| 1708 | + } | |
| 1709 | + // Allow the callers to control the unique policy name | |
| 1710 | + // by adding a data-tt-policy-suffix to the script element with the DOMPurify. | |
| 1711 | + // Policy creation with duplicate names throws in Trusted Types. | |
| 1712 | + let suffix = null; | |
| 1713 | + const ATTR_NAME = 'data-tt-policy-suffix'; | |
| 1714 | + if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) { | |
| 1715 | + suffix = purifyHostElement.getAttribute(ATTR_NAME); | |
| 1716 | + } | |
| 1717 | + const policyName = 'dompurify' + (suffix ? '#' + suffix : ''); | |
| 1718 | + try { | |
| 1719 | + return trustedTypes.createPolicy(policyName, { | |
| 1720 | + createHTML(html) { | |
| 1721 | + return html; | |
| 1722 | + }, | |
| 1723 | + createScriptURL(scriptUrl) { | |
| 1724 | + return scriptUrl; | |
| 1725 | + } | |
| 1726 | + }); | |
| 1727 | + } catch (_) { | |
| 1728 | + // Policy creation failed (most likely another DOMPurify script has | |
| 1729 | + // already run). Skip creating the policy, as this will only cause errors | |
| 1730 | + // if TT are enforced. | |
| 1731 | + console.warn('TrustedTypes policy ' + policyName + ' could not be created.'); | |
| 1732 | + return null; | |
| 1733 | + } | |
| 1734 | +}; | |
| 1735 | +const _createHooksMap = function _createHooksMap() { | |
| 1736 | + return { | |
| 1737 | + afterSanitizeAttributes: [], | |
| 1738 | + afterSanitizeElements: [], | |
| 1739 | + afterSanitizeShadowDOM: [], | |
| 1740 | + beforeSanitizeAttributes: [], | |
| 1741 | + beforeSanitizeElements: [], | |
| 1742 | + beforeSanitizeShadowDOM: [], | |
| 1743 | + uponSanitizeAttribute: [], | |
| 1744 | + uponSanitizeElement: [], | |
| 1745 | + uponSanitizeShadowNode: [] | |
| 1746 | + }; | |
| 1747 | +}; | |
| 1748 | +function createDOMPurify() { | |
| 1749 | + let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal(); | |
| 1750 | + const DOMPurify = root => createDOMPurify(root); | |
| 1751 | + DOMPurify.version = '3.3.0'; | |
| 1752 | + DOMPurify.removed = []; | |
| 1753 | + if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) { | |
| 1754 | + // Not running in a browser, provide a factory function | |
| 1755 | + // so that you can pass your own Window | |
| 1756 | + DOMPurify.isSupported = false; | |
| 1757 | + return DOMPurify; | |
| 1758 | + } | |
| 1759 | + let { | |
| 1760 | + document | |
| 1761 | + } = window; | |
| 1762 | + const originalDocument = document; | |
| 1763 | + const currentScript = originalDocument.currentScript; | |
| 1764 | + const { | |
| 1765 | + DocumentFragment, | |
| 1766 | + HTMLTemplateElement, | |
| 1767 | + Node, | |
| 1768 | + Element, | |
| 1769 | + NodeFilter, | |
| 1770 | + NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap, | |
| 1771 | + HTMLFormElement, | |
| 1772 | + DOMParser, | |
| 1773 | + trustedTypes | |
| 1774 | + } = window; | |
| 1775 | + const ElementPrototype = Element.prototype; | |
| 1776 | + const cloneNode = lookupGetter(ElementPrototype, 'cloneNode'); | |
| 1777 | + const remove = lookupGetter(ElementPrototype, 'remove'); | |
| 1778 | + const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling'); | |
| 1779 | + const getChildNodes = lookupGetter(ElementPrototype, 'childNodes'); | |
| 1780 | + const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); | |
| 1781 | + // As per issue #47, the web-components registry is inherited by a | |
| 1782 | + // new document created via createHTMLDocument. As per the spec | |
| 1783 | + // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries) | |
| 1784 | + // a new empty registry is used when creating a template contents owner | |
| 1785 | + // document, so we use that as our parent document to ensure nothing | |
| 1786 | + // is inherited. | |
| 1787 | + if (typeof HTMLTemplateElement === 'function') { | |
| 1788 | + const template = document.createElement('template'); | |
| 1789 | + if (template.content && template.content.ownerDocument) { | |
| 1790 | + document = template.content.ownerDocument; | |
| 1791 | + } | |
| 1792 | + } | |
| 1793 | + let trustedTypesPolicy; | |
| 1794 | + let emptyHTML = ''; | |
| 1795 | + const { | |
| 1796 | + implementation, | |
| 1797 | + createNodeIterator, | |
| 1798 | + createDocumentFragment, | |
| 1799 | + getElementsByTagName | |
| 1800 | + } = document; | |
| 1801 | + const { | |
| 1802 | + importNode | |
| 1803 | + } = originalDocument; | |
| 1804 | + let hooks = _createHooksMap(); | |
| 1805 | + /** | |
| 1806 | + * Expose whether this browser supports running the full DOMPurify. | |
| 1807 | + */ | |
| 1808 | + DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined; | |
| 1809 | + const { | |
| 1810 | + MUSTACHE_EXPR, | |
| 1811 | + ERB_EXPR, | |
| 1812 | + TMPLIT_EXPR, | |
| 1813 | + DATA_ATTR, | |
| 1814 | + ARIA_ATTR, | |
| 1815 | + IS_SCRIPT_OR_DATA, | |
| 1816 | + ATTR_WHITESPACE, | |
| 1817 | + CUSTOM_ELEMENT | |
| 1818 | + } = EXPRESSIONS; | |
| 1819 | + let { | |
| 1820 | + IS_ALLOWED_URI: IS_ALLOWED_URI$1 | |
| 1821 | + } = EXPRESSIONS; | |
| 1822 | + /** | |
| 1823 | + * We consider the elements and attributes below to be safe. Ideally | |
| 1824 | + * don't add any new ones but feel free to remove unwanted ones. | |
| 1825 | + */ | |
| 1826 | + /* allowed element names */ | |
| 1827 | + let ALLOWED_TAGS = null; | |
| 1828 | + const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]); | |
| 1829 | + /* Allowed attribute names */ | |
| 1830 | + let ALLOWED_ATTR = null; | |
| 1831 | + const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]); | |
| 1832 | + /* | |
| 1833 | + * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements. | |
| 1834 | + * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements) | |
| 1835 | + * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list) | |
| 1836 | + * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`. | |
| 1837 | + */ | |
| 1838 | + let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, { | |
| 1839 | + tagNameCheck: { | |
| 1840 | + writable: true, | |
| 1841 | + configurable: false, | |
| 1842 | + enumerable: true, | |
| 1843 | + value: null | |
| 1844 | + }, | |
| 1845 | + attributeNameCheck: { | |
| 1846 | + writable: true, | |
| 1847 | + configurable: false, | |
| 1848 | + enumerable: true, | |
| 1849 | + value: null | |
| 1850 | + }, | |
| 1851 | + allowCustomizedBuiltInElements: { | |
| 1852 | + writable: true, | |
| 1853 | + configurable: false, | |
| 1854 | + enumerable: true, | |
| 1855 | + value: false | |
| 1856 | + } | |
| 1857 | + })); | |
| 1858 | + /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */ | |
| 1859 | + let FORBID_TAGS = null; | |
| 1860 | + /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */ | |
| 1861 | + let FORBID_ATTR = null; | |
| 1862 | + /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */ | |
| 1863 | + const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, { | |
| 1864 | + tagCheck: { | |
| 1865 | + writable: true, | |
| 1866 | + configurable: false, | |
| 1867 | + enumerable: true, | |
| 1868 | + value: null | |
| 1869 | + }, | |
| 1870 | + attributeCheck: { | |
| 1871 | + writable: true, | |
| 1872 | + configurable: false, | |
| 1873 | + enumerable: true, | |
| 1874 | + value: null | |
| 1875 | + } | |
| 1876 | + })); | |
| 1877 | + /* Decide if ARIA attributes are okay */ | |
| 1878 | + let ALLOW_ARIA_ATTR = true; | |
| 1879 | + /* Decide if custom data attributes are okay */ | |
| 1880 | + let ALLOW_DATA_ATTR = true; | |
| 1881 | + /* Decide if unknown protocols are okay */ | |
| 1882 | + let ALLOW_UNKNOWN_PROTOCOLS = false; | |
| 1883 | + /* Decide if self-closing tags in attributes are allowed. | |
| 1884 | + * Usually removed due to a mXSS issue in jQuery 3.0 */ | |
| 1885 | + let ALLOW_SELF_CLOSE_IN_ATTR = true; | |
| 1886 | + /* Output should be safe for common template engines. | |
| 1887 | + * This means, DOMPurify removes data attributes, mustaches and ERB | |
| 1888 | + */ | |
| 1889 | + let SAFE_FOR_TEMPLATES = false; | |
| 1890 | + /* Output should be safe even for XML used within HTML and alike. | |
| 1891 | + * This means, DOMPurify removes comments when containing risky content. | |
| 1892 | + */ | |
| 1893 | + let SAFE_FOR_XML = true; | |
| 1894 | + /* Decide if document with <html>... should be returned */ | |
| 1895 | + let WHOLE_DOCUMENT = false; | |
| 1896 | + /* Track whether config is already set on this instance of DOMPurify. */ | |
| 1897 | + let SET_CONFIG = false; | |
| 1898 | + /* Decide if all elements (e.g. style, script) must be children of | |
| 1899 | + * document.body. By default, browsers might move them to document.head */ | |
| 1900 | + let FORCE_BODY = false; | |
| 1901 | + /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html | |
| 1902 | + * string (or a TrustedHTML object if Trusted Types are supported). | |
| 1903 | + * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead | |
| 1904 | + */ | |
| 1905 | + let RETURN_DOM = false; | |
| 1906 | + /* Decide if a DOM `DocumentFragment` should be returned, instead of a html | |
| 1907 | + * string (or a TrustedHTML object if Trusted Types are supported) */ | |
| 1908 | + let RETURN_DOM_FRAGMENT = false; | |
| 1909 | + /* Try to return a Trusted Type object instead of a string, return a string in | |
| 1910 | + * case Trusted Types are not supported */ | |
| 1911 | + let RETURN_TRUSTED_TYPE = false; | |
| 1912 | + /* Output should be free from DOM clobbering attacks? | |
| 1913 | + * This sanitizes markups named with colliding, clobberable built-in DOM APIs. | |
| 1914 | + */ | |
| 1915 | + let SANITIZE_DOM = true; | |
| 1916 | + /* Achieve full DOM Clobbering protection by isolating the namespace of named | |
| 1917 | + * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules. | |
| 1918 | + * | |
| 1919 | + * HTML/DOM spec rules that enable DOM Clobbering: | |
| 1920 | + * - Named Access on Window (§7.3.3) | |
| 1921 | + * - DOM Tree Accessors (§3.1.5) | |
| 1922 | + * - Form Element Parent-Child Relations (§4.10.3) | |
| 1923 | + * - Iframe srcdoc / Nested WindowProxies (§4.8.5) | |
| 1924 | + * - HTMLCollection (§4.2.10.2) | |
| 1925 | + * | |
| 1926 | + * Namespace isolation is implemented by prefixing `id` and `name` attributes | |
| 1927 | + * with a constant string, i.e., `user-content-` | |
| 1928 | + */ | |
| 1929 | + let SANITIZE_NAMED_PROPS = false; | |
| 1930 | + const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-'; | |
| 1931 | + /* Keep element content when removing element? */ | |
| 1932 | + let KEEP_CONTENT = true; | |
| 1933 | + /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead | |
| 1934 | + * of importing it into a new Document and returning a sanitized copy */ | |
| 1935 | + let IN_PLACE = false; | |
| 1936 | + /* Allow usage of profiles like html, svg and mathMl */ | |
| 1937 | + let USE_PROFILES = {}; | |
| 1938 | + /* Tags to ignore content of when KEEP_CONTENT is true */ | |
| 1939 | + let FORBID_CONTENTS = null; | |
| 1940 | + 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']); | |
| 1941 | + /* Tags that are safe for data: URIs */ | |
| 1942 | + let DATA_URI_TAGS = null; | |
| 1943 | + const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']); | |
| 1944 | + /* Attributes safe for values like "javascript:" */ | |
| 1945 | + let URI_SAFE_ATTRIBUTES = null; | |
| 1946 | + const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']); | |
| 1947 | + const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'; | |
| 1948 | + const SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; | |
| 1949 | + const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; | |
| 1950 | + /* Document namespace */ | |
| 1951 | + let NAMESPACE = HTML_NAMESPACE; | |
| 1952 | + let IS_EMPTY_INPUT = false; | |
| 1953 | + /* Allowed XHTML+XML namespaces */ | |
| 1954 | + let ALLOWED_NAMESPACES = null; | |
| 1955 | + const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString); | |
| 1956 | + let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); | |
| 1957 | + let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']); | |
| 1958 | + // Certain elements are allowed in both SVG and HTML | |
| 1959 | + // namespace. We need to specify them explicitly | |
| 1960 | + // so that they don't get erroneously deleted from | |
| 1961 | + // HTML namespace. | |
| 1962 | + const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']); | |
| 1963 | + /* Parsing of strict XHTML documents */ | |
| 1964 | + let PARSER_MEDIA_TYPE = null; | |
| 1965 | + const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html']; | |
| 1966 | + const DEFAULT_PARSER_MEDIA_TYPE = 'text/html'; | |
| 1967 | + let transformCaseFunc = null; | |
| 1968 | + /* Keep a reference to config to pass to hooks */ | |
| 1969 | + let CONFIG = null; | |
| 1970 | + /* Ideally, do not touch anything below this line */ | |
| 1971 | + /* ______________________________________________ */ | |
| 1972 | + const formElement = document.createElement('form'); | |
| 1973 | + const isRegexOrFunction = function isRegexOrFunction(testValue) { | |
| 1974 | + return testValue instanceof RegExp || testValue instanceof Function; | |
| 1975 | + }; | |
| 1976 | + /** | |
| 1977 | + * _parseConfig | |
| 1978 | + * | |
| 1979 | + * @param cfg optional config literal | |
| 1980 | + */ | |
| 1981 | + // eslint-disable-next-line complexity | |
| 1982 | + const _parseConfig = function _parseConfig() { | |
| 1983 | + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | |
| 1984 | + if (CONFIG && CONFIG === cfg) { | |
| 1985 | + return; | |
| 1986 | + } | |
| 1987 | + /* Shield configuration object from tampering */ | |
| 1988 | + if (!cfg || typeof cfg !== 'object') { | |
| 1989 | + cfg = {}; | |
| 1990 | + } | |
| 1991 | + /* Shield configuration object from prototype pollution */ | |
| 1992 | + cfg = clone(cfg); | |
| 1993 | + PARSER_MEDIA_TYPE = | |
| 1994 | + // eslint-disable-next-line unicorn/prefer-includes | |
| 1995 | + SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE; | |
| 1996 | + // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is. | |
| 1997 | + transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase; | |
| 1998 | + /* Set configuration parameters */ | |
| 1999 | + ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; | |
| 2000 | + ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; | |
| 2001 | + ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; | |
| 2002 | + URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES; | |
| 2003 | + DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS; | |
| 2004 | + FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; | |
| 2005 | + FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({}); | |
| 2006 | + FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({}); | |
| 2007 | + USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false; | |
| 2008 | + ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true | |
| 2009 | + ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true | |
| 2010 | + ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false | |
| 2011 | + ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true | |
| 2012 | + SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false | |
| 2013 | + SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true | |
| 2014 | + WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false | |
| 2015 | + RETURN_DOM = cfg.RETURN_DOM || false; // Default false | |
| 2016 | + RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false | |
| 2017 | + RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false | |
| 2018 | + FORCE_BODY = cfg.FORCE_BODY || false; // Default false | |
| 2019 | + SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true | |
| 2020 | + SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false | |
| 2021 | + KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true | |
| 2022 | + IN_PLACE = cfg.IN_PLACE || false; // Default false | |
| 2023 | + IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI; | |
| 2024 | + NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; | |
| 2025 | + MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS; | |
| 2026 | + HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS; | |
| 2027 | + CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; | |
| 2028 | + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) { | |
| 2029 | + CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; | |
| 2030 | + } | |
| 2031 | + if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) { | |
| 2032 | + CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; | |
| 2033 | + } | |
| 2034 | + if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') { | |
| 2035 | + CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; | |
| 2036 | + } | |
| 2037 | + if (SAFE_FOR_TEMPLATES) { | |
| 2038 | + ALLOW_DATA_ATTR = false; | |
| 2039 | + } | |
| 2040 | + if (RETURN_DOM_FRAGMENT) { | |
| 2041 | + RETURN_DOM = true; | |
| 2042 | + } | |
| 2043 | + /* Parse profile info */ | |
| 2044 | + if (USE_PROFILES) { | |
| 2045 | + ALLOWED_TAGS = addToSet({}, text); | |
| 2046 | + ALLOWED_ATTR = []; | |
| 2047 | + if (USE_PROFILES.html === true) { | |
| 2048 | + addToSet(ALLOWED_TAGS, html$1); | |
| 2049 | + addToSet(ALLOWED_ATTR, html); | |
| 2050 | + } | |
| 2051 | + if (USE_PROFILES.svg === true) { | |
| 2052 | + addToSet(ALLOWED_TAGS, svg$1); | |
| 2053 | + addToSet(ALLOWED_ATTR, svg); | |
| 2054 | + addToSet(ALLOWED_ATTR, xml); | |
| 2055 | + } | |
| 2056 | + if (USE_PROFILES.svgFilters === true) { | |
| 2057 | + addToSet(ALLOWED_TAGS, svgFilters); | |
| 2058 | + addToSet(ALLOWED_ATTR, svg); | |
| 2059 | + addToSet(ALLOWED_ATTR, xml); | |
| 2060 | + } | |
| 2061 | + if (USE_PROFILES.mathMl === true) { | |
| 2062 | + addToSet(ALLOWED_TAGS, mathMl$1); | |
| 2063 | + addToSet(ALLOWED_ATTR, mathMl); | |
| 2064 | + addToSet(ALLOWED_ATTR, xml); | |
| 2065 | + } | |
| 2066 | + } | |
| 2067 | + /* Merge configuration parameters */ | |
| 2068 | + if (cfg.ADD_TAGS) { | |
| 2069 | + if (typeof cfg.ADD_TAGS === 'function') { | |
| 2070 | + EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS; | |
| 2071 | + } else { | |
| 2072 | + if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) { | |
| 2073 | + ALLOWED_TAGS = clone(ALLOWED_TAGS); | |
| 2074 | + } | |
| 2075 | + addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); | |
| 2076 | + } | |
| 2077 | + } | |
| 2078 | + if (cfg.ADD_ATTR) { | |
| 2079 | + if (typeof cfg.ADD_ATTR === 'function') { | |
| 2080 | + EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR; | |
| 2081 | + } else { | |
| 2082 | + if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) { | |
| 2083 | + ALLOWED_ATTR = clone(ALLOWED_ATTR); | |
| 2084 | + } | |
| 2085 | + addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); | |
| 2086 | + } | |
| 2087 | + } | |
| 2088 | + if (cfg.ADD_URI_SAFE_ATTR) { | |
| 2089 | + addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); | |
| 2090 | + } | |
| 2091 | + if (cfg.FORBID_CONTENTS) { | |
| 2092 | + if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) { | |
| 2093 | + FORBID_CONTENTS = clone(FORBID_CONTENTS); | |
| 2094 | + } | |
| 2095 | + addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); | |
| 2096 | + } | |
| 2097 | + /* Add #text in case KEEP_CONTENT is set to true */ | |
| 2098 | + if (KEEP_CONTENT) { | |
| 2099 | + ALLOWED_TAGS['#text'] = true; | |
| 2100 | + } | |
| 2101 | + /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */ | |
| 2102 | + if (WHOLE_DOCUMENT) { | |
| 2103 | + addToSet(ALLOWED_TAGS, ['html', 'head', 'body']); | |
| 2104 | + } | |
| 2105 | + /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */ | |
| 2106 | + if (ALLOWED_TAGS.table) { | |
| 2107 | + addToSet(ALLOWED_TAGS, ['tbody']); | |
| 2108 | + delete FORBID_TAGS.tbody; | |
| 2109 | + } | |
| 2110 | + if (cfg.TRUSTED_TYPES_POLICY) { | |
| 2111 | + if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') { | |
| 2112 | + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); | |
| 2113 | + } | |
| 2114 | + if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') { | |
| 2115 | + throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); | |
| 2116 | + } | |
| 2117 | + // Overwrite existing TrustedTypes policy. | |
| 2118 | + trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; | |
| 2119 | + // Sign local variables required by `sanitize`. | |
| 2120 | + emptyHTML = trustedTypesPolicy.createHTML(''); | |
| 2121 | + } else { | |
| 2122 | + // Uninitialized policy, attempt to initialize the internal dompurify policy. | |
| 2123 | + if (trustedTypesPolicy === undefined) { | |
| 2124 | + trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript); | |
| 2125 | + } | |
| 2126 | + // If creating the internal policy succeeded sign internal variables. | |
| 2127 | + if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') { | |
| 2128 | + emptyHTML = trustedTypesPolicy.createHTML(''); | |
| 2129 | + } | |
| 2130 | + } | |
| 2131 | + // Prevent further manipulation of configuration. | |
| 2132 | + // Not available in IE8, Safari 5, etc. | |
| 2133 | + if (freeze) { | |
| 2134 | + freeze(cfg); | |
| 2135 | + } | |
| 2136 | + CONFIG = cfg; | |
| 2137 | + }; | |
| 2138 | + /* Keep track of all possible SVG and MathML tags | |
| 2139 | + * so that we can perform the namespace checks | |
| 2140 | + * correctly. */ | |
| 2141 | + const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]); | |
| 2142 | + const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]); | |
| 2143 | + /** | |
| 2144 | + * @param element a DOM element whose namespace is being checked | |
| 2145 | + * @returns Return false if the element has a | |
| 2146 | + * namespace that a spec-compliant parser would never | |
| 2147 | + * return. Return true otherwise. | |
| 2148 | + */ | |
| 2149 | + const _checkValidNamespace = function _checkValidNamespace(element) { | |
| 2150 | + let parent = getParentNode(element); | |
| 2151 | + // In JSDOM, if we're inside shadow DOM, then parentNode | |
| 2152 | + // can be null. We just simulate parent in this case. | |
| 2153 | + if (!parent || !parent.tagName) { | |
| 2154 | + parent = { | |
| 2155 | + namespaceURI: NAMESPACE, | |
| 2156 | + tagName: 'template' | |
| 2157 | + }; | |
| 2158 | + } | |
| 2159 | + const tagName = stringToLowerCase(element.tagName); | |
| 2160 | + const parentTagName = stringToLowerCase(parent.tagName); | |
| 2161 | + if (!ALLOWED_NAMESPACES[element.namespaceURI]) { | |
| 2162 | + return false; | |
| 2163 | + } | |
| 2164 | + if (element.namespaceURI === SVG_NAMESPACE) { | |
| 2165 | + // The only way to switch from HTML namespace to SVG | |
| 2166 | + // is via <svg>. If it happens via any other tag, then | |
| 2167 | + // it should be killed. | |
| 2168 | + if (parent.namespaceURI === HTML_NAMESPACE) { | |
| 2169 | + return tagName === 'svg'; | |
| 2170 | + } | |
| 2171 | + // The only way to switch from MathML to SVG is via` | |
| 2172 | + // svg if parent is either <annotation-xml> or MathML | |
| 2173 | + // text integration points. | |
| 2174 | + if (parent.namespaceURI === MATHML_NAMESPACE) { | |
| 2175 | + return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); | |
| 2176 | + } | |
| 2177 | + // We only allow elements that are defined in SVG | |
| 2178 | + // spec. All others are disallowed in SVG namespace. | |
| 2179 | + return Boolean(ALL_SVG_TAGS[tagName]); | |
| 2180 | + } | |
| 2181 | + if (element.namespaceURI === MATHML_NAMESPACE) { | |
| 2182 | + // The only way to switch from HTML namespace to MathML | |
| 2183 | + // is via <math>. If it happens via any other tag, then | |
| 2184 | + // it should be killed. | |
| 2185 | + if (parent.namespaceURI === HTML_NAMESPACE) { | |
| 2186 | + return tagName === 'math'; | |
| 2187 | + } | |
| 2188 | + // The only way to switch from SVG to MathML is via | |
| 2189 | + // <math> and HTML integration points | |
| 2190 | + if (parent.namespaceURI === SVG_NAMESPACE) { | |
| 2191 | + return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName]; | |
| 2192 | + } | |
| 2193 | + // We only allow elements that are defined in MathML | |
| 2194 | + // spec. All others are disallowed in MathML namespace. | |
| 2195 | + return Boolean(ALL_MATHML_TAGS[tagName]); | |
| 2196 | + } | |
| 2197 | + if (element.namespaceURI === HTML_NAMESPACE) { | |
| 2198 | + // The only way to switch from SVG to HTML is via | |
| 2199 | + // HTML integration points, and from MathML to HTML | |
| 2200 | + // is via MathML text integration points | |
| 2201 | + if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) { | |
| 2202 | + return false; | |
| 2203 | + } | |
| 2204 | + if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) { | |
| 2205 | + return false; | |
| 2206 | + } | |
| 2207 | + // We disallow tags that are specific for MathML | |
| 2208 | + // or SVG and should never appear in HTML namespace | |
| 2209 | + return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); | |
| 2210 | + } | |
| 2211 | + // For XHTML and XML documents that support custom namespaces | |
| 2212 | + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) { | |
| 2213 | + return true; | |
| 2214 | + } | |
| 2215 | + // The code should never reach this place (this means | |
| 2216 | + // that the element somehow got namespace that is not | |
| 2217 | + // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES). | |
| 2218 | + // Return false just in case. | |
| 2219 | + return false; | |
| 2220 | + }; | |
| 2221 | + /** | |
| 2222 | + * _forceRemove | |
| 2223 | + * | |
| 2224 | + * @param node a DOM node | |
| 2225 | + */ | |
| 2226 | + const _forceRemove = function _forceRemove(node) { | |
| 2227 | + arrayPush(DOMPurify.removed, { | |
| 2228 | + element: node | |
| 2229 | + }); | |
| 2230 | + try { | |
| 2231 | + // eslint-disable-next-line unicorn/prefer-dom-node-remove | |
| 2232 | + getParentNode(node).removeChild(node); | |
| 2233 | + } catch (_) { | |
| 2234 | + remove(node); | |
| 2235 | + } | |
| 2236 | + }; | |
| 2237 | + /** | |
| 2238 | + * _removeAttribute | |
| 2239 | + * | |
| 2240 | + * @param name an Attribute name | |
| 2241 | + * @param element a DOM node | |
| 2242 | + */ | |
| 2243 | + const _removeAttribute = function _removeAttribute(name, element) { | |
| 2244 | + try { | |
| 2245 | + arrayPush(DOMPurify.removed, { | |
| 2246 | + attribute: element.getAttributeNode(name), | |
| 2247 | + from: element | |
| 2248 | + }); | |
| 2249 | + } catch (_) { | |
| 2250 | + arrayPush(DOMPurify.removed, { | |
| 2251 | + attribute: null, | |
| 2252 | + from: element | |
| 2253 | + }); | |
| 2254 | + } | |
| 2255 | + element.removeAttribute(name); | |
| 2256 | + // We void attribute values for unremovable "is" attributes | |
| 2257 | + if (name === 'is') { | |
| 2258 | + if (RETURN_DOM || RETURN_DOM_FRAGMENT) { | |
| 2259 | + try { | |
| 2260 | + _forceRemove(element); | |
| 2261 | + } catch (_) {} | |
| 2262 | + } else { | |
| 2263 | + try { | |
| 2264 | + element.setAttribute(name, ''); | |
| 2265 | + } catch (_) {} | |
| 2266 | + } | |
| 2267 | + } | |
| 2268 | + }; | |
| 2269 | + /** | |
| 2270 | + * _initDocument | |
| 2271 | + * | |
| 2272 | + * @param dirty - a string of dirty markup | |
| 2273 | + * @return a DOM, filled with the dirty markup | |
| 2274 | + */ | |
| 2275 | + const _initDocument = function _initDocument(dirty) { | |
| 2276 | + /* Create a HTML document */ | |
| 2277 | + let doc = null; | |
| 2278 | + let leadingWhitespace = null; | |
| 2279 | + if (FORCE_BODY) { | |
| 2280 | + dirty = '<remove></remove>' + dirty; | |
| 2281 | + } else { | |
| 2282 | + /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */ | |
| 2283 | + const matches = stringMatch(dirty, /^[\r\n\t ]+/); | |
| 2284 | + leadingWhitespace = matches && matches[0]; | |
| 2285 | + } | |
| 2286 | + if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) { | |
| 2287 | + // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict) | |
| 2288 | + dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + '</body></html>'; | |
| 2289 | + } | |
| 2290 | + const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; | |
| 2291 | + /* | |
| 2292 | + * Use the DOMParser API by default, fallback later if needs be | |
| 2293 | + * DOMParser not work for svg when has multiple root element. | |
| 2294 | + */ | |
| 2295 | + if (NAMESPACE === HTML_NAMESPACE) { | |
| 2296 | + try { | |
| 2297 | + doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); | |
| 2298 | + } catch (_) {} | |
| 2299 | + } | |
| 2300 | + /* Use createHTMLDocument in case DOMParser is not available */ | |
| 2301 | + if (!doc || !doc.documentElement) { | |
| 2302 | + doc = implementation.createDocument(NAMESPACE, 'template', null); | |
| 2303 | + try { | |
| 2304 | + doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; | |
| 2305 | + } catch (_) { | |
| 2306 | + // Syntax error if dirtyPayload is invalid xml | |
| 2307 | + } | |
| 2308 | + } | |
| 2309 | + const body = doc.body || doc.documentElement; | |
| 2310 | + if (dirty && leadingWhitespace) { | |
| 2311 | + body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null); | |
| 2312 | + } | |
| 2313 | + /* Work on whole document or just its body */ | |
| 2314 | + if (NAMESPACE === HTML_NAMESPACE) { | |
| 2315 | + return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0]; | |
| 2316 | + } | |
| 2317 | + return WHOLE_DOCUMENT ? doc.documentElement : body; | |
| 2318 | + }; | |
| 2319 | + /** | |
| 2320 | + * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document. | |
| 2321 | + * | |
| 2322 | + * @param root The root element or node to start traversing on. | |
| 2323 | + * @return The created NodeIterator | |
| 2324 | + */ | |
| 2325 | + const _createNodeIterator = function _createNodeIterator(root) { | |
| 2326 | + return createNodeIterator.call(root.ownerDocument || root, root, | |
| 2327 | + // eslint-disable-next-line no-bitwise | |
| 2328 | + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null); | |
| 2329 | + }; | |
| 2330 | + /** | |
| 2331 | + * _isClobbered | |
| 2332 | + * | |
| 2333 | + * @param element element to check for clobbering attacks | |
| 2334 | + * @return true if clobbered, false if safe | |
| 2335 | + */ | |
| 2336 | + const _isClobbered = function _isClobbered(element) { | |
| 2337 | + return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function'); | |
| 2338 | + }; | |
| 2339 | + /** | |
| 2340 | + * Checks whether the given object is a DOM node. | |
| 2341 | + * | |
| 2342 | + * @param value object to check whether it's a DOM node | |
| 2343 | + * @return true is object is a DOM node | |
| 2344 | + */ | |
| 2345 | + const _isNode = function _isNode(value) { | |
| 2346 | + return typeof Node === 'function' && value instanceof Node; | |
| 2347 | + }; | |
| 2348 | + function _executeHooks(hooks, currentNode, data) { | |
| 2349 | + arrayForEach(hooks, hook => { | |
| 2350 | + hook.call(DOMPurify, currentNode, data, CONFIG); | |
| 2351 | + }); | |
| 2352 | + } | |
| 2353 | + /** | |
| 2354 | + * _sanitizeElements | |
| 2355 | + * | |
| 2356 | + * @protect nodeName | |
| 2357 | + * @protect textContent | |
| 2358 | + * @protect removeChild | |
| 2359 | + * @param currentNode to check for permission to exist | |
| 2360 | + * @return true if node was killed, false if left alive | |
| 2361 | + */ | |
| 2362 | + const _sanitizeElements = function _sanitizeElements(currentNode) { | |
| 2363 | + let content = null; | |
| 2364 | + /* Execute a hook if present */ | |
| 2365 | + _executeHooks(hooks.beforeSanitizeElements, currentNode, null); | |
| 2366 | + /* Check if element is clobbered or can clobber */ | |
| 2367 | + if (_isClobbered(currentNode)) { | |
| 2368 | + _forceRemove(currentNode); | |
| 2369 | + return true; | |
| 2370 | + } | |
| 2371 | + /* Now let's check the element's type and name */ | |
| 2372 | + const tagName = transformCaseFunc(currentNode.nodeName); | |
| 2373 | + /* Execute a hook if present */ | |
| 2374 | + _executeHooks(hooks.uponSanitizeElement, currentNode, { | |
| 2375 | + tagName, | |
| 2376 | + allowedTags: ALLOWED_TAGS | |
| 2377 | + }); | |
| 2378 | + /* Detect mXSS attempts abusing namespace confusion */ | |
| 2379 | + if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) { | |
| 2380 | + _forceRemove(currentNode); | |
| 2381 | + return true; | |
| 2382 | + } | |
| 2383 | + /* Remove any occurrence of processing instructions */ | |
| 2384 | + if (currentNode.nodeType === NODE_TYPE.progressingInstruction) { | |
| 2385 | + _forceRemove(currentNode); | |
| 2386 | + return true; | |
| 2387 | + } | |
| 2388 | + /* Remove any kind of possibly harmful comments */ | |
| 2389 | + if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) { | |
| 2390 | + _forceRemove(currentNode); | |
| 2391 | + return true; | |
| 2392 | + } | |
| 2393 | + /* Remove element if anything forbids its presence */ | |
| 2394 | + if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) { | |
| 2395 | + /* Check if we have a custom element to handle */ | |
| 2396 | + if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) { | |
| 2397 | + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) { | |
| 2398 | + return false; | |
| 2399 | + } | |
| 2400 | + if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) { | |
| 2401 | + return false; | |
| 2402 | + } | |
| 2403 | + } | |
| 2404 | + /* Keep content except for bad-listed elements */ | |
| 2405 | + if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) { | |
| 2406 | + const parentNode = getParentNode(currentNode) || currentNode.parentNode; | |
| 2407 | + const childNodes = getChildNodes(currentNode) || currentNode.childNodes; | |
| 2408 | + if (childNodes && parentNode) { | |
| 2409 | + const childCount = childNodes.length; | |
| 2410 | + for (let i = childCount - 1; i >= 0; --i) { | |
| 2411 | + const childClone = cloneNode(childNodes[i], true); | |
| 2412 | + childClone.__removalCount = (currentNode.__removalCount || 0) + 1; | |
| 2413 | + parentNode.insertBefore(childClone, getNextSibling(currentNode)); | |
| 2414 | + } | |
| 2415 | + } | |
| 2416 | + } | |
| 2417 | + _forceRemove(currentNode); | |
| 2418 | + return true; | |
| 2419 | + } | |
| 2420 | + /* Check whether element has a valid namespace */ | |
| 2421 | + if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) { | |
| 2422 | + _forceRemove(currentNode); | |
| 2423 | + return true; | |
| 2424 | + } | |
| 2425 | + /* Make sure that older browsers don't get fallback-tag mXSS */ | |
| 2426 | + if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) { | |
| 2427 | + _forceRemove(currentNode); | |
| 2428 | + return true; | |
| 2429 | + } | |
| 2430 | + /* Sanitize element content to be template-safe */ | |
| 2431 | + if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) { | |
| 2432 | + /* Get the element's text content */ | |
| 2433 | + content = currentNode.textContent; | |
| 2434 | + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { | |
| 2435 | + content = stringReplace(content, expr, ' '); | |
| 2436 | + }); | |
| 2437 | + if (currentNode.textContent !== content) { | |
| 2438 | + arrayPush(DOMPurify.removed, { | |
| 2439 | + element: currentNode.cloneNode() | |
| 2440 | + }); | |
| 2441 | + currentNode.textContent = content; | |
| 2442 | + } | |
| 2443 | + } | |
| 2444 | + /* Execute a hook if present */ | |
| 2445 | + _executeHooks(hooks.afterSanitizeElements, currentNode, null); | |
| 2446 | + return false; | |
| 2447 | + }; | |
| 2448 | + /** | |
| 2449 | + * _isValidAttribute | |
| 2450 | + * | |
| 2451 | + * @param lcTag Lowercase tag name of containing element. | |
| 2452 | + * @param lcName Lowercase attribute name. | |
| 2453 | + * @param value Attribute value. | |
| 2454 | + * @return Returns true if `value` is valid, otherwise false. | |
| 2455 | + */ | |
| 2456 | + // eslint-disable-next-line complexity | |
| 2457 | + const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { | |
| 2458 | + /* Make sure attribute cannot clobber */ | |
| 2459 | + if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) { | |
| 2460 | + return false; | |
| 2461 | + } | |
| 2462 | + /* Allow valid data-* attributes: At least one character after "-" | |
| 2463 | + (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes) | |
| 2464 | + XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804) | |
| 2465 | + We don't need to check the value; it's always URI safe. */ | |
| 2466 | + if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) { | |
| 2467 | + if ( | |
| 2468 | + // First condition does a very basic check if a) it's basically a valid custom element tagname AND | |
| 2469 | + // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck | |
| 2470 | + // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck | |
| 2471 | + _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, lcTag)) || | |
| 2472 | + // Alternative, second condition checks if it's an `is`-attribute, AND | |
| 2473 | + // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck | |
| 2474 | + 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 { | |
| 2475 | + return false; | |
| 2476 | + } | |
| 2477 | + /* Check value is safe. First, is attr inert? If so, is safe */ | |
| 2478 | + } 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) { | |
| 2479 | + return false; | |
| 2480 | + } else ; | |
| 2481 | + return true; | |
| 2482 | + }; | |
| 2483 | + /** | |
| 2484 | + * _isBasicCustomElement | |
| 2485 | + * checks if at least one dash is included in tagName, and it's not the first char | |
| 2486 | + * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name | |
| 2487 | + * | |
| 2488 | + * @param tagName name of the tag of the node to sanitize | |
| 2489 | + * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false. | |
| 2490 | + */ | |
| 2491 | + const _isBasicCustomElement = function _isBasicCustomElement(tagName) { | |
| 2492 | + return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT); | |
| 2493 | + }; | |
| 2494 | + /** | |
| 2495 | + * _sanitizeAttributes | |
| 2496 | + * | |
| 2497 | + * @protect attributes | |
| 2498 | + * @protect nodeName | |
| 2499 | + * @protect removeAttribute | |
| 2500 | + * @protect setAttribute | |
| 2501 | + * | |
| 2502 | + * @param currentNode to sanitize | |
| 2503 | + */ | |
| 2504 | + const _sanitizeAttributes = function _sanitizeAttributes(currentNode) { | |
| 2505 | + /* Execute a hook if present */ | |
| 2506 | + _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null); | |
| 2507 | + const { | |
| 2508 | + attributes | |
| 2509 | + } = currentNode; | |
| 2510 | + /* Check if we have attributes; if not we might have a text node */ | |
| 2511 | + if (!attributes || _isClobbered(currentNode)) { | |
| 2512 | + return; | |
| 2513 | + } | |
| 2514 | + const hookEvent = { | |
| 2515 | + attrName: '', | |
| 2516 | + attrValue: '', | |
| 2517 | + keepAttr: true, | |
| 2518 | + allowedAttributes: ALLOWED_ATTR, | |
| 2519 | + forceKeepAttr: undefined | |
| 2520 | + }; | |
| 2521 | + let l = attributes.length; | |
| 2522 | + /* Go backwards over all attributes; safely remove bad ones */ | |
| 2523 | + while (l--) { | |
| 2524 | + const attr = attributes[l]; | |
| 2525 | + const { | |
| 2526 | + name, | |
| 2527 | + namespaceURI, | |
| 2528 | + value: attrValue | |
| 2529 | + } = attr; | |
| 2530 | + const lcName = transformCaseFunc(name); | |
| 2531 | + const initValue = attrValue; | |
| 2532 | + let value = name === 'value' ? initValue : stringTrim(initValue); | |
| 2533 | + /* Execute a hook if present */ | |
| 2534 | + hookEvent.attrName = lcName; | |
| 2535 | + hookEvent.attrValue = value; | |
| 2536 | + hookEvent.keepAttr = true; | |
| 2537 | + hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set | |
| 2538 | + _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent); | |
| 2539 | + value = hookEvent.attrValue; | |
| 2540 | + /* Full DOM Clobbering protection via namespace isolation, | |
| 2541 | + * Prefix id and name attributes with `user-content-` | |
| 2542 | + */ | |
| 2543 | + if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) { | |
| 2544 | + // Remove the attribute with this value | |
| 2545 | + _removeAttribute(name, currentNode); | |
| 2546 | + // Prefix the value and later re-create the attribute with the sanitized value | |
| 2547 | + value = SANITIZE_NAMED_PROPS_PREFIX + value; | |
| 2548 | + } | |
| 2549 | + /* Work around a security issue with comments inside attributes */ | |
| 2550 | + if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) { | |
| 2551 | + _removeAttribute(name, currentNode); | |
| 2552 | + continue; | |
| 2553 | + } | |
| 2554 | + /* Make sure we cannot easily use animated hrefs, even if animations are allowed */ | |
| 2555 | + if (lcName === 'attributename' && stringMatch(value, 'href')) { | |
| 2556 | + _removeAttribute(name, currentNode); | |
| 2557 | + continue; | |
| 2558 | + } | |
| 2559 | + /* Did the hooks approve of the attribute? */ | |
| 2560 | + if (hookEvent.forceKeepAttr) { | |
| 2561 | + continue; | |
| 2562 | + } | |
| 2563 | + /* Did the hooks approve of the attribute? */ | |
| 2564 | + if (!hookEvent.keepAttr) { | |
| 2565 | + _removeAttribute(name, currentNode); | |
| 2566 | + continue; | |
| 2567 | + } | |
| 2568 | + /* Work around a security issue in jQuery 3.0 */ | |
| 2569 | + if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) { | |
| 2570 | + _removeAttribute(name, currentNode); | |
| 2571 | + continue; | |
| 2572 | + } | |
| 2573 | + /* Sanitize attribute content to be template-safe */ | |
| 2574 | + if (SAFE_FOR_TEMPLATES) { | |
| 2575 | + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { | |
| 2576 | + value = stringReplace(value, expr, ' '); | |
| 2577 | + }); | |
| 2578 | + } | |
| 2579 | + /* Is `value` valid for this attribute? */ | |
| 2580 | + const lcTag = transformCaseFunc(currentNode.nodeName); | |
| 2581 | + if (!_isValidAttribute(lcTag, lcName, value)) { | |
| 2582 | + _removeAttribute(name, currentNode); | |
| 2583 | + continue; | |
| 2584 | + } | |
| 2585 | + /* Handle attributes that require Trusted Types */ | |
| 2586 | + if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') { | |
| 2587 | + if (namespaceURI) ; else { | |
| 2588 | + switch (trustedTypes.getAttributeType(lcTag, lcName)) { | |
| 2589 | + case 'TrustedHTML': | |
| 2590 | + { | |
| 2591 | + value = trustedTypesPolicy.createHTML(value); | |
| 2592 | + break; | |
| 2593 | + } | |
| 2594 | + case 'TrustedScriptURL': | |
| 2595 | + { | |
| 2596 | + value = trustedTypesPolicy.createScriptURL(value); | |
| 2597 | + break; | |
| 2598 | + } | |
| 2599 | + } | |
| 2600 | + } | |
| 2601 | + } | |
| 2602 | + /* Handle invalid data-* attribute set by try-catching it */ | |
| 2603 | + if (value !== initValue) { | |
| 2604 | + try { | |
| 2605 | + if (namespaceURI) { | |
| 2606 | + currentNode.setAttributeNS(namespaceURI, name, value); | |
| 2607 | + } else { | |
| 2608 | + /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */ | |
| 2609 | + currentNode.setAttribute(name, value); | |
| 2610 | + } | |
| 2611 | + if (_isClobbered(currentNode)) { | |
| 2612 | + _forceRemove(currentNode); | |
| 2613 | + } else { | |
| 2614 | + arrayPop(DOMPurify.removed); | |
| 2615 | + } | |
| 2616 | + } catch (_) { | |
| 2617 | + _removeAttribute(name, currentNode); | |
| 2618 | + } | |
| 2619 | + } | |
| 2620 | + } | |
| 2621 | + /* Execute a hook if present */ | |
| 2622 | + _executeHooks(hooks.afterSanitizeAttributes, currentNode, null); | |
| 2623 | + }; | |
| 2624 | + /** | |
| 2625 | + * _sanitizeShadowDOM | |
| 2626 | + * | |
| 2627 | + * @param fragment to iterate over recursively | |
| 2628 | + */ | |
| 2629 | + const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) { | |
| 2630 | + let shadowNode = null; | |
| 2631 | + const shadowIterator = _createNodeIterator(fragment); | |
| 2632 | + /* Execute a hook if present */ | |
| 2633 | + _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null); | |
| 2634 | + while (shadowNode = shadowIterator.nextNode()) { | |
| 2635 | + /* Execute a hook if present */ | |
| 2636 | + _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null); | |
| 2637 | + /* Sanitize tags and elements */ | |
| 2638 | + _sanitizeElements(shadowNode); | |
| 2639 | + /* Check attributes next */ | |
| 2640 | + _sanitizeAttributes(shadowNode); | |
| 2641 | + /* Deep shadow DOM detected */ | |
| 2642 | + if (shadowNode.content instanceof DocumentFragment) { | |
| 2643 | + _sanitizeShadowDOM(shadowNode.content); | |
| 2644 | + } | |
| 2645 | + } | |
| 2646 | + /* Execute a hook if present */ | |
| 2647 | + _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null); | |
| 2648 | + }; | |
| 2649 | + // eslint-disable-next-line complexity | |
| 2650 | + DOMPurify.sanitize = function (dirty) { | |
| 2651 | + let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | |
| 2652 | + let body = null; | |
| 2653 | + let importedNode = null; | |
| 2654 | + let currentNode = null; | |
| 2655 | + let returnNode = null; | |
| 2656 | + /* Make sure we have a string to sanitize. | |
| 2657 | + DO NOT return early, as this will return the wrong type if | |
| 2658 | + the user has requested a DOM object rather than a string */ | |
| 2659 | + IS_EMPTY_INPUT = !dirty; | |
| 2660 | + if (IS_EMPTY_INPUT) { | |
| 2661 | + dirty = '<!-->'; | |
| 2662 | + } | |
| 2663 | + /* Stringify, in case dirty is an object */ | |
| 2664 | + if (typeof dirty !== 'string' && !_isNode(dirty)) { | |
| 2665 | + if (typeof dirty.toString === 'function') { | |
| 2666 | + dirty = dirty.toString(); | |
| 2667 | + if (typeof dirty !== 'string') { | |
| 2668 | + throw typeErrorCreate('dirty is not a string, aborting'); | |
| 2669 | + } | |
| 2670 | + } else { | |
| 2671 | + throw typeErrorCreate('toString is not a function'); | |
| 2672 | + } | |
| 2673 | + } | |
| 2674 | + /* Return dirty HTML if DOMPurify cannot run */ | |
| 2675 | + if (!DOMPurify.isSupported) { | |
| 2676 | + return dirty; | |
| 2677 | + } | |
| 2678 | + /* Assign config vars */ | |
| 2679 | + if (!SET_CONFIG) { | |
| 2680 | + _parseConfig(cfg); | |
| 2681 | + } | |
| 2682 | + /* Clean up removed elements */ | |
| 2683 | + DOMPurify.removed = []; | |
| 2684 | + /* Check if dirty is correctly typed for IN_PLACE */ | |
| 2685 | + if (typeof dirty === 'string') { | |
| 2686 | + IN_PLACE = false; | |
| 2687 | + } | |
| 2688 | + if (IN_PLACE) { | |
| 2689 | + /* Do some early pre-sanitization to avoid unsafe root nodes */ | |
| 2690 | + if (dirty.nodeName) { | |
| 2691 | + const tagName = transformCaseFunc(dirty.nodeName); | |
| 2692 | + if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) { | |
| 2693 | + throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place'); | |
| 2694 | + } | |
| 2695 | + } | |
| 2696 | + } else if (dirty instanceof Node) { | |
| 2697 | + /* If dirty is a DOM element, append to an empty document to avoid | |
| 2698 | + elements being stripped by the parser */ | |
| 2699 | + body = _initDocument('<!---->'); | |
| 2700 | + importedNode = body.ownerDocument.importNode(dirty, true); | |
| 2701 | + if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') { | |
| 2702 | + /* Node is already a body, use as is */ | |
| 2703 | + body = importedNode; | |
| 2704 | + } else if (importedNode.nodeName === 'HTML') { | |
| 2705 | + body = importedNode; | |
| 2706 | + } else { | |
| 2707 | + // eslint-disable-next-line unicorn/prefer-dom-node-append | |
| 2708 | + body.appendChild(importedNode); | |
| 2709 | + } | |
| 2710 | + } else { | |
| 2711 | + /* Exit directly if we have nothing to do */ | |
| 2712 | + if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && | |
| 2713 | + // eslint-disable-next-line unicorn/prefer-includes | |
| 2714 | + dirty.indexOf('<') === -1) { | |
| 2715 | + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty; | |
| 2716 | + } | |
| 2717 | + /* Initialize the document to work on */ | |
| 2718 | + body = _initDocument(dirty); | |
| 2719 | + /* Check we have a DOM node from the data */ | |
| 2720 | + if (!body) { | |
| 2721 | + return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ''; | |
| 2722 | + } | |
| 2723 | + } | |
| 2724 | + /* Remove first element node (ours) if FORCE_BODY is set */ | |
| 2725 | + if (body && FORCE_BODY) { | |
| 2726 | + _forceRemove(body.firstChild); | |
| 2727 | + } | |
| 2728 | + /* Get node iterator */ | |
| 2729 | + const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body); | |
| 2730 | + /* Now start iterating over the created document */ | |
| 2731 | + while (currentNode = nodeIterator.nextNode()) { | |
| 2732 | + /* Sanitize tags and elements */ | |
| 2733 | + _sanitizeElements(currentNode); | |
| 2734 | + /* Check attributes next */ | |
| 2735 | + _sanitizeAttributes(currentNode); | |
| 2736 | + /* Shadow DOM detected, sanitize it */ | |
| 2737 | + if (currentNode.content instanceof DocumentFragment) { | |
| 2738 | + _sanitizeShadowDOM(currentNode.content); | |
| 2739 | + } | |
| 2740 | + } | |
| 2741 | + /* If we sanitized `dirty` in-place, return it. */ | |
| 2742 | + if (IN_PLACE) { | |
| 2743 | + return dirty; | |
| 2744 | + } | |
| 2745 | + /* Return sanitized string or DOM */ | |
| 2746 | + if (RETURN_DOM) { | |
| 2747 | + if (RETURN_DOM_FRAGMENT) { | |
| 2748 | + returnNode = createDocumentFragment.call(body.ownerDocument); | |
| 2749 | + while (body.firstChild) { | |
| 2750 | + // eslint-disable-next-line unicorn/prefer-dom-node-append | |
| 2751 | + returnNode.appendChild(body.firstChild); | |
| 2752 | + } | |
| 2753 | + } else { | |
| 2754 | + returnNode = body; | |
| 2755 | + } | |
| 2756 | + if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) { | |
| 2757 | + /* | |
| 2758 | + AdoptNode() is not used because internal state is not reset | |
| 2759 | + (e.g. the past names map of a HTMLFormElement), this is safe | |
| 2760 | + in theory but we would rather not risk another attack vector. | |
| 2761 | + The state that is cloned by importNode() is explicitly defined | |
| 2762 | + by the specs. | |
| 2763 | + */ | |
| 2764 | + returnNode = importNode.call(originalDocument, returnNode, true); | |
| 2765 | + } | |
| 2766 | + return returnNode; | |
| 2767 | + } | |
| 2768 | + let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML; | |
| 2769 | + /* Serialize doctype if allowed */ | |
| 2770 | + if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) { | |
| 2771 | + serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\n' + serializedHTML; | |
| 2772 | + } | |
| 2773 | + /* Sanitize final string template-safe */ | |
| 2774 | + if (SAFE_FOR_TEMPLATES) { | |
| 2775 | + arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => { | |
| 2776 | + serializedHTML = stringReplace(serializedHTML, expr, ' '); | |
| 2777 | + }); | |
| 2778 | + } | |
| 2779 | + return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML; | |
| 2780 | + }; | |
| 2781 | + DOMPurify.setConfig = function () { | |
| 2782 | + let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | |
| 2783 | + _parseConfig(cfg); | |
| 2784 | + SET_CONFIG = true; | |
| 2785 | + }; | |
| 2786 | + DOMPurify.clearConfig = function () { | |
| 2787 | + CONFIG = null; | |
| 2788 | + SET_CONFIG = false; | |
| 2789 | + }; | |
| 2790 | + DOMPurify.isValidAttribute = function (tag, attr, value) { | |
| 2791 | + /* Initialize shared config vars if necessary. */ | |
| 2792 | + if (!CONFIG) { | |
| 2793 | + _parseConfig({}); | |
| 2794 | + } | |
| 2795 | + const lcTag = transformCaseFunc(tag); | |
| 2796 | + const lcName = transformCaseFunc(attr); | |
| 2797 | + return _isValidAttribute(lcTag, lcName, value); | |
| 2798 | + }; | |
| 2799 | + DOMPurify.addHook = function (entryPoint, hookFunction) { | |
| 2800 | + if (typeof hookFunction !== 'function') { | |
| 2801 | + return; | |
| 2802 | + } | |
| 2803 | + arrayPush(hooks[entryPoint], hookFunction); | |
| 2804 | + }; | |
| 2805 | + DOMPurify.removeHook = function (entryPoint, hookFunction) { | |
| 2806 | + if (hookFunction !== undefined) { | |
| 2807 | + const index = arrayLastIndexOf(hooks[entryPoint], hookFunction); | |
| 2808 | + return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0]; | |
| 2809 | + } | |
| 2810 | + return arrayPop(hooks[entryPoint]); | |
| 2811 | + }; | |
| 2812 | + DOMPurify.removeHooks = function (entryPoint) { | |
| 2813 | + hooks[entryPoint] = []; | |
| 2814 | + }; | |
| 2815 | + DOMPurify.removeAllHooks = function () { | |
| 2816 | + hooks = _createHooksMap(); | |
| 2817 | + }; | |
| 2818 | + return DOMPurify; | |
| 2819 | +} | |
| 2820 | +var purify = createDOMPurify(); | |
| 2821 | + | |
| 2822 | +module.exports = purify; | |
| 2823 | +//# sourceMappingURL=purify.cjs.js.map | |
| 2824 | + | |
| 2825 | + | |
| 2826 | +/***/ }), | |
| 2827 | + | |
| 2828 | +/***/ "../node_modules/object-assign/index.js": | |
| 2829 | +/*!**********************************************!*\ | |
| 2830 | + !*** ../node_modules/object-assign/index.js ***! | |
| 2831 | + \**********************************************/ | |
| 2832 | +/***/ ((module) => { | |
| 2833 | + | |
| 2834 | +"use strict"; | |
| 2835 | +/* | |
| 2836 | +object-assign | |
| 2837 | +(c) Sindre Sorhus | |
| 2838 | +@license MIT | |
| 2839 | +*/ | |
| 2840 | + | |
| 2841 | + | |
| 2842 | +/* eslint-disable no-unused-vars */ | |
| 2843 | +var getOwnPropertySymbols = Object.getOwnPropertySymbols; | |
| 2844 | +var hasOwnProperty = Object.prototype.hasOwnProperty; | |
| 2845 | +var propIsEnumerable = Object.prototype.propertyIsEnumerable; | |
| 2846 | + | |
| 2847 | +function toObject(val) { | |
| 2848 | + if (val === null || val === undefined) { | |
| 2849 | + throw new TypeError('Object.assign cannot be called with null or undefined'); | |
| 1493 | 2850 | } |
| 1494 | - /** | |
| 1495 | - * Creates a new function that constructs an instance of the given constructor function with the provided arguments. | |
| 1496 | - * | |
| 1497 | - * @param func - The constructor function to be wrapped and called. | |
| 1498 | - * @returns A new function that constructs an instance of the given constructor function with the provided arguments. | |
| 1499 | - */ | |
| 1500 | - function unconstruct(Func) { | |
| 1501 | - return function() { | |
| 1502 | - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4]; | |
| 1503 | - return construct(Func, args); | |
| 1504 | - }; | |
| 1505 | - } | |
| 1506 | - /** | |
| 1507 | - * Add properties to a lookup table | |
| 1508 | - * | |
| 1509 | - * @param set - The set to which elements will be added. | |
| 1510 | - * @param array - The array containing elements to be added to the set. | |
| 1511 | - * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set. | |
| 1512 | - * @returns The modified set with added elements. | |
| 1513 | - */ | |
| 1514 | - function addToSet(set, array) { | |
| 1515 | - let transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase; | |
| 1516 | - if (setPrototypeOf) setPrototypeOf(set, null); | |
| 1517 | - let l = array.length; | |
| 1518 | - while (l--) { | |
| 1519 | - let element = array[l]; | |
| 1520 | - if (typeof element === "string") { | |
| 1521 | - const lcElement = transformCaseFunc(element); | |
| 1522 | - if (lcElement !== element) { | |
| 1523 | - if (!isFrozen(array)) array[l] = lcElement; | |
| 1524 | - element = lcElement; | |
| 1525 | - } | |
| 1526 | - } | |
| 1527 | - set[element] = true; | |
| 2851 | + | |
| 2852 | + return Object(val); | |
| 2853 | +} | |
| 2854 | + | |
| 2855 | +function shouldUseNative() { | |
| 2856 | + try { | |
| 2857 | + if (!Object.assign) { | |
| 2858 | + return false; | |
| 1528 | 2859 | } |
| 1529 | - return set; | |
| 1530 | - } | |
| 1531 | - /** | |
| 1532 | - * Clean up an array to harden against CSPP | |
| 1533 | - * | |
| 1534 | - * @param array - The array to be cleaned. | |
| 1535 | - * @returns The cleaned version of the array | |
| 1536 | - */ | |
| 1537 | - function cleanArray(array) { | |
| 1538 | - for (let index = 0; index < array.length; index++) if (!objectHasOwnProperty(array, index)) array[index] = null; | |
| 1539 | - return array; | |
| 1540 | - } | |
| 1541 | - /** | |
| 1542 | - * Shallow clone an object | |
| 1543 | - * | |
| 1544 | - * @param object - The object to be cloned. | |
| 1545 | - * @returns A new object that copies the original. | |
| 1546 | - */ | |
| 1547 | - function clone(object) { | |
| 1548 | - const newObject = create(null); | |
| 1549 | - for (const [property, value] of entries(object)) if (objectHasOwnProperty(object, property)) if (Array.isArray(value)) newObject[property] = cleanArray(value); | |
| 1550 | - else if (value && typeof value === "object" && value.constructor === Object) newObject[property] = clone(value); | |
| 1551 | - else newObject[property] = value; | |
| 1552 | - return newObject; | |
| 1553 | - } | |
| 1554 | - /** | |
| 1555 | - * This method automatically checks if the prop is function or getter and behaves accordingly. | |
| 1556 | - * | |
| 1557 | - * @param object - The object to look up the getter function in its prototype chain. | |
| 1558 | - * @param prop - The property name for which to find the getter function. | |
| 1559 | - * @returns The getter function found in the prototype chain or a fallback function. | |
| 1560 | - */ | |
| 1561 | - function lookupGetter(object, prop) { | |
| 1562 | - while (object !== null) { | |
| 1563 | - const desc = getOwnPropertyDescriptor(object, prop); | |
| 1564 | - if (desc) { | |
| 1565 | - if (desc.get) return unapply(desc.get); | |
| 1566 | - if (typeof desc.value === "function") return unapply(desc.value); | |
| 1567 | - } | |
| 1568 | - object = getPrototypeOf(object); | |
| 2860 | + | |
| 2861 | + // Detect buggy property enumeration order in older V8 versions. | |
| 2862 | + | |
| 2863 | + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 | |
| 2864 | + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers | |
| 2865 | + test1[5] = 'de'; | |
| 2866 | + if (Object.getOwnPropertyNames(test1)[0] === '5') { | |
| 2867 | + return false; | |
| 1569 | 2868 | } |
| 1570 | - function fallbackValue() { | |
| 1571 | - return null; | |
| 2869 | + | |
| 2870 | + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 | |
| 2871 | + var test2 = {}; | |
| 2872 | + for (var i = 0; i < 10; i++) { | |
| 2873 | + test2['_' + String.fromCharCode(i)] = i; | |
| 1572 | 2874 | } |
| 1573 | - return fallbackValue; | |
| 1574 | - } | |
| 1575 | - var html$1 = freeze([ | |
| 1576 | - "a", | |
| 1577 | - "abbr", | |
| 1578 | - "acronym", | |
| 1579 | - "address", | |
| 1580 | - "area", | |
| 1581 | - "article", | |
| 1582 | - "aside", | |
| 1583 | - "audio", | |
| 1584 | - "b", | |
| 1585 | - "bdi", | |
| 1586 | - "bdo", | |
| 1587 | - "big", | |
| 1588 | - "blink", | |
| 1589 | - "blockquote", | |
| 1590 | - "body", | |
| 1591 | - "br", | |
| 1592 | - "button", | |
| 1593 | - "canvas", | |
| 1594 | - "caption", | |
| 1595 | - "center", | |
| 1596 | - "cite", | |
| 1597 | - "code", | |
| 1598 | - "col", | |
| 1599 | - "colgroup", | |
| 1600 | - "content", | |
| 1601 | - "data", | |
| 1602 | - "datalist", | |
| 1603 | - "dd", | |
| 1604 | - "decorator", | |
| 1605 | - "del", | |
| 1606 | - "details", | |
| 1607 | - "dfn", | |
| 1608 | - "dialog", | |
| 1609 | - "dir", | |
| 1610 | - "div", | |
| 1611 | - "dl", | |
| 1612 | - "dt", | |
| 1613 | - "element", | |
| 1614 | - "em", | |
| 1615 | - "fieldset", | |
| 1616 | - "figcaption", | |
| 1617 | - "figure", | |
| 1618 | - "font", | |
| 1619 | - "footer", | |
| 1620 | - "form", | |
| 1621 | - "h1", | |
| 1622 | - "h2", | |
| 1623 | - "h3", | |
| 1624 | - "h4", | |
| 1625 | - "h5", | |
| 1626 | - "h6", | |
| 1627 | - "head", | |
| 1628 | - "header", | |
| 1629 | - "hgroup", | |
| 1630 | - "hr", | |
| 1631 | - "html", | |
| 1632 | - "i", | |
| 1633 | - "img", | |
| 1634 | - "input", | |
| 1635 | - "ins", | |
| 1636 | - "kbd", | |
| 1637 | - "label", | |
| 1638 | - "legend", | |
| 1639 | - "li", | |
| 1640 | - "main", | |
| 1641 | - "map", | |
| 1642 | - "mark", | |
| 1643 | - "marquee", | |
| 1644 | - "menu", | |
| 1645 | - "menuitem", | |
| 1646 | - "meter", | |
| 1647 | - "nav", | |
| 1648 | - "nobr", | |
| 1649 | - "ol", | |
| 1650 | - "optgroup", | |
| 1651 | - "option", | |
| 1652 | - "output", | |
| 1653 | - "p", | |
| 1654 | - "picture", | |
| 1655 | - "pre", | |
| 1656 | - "progress", | |
| 1657 | - "q", | |
| 1658 | - "rp", | |
| 1659 | - "rt", | |
| 1660 | - "ruby", | |
| 1661 | - "s", | |
| 1662 | - "samp", | |
| 1663 | - "search", | |
| 1664 | - "section", | |
| 1665 | - "select", | |
| 1666 | - "shadow", | |
| 1667 | - "slot", | |
| 1668 | - "small", | |
| 1669 | - "source", | |
| 1670 | - "spacer", | |
| 1671 | - "span", | |
| 1672 | - "strike", | |
| 1673 | - "strong", | |
| 1674 | - "style", | |
| 1675 | - "sub", | |
| 1676 | - "summary", | |
| 1677 | - "sup", | |
| 1678 | - "table", | |
| 1679 | - "tbody", | |
| 1680 | - "td", | |
| 1681 | - "template", | |
| 1682 | - "textarea", | |
| 1683 | - "tfoot", | |
| 1684 | - "th", | |
| 1685 | - "thead", | |
| 1686 | - "time", | |
| 1687 | - "tr", | |
| 1688 | - "track", | |
| 1689 | - "tt", | |
| 1690 | - "u", | |
| 1691 | - "ul", | |
| 1692 | - "var", | |
| 1693 | - "video", | |
| 1694 | - "wbr" | |
| 1695 | - ]); | |
| 1696 | - var svg$1 = freeze([ | |
| 1697 | - "svg", | |
| 1698 | - "a", | |
| 1699 | - "altglyph", | |
| 1700 | - "altglyphdef", | |
| 1701 | - "altglyphitem", | |
| 1702 | - "animatecolor", | |
| 1703 | - "animatemotion", | |
| 1704 | - "animatetransform", | |
| 1705 | - "circle", | |
| 1706 | - "clippath", | |
| 1707 | - "defs", | |
| 1708 | - "desc", | |
| 1709 | - "ellipse", | |
| 1710 | - "enterkeyhint", | |
| 1711 | - "exportparts", | |
| 1712 | - "filter", | |
| 1713 | - "font", | |
| 1714 | - "g", | |
| 1715 | - "glyph", | |
| 1716 | - "glyphref", | |
| 1717 | - "hkern", | |
| 1718 | - "image", | |
| 1719 | - "inputmode", | |
| 1720 | - "line", | |
| 1721 | - "lineargradient", | |
| 1722 | - "marker", | |
| 1723 | - "mask", | |
| 1724 | - "metadata", | |
| 1725 | - "mpath", | |
| 1726 | - "part", | |
| 1727 | - "path", | |
| 1728 | - "pattern", | |
| 1729 | - "polygon", | |
| 1730 | - "polyline", | |
| 1731 | - "radialgradient", | |
| 1732 | - "rect", | |
| 1733 | - "stop", | |
| 1734 | - "style", | |
| 1735 | - "switch", | |
| 1736 | - "symbol", | |
| 1737 | - "text", | |
| 1738 | - "textpath", | |
| 1739 | - "title", | |
| 1740 | - "tref", | |
| 1741 | - "tspan", | |
| 1742 | - "view", | |
| 1743 | - "vkern" | |
| 1744 | - ]); | |
| 1745 | - var svgFilters = freeze([ | |
| 1746 | - "feBlend", | |
| 1747 | - "feColorMatrix", | |
| 1748 | - "feComponentTransfer", | |
| 1749 | - "feComposite", | |
| 1750 | - "feConvolveMatrix", | |
| 1751 | - "feDiffuseLighting", | |
| 1752 | - "feDisplacementMap", | |
| 1753 | - "feDistantLight", | |
| 1754 | - "feDropShadow", | |
| 1755 | - "feFlood", | |
| 1756 | - "feFuncA", | |
| 1757 | - "feFuncB", | |
| 1758 | - "feFuncG", | |
| 1759 | - "feFuncR", | |
| 1760 | - "feGaussianBlur", | |
| 1761 | - "feImage", | |
| 1762 | - "feMerge", | |
| 1763 | - "feMergeNode", | |
| 1764 | - "feMorphology", | |
| 1765 | - "feOffset", | |
| 1766 | - "fePointLight", | |
| 1767 | - "feSpecularLighting", | |
| 1768 | - "feSpotLight", | |
| 1769 | - "feTile", | |
| 1770 | - "feTurbulence" | |
| 1771 | - ]); | |
| 1772 | - var svgDisallowed = freeze([ | |
| 1773 | - "animate", | |
| 1774 | - "color-profile", | |
| 1775 | - "cursor", | |
| 1776 | - "discard", | |
| 1777 | - "font-face", | |
| 1778 | - "font-face-format", | |
| 1779 | - "font-face-name", | |
| 1780 | - "font-face-src", | |
| 1781 | - "font-face-uri", | |
| 1782 | - "foreignobject", | |
| 1783 | - "hatch", | |
| 1784 | - "hatchpath", | |
| 1785 | - "mesh", | |
| 1786 | - "meshgradient", | |
| 1787 | - "meshpatch", | |
| 1788 | - "meshrow", | |
| 1789 | - "missing-glyph", | |
| 1790 | - "script", | |
| 1791 | - "set", | |
| 1792 | - "solidcolor", | |
| 1793 | - "unknown", | |
| 1794 | - "use" | |
| 1795 | - ]); | |
| 1796 | - var mathMl$1 = freeze([ | |
| 1797 | - "math", | |
| 1798 | - "menclose", | |
| 1799 | - "merror", | |
| 1800 | - "mfenced", | |
| 1801 | - "mfrac", | |
| 1802 | - "mglyph", | |
| 1803 | - "mi", | |
| 1804 | - "mlabeledtr", | |
| 1805 | - "mmultiscripts", | |
| 1806 | - "mn", | |
| 1807 | - "mo", | |
| 1808 | - "mover", | |
| 1809 | - "mpadded", | |
| 1810 | - "mphantom", | |
| 1811 | - "mroot", | |
| 1812 | - "mrow", | |
| 1813 | - "ms", | |
| 1814 | - "mspace", | |
| 1815 | - "msqrt", | |
| 1816 | - "mstyle", | |
| 1817 | - "msub", | |
| 1818 | - "msup", | |
| 1819 | - "msubsup", | |
| 1820 | - "mtable", | |
| 1821 | - "mtd", | |
| 1822 | - "mtext", | |
| 1823 | - "mtr", | |
| 1824 | - "munder", | |
| 1825 | - "munderover", | |
| 1826 | - "mprescripts" | |
| 1827 | - ]); | |
| 1828 | - var mathMlDisallowed = freeze([ | |
| 1829 | - "maction", | |
| 1830 | - "maligngroup", | |
| 1831 | - "malignmark", | |
| 1832 | - "mlongdiv", | |
| 1833 | - "mscarries", | |
| 1834 | - "mscarry", | |
| 1835 | - "msgroup", | |
| 1836 | - "mstack", | |
| 1837 | - "msline", | |
| 1838 | - "msrow", | |
| 1839 | - "semantics", | |
| 1840 | - "annotation", | |
| 1841 | - "annotation-xml", | |
| 1842 | - "mprescripts", | |
| 1843 | - "none" | |
| 1844 | - ]); | |
| 1845 | - var text = freeze(["#text"]); | |
| 1846 | - var html = freeze([ | |
| 1847 | - "accept", | |
| 1848 | - "action", | |
| 1849 | - "align", | |
| 1850 | - "alt", | |
| 1851 | - "autocapitalize", | |
| 1852 | - "autocomplete", | |
| 1853 | - "autopictureinpicture", | |
| 1854 | - "autoplay", | |
| 1855 | - "background", | |
| 1856 | - "bgcolor", | |
| 1857 | - "border", | |
| 1858 | - "capture", | |
| 1859 | - "cellpadding", | |
| 1860 | - "cellspacing", | |
| 1861 | - "checked", | |
| 1862 | - "cite", | |
| 1863 | - "class", | |
| 1864 | - "clear", | |
| 1865 | - "color", | |
| 1866 | - "cols", | |
| 1867 | - "colspan", | |
| 1868 | - "controls", | |
| 1869 | - "controlslist", | |
| 1870 | - "coords", | |
| 1871 | - "crossorigin", | |
| 1872 | - "datetime", | |
| 1873 | - "decoding", | |
| 1874 | - "default", | |
| 1875 | - "dir", | |
| 1876 | - "disabled", | |
| 1877 | - "disablepictureinpicture", | |
| 1878 | - "disableremoteplayback", | |
| 1879 | - "download", | |
| 1880 | - "draggable", | |
| 1881 | - "enctype", | |
| 1882 | - "enterkeyhint", | |
| 1883 | - "exportparts", | |
| 1884 | - "face", | |
| 1885 | - "for", | |
| 1886 | - "headers", | |
| 1887 | - "height", | |
| 1888 | - "hidden", | |
| 1889 | - "high", | |
| 1890 | - "href", | |
| 1891 | - "hreflang", | |
| 1892 | - "id", | |
| 1893 | - "inert", | |
| 1894 | - "inputmode", | |
| 1895 | - "integrity", | |
| 1896 | - "ismap", | |
| 1897 | - "kind", | |
| 1898 | - "label", | |
| 1899 | - "lang", | |
| 1900 | - "list", | |
| 1901 | - "loading", | |
| 1902 | - "loop", | |
| 1903 | - "low", | |
| 1904 | - "max", | |
| 1905 | - "maxlength", | |
| 1906 | - "media", | |
| 1907 | - "method", | |
| 1908 | - "min", | |
| 1909 | - "minlength", | |
| 1910 | - "multiple", | |
| 1911 | - "muted", | |
| 1912 | - "name", | |
| 1913 | - "nonce", | |
| 1914 | - "noshade", | |
| 1915 | - "novalidate", | |
| 1916 | - "nowrap", | |
| 1917 | - "open", | |
| 1918 | - "optimum", | |
| 1919 | - "part", | |
| 1920 | - "pattern", | |
| 1921 | - "placeholder", | |
| 1922 | - "playsinline", | |
| 1923 | - "popover", | |
| 1924 | - "popovertarget", | |
| 1925 | - "popovertargetaction", | |
| 1926 | - "poster", | |
| 1927 | - "preload", | |
| 1928 | - "pubdate", | |
| 1929 | - "radiogroup", | |
| 1930 | - "readonly", | |
| 1931 | - "rel", | |
| 1932 | - "required", | |
| 1933 | - "rev", | |
| 1934 | - "reversed", | |
| 1935 | - "role", | |
| 1936 | - "rows", | |
| 1937 | - "rowspan", | |
| 1938 | - "spellcheck", | |
| 1939 | - "scope", | |
| 1940 | - "selected", | |
| 1941 | - "shape", | |
| 1942 | - "size", | |
| 1943 | - "sizes", | |
| 1944 | - "slot", | |
| 1945 | - "span", | |
| 1946 | - "srclang", | |
| 1947 | - "start", | |
| 1948 | - "src", | |
| 1949 | - "srcset", | |
| 1950 | - "step", | |
| 1951 | - "style", | |
| 1952 | - "summary", | |
| 1953 | - "tabindex", | |
| 1954 | - "title", | |
| 1955 | - "translate", | |
| 1956 | - "type", | |
| 1957 | - "usemap", | |
| 1958 | - "valign", | |
| 1959 | - "value", | |
| 1960 | - "width", | |
| 1961 | - "wrap", | |
| 1962 | - "xmlns", | |
| 1963 | - "slot" | |
| 1964 | - ]); | |
| 1965 | - var svg = freeze([ | |
| 1966 | - "accent-height", | |
| 1967 | - "accumulate", | |
| 1968 | - "additive", | |
| 1969 | - "alignment-baseline", | |
| 1970 | - "amplitude", | |
| 1971 | - "ascent", | |
| 1972 | - "attributename", | |
| 1973 | - "attributetype", | |
| 1974 | - "azimuth", | |
| 1975 | - "basefrequency", | |
| 1976 | - "baseline-shift", | |
| 1977 | - "begin", | |
| 1978 | - "bias", | |
| 1979 | - "by", | |
| 1980 | - "class", | |
| 1981 | - "clip", | |
| 1982 | - "clippathunits", | |
| 1983 | - "clip-path", | |
| 1984 | - "clip-rule", | |
| 1985 | - "color", | |
| 1986 | - "color-interpolation", | |
| 1987 | - "color-interpolation-filters", | |
| 1988 | - "color-profile", | |
| 1989 | - "color-rendering", | |
| 1990 | - "cx", | |
| 1991 | - "cy", | |
| 1992 | - "d", | |
| 1993 | - "dx", | |
| 1994 | - "dy", | |
| 1995 | - "diffuseconstant", | |
| 1996 | - "direction", | |
| 1997 | - "display", | |
| 1998 | - "divisor", | |
| 1999 | - "dur", | |
| 2000 | - "edgemode", | |
| 2001 | - "elevation", | |
| 2002 | - "end", | |
| 2003 | - "exponent", | |
| 2004 | - "fill", | |
| 2005 | - "fill-opacity", | |
| 2006 | - "fill-rule", | |
| 2007 | - "filter", | |
| 2008 | - "filterunits", | |
| 2009 | - "flood-color", | |
| 2010 | - "flood-opacity", | |
| 2011 | - "font-family", | |
| 2012 | - "font-size", | |
| 2013 | - "font-size-adjust", | |
| 2014 | - "font-stretch", | |
| 2015 | - "font-style", | |
| 2016 | - "font-variant", | |
| 2017 | - "font-weight", | |
| 2018 | - "fx", | |
| 2019 | - "fy", | |
| 2020 | - "g1", | |
| 2021 | - "g2", | |
| 2022 | - "glyph-name", | |
| 2023 | - "glyphref", | |
| 2024 | - "gradientunits", | |
| 2025 | - "gradienttransform", | |
| 2026 | - "height", | |
| 2027 | - "href", | |
| 2028 | - "id", | |
| 2029 | - "image-rendering", | |
| 2030 | - "in", | |
| 2031 | - "in2", | |
| 2032 | - "intercept", | |
| 2033 | - "k", | |
| 2034 | - "k1", | |
| 2035 | - "k2", | |
| 2036 | - "k3", | |
| 2037 | - "k4", | |
| 2038 | - "kerning", | |
| 2039 | - "keypoints", | |
| 2040 | - "keysplines", | |
| 2041 | - "keytimes", | |
| 2042 | - "lang", | |
| 2043 | - "lengthadjust", | |
| 2044 | - "letter-spacing", | |
| 2045 | - "kernelmatrix", | |
| 2046 | - "kernelunitlength", | |
| 2047 | - "lighting-color", | |
| 2048 | - "local", | |
| 2049 | - "marker-end", | |
| 2050 | - "marker-mid", | |
| 2051 | - "marker-start", | |
| 2052 | - "markerheight", | |
| 2053 | - "markerunits", | |
| 2054 | - "markerwidth", | |
| 2055 | - "maskcontentunits", | |
| 2056 | - "maskunits", | |
| 2057 | - "max", | |
| 2058 | - "mask", | |
| 2059 | - "mask-type", | |
| 2060 | - "media", | |
| 2061 | - "method", | |
| 2062 | - "mode", | |
| 2063 | - "min", | |
| 2064 | - "name", | |
| 2065 | - "numoctaves", | |
| 2066 | - "offset", | |
| 2067 | - "operator", | |
| 2068 | - "opacity", | |
| 2069 | - "order", | |
| 2070 | - "orient", | |
| 2071 | - "orientation", | |
| 2072 | - "origin", | |
| 2073 | - "overflow", | |
| 2074 | - "paint-order", | |
| 2075 | - "path", | |
| 2076 | - "pathlength", | |
| 2077 | - "patterncontentunits", | |
| 2078 | - "patterntransform", | |
| 2079 | - "patternunits", | |
| 2080 | - "points", | |
| 2081 | - "preservealpha", | |
| 2082 | - "preserveaspectratio", | |
| 2083 | - "primitiveunits", | |
| 2084 | - "r", | |
| 2085 | - "rx", | |
| 2086 | - "ry", | |
| 2087 | - "radius", | |
| 2088 | - "refx", | |
| 2089 | - "refy", | |
| 2090 | - "repeatcount", | |
| 2091 | - "repeatdur", | |
| 2092 | - "restart", | |
| 2093 | - "result", | |
| 2094 | - "rotate", | |
| 2095 | - "scale", | |
| 2096 | - "seed", | |
| 2097 | - "shape-rendering", | |
| 2098 | - "slope", | |
| 2099 | - "specularconstant", | |
| 2100 | - "specularexponent", | |
| 2101 | - "spreadmethod", | |
| 2102 | - "startoffset", | |
| 2103 | - "stddeviation", | |
| 2104 | - "stitchtiles", | |
| 2105 | - "stop-color", | |
| 2106 | - "stop-opacity", | |
| 2107 | - "stroke-dasharray", | |
| 2108 | - "stroke-dashoffset", | |
| 2109 | - "stroke-linecap", | |
| 2110 | - "stroke-linejoin", | |
| 2111 | - "stroke-miterlimit", | |
| 2112 | - "stroke-opacity", | |
| 2113 | - "stroke", | |
| 2114 | - "stroke-width", | |
| 2115 | - "style", | |
| 2116 | - "surfacescale", | |
| 2117 | - "systemlanguage", | |
| 2118 | - "tabindex", | |
| 2119 | - "tablevalues", | |
| 2120 | - "targetx", | |
| 2121 | - "targety", | |
| 2122 | - "transform", | |
| 2123 | - "transform-origin", | |
| 2124 | - "text-anchor", | |
| 2125 | - "text-decoration", | |
| 2126 | - "text-rendering", | |
| 2127 | - "textlength", | |
| 2128 | - "type", | |
| 2129 | - "u1", | |
| 2130 | - "u2", | |
| 2131 | - "unicode", | |
| 2132 | - "values", | |
| 2133 | - "viewbox", | |
| 2134 | - "visibility", | |
| 2135 | - "version", | |
| 2136 | - "vert-adv-y", | |
| 2137 | - "vert-origin-x", | |
| 2138 | - "vert-origin-y", | |
| 2139 | - "width", | |
| 2140 | - "word-spacing", | |
| 2141 | - "wrap", | |
| 2142 | - "writing-mode", | |
| 2143 | - "xchannelselector", | |
| 2144 | - "ychannelselector", | |
| 2145 | - "x", | |
| 2146 | - "x1", | |
| 2147 | - "x2", | |
| 2148 | - "xmlns", | |
| 2149 | - "y", | |
| 2150 | - "y1", | |
| 2151 | - "y2", | |
| 2152 | - "z", | |
| 2153 | - "zoomandpan" | |
| 2154 | - ]); | |
| 2155 | - var mathMl = freeze([ | |
| 2156 | - "accent", | |
| 2157 | - "accentunder", | |
| 2158 | - "align", | |
| 2159 | - "bevelled", | |
| 2160 | - "close", | |
| 2161 | - "columnsalign", | |
| 2162 | - "columnlines", | |
| 2163 | - "columnspan", | |
| 2164 | - "denomalign", | |
| 2165 | - "depth", | |
| 2166 | - "dir", | |
| 2167 | - "display", | |
| 2168 | - "displaystyle", | |
| 2169 | - "encoding", | |
| 2170 | - "fence", | |
| 2171 | - "frame", | |
| 2172 | - "height", | |
| 2173 | - "href", | |
| 2174 | - "id", | |
| 2175 | - "largeop", | |
| 2176 | - "length", | |
| 2177 | - "linethickness", | |
| 2178 | - "lspace", | |
| 2179 | - "lquote", | |
| 2180 | - "mathbackground", | |
| 2181 | - "mathcolor", | |
| 2182 | - "mathsize", | |
| 2183 | - "mathvariant", | |
| 2184 | - "maxsize", | |
| 2185 | - "minsize", | |
| 2186 | - "movablelimits", | |
| 2187 | - "notation", | |
| 2188 | - "numalign", | |
| 2189 | - "open", | |
| 2190 | - "rowalign", | |
| 2191 | - "rowlines", | |
| 2192 | - "rowspacing", | |
| 2193 | - "rowspan", | |
| 2194 | - "rspace", | |
| 2195 | - "rquote", | |
| 2196 | - "scriptlevel", | |
| 2197 | - "scriptminsize", | |
| 2198 | - "scriptsizemultiplier", | |
| 2199 | - "selection", | |
| 2200 | - "separator", | |
| 2201 | - "separators", | |
| 2202 | - "stretchy", | |
| 2203 | - "subscriptshift", | |
| 2204 | - "supscriptshift", | |
| 2205 | - "symmetric", | |
| 2206 | - "voffset", | |
| 2207 | - "width", | |
| 2208 | - "xmlns" | |
| 2209 | - ]); | |
| 2210 | - var xml = freeze([ | |
| 2211 | - "xlink:href", | |
| 2212 | - "xml:id", | |
| 2213 | - "xlink:title", | |
| 2214 | - "xml:space", | |
| 2215 | - "xmlns:xlink" | |
| 2216 | - ]); | |
| 2217 | - var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); | |
| 2218 | - var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm); | |
| 2219 | - var TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); | |
| 2220 | - var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); | |
| 2221 | - var ARIA_ATTR = seal(/^aria-[\-\w]+$/); | |
| 2222 | - var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i); | |
| 2223 | - var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i); | |
| 2224 | - var ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g); | |
| 2225 | - var DOCTYPE_NAME = seal(/^html$/i); | |
| 2226 | - var CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i); | |
| 2227 | - var EXPRESSIONS = /*#__PURE__*/ Object.freeze({ | |
| 2228 | - __proto__: null, | |
| 2229 | - ARIA_ATTR, | |
| 2230 | - ATTR_WHITESPACE, | |
| 2231 | - CUSTOM_ELEMENT, | |
| 2232 | - DATA_ATTR, | |
| 2233 | - DOCTYPE_NAME, | |
| 2234 | - ERB_EXPR, | |
| 2235 | - IS_ALLOWED_URI, | |
| 2236 | - IS_SCRIPT_OR_DATA, | |
| 2237 | - MUSTACHE_EXPR, | |
| 2238 | - TMPLIT_EXPR | |
| 2239 | - }); | |
| 2240 | - var NODE_TYPE = { | |
| 2241 | - element: 1, | |
| 2242 | - attribute: 2, | |
| 2243 | - text: 3, | |
| 2244 | - cdataSection: 4, | |
| 2245 | - entityReference: 5, | |
| 2246 | - entityNode: 6, | |
| 2247 | - progressingInstruction: 7, | |
| 2248 | - comment: 8, | |
| 2249 | - document: 9, | |
| 2250 | - documentType: 10, | |
| 2251 | - documentFragment: 11, | |
| 2252 | - notation: 12 | |
| 2253 | - }; | |
| 2254 | - var getGlobal = function getGlobal() { | |
| 2255 | - return typeof window === "undefined" ? null : window; | |
| 2256 | - }; | |
| 2257 | - /** | |
| 2258 | - * Creates a no-op policy for internal use only. | |
| 2259 | - * Don't export this function outside this module! | |
| 2260 | - * @param trustedTypes The policy factory. | |
| 2261 | - * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix). | |
| 2262 | - * @return The policy created (or null, if Trusted Types | |
| 2263 | - * are not supported or creating the policy failed). | |
| 2264 | - */ | |
| 2265 | - var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) { | |
| 2266 | - if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") return null; | |
| 2267 | - let suffix = null; | |
| 2268 | - const ATTR_NAME = "data-tt-policy-suffix"; | |
| 2269 | - if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) suffix = purifyHostElement.getAttribute(ATTR_NAME); | |
| 2270 | - const policyName = "dompurify" + (suffix ? "#" + suffix : ""); | |
| 2271 | - try { | |
| 2272 | - return trustedTypes.createPolicy(policyName, { | |
| 2273 | - createHTML(html) { | |
| 2274 | - return html; | |
| 2275 | - }, | |
| 2276 | - createScriptURL(scriptUrl) { | |
| 2277 | - return scriptUrl; | |
| 2278 | - } | |
| 2279 | - }); | |
| 2280 | - } catch (_) { | |
| 2281 | - console.warn("TrustedTypes policy " + policyName + " could not be created."); | |
| 2282 | - return null; | |
| 2875 | + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { | |
| 2876 | + return test2[n]; | |
| 2877 | + }); | |
| 2878 | + if (order2.join('') !== '0123456789') { | |
| 2879 | + return false; | |
| 2283 | 2880 | } |
| 2284 | - }; | |
| 2285 | - var _createHooksMap = function _createHooksMap() { | |
| 2286 | - return { | |
| 2287 | - afterSanitizeAttributes: [], | |
| 2288 | - afterSanitizeElements: [], | |
| 2289 | - afterSanitizeShadowDOM: [], | |
| 2290 | - beforeSanitizeAttributes: [], | |
| 2291 | - beforeSanitizeElements: [], | |
| 2292 | - beforeSanitizeShadowDOM: [], | |
| 2293 | - uponSanitizeAttribute: [], | |
| 2294 | - uponSanitizeElement: [], | |
| 2295 | - uponSanitizeShadowNode: [] | |
| 2296 | - }; | |
| 2297 | - }; | |
| 2298 | - function createDOMPurify() { | |
| 2299 | - let window = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal(); | |
| 2300 | - const DOMPurify = (root) => createDOMPurify(root); | |
| 2301 | - DOMPurify.version = "3.3.0"; | |
| 2302 | - DOMPurify.removed = []; | |
| 2303 | - if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) { | |
| 2304 | - DOMPurify.isSupported = false; | |
| 2305 | - return DOMPurify; | |
| 2306 | - } | |
| 2307 | - let { document } = window; | |
| 2308 | - const originalDocument = document; | |
| 2309 | - const currentScript = originalDocument.currentScript; | |
| 2310 | - const { DocumentFragment, HTMLTemplateElement, Node, Element, NodeFilter, NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap, HTMLFormElement, DOMParser, trustedTypes } = window; | |
| 2311 | - const ElementPrototype = Element.prototype; | |
| 2312 | - const cloneNode = lookupGetter(ElementPrototype, "cloneNode"); | |
| 2313 | - const remove = lookupGetter(ElementPrototype, "remove"); | |
| 2314 | - const getNextSibling = lookupGetter(ElementPrototype, "nextSibling"); | |
| 2315 | - const getChildNodes = lookupGetter(ElementPrototype, "childNodes"); | |
| 2316 | - const getParentNode = lookupGetter(ElementPrototype, "parentNode"); | |
| 2317 | - if (typeof HTMLTemplateElement === "function") { | |
| 2318 | - const template = document.createElement("template"); | |
| 2319 | - if (template.content && template.content.ownerDocument) document = template.content.ownerDocument; | |
| 2320 | - } | |
| 2321 | - let trustedTypesPolicy; | |
| 2322 | - let emptyHTML = ""; | |
| 2323 | - const { implementation, createNodeIterator, createDocumentFragment, getElementsByTagName } = document; | |
| 2324 | - const { importNode } = originalDocument; | |
| 2325 | - let hooks = _createHooksMap(); | |
| 2326 | - /** | |
| 2327 | - * Expose whether this browser supports running the full DOMPurify. | |
| 2328 | - */ | |
| 2329 | - DOMPurify.isSupported = typeof entries === "function" && typeof getParentNode === "function" && implementation && implementation.createHTMLDocument !== void 0; | |
| 2330 | - const { MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR, DATA_ATTR, ARIA_ATTR, IS_SCRIPT_OR_DATA, ATTR_WHITESPACE, CUSTOM_ELEMENT } = EXPRESSIONS; | |
| 2331 | - let { IS_ALLOWED_URI: IS_ALLOWED_URI$1 } = EXPRESSIONS; | |
| 2332 | - /** | |
| 2333 | - * We consider the elements and attributes below to be safe. Ideally | |
| 2334 | - * don't add any new ones but feel free to remove unwanted ones. | |
| 2335 | - */ | |
| 2336 | - let ALLOWED_TAGS = null; | |
| 2337 | - const DEFAULT_ALLOWED_TAGS = addToSet({}, [ | |
| 2338 | - ...html$1, | |
| 2339 | - ...svg$1, | |
| 2340 | - ...svgFilters, | |
| 2341 | - ...mathMl$1, | |
| 2342 | - ...text | |
| 2343 | - ]); | |
| 2344 | - let ALLOWED_ATTR = null; | |
| 2345 | - const DEFAULT_ALLOWED_ATTR = addToSet({}, [ | |
| 2346 | - ...html, | |
| 2347 | - ...svg, | |
| 2348 | - ...mathMl, | |
| 2349 | - ...xml | |
| 2350 | - ]); | |
| 2351 | - let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, { | |
| 2352 | - tagNameCheck: { | |
| 2353 | - writable: true, | |
| 2354 | - configurable: false, | |
| 2355 | - enumerable: true, | |
| 2356 | - value: null | |
| 2357 | - }, | |
| 2358 | - attributeNameCheck: { | |
| 2359 | - writable: true, | |
| 2360 | - configurable: false, | |
| 2361 | - enumerable: true, | |
| 2362 | - value: null | |
| 2363 | - }, | |
| 2364 | - allowCustomizedBuiltInElements: { | |
| 2365 | - writable: true, | |
| 2366 | - configurable: false, | |
| 2367 | - enumerable: true, | |
| 2368 | - value: false | |
| 2369 | - } | |
| 2370 | - })); | |
| 2371 | - let FORBID_TAGS = null; | |
| 2372 | - let FORBID_ATTR = null; | |
| 2373 | - const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, { | |
| 2374 | - tagCheck: { | |
| 2375 | - writable: true, | |
| 2376 | - configurable: false, | |
| 2377 | - enumerable: true, | |
| 2378 | - value: null | |
| 2379 | - }, | |
| 2380 | - attributeCheck: { | |
| 2381 | - writable: true, | |
| 2382 | - configurable: false, | |
| 2383 | - enumerable: true, | |
| 2384 | - value: null | |
| 2385 | - } | |
| 2386 | - })); | |
| 2387 | - let ALLOW_ARIA_ATTR = true; | |
| 2388 | - let ALLOW_DATA_ATTR = true; | |
| 2389 | - let ALLOW_UNKNOWN_PROTOCOLS = false; | |
| 2390 | - let ALLOW_SELF_CLOSE_IN_ATTR = true; | |
| 2391 | - let SAFE_FOR_TEMPLATES = false; | |
| 2392 | - let SAFE_FOR_XML = true; | |
| 2393 | - let WHOLE_DOCUMENT = false; | |
| 2394 | - let SET_CONFIG = false; | |
| 2395 | - let FORCE_BODY = false; | |
| 2396 | - let RETURN_DOM = false; | |
| 2397 | - let RETURN_DOM_FRAGMENT = false; | |
| 2398 | - let RETURN_TRUSTED_TYPE = false; | |
| 2399 | - let SANITIZE_DOM = true; | |
| 2400 | - let SANITIZE_NAMED_PROPS = false; | |
| 2401 | - const SANITIZE_NAMED_PROPS_PREFIX = "user-content-"; | |
| 2402 | - let KEEP_CONTENT = true; | |
| 2403 | - let IN_PLACE = false; | |
| 2404 | - let USE_PROFILES = {}; | |
| 2405 | - let FORBID_CONTENTS = null; | |
| 2406 | - const DEFAULT_FORBID_CONTENTS = addToSet({}, [ | |
| 2407 | - "annotation-xml", | |
| 2408 | - "audio", | |
| 2409 | - "colgroup", | |
| 2410 | - "desc", | |
| 2411 | - "foreignobject", | |
| 2412 | - "head", | |
| 2413 | - "iframe", | |
| 2414 | - "math", | |
| 2415 | - "mi", | |
| 2416 | - "mn", | |
| 2417 | - "mo", | |
| 2418 | - "ms", | |
| 2419 | - "mtext", | |
| 2420 | - "noembed", | |
| 2421 | - "noframes", | |
| 2422 | - "noscript", | |
| 2423 | - "plaintext", | |
| 2424 | - "script", | |
| 2425 | - "style", | |
| 2426 | - "svg", | |
| 2427 | - "template", | |
| 2428 | - "thead", | |
| 2429 | - "title", | |
| 2430 | - "video", | |
| 2431 | - "xmp" | |
| 2432 | - ]); | |
| 2433 | - let DATA_URI_TAGS = null; | |
| 2434 | - const DEFAULT_DATA_URI_TAGS = addToSet({}, [ | |
| 2435 | - "audio", | |
| 2436 | - "video", | |
| 2437 | - "img", | |
| 2438 | - "source", | |
| 2439 | - "image", | |
| 2440 | - "track" | |
| 2441 | - ]); | |
| 2442 | - let URI_SAFE_ATTRIBUTES = null; | |
| 2443 | - const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [ | |
| 2444 | - "alt", | |
| 2445 | - "class", | |
| 2446 | - "for", | |
| 2447 | - "id", | |
| 2448 | - "label", | |
| 2449 | - "name", | |
| 2450 | - "pattern", | |
| 2451 | - "placeholder", | |
| 2452 | - "role", | |
| 2453 | - "summary", | |
| 2454 | - "title", | |
| 2455 | - "value", | |
| 2456 | - "style", | |
| 2457 | - "xmlns" | |
| 2458 | - ]); | |
| 2459 | - const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML"; | |
| 2460 | - const SVG_NAMESPACE = "http://www.w3.org/2000/svg"; | |
| 2461 | - const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; | |
| 2462 | - let NAMESPACE = HTML_NAMESPACE; | |
| 2463 | - let IS_EMPTY_INPUT = false; | |
| 2464 | - let ALLOWED_NAMESPACES = null; | |
| 2465 | - const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [ | |
| 2466 | - MATHML_NAMESPACE, | |
| 2467 | - SVG_NAMESPACE, | |
| 2468 | - HTML_NAMESPACE | |
| 2469 | - ], stringToString); | |
| 2470 | - let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [ | |
| 2471 | - "mi", | |
| 2472 | - "mo", | |
| 2473 | - "mn", | |
| 2474 | - "ms", | |
| 2475 | - "mtext" | |
| 2476 | - ]); | |
| 2477 | - let HTML_INTEGRATION_POINTS = addToSet({}, ["annotation-xml"]); | |
| 2478 | - const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [ | |
| 2479 | - "title", | |
| 2480 | - "style", | |
| 2481 | - "font", | |
| 2482 | - "a", | |
| 2483 | - "script" | |
| 2484 | - ]); | |
| 2485 | - let PARSER_MEDIA_TYPE = null; | |
| 2486 | - const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"]; | |
| 2487 | - const DEFAULT_PARSER_MEDIA_TYPE = "text/html"; | |
| 2488 | - let transformCaseFunc = null; | |
| 2489 | - let CONFIG = null; | |
| 2490 | - const formElement = document.createElement("form"); | |
| 2491 | - const isRegexOrFunction = function isRegexOrFunction(testValue) { | |
| 2492 | - return testValue instanceof RegExp || testValue instanceof Function; | |
| 2493 | - }; | |
| 2494 | - /** | |
| 2495 | - * _parseConfig | |
| 2496 | - * | |
| 2497 | - * @param cfg optional config literal | |
| 2498 | - */ | |
| 2499 | - const _parseConfig = function _parseConfig() { | |
| 2500 | - let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; | |
| 2501 | - if (CONFIG && CONFIG === cfg) return; | |
| 2502 | - if (!cfg || typeof cfg !== "object") cfg = {}; | |
| 2503 | - cfg = clone(cfg); | |
| 2504 | - PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE; | |
| 2505 | - transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase; | |
| 2506 | - ALLOWED_TAGS = objectHasOwnProperty(cfg, "ALLOWED_TAGS") ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS; | |
| 2507 | - ALLOWED_ATTR = objectHasOwnProperty(cfg, "ALLOWED_ATTR") ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR; | |
| 2508 | - ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, "ALLOWED_NAMESPACES") ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES; | |
| 2509 | - URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, "ADD_URI_SAFE_ATTR") ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES; | |
| 2510 | - DATA_URI_TAGS = objectHasOwnProperty(cfg, "ADD_DATA_URI_TAGS") ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS; | |
| 2511 | - FORBID_CONTENTS = objectHasOwnProperty(cfg, "FORBID_CONTENTS") ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS; | |
| 2512 | - FORBID_TAGS = objectHasOwnProperty(cfg, "FORBID_TAGS") ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({}); | |
| 2513 | - FORBID_ATTR = objectHasOwnProperty(cfg, "FORBID_ATTR") ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({}); | |
| 2514 | - USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES : false; | |
| 2515 | - ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; | |
| 2516 | - ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; | |
| 2517 | - ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; | |
| 2518 | - ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; | |
| 2519 | - SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; | |
| 2520 | - SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; | |
| 2521 | - WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; | |
| 2522 | - RETURN_DOM = cfg.RETURN_DOM || false; | |
| 2523 | - RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; | |
| 2524 | - RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; | |
| 2525 | - FORCE_BODY = cfg.FORCE_BODY || false; | |
| 2526 | - SANITIZE_DOM = cfg.SANITIZE_DOM !== false; | |
| 2527 | - SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; | |
| 2528 | - KEEP_CONTENT = cfg.KEEP_CONTENT !== false; | |
| 2529 | - IN_PLACE = cfg.IN_PLACE || false; | |
| 2530 | - IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI; | |
| 2531 | - NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE; | |
| 2532 | - MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS; | |
| 2533 | - HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS; | |
| 2534 | - CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; | |
| 2535 | - if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck; | |
| 2536 | - if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck; | |
| 2537 | - if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements; | |
| 2538 | - if (SAFE_FOR_TEMPLATES) ALLOW_DATA_ATTR = false; | |
| 2539 | - if (RETURN_DOM_FRAGMENT) RETURN_DOM = true; | |
| 2540 | - if (USE_PROFILES) { | |
| 2541 | - ALLOWED_TAGS = addToSet({}, text); | |
| 2542 | - ALLOWED_ATTR = []; | |
| 2543 | - if (USE_PROFILES.html === true) { | |
| 2544 | - addToSet(ALLOWED_TAGS, html$1); | |
| 2545 | - addToSet(ALLOWED_ATTR, html); | |
| 2546 | - } | |
| 2547 | - if (USE_PROFILES.svg === true) { | |
| 2548 | - addToSet(ALLOWED_TAGS, svg$1); | |
| 2549 | - addToSet(ALLOWED_ATTR, svg); | |
| 2550 | - addToSet(ALLOWED_ATTR, xml); | |
| 2551 | - } | |
| 2552 | - if (USE_PROFILES.svgFilters === true) { | |
| 2553 | - addToSet(ALLOWED_TAGS, svgFilters); | |
| 2554 | - addToSet(ALLOWED_ATTR, svg); | |
| 2555 | - addToSet(ALLOWED_ATTR, xml); | |
| 2556 | - } | |
| 2557 | - if (USE_PROFILES.mathMl === true) { | |
| 2558 | - addToSet(ALLOWED_TAGS, mathMl$1); | |
| 2559 | - addToSet(ALLOWED_ATTR, mathMl); | |
| 2560 | - addToSet(ALLOWED_ATTR, xml); | |
| 2561 | - } | |
| 2562 | - } | |
| 2563 | - if (cfg.ADD_TAGS) if (typeof cfg.ADD_TAGS === "function") EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS; | |
| 2564 | - else { | |
| 2565 | - if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) ALLOWED_TAGS = clone(ALLOWED_TAGS); | |
| 2566 | - addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc); | |
| 2567 | - } | |
| 2568 | - if (cfg.ADD_ATTR) if (typeof cfg.ADD_ATTR === "function") EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR; | |
| 2569 | - else { | |
| 2570 | - if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) ALLOWED_ATTR = clone(ALLOWED_ATTR); | |
| 2571 | - addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc); | |
| 2572 | - } | |
| 2573 | - if (cfg.ADD_URI_SAFE_ATTR) addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc); | |
| 2574 | - if (cfg.FORBID_CONTENTS) { | |
| 2575 | - if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) FORBID_CONTENTS = clone(FORBID_CONTENTS); | |
| 2576 | - addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc); | |
| 2577 | - } | |
| 2578 | - if (KEEP_CONTENT) ALLOWED_TAGS["#text"] = true; | |
| 2579 | - if (WHOLE_DOCUMENT) addToSet(ALLOWED_TAGS, [ | |
| 2580 | - "html", | |
| 2581 | - "head", | |
| 2582 | - "body" | |
| 2583 | - ]); | |
| 2584 | - if (ALLOWED_TAGS.table) { | |
| 2585 | - addToSet(ALLOWED_TAGS, ["tbody"]); | |
| 2586 | - delete FORBID_TAGS.tbody; | |
| 2587 | - } | |
| 2588 | - if (cfg.TRUSTED_TYPES_POLICY) { | |
| 2589 | - if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") throw typeErrorCreate("TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook."); | |
| 2590 | - if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") throw typeErrorCreate("TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook."); | |
| 2591 | - trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; | |
| 2592 | - emptyHTML = trustedTypesPolicy.createHTML(""); | |
| 2593 | - } else { | |
| 2594 | - if (trustedTypesPolicy === void 0) trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript); | |
| 2595 | - if (trustedTypesPolicy !== null && typeof emptyHTML === "string") emptyHTML = trustedTypesPolicy.createHTML(""); | |
| 2596 | - } | |
| 2597 | - if (freeze) freeze(cfg); | |
| 2598 | - CONFIG = cfg; | |
| 2599 | - }; | |
| 2600 | - const ALL_SVG_TAGS = addToSet({}, [ | |
| 2601 | - ...svg$1, | |
| 2602 | - ...svgFilters, | |
| 2603 | - ...svgDisallowed | |
| 2604 | - ]); | |
| 2605 | - const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]); | |
| 2606 | - /** | |
| 2607 | - * @param element a DOM element whose namespace is being checked | |
| 2608 | - * @returns Return false if the element has a | |
| 2609 | - * namespace that a spec-compliant parser would never | |
| 2610 | - * return. Return true otherwise. | |
| 2611 | - */ | |
| 2612 | - const _checkValidNamespace = function _checkValidNamespace(element) { | |
| 2613 | - let parent = getParentNode(element); | |
| 2614 | - if (!parent || !parent.tagName) parent = { | |
| 2615 | - namespaceURI: NAMESPACE, | |
| 2616 | - tagName: "template" | |
| 2617 | - }; | |
| 2618 | - const tagName = stringToLowerCase(element.tagName); | |
| 2619 | - const parentTagName = stringToLowerCase(parent.tagName); | |
| 2620 | - if (!ALLOWED_NAMESPACES[element.namespaceURI]) return false; | |
| 2621 | - if (element.namespaceURI === SVG_NAMESPACE) { | |
| 2622 | - if (parent.namespaceURI === HTML_NAMESPACE) return tagName === "svg"; | |
| 2623 | - if (parent.namespaceURI === MATHML_NAMESPACE) return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]); | |
| 2624 | - return Boolean(ALL_SVG_TAGS[tagName]); | |
| 2625 | - } | |
| 2626 | - if (element.namespaceURI === MATHML_NAMESPACE) { | |
| 2627 | - if (parent.namespaceURI === HTML_NAMESPACE) return tagName === "math"; | |
| 2628 | - if (parent.namespaceURI === SVG_NAMESPACE) return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName]; | |
| 2629 | - return Boolean(ALL_MATHML_TAGS[tagName]); | |
| 2630 | - } | |
| 2631 | - if (element.namespaceURI === HTML_NAMESPACE) { | |
| 2632 | - if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) return false; | |
| 2633 | - if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) return false; | |
| 2634 | - return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]); | |
| 2635 | - } | |
| 2636 | - if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) return true; | |
| 2881 | + | |
| 2882 | + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 | |
| 2883 | + var test3 = {}; | |
| 2884 | + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { | |
| 2885 | + test3[letter] = letter; | |
| 2886 | + }); | |
| 2887 | + if (Object.keys(Object.assign({}, test3)).join('') !== | |
| 2888 | + 'abcdefghijklmnopqrst') { | |
| 2637 | 2889 | return false; |
| 2638 | - }; | |
| 2639 | - /** | |
| 2640 | - * _forceRemove | |
| 2641 | - * | |
| 2642 | - * @param node a DOM node | |
| 2643 | - */ | |
| 2644 | - const _forceRemove = function _forceRemove(node) { | |
| 2645 | - arrayPush(DOMPurify.removed, { element: node }); | |
| 2646 | - try { | |
| 2647 | - getParentNode(node).removeChild(node); | |
| 2648 | - } catch (_) { | |
| 2649 | - remove(node); | |
| 2650 | - } | |
| 2651 | - }; | |
| 2652 | - /** | |
| 2653 | - * _removeAttribute | |
| 2654 | - * | |
| 2655 | - * @param name an Attribute name | |
| 2656 | - * @param element a DOM node | |
| 2657 | - */ | |
| 2658 | - const _removeAttribute = function _removeAttribute(name, element) { | |
| 2659 | - try { | |
| 2660 | - arrayPush(DOMPurify.removed, { | |
| 2661 | - attribute: element.getAttributeNode(name), | |
| 2662 | - from: element | |
| 2663 | - }); | |
| 2664 | - } catch (_) { | |
| 2665 | - arrayPush(DOMPurify.removed, { | |
| 2666 | - attribute: null, | |
| 2667 | - from: element | |
| 2668 | - }); | |
| 2669 | - } | |
| 2670 | - element.removeAttribute(name); | |
| 2671 | - if (name === "is") if (RETURN_DOM || RETURN_DOM_FRAGMENT) try { | |
| 2672 | - _forceRemove(element); | |
| 2673 | - } catch (_) {} | |
| 2674 | - else try { | |
| 2675 | - element.setAttribute(name, ""); | |
| 2676 | - } catch (_) {} | |
| 2677 | - }; | |
| 2678 | - /** | |
| 2679 | - * _initDocument | |
| 2680 | - * | |
| 2681 | - * @param dirty - a string of dirty markup | |
| 2682 | - * @return a DOM, filled with the dirty markup | |
| 2683 | - */ | |
| 2684 | - const _initDocument = function _initDocument(dirty) { | |
| 2685 | - let doc = null; | |
| 2686 | - let leadingWhitespace = null; | |
| 2687 | - if (FORCE_BODY) dirty = "<remove></remove>" + dirty; | |
| 2688 | - else { | |
| 2689 | - const matches = stringMatch(dirty, /^[\r\n\t ]+/); | |
| 2690 | - leadingWhitespace = matches && matches[0]; | |
| 2691 | - } | |
| 2692 | - if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) dirty = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>" + dirty + "</body></html>"; | |
| 2693 | - const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty; | |
| 2694 | - if (NAMESPACE === HTML_NAMESPACE) try { | |
| 2695 | - doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE); | |
| 2696 | - } catch (_) {} | |
| 2697 | - if (!doc || !doc.documentElement) { | |
| 2698 | - doc = implementation.createDocument(NAMESPACE, "template", null); | |
| 2699 | - try { | |
| 2700 | - doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload; | |
| 2701 | - } catch (_) {} | |
| 2702 | - } | |
| 2703 | - const body = doc.body || doc.documentElement; | |
| 2704 | - if (dirty && leadingWhitespace) body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null); | |
| 2705 | - if (NAMESPACE === HTML_NAMESPACE) return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0]; | |
| 2706 | - return WHOLE_DOCUMENT ? doc.documentElement : body; | |
| 2707 | - }; | |
| 2708 | - /** | |
| 2709 | - * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document. | |
| 2710 | - * | |
| 2711 | - * @param root The root element or node to start traversing on. | |
| 2712 | - * @return The created NodeIterator | |
| 2713 | - */ | |
| 2714 | - const _createNodeIterator = function _createNodeIterator(root) { | |
| 2715 | - return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null); | |
| 2716 | - }; | |
| 2717 | - /** | |
| 2718 | - * _isClobbered | |
| 2719 | - * | |
| 2720 | - * @param element element to check for clobbering attacks | |
| 2721 | - * @return true if clobbered, false if safe | |
| 2722 | - */ | |
| 2723 | - const _isClobbered = function _isClobbered(element) { | |
| 2724 | - return element instanceof HTMLFormElement && (typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function"); | |
| 2725 | - }; | |
| 2726 | - /** | |
| 2727 | - * Checks whether the given object is a DOM node. | |
| 2728 | - * | |
| 2729 | - * @param value object to check whether it's a DOM node | |
| 2730 | - * @return true is object is a DOM node | |
| 2731 | - */ | |
| 2732 | - const _isNode = function _isNode(value) { | |
| 2733 | - return typeof Node === "function" && value instanceof Node; | |
| 2734 | - }; | |
| 2735 | - function _executeHooks(hooks, currentNode, data) { | |
| 2736 | - arrayForEach(hooks, (hook) => { | |
| 2737 | - hook.call(DOMPurify, currentNode, data, CONFIG); | |
| 2738 | - }); | |
| 2739 | 2890 | } |
| 2740 | - /** | |
| 2741 | - * _sanitizeElements | |
| 2742 | - * | |
| 2743 | - * @protect nodeName | |
| 2744 | - * @protect textContent | |
| 2745 | - * @protect removeChild | |
| 2746 | - * @param currentNode to check for permission to exist | |
| 2747 | - * @return true if node was killed, false if left alive | |
| 2748 | - */ | |
| 2749 | - const _sanitizeElements = function _sanitizeElements(currentNode) { | |
| 2750 | - let content = null; | |
| 2751 | - _executeHooks(hooks.beforeSanitizeElements, currentNode, null); | |
| 2752 | - if (_isClobbered(currentNode)) { | |
| 2753 | - _forceRemove(currentNode); | |
| 2754 | - return true; | |
| 2755 | - } | |
| 2756 | - const tagName = transformCaseFunc(currentNode.nodeName); | |
| 2757 | - _executeHooks(hooks.uponSanitizeElement, currentNode, { | |
| 2758 | - tagName, | |
| 2759 | - allowedTags: ALLOWED_TAGS | |
| 2760 | - }); | |
| 2761 | - if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) { | |
| 2762 | - _forceRemove(currentNode); | |
| 2763 | - return true; | |
| 2764 | - } | |
| 2765 | - if (currentNode.nodeType === NODE_TYPE.progressingInstruction) { | |
| 2766 | - _forceRemove(currentNode); | |
| 2767 | - return true; | |
| 2768 | - } | |
| 2769 | - if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) { | |
| 2770 | - _forceRemove(currentNode); | |
| 2771 | - return true; | |
| 2772 | - } | |
| 2773 | - if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) { | |
| 2774 | - if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) { | |
| 2775 | - if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false; | |
| 2776 | - if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false; | |
| 2777 | - } | |
| 2778 | - if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) { | |
| 2779 | - const parentNode = getParentNode(currentNode) || currentNode.parentNode; | |
| 2780 | - const childNodes = getChildNodes(currentNode) || currentNode.childNodes; | |
| 2781 | - if (childNodes && parentNode) { | |
| 2782 | - const childCount = childNodes.length; | |
| 2783 | - for (let i = childCount - 1; i >= 0; --i) { | |
| 2784 | - const childClone = cloneNode(childNodes[i], true); | |
| 2785 | - childClone.__removalCount = (currentNode.__removalCount || 0) + 1; | |
| 2786 | - parentNode.insertBefore(childClone, getNextSibling(currentNode)); | |
| 2787 | - } | |
| 2788 | - } | |
| 2789 | - } | |
| 2790 | - _forceRemove(currentNode); | |
| 2791 | - return true; | |
| 2792 | - } | |
| 2793 | - if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) { | |
| 2794 | - _forceRemove(currentNode); | |
| 2795 | - return true; | |
| 2796 | - } | |
| 2797 | - if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) { | |
| 2798 | - _forceRemove(currentNode); | |
| 2799 | - return true; | |
| 2800 | - } | |
| 2801 | - if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) { | |
| 2802 | - content = currentNode.textContent; | |
| 2803 | - arrayForEach([ | |
| 2804 | - MUSTACHE_EXPR, | |
| 2805 | - ERB_EXPR, | |
| 2806 | - TMPLIT_EXPR | |
| 2807 | - ], (expr) => { | |
| 2808 | - content = stringReplace(content, expr, " "); | |
| 2809 | - }); | |
| 2810 | - if (currentNode.textContent !== content) { | |
| 2811 | - arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() }); | |
| 2812 | - currentNode.textContent = content; | |
| 2813 | - } | |
| 2814 | - } | |
| 2815 | - _executeHooks(hooks.afterSanitizeElements, currentNode, null); | |
| 2816 | - return false; | |
| 2817 | - }; | |
| 2818 | - /** | |
| 2819 | - * _isValidAttribute | |
| 2820 | - * | |
| 2821 | - * @param lcTag Lowercase tag name of containing element. | |
| 2822 | - * @param lcName Lowercase attribute name. | |
| 2823 | - * @param value Attribute value. | |
| 2824 | - * @return Returns true if `value` is valid, otherwise false. | |
| 2825 | - */ | |
| 2826 | - const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { | |
| 2827 | - if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document || value in formElement)) return false; | |
| 2828 | - if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)); | |
| 2829 | - else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)); | |
| 2830 | - else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)); | |
| 2831 | - else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) if (_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, lcTag)) || 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))); | |
| 2832 | - else return false; | |
| 2833 | - else if (URI_SAFE_ATTRIBUTES[lcName]); | |
| 2834 | - else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ""))); | |
| 2835 | - else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]); | |
| 2836 | - else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ""))); | |
| 2837 | - else if (value) return false; | |
| 2838 | - return true; | |
| 2839 | - }; | |
| 2840 | - /** | |
| 2841 | - * _isBasicCustomElement | |
| 2842 | - * checks if at least one dash is included in tagName, and it's not the first char | |
| 2843 | - * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name | |
| 2844 | - * | |
| 2845 | - * @param tagName name of the tag of the node to sanitize | |
| 2846 | - * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false. | |
| 2847 | - */ | |
| 2848 | - const _isBasicCustomElement = function _isBasicCustomElement(tagName) { | |
| 2849 | - return tagName !== "annotation-xml" && stringMatch(tagName, CUSTOM_ELEMENT); | |
| 2850 | - }; | |
| 2851 | - /** | |
| 2852 | - * _sanitizeAttributes | |
| 2853 | - * | |
| 2854 | - * @protect attributes | |
| 2855 | - * @protect nodeName | |
| 2856 | - * @protect removeAttribute | |
| 2857 | - * @protect setAttribute | |
| 2858 | - * | |
| 2859 | - * @param currentNode to sanitize | |
| 2860 | - */ | |
| 2861 | - const _sanitizeAttributes = function _sanitizeAttributes(currentNode) { | |
| 2862 | - _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null); | |
| 2863 | - const { attributes } = currentNode; | |
| 2864 | - if (!attributes || _isClobbered(currentNode)) return; | |
| 2865 | - const hookEvent = { | |
| 2866 | - attrName: "", | |
| 2867 | - attrValue: "", | |
| 2868 | - keepAttr: true, | |
| 2869 | - allowedAttributes: ALLOWED_ATTR, | |
| 2870 | - forceKeepAttr: void 0 | |
| 2871 | - }; | |
| 2872 | - let l = attributes.length; | |
| 2873 | - while (l--) { | |
| 2874 | - const { name, namespaceURI, value: attrValue } = attributes[l]; | |
| 2875 | - const lcName = transformCaseFunc(name); | |
| 2876 | - const initValue = attrValue; | |
| 2877 | - let value = name === "value" ? initValue : stringTrim(initValue); | |
| 2878 | - hookEvent.attrName = lcName; | |
| 2879 | - hookEvent.attrValue = value; | |
| 2880 | - hookEvent.keepAttr = true; | |
| 2881 | - hookEvent.forceKeepAttr = void 0; | |
| 2882 | - _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent); | |
| 2883 | - value = hookEvent.attrValue; | |
| 2884 | - if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name")) { | |
| 2885 | - _removeAttribute(name, currentNode); | |
| 2886 | - value = SANITIZE_NAMED_PROPS_PREFIX + value; | |
| 2887 | - } | |
| 2888 | - if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) { | |
| 2889 | - _removeAttribute(name, currentNode); | |
| 2890 | - continue; | |
| 2891 | - } | |
| 2892 | - if (lcName === "attributename" && stringMatch(value, "href")) { | |
| 2893 | - _removeAttribute(name, currentNode); | |
| 2894 | - continue; | |
| 2895 | - } | |
| 2896 | - if (hookEvent.forceKeepAttr) continue; | |
| 2897 | - if (!hookEvent.keepAttr) { | |
| 2898 | - _removeAttribute(name, currentNode); | |
| 2899 | - continue; | |
| 2900 | - } | |
| 2901 | - if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) { | |
| 2902 | - _removeAttribute(name, currentNode); | |
| 2903 | - continue; | |
| 2904 | - } | |
| 2905 | - if (SAFE_FOR_TEMPLATES) arrayForEach([ | |
| 2906 | - MUSTACHE_EXPR, | |
| 2907 | - ERB_EXPR, | |
| 2908 | - TMPLIT_EXPR | |
| 2909 | - ], (expr) => { | |
| 2910 | - value = stringReplace(value, expr, " "); | |
| 2911 | - }); | |
| 2912 | - const lcTag = transformCaseFunc(currentNode.nodeName); | |
| 2913 | - if (!_isValidAttribute(lcTag, lcName, value)) { | |
| 2914 | - _removeAttribute(name, currentNode); | |
| 2915 | - continue; | |
| 2916 | - } | |
| 2917 | - if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function") if (namespaceURI); | |
| 2918 | - else switch (trustedTypes.getAttributeType(lcTag, lcName)) { | |
| 2919 | - case "TrustedHTML": | |
| 2920 | - value = trustedTypesPolicy.createHTML(value); | |
| 2921 | - break; | |
| 2922 | - case "TrustedScriptURL": | |
| 2923 | - value = trustedTypesPolicy.createScriptURL(value); | |
| 2924 | - break; | |
| 2925 | - } | |
| 2926 | - if (value !== initValue) try { | |
| 2927 | - if (namespaceURI) currentNode.setAttributeNS(namespaceURI, name, value); | |
| 2928 | - else currentNode.setAttribute(name, value); | |
| 2929 | - if (_isClobbered(currentNode)) _forceRemove(currentNode); | |
| 2930 | - else arrayPop(DOMPurify.removed); | |
| 2931 | - } catch (_) { | |
| 2932 | - _removeAttribute(name, currentNode); | |
| 2933 | - } | |
| 2934 | - } | |
| 2935 | - _executeHooks(hooks.afterSanitizeAttributes, currentNode, null); | |
| 2936 | - }; | |
| 2937 | - /** | |
| 2938 | - * _sanitizeShadowDOM | |
| 2939 | - * | |
| 2940 | - * @param fragment to iterate over recursively | |
| 2941 | - */ | |
| 2942 | - const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) { | |
| 2943 | - let shadowNode = null; | |
| 2944 | - const shadowIterator = _createNodeIterator(fragment); | |
| 2945 | - _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null); | |
| 2946 | - while (shadowNode = shadowIterator.nextNode()) { | |
| 2947 | - _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null); | |
| 2948 | - _sanitizeElements(shadowNode); | |
| 2949 | - _sanitizeAttributes(shadowNode); | |
| 2950 | - if (shadowNode.content instanceof DocumentFragment) _sanitizeShadowDOM(shadowNode.content); | |
| 2951 | - } | |
| 2952 | - _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null); | |
| 2953 | - }; | |
| 2954 | - DOMPurify.sanitize = function(dirty) { | |
| 2955 | - let cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; | |
| 2956 | - let body = null; | |
| 2957 | - let importedNode = null; | |
| 2958 | - let currentNode = null; | |
| 2959 | - let returnNode = null; | |
| 2960 | - IS_EMPTY_INPUT = !dirty; | |
| 2961 | - if (IS_EMPTY_INPUT) dirty = "<!-->"; | |
| 2962 | - if (typeof dirty !== "string" && !_isNode(dirty)) if (typeof dirty.toString === "function") { | |
| 2963 | - dirty = dirty.toString(); | |
| 2964 | - if (typeof dirty !== "string") throw typeErrorCreate("dirty is not a string, aborting"); | |
| 2965 | - } else throw typeErrorCreate("toString is not a function"); | |
| 2966 | - if (!DOMPurify.isSupported) return dirty; | |
| 2967 | - if (!SET_CONFIG) _parseConfig(cfg); | |
| 2968 | - DOMPurify.removed = []; | |
| 2969 | - if (typeof dirty === "string") IN_PLACE = false; | |
| 2970 | - if (IN_PLACE) { | |
| 2971 | - if (dirty.nodeName) { | |
| 2972 | - const tagName = transformCaseFunc(dirty.nodeName); | |
| 2973 | - if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place"); | |
| 2974 | - } | |
| 2975 | - } else if (dirty instanceof Node) { | |
| 2976 | - body = _initDocument("<!---->"); | |
| 2977 | - importedNode = body.ownerDocument.importNode(dirty, true); | |
| 2978 | - if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") body = importedNode; | |
| 2979 | - else if (importedNode.nodeName === "HTML") body = importedNode; | |
| 2980 | - else body.appendChild(importedNode); | |
| 2981 | - } else { | |
| 2982 | - if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf("<") === -1) return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty; | |
| 2983 | - body = _initDocument(dirty); | |
| 2984 | - if (!body) return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ""; | |
| 2985 | - } | |
| 2986 | - if (body && FORCE_BODY) _forceRemove(body.firstChild); | |
| 2987 | - const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body); | |
| 2988 | - while (currentNode = nodeIterator.nextNode()) { | |
| 2989 | - _sanitizeElements(currentNode); | |
| 2990 | - _sanitizeAttributes(currentNode); | |
| 2991 | - if (currentNode.content instanceof DocumentFragment) _sanitizeShadowDOM(currentNode.content); | |
| 2992 | - } | |
| 2993 | - if (IN_PLACE) return dirty; | |
| 2994 | - if (RETURN_DOM) { | |
| 2995 | - if (RETURN_DOM_FRAGMENT) { | |
| 2996 | - returnNode = createDocumentFragment.call(body.ownerDocument); | |
| 2997 | - while (body.firstChild) returnNode.appendChild(body.firstChild); | |
| 2998 | - } else returnNode = body; | |
| 2999 | - if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) returnNode = importNode.call(originalDocument, returnNode, true); | |
| 3000 | - return returnNode; | |
| 3001 | - } | |
| 3002 | - let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML; | |
| 3003 | - 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; | |
| 3004 | - if (SAFE_FOR_TEMPLATES) arrayForEach([ | |
| 3005 | - MUSTACHE_EXPR, | |
| 3006 | - ERB_EXPR, | |
| 3007 | - TMPLIT_EXPR | |
| 3008 | - ], (expr) => { | |
| 3009 | - serializedHTML = stringReplace(serializedHTML, expr, " "); | |
| 3010 | - }); | |
| 3011 | - return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML; | |
| 3012 | - }; | |
| 3013 | - DOMPurify.setConfig = function() { | |
| 3014 | - let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; | |
| 3015 | - _parseConfig(cfg); | |
| 3016 | - SET_CONFIG = true; | |
| 3017 | - }; | |
| 3018 | - DOMPurify.clearConfig = function() { | |
| 3019 | - CONFIG = null; | |
| 3020 | - SET_CONFIG = false; | |
| 3021 | - }; | |
| 3022 | - DOMPurify.isValidAttribute = function(tag, attr, value) { | |
| 3023 | - if (!CONFIG) _parseConfig({}); | |
| 3024 | - const lcTag = transformCaseFunc(tag); | |
| 3025 | - const lcName = transformCaseFunc(attr); | |
| 3026 | - return _isValidAttribute(lcTag, lcName, value); | |
| 3027 | - }; | |
| 3028 | - DOMPurify.addHook = function(entryPoint, hookFunction) { | |
| 3029 | - if (typeof hookFunction !== "function") return; | |
| 3030 | - arrayPush(hooks[entryPoint], hookFunction); | |
| 3031 | - }; | |
| 3032 | - DOMPurify.removeHook = function(entryPoint, hookFunction) { | |
| 3033 | - if (hookFunction !== void 0) { | |
| 3034 | - const index = arrayLastIndexOf(hooks[entryPoint], hookFunction); | |
| 3035 | - return index === -1 ? void 0 : arraySplice(hooks[entryPoint], index, 1)[0]; | |
| 3036 | - } | |
| 3037 | - return arrayPop(hooks[entryPoint]); | |
| 3038 | - }; | |
| 3039 | - DOMPurify.removeHooks = function(entryPoint) { | |
| 3040 | - hooks[entryPoint] = []; | |
| 3041 | - }; | |
| 3042 | - DOMPurify.removeAllHooks = function() { | |
| 3043 | - hooks = _createHooksMap(); | |
| 3044 | - }; | |
| 3045 | - return DOMPurify; | |
| 2891 | + | |
| 2892 | + return true; | |
| 2893 | + } catch (err) { | |
| 2894 | + // We don't expect any of the above to throw, but better to be safe. | |
| 2895 | + return false; | |
| 3046 | 2896 | } |
| 3047 | - var purify = createDOMPurify(); | |
| 2897 | +} | |
| 3048 | 2898 | |
| 3049 | -//#endregion | |
| 3050 | -//#region modules/atomic-opt-in/assets/js/opt-in-page/opt-in-terms.js | |
| 3051 | - var _excluded = [ | |
| 3052 | - "onClose", | |
| 3053 | - "onSubmit", | |
| 3054 | - "isEnrolled" | |
| 3055 | - ]; | |
| 3056 | - var i18n$1 = { | |
| 3057 | - header: (0, _wordpress_i18n.__)("Atomic Editor", "elementor"), | |
| 3058 | - checkboxText: (0, _wordpress_i18n.__)("I’ve read and understood.", "elementor"), | |
| 3059 | - optIn: { | |
| 3060 | - titleText: (0, _wordpress_i18n.__)("You are about to enable Atomic Editor features!", "elementor"), | |
| 3061 | - introText: (0, _wordpress_i18n.__)("By activating, you’ll get access to the next generation of Elementor’s Editor. This is your chance to explore new capabilities and help shape the future of Elementor! ", "elementor"), | |
| 3062 | - details: [(0, _wordpress_i18n.__)("When you activate, you’ll also be activating Containers and Nested Elements. You can turn them back off by going to: WP Admin > Elementor > Settings > Features.", "elementor")], | |
| 3063 | - activateButton: (0, _wordpress_i18n.__)("Activate", "elementor"), | |
| 3064 | - cancelButton: (0, _wordpress_i18n.__)("Cancel", "elementor") | |
| 3065 | - }, | |
| 3066 | - optOut: { | |
| 3067 | - titleText: (0, _wordpress_i18n.__)("You're about to lose all content created with Atomic features", "elementor"), | |
| 3068 | - details: [(0, _wordpress_i18n.__)("By deactivating, you’ll lose all Atomic Elements, Classes and Variables. Any content you created with these features will no longer be available or appear on your site.", "elementor"), (0, _wordpress_i18n.__)("Containers and Nested Elements will stay in their current status.", "elementor")], | |
| 3069 | - activateButton: (0, _wordpress_i18n.__)("Deactivate", "elementor"), | |
| 3070 | - cancelButton: (0, _wordpress_i18n.__)("Cancel", "elementor") | |
| 3071 | - } | |
| 3072 | - }; | |
| 3073 | - var Terms = function Terms(_ref) { | |
| 3074 | - var onClose = _ref.onClose; | |
| 3075 | - var onSubmit = _ref.onSubmit; | |
| 3076 | - var isEnrolled = _ref.isEnrolled; | |
| 3077 | - var props = _objectWithoutProperties(_ref, _excluded); | |
| 3078 | - var _useState2 = _slicedToArray((0, react.useState)(false), 2); | |
| 3079 | - var checked = _useState2[0]; | |
| 3080 | - var setChecked = _useState2[1]; | |
| 3081 | - var handleCheckboxChange = function handleCheckboxChange() { | |
| 3082 | - setChecked(function(prev) { | |
| 3083 | - return !prev; | |
| 3084 | - }); | |
| 3085 | - }; | |
| 3086 | - var handleSubmit = function handleSubmit() { | |
| 3087 | - if (checked) onSubmit(); | |
| 3088 | - }; | |
| 3089 | - var currentState = isEnrolled ? "optOut" : "optIn"; | |
| 3090 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.Dialog, _extends({}, props, { | |
| 3091 | - open: true, | |
| 3092 | - onClose, | |
| 3093 | - maxWidth: "md" | |
| 3094 | - }), /*#__PURE__*/ react.default.createElement(_elementor_ui_DialogHeader.default, null, /*#__PURE__*/ react.default.createElement(_elementor_ui_DialogHeaderGroup.default, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogTitle, null, i18n$1.header))), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogContent, { dividers: true }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { gap: 2.5 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { | |
| 3095 | - gap: 1.5, | |
| 3096 | - sx: { | |
| 3097 | - mx: 2, | |
| 3098 | - maxWidth: "550px" | |
| 3099 | - } | |
| 3100 | - }, /*#__PURE__*/ react.default.createElement(TextNode, { | |
| 3101 | - align: "center", | |
| 3102 | - variant: "h6" | |
| 3103 | - }, i18n$1[currentState].titleText), i18n$1[currentState].introText && /*#__PURE__*/ react.default.createElement(TextNode, { | |
| 3104 | - align: "center", | |
| 3105 | - variant: "body3" | |
| 3106 | - }, i18n$1[currentState].introText)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, null, /*#__PURE__*/ react.default.createElement(ContentList, { sx: { | |
| 3107 | - mx: 3, | |
| 3108 | - maxWidth: "550px" | |
| 3109 | - } }, i18n$1[currentState].details.map(function(entry, index) { | |
| 3110 | - return /*#__PURE__*/ react.default.createElement(ContentListItem, { | |
| 3111 | - key: index, | |
| 3112 | - variant: "body3" | |
| 3113 | - }, entry); | |
| 3114 | - }))), /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControlLabel, { | |
| 3115 | - control: /*#__PURE__*/ react.default.createElement(_elementor_ui.Checkbox, { | |
| 3116 | - checked: !!checked, | |
| 3117 | - onChange: handleCheckboxChange, | |
| 3118 | - color: "secondary", | |
| 3119 | - size: "small" | |
| 3120 | - }), | |
| 3121 | - label: /*#__PURE__*/ react.default.createElement(TextNode, { variant: "body2" }, i18n$1.checkboxText) | |
| 3122 | - }))), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogActions, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { | |
| 3123 | - variant: "text", | |
| 3124 | - color: "secondary", | |
| 3125 | - onClick: onClose | |
| 3126 | - }, i18n$1[currentState].cancelButton), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { | |
| 3127 | - disabled: !checked, | |
| 3128 | - variant: "contained", | |
| 3129 | - onClick: handleSubmit | |
| 3130 | - }, i18n$1[currentState].activateButton))); | |
| 3131 | - }; | |
| 3132 | - Terms.propTypes = { | |
| 3133 | - onClose: import_prop_types.default.func, | |
| 3134 | - onSubmit: import_prop_types.default.func, | |
| 3135 | - isEnrolled: import_prop_types.default.bool | |
| 3136 | - }; | |
| 2899 | +module.exports = shouldUseNative() ? Object.assign : function (target, source) { | |
| 2900 | + var from; | |
| 2901 | + var to = toObject(target); | |
| 2902 | + var symbols; | |
| 3137 | 2903 | |
| 3138 | -//#endregion | |
| 3139 | -//#region modules/atomic-opt-in/assets/js/opt-in-page/opt-in.js | |
| 3140 | - var _elementorSettingsEdi; | |
| 3141 | - function ownKeys(e, r) { | |
| 3142 | - var t = Object.keys(e); | |
| 3143 | - if (Object.getOwnPropertySymbols) { | |
| 3144 | - var o = Object.getOwnPropertySymbols(e); | |
| 3145 | - r && (o = o.filter(function(r) { | |
| 3146 | - return Object.getOwnPropertyDescriptor(e, r).enumerable; | |
| 3147 | - })), t.push.apply(t, o); | |
| 3148 | - } | |
| 3149 | - return t; | |
| 3150 | - } | |
| 3151 | - function _objectSpread(e) { | |
| 3152 | - for (var r = 1; r < arguments.length; r++) { | |
| 3153 | - var t = null != arguments[r] ? arguments[r] : {}; | |
| 3154 | - r % 2 ? ownKeys(Object(t), !0).forEach(function(r) { | |
| 3155 | - _defineProperty(e, r, t[r]); | |
| 3156 | - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) { | |
| 3157 | - Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); | |
| 3158 | - }); | |
| 3159 | - } | |
| 3160 | - return e; | |
| 3161 | - } | |
| 3162 | - var decodeHtmlUrl = function decodeHtmlUrl(html) { | |
| 3163 | - var textarea = document.createElement("textarea"); | |
| 3164 | - textarea.innerHTML = html; | |
| 3165 | - return textarea.value; | |
| 3166 | - }; | |
| 3167 | - var OPT_IN_MSG = "e-editor-v4-opt-in-message"; | |
| 3168 | - var OPT_OUT_MSG = "e-editor-v4-opt-out-message"; | |
| 3169 | - var i18n = { | |
| 3170 | - title: (0, _wordpress_i18n.__)("Activate Atomic Editor features", "elementor"), | |
| 3171 | - welcomeText: (0, _wordpress_i18n.__)("The Atomic Editor presents a new generation of high-performance, flexible building blocks designed for less bloat and precise styling with a unified interface.", "elementor"), | |
| 3172 | - advantages: [ | |
| 3173 | - [(0, _wordpress_i18n.__)("Combine legacy widgets & new elements", "elementor"), (0, _wordpress_i18n.__)("Your current and new workflows work together on the same page.", "elementor")], | |
| 3174 | - [(0, _wordpress_i18n.__)("Build reusable design systems", "elementor"), (0, _wordpress_i18n.__)("Classes, Variables and Components give you a clear path for scale.", "elementor")], | |
| 3175 | - [(0, _wordpress_i18n.__)("Consistent styling experience", "elementor"), (0, _wordpress_i18n.__)("A unified Style tab for all Atomic Elements with full control over responsive design.", "elementor")], | |
| 3176 | - [(0, _wordpress_i18n.__)("Unparalleled performance", "elementor"), (0, _wordpress_i18n.__)("Cleaner code and a lighter CSS footprint with single-div wrappers.", "elementor")] | |
| 3177 | - ], | |
| 3178 | - andMore: (0, _wordpress_i18n.__)("And much more!", "elementor"), | |
| 3179 | - readMore: (0, _wordpress_i18n.__)("Learn more", "elementor"), | |
| 3180 | - feedback: (0, _wordpress_i18n.__)("We’d love your feedback!", "elementor"), | |
| 3181 | - overToGithub: (0, _wordpress_i18n.__)("Head over to Github", "elementor"), | |
| 3182 | - tellUsWhy: (0, _wordpress_i18n.__)("Tell us why", "elementor"), | |
| 3183 | - image: (0, _wordpress_i18n.__)("Editor V4", "elementor"), | |
| 3184 | - buttons: { | |
| 3185 | - tryOut: (0, _wordpress_i18n.__)("Try out the new experience", "elementor"), | |
| 3186 | - optIn: (0, _wordpress_i18n.__)("Activate the new experience", "elementor"), | |
| 3187 | - optOut: (0, _wordpress_i18n.__)("Deactivate", "elementor") | |
| 3188 | - }, | |
| 3189 | - messages: { | |
| 3190 | - optInSuccess: (0, _wordpress_i18n.__)("Welcome! You’ve got the newest version of the editor.", "elementor"), | |
| 3191 | - optOut: (0, _wordpress_i18n.__)("You’ve deactivated the new Editor. Have feedback?", "elementor"), | |
| 3192 | - error: (0, _wordpress_i18n.__)("Ouch, there was a glitch. Try activating again soon.", "elementor") | |
| 3193 | - } | |
| 3194 | - }; | |
| 3195 | - var optInLinks = { | |
| 3196 | - feedbackUrl: "https://go.elementor.com/wp-dash-opt-in-v4-feedback/", | |
| 3197 | - readMoreUrl: "https://go.elementor.com/wp-dash-opt-in-v4-help-center/", | |
| 3198 | - tryOutUrl: purify.sanitize(decodeHtmlUrl((_elementorSettingsEdi = elementorSettingsEditor4OptIn) === null || _elementorSettingsEdi === void 0 || (_elementorSettingsEdi = _elementorSettingsEdi.urls) === null || _elementorSettingsEdi === void 0 ? void 0 : _elementorSettingsEdi.start_building)) || "#" | |
| 3199 | - }; | |
| 3200 | - var optInImages = { | |
| 3201 | - square: { | |
| 3202 | - src: "https://assets.elementor.com/v4-promotion/v1/images/v4_opt_in_500.png", | |
| 3203 | - sx: { | |
| 3204 | - width: "100%", | |
| 3205 | - maxHeight: "507px", | |
| 3206 | - maxWidth: "sm", | |
| 3207 | - height: "auto", | |
| 3208 | - mx: "auto", | |
| 3209 | - borderRadius: 2 | |
| 2904 | + for (var s = 1; s < arguments.length; s++) { | |
| 2905 | + from = Object(arguments[s]); | |
| 2906 | + | |
| 2907 | + for (var key in from) { | |
| 2908 | + if (hasOwnProperty.call(from, key)) { | |
| 2909 | + to[key] = from[key]; | |
| 3210 | 2910 | } |
| 3211 | - }, | |
| 3212 | - landscape: { | |
| 3213 | - src: "https://assets.elementor.com/v4-promotion/v1/images/v4_opt_in_260.png", | |
| 3214 | - sx: { | |
| 3215 | - width: "100%", | |
| 3216 | - height: "auto", | |
| 3217 | - maxHeight: "260px", | |
| 3218 | - mx: "auto", | |
| 3219 | - maxWidth: "sm", | |
| 3220 | - borderRadius: 2 | |
| 3221 | - } | |
| 3222 | 2911 | } |
| 3223 | - }; | |
| 3224 | - var OptIn = function OptIn(_ref) { | |
| 3225 | - var _state$features; | |
| 3226 | - var state = _ref.state; | |
| 3227 | - var _useState2 = _slicedToArray((0, react.useState)(false), 2); | |
| 3228 | - var showTerms = _useState2[0]; | |
| 3229 | - var setShowTerms = _useState2[1]; | |
| 3230 | - var _useState4 = _slicedToArray((0, react.useState)(""), 2); | |
| 3231 | - var optInMessage = _useState4[0]; | |
| 3232 | - var setOptInMessage = _useState4[1]; | |
| 3233 | - var _useState6 = _slicedToArray((0, react.useState)(""), 2); | |
| 3234 | - var optOutMessage = _useState6[0]; | |
| 3235 | - var setOptOutMessage = _useState6[1]; | |
| 3236 | - var _useState8 = _slicedToArray((0, react.useState)(""), 2); | |
| 3237 | - var errorMessage = _useState8[0]; | |
| 3238 | - var setErrorMessage = _useState8[1]; | |
| 3239 | - (0, react.useEffect)(function() { | |
| 3240 | - var optInMsg = sessionStorage.getItem(OPT_IN_MSG); | |
| 3241 | - var optOutMsg = sessionStorage.getItem(OPT_OUT_MSG); | |
| 3242 | - if (optInMsg) { | |
| 3243 | - setTimeout(function() { | |
| 3244 | - setOptInMessage(optInMsg); | |
| 3245 | - }, 100); | |
| 3246 | - sessionStorage.removeItem(OPT_IN_MSG); | |
| 3247 | - } | |
| 3248 | - if (optOutMsg) { | |
| 3249 | - setTimeout(function() { | |
| 3250 | - setOptOutMessage(optOutMsg); | |
| 3251 | - }, 100); | |
| 3252 | - sessionStorage.removeItem(OPT_OUT_MSG); | |
| 3253 | - } | |
| 3254 | - }, []); | |
| 3255 | - var maybeOptIn = function maybeOptIn() { | |
| 3256 | - triggerOptIn().then(function() { | |
| 3257 | - sessionStorage.setItem(OPT_IN_MSG, i18n.messages.optInSuccess); | |
| 3258 | - window.location.reload(); | |
| 3259 | - }).catch(function() { | |
| 3260 | - setErrorMessage(i18n.messages.error); | |
| 3261 | - }); | |
| 3262 | - }; | |
| 3263 | - var maybeOptOut = function maybeOptOut() { | |
| 3264 | - triggerOptOut().then(function() { | |
| 3265 | - sessionStorage.setItem(OPT_OUT_MSG, i18n.messages.optOut); | |
| 3266 | - window.location.reload(); | |
| 3267 | - }).catch(function() { | |
| 3268 | - setErrorMessage(i18n.messages.error); | |
| 3269 | - }); | |
| 3270 | - }; | |
| 3271 | - var handlePopoverClose = function handlePopoverClose() { | |
| 3272 | - setShowTerms(false); | |
| 3273 | - }; | |
| 3274 | - var isEnrolled = !!(state !== null && state !== void 0 && (_state$features = state.features) !== null && _state$features !== void 0 && _state$features.editor_v4); | |
| 3275 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.Container, { | |
| 3276 | - maxWidth: "xl", | |
| 3277 | - sx: { | |
| 3278 | - marginBlockStart: 2.5, | |
| 3279 | - display: "flex", | |
| 3280 | - flexBasis: "100%", | |
| 3281 | - gap: 3, | |
| 3282 | - flexDirection: { | |
| 3283 | - xs: "column-reverse", | |
| 3284 | - md: "row" | |
| 2912 | + | |
| 2913 | + if (getOwnPropertySymbols) { | |
| 2914 | + symbols = getOwnPropertySymbols(from); | |
| 2915 | + for (var i = 0; i < symbols.length; i++) { | |
| 2916 | + if (propIsEnumerable.call(from, symbols[i])) { | |
| 2917 | + to[symbols[i]] = from[symbols[i]]; | |
| 3285 | 2918 | } |
| 3286 | 2919 | } |
| 3287 | - }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { sx: { | |
| 3288 | - flex: 1, | |
| 3289 | - maxWidth: { | |
| 3290 | - md: "580px", | |
| 3291 | - sm: "600px" | |
| 3292 | - }, | |
| 3293 | - gap: 2.5, | |
| 3294 | - mx: "auto" | |
| 3295 | - } }, /*#__PURE__*/ react.default.createElement(TextNode, { | |
| 3296 | - variant: "h4", | |
| 3297 | - width: "fit-content" | |
| 3298 | - }, /*#__PURE__*/ react.default.createElement("span", null, i18n.title)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { | |
| 3299 | - direction: "column", | |
| 3300 | - gap: 1 | |
| 3301 | - }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, null, /*#__PURE__*/ react.default.createElement(TextNode, null, i18n.welcomeText)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, null, /*#__PURE__*/ react.default.createElement(AdvantagesList, { sx: { gap: .5 } }, i18n.advantages.map(function(entry, i) { | |
| 3302 | - return /*#__PURE__*/ react.default.createElement(AdvantagesListItem, { key: i }, /*#__PURE__*/ react.default.createElement("b", null, entry[0]), " - ", entry[1]); | |
| 3303 | - }), /*#__PURE__*/ react.default.createElement(AdvantagesListItem, { key: i18n.advantages.length }, i18n.andMore, " ", /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { | |
| 3304 | - color: "text.primary", | |
| 3305 | - href: optInLinks.readMoreUrl, | |
| 3306 | - target: "_blank" | |
| 3307 | - }, i18n.readMore))))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { | |
| 3308 | - direction: "column", | |
| 3309 | - width: "clamp(240px, max(340px, 75%), 340px)", | |
| 3310 | - maxWidth: "100%", | |
| 3311 | - gap: 2 | |
| 3312 | - }, !isEnrolled ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { | |
| 3313 | - onClick: function onClick() { | |
| 3314 | - setShowTerms(true); | |
| 3315 | - }, | |
| 3316 | - size: "large", | |
| 3317 | - color: "primary", | |
| 3318 | - variant: "contained", | |
| 3319 | - sx: { flexGrow: 1 } | |
| 3320 | - }, i18n.buttons.optIn) : /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { | |
| 3321 | - onClick: function onClick() { | |
| 3322 | - return window.location.href = optInLinks.tryOutUrl; | |
| 3323 | - }, | |
| 3324 | - size: "large", | |
| 3325 | - color: "primary", | |
| 3326 | - variant: "contained", | |
| 3327 | - sx: { flexGrow: 1 } | |
| 3328 | - }, i18n.buttons.tryOut), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { | |
| 3329 | - onClick: function onClick() { | |
| 3330 | - setShowTerms(true); | |
| 3331 | - }, | |
| 3332 | - size: "large", | |
| 3333 | - color: "secondary", | |
| 3334 | - variant: "outlined", | |
| 3335 | - sx: { | |
| 3336 | - flexGrow: 1, | |
| 3337 | - visibility: isEnrolled ? "visible" : "hidden" | |
| 3338 | - } | |
| 3339 | - }, i18n.buttons.optOut)), /*#__PURE__*/ react.default.createElement(TextNode, null, i18n.feedback, " ", /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { | |
| 3340 | - underline: "hover", | |
| 3341 | - href: optInLinks.feedbackUrl, | |
| 3342 | - target: "_blank" | |
| 3343 | - }, i18n.overToGithub))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { sx: { | |
| 3344 | - flex: 1, | |
| 3345 | - px: 0, | |
| 3346 | - maxWidth: { | |
| 3347 | - md: "507px", | |
| 3348 | - sm: "600px" | |
| 3349 | - }, | |
| 3350 | - mx: "auto" | |
| 3351 | - } }, optInImages.square.src ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Image, { | |
| 3352 | - src: optInImages.square.src, | |
| 3353 | - alt: i18n.image, | |
| 3354 | - sx: _objectSpread(_objectSpread({}, optInImages.square.sx), {}, { display: { | |
| 3355 | - xs: "none", | |
| 3356 | - md: "block" | |
| 3357 | - } }) | |
| 3358 | - }) : /*#__PURE__*/ react.default.createElement(ImageSquarePlaceholder, { sx: _objectSpread(_objectSpread({}, optInImages.square.sx), {}, { display: { | |
| 3359 | - xs: "none", | |
| 3360 | - md: "block" | |
| 3361 | - } }) }), optInImages.landscape.src ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Image, { | |
| 3362 | - src: optInImages.landscape.src, | |
| 3363 | - alt: i18n.image, | |
| 3364 | - sx: _objectSpread(_objectSpread({}, optInImages.landscape.sx), {}, { display: { | |
| 3365 | - xs: "block", | |
| 3366 | - md: "none" | |
| 3367 | - } }) | |
| 3368 | - }) : /*#__PURE__*/ react.default.createElement(ImageLandscapePlaceholder, { sx: _objectSpread(_objectSpread({}, optInImages.landscape.sx), {}, { display: { | |
| 3369 | - xs: "block", | |
| 3370 | - md: "none" | |
| 3371 | - } }) })), showTerms && /*#__PURE__*/ react.default.createElement(Terms, { | |
| 3372 | - onClose: handlePopoverClose, | |
| 3373 | - onSubmit: isEnrolled ? maybeOptOut : maybeOptIn, | |
| 3374 | - isEnrolled | |
| 3375 | - }), optInMessage && /*#__PURE__*/ react.default.createElement(Message, { | |
| 3376 | - onClose: function onClose() { | |
| 3377 | - return setOptInMessage(""); | |
| 3378 | - }, | |
| 3379 | - action: /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { | |
| 3380 | - href: optInLinks.tryOutUrl, | |
| 3381 | - color: "#FFFFFF", | |
| 3382 | - sx: { | |
| 3383 | - cursor: "pointer", | |
| 3384 | - textDecoration: "none", | |
| 3385 | - pl: 3 | |
| 3386 | - } | |
| 3387 | - }, i18n.buttons.tryOut) | |
| 3388 | - }, optInMessage), optOutMessage && /*#__PURE__*/ react.default.createElement(Message, { | |
| 3389 | - onClose: function onClose() { | |
| 3390 | - return setOptOutMessage(""); | |
| 3391 | - }, | |
| 3392 | - action: /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { | |
| 3393 | - href: optInLinks.feedbackUrl, | |
| 3394 | - target: "_blank", | |
| 3395 | - color: "#FFFFFF", | |
| 3396 | - sx: { | |
| 3397 | - cursor: "pointer", | |
| 3398 | - textDecoration: "none", | |
| 3399 | - pl: 3 | |
| 3400 | - } | |
| 3401 | - }, i18n.tellUsWhy) | |
| 3402 | - }, optOutMessage), errorMessage && /*#__PURE__*/ react.default.createElement(Message, { | |
| 3403 | - severity: "error", | |
| 3404 | - onClose: function onClose() { | |
| 3405 | - return setErrorMessage(""); | |
| 3406 | - } | |
| 3407 | - }, errorMessage)); | |
| 3408 | - }; | |
| 3409 | - OptIn.propTypes = { state: import_prop_types.default.shape({ features: import_prop_types.default.shape({ editor_v4: import_prop_types.default.bool }) }).isRequired }; | |
| 2920 | + } | |
| 2921 | + } | |
| 3410 | 2922 | |
| 3411 | -//#endregion | |
| 3412 | -//#region modules/atomic-opt-in/assets/js/opt-in-page/app.js | |
| 3413 | - var App = function App(props) { | |
| 3414 | - return /*#__PURE__*/ react.default.createElement(_elementor_ui.DirectionProvider, { rtl: props.isRTL }, /*#__PURE__*/ react.default.createElement(_elementor_ui.LocalizationProvider, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.ThemeProvider, { colorScheme: "light" }, /*#__PURE__*/ react.default.createElement(OptIn, { state: props === null || props === void 0 ? void 0 : props.state })))); | |
| 3415 | - }; | |
| 3416 | - App.propTypes = { | |
| 3417 | - isRTL: import_prop_types.default.bool, | |
| 3418 | - state: import_prop_types.default.object | |
| 3419 | - }; | |
| 3420 | - (function init() { | |
| 3421 | - var rootElement = document.querySelector("#page-editor-v4-opt-in"); | |
| 3422 | - if (!rootElement) return; | |
| 3423 | - react_default.render(/*#__PURE__*/ react.default.createElement(App, { | |
| 3424 | - isRTL: !!elementorCommon.config.isRTL, | |
| 3425 | - state: elementorSettingsEditor4OptIn | |
| 3426 | - }), rootElement); | |
| 3427 | - })(); | |
| 2923 | + return to; | |
| 2924 | +}; | |
| 3428 | 2925 | |
| 3429 | -//#endregion | |
| 3430 | -})(React, ReactDOM, elementorV2.ui, wp.i18n, elementorV2.icons, elementorV2.ui['DialogHeaderGroup'], elementorV2.ui['DialogHeader']); | |
| 2926 | + | |
| 2927 | +/***/ }), | |
| 2928 | + | |
| 2929 | +/***/ "../node_modules/prop-types/checkPropTypes.js": | |
| 2930 | +/*!****************************************************!*\ | |
| 2931 | + !*** ../node_modules/prop-types/checkPropTypes.js ***! | |
| 2932 | + \****************************************************/ | |
| 2933 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 2934 | + | |
| 2935 | +"use strict"; | |
| 2936 | +/** | |
| 2937 | + * Copyright (c) 2013-present, Facebook, Inc. | |
| 2938 | + * | |
| 2939 | + * This source code is licensed under the MIT license found in the | |
| 2940 | + * LICENSE file in the root directory of this source tree. | |
| 2941 | + */ | |
| 2942 | + | |
| 2943 | + | |
| 2944 | + | |
| 2945 | +var printWarning = function() {}; | |
| 2946 | + | |
| 2947 | +if (true) { | |
| 2948 | + var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); | |
| 2949 | + var loggedTypeFailures = {}; | |
| 2950 | + var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); | |
| 2951 | + | |
| 2952 | + printWarning = function(text) { | |
| 2953 | + var message = 'Warning: ' + text; | |
| 2954 | + if (typeof console !== 'undefined') { | |
| 2955 | + console.error(message); | |
| 2956 | + } | |
| 2957 | + try { | |
| 2958 | + // --- Welcome to debugging React --- | |
| 2959 | + // This error was thrown as a convenience so that you can use this stack | |
| 2960 | + // to find the callsite that caused this warning to fire. | |
| 2961 | + throw new Error(message); | |
| 2962 | + } catch (x) { /**/ } | |
| 2963 | + }; | |
| 2964 | +} | |
| 2965 | + | |
| 2966 | +/** | |
| 2967 | + * Assert that the values match with the type specs. | |
| 2968 | + * Error messages are memorized and will only be shown once. | |
| 2969 | + * | |
| 2970 | + * @param {object} typeSpecs Map of name to a ReactPropType | |
| 2971 | + * @param {object} values Runtime values that need to be type-checked | |
| 2972 | + * @param {string} location e.g. "prop", "context", "child context" | |
| 2973 | + * @param {string} componentName Name of the component for error messages. | |
| 2974 | + * @param {?Function} getStack Returns the component stack. | |
| 2975 | + * @private | |
| 2976 | + */ | |
| 2977 | +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { | |
| 2978 | + if (true) { | |
| 2979 | + for (var typeSpecName in typeSpecs) { | |
| 2980 | + if (has(typeSpecs, typeSpecName)) { | |
| 2981 | + var error; | |
| 2982 | + // Prop type validation may throw. In case they do, we don't want to | |
| 2983 | + // fail the render phase where it didn't fail before. So we log it. | |
| 2984 | + // After these have been cleaned up, we'll let them throw. | |
| 2985 | + try { | |
| 2986 | + // This is intentionally an invariant that gets caught. It's the same | |
| 2987 | + // behavior as without this statement except with a better message. | |
| 2988 | + if (typeof typeSpecs[typeSpecName] !== 'function') { | |
| 2989 | + var err = Error( | |
| 2990 | + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + | |
| 2991 | + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + | |
| 2992 | + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.' | |
| 2993 | + ); | |
| 2994 | + err.name = 'Invariant Violation'; | |
| 2995 | + throw err; | |
| 2996 | + } | |
| 2997 | + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); | |
| 2998 | + } catch (ex) { | |
| 2999 | + error = ex; | |
| 3000 | + } | |
| 3001 | + if (error && !(error instanceof Error)) { | |
| 3002 | + printWarning( | |
| 3003 | + (componentName || 'React class') + ': type specification of ' + | |
| 3004 | + location + ' `' + typeSpecName + '` is invalid; the type checker ' + | |
| 3005 | + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + | |
| 3006 | + 'You may have forgotten to pass an argument to the type checker ' + | |
| 3007 | + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + | |
| 3008 | + 'shape all require an argument).' | |
| 3009 | + ); | |
| 3010 | + } | |
| 3011 | + if (error instanceof Error && !(error.message in loggedTypeFailures)) { | |
| 3012 | + // Only monitor this failure once because there tends to be a lot of the | |
| 3013 | + // same error. | |
| 3014 | + loggedTypeFailures[error.message] = true; | |
| 3015 | + | |
| 3016 | + var stack = getStack ? getStack() : ''; | |
| 3017 | + | |
| 3018 | + printWarning( | |
| 3019 | + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') | |
| 3020 | + ); | |
| 3021 | + } | |
| 3022 | + } | |
| 3023 | + } | |
| 3024 | + } | |
| 3025 | +} | |
| 3026 | + | |
| 3027 | +/** | |
| 3028 | + * Resets warning cache when testing. | |
| 3029 | + * | |
| 3030 | + * @private | |
| 3031 | + */ | |
| 3032 | +checkPropTypes.resetWarningCache = function() { | |
| 3033 | + if (true) { | |
| 3034 | + loggedTypeFailures = {}; | |
| 3035 | + } | |
| 3036 | +} | |
| 3037 | + | |
| 3038 | +module.exports = checkPropTypes; | |
| 3039 | + | |
| 3040 | + | |
| 3041 | +/***/ }), | |
| 3042 | + | |
| 3043 | +/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js": | |
| 3044 | +/*!*************************************************************!*\ | |
| 3045 | + !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***! | |
| 3046 | + \*************************************************************/ | |
| 3047 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 3048 | + | |
| 3049 | +"use strict"; | |
| 3050 | +/** | |
| 3051 | + * Copyright (c) 2013-present, Facebook, Inc. | |
| 3052 | + * | |
| 3053 | + * This source code is licensed under the MIT license found in the | |
| 3054 | + * LICENSE file in the root directory of this source tree. | |
| 3055 | + */ | |
| 3056 | + | |
| 3057 | + | |
| 3058 | + | |
| 3059 | +var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); | |
| 3060 | +var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js"); | |
| 3061 | + | |
| 3062 | +var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); | |
| 3063 | +var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); | |
| 3064 | +var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js"); | |
| 3065 | + | |
| 3066 | +var printWarning = function() {}; | |
| 3067 | + | |
| 3068 | +if (true) { | |
| 3069 | + printWarning = function(text) { | |
| 3070 | + var message = 'Warning: ' + text; | |
| 3071 | + if (typeof console !== 'undefined') { | |
| 3072 | + console.error(message); | |
| 3073 | + } | |
| 3074 | + try { | |
| 3075 | + // --- Welcome to debugging React --- | |
| 3076 | + // This error was thrown as a convenience so that you can use this stack | |
| 3077 | + // to find the callsite that caused this warning to fire. | |
| 3078 | + throw new Error(message); | |
| 3079 | + } catch (x) {} | |
| 3080 | + }; | |
| 3081 | +} | |
| 3082 | + | |
| 3083 | +function emptyFunctionThatReturnsNull() { | |
| 3084 | + return null; | |
| 3085 | +} | |
| 3086 | + | |
| 3087 | +module.exports = function(isValidElement, throwOnDirectAccess) { | |
| 3088 | + /* global Symbol */ | |
| 3089 | + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; | |
| 3090 | + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. | |
| 3091 | + | |
| 3092 | + /** | |
| 3093 | + * Returns the iterator method function contained on the iterable object. | |
| 3094 | + * | |
| 3095 | + * Be sure to invoke the function with the iterable as context: | |
| 3096 | + * | |
| 3097 | + * var iteratorFn = getIteratorFn(myIterable); | |
| 3098 | + * if (iteratorFn) { | |
| 3099 | + * var iterator = iteratorFn.call(myIterable); | |
| 3100 | + * ... | |
| 3101 | + * } | |
| 3102 | + * | |
| 3103 | + * @param {?object} maybeIterable | |
| 3104 | + * @return {?function} | |
| 3105 | + */ | |
| 3106 | + function getIteratorFn(maybeIterable) { | |
| 3107 | + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); | |
| 3108 | + if (typeof iteratorFn === 'function') { | |
| 3109 | + return iteratorFn; | |
| 3110 | + } | |
| 3111 | + } | |
| 3112 | + | |
| 3113 | + /** | |
| 3114 | + * Collection of methods that allow declaration and validation of props that are | |
| 3115 | + * supplied to React components. Example usage: | |
| 3116 | + * | |
| 3117 | + * var Props = require('ReactPropTypes'); | |
| 3118 | + * var MyArticle = React.createClass({ | |
| 3119 | + * propTypes: { | |
| 3120 | + * // An optional string prop named "description". | |
| 3121 | + * description: Props.string, | |
| 3122 | + * | |
| 3123 | + * // A required enum prop named "category". | |
| 3124 | + * category: Props.oneOf(['News','Photos']).isRequired, | |
| 3125 | + * | |
| 3126 | + * // A prop named "dialog" that requires an instance of Dialog. | |
| 3127 | + * dialog: Props.instanceOf(Dialog).isRequired | |
| 3128 | + * }, | |
| 3129 | + * render: function() { ... } | |
| 3130 | + * }); | |
| 3131 | + * | |
| 3132 | + * A more formal specification of how these methods are used: | |
| 3133 | + * | |
| 3134 | + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) | |
| 3135 | + * decl := ReactPropTypes.{type}(.isRequired)? | |
| 3136 | + * | |
| 3137 | + * Each and every declaration produces a function with the same signature. This | |
| 3138 | + * allows the creation of custom validation functions. For example: | |
| 3139 | + * | |
| 3140 | + * var MyLink = React.createClass({ | |
| 3141 | + * propTypes: { | |
| 3142 | + * // An optional string or URI prop named "href". | |
| 3143 | + * href: function(props, propName, componentName) { | |
| 3144 | + * var propValue = props[propName]; | |
| 3145 | + * if (propValue != null && typeof propValue !== 'string' && | |
| 3146 | + * !(propValue instanceof URI)) { | |
| 3147 | + * return new Error( | |
| 3148 | + * 'Expected a string or an URI for ' + propName + ' in ' + | |
| 3149 | + * componentName | |
| 3150 | + * ); | |
| 3151 | + * } | |
| 3152 | + * } | |
| 3153 | + * }, | |
| 3154 | + * render: function() {...} | |
| 3155 | + * }); | |
| 3156 | + * | |
| 3157 | + * @internal | |
| 3158 | + */ | |
| 3159 | + | |
| 3160 | + var ANONYMOUS = '<<anonymous>>'; | |
| 3161 | + | |
| 3162 | + // Important! | |
| 3163 | + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. | |
| 3164 | + var ReactPropTypes = { | |
| 3165 | + array: createPrimitiveTypeChecker('array'), | |
| 3166 | + bigint: createPrimitiveTypeChecker('bigint'), | |
| 3167 | + bool: createPrimitiveTypeChecker('boolean'), | |
| 3168 | + func: createPrimitiveTypeChecker('function'), | |
| 3169 | + number: createPrimitiveTypeChecker('number'), | |
| 3170 | + object: createPrimitiveTypeChecker('object'), | |
| 3171 | + string: createPrimitiveTypeChecker('string'), | |
| 3172 | + symbol: createPrimitiveTypeChecker('symbol'), | |
| 3173 | + | |
| 3174 | + any: createAnyTypeChecker(), | |
| 3175 | + arrayOf: createArrayOfTypeChecker, | |
| 3176 | + element: createElementTypeChecker(), | |
| 3177 | + elementType: createElementTypeTypeChecker(), | |
| 3178 | + instanceOf: createInstanceTypeChecker, | |
| 3179 | + node: createNodeChecker(), | |
| 3180 | + objectOf: createObjectOfTypeChecker, | |
| 3181 | + oneOf: createEnumTypeChecker, | |
| 3182 | + oneOfType: createUnionTypeChecker, | |
| 3183 | + shape: createShapeTypeChecker, | |
| 3184 | + exact: createStrictShapeTypeChecker, | |
| 3185 | + }; | |
| 3186 | + | |
| 3187 | + /** | |
| 3188 | + * inlined Object.is polyfill to avoid requiring consumers ship their own | |
| 3189 | + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is | |
| 3190 | + */ | |
| 3191 | + /*eslint-disable no-self-compare*/ | |
| 3192 | + function is(x, y) { | |
| 3193 | + // SameValue algorithm | |
| 3194 | + if (x === y) { | |
| 3195 | + // Steps 1-5, 7-10 | |
| 3196 | + // Steps 6.b-6.e: +0 != -0 | |
| 3197 | + return x !== 0 || 1 / x === 1 / y; | |
| 3198 | + } else { | |
| 3199 | + // Step 6.a: NaN == NaN | |
| 3200 | + return x !== x && y !== y; | |
| 3201 | + } | |
| 3202 | + } | |
| 3203 | + /*eslint-enable no-self-compare*/ | |
| 3204 | + | |
| 3205 | + /** | |
| 3206 | + * We use an Error-like object for backward compatibility as people may call | |
| 3207 | + * PropTypes directly and inspect their output. However, we don't use real | |
| 3208 | + * Errors anymore. We don't inspect their stack anyway, and creating them | |
| 3209 | + * is prohibitively expensive if they are created too often, such as what | |
| 3210 | + * happens in oneOfType() for any type before the one that matched. | |
| 3211 | + */ | |
| 3212 | + function PropTypeError(message, data) { | |
| 3213 | + this.message = message; | |
| 3214 | + this.data = data && typeof data === 'object' ? data: {}; | |
| 3215 | + this.stack = ''; | |
| 3216 | + } | |
| 3217 | + // Make `instanceof Error` still work for returned errors. | |
| 3218 | + PropTypeError.prototype = Error.prototype; | |
| 3219 | + | |
| 3220 | + function createChainableTypeChecker(validate) { | |
| 3221 | + if (true) { | |
| 3222 | + var manualPropTypeCallCache = {}; | |
| 3223 | + var manualPropTypeWarningCount = 0; | |
| 3224 | + } | |
| 3225 | + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { | |
| 3226 | + componentName = componentName || ANONYMOUS; | |
| 3227 | + propFullName = propFullName || propName; | |
| 3228 | + | |
| 3229 | + if (secret !== ReactPropTypesSecret) { | |
| 3230 | + if (throwOnDirectAccess) { | |
| 3231 | + // New behavior only for users of `prop-types` package | |
| 3232 | + var err = new Error( | |
| 3233 | + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + | |
| 3234 | + 'Use `PropTypes.checkPropTypes()` to call them. ' + | |
| 3235 | + 'Read more at http://fb.me/use-check-prop-types' | |
| 3236 | + ); | |
| 3237 | + err.name = 'Invariant Violation'; | |
| 3238 | + throw err; | |
| 3239 | + } else if ( true && typeof console !== 'undefined') { | |
| 3240 | + // Old behavior for people using React.PropTypes | |
| 3241 | + var cacheKey = componentName + ':' + propName; | |
| 3242 | + if ( | |
| 3243 | + !manualPropTypeCallCache[cacheKey] && | |
| 3244 | + // Avoid spamming the console because they are often not actionable except for lib authors | |
| 3245 | + manualPropTypeWarningCount < 3 | |
| 3246 | + ) { | |
| 3247 | + printWarning( | |
| 3248 | + 'You are manually calling a React.PropTypes validation ' + | |
| 3249 | + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + | |
| 3250 | + 'and will throw in the standalone `prop-types` package. ' + | |
| 3251 | + 'You may be seeing this warning due to a third-party PropTypes ' + | |
| 3252 | + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' | |
| 3253 | + ); | |
| 3254 | + manualPropTypeCallCache[cacheKey] = true; | |
| 3255 | + manualPropTypeWarningCount++; | |
| 3256 | + } | |
| 3257 | + } | |
| 3258 | + } | |
| 3259 | + if (props[propName] == null) { | |
| 3260 | + if (isRequired) { | |
| 3261 | + if (props[propName] === null) { | |
| 3262 | + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); | |
| 3263 | + } | |
| 3264 | + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); | |
| 3265 | + } | |
| 3266 | + return null; | |
| 3267 | + } else { | |
| 3268 | + return validate(props, propName, componentName, location, propFullName); | |
| 3269 | + } | |
| 3270 | + } | |
| 3271 | + | |
| 3272 | + var chainedCheckType = checkType.bind(null, false); | |
| 3273 | + chainedCheckType.isRequired = checkType.bind(null, true); | |
| 3274 | + | |
| 3275 | + return chainedCheckType; | |
| 3276 | + } | |
| 3277 | + | |
| 3278 | + function createPrimitiveTypeChecker(expectedType) { | |
| 3279 | + function validate(props, propName, componentName, location, propFullName, secret) { | |
| 3280 | + var propValue = props[propName]; | |
| 3281 | + var propType = getPropType(propValue); | |
| 3282 | + if (propType !== expectedType) { | |
| 3283 | + // `propValue` being instance of, say, date/regexp, pass the 'object' | |
| 3284 | + // check, but we can offer a more precise error message here rather than | |
| 3285 | + // 'of type `object`'. | |
| 3286 | + var preciseType = getPreciseType(propValue); | |
| 3287 | + | |
| 3288 | + return new PropTypeError( | |
| 3289 | + 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), | |
| 3290 | + {expectedType: expectedType} | |
| 3291 | + ); | |
| 3292 | + } | |
| 3293 | + return null; | |
| 3294 | + } | |
| 3295 | + return createChainableTypeChecker(validate); | |
| 3296 | + } | |
| 3297 | + | |
| 3298 | + function createAnyTypeChecker() { | |
| 3299 | + return createChainableTypeChecker(emptyFunctionThatReturnsNull); | |
| 3300 | + } | |
| 3301 | + | |
| 3302 | + function createArrayOfTypeChecker(typeChecker) { | |
| 3303 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3304 | + if (typeof typeChecker !== 'function') { | |
| 3305 | + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); | |
| 3306 | + } | |
| 3307 | + var propValue = props[propName]; | |
| 3308 | + if (!Array.isArray(propValue)) { | |
| 3309 | + var propType = getPropType(propValue); | |
| 3310 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); | |
| 3311 | + } | |
| 3312 | + for (var i = 0; i < propValue.length; i++) { | |
| 3313 | + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); | |
| 3314 | + if (error instanceof Error) { | |
| 3315 | + return error; | |
| 3316 | + } | |
| 3317 | + } | |
| 3318 | + return null; | |
| 3319 | + } | |
| 3320 | + return createChainableTypeChecker(validate); | |
| 3321 | + } | |
| 3322 | + | |
| 3323 | + function createElementTypeChecker() { | |
| 3324 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3325 | + var propValue = props[propName]; | |
| 3326 | + if (!isValidElement(propValue)) { | |
| 3327 | + var propType = getPropType(propValue); | |
| 3328 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); | |
| 3329 | + } | |
| 3330 | + return null; | |
| 3331 | + } | |
| 3332 | + return createChainableTypeChecker(validate); | |
| 3333 | + } | |
| 3334 | + | |
| 3335 | + function createElementTypeTypeChecker() { | |
| 3336 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3337 | + var propValue = props[propName]; | |
| 3338 | + if (!ReactIs.isValidElementType(propValue)) { | |
| 3339 | + var propType = getPropType(propValue); | |
| 3340 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); | |
| 3341 | + } | |
| 3342 | + return null; | |
| 3343 | + } | |
| 3344 | + return createChainableTypeChecker(validate); | |
| 3345 | + } | |
| 3346 | + | |
| 3347 | + function createInstanceTypeChecker(expectedClass) { | |
| 3348 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3349 | + if (!(props[propName] instanceof expectedClass)) { | |
| 3350 | + var expectedClassName = expectedClass.name || ANONYMOUS; | |
| 3351 | + var actualClassName = getClassName(props[propName]); | |
| 3352 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); | |
| 3353 | + } | |
| 3354 | + return null; | |
| 3355 | + } | |
| 3356 | + return createChainableTypeChecker(validate); | |
| 3357 | + } | |
| 3358 | + | |
| 3359 | + function createEnumTypeChecker(expectedValues) { | |
| 3360 | + if (!Array.isArray(expectedValues)) { | |
| 3361 | + if (true) { | |
| 3362 | + if (arguments.length > 1) { | |
| 3363 | + printWarning( | |
| 3364 | + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + | |
| 3365 | + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' | |
| 3366 | + ); | |
| 3367 | + } else { | |
| 3368 | + printWarning('Invalid argument supplied to oneOf, expected an array.'); | |
| 3369 | + } | |
| 3370 | + } | |
| 3371 | + return emptyFunctionThatReturnsNull; | |
| 3372 | + } | |
| 3373 | + | |
| 3374 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3375 | + var propValue = props[propName]; | |
| 3376 | + for (var i = 0; i < expectedValues.length; i++) { | |
| 3377 | + if (is(propValue, expectedValues[i])) { | |
| 3378 | + return null; | |
| 3379 | + } | |
| 3380 | + } | |
| 3381 | + | |
| 3382 | + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { | |
| 3383 | + var type = getPreciseType(value); | |
| 3384 | + if (type === 'symbol') { | |
| 3385 | + return String(value); | |
| 3386 | + } | |
| 3387 | + return value; | |
| 3388 | + }); | |
| 3389 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); | |
| 3390 | + } | |
| 3391 | + return createChainableTypeChecker(validate); | |
| 3392 | + } | |
| 3393 | + | |
| 3394 | + function createObjectOfTypeChecker(typeChecker) { | |
| 3395 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3396 | + if (typeof typeChecker !== 'function') { | |
| 3397 | + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); | |
| 3398 | + } | |
| 3399 | + var propValue = props[propName]; | |
| 3400 | + var propType = getPropType(propValue); | |
| 3401 | + if (propType !== 'object') { | |
| 3402 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); | |
| 3403 | + } | |
| 3404 | + for (var key in propValue) { | |
| 3405 | + if (has(propValue, key)) { | |
| 3406 | + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); | |
| 3407 | + if (error instanceof Error) { | |
| 3408 | + return error; | |
| 3409 | + } | |
| 3410 | + } | |
| 3411 | + } | |
| 3412 | + return null; | |
| 3413 | + } | |
| 3414 | + return createChainableTypeChecker(validate); | |
| 3415 | + } | |
| 3416 | + | |
| 3417 | + function createUnionTypeChecker(arrayOfTypeCheckers) { | |
| 3418 | + if (!Array.isArray(arrayOfTypeCheckers)) { | |
| 3419 | + true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0; | |
| 3420 | + return emptyFunctionThatReturnsNull; | |
| 3421 | + } | |
| 3422 | + | |
| 3423 | + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { | |
| 3424 | + var checker = arrayOfTypeCheckers[i]; | |
| 3425 | + if (typeof checker !== 'function') { | |
| 3426 | + printWarning( | |
| 3427 | + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + | |
| 3428 | + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' | |
| 3429 | + ); | |
| 3430 | + return emptyFunctionThatReturnsNull; | |
| 3431 | + } | |
| 3432 | + } | |
| 3433 | + | |
| 3434 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3435 | + var expectedTypes = []; | |
| 3436 | + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { | |
| 3437 | + var checker = arrayOfTypeCheckers[i]; | |
| 3438 | + var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); | |
| 3439 | + if (checkerResult == null) { | |
| 3440 | + return null; | |
| 3441 | + } | |
| 3442 | + if (checkerResult.data && has(checkerResult.data, 'expectedType')) { | |
| 3443 | + expectedTypes.push(checkerResult.data.expectedType); | |
| 3444 | + } | |
| 3445 | + } | |
| 3446 | + var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; | |
| 3447 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); | |
| 3448 | + } | |
| 3449 | + return createChainableTypeChecker(validate); | |
| 3450 | + } | |
| 3451 | + | |
| 3452 | + function createNodeChecker() { | |
| 3453 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3454 | + if (!isNode(props[propName])) { | |
| 3455 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); | |
| 3456 | + } | |
| 3457 | + return null; | |
| 3458 | + } | |
| 3459 | + return createChainableTypeChecker(validate); | |
| 3460 | + } | |
| 3461 | + | |
| 3462 | + function invalidValidatorError(componentName, location, propFullName, key, type) { | |
| 3463 | + return new PropTypeError( | |
| 3464 | + (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + | |
| 3465 | + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' | |
| 3466 | + ); | |
| 3467 | + } | |
| 3468 | + | |
| 3469 | + function createShapeTypeChecker(shapeTypes) { | |
| 3470 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3471 | + var propValue = props[propName]; | |
| 3472 | + var propType = getPropType(propValue); | |
| 3473 | + if (propType !== 'object') { | |
| 3474 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); | |
| 3475 | + } | |
| 3476 | + for (var key in shapeTypes) { | |
| 3477 | + var checker = shapeTypes[key]; | |
| 3478 | + if (typeof checker !== 'function') { | |
| 3479 | + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); | |
| 3480 | + } | |
| 3481 | + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); | |
| 3482 | + if (error) { | |
| 3483 | + return error; | |
| 3484 | + } | |
| 3485 | + } | |
| 3486 | + return null; | |
| 3487 | + } | |
| 3488 | + return createChainableTypeChecker(validate); | |
| 3489 | + } | |
| 3490 | + | |
| 3491 | + function createStrictShapeTypeChecker(shapeTypes) { | |
| 3492 | + function validate(props, propName, componentName, location, propFullName) { | |
| 3493 | + var propValue = props[propName]; | |
| 3494 | + var propType = getPropType(propValue); | |
| 3495 | + if (propType !== 'object') { | |
| 3496 | + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); | |
| 3497 | + } | |
| 3498 | + // We need to check all keys in case some are required but missing from props. | |
| 3499 | + var allKeys = assign({}, props[propName], shapeTypes); | |
| 3500 | + for (var key in allKeys) { | |
| 3501 | + var checker = shapeTypes[key]; | |
| 3502 | + if (has(shapeTypes, key) && typeof checker !== 'function') { | |
| 3503 | + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); | |
| 3504 | + } | |
| 3505 | + if (!checker) { | |
| 3506 | + return new PropTypeError( | |
| 3507 | + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + | |
| 3508 | + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + | |
| 3509 | + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') | |
| 3510 | + ); | |
| 3511 | + } | |
| 3512 | + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); | |
| 3513 | + if (error) { | |
| 3514 | + return error; | |
| 3515 | + } | |
| 3516 | + } | |
| 3517 | + return null; | |
| 3518 | + } | |
| 3519 | + | |
| 3520 | + return createChainableTypeChecker(validate); | |
| 3521 | + } | |
| 3522 | + | |
| 3523 | + function isNode(propValue) { | |
| 3524 | + switch (typeof propValue) { | |
| 3525 | + case 'number': | |
| 3526 | + case 'string': | |
| 3527 | + case 'undefined': | |
| 3528 | + return true; | |
| 3529 | + case 'boolean': | |
| 3530 | + return !propValue; | |
| 3531 | + case 'object': | |
| 3532 | + if (Array.isArray(propValue)) { | |
| 3533 | + return propValue.every(isNode); | |
| 3534 | + } | |
| 3535 | + if (propValue === null || isValidElement(propValue)) { | |
| 3536 | + return true; | |
| 3537 | + } | |
| 3538 | + | |
| 3539 | + var iteratorFn = getIteratorFn(propValue); | |
| 3540 | + if (iteratorFn) { | |
| 3541 | + var iterator = iteratorFn.call(propValue); | |
| 3542 | + var step; | |
| 3543 | + if (iteratorFn !== propValue.entries) { | |
| 3544 | + while (!(step = iterator.next()).done) { | |
| 3545 | + if (!isNode(step.value)) { | |
| 3546 | + return false; | |
| 3547 | + } | |
| 3548 | + } | |
| 3549 | + } else { | |
| 3550 | + // Iterator will provide entry [k,v] tuples rather than values. | |
| 3551 | + while (!(step = iterator.next()).done) { | |
| 3552 | + var entry = step.value; | |
| 3553 | + if (entry) { | |
| 3554 | + if (!isNode(entry[1])) { | |
| 3555 | + return false; | |
| 3556 | + } | |
| 3557 | + } | |
| 3558 | + } | |
| 3559 | + } | |
| 3560 | + } else { | |
| 3561 | + return false; | |
| 3562 | + } | |
| 3563 | + | |
| 3564 | + return true; | |
| 3565 | + default: | |
| 3566 | + return false; | |
| 3567 | + } | |
| 3568 | + } | |
| 3569 | + | |
| 3570 | + function isSymbol(propType, propValue) { | |
| 3571 | + // Native Symbol. | |
| 3572 | + if (propType === 'symbol') { | |
| 3573 | + return true; | |
| 3574 | + } | |
| 3575 | + | |
| 3576 | + // falsy value can't be a Symbol | |
| 3577 | + if (!propValue) { | |
| 3578 | + return false; | |
| 3579 | + } | |
| 3580 | + | |
| 3581 | + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' | |
| 3582 | + if (propValue['@@toStringTag'] === 'Symbol') { | |
| 3583 | + return true; | |
| 3584 | + } | |
| 3585 | + | |
| 3586 | + // Fallback for non-spec compliant Symbols which are polyfilled. | |
| 3587 | + if (typeof Symbol === 'function' && propValue instanceof Symbol) { | |
| 3588 | + return true; | |
| 3589 | + } | |
| 3590 | + | |
| 3591 | + return false; | |
| 3592 | + } | |
| 3593 | + | |
| 3594 | + // Equivalent of `typeof` but with special handling for array and regexp. | |
| 3595 | + function getPropType(propValue) { | |
| 3596 | + var propType = typeof propValue; | |
| 3597 | + if (Array.isArray(propValue)) { | |
| 3598 | + return 'array'; | |
| 3599 | + } | |
| 3600 | + if (propValue instanceof RegExp) { | |
| 3601 | + // Old webkits (at least until Android 4.0) return 'function' rather than | |
| 3602 | + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ | |
| 3603 | + // passes PropTypes.object. | |
| 3604 | + return 'object'; | |
| 3605 | + } | |
| 3606 | + if (isSymbol(propType, propValue)) { | |
| 3607 | + return 'symbol'; | |
| 3608 | + } | |
| 3609 | + return propType; | |
| 3610 | + } | |
| 3611 | + | |
| 3612 | + // This handles more types than `getPropType`. Only used for error messages. | |
| 3613 | + // See `createPrimitiveTypeChecker`. | |
| 3614 | + function getPreciseType(propValue) { | |
| 3615 | + if (typeof propValue === 'undefined' || propValue === null) { | |
| 3616 | + return '' + propValue; | |
| 3617 | + } | |
| 3618 | + var propType = getPropType(propValue); | |
| 3619 | + if (propType === 'object') { | |
| 3620 | + if (propValue instanceof Date) { | |
| 3621 | + return 'date'; | |
| 3622 | + } else if (propValue instanceof RegExp) { | |
| 3623 | + return 'regexp'; | |
| 3624 | + } | |
| 3625 | + } | |
| 3626 | + return propType; | |
| 3627 | + } | |
| 3628 | + | |
| 3629 | + // Returns a string that is postfixed to a warning about an invalid type. | |
| 3630 | + // For example, "undefined" or "of type array" | |
| 3631 | + function getPostfixForTypeWarning(value) { | |
| 3632 | + var type = getPreciseType(value); | |
| 3633 | + switch (type) { | |
| 3634 | + case 'array': | |
| 3635 | + case 'object': | |
| 3636 | + return 'an ' + type; | |
| 3637 | + case 'boolean': | |
| 3638 | + case 'date': | |
| 3639 | + case 'regexp': | |
| 3640 | + return 'a ' + type; | |
| 3641 | + default: | |
| 3642 | + return type; | |
| 3643 | + } | |
| 3644 | + } | |
| 3645 | + | |
| 3646 | + // Returns class name of the object, if any. | |
| 3647 | + function getClassName(propValue) { | |
| 3648 | + if (!propValue.constructor || !propValue.constructor.name) { | |
| 3649 | + return ANONYMOUS; | |
| 3650 | + } | |
| 3651 | + return propValue.constructor.name; | |
| 3652 | + } | |
| 3653 | + | |
| 3654 | + ReactPropTypes.checkPropTypes = checkPropTypes; | |
| 3655 | + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; | |
| 3656 | + ReactPropTypes.PropTypes = ReactPropTypes; | |
| 3657 | + | |
| 3658 | + return ReactPropTypes; | |
| 3659 | +}; | |
| 3660 | + | |
| 3661 | + | |
| 3662 | +/***/ }), | |
| 3663 | + | |
| 3664 | +/***/ "../node_modules/prop-types/index.js": | |
| 3665 | +/*!*******************************************!*\ | |
| 3666 | + !*** ../node_modules/prop-types/index.js ***! | |
| 3667 | + \*******************************************/ | |
| 3668 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 3669 | + | |
| 3670 | +/** | |
| 3671 | + * Copyright (c) 2013-present, Facebook, Inc. | |
| 3672 | + * | |
| 3673 | + * This source code is licensed under the MIT license found in the | |
| 3674 | + * LICENSE file in the root directory of this source tree. | |
| 3675 | + */ | |
| 3676 | + | |
| 3677 | +if (true) { | |
| 3678 | + var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); | |
| 3679 | + | |
| 3680 | + // By explicitly using `prop-types` you are opting into new development behavior. | |
| 3681 | + // http://fb.me/prop-types-in-prod | |
| 3682 | + var throwOnDirectAccess = true; | |
| 3683 | + module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); | |
| 3684 | +} else // removed by dead control flow | |
| 3685 | +{} | |
| 3686 | + | |
| 3687 | + | |
| 3688 | +/***/ }), | |
| 3689 | + | |
| 3690 | +/***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js": | |
| 3691 | +/*!**************************************************************!*\ | |
| 3692 | + !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***! | |
| 3693 | + \**************************************************************/ | |
| 3694 | +/***/ ((module) => { | |
| 3695 | + | |
| 3696 | +"use strict"; | |
| 3697 | +/** | |
| 3698 | + * Copyright (c) 2013-present, Facebook, Inc. | |
| 3699 | + * | |
| 3700 | + * This source code is licensed under the MIT license found in the | |
| 3701 | + * LICENSE file in the root directory of this source tree. | |
| 3702 | + */ | |
| 3703 | + | |
| 3704 | + | |
| 3705 | + | |
| 3706 | +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; | |
| 3707 | + | |
| 3708 | +module.exports = ReactPropTypesSecret; | |
| 3709 | + | |
| 3710 | + | |
| 3711 | +/***/ }), | |
| 3712 | + | |
| 3713 | +/***/ "../node_modules/prop-types/lib/has.js": | |
| 3714 | +/*!*********************************************!*\ | |
| 3715 | + !*** ../node_modules/prop-types/lib/has.js ***! | |
| 3716 | + \*********************************************/ | |
| 3717 | +/***/ ((module) => { | |
| 3718 | + | |
| 3719 | +module.exports = Function.call.bind(Object.prototype.hasOwnProperty); | |
| 3720 | + | |
| 3721 | + | |
| 3722 | +/***/ }), | |
| 3723 | + | |
| 3724 | +/***/ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js": | |
| 3725 | +/*!************************************************************************************!*\ | |
| 3726 | + !*** ../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***! | |
| 3727 | + \************************************************************************************/ | |
| 3728 | +/***/ ((__unused_webpack_module, exports) => { | |
| 3729 | + | |
| 3730 | +"use strict"; | |
| 3731 | +/** @license React v16.13.1 | |
| 3732 | + * react-is.development.js | |
| 3733 | + * | |
| 3734 | + * Copyright (c) Facebook, Inc. and its affiliates. | |
| 3735 | + * | |
| 3736 | + * This source code is licensed under the MIT license found in the | |
| 3737 | + * LICENSE file in the root directory of this source tree. | |
| 3738 | + */ | |
| 3739 | + | |
| 3740 | + | |
| 3741 | + | |
| 3742 | + | |
| 3743 | + | |
| 3744 | +if (true) { | |
| 3745 | + (function() { | |
| 3746 | +'use strict'; | |
| 3747 | + | |
| 3748 | +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol | |
| 3749 | +// nor polyfill, then a plain number is used for performance. | |
| 3750 | +var hasSymbol = typeof Symbol === 'function' && Symbol.for; | |
| 3751 | +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; | |
| 3752 | +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; | |
| 3753 | +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; | |
| 3754 | +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; | |
| 3755 | +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; | |
| 3756 | +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; | |
| 3757 | +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary | |
| 3758 | +// (unstable) APIs that have been removed. Can we remove the symbols? | |
| 3759 | + | |
| 3760 | +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; | |
| 3761 | +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; | |
| 3762 | +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; | |
| 3763 | +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; | |
| 3764 | +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; | |
| 3765 | +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; | |
| 3766 | +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; | |
| 3767 | +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; | |
| 3768 | +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; | |
| 3769 | +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; | |
| 3770 | +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; | |
| 3771 | + | |
| 3772 | +function isValidElementType(type) { | |
| 3773 | + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. | |
| 3774 | + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); | |
| 3775 | +} | |
| 3776 | + | |
| 3777 | +function typeOf(object) { | |
| 3778 | + if (typeof object === 'object' && object !== null) { | |
| 3779 | + var $$typeof = object.$$typeof; | |
| 3780 | + | |
| 3781 | + switch ($$typeof) { | |
| 3782 | + case REACT_ELEMENT_TYPE: | |
| 3783 | + var type = object.type; | |
| 3784 | + | |
| 3785 | + switch (type) { | |
| 3786 | + case REACT_ASYNC_MODE_TYPE: | |
| 3787 | + case REACT_CONCURRENT_MODE_TYPE: | |
| 3788 | + case REACT_FRAGMENT_TYPE: | |
| 3789 | + case REACT_PROFILER_TYPE: | |
| 3790 | + case REACT_STRICT_MODE_TYPE: | |
| 3791 | + case REACT_SUSPENSE_TYPE: | |
| 3792 | + return type; | |
| 3793 | + | |
| 3794 | + default: | |
| 3795 | + var $$typeofType = type && type.$$typeof; | |
| 3796 | + | |
| 3797 | + switch ($$typeofType) { | |
| 3798 | + case REACT_CONTEXT_TYPE: | |
| 3799 | + case REACT_FORWARD_REF_TYPE: | |
| 3800 | + case REACT_LAZY_TYPE: | |
| 3801 | + case REACT_MEMO_TYPE: | |
| 3802 | + case REACT_PROVIDER_TYPE: | |
| 3803 | + return $$typeofType; | |
| 3804 | + | |
| 3805 | + default: | |
| 3806 | + return $$typeof; | |
| 3807 | + } | |
| 3808 | + | |
| 3809 | + } | |
| 3810 | + | |
| 3811 | + case REACT_PORTAL_TYPE: | |
| 3812 | + return $$typeof; | |
| 3813 | + } | |
| 3814 | + } | |
| 3815 | + | |
| 3816 | + return undefined; | |
| 3817 | +} // AsyncMode is deprecated along with isAsyncMode | |
| 3818 | + | |
| 3819 | +var AsyncMode = REACT_ASYNC_MODE_TYPE; | |
| 3820 | +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; | |
| 3821 | +var ContextConsumer = REACT_CONTEXT_TYPE; | |
| 3822 | +var ContextProvider = REACT_PROVIDER_TYPE; | |
| 3823 | +var Element = REACT_ELEMENT_TYPE; | |
| 3824 | +var ForwardRef = REACT_FORWARD_REF_TYPE; | |
| 3825 | +var Fragment = REACT_FRAGMENT_TYPE; | |
| 3826 | +var Lazy = REACT_LAZY_TYPE; | |
| 3827 | +var Memo = REACT_MEMO_TYPE; | |
| 3828 | +var Portal = REACT_PORTAL_TYPE; | |
| 3829 | +var Profiler = REACT_PROFILER_TYPE; | |
| 3830 | +var StrictMode = REACT_STRICT_MODE_TYPE; | |
| 3831 | +var Suspense = REACT_SUSPENSE_TYPE; | |
| 3832 | +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated | |
| 3833 | + | |
| 3834 | +function isAsyncMode(object) { | |
| 3835 | + { | |
| 3836 | + if (!hasWarnedAboutDeprecatedIsAsyncMode) { | |
| 3837 | + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint | |
| 3838 | + | |
| 3839 | + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); | |
| 3840 | + } | |
| 3841 | + } | |
| 3842 | + | |
| 3843 | + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; | |
| 3844 | +} | |
| 3845 | +function isConcurrentMode(object) { | |
| 3846 | + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; | |
| 3847 | +} | |
| 3848 | +function isContextConsumer(object) { | |
| 3849 | + return typeOf(object) === REACT_CONTEXT_TYPE; | |
| 3850 | +} | |
| 3851 | +function isContextProvider(object) { | |
| 3852 | + return typeOf(object) === REACT_PROVIDER_TYPE; | |
| 3853 | +} | |
| 3854 | +function isElement(object) { | |
| 3855 | + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; | |
| 3856 | +} | |
| 3857 | +function isForwardRef(object) { | |
| 3858 | + return typeOf(object) === REACT_FORWARD_REF_TYPE; | |
| 3859 | +} | |
| 3860 | +function isFragment(object) { | |
| 3861 | + return typeOf(object) === REACT_FRAGMENT_TYPE; | |
| 3862 | +} | |
| 3863 | +function isLazy(object) { | |
| 3864 | + return typeOf(object) === REACT_LAZY_TYPE; | |
| 3865 | +} | |
| 3866 | +function isMemo(object) { | |
| 3867 | + return typeOf(object) === REACT_MEMO_TYPE; | |
| 3868 | +} | |
| 3869 | +function isPortal(object) { | |
| 3870 | + return typeOf(object) === REACT_PORTAL_TYPE; | |
| 3871 | +} | |
| 3872 | +function isProfiler(object) { | |
| 3873 | + return typeOf(object) === REACT_PROFILER_TYPE; | |
| 3874 | +} | |
| 3875 | +function isStrictMode(object) { | |
| 3876 | + return typeOf(object) === REACT_STRICT_MODE_TYPE; | |
| 3877 | +} | |
| 3878 | +function isSuspense(object) { | |
| 3879 | + return typeOf(object) === REACT_SUSPENSE_TYPE; | |
| 3880 | +} | |
| 3881 | + | |
| 3882 | +exports.AsyncMode = AsyncMode; | |
| 3883 | +exports.ConcurrentMode = ConcurrentMode; | |
| 3884 | +exports.ContextConsumer = ContextConsumer; | |
| 3885 | +exports.ContextProvider = ContextProvider; | |
| 3886 | +exports.Element = Element; | |
| 3887 | +exports.ForwardRef = ForwardRef; | |
| 3888 | +exports.Fragment = Fragment; | |
| 3889 | +exports.Lazy = Lazy; | |
| 3890 | +exports.Memo = Memo; | |
| 3891 | +exports.Portal = Portal; | |
| 3892 | +exports.Profiler = Profiler; | |
| 3893 | +exports.StrictMode = StrictMode; | |
| 3894 | +exports.Suspense = Suspense; | |
| 3895 | +exports.isAsyncMode = isAsyncMode; | |
| 3896 | +exports.isConcurrentMode = isConcurrentMode; | |
| 3897 | +exports.isContextConsumer = isContextConsumer; | |
| 3898 | +exports.isContextProvider = isContextProvider; | |
| 3899 | +exports.isElement = isElement; | |
| 3900 | +exports.isForwardRef = isForwardRef; | |
| 3901 | +exports.isFragment = isFragment; | |
| 3902 | +exports.isLazy = isLazy; | |
| 3903 | +exports.isMemo = isMemo; | |
| 3904 | +exports.isPortal = isPortal; | |
| 3905 | +exports.isProfiler = isProfiler; | |
| 3906 | +exports.isStrictMode = isStrictMode; | |
| 3907 | +exports.isSuspense = isSuspense; | |
| 3908 | +exports.isValidElementType = isValidElementType; | |
| 3909 | +exports.typeOf = typeOf; | |
| 3910 | + })(); | |
| 3911 | +} | |
| 3912 | + | |
| 3913 | + | |
| 3914 | +/***/ }), | |
| 3915 | + | |
| 3916 | +/***/ "../node_modules/prop-types/node_modules/react-is/index.js": | |
| 3917 | +/*!*****************************************************************!*\ | |
| 3918 | + !*** ../node_modules/prop-types/node_modules/react-is/index.js ***! | |
| 3919 | + \*****************************************************************/ | |
| 3920 | +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { | |
| 3921 | + | |
| 3922 | +"use strict"; | |
| 3923 | + | |
| 3924 | + | |
| 3925 | +if (false) // removed by dead control flow | |
| 3926 | +{} else { | |
| 3927 | + module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js"); | |
| 3928 | +} | |
| 3929 | + | |
| 3930 | + | |
| 3931 | +/***/ }), | |
| 3932 | + | |
| 3933 | +/***/ "../node_modules/react-dom/client.js": | |
| 3934 | +/*!*******************************************!*\ | |
| 3935 | + !*** ../node_modules/react-dom/client.js ***! | |
| 3936 | + \*******************************************/ | |
| 3937 | +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { | |
| 3938 | + | |
| 3939 | +"use strict"; | |
| 3940 | + | |
| 3941 | + | |
| 3942 | +var m = __webpack_require__(/*! react-dom */ "react-dom"); | |
| 3943 | +if (false) // removed by dead control flow | |
| 3944 | +{} else { | |
| 3945 | + var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; | |
| 3946 | + exports.createRoot = function(c, o) { | |
| 3947 | + i.usingClientEntryPoint = true; | |
| 3948 | + try { | |
| 3949 | + return m.createRoot(c, o); | |
| 3950 | + } finally { | |
| 3951 | + i.usingClientEntryPoint = false; | |
| 3952 | + } | |
| 3953 | + }; | |
| 3954 | + exports.hydrateRoot = function(c, h, o) { | |
| 3955 | + i.usingClientEntryPoint = true; | |
| 3956 | + try { | |
| 3957 | + return m.hydrateRoot(c, h, o); | |
| 3958 | + } finally { | |
| 3959 | + i.usingClientEntryPoint = false; | |
| 3960 | + } | |
| 3961 | + }; | |
| 3962 | +} | |
| 3963 | + | |
| 3964 | + | |
| 3965 | +/***/ }), | |
| 3966 | + | |
| 3967 | +/***/ "@elementor/icons": | |
| 3968 | +/*!************************************!*\ | |
| 3969 | + !*** external "elementorV2.icons" ***! | |
| 3970 | + \************************************/ | |
| 3971 | +/***/ ((module) => { | |
| 3972 | + | |
| 3973 | +"use strict"; | |
| 3974 | +module.exports = elementorV2.icons; | |
| 3975 | + | |
| 3976 | +/***/ }), | |
| 3977 | + | |
| 3978 | +/***/ "@elementor/ui": | |
| 3979 | +/*!*********************************!*\ | |
| 3980 | + !*** external "elementorV2.ui" ***! | |
| 3981 | + \*********************************/ | |
| 3982 | +/***/ ((module) => { | |
| 3983 | + | |
| 3984 | +"use strict"; | |
| 3985 | +module.exports = elementorV2.ui; | |
| 3986 | + | |
| 3987 | +/***/ }), | |
| 3988 | + | |
| 3989 | +/***/ "@elementor/ui/DialogHeader": | |
| 3990 | +/*!*************************************************!*\ | |
| 3991 | + !*** external "elementorV2.ui['DialogHeader']" ***! | |
| 3992 | + \*************************************************/ | |
| 3993 | +/***/ ((module) => { | |
| 3994 | + | |
| 3995 | +"use strict"; | |
| 3996 | +module.exports = elementorV2.ui['DialogHeader']; | |
| 3997 | + | |
| 3998 | +/***/ }), | |
| 3999 | + | |
| 4000 | +/***/ "@elementor/ui/DialogHeaderGroup": | |
| 4001 | +/*!******************************************************!*\ | |
| 4002 | + !*** external "elementorV2.ui['DialogHeaderGroup']" ***! | |
| 4003 | + \******************************************************/ | |
| 4004 | +/***/ ((module) => { | |
| 4005 | + | |
| 4006 | +"use strict"; | |
| 4007 | +module.exports = elementorV2.ui['DialogHeaderGroup']; | |
| 4008 | + | |
| 4009 | +/***/ }), | |
| 4010 | + | |
| 4011 | +/***/ "@wordpress/i18n": | |
| 4012 | +/*!**************************!*\ | |
| 4013 | + !*** external "wp.i18n" ***! | |
| 4014 | + \**************************/ | |
| 4015 | +/***/ ((module) => { | |
| 4016 | + | |
| 4017 | +"use strict"; | |
| 4018 | +module.exports = wp.i18n; | |
| 4019 | + | |
| 4020 | +/***/ }), | |
| 4021 | + | |
| 4022 | +/***/ "react": | |
| 4023 | +/*!************************!*\ | |
| 4024 | + !*** external "React" ***! | |
| 4025 | + \************************/ | |
| 4026 | +/***/ ((module) => { | |
| 4027 | + | |
| 4028 | +"use strict"; | |
| 4029 | +module.exports = React; | |
| 4030 | + | |
| 4031 | +/***/ }), | |
| 4032 | + | |
| 4033 | +/***/ "react-dom": | |
| 4034 | +/*!***************************!*\ | |
| 4035 | + !*** external "ReactDOM" ***! | |
| 4036 | + \***************************/ | |
| 4037 | +/***/ ((module) => { | |
| 4038 | + | |
| 4039 | +"use strict"; | |
| 4040 | +module.exports = ReactDOM; | |
| 4041 | + | |
| 4042 | +/***/ }) | |
| 4043 | + | |
| 4044 | +/******/ }); | |
| 4045 | +/************************************************************************/ | |
| 4046 | +/******/ // The module cache | |
| 4047 | +/******/ var __webpack_module_cache__ = {}; | |
| 4048 | +/******/ | |
| 4049 | +/******/ // The require function | |
| 4050 | +/******/ function __webpack_require__(moduleId) { | |
| 4051 | +/******/ // Check if module is in cache | |
| 4052 | +/******/ var cachedModule = __webpack_module_cache__[moduleId]; | |
| 4053 | +/******/ if (cachedModule !== undefined) { | |
| 4054 | +/******/ return cachedModule.exports; | |
| 4055 | +/******/ } | |
| 4056 | +/******/ // Create a new module (and put it into the cache) | |
| 4057 | +/******/ var module = __webpack_module_cache__[moduleId] = { | |
| 4058 | +/******/ // no module.id needed | |
| 4059 | +/******/ // no module.loaded needed | |
| 4060 | +/******/ exports: {} | |
| 4061 | +/******/ }; | |
| 4062 | +/******/ | |
| 4063 | +/******/ // Execute the module function | |
| 4064 | +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); | |
| 4065 | +/******/ | |
| 4066 | +/******/ // Return the exports of the module | |
| 4067 | +/******/ return module.exports; | |
| 4068 | +/******/ } | |
| 4069 | +/******/ | |
| 4070 | +/************************************************************************/ | |
| 4071 | +var __webpack_exports__ = {}; | |
| 4072 | +// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. | |
| 4073 | +(() => { | |
| 4074 | +"use strict"; | |
| 4075 | +/*!*************************************************************!*\ | |
| 4076 | + !*** ../modules/atomic-opt-in/assets/js/opt-in-page/app.js ***! | |
| 4077 | + \*************************************************************/ | |
| 4078 | +/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); | |
| 4079 | + | |
| 4080 | + | |
| 4081 | +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); | |
| 4082 | +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); | |
| 4083 | +var _react2 = _interopRequireDefault(__webpack_require__(/*! elementor-utils/react */ "../assets/dev/js/utils/react.js")); | |
| 4084 | +var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); | |
| 4085 | +var _optIn = __webpack_require__(/*! ./opt-in */ "../modules/atomic-opt-in/assets/js/opt-in-page/opt-in.js"); | |
| 4086 | +var App = function App(props) { | |
| 4087 | + return /*#__PURE__*/_react.default.createElement(_ui.DirectionProvider, { | |
| 4088 | + rtl: props.isRTL | |
| 4089 | + }, /*#__PURE__*/_react.default.createElement(_ui.LocalizationProvider, null, /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, { | |
| 4090 | + colorScheme: 'light' | |
| 4091 | + }, /*#__PURE__*/_react.default.createElement(_optIn.OptIn, { | |
| 4092 | + state: props === null || props === void 0 ? void 0 : props.state | |
| 4093 | + })))); | |
| 4094 | +}; | |
| 4095 | +App.propTypes = { | |
| 4096 | + isRTL: PropTypes.bool, | |
| 4097 | + state: PropTypes.object | |
| 4098 | +}; | |
| 4099 | +var init = function init() { | |
| 4100 | + var rootElement = document.querySelector('#page-editor-v4-opt-in'); | |
| 4101 | + if (!rootElement) { | |
| 4102 | + return; | |
| 4103 | + } | |
| 4104 | + _react2.default.render(/*#__PURE__*/_react.default.createElement(App, { | |
| 4105 | + isRTL: !!elementorCommon.config.isRTL, | |
| 4106 | + state: elementorSettingsEditor4OptIn | |
| 4107 | + }), rootElement); | |
| 4108 | +}; | |
| 4109 | +init(); | |
| 4110 | +})(); | |
| 4111 | + | |
| 4112 | +/******/ })() | |
| 4113 | +; | |
| 3431 | 4114 | //# sourceMappingURL=editor-v4-opt-in.js.map |