(function(react, react_dom, _elementor_router, _wordpress_i18n, _elementor_hooks, _elementor_ui, _elementor_icons, _elementor_app_ui, _elementor_site_editor) {var __vite_style__ = document.createElement('style');__vite_style__.textContent = "/*$vite$:1*/";document.head.appendChild(__vite_style__); //#region \0rolldown/runtime.js var __create = Object.create; var __defProp$2 = Object.defineProperty; var __name = (target, value) => __defProp$2(target, "name", { value, configurable: true }); var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esmMin = (fn, res, err) => () => { if (err) throw err[0]; try { return fn && (res = fn(fn = 0)), res; } catch (e) { throw err = [e], e; } }; var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports); var __exportAll = (all, no_symbols) => { let target = {}; for (var name in all) { __defProp$2(target, name, { get: all[name], enumerable: true }); } if (!no_symbols) { __defProp$2(target, Symbol.toStringTag, { value: "Module" }); } return target; }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { key = keys[i]; if (!__hasOwnProp.call(to, key) && key !== except) { __defProp$2(to, key, { get: ((k) => from[k]).bind(null, key), enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } } } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp$2(target, "default", { value: mod, enumerable: true }) : target, mod)); var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp$2({}, "__esModule", { value: true }), mod); //#endregion react = __toESM(react); react_dom = __toESM(react_dom); _elementor_router = __toESM(_elementor_router); //#region node_modules/react-dom/client.js var require_client = /* @__PURE__ */ __commonJSMin(((exports) => { var m$1 = (globalThis.ReactDOM); var i = m$1.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; exports.createRoot = function(c, o) { i.usingClientEntryPoint = true; try { return m$1.createRoot(c, o); } finally { i.usingClientEntryPoint = false; } }; })); //#endregion //#region assets/dev/js/utils/react.js var import_client = require_client(); /** * Support conditional rendering of a React App to the DOM, based on the React version. * We use `createRoot` when available, but fallback to `ReactDOM.render` for older versions. * * @param {Promise.resolve(React).ReactElement} app The app to render. * @param {HTMLElement} domElement The DOM element to render the app into. * * @return {{ unmount: () => void }} The unmount function. */ function render(app, domElement) { var unmountFunction; try { var root = (0, import_client.createRoot)(domElement); root.render(app); unmountFunction = function unmountFunction() { root.unmount(); }; } catch (e) { react_dom.render(app, domElement); unmountFunction = function unmountFunction() { react_dom.unmountComponentAtNode(domElement); }; } return { unmount: unmountFunction }; } var react_default = { render }; //#endregion //#region node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js /** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_react_is_development = /* @__PURE__ */ __commonJSMin(((exports) => { (function() { "use strict"; var hasSymbol = typeof Symbol === "function" && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for("react.element") : 60103; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for("react.portal") : 60106; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for("react.fragment") : 60107; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for("react.strict_mode") : 60108; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for("react.profiler") : 60114; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for("react.provider") : 60109; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for("react.context") : 60110; var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for("react.async_mode") : 60111; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for("react.concurrent_mode") : 60111; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for("react.forward_ref") : 60112; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for("react.suspense") : 60113; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for("react.suspense_list") : 60120; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for("react.memo") : 60115; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for("react.lazy") : 60116; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for("react.block") : 60121; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for("react.fundamental") : 60117; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119; function isValidElementType(type) { 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); } function typeOf(object) { if (typeof object === "object" && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } } var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; function isAsyncMode(object) { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; 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."); } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); })); //#endregion //#region node_modules/prop-types/node_modules/react-is/index.js var require_react_is = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = require_react_is_development(); })); //#endregion //#region node_modules/object-assign/index.js /* object-assign (c) Sindre Sorhus @license MIT */ var require_object_assign = /* @__PURE__ */ __commonJSMin(((exports, module) => { var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === void 0) throw new TypeError("Object.assign cannot be called with null or undefined"); return Object(val); } function shouldUseNative() { try { if (!Object.assign) return false; var test1 = /* @__PURE__ */ new String("abc"); test1[5] = "de"; if (Object.getOwnPropertyNames(test1)[0] === "5") return false; var test2 = {}; for (var i = 0; i < 10; i++) test2["_" + String.fromCharCode(i)] = i; if (Object.getOwnPropertyNames(test2).map(function(n) { return test2[n]; }).join("") !== "0123456789") return false; var test3 = {}; "abcdefghijklmnopqrst".split("").forEach(function(letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") return false; return true; } catch (err) { return false; } } module.exports = shouldUseNative() ? Object.assign : function(target, source) { var from; var to = toObject(target); var symbols; for (var s = 1; s < arguments.length; s++) { from = Object(arguments[s]); for (var key in from) if (hasOwnProperty.call(from, key)) to[key] = from[key]; if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) if (propIsEnumerable.call(from, symbols[i])) to[symbols[i]] = from[symbols[i]]; } } return to; }; })); //#endregion //#region node_modules/prop-types/lib/ReactPropTypesSecret.js /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_ReactPropTypesSecret = /* @__PURE__ */ __commonJSMin(((exports, module) => { var ReactPropTypesSecret = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"; module.exports = ReactPropTypesSecret; })); //#endregion //#region node_modules/prop-types/lib/has.js var require_has = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = Function.call.bind(Object.prototype.hasOwnProperty); })); //#endregion //#region node_modules/prop-types/checkPropTypes.js /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_checkPropTypes = /* @__PURE__ */ __commonJSMin(((exports, module) => { var printWarning = function() {}; var ReactPropTypesSecret = require_ReactPropTypesSecret(); var loggedTypeFailures = {}; var has = require_has(); printWarning = function(text) { var message = "Warning: " + text; if (typeof console !== "undefined") console.error(message); try { throw new Error(message); } catch (x) {} }; /** * Assert that the values match with the type specs. * Error messages are memorized and will only be shown once. * * @param {object} typeSpecs Map of name to a ReactPropType * @param {object} values Runtime values that need to be type-checked * @param {string} location e.g. "prop", "context", "child context" * @param {string} componentName Name of the component for error messages. * @param {?Function} getStack Returns the component stack. * @private */ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { for (var typeSpecName in typeSpecs) if (has(typeSpecs, typeSpecName)) { var error; try { if (typeof typeSpecs[typeSpecName] !== "function") { 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`."); err.name = "Invariant Violation"; throw err; } error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } 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)."); if (error instanceof Error && !(error.message in loggedTypeFailures)) { loggedTypeFailures[error.message] = true; var stack = getStack ? getStack() : ""; printWarning("Failed " + location + " type: " + error.message + (stack != null ? stack : "")); } } } /** * Resets warning cache when testing. * * @private */ checkPropTypes.resetWarningCache = function() { loggedTypeFailures = {}; }; module.exports = checkPropTypes; })); //#endregion //#region node_modules/prop-types/factoryWithTypeCheckers.js /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_factoryWithTypeCheckers = /* @__PURE__ */ __commonJSMin(((exports, module) => { var ReactIs = require_react_is(); var assign = require_object_assign(); var ReactPropTypesSecret = require_ReactPropTypesSecret(); var has = require_has(); var checkPropTypes = require_checkPropTypes(); var printWarning = function() {}; printWarning = function(text) { var message = "Warning: " + text; if (typeof console !== "undefined") console.error(message); try { throw new Error(message); } catch (x) {} }; function emptyFunctionThatReturnsNull() { return null; } module.exports = function(isValidElement, throwOnDirectAccess) { var ITERATOR_SYMBOL = typeof Symbol === "function" && Symbol.iterator; var FAUX_ITERATOR_SYMBOL = "@@iterator"; /** * Returns the iterator method function contained on the iterable object. * * Be sure to invoke the function with the iterable as context: * * var iteratorFn = getIteratorFn(myIterable); * if (iteratorFn) { * var iterator = iteratorFn.call(myIterable); * ... * } * * @param {?object} maybeIterable * @return {?function} */ function getIteratorFn(maybeIterable) { var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); if (typeof iteratorFn === "function") return iteratorFn; } /** * Collection of methods that allow declaration and validation of props that are * supplied to React components. Example usage: * * var Props = require('ReactPropTypes'); * var MyArticle = React.createClass({ * propTypes: { * // An optional string prop named "description". * description: Props.string, * * // A required enum prop named "category". * category: Props.oneOf(['News','Photos']).isRequired, * * // A prop named "dialog" that requires an instance of Dialog. * dialog: Props.instanceOf(Dialog).isRequired * }, * render: function() { ... } * }); * * A more formal specification of how these methods are used: * * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) * decl := ReactPropTypes.{type}(.isRequired)? * * Each and every declaration produces a function with the same signature. This * allows the creation of custom validation functions. For example: * * var MyLink = React.createClass({ * propTypes: { * // An optional string or URI prop named "href". * href: function(props, propName, componentName) { * var propValue = props[propName]; * if (propValue != null && typeof propValue !== 'string' && * !(propValue instanceof URI)) { * return new Error( * 'Expected a string or an URI for ' + propName + ' in ' + * componentName * ); * } * } * }, * render: function() {...} * }); * * @internal */ var ANONYMOUS = "<>"; var ReactPropTypes = { array: createPrimitiveTypeChecker("array"), bigint: createPrimitiveTypeChecker("bigint"), bool: createPrimitiveTypeChecker("boolean"), func: createPrimitiveTypeChecker("function"), number: createPrimitiveTypeChecker("number"), object: createPrimitiveTypeChecker("object"), string: createPrimitiveTypeChecker("string"), symbol: createPrimitiveTypeChecker("symbol"), any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, shape: createShapeTypeChecker, exact: createStrictShapeTypeChecker }; /** * inlined Object.is polyfill to avoid requiring consumers ship their own * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is */ function is(x, y) { if (x === y) return x !== 0 || 1 / x === 1 / y; else return x !== x && y !== y; } /** * We use an Error-like object for backward compatibility as people may call * PropTypes directly and inspect their output. However, we don't use real * Errors anymore. We don't inspect their stack anyway, and creating them * is prohibitively expensive if they are created too often, such as what * happens in oneOfType() for any type before the one that matched. */ function PropTypeError(message, data) { this.message = message; this.data = data && typeof data === "object" ? data : {}; this.stack = ""; } PropTypeError.prototype = Error.prototype; function createChainableTypeChecker(validate) { var manualPropTypeCallCache = {}; var manualPropTypeWarningCount = 0; function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (secret !== ReactPropTypesSecret) { if (throwOnDirectAccess) { 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"); err.name = "Invariant Violation"; throw err; } else if (typeof console !== "undefined") { var cacheKey = componentName + ":" + propName; if (!manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3) { 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."); manualPropTypeCallCache[cacheKey] = true; manualPropTypeWarningCount++; } } } if (props[propName] == null) { if (isRequired) { if (props[propName] === null) return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required " + ("in `" + componentName + "`, but its value is `null`.")); return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required in " + ("`" + componentName + "`, but its value is `undefined`.")); } return null; } else return validate(props, propName, componentName, location, propFullName); } var chainedCheckType = checkType.bind(null, false); chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } function createPrimitiveTypeChecker(expectedType) { function validate(props, propName, componentName, location, propFullName, secret) { var propValue = props[propName]; if (getPropType(propValue) !== expectedType) { var preciseType = getPreciseType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + preciseType + "` supplied to `" + componentName + "`, expected ") + ("`" + expectedType + "`."), { expectedType }); } return null; } return createChainableTypeChecker(validate); } function createAnyTypeChecker() { return createChainableTypeChecker(emptyFunctionThatReturnsNull); } function createArrayOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== "function") return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside arrayOf."); var propValue = props[propName]; if (!Array.isArray(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an array.")); } for (var i = 0; i < propValue.length; i++) { var error = typeChecker(propValue, i, componentName, location, propFullName + "[" + i + "]", ReactPropTypesSecret); if (error instanceof Error) return error; } return null; } return createChainableTypeChecker(validate); } function createElementTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!isValidElement(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement.")); } return null; } return createChainableTypeChecker(validate); } function createElementTypeTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!ReactIs.isValidElementType(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement type.")); } return null; } return createChainableTypeChecker(validate); } function createInstanceTypeChecker(expectedClass) { function validate(props, propName, componentName, location, propFullName) { if (!(props[propName] instanceof expectedClass)) { var expectedClassName = expectedClass.name || ANONYMOUS; var actualClassName = getClassName(props[propName]); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + actualClassName + "` supplied to `" + componentName + "`, expected ") + ("instance of `" + expectedClassName + "`.")); } return null; } return createChainableTypeChecker(validate); } function createEnumTypeChecker(expectedValues) { if (!Array.isArray(expectedValues)) { 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])."); else printWarning("Invalid argument supplied to oneOf, expected an array."); return emptyFunctionThatReturnsNull; } function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; for (var i = 0; i < expectedValues.length; i++) if (is(propValue, expectedValues[i])) return null; var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { if (getPreciseType(value) === "symbol") return String(value); return value; }); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of value `" + String(propValue) + "` " + ("supplied to `" + componentName + "`, expected one of " + valuesString + ".")); } return createChainableTypeChecker(validate); } function createObjectOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== "function") return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside objectOf."); var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an object.")); for (var key in propValue) if (has(propValue, key)) { var error = typeChecker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error instanceof Error) return error; } return null; } return createChainableTypeChecker(validate); } function createUnionTypeChecker(arrayOfTypeCheckers) { if (!Array.isArray(arrayOfTypeCheckers)) { printWarning("Invalid argument supplied to oneOfType, expected an instance of array."); return emptyFunctionThatReturnsNull; } for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; if (typeof checker !== "function") { printWarning("Invalid argument supplied to oneOfType. Expected an array of check functions, but received " + getPostfixForTypeWarning(checker) + " at index " + i + "."); return emptyFunctionThatReturnsNull; } } function validate(props, propName, componentName, location, propFullName) { var expectedTypes = []; for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); if (checkerResult == null) return null; if (checkerResult.data && has(checkerResult.data, "expectedType")) expectedTypes.push(checkerResult.data.expectedType); } var expectedTypesMessage = expectedTypes.length > 0 ? ", expected one of type [" + expectedTypes.join(", ") + "]" : ""; return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`" + expectedTypesMessage + ".")); } return createChainableTypeChecker(validate); } function createNodeChecker() { function validate(props, propName, componentName, location, propFullName) { if (!isNode(props[propName])) return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`, expected a ReactNode.")); return null; } return createChainableTypeChecker(validate); } function invalidValidatorError(componentName, location, propFullName, key, type) { 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 + "`."); } function createShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); for (var key in shapeTypes) { var checker = shapeTypes[key]; if (typeof checker !== "function") return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error) return error; } return null; } return createChainableTypeChecker(validate); } function createStrictShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); for (var key in assign({}, props[propName], shapeTypes)) { var checker = shapeTypes[key]; if (has(shapeTypes, key) && typeof checker !== "function") return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); 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, " ")); var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error) return error; } return null; } return createChainableTypeChecker(validate); } function isNode(propValue) { switch (typeof propValue) { case "number": case "string": case "undefined": return true; case "boolean": return !propValue; case "object": if (Array.isArray(propValue)) return propValue.every(isNode); if (propValue === null || isValidElement(propValue)) return true; var iteratorFn = getIteratorFn(propValue); if (iteratorFn) { var iterator = iteratorFn.call(propValue); var step; if (iteratorFn !== propValue.entries) { while (!(step = iterator.next()).done) if (!isNode(step.value)) return false; } else while (!(step = iterator.next()).done) { var entry = step.value; if (entry) { if (!isNode(entry[1])) return false; } } } else return false; return true; default: return false; } } function isSymbol(propType, propValue) { if (propType === "symbol") return true; if (!propValue) return false; if (propValue["@@toStringTag"] === "Symbol") return true; if (typeof Symbol === "function" && propValue instanceof Symbol) return true; return false; } function getPropType(propValue) { var propType = typeof propValue; if (Array.isArray(propValue)) return "array"; if (propValue instanceof RegExp) return "object"; if (isSymbol(propType, propValue)) return "symbol"; return propType; } function getPreciseType(propValue) { if (typeof propValue === "undefined" || propValue === null) return "" + propValue; var propType = getPropType(propValue); if (propType === "object") { if (propValue instanceof Date) return "date"; else if (propValue instanceof RegExp) return "regexp"; } return propType; } function getPostfixForTypeWarning(value) { var type = getPreciseType(value); switch (type) { case "array": case "object": return "an " + type; case "boolean": case "date": case "regexp": return "a " + type; default: return type; } } function getClassName(propValue) { if (!propValue.constructor || !propValue.constructor.name) return ANONYMOUS; return propValue.constructor.name; } ReactPropTypes.checkPropTypes = checkPropTypes; ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; }; })); //#endregion //#region node_modules/prop-types/index.js var require_prop_types = /* @__PURE__ */ __commonJSMin(((exports, module) => { var ReactIs = require_react_is(); var throwOnDirectAccess = true; module.exports = require_factoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess); })); //#endregion //#region node_modules/invariant/browser.js /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_browser = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Use invariant() to assert state which your program assumes to be true. * * Provide sprintf-style format (only %s is supported) and arguments * to provide information about what broke and what you were * expecting. * * The invariant message will be stripped in production, but the invariant * will remain to ensure logic does not differ in production. */ var invariant = function(condition, format, a, b, c, d, e, f) { if (format === void 0) throw new Error("invariant requires an error message argument"); if (!condition) { var error; if (format === void 0) error = /* @__PURE__ */ new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings."); else { var args = [ a, b, c, d, e, f ]; var argIndex = 0; error = new Error(format.replace(/%s/g, function() { return args[argIndex++]; })); error.name = "Invariant Violation"; } error.framesToPop = 1; throw error; } }; module.exports = invariant; })); //#endregion //#region node_modules/gud/index.js var require_gud = /* @__PURE__ */ __commonJSMin(((exports, module) => { var key = "__global_unique_id__"; module.exports = function() { return global[key] = (global[key] || 0) + 1; }; })); //#endregion //#region node_modules/warning/warning.js /** * Copyright (c) 2014-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var require_warning = /* @__PURE__ */ __commonJSMin(((exports, module) => { /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical * paths. Removing the logging code for production environments will keep the * same logic and follow the same code paths. */ var __DEV__ = true; var warning = function() {}; if (__DEV__) { var printWarning = function printWarning(format, args) { var len = arguments.length; args = new Array(len > 1 ? len - 1 : 0); for (var key = 1; key < len; key++) args[key - 1] = arguments[key]; var argIndex = 0; var message = "Warning: " + format.replace(/%s/g, function() { return args[argIndex++]; }); if (typeof console !== "undefined") console.error(message); try { throw new Error(message); } catch (x) {} }; warning = function(condition, format, args) { var len = arguments.length; args = new Array(len > 2 ? len - 2 : 0); for (var key = 2; key < len; key++) args[key - 2] = arguments[key]; if (format === void 0) throw new Error("`warning(condition, format, ...args)` requires a warning message argument"); if (!condition) printWarning.apply(null, [format].concat(args)); }; } module.exports = warning; })); //#endregion //#region node_modules/create-react-context/lib/implementation.js var require_implementation = /* @__PURE__ */ __commonJSMin(((exports, module) => { exports.__esModule = true; var _react = (globalThis.React); _interopRequireDefault(_react); var _propTypes2 = _interopRequireDefault(require_prop_types()); var _gud2 = _interopRequireDefault(require_gud()); var _warning2 = _interopRequireDefault(require_warning()); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); } function _possibleConstructorReturn(self, call) { if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var MAX_SIGNED_31_BIT_INT = 1073741823; function objectIs(x, y) { if (x === y) return x !== 0 || 1 / x === 1 / y; else return x !== x && y !== y; } function createEventEmitter(value) { var handlers = []; return { on: function on(handler) { handlers.push(handler); }, off: function off(handler) { handlers = handlers.filter(function(h) { return h !== handler; }); }, get: function get() { return value; }, set: function set(newValue, changedBits) { value = newValue; handlers.forEach(function(handler) { return handler(value, changedBits); }); } }; } function onlyChild(children) { return Array.isArray(children) ? children[0] : children; } function createReactContext(defaultValue, calculateChangedBits) { var _Provider$childContex; var _Consumer$contextType; var contextProp = "__create-react-context-" + (0, _gud2.default)() + "__"; var Provider = function(_Component) { _inherits(Provider, _Component); function Provider() { var _temp; var _this; var _ret; _classCallCheck(this, Provider); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret); } Provider.prototype.getChildContext = function getChildContext() { var _ref; return _ref = {}, _ref[contextProp] = this.emitter, _ref; }; Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { if (this.props.value !== nextProps.value) { var oldValue = this.props.value; var newValue = nextProps.value; var changedBits = void 0; if (objectIs(oldValue, newValue)) changedBits = 0; else { changedBits = typeof calculateChangedBits === "function" ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT; (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, "calculateChangedBits: Expected the return value to be a 31-bit integer. Instead received: %s", changedBits); changedBits |= 0; if (changedBits !== 0) this.emitter.set(nextProps.value, changedBits); } } }; Provider.prototype.render = function render() { return this.props.children; }; return Provider; }(_react.Component); Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex); var Consumer = function(_Component2) { _inherits(Consumer, _Component2); function Consumer() { var _temp2; var _this2; var _ret2; _classCallCheck(this, Consumer); for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2]; return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = { value: _this2.getValue() }, _this2.onUpdate = function(newValue, changedBits) { if (((_this2.observedBits | 0) & changedBits) !== 0) _this2.setState({ value: _this2.getValue() }); }, _temp2), _possibleConstructorReturn(_this2, _ret2); } Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { var observedBits = nextProps.observedBits; this.observedBits = observedBits === void 0 || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits; }; Consumer.prototype.componentDidMount = function componentDidMount() { if (this.context[contextProp]) this.context[contextProp].on(this.onUpdate); var observedBits = this.props.observedBits; this.observedBits = observedBits === void 0 || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits; }; Consumer.prototype.componentWillUnmount = function componentWillUnmount() { if (this.context[contextProp]) this.context[contextProp].off(this.onUpdate); }; Consumer.prototype.getValue = function getValue() { if (this.context[contextProp]) return this.context[contextProp].get(); else return defaultValue; }; Consumer.prototype.render = function render() { return onlyChild(this.props.children)(this.state.value); }; return Consumer; }(_react.Component); Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType); return { Provider, Consumer }; } exports.default = createReactContext; module.exports = exports["default"]; })); //#endregion //#region node_modules/create-react-context/lib/index.js var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => { exports.__esModule = true; var _react2 = _interopRequireDefault((globalThis.React)); var _implementation2 = _interopRequireDefault(require_implementation()); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _react2.default.createContext || _implementation2.default; module.exports = exports["default"]; })); //#endregion //#region node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ function componentWillMount() { var state = this.constructor.getDerivedStateFromProps(this.props, this.state); if (state !== null && state !== void 0) this.setState(state); } function componentWillReceiveProps(nextProps) { function updater(prevState) { var state = this.constructor.getDerivedStateFromProps(nextProps, prevState); return state !== null && state !== void 0 ? state : null; } this.setState(updater.bind(this)); } function componentWillUpdate(nextProps, nextState) { try { var prevProps = this.props; var prevState = this.state; this.props = nextProps; this.state = nextState; this.__reactInternalSnapshotFlag = true; this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(prevProps, prevState); } finally { this.props = prevProps; this.state = prevState; } } function polyfill(Component) { var prototype = Component.prototype; if (!prototype || !prototype.isReactComponent) throw new Error("Can only polyfill class components"); if (typeof Component.getDerivedStateFromProps !== "function" && typeof prototype.getSnapshotBeforeUpdate !== "function") return Component; var foundWillMountName = null; var foundWillReceivePropsName = null; var foundWillUpdateName = null; if (typeof prototype.componentWillMount === "function") foundWillMountName = "componentWillMount"; else if (typeof prototype.UNSAFE_componentWillMount === "function") foundWillMountName = "UNSAFE_componentWillMount"; if (typeof prototype.componentWillReceiveProps === "function") foundWillReceivePropsName = "componentWillReceiveProps"; else if (typeof prototype.UNSAFE_componentWillReceiveProps === "function") foundWillReceivePropsName = "UNSAFE_componentWillReceiveProps"; if (typeof prototype.componentWillUpdate === "function") foundWillUpdateName = "componentWillUpdate"; else if (typeof prototype.UNSAFE_componentWillUpdate === "function") foundWillUpdateName = "UNSAFE_componentWillUpdate"; if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) { var componentName = Component.displayName || Component.name; var newApiName = typeof Component.getDerivedStateFromProps === "function" ? "getDerivedStateFromProps()" : "getSnapshotBeforeUpdate()"; throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n" + componentName + " uses " + newApiName + " but also contains the following legacy lifecycles:" + (foundWillMountName !== null ? "\n " + foundWillMountName : "") + (foundWillReceivePropsName !== null ? "\n " + foundWillReceivePropsName : "") + (foundWillUpdateName !== null ? "\n " + foundWillUpdateName : "") + "\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks"); } if (typeof Component.getDerivedStateFromProps === "function") { prototype.componentWillMount = componentWillMount; prototype.componentWillReceiveProps = componentWillReceiveProps; } if (typeof prototype.getSnapshotBeforeUpdate === "function") { if (typeof prototype.componentDidUpdate !== "function") throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype"); prototype.componentWillUpdate = componentWillUpdate; var componentDidUpdate = prototype.componentDidUpdate; prototype.componentDidUpdate = function componentDidUpdatePolyfill(prevProps, prevState, maybeSnapshot) { var snapshot = this.__reactInternalSnapshotFlag ? this.__reactInternalSnapshot : maybeSnapshot; componentDidUpdate.call(this, prevProps, prevState, snapshot); }; } return Component; } var init_react_lifecycles_compat_es = __esmMin((() => { componentWillMount.__suppressDeprecationWarning = true; componentWillReceiveProps.__suppressDeprecationWarning = true; componentWillUpdate.__suppressDeprecationWarning = true; })); //#endregion //#region node_modules/@reach/router/es/lib/utils.js var import_browser$1, startsWith, pick, resolve$4, insertParams, validateRedirect, paramRe, SEGMENT_POINTS, STATIC_POINTS, DYNAMIC_POINTS, SPLAT_PENALTY, ROOT_POINTS, isRootSegment, isDynamic, isSplat, rankRoute, rankRoutes, segmentize, addQuery, reservedNames, shallowCompare; var init_utils$6 = __esmMin((() => { import_browser$1 = /* @__PURE__ */ __toESM(require_browser()); startsWith = function startsWith(string, search) { return string.substr(0, search.length) === search; }; pick = function pick(routes, uri) { var match = void 0; var default_ = void 0; var uriPathname = uri.split("?")[0]; var uriSegments = segmentize(uriPathname); var isRootUri = uriSegments[0] === ""; var ranked = rankRoutes(routes); for (var i = 0, l = ranked.length; i < l; i++) { var missed = false; var route = ranked[i].route; if (route.default) { default_ = { route, params: {}, uri }; continue; } var routeSegments = segmentize(route.path); var params = {}; var max = Math.max(uriSegments.length, routeSegments.length); var index = 0; for (; index < max; index++) { var routeSegment = routeSegments[index]; var uriSegment = uriSegments[index]; if (isSplat(routeSegment)) { var param = routeSegment.slice(1) || "*"; params[param] = uriSegments.slice(index).map(decodeURIComponent).join("/"); break; } if (uriSegment === void 0) { missed = true; break; } var dynamicMatch = paramRe.exec(routeSegment); if (dynamicMatch && !isRootUri) { !(reservedNames.indexOf(dynamicMatch[1]) === -1) && (0, import_browser$1.default)(false, " dynamic segment \"" + dynamicMatch[1] + "\" is a reserved name. Please use a different name in path \"" + route.path + "\"."); var value = decodeURIComponent(uriSegment); params[dynamicMatch[1]] = value; } else if (routeSegment !== uriSegment) { missed = true; break; } } if (!missed) { match = { route, params, uri: "/" + uriSegments.slice(0, index).join("/") }; break; } } return match || default_ || null; }; resolve$4 = function resolve(to, base) { if (startsWith(to, "/")) return to; var _to$split = to.split("?"); var toPathname = _to$split[0]; var toQuery = _to$split[1]; var basePathname = base.split("?")[0]; var toSegments = segmentize(toPathname); var baseSegments = segmentize(basePathname); if (toSegments[0] === "") return addQuery(basePathname, toQuery); if (!startsWith(toSegments[0], ".")) { var pathname = baseSegments.concat(toSegments).join("/"); return addQuery((basePathname === "/" ? "" : "/") + pathname, toQuery); } var allSegments = baseSegments.concat(toSegments); var segments = []; for (var i = 0, l = allSegments.length; i < l; i++) { var segment = allSegments[i]; if (segment === "..") segments.pop(); else if (segment !== ".") segments.push(segment); } return addQuery("/" + segments.join("/"), toQuery); }; insertParams = function insertParams(path, params) { var _path$split = path.split("?"); var pathBase = _path$split[0]; var _path$split$ = _path$split[1]; var query = _path$split$ === void 0 ? "" : _path$split$; var constructedPath = "/" + segmentize(pathBase).map(function(segment) { var match = paramRe.exec(segment); return match ? params[match[1]] : segment; }).join("/"); var _params$location = params.location; _params$location = _params$location === void 0 ? {} : _params$location; var _params$location$sear = _params$location.search; var searchSplit = (_params$location$sear === void 0 ? "" : _params$location$sear).split("?")[1] || ""; constructedPath = addQuery(constructedPath, query, searchSplit); return constructedPath; }; validateRedirect = function validateRedirect(from, to) { var filter = function filter(segment) { return isDynamic(segment); }; return segmentize(from).filter(filter).sort().join("/") === segmentize(to).filter(filter).sort().join("/"); }; paramRe = /^:(.+)/; SEGMENT_POINTS = 4; STATIC_POINTS = 3; DYNAMIC_POINTS = 2; SPLAT_PENALTY = 1; ROOT_POINTS = 1; isRootSegment = function isRootSegment(segment) { return segment === ""; }; isDynamic = function isDynamic(segment) { return paramRe.test(segment); }; isSplat = function isSplat(segment) { return segment && segment[0] === "*"; }; rankRoute = function rankRoute(route, index) { return { route, score: route.default ? 0 : segmentize(route.path).reduce(function(score, segment) { score += SEGMENT_POINTS; if (isRootSegment(segment)) score += ROOT_POINTS; else if (isDynamic(segment)) score += DYNAMIC_POINTS; else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY; else score += STATIC_POINTS; return score; }, 0), index }; }; rankRoutes = function rankRoutes(routes) { return routes.map(rankRoute).sort(function(a, b) { return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index; }); }; segmentize = function segmentize(uri) { return uri.replace(/(^\/+|\/+$)/g, "").split("/"); }; addQuery = function addQuery(pathname) { for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) query[_key - 1] = arguments[_key]; query = query.filter(function(q) { return q && q.length > 0; }); return pathname + (query && query.length > 0 ? "?" + query.join("&") : ""); }; reservedNames = ["uri", "path"]; shallowCompare = function shallowCompare(obj1, obj2) { var obj1Keys = Object.keys(obj1); return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function(key) { return obj2.hasOwnProperty(key) && obj1[key] === obj2[key]; }); }; })); //#endregion //#region node_modules/@reach/router/es/lib/history.js var _extends$3, getLocation, createHistory, createMemorySource, canUseDOM, globalHistory, navigate; var init_history = __esmMin((() => { _extends$3 = Object.assign || function(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key]; } return target; }; getLocation = function getLocation(source) { var _source$location = source.location; var search = _source$location.search; var hash = _source$location.hash; var href = _source$location.href; var origin = _source$location.origin; var protocol = _source$location.protocol; var host = _source$location.host; var hostname = _source$location.hostname; var port = _source$location.port; var pathname = source.location.pathname; if (!pathname && href && canUseDOM) pathname = new URL(href).pathname; return { pathname: encodeURI(decodeURI(pathname)), search, hash, href, origin, protocol, host, hostname, port, state: source.history.state, key: source.history.state && source.history.state.key || "initial" }; }; createHistory = function createHistory(source, options) { var listeners = []; var location = getLocation(source); var transitioning = false; var resolveTransition = function resolveTransition() {}; return { get location() { return location; }, get transitioning() { return transitioning; }, _onTransitionComplete: function _onTransitionComplete() { transitioning = false; resolveTransition(); }, listen: function listen(listener) { listeners.push(listener); var popstateListener = function popstateListener() { location = getLocation(source); listener({ location, action: "POP" }); }; source.addEventListener("popstate", popstateListener); return function() { source.removeEventListener("popstate", popstateListener); listeners = listeners.filter(function(fn) { return fn !== listener; }); }; }, navigate: function navigate(to) { var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; var state = _ref.state; var _ref$replace = _ref.replace; var replace = _ref$replace === void 0 ? false : _ref$replace; if (typeof to === "number") source.history.go(to); else { state = _extends$3({}, state, { key: Date.now() + "" }); try { if (transitioning || replace) source.history.replaceState(state, null, to); else source.history.pushState(state, null, to); } catch (e) { source.location[replace ? "replace" : "assign"](to); } } location = getLocation(source); transitioning = true; var transition = new Promise(function(res) { return resolveTransition = res; }); listeners.forEach(function(listener) { return listener({ location, action: "PUSH" }); }); return transition; } }; }; createMemorySource = function createMemorySource() { var initialPath = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "/"; var searchIndex = initialPath.indexOf("?"); var initialLocation = { pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath, search: searchIndex > -1 ? initialPath.substr(searchIndex) : "" }; var index = 0; var stack = [initialLocation]; var states = [null]; return { get location() { return stack[index]; }, addEventListener: function addEventListener(name, fn) {}, removeEventListener: function removeEventListener(name, fn) {}, history: { get entries() { return stack; }, get index() { return index; }, get state() { return states[index]; }, pushState: function pushState(state, _, uri) { var _uri$split = uri.split("?"); var pathname = _uri$split[0]; var _uri$split$ = _uri$split[1]; var search = _uri$split$ === void 0 ? "" : _uri$split$; index++; stack.push({ pathname, search: search.length ? "?" + search : search }); states.push(state); }, replaceState: function replaceState(state, _, uri) { var _uri$split2 = uri.split("?"); var pathname = _uri$split2[0]; var _uri$split2$ = _uri$split2[1]; stack[index] = { pathname, search: _uri$split2$ === void 0 ? "" : _uri$split2$ }; states[index] = state; }, go: function go(to) { var newIndex = index + to; if (newIndex < 0 || newIndex > states.length - 1) return; index = newIndex; } } }; }; canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement); globalHistory = createHistory(function getSource() { return canUseDOM ? window : createMemorySource(); }()); navigate = globalHistory.navigate; })); //#endregion //#region node_modules/@reach/router/es/index.js function _objectWithoutProperties$1(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); } function _possibleConstructorReturn$1(self, call) { if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits$2(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } function RedirectRequest(uri) { this.uri = uri; } var import_prop_types$88, import_browser, import_lib, _extends$2, createNamedContext, LocationContext, Location, LocationProvider, BaseContext, Router, RouterImpl, FocusContext, FocusHandler, initialRender, focusHandlerCount, FocusHandlerImpl, k$1, forwardRef$1, Link$10, isRedirect, redirectTo, RedirectImpl, Redirect, useLocation, useNavigate, stripSlashes, createRoute, shouldNavigate; var init_es$1 = __esmMin((() => { import_prop_types$88 = /* @__PURE__ */ __toESM(require_prop_types()); import_browser = /* @__PURE__ */ __toESM(require_browser()); import_lib = /* @__PURE__ */ __toESM(require_lib()); init_react_lifecycles_compat_es(); init_utils$6(); init_history(); _extends$2 = Object.assign || function(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key]; } return target; }; __name(_objectWithoutProperties$1, "_objectWithoutProperties"); __name(_classCallCheck$1, "_classCallCheck"); __name(_possibleConstructorReturn$1, "_possibleConstructorReturn"); __name(_inherits$2, "_inherits"); createNamedContext = function createNamedContext(name, defaultValue) { var Ctx = (0, import_lib.default)(defaultValue); Ctx.displayName = name; return Ctx; }; LocationContext = createNamedContext("Location"); Location = function Location(_ref) { var children = _ref.children; return react.default.createElement(LocationContext.Consumer, null, function(context) { return context ? children(context) : react.default.createElement(LocationProvider, null, children); }); }; LocationProvider = function(_React$Component) { _inherits$2(LocationProvider, _React$Component); function LocationProvider() { var _temp; var _this; var _ret; _classCallCheck$1(this, LocationProvider); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; return _ret = (_temp = (_this = _possibleConstructorReturn$1(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { context: _this.getContext(), refs: { unlisten: null } }, _temp), _possibleConstructorReturn$1(_this, _ret); } LocationProvider.prototype.getContext = function getContext() { var _props$history = this.props.history; return { navigate: _props$history.navigate, location: _props$history.location }; }; LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) { if (isRedirect(error)) { var _navigate = this.props.history.navigate; _navigate(error.uri, { replace: true }); } else throw error; }; LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) { if (prevState.context.location !== this.state.context.location) this.props.history._onTransitionComplete(); }; LocationProvider.prototype.componentDidMount = function componentDidMount() { var _this2 = this; var refs = this.state.refs; var history = this.props.history; history._onTransitionComplete(); refs.unlisten = history.listen(function() { Promise.resolve().then(function() { requestAnimationFrame(function() { if (!_this2.unmounted) _this2.setState(function() { return { context: _this2.getContext() }; }); }); }); }); }; LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() { var refs = this.state.refs; this.unmounted = true; refs.unlisten(); }; LocationProvider.prototype.render = function render() { var context = this.state.context; var children = this.props.children; return react.default.createElement(LocationContext.Provider, { value: context }, typeof children === "function" ? children(context) : children || null); }; return LocationProvider; }(react.default.Component); LocationProvider.defaultProps = { history: globalHistory }; LocationProvider.propTypes = { history: import_prop_types$88.default.object.isRequired }; BaseContext = createNamedContext("Base", { baseuri: "/", basepath: "/" }); Router = function Router(props) { return react.default.createElement(BaseContext.Consumer, null, function(baseContext) { return react.default.createElement(Location, null, function(locationContext) { return react.default.createElement(RouterImpl, _extends$2({}, baseContext, locationContext, props)); }); }); }; RouterImpl = function(_React$PureComponent) { _inherits$2(RouterImpl, _React$PureComponent); function RouterImpl() { _classCallCheck$1(this, RouterImpl); return _possibleConstructorReturn$1(this, _React$PureComponent.apply(this, arguments)); } RouterImpl.prototype.render = function render() { var _props = this.props; var location = _props.location; var _navigate2 = _props.navigate; var basepath = _props.basepath; var primary = _props.primary; var children = _props.children; _props.baseuri; var _props$component = _props.component; var component = _props$component === void 0 ? "div" : _props$component; var domProps = _objectWithoutProperties$1(_props, [ "location", "navigate", "basepath", "primary", "children", "baseuri", "component" ]); var routes = react.default.Children.toArray(children).reduce(function(array, child) { var routes = createRoute(basepath)(child); return array.concat(routes); }, []); var pathname = location.pathname; var match = pick(routes, pathname); if (match) { var params = match.params; var uri = match.uri; var route = match.route; var element = match.route.value; basepath = route.default ? basepath : route.path.replace(/\*$/, ""); var props = _extends$2({}, params, { uri, location, navigate: function navigate(to, options) { return _navigate2(resolve$4(to, uri), options); } }); var clone = react.default.cloneElement(element, props, element.props.children ? react.default.createElement(Router, { location, primary }, element.props.children) : void 0); var FocusWrapper = primary ? FocusHandler : component; var wrapperProps = primary ? _extends$2({ uri, location, component }, domProps) : domProps; return react.default.createElement(BaseContext.Provider, { value: { baseuri: uri, basepath } }, react.default.createElement(FocusWrapper, wrapperProps, clone)); } else return null; }; return RouterImpl; }(react.default.PureComponent); RouterImpl.defaultProps = { primary: true }; FocusContext = createNamedContext("Focus"); FocusHandler = function FocusHandler(_ref3) { var uri = _ref3.uri; var location = _ref3.location; var component = _ref3.component; var domProps = _objectWithoutProperties$1(_ref3, [ "uri", "location", "component" ]); return react.default.createElement(FocusContext.Consumer, null, function(requestFocus) { return react.default.createElement(FocusHandlerImpl, _extends$2({}, domProps, { component, requestFocus, uri, location })); }); }; initialRender = true; focusHandlerCount = 0; FocusHandlerImpl = function(_React$Component2) { _inherits$2(FocusHandlerImpl, _React$Component2); function FocusHandlerImpl() { var _temp2; var _this4; var _ret2; _classCallCheck$1(this, FocusHandlerImpl); for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2]; return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn$1(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function(node) { if (!_this4.state.shouldFocus && node) node.focus(); }, _temp2), _possibleConstructorReturn$1(_this4, _ret2); } FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) { if (prevState.uri == null) return _extends$2({ shouldFocus: true }, nextProps); else { var myURIChanged = nextProps.uri !== prevState.uri; var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri; return _extends$2({ shouldFocus: myURIChanged || navigatedUpToMe }, nextProps); } }; FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() { focusHandlerCount++; this.focus(); }; FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() { focusHandlerCount--; if (focusHandlerCount === 0) initialRender = true; }; FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) { if (prevProps.location !== this.props.location && this.state.shouldFocus) this.focus(); }; FocusHandlerImpl.prototype.focus = function focus() { var requestFocus = this.props.requestFocus; if (requestFocus) requestFocus(this.node); else if (initialRender) initialRender = false; else if (this.node) { if (!this.node.contains(document.activeElement)) this.node.focus(); } }; FocusHandlerImpl.prototype.render = function render() { var _this5 = this; var _props2 = this.props; _props2.children; var style = _props2.style; _props2.requestFocus; var _props2$component = _props2.component; var Comp = _props2$component === void 0 ? "div" : _props2$component; _props2.uri; _props2.location; var domProps = _objectWithoutProperties$1(_props2, [ "children", "style", "requestFocus", "component", "uri", "location" ]); return react.default.createElement(Comp, _extends$2({ style: _extends$2({ outline: "none" }, style), tabIndex: "-1", ref: function ref(n) { return _this5.node = n; } }, domProps), react.default.createElement(FocusContext.Provider, { value: this.requestFocus }, this.props.children)); }; return FocusHandlerImpl; }(react.default.Component); polyfill(FocusHandlerImpl); k$1 = function k() {}; forwardRef$1 = react.default.forwardRef; if (typeof forwardRef$1 === "undefined") forwardRef$1 = function forwardRef(C) { return C; }; Link$10 = forwardRef$1(function(_ref4, ref) { var innerRef = _ref4.innerRef; var props = _objectWithoutProperties$1(_ref4, ["innerRef"]); return react.default.createElement(BaseContext.Consumer, null, function(_ref5) { _ref5.basepath; var baseuri = _ref5.baseuri; return react.default.createElement(Location, null, function(_ref6) { var location = _ref6.location; var navigate = _ref6.navigate; var to = props.to; var state = props.state; var replace = props.replace; var _props$getProps = props.getProps; var getProps = _props$getProps === void 0 ? k$1 : _props$getProps; var anchorProps = _objectWithoutProperties$1(props, [ "to", "state", "replace", "getProps" ]); var href = resolve$4(to, baseuri); var encodedHref = encodeURI(href); var isCurrent = location.pathname === encodedHref; var isPartiallyCurrent = startsWith(location.pathname, encodedHref); return react.default.createElement("a", _extends$2({ ref: ref || innerRef, "aria-current": isCurrent ? "page" : void 0 }, anchorProps, getProps({ isCurrent, isPartiallyCurrent, href, location }), { href, onClick: function onClick(event) { if (anchorProps.onClick) anchorProps.onClick(event); if (shouldNavigate(event)) { event.preventDefault(); var shouldReplace = replace; if (typeof replace !== "boolean" && isCurrent) { var _location$state = _extends$2({}, location.state); _location$state.key; var restState = _objectWithoutProperties$1(_location$state, ["key"]); shouldReplace = shallowCompare(_extends$2({}, state), restState); } navigate(href, { state, replace: shouldReplace }); } } })); }); }); }); Link$10.displayName = "Link"; Link$10.propTypes = { to: import_prop_types$88.default.string.isRequired }; isRedirect = function isRedirect(o) { return o instanceof RedirectRequest; }; redirectTo = function redirectTo(to) { throw new RedirectRequest(to); }; RedirectImpl = function(_React$Component3) { _inherits$2(RedirectImpl, _React$Component3); function RedirectImpl() { _classCallCheck$1(this, RedirectImpl); return _possibleConstructorReturn$1(this, _React$Component3.apply(this, arguments)); } RedirectImpl.prototype.componentDidMount = function componentDidMount() { var _props3 = this.props; var navigate = _props3.navigate; var to = _props3.to; _props3.from; var _props3$replace = _props3.replace; var replace = _props3$replace === void 0 ? true : _props3$replace; var state = _props3.state; _props3.noThrow; var baseuri = _props3.baseuri; var props = _objectWithoutProperties$1(_props3, [ "navigate", "to", "from", "replace", "state", "noThrow", "baseuri" ]); Promise.resolve().then(function() { navigate(insertParams(resolve$4(to, baseuri), props), { replace, state }); }); }; RedirectImpl.prototype.render = function render() { var _props4 = this.props; _props4.navigate; var to = _props4.to; _props4.from; _props4.replace; _props4.state; var noThrow = _props4.noThrow; var baseuri = _props4.baseuri; var props = _objectWithoutProperties$1(_props4, [ "navigate", "to", "from", "replace", "state", "noThrow", "baseuri" ]); var resolvedTo = resolve$4(to, baseuri); if (!noThrow) redirectTo(insertParams(resolvedTo, props)); return null; }; return RedirectImpl; }(react.default.Component); Redirect = function Redirect(props) { return react.default.createElement(BaseContext.Consumer, null, function(_ref7) { var baseuri = _ref7.baseuri; return react.default.createElement(Location, null, function(locationContext) { return react.default.createElement(RedirectImpl, _extends$2({}, locationContext, { baseuri }, props)); }); }); }; Redirect.propTypes = { from: import_prop_types$88.default.string, to: import_prop_types$88.default.string.isRequired }; useLocation = function useLocation() { var context = (0, react.useContext)(LocationContext); if (!context) throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router"); return context.location; }; useNavigate = function useNavigate() { var context = (0, react.useContext)(LocationContext); if (!context) throw new Error("useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router"); return context.navigate; }; stripSlashes = function stripSlashes(str) { return str.replace(/(^\/+|\/+$)/g, ""); }; createRoute = function createRoute(basepath) { return function(element) { if (!element) return null; if (element.type === react.default.Fragment && element.props.children) return react.default.Children.map(element.props.children, createRoute(basepath)); !(element.props.path || element.props.default || element.type === Redirect) && (0, import_browser.default)(false, ": Children of must have a `path` or `default` prop, or be a ``. None found on element type `" + element.type + "`"); element.type === Redirect && (!element.props.from || !element.props.to) && (0, import_browser.default)(false, " requires both \"from\" and \"to\" props when inside a ."); element.type === Redirect && !validateRedirect(element.props.from, element.props.to) && (0, import_browser.default)(false, " has mismatched dynamic segments, ensure both paths have the exact same dynamic segments."); if (element.props.default) return { value: element, default: true }; var elementPath = element.type === Redirect ? element.props.from : element.props.path; var path = elementPath === "/" ? basepath : stripSlashes(basepath) + "/" + stripSlashes(elementPath); return { value: element, default: element.props.default, path: element.props.children ? stripSlashes(path) + "/*" : path }; }; }; shouldNavigate = function shouldNavigate(event) { return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); }; })); //#endregion //#region node_modules/reach-router-hash-history/index.js init_es$1(); function getHashPath() { const href = window.location.href; const hashIndex = href.indexOf("#"); return hashIndex === -1 ? "" : href.substring(hashIndex + 1); } function pushHashPath(path) { window.location.hash = "#" + path; } function replaceHashPath(path) { const hashIndex = window.location.href.indexOf("#"); window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + "#" + path); } var createHashSource = (initialPathname = "/") => { let index = 0; return { get location() { return { pathname: getHashPath(), search: "" }; }, addEventListener(name, fn) { if (name === "popstate") window.addEventListener("hashchange", fn); }, removeEventListener(name, fn) { if (name === "popstate") window.addEventListener("hashchange", fn); }, history: { get entries() { return [{ pathname: getHashPath(), search: "" }]; }, get index() { return index; }, get state() {}, pushState(state, _, uri) { pushHashPath(uri); }, replaceState(state, _, uri) { replaceHashPath(uri); } } }; }; //#endregion //#region node_modules/@babel/runtime/helpers/esm/extends.js function _extends$1() { return _extends$1 = Object.assign ? Object.assign.bind() : function(n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends$1.apply(null, arguments); } var init_extends = __esmMin((() => { __name(_extends$1, "_extends"); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var init_arrayLikeToArray = __esmMin((() => { __name(_arrayLikeToArray$5, "_arrayLikeToArray"); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray$5(r); } var init_arrayWithoutHoles = __esmMin((() => { init_arrayLikeToArray(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/iterableToArray.js function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } var init_iterableToArray = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(r, a); var t = {}.toString.call(r).slice(8, -1); 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$5(r, a) : void 0; } } var init_unsupportedIterableToArray = __esmMin((() => { init_arrayLikeToArray(); __name(_unsupportedIterableToArray$5, "_unsupportedIterableToArray"); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var init_nonIterableSpread = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/toConsumableArray.js function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray$5(r) || _nonIterableSpread(); } var init_toConsumableArray = __esmMin((() => { init_arrayWithoutHoles(); init_iterableToArray(); init_unsupportedIterableToArray(); init_nonIterableSpread(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/typeof.js function _typeof$1(o) { "@babel/helpers - typeof"; return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof$1(o); } var init_typeof$1 = __esmMin((() => { __name(_typeof$1, "_typeof"); })); //#endregion //#region app/assets/js/utils/utils.js var pxToRem, arrayToClassName, isOneOf, arrayToObjectByKey, htmlDecodeTextContent; var init_utils$5 = __esmMin((() => { init_typeof$1(); pxToRem = function pxToRem(pixels) { if (!pixels) return; else if ("string" !== typeof pixels) pixels = pixels.toString(); return pixels.split(" ").map(function(value) { return "".concat(value * .0625, "rem"); }).join(" "); }; arrayToClassName = function arrayToClassName(array, action) { return array.filter(function(item) { return "object" === _typeof$1(item) ? Object.entries(item)[0][1] : item; }).map(function(item) { var value = "object" === _typeof$1(item) ? Object.entries(item)[0][0] : item; return action ? action(value) : value; }).join(" "); }; isOneOf = function isOneOf(filetype, filetypeOptions) { return filetypeOptions.some(function(type) { return filetype.includes(type); }); }; arrayToObjectByKey = function arrayToObjectByKey(array, key) { var finalObject = {}; array.forEach(function(item) { return finalObject[item[key]] = item; }); return finalObject; }; htmlDecodeTextContent = function htmlDecodeTextContent(input) { return new DOMParser().parseFromString(input, "text/html").documentElement.textContent; }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/assets/js/ui/grid/grid.scss var init_grid$1 = __esmMin((() => {})); //#endregion //#region app/assets/js/ui/grid/grid.js function Grid$14(props) { var propsMap = { direction: "--direction{{ -VALUE }}", justify: "--justify{{ -VALUE }}", alignContent: "--align-content{{ -VALUE }}", alignItems: "--align-items{{ -VALUE }}", container: "-container", item: "-item", noWrap: "-container--no-wrap", wrapReverse: "-container--wrap-reverse", zeroMinWidth: "-item--zero-min-width", spacing: "-container--spacing", xs: "-item-xs{{ -VALUE }}", sm: "-item-sm{{ -VALUE }}", md: "-item-md{{ -VALUE }}", lg: "-item-lg{{ -VALUE }}", xl: "-item-xl{{ -VALUE }}", xxl: "-item-xxl{{ -VALUE }}" }; var getStyle = function getStyle() { return isValidPropValue(props.spacing) ? { "--grid-spacing-gutter": pxToRem(props.spacing) } : {}; }; var classes = [getBaseClassName(), props.className].concat(_toConsumableArray(getPropsClasses(propsMap, props))); return /*#__PURE__*/ react.default.createElement("div", { style: getStyle(), className: arrayToClassName(classes) }, props.children); } function getPropsClasses(propsMap, props) { var classes = []; for (var prop in propsMap) if (props[prop]) { var propValue = isValidPropValue(props[prop]) ? props[prop] : ""; classes.push(getBaseClassName() + renderPropValueBrackets(propsMap[prop], propValue)); } return classes; } function renderPropValueBrackets(propClass, propValue) { var brackets = propClass.match(/{{.*?}}/); if (brackets) { var bracketsValue = propValue ? brackets[0].replace(/[{ }]/g, "").replace(/value/i, propValue) : ""; propClass = propClass.replace(brackets[0], bracketsValue); } return propClass; } function getBaseClassName() { return "eps-grid"; } function isValidPropValue(propValue) { return propValue && "boolean" !== typeof propValue; } var import_prop_types$87; var init_grid = __esmMin((() => { import_prop_types$87 = /* @__PURE__ */ __toESM(require_prop_types()); init_toConsumableArray(); init_utils$5(); init_grid$1(); __name(Grid$14, "Grid"); Grid$14.propTypes = { className: import_prop_types$87.default.string, direction: import_prop_types$87.default.oneOf([ "row", "column", "row-reverse", "column-reverse" ]), justify: import_prop_types$87.default.oneOf([ "start", "center", "end", "space-between", "space-evenly", "space-around", "stretch" ]), alignContent: import_prop_types$87.default.oneOf([ "start", "center", "end", "space-between", "stretch" ]), alignItems: import_prop_types$87.default.oneOf([ "start", "center", "end", "baseline", "stretch" ]), container: import_prop_types$87.default.bool, item: import_prop_types$87.default.bool, noWrap: import_prop_types$87.default.bool, wrapReverse: import_prop_types$87.default.bool, zeroMinWidth: import_prop_types$87.default.bool, spacing: import_prop_types$87.default.number, xs: import_prop_types$87.default.oneOfType([import_prop_types$87.default.number, import_prop_types$87.default.bool]), sm: import_prop_types$87.default.oneOfType([import_prop_types$87.default.number, import_prop_types$87.default.bool]), md: import_prop_types$87.default.oneOfType([import_prop_types$87.default.number, import_prop_types$87.default.bool]), lg: import_prop_types$87.default.oneOfType([import_prop_types$87.default.number, import_prop_types$87.default.bool]), xl: import_prop_types$87.default.oneOfType([import_prop_types$87.default.number, import_prop_types$87.default.bool]), xxl: import_prop_types$87.default.oneOfType([import_prop_types$87.default.number, import_prop_types$87.default.bool]), children: import_prop_types$87.default.any.isRequired }; Grid$14.defaultProps = { className: "" }; })); //#endregion //#region app/assets/js/hooks/use-action.js function useAction() { return { backToDashboard: function backToDashboard() { if (window.top === window) window.top.location = elementorAppConfig.admin_url; else window.top.$e.run("app/close"); }, backToReferrer: function backToReferrer() { if (window.top === window) window.top.location = elementorAppConfig.return_url.includes(elementorAppConfig.login_url) ? elementorAppConfig.admin_url : elementorAppConfig.return_url; else window.top.$e.run("app/close"); } }; } var init_use_action = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/classCallCheck.js function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } var init_classCallCheck = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/toPrimitive.js function toPrimitive$1(t, r) { if ("object" != _typeof$1(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof$1(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var init_toPrimitive$1 = __esmMin((() => { init_typeof$1(); __name(toPrimitive$1, "toPrimitive"); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/toPropertyKey.js function toPropertyKey$1(t) { var i = toPrimitive$1(t, "string"); return "symbol" == _typeof$1(i) ? i : i + ""; } var init_toPropertyKey$1 = __esmMin((() => { init_typeof$1(); init_toPrimitive$1(); __name(toPropertyKey$1, "toPropertyKey"); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/createClass.js function _defineProperties$1(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey$1(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties$1(e.prototype, r), t && _defineProperties$1(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } var init_createClass = __esmMin((() => { init_toPropertyKey$1(); __name(_defineProperties$1, "_defineProperties"); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } var init_assertThisInitialized = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof$1(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } var init_possibleConstructorReturn = __esmMin((() => { init_typeof$1(); init_assertThisInitialized(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } var init_getPrototypeOf = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/superPropBase.js function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; } var init_superPropBase = __esmMin((() => { init_getPrototypeOf(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/get.js function _get() { return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function(e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); } var init_get = __esmMin((() => { init_superPropBase(); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } var init_setPrototypeOf = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/inherits.js function _inherits$1(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } var init_inherits = __esmMin((() => { init_setPrototypeOf(); __name(_inherits$1, "_inherits"); })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/defineProperty.js function _defineProperty$1(e, r, t) { return (r = toPropertyKey$1(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } var init_defineProperty$1 = __esmMin((() => { init_toPropertyKey$1(); __name(_defineProperty$1, "_defineProperty"); })); //#endregion //#region app/assets/js/ui/popover-dialog/popover-dialog.js function PopoverDialog(props) { var targetRef = props.targetRef; var offsetTop = props.offsetTop; var offsetLeft = props.offsetLeft; var wrapperClass = props.wrapperClass; var trigger = props.trigger; var hideAfter = props.hideAfter; var popoverRef = (0, react.useCallback)(function(popoverEl) { var target = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current; if (!target || !popoverEl) return; /** * Show Popover */ var showPopover = function showPopover() { popoverEl.style.display = "block"; popoverEl.setAttribute("aria-expanded", true); var targetRect = target.getBoundingClientRect(); var popoverRect = popoverEl.getBoundingClientRect(); var widthDifference = popoverRect.width - targetRect.width; popoverEl.style.top = targetRect.bottom + offsetTop + "px"; popoverEl.style.left = targetRect.left - widthDifference / 2 - offsetLeft + "px"; popoverEl.style.setProperty("--popover-arrow-offset-end", (popoverRect.width - 16) / 2 + "px"); }; /** * Hide Popover */ var hidePopover = function hidePopover() { popoverEl.style.display = "none"; popoverEl.setAttribute("aria-expanded", false); }; /** * Handle the Popover's hover functionality */ var handlePopoverHover = function handlePopoverHover() { var hideOnMouseOut = true; var timeOut = null; target.addEventListener("mouseover", function() { hideOnMouseOut = true; showPopover(); }); target.addEventListener("mouseleave", function() { timeOut = setTimeout(function() { if (hideOnMouseOut) { if ("block" === popoverEl.style.display) hidePopover(); } }, hideAfter); }); popoverEl.addEventListener("mouseover", function() { hideOnMouseOut = false; if (timeOut) { clearTimeout(timeOut); timeOut = null; } }); popoverEl.addEventListener("mouseleave", function() { timeOut = setTimeout(function() { if (hideOnMouseOut) { if ("block" === popoverEl.style.display) hidePopover(); } }, hideAfter); hideOnMouseOut = true; }); }; /** * Handle the Popover's click functionality */ var handlePopoverClick = function handlePopoverClick() { var popoverIsActive = false; target.addEventListener("click", function(e) { e.preventDefault(); e.stopPropagation(); if (popoverIsActive) { hidePopover(); popoverIsActive = false; } else { showPopover(); popoverIsActive = true; } }); popoverEl.addEventListener("click", function(e) { e.stopPropagation(); }); document.body.addEventListener("click", function() { if (popoverIsActive) { hidePopover(); popoverIsActive = false; } }); }; if ("hover" === trigger) handlePopoverHover(); else if ("click" === trigger) handlePopoverClick(); }, [targetRef]); var wrapperClasses = "e-app__popover"; if (wrapperClass) wrapperClasses += " " + wrapperClass; return /*#__PURE__*/ react.default.createElement("div", { className: wrapperClasses, ref: popoverRef }, props.children); } var import_prop_types$86; var init_popover_dialog = __esmMin((() => { import_prop_types$86 = /* @__PURE__ */ __toESM(require_prop_types()); PopoverDialog.propTypes = { targetRef: import_prop_types$86.default.oneOfType([import_prop_types$86.default.func, import_prop_types$86.default.shape({ current: import_prop_types$86.default.any })]).isRequired, trigger: import_prop_types$86.default.string, direction: import_prop_types$86.default.string, offsetTop: import_prop_types$86.default.oneOfType([import_prop_types$86.default.string, import_prop_types$86.default.number]), offsetLeft: import_prop_types$86.default.oneOfType([import_prop_types$86.default.string, import_prop_types$86.default.number]), wrapperClass: import_prop_types$86.default.string, children: import_prop_types$86.default.any, hideAfter: import_prop_types$86.default.number }; PopoverDialog.defaultProps = { direction: "bottom", trigger: "hover", offsetTop: 10, offsetLeft: 0, hideAfter: 300 }; })); //#endregion //#region node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } var init_objectWithoutPropertiesLoose = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js function _objectWithoutProperties(e, t) { if (null == e) return {}; var o; var r; var i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } var init_objectWithoutProperties = __esmMin((() => { init_objectWithoutPropertiesLoose(); })); //#endregion //#region app/assets/js/ui/atoms/icon.js var import_prop_types$85, _excluded$5, Icon$2; var init_icon = __esmMin((() => { import_prop_types$85 = /* @__PURE__ */ __toESM(require_prop_types()); init_extends(); init_objectWithoutProperties(); _excluded$5 = ["className"]; Icon$2 = (0, react.forwardRef)(function(props, ref) { var className = props.className; var rest = _objectWithoutProperties(props, _excluded$5); return /*#__PURE__*/ react.default.createElement("i", _extends$1({ ref, className: "eps-icon ".concat(className) }, rest)); }); Icon$2.propTypes = { className: import_prop_types$85.default.string.isRequired }; Icon$2.defaultProps = { className: "" }; })); //#endregion //#region app/assets/js/ui/molecules/button.js function _callSuper$18(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$19() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct$19() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$19 = function _isNativeReflectConstruct() { return !!t; })(); } var import_prop_types$84, Button$30; var init_button$1 = __esmMin((() => { import_prop_types$84 = /* @__PURE__ */ __toESM(require_prop_types()); init_extends(); init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); init_defineProperty$1(); init_popover_dialog(); init_icon(); __name(_callSuper$18, "_callSuper"); __name(_isNativeReflectConstruct$19, "_isNativeReflectConstruct"); Button$30 = /*#__PURE__*/ function(_React$Component) { function Button() { _classCallCheck(this, Button); return _callSuper$18(this, Button, arguments); } _inherits$1(Button, _React$Component); return _createClass(Button, [ { key: "getCssId", value: function getCssId() { return this.props.id; } }, { key: "getClassName", value: function getClassName() { var baseClassName = "eps-button"; return [baseClassName, this.props.className].concat(this.getStylePropsClasses(baseClassName)).filter(function(classItem) { return "" !== classItem; }).join(" "); } }, { key: "getStylePropsClasses", value: function getStylePropsClasses(baseClassName) { var _this = this; var styleProps = [ "color", "size", "variant" ]; var stylePropClasses = []; styleProps.forEach(function(styleProp) { var stylePropValue = _this.props[styleProp]; if (stylePropValue) stylePropClasses.push(baseClassName + "--" + stylePropValue); }); return stylePropClasses; } }, { key: "getIcon", value: function getIcon() { if (this.props.icon) { var iconRef = react.default.createRef(null); var tooltip = this.props.tooltip || this.props.text; var icon = /*#__PURE__*/ react.default.createElement(Icon$2, { ref: iconRef, className: this.props.icon, "aria-hidden": "true" }); var screenReaderText = ""; if (this.props.hideText) screenReaderText = /*#__PURE__*/ react.default.createElement("span", { className: "sr-only" }, tooltip); return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, icon, screenReaderText, this.props.tooltip && /*#__PURE__*/ react.default.createElement(PopoverDialog, { targetRef: iconRef, wrapperClass: "e-kit-library__tooltip" }, this.props.tooltip)); } return ""; } }, { key: "getText", value: function getText() { return this.props.hideText ? "" : /*#__PURE__*/ react.default.createElement("span", null, this.props.text); } }, { key: "render", value: function render() { var attributes = {}; var id = this.getCssId(); var className = this.getClassName(); if (id) attributes.id = id; if (className) attributes.className = className; if (this.props.onClick) attributes.onClick = this.props.onClick; if (this.props.rel) attributes.rel = this.props.rel; if (this.props.elRef) attributes.ref = this.props.elRef; var buttonContent = /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, this.getIcon(), this.getText()); if (this.props.url) { if (0 === this.props.url.indexOf("http")) return /*#__PURE__*/ react.default.createElement("a", _extends$1({ href: this.props.url, target: this.props.target }, attributes), buttonContent); attributes.getProps = function(props) { if (props.isCurrent) attributes.className += " active"; return { className: attributes.className }; }; return /*#__PURE__*/ react.default.createElement(LocationProvider, { history: _elementor_router.default.appHistory }, /*#__PURE__*/ react.default.createElement(Link$10, _extends$1({ to: this.props.url }, attributes), buttonContent)); } return /*#__PURE__*/ react.default.createElement("div", attributes, buttonContent); } } ]); }(react.default.Component); _defineProperty$1(Button$30, "propTypes", { text: import_prop_types$84.default.string.isRequired, hideText: import_prop_types$84.default.bool, icon: import_prop_types$84.default.string, tooltip: import_prop_types$84.default.string, id: import_prop_types$84.default.string, className: import_prop_types$84.default.string, url: import_prop_types$84.default.string, onClick: import_prop_types$84.default.func, variant: import_prop_types$84.default.oneOf([ "contained", "underlined", "outlined", "" ]), color: import_prop_types$84.default.oneOf([ "primary", "secondary", "cta", "link", "disabled" ]), size: import_prop_types$84.default.oneOf([ "sm", "md", "lg" ]), target: import_prop_types$84.default.string, rel: import_prop_types$84.default.string, elRef: import_prop_types$84.default.object }); _defineProperty$1(Button$30, "defaultProps", { id: "", className: "", variant: "", target: "_parent" }); })); //#endregion //#region app/assets/js/layout/header-button.js function _callSuper$17(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$18() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct$18() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$18 = function _isNativeReflectConstruct() { return !!t; })(); } function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function(t) { return p.apply(e, t); } : p; } var Button$29; var init_header_button = __esmMin((() => { init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_get(); init_inherits(); init_defineProperty$1(); init_button$1(); __name(_callSuper$17, "_callSuper"); __name(_isNativeReflectConstruct$18, "_isNativeReflectConstruct"); Button$29 = /*#__PURE__*/ function(_BaseButton) { function Button() { _classCallCheck(this, Button); return _callSuper$17(this, Button, arguments); } _inherits$1(Button, _BaseButton); return _createClass(Button, [{ key: "getCssId", value: function getCssId() { return "eps-app-header-btn-" + _superPropGet(Button, "getCssId", this, 3)([]); } }, { key: "getClassName", value: function getClassName() { if (!this.props.includeHeaderBtnClass) return _superPropGet(Button, "getClassName", this, 3)([]); return "eps-app__header-btn " + _superPropGet(Button, "getClassName", this, 3)([]); } }]); }(Button$30); _defineProperty$1(Button$29, "defaultProps", Object.assign({}, Button$30.defaultProps, { hideText: true, includeHeaderBtnClass: true })); })); //#endregion //#region app/assets/js/layout/header-buttons.js function HeaderButtons(props) { var action = useAction(); var actionOnClose = function actionOnClose() { if (props.onClose) props.onClose(); else action.backToDashboard(); }; var tools = ""; if (props.buttons.length) { var buttons = props.buttons.map(function(button) { return /*#__PURE__*/ react.default.createElement(Button$29, _extends$1({ key: button.id }, button)); }); tools = /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, buttons); } return /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__header-buttons" }, /*#__PURE__*/ react.default.createElement(Button$29, { text: (0, _wordpress_i18n.__)("Close", "elementor"), icon: "eicon-close", className: "eps-app__close-button", onClick: actionOnClose }), tools); } var import_prop_types$83; var init_header_buttons = __esmMin((() => { import_prop_types$83 = /* @__PURE__ */ __toESM(require_prop_types()); init_extends(); init_use_action(); init_header_button(); HeaderButtons.propTypes = { buttons: import_prop_types$83.default.arrayOf(import_prop_types$83.default.object), onClose: import_prop_types$83.default.func }; HeaderButtons.defaultProps = { buttons: [] }; })); //#endregion //#region app/assets/js/hooks/use-page-title.js function usePageTitle(_ref) { var title = _ref.title; var prefix = _ref.prefix; var prefixRef = (0, react.useRef)(prefix); (0, react.useEffect)(function() { if (!prefix) prefixRef.current = (0, _wordpress_i18n.__)("Elementor", "elementor"); document.title = "".concat(prefixRef.current, " | ").concat(title); }, [title, prefix]); } var init_use_page_title = __esmMin((() => {})); //#endregion //#region app/assets/js/layout/header.js var import_prop_types$82 = /* @__PURE__ */ __toESM(require_prop_types()); init_extends(); init_grid(); init_header_buttons(); init_use_page_title(); function Header$2(props) { usePageTitle({ title: props.title }); var TitleTag = "span"; var titleAttrs = {}; if (props.titleRedirectRoute) { TitleTag = "a"; titleAttrs = { href: "#".concat(props.titleRedirectRoute), target: "_self" }; } return /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, alignItems: "center", justify: "space-between", className: "eps-app__header" }, /*#__PURE__*/ react.default.createElement(TitleTag, _extends$1({ className: "eps-app__logo-title-wrapper" }, titleAttrs), /*#__PURE__*/ react.default.createElement("i", { className: "eps-app__logo eicon-elementor-circle" }), /*#__PURE__*/ react.default.createElement("h1", { className: "eps-app__title" }, props.title)), /*#__PURE__*/ react.default.createElement(HeaderButtons, { buttons: props.buttons, onClose: props.onClose })); } __name(Header$2, "Header"); Header$2.propTypes = { title: import_prop_types$82.default.string, titleRedirectRoute: import_prop_types$82.default.string, buttons: import_prop_types$82.default.arrayOf(import_prop_types$82.default.object), onClose: import_prop_types$82.default.func }; Header$2.defaultProps = { buttons: [] }; //#endregion //#region app/assets/js/layout/sidebar.js function Sidebar(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__sidebar" }, props.children); } var import_prop_types$81; var init_sidebar = __esmMin((() => { import_prop_types$81 = /* @__PURE__ */ __toESM(require_prop_types()); Sidebar.propTypes = { children: import_prop_types$81.default.object }; })); //#endregion //#region app/assets/js/layout/content.js function Content(props) { return /*#__PURE__*/ react.default.createElement("main", { className: "eps-app__content ".concat(props.className) }, props.children); } var import_prop_types$80; var init_content = __esmMin((() => { import_prop_types$80 = /* @__PURE__ */ __toESM(require_prop_types()); Content.propTypes = { children: import_prop_types$80.default.any, className: import_prop_types$80.default.string }; Content.defaultProps = { className: "" }; })); //#endregion //#region app/assets/js/layout/footer.js init_sidebar(); init_content(); function Footer$1(props) { return /*#__PURE__*/ react.default.createElement("footer", { className: "eps-app__footer" }, props.children); } __name(Footer$1, "Footer"); Footer$1.propTypes = { children: import_prop_types$82.default.object }; //#endregion //#region app/assets/js/layout/page.js function Page(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__lightbox ".concat(props.className) }, /*#__PURE__*/ react.default.createElement("div", { className: "eps-app" }, /*#__PURE__*/ react.default.createElement(Header$2, { title: props.title, buttons: props.headerButtons, titleRedirectRoute: props.titleRedirectRoute, onClose: props.onClose }), /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__main" }, function AppSidebar() { if (!props.sidebar) return; return /*#__PURE__*/ react.default.createElement(Sidebar, null, props.sidebar); }(), /*#__PURE__*/ react.default.createElement(Content, null, props.content)), function AppFooter() { if (!props.footer) return; return /*#__PURE__*/ react.default.createElement(Footer$1, null, props.footer); }())); } Page.propTypes = { title: import_prop_types$82.default.string, titleRedirectRoute: import_prop_types$82.default.string, className: import_prop_types$82.default.string, headerButtons: import_prop_types$82.default.arrayOf(import_prop_types$82.default.object), sidebar: import_prop_types$82.default.object, content: import_prop_types$82.default.object.isRequired, footer: import_prop_types$82.default.object, onClose: import_prop_types$82.default.func }; Page.defaultProps = { className: "" }; //#endregion //#region app/assets/js/pages/not-found.js function NotFound() { var config = { title: (0, _wordpress_i18n.__)("Not Found", "elementor"), className: "eps-app__not-found", content: /*#__PURE__*/ react.default.createElement("h1", null, " ", (0, _wordpress_i18n.__)("Not Found", "elementor"), " "), sidebar: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null) }; return /*#__PURE__*/ react.default.createElement(Page, config); } //#endregion //#region app/assets/js/url-actions/actions-map.js var actions_map_default = { "import-kit": "/import/process" }; //#endregion //#region app/assets/js/pages/index.js init_es$1(); function Index$5() { var _elementorAppConfig$m; var urlSearchParams = new URLSearchParams(window.location.search); var url = actions_map_default[Object.fromEntries(urlSearchParams.entries()).action] || ((_elementorAppConfig$m = elementorAppConfig.menu_url.split("#")) === null || _elementorAppConfig$m === void 0 ? void 0 : _elementorAppConfig$m[1]); return /*#__PURE__*/ react.default.createElement(Redirect, { to: url || "/not-found", noThrow: true }); } __name(Index$5, "Index"); //#endregion //#region app/assets/js/ui/dialog/dialog-wrapper.js function DialogWrapper(props) { var WrapperTag = "div"; if (props.onSubmit) WrapperTag = "form"; return /*#__PURE__*/ react.default.createElement("section", { className: "eps-modal__overlay" }, /*#__PURE__*/ react.default.createElement(WrapperTag, { className: "eps-modal eps-dialog", onSubmit: props.onSubmit }, props.onClose && /*#__PURE__*/ react.default.createElement(Button$30, { onClick: props.onClose, text: (0, _wordpress_i18n.__)("Close", "elementor"), hideText: true, icon: "eicon-close", className: "eps-dialog__close-button" }), props.children)); } var import_prop_types$79; var init_dialog_wrapper = __esmMin((() => { import_prop_types$79 = /* @__PURE__ */ __toESM(require_prop_types()); init_button$1(); DialogWrapper.propTypes = { onClose: import_prop_types$79.default.func, onSubmit: import_prop_types$79.default.func, children: import_prop_types$79.default.any }; })); //#endregion //#region app/assets/js/ui/dialog/dialog-content.js function DialogContent$4(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "eps-dialog__content" }, props.children); } var import_prop_types$78; var init_dialog_content = __esmMin((() => { import_prop_types$78 = /* @__PURE__ */ __toESM(require_prop_types()); __name(DialogContent$4, "DialogContent"); DialogContent$4.propTypes = { children: import_prop_types$78.default.any }; })); //#endregion //#region app/assets/js/ui/atoms/heading.js function Heading$11(props) { var baseClassName = "eps"; var classes = [props.className]; if (props.variant) classes.push(baseClassName + "-" + props.variant); return /*#__PURE__*/ react.default.createElement(function Element() { return react.default.createElement(props.tag, { className: arrayToClassName(classes) }, props.children); }, null); } var import_prop_types$77; var init_heading = __esmMin((() => { import_prop_types$77 = /* @__PURE__ */ __toESM(require_prop_types()); init_utils$5(); __name(Heading$11, "Heading"); Heading$11.propTypes = { className: import_prop_types$77.default.string, children: import_prop_types$77.default.oneOfType([ import_prop_types$77.default.string, import_prop_types$77.default.object, import_prop_types$77.default.arrayOf(import_prop_types$77.default.object) ]).isRequired, tag: import_prop_types$77.default.oneOf([ "h1", "h2", "h3", "h4", "h5", "h6" ]), variant: import_prop_types$77.default.oneOf([ "display-1", "display-2", "display-3", "display-4", "h1", "h2", "h3", "h4", "h5", "h6" ]).isRequired }; Heading$11.defaultProps = { className: "", tag: "h1" }; })); //#endregion //#region app/assets/js/ui/dialog/dialog-title.js function ownKeys$46(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; } function _objectSpread$45(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$46(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$46(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function DialogTitle$3(props) { return /*#__PURE__*/ react.default.createElement(Heading$11, _extends$1({}, props, { className: "eps-dialog__title ".concat(props.className) })); } var import_prop_types$76; var init_dialog_title = __esmMin((() => { import_prop_types$76 = /* @__PURE__ */ __toESM(require_prop_types()); init_defineProperty$1(); init_extends(); init_heading(); __name(ownKeys$46, "ownKeys"); __name(_objectSpread$45, "_objectSpread"); __name(DialogTitle$3, "DialogTitle"); DialogTitle$3.propTypes = _objectSpread$45(_objectSpread$45({}, Heading$11.propTypes), {}, { className: import_prop_types$76.default.string }); DialogTitle$3.defaultProps = _objectSpread$45(_objectSpread$45({}, Heading$11.propTypes), {}, { variant: "h3", tag: "h3", className: "" }); })); //#endregion //#region app/assets/js/ui/atoms/text.js function Text$11(props) { var baseClassName = "eps"; var classes = [props.className]; var variant = props.variant && "md" !== props.variant ? "-" + props.variant : ""; classes.push(baseClassName + "-text" + variant); return /*#__PURE__*/ react.default.createElement(function Element() { return react.default.createElement(props.tag, { className: arrayToClassName(classes) }, props.children); }, null); } var import_prop_types$75; var init_text = __esmMin((() => { import_prop_types$75 = /* @__PURE__ */ __toESM(require_prop_types()); init_utils$5(); __name(Text$11, "Text"); Text$11.propTypes = { className: import_prop_types$75.default.string, variant: import_prop_types$75.default.oneOf([ "xl", "lg", "md", "sm", "xs", "xxs" ]), tag: import_prop_types$75.default.string, children: import_prop_types$75.default.any.isRequired }; Text$11.defaultProps = { className: "", tag: "p" }; })); //#endregion //#region app/assets/js/ui/dialog/dialog-text.js function ownKeys$45(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; } function _objectSpread$44(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$45(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$45(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function DialogText(props) { return /*#__PURE__*/ react.default.createElement(Text$11, _extends$1({ variant: "xs" }, props, { className: "eps-dialog__text ".concat(props.className) })); } var init_dialog_text = __esmMin((() => { init_defineProperty$1(); init_extends(); init_text(); __name(ownKeys$45, "ownKeys"); __name(_objectSpread$44, "_objectSpread"); DialogText.propTypes = _objectSpread$44({}, Text$11.propTypes); DialogText.defaultProps = _objectSpread$44(_objectSpread$44({}, Text$11.defaultProps), {}, { tag: "p", variant: "sm" }); })); //#endregion //#region app/assets/js/ui/dialog/dialog-actions.js function DialogActions$4(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "eps-dialog__buttons" }, props.children); } var import_prop_types$74; var init_dialog_actions = __esmMin((() => { import_prop_types$74 = /* @__PURE__ */ __toESM(require_prop_types()); __name(DialogActions$4, "DialogActions"); DialogActions$4.propTypes = { children: import_prop_types$74.default.any }; })); //#endregion //#region app/assets/js/ui/dialog/dialog-button.js function ownKeys$44(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; } function _objectSpread$43(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$44(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$44(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function DialogButton(props) { return /*#__PURE__*/ react.default.createElement(Button$30, _extends$1({}, props, { className: "eps-dialog__button ".concat(props.className) })); } var import_prop_types$73; var init_dialog_button = __esmMin((() => { import_prop_types$73 = /* @__PURE__ */ __toESM(require_prop_types()); init_defineProperty$1(); init_extends(); init_button$1(); __name(ownKeys$44, "ownKeys"); __name(_objectSpread$43, "_objectSpread"); DialogButton.propTypes = _objectSpread$43(_objectSpread$43({}, Button$30.propTypes), {}, { tabIndex: import_prop_types$73.default.string, type: import_prop_types$73.default.string }); DialogButton.defaultProps = _objectSpread$43(_objectSpread$43({}, Button$30.defaultProps), {}, { tabIndex: "0", type: "button" }); })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/assets/js/ui/dialog/dialog.scss var init_dialog$1 = __esmMin((() => {})); //#endregion //#region app/assets/js/ui/dialog/dialog.js function Dialog$9(props) { return /*#__PURE__*/ react.default.createElement(DialogWrapper, { onSubmit: props.onSubmit, onClose: props.onClose }, /*#__PURE__*/ react.default.createElement(DialogContent$4, null, props.title && /*#__PURE__*/ react.default.createElement(DialogTitle$3, null, props.title), props.text && /*#__PURE__*/ react.default.createElement(DialogText, null, props.text), props.children), /*#__PURE__*/ react.default.createElement(DialogActions$4, null, /*#__PURE__*/ react.default.createElement(DialogButton, { key: "dismiss", text: props.dismissButtonText, onClick: props.dismissButtonOnClick, url: props.dismissButtonUrl, target: props.dismissButtonTarget, tabIndex: "2" }), /*#__PURE__*/ react.default.createElement(DialogButton, { key: "approve", text: props.approveButtonText, onClick: props.approveButtonOnClick, url: props.approveButtonUrl, target: props.approveButtonTarget, color: props.approveButtonColor, elRef: props.approveButtonRef, tabIndex: "1" }))); } var import_prop_types$72; var init_dialog = __esmMin((() => { import_prop_types$72 = /* @__PURE__ */ __toESM(require_prop_types()); init_dialog_wrapper(); init_dialog_content(); init_dialog_title(); init_dialog_text(); init_dialog_actions(); init_dialog_button(); init_dialog$1(); __name(Dialog$9, "Dialog"); Dialog$9.propTypes = { title: import_prop_types$72.default.any, text: import_prop_types$72.default.any, children: import_prop_types$72.default.any, onSubmit: import_prop_types$72.default.func, onClose: import_prop_types$72.default.func, dismissButtonText: import_prop_types$72.default.string.isRequired, dismissButtonOnClick: import_prop_types$72.default.func, dismissButtonUrl: import_prop_types$72.default.string, dismissButtonTarget: import_prop_types$72.default.string, approveButtonText: import_prop_types$72.default.string.isRequired, approveButtonOnClick: import_prop_types$72.default.func, approveButtonUrl: import_prop_types$72.default.string, approveButtonColor: import_prop_types$72.default.string, approveButtonTarget: import_prop_types$72.default.string, approveButtonRef: import_prop_types$72.default.object }; Dialog$9.defaultProps = {}; Dialog$9.Wrapper = DialogWrapper; Dialog$9.Content = DialogContent$4; Dialog$9.Title = DialogTitle$3; Dialog$9.Text = DialogText; Dialog$9.Actions = DialogActions$4; Dialog$9.Button = DialogButton; })); //#endregion //#region app/assets/js/organisms/error-boundary.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); init_defineProperty$1(); init_dialog(); function _callSuper$16(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$17() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$16, "_callSuper"); function _isNativeReflectConstruct$17() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$17 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$17, "_isNativeReflectConstruct"); var ErrorBoundary = /*#__PURE__*/ function(_React$Component) { function ErrorBoundary(props) { var _this; _classCallCheck(this, ErrorBoundary); _this = _callSuper$16(this, ErrorBoundary, [props]); _this.state = { hasError: null }; return _this; } _inherits$1(ErrorBoundary, _React$Component); return _createClass(ErrorBoundary, [{ key: "goBack", value: function goBack() { if (window.top !== window.self) window.top.$e.run("app/close"); window.location = elementorAppConfig.return_url; } }, { key: "render", value: function render() { if (this.state.hasError) return /*#__PURE__*/ react.default.createElement(Dialog$9, { title: this.props.title, text: this.props.text, approveButtonUrl: this.props.learnMoreUrl, approveButtonColor: "link", approveButtonTarget: "_blank", approveButtonText: (0, _wordpress_i18n.__)("Learn More", "elementor"), dismissButtonText: (0, _wordpress_i18n.__)("Go Back", "elementor"), dismissButtonOnClick: this.goBack }); return this.props.children; } }], [{ key: "getDerivedStateFromError", value: function getDerivedStateFromError() { return { hasError: true }; } }]); }(react.default.Component); _defineProperty$1(ErrorBoundary, "propTypes", { children: import_prop_types$82.default.any, title: import_prop_types$82.default.string, text: import_prop_types$82.default.string, learnMoreUrl: import_prop_types$82.default.string }); _defineProperty$1(ErrorBoundary, "defaultProps", { title: (0, _wordpress_i18n.__)("App could not be loaded", "elementor"), text: (0, _wordpress_i18n.__)("We’re sorry, but something went wrong. Click on ‘Learn more’ and follow each of the steps to quickly solve it.", "elementor"), learnMoreUrl: "https://go.elementor.com/app-general-load-issue/" }); //#endregion //#region node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } var init_arrayWithHoles = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e; var n; var i; var u; var a = []; var f = !0; var o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } var init_iterableToArrayLimit = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/nonIterableRest.js function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var init_nonIterableRest = __esmMin((() => {})); //#endregion //#region node_modules/@babel/runtime/helpers/esm/slicedToArray.js function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray$5(r, e) || _nonIterableRest(); } var init_slicedToArray = __esmMin((() => { init_arrayWithHoles(); init_iterableToArrayLimit(); init_unsupportedIterableToArray(); init_nonIterableRest(); })); //#endregion //#region app/assets/js/app-context.js init_slicedToArray(); var AppContext = react.default.createContext(); function AppProvider(props) { var _useState2 = _slicedToArray((0, react.useState)({ isDarkMode: document.body.classList.contains("eps-theme-dark") }), 2); var state = _useState2[0]; var setState = _useState2[1]; return /*#__PURE__*/ react.default.createElement(AppContext.Provider, { value: { state, setState } }, props.children); } AppProvider.propTypes = { children: import_prop_types$82.default.object.isRequired }; //#endregion //#region node_modules/styled-components/node_modules/tslib/tslib.es6.mjs var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) { for (var i = 0, l = from.length, ar; i < l; i++) if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); } //#endregion //#region node_modules/styled-components/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js function memoize(fn) { var cache = Object.create(null); return function(arg) { if (cache[arg] === void 0) cache[arg] = fn(arg); return cache[arg]; }; } //#endregion //#region node_modules/styled-components/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; var isPropValid = /* #__PURE__ */ memoize(function(prop) { return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91; }); //#endregion //#region node_modules/shallowequal/index.js var require_shallowequal = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = function shallowEqual(objA, objB, compare, compareContext) { var ret = compare ? compare.call(compareContext, objA, objB) : void 0; if (ret !== void 0) return !!ret; if (objA === objB) return true; if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) return false; var keysA = Object.keys(objA); var keysB = Object.keys(objB); if (keysA.length !== keysB.length) return false; var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); for (var idx = 0; idx < keysA.length; idx++) { var key = keysA[idx]; if (!bHasOwnProperty(key)) return false; var valueA = objA[key]; var valueB = objB[key]; ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0; if (ret === false || ret === void 0 && valueA !== valueB) return false; } return true; }; })); //#endregion //#region node_modules/styled-components/node_modules/stylis/src/Enum.js var MS = "-ms-"; var MOZ = "-moz-"; var WEBKIT = "-webkit-"; var COMMENT = "comm"; var RULESET = "rule"; var DECLARATION = "decl"; var IMPORT = "@import"; var KEYFRAMES = "@keyframes"; var LAYER = "@layer"; //#endregion //#region node_modules/styled-components/node_modules/stylis/src/Utility.js /** * @param {number} * @return {number} */ var abs = Math.abs; /** * @param {number} * @return {string} */ var from = String.fromCharCode; /** * @param {object} * @return {object} */ var assign = Object.assign; /** * @param {string} value * @param {number} length * @return {number} */ function hash(value, length) { return charat(value, 0) ^ 45 ? (((length << 2 ^ charat(value, 0)) << 2 ^ charat(value, 1)) << 2 ^ charat(value, 2)) << 2 ^ charat(value, 3) : 0; } /** * @param {string} value * @return {string} */ function trim(value) { return value.trim(); } /** * @param {string} value * @param {RegExp} pattern * @return {string?} */ function match(value, pattern) { return (value = pattern.exec(value)) ? value[0] : value; } /** * @param {string} value * @param {(string|RegExp)} pattern * @param {string} replacement * @return {string} */ function replace(value, pattern, replacement) { return value.replace(pattern, replacement); } /** * @param {string} value * @param {string} search * @param {number} position * @return {number} */ function indexof(value, search, position) { return value.indexOf(search, position); } /** * @param {string} value * @param {number} index * @return {number} */ function charat(value, index) { return value.charCodeAt(index) | 0; } /** * @param {string} value * @param {number} begin * @param {number} end * @return {string} */ function substr(value, begin, end) { return value.slice(begin, end); } /** * @param {string} value * @return {number} */ function strlen(value) { return value.length; } /** * @param {any[]} value * @return {number} */ function sizeof(value) { return value.length; } /** * @param {any} value * @param {any[]} array * @return {any} */ function append(value, array) { return array.push(value), value; } /** * @param {string[]} array * @param {function} callback * @return {string} */ function combine(array, callback) { return array.map(callback).join(""); } /** * @param {string[]} array * @param {RegExp} pattern * @return {string[]} */ function filter(array, pattern) { return array.filter(function(value) { return !match(value, pattern); }); } //#endregion //#region node_modules/styled-components/node_modules/stylis/src/Tokenizer.js var line = 1; var column = 1; var length = 0; var position = 0; var character = 0; var characters = ""; /** * @param {string} value * @param {object | null} root * @param {object | null} parent * @param {string} type * @param {string[] | string} props * @param {object[] | string} children * @param {object[]} siblings * @param {number} length */ function node$2(value, root, parent, type, props, children, length, siblings) { return { value, root, parent, type, props, children, line, column, length, return: "", siblings }; } __name(node$2, "node"); /** * @param {object} root * @param {object} props * @return {object} */ function copy(root, props) { return assign(node$2("", null, null, "", null, null, 0, root.siblings), root, { length: -root.length }, props); } /** * @param {object} root */ function lift(root) { while (root.root) root = copy(root.root, { children: [root] }); append(root, root.siblings); } /** * @return {number} */ function char() { return character; } /** * @return {number} */ function prev() { character = position > 0 ? charat(characters, --position) : 0; if (column--, character === 10) column = 1, line--; return character; } /** * @return {number} */ function next() { character = position < length ? charat(characters, position++) : 0; if (column++, character === 10) column = 1, line++; return character; } /** * @return {number} */ function peek() { return charat(characters, position); } /** * @return {number} */ function caret() { return position; } /** * @param {number} begin * @param {number} end * @return {string} */ function slice$1(begin, end) { return substr(characters, begin, end); } __name(slice$1, "slice"); /** * @param {number} type * @return {number} */ function token(type) { switch (type) { case 0: case 9: case 10: case 13: case 32: return 5; case 33: case 43: case 44: case 47: case 62: case 64: case 126: case 59: case 123: case 125: return 4; case 58: return 3; case 34: case 39: case 40: case 91: return 2; case 41: case 93: return 1; } return 0; } /** * @param {string} value * @return {any[]} */ function alloc(value) { return line = column = 1, length = strlen(characters = value), position = 0, []; } /** * @param {any} value * @return {any} */ function dealloc(value) { return characters = "", value; } /** * @param {number} type * @return {string} */ function delimit(type) { return trim(slice$1(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type))); } /** * @param {number} type * @return {string} */ function whitespace(type) { while (character = peek()) if (character < 33) next(); else break; return token(type) > 2 || token(character) > 3 ? "" : " "; } /** * @param {number} index * @param {number} count * @return {string} */ function escaping(index, count) { while (--count && next()) if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97) break; return slice$1(index, caret() + (count < 6 && peek() == 32 && next() == 32)); } /** * @param {number} type * @return {number} */ function delimiter(type) { while (next()) switch (character) { case type: return position; case 34: case 39: if (type !== 34 && type !== 39) delimiter(character); break; case 40: if (type === 41) delimiter(type); break; case 92: next(); break; } return position; } /** * @param {number} type * @param {number} index * @return {number} */ function commenter(type, index) { while (next()) if (type + character === 57) break; else if (type + character === 84 && peek() === 47) break; return "/*" + slice$1(index, position - 1) + "*" + from(type === 47 ? type : next()); } /** * @param {number} index * @return {string} */ function identifier(index) { while (!token(peek())) next(); return slice$1(index, position); } //#endregion //#region node_modules/styled-components/node_modules/stylis/src/Parser.js /** * @param {string} value * @return {object[]} */ function compile(value) { return dealloc(parse$6("", null, null, null, [""], value = alloc(value), 0, [0], value)); } /** * @param {string} value * @param {object} root * @param {object?} parent * @param {string[]} rule * @param {string[]} rules * @param {string[]} rulesets * @param {number[]} pseudo * @param {number[]} points * @param {string[]} declarations * @return {object} */ function parse$6(value, root, parent, rule, rules, rulesets, pseudo, points, declarations) { var index = 0; var offset = 0; var length = pseudo; var atrule = 0; var property = 0; var previous = 0; var variable = 1; var scanning = 1; var ampersand = 1; var character = 0; var type = ""; var props = rules; var children = rulesets; var reference = rule; var characters = type; while (scanning) switch (previous = character, character = next()) { case 40: if (previous != 108 && charat(characters, length - 1) == 58) { if (indexof(characters += replace(delimit(character), "&", "&\f"), "&\f", abs(index ? points[index - 1] : 0)) != -1) ampersand = -1; break; } case 34: case 39: case 91: characters += delimit(character); break; case 9: case 10: case 13: case 32: characters += whitespace(previous); break; case 92: characters += escaping(caret() - 1, 7); continue; case 47: switch (peek()) { case 42: case 47: append(comment$2(commenter(next(), caret()), root, parent, declarations), declarations); break; default: characters += "/"; } break; case 123 * variable: points[index++] = strlen(characters) * ampersand; case 125 * variable: case 59: case 0: switch (character) { case 0: case 125: scanning = 0; case 59 + offset: if (ampersand == -1) characters = replace(characters, /\f/g, ""); if (property > 0 && strlen(characters) - length) append(property > 32 ? declaration$2(characters + ";", rule, parent, length - 1, declarations) : declaration$2(replace(characters, " ", "") + ";", rule, parent, length - 2, declarations), declarations); break; case 59: characters += ";"; default: append(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets); if (character === 123) if (offset === 0) parse$6(characters, root, reference, reference, props, rulesets, length, points, children); else switch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) { case 100: case 108: case 109: case 115: parse$6(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children); break; default: parse$6(characters, reference, reference, reference, [""], children, 0, points, children); } } index = offset = property = 0, variable = ampersand = 1, type = characters = "", length = pseudo; break; case 58: length = 1 + strlen(characters), property = previous; default: if (variable < 1) { if (character == 123) --variable; else if (character == 125 && variable++ == 0 && prev() == 125) continue; } switch (characters += from(character), character * variable) { case 38: ampersand = offset > 0 ? 1 : (characters += "\f", -1); break; case 44: points[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1; break; case 64: if (peek() === 45) characters += delimit(next()); atrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++; break; case 45: if (previous === 45 && strlen(characters) == 2) variable = 0; } } return rulesets; } __name(parse$6, "parse"); /** * @param {string} value * @param {object} root * @param {object?} parent * @param {number} index * @param {number} offset * @param {string[]} rules * @param {number[]} points * @param {string} type * @param {string[]} props * @param {string[]} children * @param {number} length * @param {object[]} siblings * @return {object} */ function ruleset(value, root, parent, index, offset, rules, points, type, props, children, length, siblings) { var post = offset - 1; var rule = offset === 0 ? rules : [""]; var size = sizeof(rule); for (var i = 0, j = 0, k = 0; i < index; ++i) for (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x) if (z = trim(j > 0 ? rule[x] + " " + y : replace(y, /&\f/g, rule[x]))) props[k++] = z; return node$2(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings); } /** * @param {number} value * @param {object} root * @param {object?} parent * @param {object[]} siblings * @return {object} */ function comment$2(value, root, parent, siblings) { return node$2(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings); } __name(comment$2, "comment"); /** * @param {string} value * @param {object} root * @param {object?} parent * @param {number} length * @param {object[]} siblings * @return {object} */ function declaration$2(value, root, parent, length, siblings) { return node$2(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings); } __name(declaration$2, "declaration"); //#endregion //#region node_modules/styled-components/node_modules/stylis/src/Prefixer.js /** * @param {string} value * @param {number} length * @param {object[]} children * @return {string} */ function prefix(value, length, children) { switch (hash(value, length)) { case 5103: return WEBKIT + "print-" + value + value; case 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921: case 5572: case 6356: case 5844: case 3191: case 6645: case 3005: case 6391: case 5879: case 5623: case 6135: case 4599: case 4855: case 4215: case 6389: case 5109: case 5365: case 5621: case 3829: return WEBKIT + value + value; case 4789: return MOZ + value + value; case 5349: case 4246: case 4810: case 6968: case 2756: return WEBKIT + value + MOZ + value + MS + value + value; case 5936: switch (charat(value, length + 11)) { case 114: return WEBKIT + value + MS + replace(value, /[svh]\w+-[tblr]{2}/, "tb") + value; case 108: return WEBKIT + value + MS + replace(value, /[svh]\w+-[tblr]{2}/, "tb-rl") + value; case 45: return WEBKIT + value + MS + replace(value, /[svh]\w+-[tblr]{2}/, "lr") + value; } case 6828: case 4268: case 2903: return WEBKIT + value + MS + value + value; case 6165: return WEBKIT + value + MS + "flex-" + value + value; case 5187: return WEBKIT + value + replace(value, /(\w+).+(:[^]+)/, WEBKIT + "box-$1$2" + MS + "flex-$1$2") + value; case 5443: return WEBKIT + value + MS + "flex-item-" + replace(value, /flex-|-self/g, "") + (!match(value, /flex-|baseline/) ? MS + "grid-row-" + replace(value, /flex-|-self/g, "") : "") + value; case 4675: return WEBKIT + value + MS + "flex-line-pack" + replace(value, /align-content|flex-|-self/g, "") + value; case 5548: return WEBKIT + value + MS + replace(value, "shrink", "negative") + value; case 5292: return WEBKIT + value + MS + replace(value, "basis", "preferred-size") + value; case 6060: return WEBKIT + "box-" + replace(value, "-grow", "") + WEBKIT + value + MS + replace(value, "grow", "positive") + value; case 4554: return WEBKIT + replace(value, /([^-])(transform)/g, "$1" + WEBKIT + "$2") + value; case 6187: return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + "$1"), /(image-set)/, WEBKIT + "$1"), value, "") + value; case 5495: case 3959: return replace(value, /(image-set\([^]*)/, WEBKIT + "$1$`$1"); case 4968: return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + "box-pack:$3" + MS + "flex-pack:$3"), /s.+-b[^;]+/, "justify") + WEBKIT + value + value; case 4200: if (!match(value, /flex-|baseline/)) return MS + "grid-column-align" + substr(value, length) + value; break; case 2592: case 3360: return MS + replace(value, "template-", "") + value; case 4384: case 3616: if (children && children.some(function(element, index) { return length = index, match(element.props, /grid-\w+-end/); })) return ~indexof(value + (children = children[length].value), "span", 0) ? value : MS + replace(value, "-start", "") + value + MS + "grid-row-span:" + (~indexof(children, "span", 0) ? match(children, /\d+/) : +match(children, /\d+/) - +match(value, /\d+/)) + ";"; return MS + replace(value, "-start", "") + value; case 4896: case 4128: return children && children.some(function(element) { return match(element.props, /grid-\w+-start/); }) ? value : MS + replace(replace(value, "-end", "-span"), "span ", "") + value; case 4095: case 3583: case 4068: case 2532: return replace(value, /(.+)-inline(.+)/, WEBKIT + "$1$2") + value; case 8116: case 7059: case 5753: case 5535: case 5445: case 5701: case 4933: case 4677: case 5533: case 5789: case 5021: case 4765: if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) { case 109: if (charat(value, length + 4) !== 45) break; case 102: return replace(value, /(.+:)(.+)-([^]+)/, "$1" + WEBKIT + "$2-$3$1" + MOZ + (charat(value, length + 3) == 108 ? "$3" : "$2-$3")) + value; case 115: return ~indexof(value, "stretch", 0) ? prefix(replace(value, "stretch", "fill-available"), length, children) + value : value; } break; case 5152: case 5920: return replace(value, /(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/, function(_, a, b, c, d, e, f) { return MS + a + ":" + b + f + (c ? MS + a + "-span:" + (d ? e : +e - +b) + f : "") + value; }); case 4949: if (charat(value, length + 6) === 121) return replace(value, ":", ":" + WEBKIT) + value; break; case 6444: switch (charat(value, charat(value, 14) === 45 ? 18 : 11)) { case 120: return replace(value, /(.+:)([^;\s!]+)(;|(\s+)?!.+)?/, "$1" + WEBKIT + (charat(value, 14) === 45 ? "inline-" : "") + "box$3$1" + WEBKIT + "$2$3$1" + MS + "$2box$3") + value; case 100: return replace(value, ":", ":" + MS) + value; } break; case 5719: case 2647: case 2135: case 3927: case 2391: return replace(value, "scroll-", "scroll-snap-") + value; } return value; } //#endregion //#region node_modules/styled-components/node_modules/stylis/src/Serializer.js /** * @param {object[]} children * @param {function} callback * @return {string} */ function serialize(children, callback) { var output = ""; for (var i = 0; i < children.length; i++) output += callback(children[i], i, children, callback) || ""; return output; } /** * @param {object} element * @param {number} index * @param {object[]} children * @param {function} callback * @return {string} */ function stringify$6(element, index, children, callback) { switch (element.type) { case LAYER: if (element.children.length) break; case IMPORT: case DECLARATION: return element.return = element.return || element.value; case COMMENT: return ""; case KEYFRAMES: return element.return = element.value + "{" + serialize(element.children, callback) + "}"; case RULESET: if (!strlen(element.value = element.props.join(","))) return ""; } return strlen(children = serialize(element.children, callback)) ? element.return = element.value + "{" + children + "}" : ""; } __name(stringify$6, "stringify"); //#endregion //#region node_modules/styled-components/node_modules/stylis/src/Middleware.js /** * @param {function[]} collection * @return {function} */ function middleware(collection) { var length = sizeof(collection); return function(element, index, children, callback) { var output = ""; for (var i = 0; i < length; i++) output += collection[i](element, index, children, callback) || ""; return output; }; } /** * @param {function} callback * @return {function} */ function rulesheet(callback) { return function(element) { if (!element.root) { if (element = element.return) callback(element); } }; } /** * @param {object} element * @param {number} index * @param {object[]} children * @param {function} callback */ function prefixer(element, index, children, callback) { if (element.length > -1) { if (!element.return) switch (element.type) { case DECLARATION: element.return = prefix(element.value, element.length, children); return; case KEYFRAMES: return serialize([copy(element, { value: replace(element.value, "@", "@" + WEBKIT) })], callback); case RULESET: if (element.length) return combine(children = element.props, function(value) { switch (match(value, callback = /(::plac\w+|:read-\w+)/)) { case ":read-only": case ":read-write": lift(copy(element, { props: [replace(value, /:(read-\w+)/, ":" + MOZ + "$1")] })); lift(copy(element, { props: [value] })); assign(element, { props: filter(children, callback) }); break; case "::placeholder": lift(copy(element, { props: [replace(value, /:(plac\w+)/, ":" + WEBKIT + "input-$1")] })); lift(copy(element, { props: [replace(value, /:(plac\w+)/, ":" + MOZ + "$1")] })); lift(copy(element, { props: [replace(value, /:(plac\w+)/, MS + "input-$1")] })); lift(copy(element, { props: [value] })); assign(element, { props: filter(children, callback) }); break; } return ""; }); } } } //#endregion //#region node_modules/styled-components/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js var import_shallowequal = /* @__PURE__ */ __toESM(require_shallowequal()); var unitlessKeys = { animationIterationCount: 1, aspectRatio: 1, borderImageOutset: 1, borderImageSlice: 1, borderImageWidth: 1, boxFlex: 1, boxFlexGroup: 1, boxOrdinalGroup: 1, columnCount: 1, columns: 1, flex: 1, flexGrow: 1, flexPositive: 1, flexShrink: 1, flexNegative: 1, flexOrder: 1, gridRow: 1, gridRowEnd: 1, gridRowSpan: 1, gridRowStart: 1, gridColumn: 1, gridColumnEnd: 1, gridColumnSpan: 1, gridColumnStart: 1, msGridRow: 1, msGridRowSpan: 1, msGridColumn: 1, msGridColumnSpan: 1, fontWeight: 1, lineHeight: 1, opacity: 1, order: 1, orphans: 1, tabSize: 1, widows: 1, zIndex: 1, zoom: 1, WebkitLineClamp: 1, fillOpacity: 1, floodOpacity: 1, stopOpacity: 1, strokeDasharray: 1, strokeDashoffset: 1, strokeMiterlimit: 1, strokeOpacity: 1, strokeWidth: 1 }; //#endregion //#region node_modules/styled-components/dist/styled-components.browser.esm.js var f = "undefined" != typeof process && ({}.REACT_APP_SC_ATTR || {}.SC_ATTR) || "data-styled"; var m = "active"; var y = "data-styled-version"; var v = "6.1.19"; var g = "/*!sc*/\n"; var S = "undefined" != typeof window && "undefined" != typeof document; var w = Boolean("boolean" == typeof SC_DISABLE_SPEEDY ? SC_DISABLE_SPEEDY : "undefined" != typeof process && void 0 !== {}.REACT_APP_SC_DISABLE_SPEEDY && "" !== {}.REACT_APP_SC_DISABLE_SPEEDY ? "false" !== {}.REACT_APP_SC_DISABLE_SPEEDY && {}.REACT_APP_SC_DISABLE_SPEEDY : "undefined" != typeof process && void 0 !== {}.SC_DISABLE_SPEEDY && "" !== {}.SC_DISABLE_SPEEDY ? "false" !== {}.SC_DISABLE_SPEEDY && {}.SC_DISABLE_SPEEDY : true); var E = /invalid hook call/i; var N = /* @__PURE__ */ new Set(); var P = function(t, n) { var o = n ? " with the id of \"".concat(n, "\"") : ""; var s = "The component ".concat(t).concat(o, " has been created dynamically.\n") + "You may see this warning because you've called styled inside another component.\nTo resolve this only create new StyledComponents outside of any render method and function component.\nSee https://styled-components.com/docs/basics#define-styled-components-outside-of-the-render-method for more info.\n"; var i = console.error; try { var a = !0; console.error = function(t) { for (var n = [], o = 1; o < arguments.length; o++) n[o - 1] = arguments[o]; E.test(t) ? (a = !1, N.delete(s)) : i.apply(void 0, __spreadArray([t], n, !1)); }, (0, react.useRef)(), a && !N.has(s) && (console.warn(s), N.add(s)); } catch (e) { E.test(e.message) && N.delete(s); } finally { console.error = i; } }; var _$1 = Object.freeze([]); var C = Object.freeze({}); function I(e, t, n) { return void 0 === n && (n = C), e.theme !== n.theme && e.theme || t || n.theme; } var A = /* @__PURE__ */ new Set([ "a", "abbr", "address", "area", "article", "aside", "audio", "b", "base", "bdi", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "cite", "code", "col", "colgroup", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "hr", "html", "i", "iframe", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "menu", "menuitem", "meta", "meter", "nav", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "script", "section", "select", "small", "source", "span", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "u", "ul", "use", "var", "video", "wbr", "circle", "clipPath", "defs", "ellipse", "foreignObject", "g", "image", "line", "linearGradient", "marker", "mask", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "svg", "text", "tspan" ]); var O = /[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g; var D = /(^-|-$)/g; function R(e) { return e.replace(O, "-").replace(D, ""); } var T = /(a)(d)/gi; var k = 52; var j = function(e) { return String.fromCharCode(e + (e > 25 ? 39 : 97)); }; function x$2(e) { var t; var n = ""; for (t = Math.abs(e); t > k; t = t / k | 0) n = j(t % k) + n; return (j(t % k) + n).replace(T, "$1-$2"); } __name(x$2, "x"); var V; var F = 5381; var M = function(e, t) { for (var n = t.length; n;) e = 33 * e ^ t.charCodeAt(--n); return e; }; var z = function(e) { return M(F, e); }; function $(e) { return x$2(z(e) >>> 0); } function B(e) { return "string" == typeof e && e || e.displayName || e.name || "Component"; } function L(e) { return "string" == typeof e && e.charAt(0) === e.charAt(0).toLowerCase(); } var G = "function" == typeof Symbol && Symbol.for; var Y = G ? Symbol.for("react.memo") : 60115; var W = G ? Symbol.for("react.forward_ref") : 60112; var q = { childContextTypes: !0, contextType: !0, contextTypes: !0, defaultProps: !0, displayName: !0, getDefaultProps: !0, getDerivedStateFromError: !0, getDerivedStateFromProps: !0, mixins: !0, propTypes: !0, type: !0 }; var H = { name: !0, length: !0, prototype: !0, caller: !0, callee: !0, arguments: !0, arity: !0 }; var U = { $$typeof: !0, compare: !0, defaultProps: !0, displayName: !0, propTypes: !0, type: !0 }; var J = ((V = {})[W] = { $$typeof: !0, render: !0, defaultProps: !0, displayName: !0, propTypes: !0 }, V[Y] = U, V); function X(e) { return ("type" in (t = e) && t.type.$$typeof) === Y ? U : "$$typeof" in e ? J[e.$$typeof] : q; var t; } var Z = Object.defineProperty; var K = Object.getOwnPropertyNames; var Q = Object.getOwnPropertySymbols; var ee = Object.getOwnPropertyDescriptor; var te = Object.getPrototypeOf; var ne = Object.prototype; function oe(e, t, n) { if ("string" != typeof t) { if (ne) { var o = te(t); o && o !== ne && oe(e, o, n); } var r = K(t); Q && (r = r.concat(Q(t))); for (var s = X(e), i = X(t), a = 0; a < r.length; ++a) { var c = r[a]; if (!(c in H || n && n[c] || i && c in i || s && c in s)) { var l = ee(t, c); try { Z(e, c, l); } catch (e) {} } } } return e; } function re(e) { return "function" == typeof e; } function se(e) { return "object" == typeof e && "styledComponentId" in e; } function ie(e, t) { return e && t ? "".concat(e, " ").concat(t) : e || t || ""; } function ae(e, t) { if (0 === e.length) return ""; for (var n = e[0], o = 1; o < e.length; o++) n += t ? t + e[o] : e[o]; return n; } function ce(e) { return null !== e && "object" == typeof e && e.constructor.name === Object.name && !("props" in e && e.$$typeof); } function le(e, t, n) { if (void 0 === n && (n = !1), !n && !ce(e) && !Array.isArray(e)) return t; if (Array.isArray(t)) for (var o = 0; o < t.length; o++) e[o] = le(e[o], t[o]); else if (ce(t)) for (var o in t) e[o] = le(e[o], t[o]); return e; } function ue(e, t) { Object.defineProperty(e, "toString", { value: t }); } var pe = { 1: "Cannot create styled-component for component: %s.\n\n", 2: "Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\n\n- Are you trying to reuse it across renders?\n- Are you accidentally calling collectStyles twice?\n\n", 3: "Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\n\n", 4: "The `StyleSheetManager` expects a valid target or sheet prop!\n\n- Does this error occur on the client and is your target falsy?\n- Does this error occur on the server and is the sheet falsy?\n\n", 5: "The clone method cannot be used on the client!\n\n- Are you running in a client-like environment on the server?\n- Are you trying to run SSR on the client?\n\n", 6: "Trying to insert a new style tag, but the given Node is unmounted!\n\n- Are you using a custom target that isn't mounted?\n- Does your document not have a valid head element?\n- Have you accidentally removed a style tag manually?\n\n", 7: "ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\n\n```js\ntheme={() => ({})}\n```\n\n", 8: "ThemeProvider: Please make your \"theme\" prop an object.\n\n", 9: "Missing document ``\n\n", 10: "Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\n\n", 11: "_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\n\n", 12: "It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\`\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\n\n", 13: "%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\n\n", 14: "ThemeProvider: \"theme\" prop is required.\n\n", 15: "A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to ``, please make sure each plugin is uniquely-named, e.g.\n\n```js\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\n```\n\n", 16: "Reached the limit of how many styled components may be created at group %s.\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\nas for instance in your render method then you may be running into this limitation.\n\n", 17: "CSSStyleSheet could not be found on HTMLStyleElement.\nHas styled-components' style tag been unmounted or altered by another script?\n", 18: "ThemeProvider: Please make sure your useTheme hook is within a ``" }; function de() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; for (var n = e[0], o = [], r = 1, s = e.length; r < s; r += 1) o.push(e[r]); return o.forEach(function(e) { n = n.replace(/%[a-z]/, e); }), n; } function he(t) { for (var n = [], o = 1; o < arguments.length; o++) n[o - 1] = arguments[o]; return new Error(de.apply(void 0, __spreadArray([pe[t]], n, !1)).trim()); } var fe = function() { function e(e) { this.groupSizes = /* @__PURE__ */ new Uint32Array(512), this.length = 512, this.tag = e; } return e.prototype.indexOfGroup = function(e) { for (var t = 0, n = 0; n < e; n++) t += this.groupSizes[n]; return t; }, e.prototype.insertRules = function(e, t) { if (e >= this.groupSizes.length) { for (var n = this.groupSizes, o = n.length, r = o; e >= r;) if ((r <<= 1) < 0) throw he(16, "".concat(e)); this.groupSizes = new Uint32Array(r), this.groupSizes.set(n), this.length = r; for (var s = o; s < r; s++) this.groupSizes[s] = 0; } for (var i = this.indexOfGroup(e + 1), a = (s = 0, t.length); s < a; s++) this.tag.insertRule(i, t[s]) && (this.groupSizes[e]++, i++); }, e.prototype.clearGroup = function(e) { if (e < this.length) { var t = this.groupSizes[e]; var n = this.indexOfGroup(e); var o = n + t; this.groupSizes[e] = 0; for (var r = n; r < o; r++) this.tag.deleteRule(n); } }, e.prototype.getGroup = function(e) { var t = ""; if (e >= this.length || 0 === this.groupSizes[e]) return t; for (var n = this.groupSizes[e], o = this.indexOfGroup(e), r = o + n, s = o; s < r; s++) t += "".concat(this.tag.getRule(s)).concat(g); return t; }, e; }(); var me = 1 << 30; var ye = /* @__PURE__ */ new Map(); var ve = /* @__PURE__ */ new Map(); var ge = 1; var Se = function(e) { if (ye.has(e)) return ye.get(e); for (; ve.has(ge);) ge++; var t = ge++; if ((0 | t) < 0 || t > me) throw he(16, "".concat(t)); return ye.set(e, t), ve.set(t, e), t; }; var we = function(e, t) { ge = t + 1, ye.set(e, t), ve.set(t, e); }; var be = "style[".concat(f, "][").concat(y, "=\"").concat(v, "\"]"); var Ee = new RegExp("^".concat(f, "\\.g(\\d+)\\[id=\"([\\w\\d-]+)\"\\].*?\"([^\"]*)")); var Ne = function(e, t, n) { for (var o, r = n.split(","), s = 0, i = r.length; s < i; s++) (o = r[s]) && e.registerName(t, o); }; var Pe = function(e, t) { for (var n, o = (null !== (n = t.textContent) && void 0 !== n ? n : "").split(g), r = [], s = 0, i = o.length; s < i; s++) { var a = o[s].trim(); if (a) { var c = a.match(Ee); if (c) { var l = 0 | parseInt(c[1], 10); var u = c[2]; 0 !== l && (we(u, l), Ne(e, u, c[3]), e.getTag().insertRules(l, r)), r.length = 0; } else r.push(a); } } }; var _e = function(e) { for (var t = document.querySelectorAll(be), n = 0, o = t.length; n < o; n++) { var r = t[n]; r && r.getAttribute(f) !== m && (Pe(e, r), r.parentNode && r.parentNode.removeChild(r)); } }; function Ce() { return "undefined" != typeof __webpack_nonce__ ? __webpack_nonce__ : null; } var Ie = function(e) { var t = document.head; var n = e || t; var o = document.createElement("style"); var r = function(e) { var t = Array.from(e.querySelectorAll("style[".concat(f, "]"))); return t[t.length - 1]; }(n); var s = void 0 !== r ? r.nextSibling : null; o.setAttribute(f, m), o.setAttribute(y, v); var i = Ce(); return i && o.setAttribute("nonce", i), n.insertBefore(o, s), o; }; var Ae = function() { function e(e) { this.element = Ie(e), this.element.appendChild(document.createTextNode("")), this.sheet = function(e) { if (e.sheet) return e.sheet; for (var t = document.styleSheets, n = 0, o = t.length; n < o; n++) { var r = t[n]; if (r.ownerNode === e) return r; } throw he(17); }(this.element), this.length = 0; } return e.prototype.insertRule = function(e, t) { try { return this.sheet.insertRule(t, e), this.length++, !0; } catch (e) { return !1; } }, e.prototype.deleteRule = function(e) { this.sheet.deleteRule(e), this.length--; }, e.prototype.getRule = function(e) { var t = this.sheet.cssRules[e]; return t && t.cssText ? t.cssText : ""; }, e; }(); var Oe = function() { function e(e) { this.element = Ie(e), this.nodes = this.element.childNodes, this.length = 0; } return e.prototype.insertRule = function(e, t) { if (e <= this.length && e >= 0) { var n = document.createTextNode(t); return this.element.insertBefore(n, this.nodes[e] || null), this.length++, !0; } return !1; }, e.prototype.deleteRule = function(e) { this.element.removeChild(this.nodes[e]), this.length--; }, e.prototype.getRule = function(e) { return e < this.length ? this.nodes[e].textContent : ""; }, e; }(); var De = function() { function e(e) { this.rules = [], this.length = 0; } return e.prototype.insertRule = function(e, t) { return e <= this.length && (this.rules.splice(e, 0, t), this.length++, !0); }, e.prototype.deleteRule = function(e) { this.rules.splice(e, 1), this.length--; }, e.prototype.getRule = function(e) { return e < this.length ? this.rules[e] : ""; }, e; }(); var Re = S; var Te = { isServer: !S, useCSSOMInjection: !w }; var ke = function() { function e(e, n, o) { void 0 === e && (e = C), void 0 === n && (n = {}); var r = this; this.options = __assign(__assign({}, Te), e), this.gs = n, this.names = new Map(o), this.server = !!e.isServer, !this.server && S && Re && (Re = !1, _e(this)), ue(this, function() { return function(e) { for (var t = e.getTag(), n = t.length, o = "", r = function(n) { var r = function(e) { return ve.get(e); }(n); if (void 0 === r) return "continue"; var s = e.names.get(r); var i = t.getGroup(n); if (void 0 === s || !s.size || 0 === i.length) return "continue"; var a = "".concat(f, ".g").concat(n, "[id=\"").concat(r, "\"]"); var c = ""; void 0 !== s && s.forEach(function(e) { e.length > 0 && (c += "".concat(e, ",")); }), o += "".concat(i).concat(a, "{content:\"").concat(c, "\"}").concat(g); }, s = 0; s < n; s++) r(s); return o; }(r); }); } return e.registerId = function(e) { return Se(e); }, e.prototype.rehydrate = function() { !this.server && S && _e(this); }, e.prototype.reconstructWithOptions = function(n, o) { return void 0 === o && (o = !0), new e(__assign(__assign({}, this.options), n), this.gs, o && this.names || void 0); }, e.prototype.allocateGSInstance = function(e) { return this.gs[e] = (this.gs[e] || 0) + 1; }, e.prototype.getTag = function() { return this.tag || (this.tag = (e = function(e) { var t = e.useCSSOMInjection; var n = e.target; return e.isServer ? new De(n) : t ? new Ae(n) : new Oe(n); }(this.options), new fe(e))); var e; }, e.prototype.hasNameForId = function(e, t) { return this.names.has(e) && this.names.get(e).has(t); }, e.prototype.registerName = function(e, t) { if (Se(e), this.names.has(e)) this.names.get(e).add(t); else { var n = /* @__PURE__ */ new Set(); n.add(t), this.names.set(e, n); } }, e.prototype.insertRules = function(e, t, n) { this.registerName(e, t), this.getTag().insertRules(Se(e), n); }, e.prototype.clearNames = function(e) { this.names.has(e) && this.names.get(e).clear(); }, e.prototype.clearRules = function(e) { this.getTag().clearGroup(Se(e)), this.clearNames(e); }, e.prototype.clearTag = function() { this.tag = void 0; }, e; }(); var je = /&/g; var xe = /^\s*\/\/.*$/gm; function Ve(e, t) { return e.map(function(e) { return "rule" === e.type && (e.value = "".concat(t, " ").concat(e.value), e.value = e.value.replaceAll(",", ",".concat(t, " ")), e.props = e.props.map(function(e) { return "".concat(t, " ").concat(e); })), Array.isArray(e.children) && "@keyframes" !== e.type && (e.children = Ve(e.children, t)), e; }); } function Fe(e) { var t; var n; var o; var r = void 0 === e ? C : e; var s = r.options; var i = void 0 === s ? C : s; var a = r.plugins; var c = void 0 === a ? _$1 : a; var l = function(e, o, r) { return r.startsWith(n) && r.endsWith(n) && r.replaceAll(n, "").length > 0 ? ".".concat(t) : e; }; var u = c.slice(); u.push(function(e) { e.type === "rule" && e.value.includes("&") && (e.props[0] = e.props[0].replace(je, n).replace(o, l)); }), i.prefix && u.push(prefixer), u.push(stringify$6); var p = function(e, r, s, a) { void 0 === r && (r = ""), void 0 === s && (s = ""), void 0 === a && (a = "&"), t = a, n = r, o = new RegExp("\\".concat(n, "\\b"), "g"); var c = e.replace(xe, ""); var l = compile(s || r ? "".concat(s, " ").concat(r, " { ").concat(c, " }") : c); i.namespace && (l = Ve(l, i.namespace)); var p = []; return serialize(l, middleware(u.concat(rulesheet(function(e) { return p.push(e); })))), p; }; return p.hash = c.length ? c.reduce(function(e, t) { return t.name || he(15), M(e, t.name); }, F).toString() : "", p; } var Me = new ke(); var ze = Fe(); var $e$1 = react.default.createContext({ shouldForwardProp: void 0, styleSheet: Me, stylis: ze }); var Be = $e$1.Consumer; var Le = react.default.createContext(void 0); function Ge() { return (0, react.useContext)($e$1); } function Ye(e) { var t = (0, react.useState)(e.stylisPlugins); var n = t[0]; var r = t[1]; var c = Ge().styleSheet; var l = (0, react.useMemo)(function() { var t = c; return e.sheet ? t = e.sheet : e.target && (t = t.reconstructWithOptions({ target: e.target }, !1)), e.disableCSSOMInjection && (t = t.reconstructWithOptions({ useCSSOMInjection: !1 })), t; }, [ e.disableCSSOMInjection, e.sheet, e.target, c ]); var u = (0, react.useMemo)(function() { return Fe({ options: { namespace: e.namespace, prefix: e.enableVendorPrefixes }, plugins: n }); }, [ e.enableVendorPrefixes, e.namespace, n ]); (0, react.useEffect)(function() { (0, import_shallowequal.default)(n, e.stylisPlugins) || r(e.stylisPlugins); }, [e.stylisPlugins]); var d = (0, react.useMemo)(function() { return { shouldForwardProp: e.shouldForwardProp, styleSheet: l, stylis: u }; }, [ e.shouldForwardProp, l, u ]); return react.default.createElement($e$1.Provider, { value: d }, react.default.createElement(Le.Provider, { value: u }, e.children)); } var We = function() { function e(e, t) { var n = this; this.inject = function(e, t) { void 0 === t && (t = ze); var o = n.name + t.hash; e.hasNameForId(n.id, o) || e.insertRules(n.id, o, t(n.rules, o, "@keyframes")); }, this.name = e, this.id = "sc-keyframes-".concat(e), this.rules = t, ue(this, function() { throw he(12, String(n.name)); }); } return e.prototype.getName = function(e) { return void 0 === e && (e = ze), this.name + e.hash; }, e; }(); var qe = function(e) { return e >= "A" && e <= "Z"; }; function He(e) { for (var t = "", n = 0; n < e.length; n++) { var o = e[n]; if (1 === n && "-" === o && "-" === e[0]) return e; qe(o) ? t += "-" + o.toLowerCase() : t += o; } return t.startsWith("ms-") ? "-" + t : t; } var Ue = function(e) { return null == e || !1 === e || "" === e; }; var Je = function(t) { var n; var o; var r = []; for (var s in t) { var i = t[s]; t.hasOwnProperty(s) && !Ue(i) && (Array.isArray(i) && i.isCss || re(i) ? r.push("".concat(He(s), ":"), i, ";") : ce(i) ? r.push.apply(r, __spreadArray(__spreadArray(["".concat(s, " {")], Je(i), !1), ["}"], !1)) : r.push("".concat(He(s), ": ").concat((n = s, null == (o = i) || "boolean" == typeof o || "" === o ? "" : "number" != typeof o || 0 === o || n in unitlessKeys || n.startsWith("--") ? String(o).trim() : "".concat(o, "px")), ";"))); } return r; }; function Xe(e, t, n, o) { if (Ue(e)) return []; if (se(e)) return [".".concat(e.styledComponentId)]; if (re(e)) { if (!re(s = e) || s.prototype && s.prototype.isReactComponent || !t) return [e]; var r = e(t); return "object" != typeof r || Array.isArray(r) || r instanceof We || ce(r) || null === r || console.error("".concat(B(e), " is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.")), Xe(r, t, n, o); } var s; return e instanceof We ? n ? (e.inject(n, o), [e.getName(o)]) : [e] : ce(e) ? Je(e) : Array.isArray(e) ? Array.prototype.concat.apply(_$1, e.map(function(e) { return Xe(e, t, n, o); })) : [e.toString()]; } function Ze(e) { for (var t = 0; t < e.length; t += 1) { var n = e[t]; if (re(n) && !se(n)) return !1; } return !0; } var Ke = z(v); var Qe = function() { function e(e, t, n) { this.rules = e, this.staticRulesId = "", this.isStatic = false, this.componentId = t, this.baseHash = M(Ke, t), this.baseStyle = n, ke.registerId(t); } return e.prototype.generateAndInjectStyles = function(e, t, n) { var o = this.baseStyle ? this.baseStyle.generateAndInjectStyles(e, t, n) : ""; if (this.isStatic && !n.hash) if (this.staticRulesId && t.hasNameForId(this.componentId, this.staticRulesId)) o = ie(o, this.staticRulesId); else { var r = ae(Xe(this.rules, e, t, n)); var s = x$2(M(this.baseHash, r) >>> 0); if (!t.hasNameForId(this.componentId, s)) { var i = n(r, ".".concat(s), void 0, this.componentId); t.insertRules(this.componentId, s, i); } o = ie(o, s), this.staticRulesId = s; } else { for (var a = M(this.baseHash, n.hash), c = "", l = 0; l < this.rules.length; l++) { var u = this.rules[l]; if ("string" == typeof u) c += u, a = M(a, u); else if (u) { var p = ae(Xe(u, e, t, n)); a = M(a, p + l), c += p; } } if (c) { var d = x$2(a >>> 0); t.hasNameForId(this.componentId, d) || t.insertRules(this.componentId, d, n(c, ".".concat(d), void 0, this.componentId)), o = ie(o, d); } } return o; }, e; }(); var et = react.default.createContext(void 0); var tt = et.Consumer; function ot(e) { var n = react.default.useContext(et); var r = (0, react.useMemo)(function() { return function(e, n) { if (!e) throw he(14); if (re(e)) { var o = e(n); if (null === o || Array.isArray(o) || "object" != typeof o) throw he(7); return o; } if (Array.isArray(e) || "object" != typeof e) throw he(8); return n ? __assign(__assign({}, n), e) : e; }(e.theme, n); }, [e.theme, n]); return e.children ? react.default.createElement(et.Provider, { value: r }, e.children) : null; } var rt = {}; var st = /* @__PURE__ */ new Set(); function it(e, r, s) { var i = se(e); var a = e; var c = !L(e); var p = r.attrs; var d = void 0 === p ? _$1 : p; var h = r.componentId; var f = void 0 === h ? function(e, t) { var n = "string" != typeof e ? "sc" : R(e); rt[n] = (rt[n] || 0) + 1; var o = "".concat(n, "-").concat($(v + n + rt[n])); return t ? "".concat(t, "-").concat(o) : o; }(r.displayName, r.parentComponentId) : h; var m = r.displayName; var y = void 0 === m ? function(e) { return L(e) ? "styled.".concat(e) : "Styled(".concat(B(e), ")"); }(e) : m; var g = r.displayName && r.componentId ? "".concat(R(r.displayName), "-").concat(r.componentId) : r.componentId || f; var S = i && a.attrs ? a.attrs.concat(d).filter(Boolean) : d; var w = r.shouldForwardProp; if (i && a.shouldForwardProp) { var b = a.shouldForwardProp; if (r.shouldForwardProp) { var E = r.shouldForwardProp; w = function(e, t) { return b(e, t) && E(e, t); }; } else w = b; } var N = new Qe(s, g, i ? a.componentStyle : void 0); function O(e, r) { return function(e, r, s) { var i = e.attrs; var a = e.componentStyle; var c = e.defaultProps; var p = e.foldedComponentIds; var d = e.styledComponentId; var h = e.target; var f = react.default.useContext(et); var m = Ge(); var y = e.shouldForwardProp || m.shouldForwardProp; (0, react.useDebugValue)(d); var v = I(r, f, c) || C; var g = function(e, n, o) { for (var r, s = __assign(__assign({}, n), { className: void 0, theme: o }), i = 0; i < e.length; i += 1) { var a = re(r = e[i]) ? r(s) : r; for (var c in a) s[c] = "className" === c ? ie(s[c], a[c]) : "style" === c ? __assign(__assign({}, s[c]), a[c]) : a[c]; } return n.className && (s.className = ie(s.className, n.className)), s; }(i, r, v); var S = g.as || h; var w = {}; for (var b in g) void 0 === g[b] || "$" === b[0] || "as" === b || "theme" === b && g.theme === v || ("forwardedAs" === b ? w.as = g.forwardedAs : y && !y(b, S) || (w[b] = g[b], y || isPropValid(b) || st.has(b) || !A.has(S) || (st.add(b), console.warn("styled-components: it looks like an unknown prop \"".concat(b, "\" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via `` (connect an API like `@emotion/is-prop-valid`) or consider using transient props (`$` prefix for automatic filtering.)"))))); var E = function(e, t) { var n = Ge(); var o = e.generateAndInjectStyles(t, n.styleSheet, n.stylis); return (0, react.useDebugValue)(o), o; }(a, g); e.warnTooManyClasses && e.warnTooManyClasses(E); var N = ie(p, d); return E && (N += " " + E), g.className && (N += " " + g.className), w[L(S) && !A.has(S) ? "class" : "className"] = N, s && (w.ref = s), (0, react.createElement)(S, w); }(D, e, r); } O.displayName = y; var D = react.default.forwardRef(O); return D.attrs = S, D.componentStyle = N, D.displayName = y, D.shouldForwardProp = w, D.foldedComponentIds = i ? ie(a.foldedComponentIds, a.styledComponentId) : "", D.styledComponentId = g, D.target = i ? a.target : e, Object.defineProperty(D, "defaultProps", { get: function() { return this._foldedDefaultProps; }, set: function(e) { this._foldedDefaultProps = i ? function(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; for (var o = 0, r = t; o < r.length; o++) le(e, r[o], !0); return e; }({}, a.defaultProps, e) : e; } }), P(y, g), D.warnTooManyClasses = function(e, t) { var n = {}; var o = !1; return function(r) { if (!o && (n[r] = !0, Object.keys(n).length >= 200)) { var s = t ? " with the id of \"".concat(t, "\"") : ""; console.warn("Over ".concat(200, " classes were generated for component ").concat(e).concat(s, ".\n") + "Consider using the attrs method, together with a style object for frequently changed styles.\nExample:\n const Component = styled.div.attrs(props => ({\n style: {\n background: props.background,\n },\n }))`width: 100%;`\n\n "), o = !0, n = {}; } }; }(y, g), ue(D, function() { return ".".concat(D.styledComponentId); }), c && oe(D, e, { attrs: !0, componentStyle: !0, displayName: !0, foldedComponentIds: !0, shouldForwardProp: !0, styledComponentId: !0, target: !0 }), D; } function at(e, t) { for (var n = [e[0]], o = 0, r = t.length; o < r; o += 1) n.push(t[o], e[o + 1]); return n; } var ct = function(e) { return Object.assign(e, { isCss: !0 }); }; function lt(t) { for (var n = [], o = 1; o < arguments.length; o++) n[o - 1] = arguments[o]; if (re(t) || ce(t)) return ct(Xe(at(_$1, __spreadArray([t], n, !0)))); var r = t; return 0 === n.length && 1 === r.length && "string" == typeof r[0] ? Xe(r) : ct(Xe(at(r, n))); } function ut(n, o, r) { if (void 0 === r && (r = C), !o) throw he(1, o); var s = function(t) { for (var s = [], i = 1; i < arguments.length; i++) s[i - 1] = arguments[i]; return n(o, r, lt.apply(void 0, __spreadArray([t], s, !1))); }; return s.attrs = function(e) { return ut(n, o, __assign(__assign({}, r), { attrs: Array.prototype.concat(r.attrs, e).filter(Boolean) })); }, s.withConfig = function(e) { return ut(n, o, __assign(__assign({}, r), e)); }, s; } var pt = function(e) { return ut(it, e); }; var dt = pt; A.forEach(function(e) { dt[e] = pt(e); }); var ht = function() { function e(e, t) { this.rules = e, this.componentId = t, this.isStatic = Ze(e), ke.registerId(this.componentId + 1); } return e.prototype.createStyles = function(e, t, n, o) { var r = o(ae(Xe(this.rules, t, n, o)), ""); var s = this.componentId + e; n.insertRules(s, s, r); }, e.prototype.removeStyles = function(e, t) { t.clearRules(this.componentId + e); }, e.prototype.renderStyles = function(e, t, n, o) { e > 2 && ke.registerId(this.componentId + e), this.removeStyles(e, n), this.createStyles(e, t, n, o); }, e; }(); var vt = function() { function e() { var e = this; this._emitSheetCSS = function() { var t = e.instance.toString(); if (!t) return ""; var n = Ce(); var o = ae([ n && "nonce=\"".concat(n, "\""), "".concat(f, "=\"true\""), "".concat(y, "=\"").concat(v, "\"") ].filter(Boolean), " "); return ""); }, this.getStyleTags = function() { if (e.sealed) throw he(2); return e._emitSheetCSS(); }, this.getStyleElement = function() { var n; if (e.sealed) throw he(2); var r = e.instance.toString(); if (!r) return []; var s = ((n = {})[f] = "", n[y] = v, n.dangerouslySetInnerHTML = { __html: r }, n); var i = Ce(); return i && (s.nonce = i), [react.default.createElement("style", __assign({}, s, { key: "sc-0-0" }))]; }, this.seal = function() { e.sealed = !0; }, this.instance = new ke({ isServer: !0 }), this.sealed = !1; } return e.prototype.collectStyles = function(e) { if (this.sealed) throw he(2); return react.default.createElement(Ye, { sheet: this.instance }, e); }, e.prototype.interleaveWithNodeStream = function(e) { throw he(3); }, e; }(); "undefined" != typeof navigator && "ReactNative" === navigator.product && console.warn("It looks like you've imported 'styled-components' on React Native.\nPerhaps you're looking to import 'styled-components/native'?\nRead more about this at https://www.styled-components.com/docs/basics#react-native"); var St = "__sc-".concat(f, "__"); "undefined" != typeof window && (window[St] || (window[St] = 0), 1 === window[St] && console.warn("It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\n\nSee https://s-c.sh/2BAXzed for more info."), window[St] += 1); //#endregion //#region app/assets/js/app.js /** * Elementor App */ init_es$1(); var Suspense = react.default.Suspense; function App$2() { var isDarkMode = (0, react.useContext)(AppContext).state.isDarkMode; var theme = { config: { variants: { light: !isDarkMode, dark: isDarkMode } } }; _elementor_router.default.appHistory = createHistory(createHashSource()); return /*#__PURE__*/ react.default.createElement(ErrorBoundary, null, /*#__PURE__*/ react.default.createElement(LocationProvider, { history: _elementor_router.default.appHistory }, /*#__PURE__*/ react.default.createElement(ot, { theme }, /*#__PURE__*/ react.default.createElement(Suspense, { fallback: null }, /*#__PURE__*/ react.default.createElement(Router, null, _elementor_router.default.getRoutes(), /*#__PURE__*/ react.default.createElement(Index$5, { path: "/" }), /*#__PURE__*/ react.default.createElement(NotFound, { default: true })))))); } __name(App$2, "App"); //#endregion //#region app/modules/import-export/assets/js/context/utils/reducer-utils.js init_toConsumableArray(); init_defineProperty$1(); init_classCallCheck(); init_createClass(); function ownKeys$43(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; } __name(ownKeys$43, "ownKeys"); function _objectSpread$42(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$43(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$43(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$42, "_objectSpread"); var ReducerUtils = /*#__PURE__*/ function() { function ReducerUtils() { _classCallCheck(this, ReducerUtils); } return _createClass(ReducerUtils, null, [{ key: "updateArray", value: function updateArray(state, key, value, action) { if ("add" === action) { if (state[key].includes(value)) return state; return _objectSpread$42(_objectSpread$42({}, state), {}, _defineProperty$1({}, key, [].concat(_toConsumableArray(state[key]), [value]))); } else if ("remove" === action) return _objectSpread$42(_objectSpread$42({}, state), {}, _defineProperty$1({}, key, state[key].filter(function(item) { return item !== value; }))); return state; } }]); }(); //#endregion //#region app/modules/import-export/assets/js/context/shared-context/shared-context-reducer.js init_defineProperty$1(); function ownKeys$42(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; } __name(ownKeys$42, "ownKeys"); function _objectSpread$41(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$42(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$42(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$41, "_objectSpread"); var reducer$3 = function reducer(state, _ref) { var type = _ref.type; var payload = _ref.payload; switch (type) { case "ADD_INCLUDE": return ReducerUtils.updateArray(state, "includes", payload, "add"); case "REMOVE_INCLUDE": return ReducerUtils.updateArray(state, "includes", payload, "remove"); case "SET_REFERRER": return _objectSpread$41(_objectSpread$41({}, state), {}, { referrer: payload }); case "SET_INCLUDES": return _objectSpread$41(_objectSpread$41({}, state), {}, { includes: payload }); case "SET_CPT": return _objectSpread$41(_objectSpread$41({}, state), {}, { customPostTypes: payload }); case "SET_SELECTED_CPT": return _objectSpread$41(_objectSpread$41({}, state), {}, { selectedCustomPostTypes: payload }); case "SET_CURRENT_PAGE_NAME": return _objectSpread$41(_objectSpread$41({}, state), {}, { currentPage: payload }); case "SET_RETURN_TO": return _objectSpread$41(_objectSpread$41({}, state), {}, { returnTo: payload }); default: return state; } }; //#endregion //#region app/modules/import-export/assets/js/shared/kit-content-data/kit-content-data.js var kitContentData$1 = [ { type: "templates", data: { title: (0, _wordpress_i18n.__)("Templates", "elementor"), features: { open: [(0, _wordpress_i18n.__)("Saved Templates", "elementor")], locked: [ (0, _wordpress_i18n.__)("Headers", "elementor"), (0, _wordpress_i18n.__)("Footers", "elementor"), (0, _wordpress_i18n.__)("Archives", "elementor"), (0, _wordpress_i18n.__)("Single Posts", "elementor"), (0, _wordpress_i18n.__)("Single Pages", "elementor"), (0, _wordpress_i18n.__)("Search Results", "elementor"), (0, _wordpress_i18n.__)("404 Error Page", "elementor"), (0, _wordpress_i18n.__)("Popups", "elementor"), (0, _wordpress_i18n.__)("Global widgets", "elementor") ], tooltip: (0, _wordpress_i18n.__)("To import or export these components, you’ll need Elementor Pro.", "elementor") } } }, { type: "content", data: { title: (0, _wordpress_i18n.__)("Content", "elementor"), features: { open: [ (0, _wordpress_i18n.__)("Elementor Pages", "elementor"), (0, _wordpress_i18n.__)("Landing Pages", "elementor"), (0, _wordpress_i18n.__)("Elementor Posts", "elementor"), (0, _wordpress_i18n.__)("WP Pages", "elementor"), (0, _wordpress_i18n.__)("WP Posts", "elementor"), (0, _wordpress_i18n.__)("WP Menus", "elementor"), (0, _wordpress_i18n.__)("Custom Post Types", "elementor") ] } } }, { type: "settings", data: { title: (0, _wordpress_i18n.__)("Site Settings", "elementor"), features: { open: [ (0, _wordpress_i18n.__)("Global Colors", "elementor"), (0, _wordpress_i18n.__)("Global Fonts", "elementor"), (0, _wordpress_i18n.__)("Theme Style settings", "elementor"), (0, _wordpress_i18n.__)("Layout Settings", "elementor"), (0, _wordpress_i18n.__)("Lightbox Settings", "elementor"), (0, _wordpress_i18n.__)("Background Settings", "elementor") ] } } } ]; //#endregion //#region app/modules/import-export/assets/js/context/shared-context/shared-context-provider.js init_slicedToArray(); var SharedContext = react.default.createContext(); function SharedContextProvider(props) { var _useReducer2 = _slicedToArray((0, react.useReducer)(reducer$3, { includes: kitContentData$1.map(function(item) { return item.type; }), referrer: null, customPostTypes: [], selectedCustomPostTypes: null, currentPage: null, returnTo: null }), 2); var data = _useReducer2[0]; var dispatch = _useReducer2[1]; return /*#__PURE__*/ react.default.createElement(SharedContext.Provider, { value: { data, dispatch } }, props.children); } SharedContextProvider.propTypes = { children: import_prop_types$82.default.object.isRequired }; //#endregion //#region app/modules/import-export/assets/js/context/import-context/import-context-reducer.js init_defineProperty$1(); function ownKeys$41(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; } __name(ownKeys$41, "ownKeys"); function _objectSpread$40(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$41(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$41(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$40, "_objectSpread"); var reducer$2 = function reducer(state, _ref) { var type = _ref.type; var payload = _ref.payload; switch (type) { case "SET_ID": return _objectSpread$40(_objectSpread$40({}, state), {}, { id: payload }); case "SET_FILE": return _objectSpread$40(_objectSpread$40({}, state), {}, { file: payload }); case "SET_KIT_SOURCE": return _objectSpread$40(_objectSpread$40({}, state), {}, { source: payload }); case "ADD_OVERRIDE_CONDITION": return ReducerUtils.updateArray(state, "overrideConditions", payload, "add"); case "REMOVE_OVERRIDE_CONDITION": return ReducerUtils.updateArray(state, "overrideConditions", payload, "remove"); case "SET_UPLOADED_DATA": return _objectSpread$40(_objectSpread$40({}, state), {}, { uploadedData: payload }); case "SET_IMPORTED_DATA": return _objectSpread$40(_objectSpread$40({}, state), {}, { importedData: payload }); case "SET_PLUGINS": return _objectSpread$40(_objectSpread$40({}, state), {}, { plugins: payload }); case "SET_REQUIRED_PLUGINS": return _objectSpread$40(_objectSpread$40({}, state), {}, { requiredPlugins: payload }); case "SET_IMPORTED_PLUGINS": return _objectSpread$40(_objectSpread$40({}, state), {}, { importedPlugins: payload }); case "SET_IS_PRO_INSTALLED_DURING_PROCESS": return _objectSpread$40(_objectSpread$40({}, state), {}, { isProInstalledDuringProcess: payload }); case "SET_ACTION_TYPE": return _objectSpread$40(_objectSpread$40({}, state), {}, { actionType: payload }); case "SET_IS_RESOLVED": return _objectSpread$40(_objectSpread$40({}, state), {}, { isResolvedData: payload }); case "SET_PLUGINS_STATE": return _objectSpread$40(_objectSpread$40({}, state), {}, { pluginsState: payload }); default: return state; } }; //#endregion //#region app/modules/import-export/assets/js/context/import-context/import-context-provider.js init_slicedToArray(); var ImportContext$1 = react.default.createContext(); function ImportContextProvider$1(props) { var _useReducer2 = _slicedToArray((0, react.useReducer)(reducer$2, { id: null, file: null, uploadedData: null, importedData: null, source: "", plugins: [], requiredPlugins: [], importedPlugins: [], overrideConditions: [], isProInstalledDuringProcess: false, actionType: null, isResolvedData: false, pluginsState: "" }), 2); var data = _useReducer2[0]; var dispatch = _useReducer2[1]; return /*#__PURE__*/ react.default.createElement(ImportContext$1.Provider, { value: { data, dispatch } }, props.children); } __name(ImportContextProvider$1, "ImportContextProvider"); ImportContextProvider$1.propTypes = { children: import_prop_types$82.default.object.isRequired }; //#endregion //#region app/assets/js/hooks/use-query-params.js function ownKeys$40(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; } function _objectSpread$39(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$40(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$40(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function useQueryParams() { var _location$hash$match; var urlSearchParams = new URLSearchParams(window.location.search); var urlParams = Object.fromEntries(urlSearchParams.entries()); var hashValue = (_location$hash$match = location.hash.match(/\?(.+)/)) === null || _location$hash$match === void 0 ? void 0 : _location$hash$match[1]; var hashParams = {}; if (hashValue) hashValue.split("&").forEach(function(pair) { var _pair$split2 = _slicedToArray(pair.split("="), 2); var key = _pair$split2[0]; hashParams[key] = _pair$split2[1]; }); var queryParams = _objectSpread$39(_objectSpread$39({}, urlParams), hashParams); return { getAll: function getAll() { return queryParams; } }; } var init_use_query_params = __esmMin((() => { init_defineProperty$1(); init_slicedToArray(); __name(ownKeys$40, "ownKeys"); __name(_objectSpread$39, "_objectSpread"); })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/import-export/assets/js/shared/content-layout/content-layout.scss init_use_query_params(); //#endregion //#region app/modules/import-export/assets/js/shared/content-layout/content-layout.js function ContentLayout(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "e-app-import-export-content-layout" }, /*#__PURE__*/ react.default.createElement("div", { className: "e-app-import-export-content-layout__container" }, props.children)); } ContentLayout.propTypes = { children: import_prop_types$82.default.any.isRequired }; //#endregion //#region app/assets/js/ui/modal/modal-section.js init_utils$5(); function ModalSection(props) { return /*#__PURE__*/ react.default.createElement("section", { className: arrayToClassName(["eps-modal__section", props.className]) }, props.children); } ModalSection.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.any }; ModalSection.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/modal/modal-tip.js init_utils$5(); init_heading(); init_text(); function ModalTip(props) { return /*#__PURE__*/ react.default.createElement("div", { className: arrayToClassName(["eps-modal__tip", props.className]) }, /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "h3", tag: "h3" }, props.title), props.description && /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xs" }, props.description)); } ModalTip.propTypes = { className: import_prop_types$82.default.string, title: import_prop_types$82.default.string, description: import_prop_types$82.default.string }; ModalTip.defaultProps = { className: "", title: (0, _wordpress_i18n.__)("Tip", "elementor") }; //#endregion //#region app/assets/js/ui/modal/modal.js init_extends(); init_defineProperty$1(); init_slicedToArray(); init_utils$5(); init_button$1(); init_grid(); init_icon(); init_text(); function ownKeys$39(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; } __name(ownKeys$39, "ownKeys"); function _objectSpread$38(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$39(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$39(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$38, "_objectSpread"); function ModalProvider$1(props) { var _useState2 = _slicedToArray((0, react.useState)(props.show), 2); var show = _useState2[0]; var setShow = _useState2[1]; var hideModal = function hideModal() { setShow(false); if (props.setShow) props.setShow(false); }; var showModal = function showModal() { setShow(true); if (props.setShow) props.setShow(true); }; var modalAttrs = _objectSpread$38(_objectSpread$38({}, props), {}, { show, hideModal, showModal }); (0, react.useEffect)(function() { setShow(props.show); }, [props.show]); return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, props.toggleButtonProps && /*#__PURE__*/ react.default.createElement(Button$30, _extends$1({}, props.toggleButtonProps, { onClick: showModal })), /*#__PURE__*/ react.default.createElement(Modal, modalAttrs, props.children)); } __name(ModalProvider$1, "ModalProvider"); ModalProvider$1.propTypes = { children: import_prop_types$82.default.node.isRequired, toggleButtonProps: import_prop_types$82.default.object, title: import_prop_types$82.default.string, icon: import_prop_types$82.default.string, show: import_prop_types$82.default.bool, setShow: import_prop_types$82.default.func, onOpen: import_prop_types$82.default.func, onClose: import_prop_types$82.default.func }; ModalProvider$1.defaultProps = { show: false }; ModalProvider$1.Section = ModalSection; ModalProvider$1.Tip = ModalTip; var Modal = function Modal(props) { var modalRef = (0, react.useRef)(null); var closeRef = (0, react.useRef)(null); var closeModal = function closeModal(e) { var node = modalRef.current; var closeNode = closeRef.current; var isInCloseNode = closeNode && closeNode.contains(e.target); if (node && node.contains(e.target) && !isInCloseNode) return; props.hideModal(); if (props.onClose) props.onClose(e); }; (0, react.useEffect)(function() { if (props.show) { var _props$onOpen; document.addEventListener("mousedown", closeModal, false); (_props$onOpen = props.onOpen) === null || _props$onOpen === void 0 || _props$onOpen.call(props); } return function() { return document.removeEventListener("mousedown", closeModal, false); }; }, [props.show]); if (!props.show) return null; return /*#__PURE__*/ react.default.createElement("div", { className: "eps-modal__overlay", onClick: closeModal }, /*#__PURE__*/ react.default.createElement("div", { className: arrayToClassName(["eps-modal", props.className]), ref: modalRef }, /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, className: "eps-modal__header", justify: "space-between", alignItems: "center" }, /*#__PURE__*/ react.default.createElement(Grid$14, { item: true }, /*#__PURE__*/ react.default.createElement(Icon$2, { className: "eps-modal__icon ".concat(props.icon) }), /*#__PURE__*/ react.default.createElement(Text$11, { className: "title", tag: "span" }, props.title)), /*#__PURE__*/ react.default.createElement(Grid$14, { item: true }, /*#__PURE__*/ react.default.createElement("div", { className: "eps-modal__close-wrapper", ref: closeRef }, /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Close", "elementor"), hideText: true, icon: "eicon-close", onClick: props.closeModal })))), /*#__PURE__*/ react.default.createElement("div", { className: "eps-modal__body" }, props.children))); }; Modal.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.any.isRequired, title: import_prop_types$82.default.string.isRequired, icon: import_prop_types$82.default.string, show: import_prop_types$82.default.bool, setShow: import_prop_types$82.default.func, hideModal: import_prop_types$82.default.func, showModal: import_prop_types$82.default.func, closeModal: import_prop_types$82.default.func, onOpen: import_prop_types$82.default.func, onClose: import_prop_types$82.default.func }; Modal.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/shared/info-modal/info-modal-section.js init_utils$5(); function InfoModalSection(props) { return /*#__PURE__*/ react.default.createElement(ModalProvider$1.Section, { className: arrayToClassName(["e-app-import-export-info-modal__section", props.className]) }, props.children); } InfoModalSection.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.any }; InfoModalSection.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/shared/info-modal/info-modal-heading.js init_utils$5(); init_heading(); function InfoModalHeading(props) { return /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "h3", tag: "h2", className: arrayToClassName(["e-app-import-export-info-modal__heading", props.className]) }, props.children); } InfoModalHeading.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.oneOfType([ import_prop_types$82.default.string, import_prop_types$82.default.object, import_prop_types$82.default.arrayOf(import_prop_types$82.default.object) ]).isRequired }; InfoModalHeading.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/shared/info-modal/info-modal-text.js init_utils$5(); init_text(); function InfoModalText(props) { return /*#__PURE__*/ react.default.createElement(Text$11, { variant: "sm", className: arrayToClassName(["e-app-import-export-info-modal__text", props.className]) }, props.children); } InfoModalText.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.any.isRequired }; InfoModalText.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/shared/info-modal/info-modal-tip.js init_extends(); init_utils$5(); function InfoModalTip(props) { return /*#__PURE__*/ react.default.createElement(ModalProvider$1.Tip, _extends$1({}, props, { className: arrayToClassName(["e-app-import-export-info-modal__tip", props.className]) })); } InfoModalTip.propTypes = { className: import_prop_types$82.default.string }; InfoModalTip.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/shared/info-modal/info-modal.js init_extends(); var infoButtonProps = { id: "info-modal", className: "e-app-export-kit-information__info-icon", icon: "eicon-info-circle", text: (0, _wordpress_i18n.__)("Kit Info", "elementor"), color: "secondary", hideText: true }; function InfoModal(props) { var attrs = { className: "e-app-import-export-info-modal", setShow: props.setShow, onOpen: props.onOpen, onClose: props.onClose, referrer: props.referrer }; if (Object.prototype.hasOwnProperty.call(props, "show")) attrs.show = props.show; else attrs.toggleButtonProps = infoButtonProps; return /*#__PURE__*/ react.default.createElement(ModalProvider$1, _extends$1({}, attrs, { title: props.title }), props.children); } InfoModal.propTypes = { show: import_prop_types$82.default.bool, setShow: import_prop_types$82.default.func, title: import_prop_types$82.default.string, children: import_prop_types$82.default.any.isRequired, onOpen: import_prop_types$82.default.func, onClose: import_prop_types$82.default.func, referrer: import_prop_types$82.default.string }; InfoModal.Section = InfoModalSection; InfoModal.Heading = InfoModalHeading; InfoModal.Text = InfoModalText; InfoModal.Tip = InfoModalTip; //#endregion //#region app/assets/js/ui/molecules/inline-link.js init_es$1(); init_utils$5(); function InlineLink(props) { var baseClassName = "eps-inline-link"; var className = arrayToClassName([ baseClassName, "".concat(baseClassName, "--color-").concat(props.color), "none" !== props.underline ? "".concat(baseClassName, "--underline-").concat(props.underline) : "", props.italic ? "".concat(baseClassName, "--italic") : "", props.className ]); var getRouterLink = function getRouterLink() { return /*#__PURE__*/ react.default.createElement(LocationProvider, { history: _elementor_router.default.appHistory }, /*#__PURE__*/ react.default.createElement(Link$10, { to: props.url, className }, props.children)); }; var getExternalLink = function getExternalLink() { return /*#__PURE__*/ react.default.createElement("a", { href: props.url, target: props.target, rel: props.rel, className, onClick: props.onClick }, props.children); }; var getActionLink = function getActionLink() { return /*#__PURE__*/ react.default.createElement("button", { className, onClick: props.onClick }, props.children); }; if (!props.url) return getActionLink(); return props.url.includes("http") ? getExternalLink() : getRouterLink(); } InlineLink.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.any, url: import_prop_types$82.default.string, target: import_prop_types$82.default.string, rel: import_prop_types$82.default.string, text: import_prop_types$82.default.string, color: import_prop_types$82.default.oneOf([ "primary", "secondary", "cta", "link", "disabled" ]), underline: import_prop_types$82.default.oneOf([ "none", "hover", "always" ]), italic: import_prop_types$82.default.bool, onClick: import_prop_types$82.default.func }; InlineLink.defaultProps = { className: "", color: "link", underline: "always", target: "_blank", rel: "noopener noreferrer" }; //#endregion //#region core/common/modules/events-manager/assets/js/events-config.js var eventsConfig; var init_events_config = __esmMin((() => { eventsConfig = { appTypes: { editor: "editor", wpAdmin: "wpadmin", wpDash: "wpdash" }, windowNames: { sidebarMenu: "sidebar_menu" }, targetTypes: { dropdownItem: "dropdown_item", button: "button", tab: "tab", toggle: "toggle", searchInput: "search_input", searchResult: "search_result", buttons: "buttons", searchWidget: "search_widget", wpDashAdminMenuItem: "wpdash_admin_menu_item", wpDashEditorMenu: "wpdash_editor_menu", wpDashSubMenuItem: "wpdash_sub_menu_item", link: "link" }, interactionResults: { actionSelected: "action_selected", navigate: "navigate", create: "create", sessionEnd: "session_end", tabChanged: "tab_changed", assetInserted: "asset_inserted", assetFavorite: "asset_favorite", aiGenerate: "ai_generate", resultsUpdated: "results_updated", noResults: "no_results", selected: "selected", promotionViewed: "promotion_viewed", upgradeNow: "upgrade_now", elementorSideMenuOpened: "elementor_side_menu_opened", editorSubMenuOpened: "wpdash_editor_sub_menu_opened", themeBuilderPromotionWindow: "theme_builder_promotion_window", pageOpened: "page_opened", expanded: "expanded", collapsed: "collapsed" }, targetNames: { publishDropdown: { saveDraft: "save_draft", saveAsTemplate: "save_as_template", viewPage: "view_page", copyAndShare: "copy_and_share" }, pageList: { addNewPage: "add_new_page" } }, triggers: { click: "Click", rightClick: "Right Click", doubleClick: "Double Click", accordionClick: "Accordion Click", toggleClick: "Toggle Click", dropdownClick: "Click Dropdown", editorLoaded: "Editor Loaded", visible: "Visible", pageLoaded: "Page Loaded", typing: "Typing", tabSelect: "Tab Select", insert: "Insert", hover: "Hover" }, locations: { widgetPanel: "Widget Panel", topBar: "Top Bar", sidebar: "Sidebar", elementorEditor: "Elementor Editor", templatesLibrary: { library: "Templates Library" }, app: { import: "Import Kit", export: "Export Kit", kitLibrary: "Kit Library", cloudKitLibrary: "Cloud Kit Library" }, variables: "Variables Panel", variablesManager: "Variables Manager", admin: "WP admin", wpDashAdmin: "wpdash_admin", structurePanel: "Structure Panel", canvas: "Canvas", leftPanel: "Left Panel", elementorLibrary: "Elementor Library", components: { instanceEditingPanel: "Instance Editing Panel" } }, secondaryLocations: { layout: "Layout Section", basic: "Basic Section", "pro-elements": "Pro Section", general: "General Section", "theme-elements": "Site Section", "theme-elements-single": "Single Section", "woocommerce-elements": "WooCommerce Section", wordpress: "WordPress Section", categories: "Widgets Tab", global: "Globals Tab", "whats-new": "What's New", "document-settings": "Document Settings icon", "preview-page": "Preview Page", "publish-button": "Publish Button", "widget-panel": "Widget Panel Icon", finder: "Finder", help: "Help", elementorLogoDropdown: "top_bar_elementor_logo_dropdown", elementorLogo: "Elementor Logo", eLogoMenu: "E-logo Menu", notes: "Notes", siteSettings: "Site Settings", structure: "Structure", documentNameDropdown: "Document Name dropdown", responsiveControls: "Responsive controls", launchpad: "launchpad", checklistHeader: "Checklist Header", checklistSteps: "Checklist Steps", userPreferences: "User Preferences", contextMenu: "Context Menu", templateLibrary: { saveModal: "Save to Modal", moveModal: "Move to Modal", bulkMoveModal: "Bulk Move to Modal", copyModal: "Copy to Modal", bulkCopyModal: "Bulk Copy to Modal", saveModalSelectFolder: "Save to Modal - select folder", saveModalSelectConnect: "Save to Modal - connect", saveModalSelectUpgrade: "Save to Modal - upgrade", importModal: "Import Modal", newFolderModal: "New Folder Modal", deleteDialog: "Delete Dialog", deleteFolderDialog: "Delete Folder Dialog", renameDialog: "Rename Dialog", createFolderDialog: "Create Folder Dialog", applySettingsDialog: "Apply Settings Dialog", cloudTab: "Cloud Tab", siteTab: "Site Tab", cloudTabFolder: "Cloud Tab - Folder", cloudTabConnect: "Cloud Tab - Connect", cloudTabUpgrade: "Cloud Tab - Upgrade", morePopup: "Context Menu", quotaBar: "Quota Bar" }, kitLibrary: { cloudKitLibrary: "kits_cloud_library", cloudKitLibraryConnect: "kits_cloud_library_connect", cloudKitLibraryUpgrade: "kits_cloud_library_upgrade", kitExportCustomization: "kit_export_customization", kitExport: "kit_export", kitExportCustomizationEdit: "kit_export_customization_edit", kitExportSummary: "kit_export_summary", kitImportUploadBox: "kit_import_upload_box", kitImportCustomization: "kit_import_customization", kitImportSummary: "kit_import_summary" }, variablesPopover: "Variables Popover", admin: { pluginToolsTab: "plugin_tools_tab", pluginWebsiteTemplatesTab: "plugin_website_templates_tab" }, componentsTab: "Components Tab", canvasElement: "Canvas Element", publishDropdown: "Publish Dropdown", pageListDropdown: "Page List Dropdown", emptyBox: "Empty Box", searchBar: "Search Bar", finderResults: "Finder Results", libraryTabs: "Library Tabs", assetCard: "Asset Card", wpDashElementorCoreMenu: "elementor_editor_core_menu", wpDashElementorCoreSubMenu: "elementor_editor_core_sub_menu", wpDashThemeBuilder: "wpdash_core_sub_menu_theme_builder" }, elements: { accordionSection: "Accordion section", buttonIcon: "Button Icon", mainCta: "Main CTA", button: "Button", link: "Link", dropdown: "Dropdown", toggle: "Toggle", launchpadChecklist: "Checklist popup" }, names: { v1: { layout: "v1_widgets_tab_layout_section", basic: "v1_widgets_tab_basic_section", "pro-elements": "v1_widgets_tab_pro_section", general: "v1_widgets_tab_general_section", "theme-elements": "v1_widgets_tab_site_section", "theme-elements-single": "v1_widgets_tab_single_section", "woocommerce-elements": "v1_widgets_tab_woocommerce_section", wordpress: "v1_widgets_tab_wordpress_section", categories: "v1_widgets_tab", global: "v1_globals_tab" }, topBar: { whatsNew: "top_bar_whats_new", documentSettings: "top_bar_document_settings_icon", previewPage: "top_bar_preview_page", publishButton: "top_bar_publish_button", widgetPanel: "top_bar_widget_panel_icon", finder: "top_bar_finder", help: "top_bar_help", history: "top_bar_elementor_logo_dropdown_history", userPreferences: "top_bar_elementor_logo_dropdown_user_preferences", keyboardShortcuts: "top_bar_elementor_logo_dropdown_keyboard_shortcuts", exitToWordpress: "top_bar_elementor_logo_dropdown_exit_to_wordpress", themeBuilder: "top_bar_elementor_logo_dropdown_theme_builder", notes: "top_bar_notes", siteSettings: "top_bar_site_setting", structure: "top_bar_structure", documentNameDropdown: "top_bar_document_name_dropdown", responsiveControls: "top_bar_responsive_controls", launchpadOn: "top_bar_checklist_icon_show", launchpadOff: "top_bar_checklist_icon_hide", elementorLogoDropdown: "open_e_menu", connectAccount: "connect_account", accountConnected: "account_connected" }, elementorEditor: { editorLoaded: "editor_loaded", checklist: { checklistHeaderClose: "checklist_header_close_icon", checklistFirstPopup: "checklist popup triggered" }, userPreferences: { checklistShow: "checklist_userpreferences_toggle_show", checklistHide: "checklist_userpreferences_toggle_hide" } }, variables: { open: "open_variables_popover", add: "add_new_variable", connect: "connect_variable", save: "save_new_variable", update: "update_variable", openManager: "open_variables_manager", saveChanges: "save_variables_changes", delete: "delete_variable", variableSyncToV3: "variable_sync_to_v3" }, design_system: { importOpened: "design_system_import_opened", fileSelected: "design_system_file_selected", validationFailed: "design_system_validation_failed", conflictChoice: "design_system_conflict_choice", confirmed: "design_system_import_confirmed", imported: "design_system_imported", importFailed: "design_system_import_failed", export: "design_system_export", opened: "design_system_opened" }, components: { createClicked: "component_create_clicked", createCancelled: "component_creation_cancelled", created: "component_created", instanceAdded: "component_instance_added", edited: "component_edited", propertiesPanelOpened: "component_properties_panel_opened", propertiesGroupCreated: "component_properties_group_created", propertyExposed: "component_property_exposed", propertyRemoved: "component_property_removed", detached: "component_detached" }, global_classes: { classApplied: "class_applied", classRemoved: "class_removed", classManagerFilterCleared: "class_manager_filter_cleared", classDeleted: "class_deleted", classPublishConflict: "class_publish_conflict", classRenamed: "class_renamed", classCreated: "class_created", classManagerSearched: "class_manager_searched", classManagerFiltersOpened: "class_manager_filters_opened", classManagerOpened: "class_manager_opened", classManagerReorder: "class_manager_reorder", classManagerFilterUsed: "class_manager_filter_used", classUsageLocate: "class_usage_locate", classUsageHovered: "class_usage_hovered", classStyled: "class_styled", classStateClicked: "class_state_clicked", classUsageClicked: "class_usage_clicked", classDuplicate: "class_duplicate", classSyncToV3PopupShown: "class_sync_to_v3_popup_shown", classSyncToV3: "class_sync_to_v3", classSyncToV3PopupClick: "class_sync_to_v3_popup_click" }, editorOne: { topBarPublishDropdown: "top_bar_publish_dropdown", topBarPageList: "top_bar_page_list", siteSettingsSession: "site_settings_session", eLibraryNav: "e_library_nav", eLibraryInsert: "e_library_insert", eLibraryFavorite: "e_library_favorite", eLibraryGenerateAi: "e_library_generate_ai", finderSearchInput: "finder_search_input", finderResultSelect: "finder_result_select", canvasEmptyBoxAction: "canvas_empty_box_action", widgetPanelSearch: "widget_panel_search", wpDashElementorMenuClick: "wpdash_elementor_menu_click", wpDashEditorSubMenuHover: "wpdash_editor_sub_menu_hover", wpDashThemeBuilderClick: "wpdash_theme_builder_click", sidebarMenuItemClicked: "sidebar_menu_item_clicked", sidebarMenuGroupToggled: "sidebar_menu_group_toggled" }, interactions: { created: "interactions_created" }, promotions: { viewPromotion: "view_promotion", upgradePromotionClick: "upgrade_promotion_click" } } }; })); //#endregion //#region app/assets/js/event-track/apps-event-tracking.js function ownKeys$38(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; } function _objectSpread$37(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$38(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$38(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0; var F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o; var a = !0; var u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(r, a); var t = {}.toString.call(r).slice(8, -1); 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$4(r, a) : void 0; } } function _arrayLikeToArray$4(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var EVENTS_MAP, appsEventTrackingDispatch, AppsEventTracking; var init_apps_event_tracking = __esmMin((() => { init_defineProperty$1(); init_classCallCheck(); init_createClass(); init_events_config(); __name(ownKeys$38, "ownKeys"); __name(_objectSpread$37, "_objectSpread"); __name(_createForOfIteratorHelper$4, "_createForOfIteratorHelper"); __name(_unsupportedIterableToArray$4, "_unsupportedIterableToArray"); __name(_arrayLikeToArray$4, "_arrayLikeToArray"); EVENTS_MAP = { PAGE_VIEWS_WEBSITE_TEMPLATES: "page_views_website_templates", KITS_CLOUD_UPGRADE_CLICKED: "kits_cloud_upgrade_clicked", EXPORT_KIT_CUSTOMIZATION: "export_kit_customization", IMPORT_KIT_CUSTOMIZATION: "import_kit_customization", KIT_IMPORT_STATUS: "kit_import_status", KIT_CLOUD_LIBRARY_APPLY: "kit_cloud_library_apply", KIT_CLOUD_LIBRARY_DELETE: "kit_cloud_library_delete", IMPORT_EXPORT_ADMIN_ACTION: "ie_admin_action", KIT_IMPORT_UPLOAD_FILE: "kit_import_upload_file" }; appsEventTrackingDispatch = function appsEventTrackingDispatch(command, eventParams) { var objectCreator = function objectCreator(array, obj) { var _iterator = _createForOfIteratorHelper$4(array); var _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var key = _step.value; if (eventParams.hasOwnProperty(key) && eventParams[key] !== null) obj[key] = eventParams[key]; } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return obj; }; var dataKeys = []; var detailsKeys = [ "layout", "site_part", "error", "document_name", "document_type", "view_type_clicked", "tag", "sort_direction", "sort_type", "action", "grid_location", "kit_name", "page_source", "element_position", "element", "event_type", "modal_type", "method", "status", "step", "item", "category", "element_location", "search_term", "section", "site_area" ]; var data = {}; var details = {}; (function init() { objectCreator(detailsKeys, details); objectCreator(dataKeys, data); var commandSplit = command.split("/"); data.placement = commandSplit[0]; data.event = commandSplit[1]; if (Object.keys(details).length) data.details = details; })(); $e.run(command, data); }; AppsEventTracking = /*#__PURE__*/ function() { function AppsEventTracking() { _classCallCheck(this, AppsEventTracking); } return _createClass(AppsEventTracking, null, [ { key: "dispatchEvent", value: function dispatchEvent(eventName, payload) { var _window$elementorComm; var _window$elementorComm2; return (_window$elementorComm = window.elementorCommon) === null || _window$elementorComm === void 0 || (_window$elementorComm = _window$elementorComm.eventsManager) === null || _window$elementorComm === void 0 || (_window$elementorComm2 = _window$elementorComm.dispatchEvent) === null || _window$elementorComm2 === void 0 ? void 0 : _window$elementorComm2.call(_window$elementorComm, eventName, payload); } }, { key: "sendPageViewsWebsiteTemplates", value: function sendPageViewsWebsiteTemplates(page) { return this.dispatchEvent(EVENTS_MAP.PAGE_VIEWS_WEBSITE_TEMPLATES, { trigger: eventsConfig.triggers.pageLoaded, page_loaded: page, secondary_location: page }); } }, { key: "sendKitsCloudUpgradeClicked", value: function sendKitsCloudUpgradeClicked(upgradeLocation) { return this.dispatchEvent(EVENTS_MAP.KITS_CLOUD_UPGRADE_CLICKED, { trigger: eventsConfig.triggers.click, secondary_location: upgradeLocation, upgrade_location: upgradeLocation }); } }, { key: "sendExportKitCustomization", value: function sendExportKitCustomization(payload) { return this.dispatchEvent(EVENTS_MAP.EXPORT_KIT_CUSTOMIZATION, _objectSpread$37({ trigger: eventsConfig.triggers.click }, payload)); } }, { key: "sendImportKitCustomization", value: function sendImportKitCustomization(payload) { return this.dispatchEvent(EVENTS_MAP.IMPORT_KIT_CUSTOMIZATION, _objectSpread$37({ trigger: eventsConfig.triggers.click }, payload)); } }, { key: "sendKitImportStatus", value: function sendKitImportStatus() { var error = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; var isError = !!error; return this.dispatchEvent(EVENTS_MAP.KIT_IMPORT_STATUS, _objectSpread$37({ kit_import_status: !isError }, isError && { kit_import_error: error.message })); } }, { key: "sendKitCloudLibraryApply", value: function sendKitCloudLibraryApply(kitId, kitApplyUrl) { return this.dispatchEvent(EVENTS_MAP.KIT_CLOUD_LIBRARY_APPLY, _objectSpread$37({ trigger: eventsConfig.triggers.click, kit_cloud_id: kitId }, kitApplyUrl && { kit_apply_url: kitApplyUrl })); } }, { key: "sendKitCloudLibraryDelete", value: function sendKitCloudLibraryDelete() { return this.dispatchEvent(EVENTS_MAP.KIT_CLOUD_LIBRARY_DELETE, { trigger: eventsConfig.triggers.click }); } }, { key: "sendImportExportAdminAction", value: function sendImportExportAdminAction(actionType) { return this.dispatchEvent(EVENTS_MAP.IMPORT_EXPORT_ADMIN_ACTION, { trigger: eventsConfig.triggers.click, action_type: actionType }); } }, { key: "sendKitImportUploadFile", value: function sendKitImportUploadFile(status) { return this.dispatchEvent(EVENTS_MAP.KIT_IMPORT_UPLOAD_FILE, { kit_import_upload_file_status: status }); } } ]); }(); })); //#endregion //#region app/modules/import-export/assets/js/shared/info-modal/import-info-modal.js init_extends(); init_apps_event_tracking(); function ImportInfoModal(props) { var eventTracking = function eventTracking(element) { return appsEventTrackingDispatch("kit-library/seek-more-info", { page_source: "import", modal_type: "info", event_type: "click", element }); }; return /*#__PURE__*/ react.default.createElement(InfoModal, _extends$1({}, props, { title: (0, _wordpress_i18n.__)("Import a Website Template", "elementor") }), /*#__PURE__*/ react.default.createElement(InfoModal.Section, null, /*#__PURE__*/ react.default.createElement(InfoModal.Heading, null, (0, _wordpress_i18n.__)("What’s a Website Template?", "elementor")), /*#__PURE__*/ react.default.createElement(InfoModal.Text, null, /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("A Website Template is a .zip file that contains all the parts of a complete site. It’s an easy way to get a site up and running quickly.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-what-are-kits", onClick: function onClick() { return eventTracking("Learn more about website templates"); } }, " ", (0, _wordpress_i18n.__)(" Learn more about Website Templates", "elementor"))))), /*#__PURE__*/ react.default.createElement(InfoModal.Section, null, /*#__PURE__*/ react.default.createElement(InfoModal.Heading, null, (0, _wordpress_i18n.__)("How does importing work?", "elementor")), /*#__PURE__*/ react.default.createElement(InfoModal.Text, null, /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Start by uploading the file and selecting the parts and plugins you want to apply. If there are any overlaps between the kit and your current design, you’ll be able to choose which imported parts you want to apply or ignore. Once the file is ready, the kit will be applied to your site and you’ll be able to see it live.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-import-kit", onClick: function onClick() { return eventTracking("learn more"); } }, (0, _wordpress_i18n.__)("Learn More", "elementor")))))); } //#endregion //#region app/modules/import-export/assets/js/shared/info-modal/export-info-modal.js init_extends(); function ExportInfoModal(props) { return /*#__PURE__*/ react.default.createElement(InfoModal, _extends$1({}, props, { title: (0, _wordpress_i18n.__)("Export a Website Kit", "elementor") }), /*#__PURE__*/ react.default.createElement(InfoModal.Section, null, /*#__PURE__*/ react.default.createElement(InfoModal.Heading, null, (0, _wordpress_i18n.__)("What’s a Website Kit?", "elementor")), /*#__PURE__*/ react.default.createElement(InfoModal.Text, null, /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("A Website Kit is a .zip file that contains all the parts of a complete site. It’s an easy way to get a site up and running quickly.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-what-are-kits" }, (0, _wordpress_i18n.__)("Learn more about Website Kits", "elementor"))))), /*#__PURE__*/ react.default.createElement(InfoModal.Section, null, /*#__PURE__*/ react.default.createElement(InfoModal.Heading, null, (0, _wordpress_i18n.__)("How does exporting work?", "elementor")), /*#__PURE__*/ react.default.createElement(InfoModal.Text, null, /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("To turn your site into a Website Kit, select the templates, content, settings and plugins you want to include. Once it’s ready, you’ll get a .zip file that you can import to other sites.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-export-kit" }, (0, _wordpress_i18n.__)("Learn More", "elementor")))))); } //#endregion //#region app/modules/import-export/assets/js/shared/utils/is-valid-redirect-url.js function isValidRedirectUrl$1(url) { try { var parsedUrl = new URL(url); return parsedUrl.hostname === window.location.hostname && ("http:" === parsedUrl.protocol || "https:" === parsedUrl.protocol); } catch (e) { return false; } } var init_is_valid_redirect_url = __esmMin((() => { __name(isValidRedirectUrl$1, "isValidRedirectUrl"); })); //#endregion //#region app/modules/import-export/assets/js/shared/utils/redirect.js function safeRedirect$1(url) { try { if (url.startsWith("/")) url = window.location.origin + url; var decodedUrl = decodeURIComponent(url); if (isValidRedirectUrl$1(decodedUrl)) { window.location.href = decodedUrl; return true; } } catch (e) { return false; } } var init_redirect = __esmMin((() => { init_is_valid_redirect_url(); __name(safeRedirect$1, "safeRedirect"); })); //#endregion //#region app/modules/import-export/assets/js/templates/layout.js init_toConsumableArray(); init_defineProperty$1(); init_slicedToArray(); init_apps_event_tracking(); init_redirect(); function ownKeys$37(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; } __name(ownKeys$37, "ownKeys"); function _objectSpread$36(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$37(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$37(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$36, "_objectSpread"); function Layout$1(props) { var _useState2 = _slicedToArray((0, react.useState)(false), 2); var showInfoModal = _useState2[0]; var setShowInfoModal = _useState2[1]; var referrer = useQueryParams().getAll().referrer; var sharedContext = (0, react.useContext)(SharedContext); var _sharedContext$data = sharedContext.data; var currentPage = _sharedContext$data.currentPage; var returnTo = _sharedContext$data.returnTo; var eventTracking = function eventTracking(command) { var elementPosition = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var element = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var eventType = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "click"; var modalType = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : null; if ("kit-library" === sharedContext.data.referrer || referrer) appsEventTrackingDispatch(command, { element, page_source: "import", event_type: eventType, step: currentPage, element_position: elementPosition, modal_type: modalType }); }; var onModalClose = function onModalClose(e, command) { eventTracking(command, e.target.classList.contains("eps-modal__overlay") ? "overlay" : "x", null, "info"); }; var getContent = function getContent() { var infoModalProps = { show: showInfoModal, setShow: setShowInfoModal }; if ("kit-library" === sharedContext.data.referrer || referrer) infoModalProps = _objectSpread$36(_objectSpread$36({ referrer }, infoModalProps), {}, { onOpen: function onOpen() { return eventTracking("kit-library/modal-open", null, null, "load", "info"); }, onClose: function onClose(e) { return onModalClose(e, "kit-library/modal-close"); } }); return /*#__PURE__*/ react.default.createElement(ContentLayout, null, props.children, "import" === props.type ? /*#__PURE__*/ react.default.createElement(ImportInfoModal, infoModalProps) : /*#__PURE__*/ react.default.createElement(ExportInfoModal, infoModalProps)); }; var getInfoButtonProps = function getInfoButtonProps() { return _objectSpread$36(_objectSpread$36({}, infoButtonProps), {}, { onClick: function onClick() { eventTracking("kit-library/seek-more-info", "app_header"); setShowInfoModal(true); } }); }; var _onClose = function onClose() { eventTracking("kit-library/close", "app_header", null, "click"); if (returnTo && safeRedirect$1(returnTo)) {} else if ("kit-library" === sharedContext.data.referrer || "kit-library" === referrer) window.top.location = elementorAppConfig.admin_url + "admin.php?page=elementor-app&source=kit_import#/kit-library"; else window.top.location = elementorAppConfig.admin_url + "admin.php?page=elementor-tools#tab-import-export-kit"; }; var config = { title: "import" === props.type ? (0, _wordpress_i18n.__)("Import", "elementor") : (0, _wordpress_i18n.__)("Export", "elementor"), headerButtons: [getInfoButtonProps()].concat(_toConsumableArray(props.headerButtons)), content: getContent(), footer: props.footer, onClose: function onClose() { return _onClose(); } }; var moduleAdminTab = "#tab-import-export-kit"; if (!referrer && -1 === elementorAppConfig.return_url.indexOf(moduleAdminTab) && elementorAppConfig.return_url.includes("page=elementor-tools")) elementorAppConfig.return_url += moduleAdminTab; (0, react.useEffect)(function() { if (referrer) sharedContext.dispatch({ type: "SET_REFERRER", payload: referrer }); }, [referrer]); return /*#__PURE__*/ react.default.createElement(Page, config); } __name(Layout$1, "Layout"); Layout$1.propTypes = { type: import_prop_types$82.default.oneOf(["import", "export"]), headerButtons: import_prop_types$82.default.arrayOf(import_prop_types$82.default.object), children: import_prop_types$82.default.object.isRequired, footer: import_prop_types$82.default.object }; Layout$1.defaultProps = { headerButtons: [] }; //#endregion //#region app/modules/import-export/assets/js/ui/page-header/page-header.js init_utils$5(); init_grid(); init_heading(); init_text(); function PageHeader$1(props) { var classes = ["e-app-import-export-page-header", props.className]; return /*#__PURE__*/ react.default.createElement("div", { className: arrayToClassName(classes) }, /*#__PURE__*/ react.default.createElement(Grid$14, { container: true }, /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, className: "e-app-import-export-page-header__content-wrapper" }, props.heading && /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "display-3", className: "e-app-import-export-page-header__heading" }, props.heading), props.description && /*#__PURE__*/ react.default.createElement(Text$11, { className: "e-app-import-export-page-header__description" }, function handleMultiLine(content) { if (Array.isArray(content)) { var multiLineArray = []; content.forEach(function(line, index) { if (index) multiLineArray.push(/*#__PURE__*/ react.default.createElement("br", { key: index })); multiLineArray.push(line); }); return multiLineArray; } return content; }(props.description))))); } __name(PageHeader$1, "PageHeader"); PageHeader$1.propTypes = { className: import_prop_types$82.default.string, heading: import_prop_types$82.default.string, description: import_prop_types$82.default.oneOfType([ import_prop_types$82.default.string, import_prop_types$82.default.array, import_prop_types$82.default.object ]) }; PageHeader$1.defaultProps = { className: "" }; //#endregion //#region node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js function asyncGeneratorStep$1(n, t, e, r, o, a, c) { try { var i = n[a](c); var u = i.value; } catch (n) { e(n); return; } i.done ? t(u) : Promise.resolve(u).then(r, o); } function _asyncToGenerator(n) { return function() { var t = this; var e = arguments; return new Promise(function(r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep$1(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep$1(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } var init_asyncToGenerator = __esmMin((() => { __name(asyncGeneratorStep$1, "asyncGeneratorStep"); })); //#endregion //#region node_modules/@babel/runtime/helpers/OverloadYield.js var require_OverloadYield = /* @__PURE__ */ __commonJSMin(((exports, module) => { function _OverloadYield(e, d) { this.v = e, this.k = d; } module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/regeneratorDefine.js var require_regeneratorDefine = /* @__PURE__ */ __commonJSMin(((exports, module) => { function _regeneratorDefine(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine(e, r, function(e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t); } module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/regenerator.js var require_regenerator$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { var regeneratorDefine = require_regeneratorDefine(); function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e; var t; var r = "function" == typeof Symbol ? Symbol : {}; var n = r.iterator || "@@iterator"; var o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator; var u = Object.create(c.prototype); return regeneratorDefine(u, "_invoke", function(r, n, o) { var i; var c; var u; var f = 0; var p = o || []; var y = !1; var G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o; var i = p[t]; var d = G.p; var l = i[2]; 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)); } if (o || r > 1) return a; throw y = !0, n; } return function(o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function() { return this; }), t); var u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } 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() { return this; }), regeneratorDefine(u, "toString", function() { return "[object Generator]"; }), (module.exports = _regenerator = function _regenerator() { return { w: i, m: f }; }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); } module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js var require_regeneratorAsyncIterator = /* @__PURE__ */ __commonJSMin(((exports, module) => { var OverloadYield = require_OverloadYield(); var regeneratorDefine = require_regeneratorDefine(); function AsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o); var u = c.value; return u instanceof OverloadYield ? e.resolve(u.v).then(function(t) { n("next", t, i, f); }, function(t) { n("throw", t, i, f); }) : e.resolve(u).then(function(t) { c.value = t, i(c); }, function(t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function() { return this; })), regeneratorDefine(this, "_invoke", function(t, o, i) { function f() { return new e(function(e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); } module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js var require_regeneratorAsyncGen = /* @__PURE__ */ __commonJSMin(((exports, module) => { var regenerator = require_regenerator$1(); var regeneratorAsyncIterator = require_regeneratorAsyncIterator(); function _regeneratorAsyncGen(r, e, t, o, n) { return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise); } module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/regeneratorAsync.js var require_regeneratorAsync = /* @__PURE__ */ __commonJSMin(((exports, module) => { var regeneratorAsyncGen = require_regeneratorAsyncGen(); function _regeneratorAsync(n, e, r, t, o) { var a = regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function(n) { return n.done ? n.value : a.next(); }); } module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/regeneratorKeys.js var require_regeneratorKeys = /* @__PURE__ */ __commonJSMin(((exports, module) => { function _regeneratorKeys(e) { var n = Object(e); var r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; } module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/typeof.js var require_typeof = /* @__PURE__ */ __commonJSMin(((exports, module) => { function _typeof(o) { "@babel/helpers - typeof"; return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/regeneratorValues.js var require_regeneratorValues = /* @__PURE__ */ __commonJSMin(((exports, module) => { var _typeof = require_typeof()["default"]; function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"]; var r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); } module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/helpers/regeneratorRuntime.js var require_regeneratorRuntime = /* @__PURE__ */ __commonJSMin(((exports, module) => { var OverloadYield = require_OverloadYield(); var regenerator = require_regenerator$1(); var regeneratorAsync = require_regeneratorAsync(); var regeneratorAsyncGen = require_regeneratorAsyncGen(); var regeneratorAsyncIterator = require_regeneratorAsyncIterator(); var regeneratorKeys = require_regeneratorKeys(); var regeneratorValues = require_regeneratorValues(); function _regeneratorRuntime() { "use strict"; var r = regenerator(); var e = r.m(_regeneratorRuntime); var t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { "throw": 1, "return": 2, "break": 3, "continue": 3 }; function a(r) { var e; var t; return function(n) { e || (e = { stop: function stop() { return t(n.a, 2); }, "catch": function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new OverloadYield(r, e); }, AsyncIterator: regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u); }, keys: regeneratorKeys, values: regeneratorValues }; }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); } module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; })); //#endregion //#region node_modules/@babel/runtime/regenerator/index.js var require_regenerator = /* @__PURE__ */ __commonJSMin(((exports, module) => { var runtime = require_regeneratorRuntime()(); module.exports = runtime; try { regeneratorRuntime = runtime; } catch (accidentalStrictMode) { if (typeof globalThis === "object") globalThis.regeneratorRuntime = runtime; else Function("r", "regeneratorRuntime = r")(runtime); } })); //#endregion //#region app/assets/js/hooks/use-ajax.js function ownKeys$36(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; } function _objectSpread$35(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$36(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$36(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function useAjax() { var _useState2 = _slicedToArray((0, react.useState)(null), 2); var ajax = _useState2[0]; var setAjax = _useState2[1]; var initialStatusKey = "initial"; var _useState4 = _slicedToArray((0, react.useState)({ status: initialStatusKey, isComplete: false, response: null }), 2); var ajaxState = _useState4[0]; var setAjaxState = _useState4[1]; var ajaxActions = { reset: function reset() { return setAjaxState(initialStatusKey); } }; var runRequest = /*#__PURE__*/ function() { var _ref = _asyncToGenerator(/*#__PURE__*/ import_regenerator$4.default.mark(function _callee(config) { return import_regenerator$4.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: return _context.abrupt("return", new Promise(function(resolve, reject) { var formData = new FormData(); if (config.data) { for (var key in config.data) formData.append(key, config.data[key]); if (!config.data.nonce) formData.append("_nonce", elementorCommon.config.ajax.nonce); } var options = _objectSpread$35(_objectSpread$35({ type: "post", url: elementorCommon.config.ajax.url, headers: {}, cache: false, contentType: false, processData: false }, config), {}, { data: formData, success: function success(response) { resolve(response); }, error: function error(_error) { reject(_error); } }); jQuery.ajax(options); })); case 1: case "end": return _context.stop(); } }, _callee); })); return function runRequest(_x) { return _ref.apply(this, arguments); }; }(); (0, react.useEffect)(function() { if (ajax) runRequest(ajax).then(function(response) { var status = response.success ? "success" : "error"; setAjaxState(function(prevState) { return _objectSpread$35(_objectSpread$35({}, prevState), {}, { status, response: response === null || response === void 0 ? void 0 : response.data }); }); }).catch(function(error) { var _error$responseJSON; var response = 408 === error.status ? "timeout" : (_error$responseJSON = error.responseJSON) === null || _error$responseJSON === void 0 ? void 0 : _error$responseJSON.data; setAjaxState(function(prevState) { return _objectSpread$35(_objectSpread$35({}, prevState), {}, { status: "error", response }); }); }).finally(function() { setAjaxState(function(prevState) { return _objectSpread$35(_objectSpread$35({}, prevState), {}, { isComplete: true }); }); }); }, [ajax]); return { ajax, setAjax, ajaxState, ajaxActions, runRequest }; } var import_regenerator$4; var init_use_ajax = __esmMin((() => { init_defineProperty$1(); init_asyncToGenerator(); init_slicedToArray(); import_regenerator$4 = /* @__PURE__ */ __toESM(require_regenerator()); __name(ownKeys$36, "ownKeys"); __name(_objectSpread$35, "_objectSpread"); })); //#endregion //#region app/modules/import-export/assets/js/hooks/use-kit.js function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0; var F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o; var a = !0; var u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(r, a); var t = {}.toString.call(r).slice(8, -1); 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$3(r, a) : void 0; } } function _arrayLikeToArray$3(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function ownKeys$35(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; } function _objectSpread$34(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$35(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$35(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function useKit$1() { var _useAjax = useAjax(); var ajaxState = _useAjax.ajaxState; var setAjax = _useAjax.setAjax; var ajaxActions = _useAjax.ajaxActions; var runRequest = _useAjax.runRequest; var _useState2 = _slicedToArray((0, react.useState)({ status: KIT_STATUS_MAP.INITIAL, data: null }), 2); var kitState = _useState2[0]; var setKitState = _useState2[1]; var uploadKit = function uploadKit(_ref) { var kitId = _ref.kitId; var file = _ref.file; var kitLibraryNonce = _ref.kitLibraryNonce; var _ref$source = _ref.source; setAjax({ data: _objectSpread$34(_objectSpread$34({ action: UPLOAD_KIT_KEY, source: _ref$source === void 0 ? "" : _ref$source }, file ? { e_import_file: file } : null), {}, { kit_id: kitId }, kitLibraryNonce ? { e_kit_library_nonce: kitLibraryNonce } : {}) }); }; var initImportProcess = /*#__PURE__*/ function() { var _ref3 = _asyncToGenerator(/*#__PURE__*/ import_regenerator$3.default.mark(function _callee(_ref2) { var id; var session; var include; var overrideConditions; var referrer; var selectedCustomPostTypes; var ajaxConfig; return import_regenerator$3.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: id = _ref2.id, session = _ref2.session, include = _ref2.include, overrideConditions = _ref2.overrideConditions, referrer = _ref2.referrer, selectedCustomPostTypes = _ref2.selectedCustomPostTypes; ajaxConfig = { data: { action: IMPORT_KIT_KEY, data: { id, session, include, overrideConditions } } }; if (referrer) ajaxConfig.data.data.referrer = referrer; if (selectedCustomPostTypes) ajaxConfig.data.data.selectedCustomPostTypes = selectedCustomPostTypes; ajaxConfig.data.data = JSON.stringify(ajaxConfig.data.data); return _context.abrupt("return", runRequest(ajaxConfig).catch(function(error) { var _error$responseJSON; var response = 408 === error.status ? "timeout" : (_error$responseJSON = error.responseJSON) === null || _error$responseJSON === void 0 ? void 0 : _error$responseJSON.data; setKitState(function(prevState) { return _objectSpread$34(_objectSpread$34({}, prevState), {}, { status: KIT_STATUS_MAP.ERROR, data: response || {} }); }); })); case 1: case "end": return _context.stop(); } }, _callee); })); return function initImportProcess(_x) { return _ref3.apply(this, arguments); }; }(); var runImportRunners = /*#__PURE__*/ function() { var _ref4 = _asyncToGenerator(/*#__PURE__*/ import_regenerator$3.default.mark(function _callee2(session, runners) { var stopIterations; var _iterator; var _step; var _step$value; var iteration; var runner; var ajaxConfig; var isLastIteration; var _t; return import_regenerator$3.default.wrap(function(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: stopIterations = false; _iterator = _createForOfIteratorHelper$3(runners.entries()); _context2.prev = 1; _iterator.s(); case 2: if ((_step = _iterator.n()).done) { _context2.next = 7; break; } _step$value = _slicedToArray(_step.value, 2), iteration = _step$value[0], runner = _step$value[1]; if (!stopIterations) { _context2.next = 3; break; } return _context2.abrupt("continue", 7); case 3: ajaxConfig = { data: { action: RUN_RUNNER_KEY, data: { session, runner } } }; ajaxConfig.data.data = JSON.stringify(ajaxConfig.data.data); isLastIteration = iteration === runners.length - 1; if (isLastIteration) { _context2.next = 5; break; } _context2.next = 4; return runRequest(ajaxConfig).catch(function(error) { var _error$responseJSON2; stopIterations = true; var response = 408 === error.status ? "timeout" : (_error$responseJSON2 = error.responseJSON) === null || _error$responseJSON2 === void 0 ? void 0 : _error$responseJSON2.data; setKitState(function(prevState) { return _objectSpread$34(_objectSpread$34({}, prevState), { status: KIT_STATUS_MAP.ERROR, data: response || {} }); }); }); case 4: _context2.next = 6; break; case 5: setAjax(ajaxConfig); case 6: _context2.next = 2; break; case 7: _context2.next = 9; break; case 8: _context2.prev = 8; _t = _context2["catch"](1); _iterator.e(_t); case 9: _context2.prev = 9; _iterator.f(); return _context2.finish(9); case 10: case "end": return _context2.stop(); } }, _callee2, null, [[ 1, 8, 9, 10 ]]); })); return function runImportRunners(_x2, _x3) { return _ref4.apply(this, arguments); }; }(); var importKit = /*#__PURE__*/ function() { var _ref6 = _asyncToGenerator(/*#__PURE__*/ import_regenerator$3.default.mark(function _callee3(_ref5) { var id; var session; var include; var overrideConditions; var referrer; var selectedCustomPostTypes; var importSession; return import_regenerator$3.default.wrap(function(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: id = _ref5.id, session = _ref5.session, include = _ref5.include, overrideConditions = _ref5.overrideConditions, referrer = _ref5.referrer, selectedCustomPostTypes = _ref5.selectedCustomPostTypes; ajaxActions.reset(); _context3.next = 1; return initImportProcess({ id, session, include, overrideConditions, referrer, selectedCustomPostTypes }); case 1: importSession = _context3.sent; if (importSession) { _context3.next = 2; break; } return _context3.abrupt("return"); case 2: _context3.next = 3; return runImportRunners(importSession.data.session, importSession.data.runners); case 3: case "end": return _context3.stop(); } }, _callee3); })); return function importKit(_x4) { return _ref6.apply(this, arguments); }; }(); var exportKit = function exportKit(_ref7) { var include = _ref7.include; var kitInfo = _ref7.kitInfo; var plugins = _ref7.plugins; var selectedCustomPostTypes = _ref7.selectedCustomPostTypes; var screenShotBlob = _ref7.screenShotBlob; setAjax({ data: { action: EXPORT_KIT_KEY, data: JSON.stringify({ include, kitInfo, plugins, selectedCustomPostTypes, screenShotBlob }) } }); }; var reset = function reset() { return ajaxActions.reset(); }; (0, react.useEffect)(function() { if ("initial" !== ajaxState.status) { var newState = {}; if ("success" === ajaxState.status) { var _ajaxState$response; var _ajaxState$response2; if ((_ajaxState$response = ajaxState.response) !== null && _ajaxState$response !== void 0 && _ajaxState$response.file || (_ajaxState$response2 = ajaxState.response) !== null && _ajaxState$response2 !== void 0 && _ajaxState$response2.kit) newState.status = KIT_STATUS_MAP.EXPORTED; else { var _ajaxState$response3; newState.status = (_ajaxState$response3 = ajaxState.response) !== null && _ajaxState$response3 !== void 0 && _ajaxState$response3.manifest ? KIT_STATUS_MAP.UPLOADED : KIT_STATUS_MAP.IMPORTED; } } else if ("error" === ajaxState.status) newState.status = KIT_STATUS_MAP.ERROR; newState.data = ajaxState.response || {}; setKitState(function(prevState) { return _objectSpread$34(_objectSpread$34({}, prevState), newState); }); } }, [ajaxState.status]); return { kitState, KIT_STATUS_MAP, kitActions: { upload: uploadKit, import: importKit, export: exportKit, reset } }; } var import_regenerator$3, KIT_SOURCE_MAP, KIT_STATUS_MAP, UPLOAD_KIT_KEY, IMPORT_KIT_KEY, EXPORT_KIT_KEY, RUN_RUNNER_KEY; var init_use_kit$1 = __esmMin((() => { init_asyncToGenerator(); init_defineProperty$1(); init_slicedToArray(); import_regenerator$3 = /* @__PURE__ */ __toESM(require_regenerator()); init_use_ajax(); __name(_createForOfIteratorHelper$3, "_createForOfIteratorHelper"); __name(_unsupportedIterableToArray$3, "_unsupportedIterableToArray"); __name(_arrayLikeToArray$3, "_arrayLikeToArray"); __name(ownKeys$35, "ownKeys"); __name(_objectSpread$34, "_objectSpread"); KIT_SOURCE_MAP = { CLOUD: "cloud", FILE: "file" }; KIT_STATUS_MAP = Object.freeze({ INITIAL: "initial", UPLOADED: "uploaded", IMPORTED: "imported", EXPORTED: "exported", ERROR: "error" }); UPLOAD_KIT_KEY = "elementor_upload_kit"; IMPORT_KIT_KEY = "elementor_import_kit"; EXPORT_KIT_KEY = "elementor_export_kit"; RUN_RUNNER_KEY = "elementor_import_kit__runner"; __name(useKit$1, "useKit"); })); //#endregion //#region app/modules/import-export/assets/js/shared/process-failed-dialog/process-failed-dialog.js init_es$1(); init_dialog(); init_use_query_params(); init_use_action(); init_use_kit$1(); init_redirect(); var messagesContent$1 = { general: { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("We couldn’t download the Website Template due to technical difficulties on our part. Try again and if the problem persists contact ", "elementor"), /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor"))) }, "zip-archive-module-missing": { title: (0, _wordpress_i18n.__)("Couldn’t handle the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("Seems like your server is missing the PHP zip module. Install it on your server or contact your site host for further instructions.", "elementor") }, "invalid-zip-file": { title: (0, _wordpress_i18n.__)("Couldn’t use the .zip file", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Seems like there is a problem with the zip’s files. Try installing again and if the problem persists contact ", "elementor"), /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor"))) }, timeout: { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("It took too much time to download your Website Template and we were unable to complete the process. If all the Website Template’s parts don’t appear in ", "elementor"), /*#__PURE__*/ react.default.createElement(InlineLink, { url: elementorAppConfig.pages_url }, (0, _wordpress_i18n.__)("Pages", "elementor")), (0, _wordpress_i18n.__)(", try again and if the problem persists contact ", "elementor"), /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor"))) }, "invalid-kit-library-zip-error": { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("We couldn’t download the Website Template due to technical difficulty on our part. Try again in a few minutes and if the problem persists contact", "elementor"), /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor"))) }, "no-write-permissions": { title: (0, _wordpress_i18n.__)("Couldn’t access the file", "elementor"), text: (0, _wordpress_i18n.__)("Seems like Elementor isn’t authorized to access relevant files for installing this Website Template. Contact your site host to get permission.", "elementor") }, "plugin-installation-permissions-error": { title: (0, _wordpress_i18n.__)("Couldn’t install the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("The Website Template includes plugins you don’t have permission to install. Contact your site admin to change your permissions.", "elementor") }, "third-party-error": { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("This is due to a conflict with one or more third-party plugins already active on your site. Try disabling them, and then give the download another go.", "elementor") }, "domdocument-missing": { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("This download requires the 'DOMDocument' PHP extension, which we couldn’t detect on your server. Enable this extension, or get in touch with your hosting service for support, and then give the download another go.", "elementor") }, "insufficient-quota": { title: (0, _wordpress_i18n.__)("Couldn’t Export the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("The export failed because it will pass the maximum Website Templates you can export.", "elementor") }, "failed-to-fetch-quota": { title: (0, _wordpress_i18n.__)("Couldn’t fetch quota", "elementor"), text: (0, _wordpress_i18n.__)("Failed to fetch quota.", "elementor") }, "insufficient-storage-quota": { title: (0, _wordpress_i18n.__)("Couldn’t Export the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("The export failed because it will pass the maximum Website Templates storage you have available.", "elementor") } }; function ProcessFailedDialog(_ref) { var errorType = _ref.errorType; var onApprove = _ref.onApprove; var onDismiss = _ref.onDismiss; var approveButton = _ref.approveButton; var dismissButton = _ref.dismissButton; var onModalClose = _ref.onModalClose; var onError = _ref.onError; var onLearnMore = _ref.onLearnMore; var action = useAction(); var returnTo = ((0, react.useContext)(SharedContext).data || {}).returnTo; var navigate = useNavigate(); var _useQueryParams$getAl = useQueryParams().getAll(); var referrer = _useQueryParams$getAl.referrer; var source = _useQueryParams$getAl.source; var error = "string" === typeof errorType && messagesContent$1[errorType] ? errorType : "general"; var _messagesContent$erro = messagesContent$1[error]; var title = _messagesContent$erro.title; var text = _messagesContent$erro.text; var tryAgainText = (0, _wordpress_i18n.__)("Try Again", "elementor"); var isTryAgainAction = "general" === error && onApprove; var handleOnApprove = function handleOnApprove() { if (isTryAgainAction) onApprove(); else window.open("https://go.elementor.com/app-import-download-failed", "_blank"); onLearnMore === null || onLearnMore === void 0 || onLearnMore(); }; var handleOnDismiss = function handleOnDismiss(event) { var isLoadingKitFromCloud = KIT_SOURCE_MAP.CLOUD === source; if (returnTo && safeRedirect$1(returnTo)) return; if ("general" === error && onDismiss) onDismiss(); else if ("kit-library" === referrer) { onModalClose === null || onModalClose === void 0 || onModalClose(event); navigate("/kit-library".concat(isLoadingKitFromCloud ? "/cloud" : "")); } else action.backToDashboard(); }; (0, react.useEffect)(function() { onError === null || onError === void 0 || onError(); }, []); return /*#__PURE__*/ react.default.createElement(Dialog$9, { title, text, approveButtonColor: "link", approveButtonText: isTryAgainAction ? tryAgainText : approveButton, approveButtonOnClick: handleOnApprove, dismissButtonText: dismissButton, dismissButtonOnClick: function dismissButtonOnClick(event) { return handleOnDismiss(event); }, onClose: handleOnDismiss }); } ProcessFailedDialog.propTypes = { onApprove: import_prop_types$82.default.func, onDismiss: import_prop_types$82.default.func, errorType: import_prop_types$82.default.string, approveButton: import_prop_types$82.default.string, dismissButton: import_prop_types$82.default.string, onModalClose: import_prop_types$82.default.func, onError: import_prop_types$82.default.func, onLearnMore: import_prop_types$82.default.func }; ProcessFailedDialog.defaultProps = { errorType: "general", approveButton: (0, _wordpress_i18n.__)("Learn More", "elementor"), dismissButton: (0, _wordpress_i18n.__)("Close", "elementor") }; //#endregion //#region app/assets/js/ui/molecules/notice.js init_utils$5(); init_text(); init_icon(); init_grid(); var iconsClassesMap = { danger: "eicon-warning", info: "eicon-info-circle-o", warning: "eicon-warning" }; function Notice$1(props) { var baseClassName = "eps-notice"; var classes = [baseClassName, props.className]; if (props.color) classes.push(baseClassName + "-semantic", baseClassName + "--" + props.color); return /*#__PURE__*/ react.default.createElement(Grid$14, { className: arrayToClassName(classes), container: true, noWrap: true, alignItems: "center", justify: "space-between" }, /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, container: true, alignItems: "start", noWrap: true }, props.withIcon && props.color && /*#__PURE__*/ react.default.createElement(Icon$2, { className: arrayToClassName(["eps-notice__icon", iconsClassesMap[props.color]]) }), /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xs", className: "eps-notice__text" }, props.label && /*#__PURE__*/ react.default.createElement("strong", null, props.label + " "), props.children)), props.button && /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, container: true, justify: "end", className: baseClassName + "__button-container" }, props.button)); } __name(Notice$1, "Notice"); Notice$1.propTypes = { className: import_prop_types$82.default.string, color: import_prop_types$82.default.string, label: import_prop_types$82.default.string, children: import_prop_types$82.default.any.isRequired, icon: import_prop_types$82.default.string, withIcon: import_prop_types$82.default.bool, button: import_prop_types$82.default.object }; Notice$1.defaultProps = { className: "", withIcon: true, button: null }; //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/assets/js/molecules/upload-file.scss var init_upload_file$1 = __esmMin((() => {})); //#endregion //#region app/assets/js/molecules/upload-file.js function UploadFile(props) { var fileInput = (0, react.useRef)(null); var classes = ["e-app-upload-file", props.className]; var frame; return /*#__PURE__*/ react.default.createElement("div", { className: arrayToClassName(classes) }, /*#__PURE__*/ react.default.createElement("input", { ref: fileInput, type: "file", accept: props.filetypes.map(function(type) { return "." + type; }).join(", "), className: "e-app-upload-file__input", onChange: function onChange(event) { var file = event.target.files[0]; if (file && isOneOf(file.type, props.filetypes)) props.onFileSelect(file, event, "browse"); else { fileInput.current.value = ""; props.onError({ id: "file_not_allowed", message: (0, _wordpress_i18n.__)("This file type is not allowed", "elementor") }); } } }), /*#__PURE__*/ react.default.createElement(Button$30, { className: "e-app-upload-file__button", text: props.text, variant: props.variant, color: props.color, size: "lg", hideText: props.isLoading, icon: props.isLoading ? "eicon-loading eicon-animation-spin" : "", onClick: function onClick() { if (props.onFileChoose) props.onFileChoose(); if (!props.isLoading) { if (props.onButtonClick) props.onButtonClick(); if ("file-explorer" === props.type) fileInput.current.click(); else if ("wp-media" === props.type) { if (frame) { frame.open(); return; } frame = wp.media({ multiple: false, library: { type: ["image", "image/svg+xml"] } }); frame.on("select", function() { if (props.onWpMediaSelect) props.onWpMediaSelect(frame); }); frame.open(); } } } })); } var import_prop_types$71; var init_upload_file = __esmMin((() => { import_prop_types$71 = /* @__PURE__ */ __toESM(require_prop_types()); init_button$1(); init_utils$5(); init_upload_file$1(); UploadFile.propTypes = { className: import_prop_types$71.default.string, type: import_prop_types$71.default.string, onWpMediaSelect: import_prop_types$71.default.func, text: import_prop_types$71.default.string, onFileSelect: import_prop_types$71.default.func, isLoading: import_prop_types$71.default.bool, filetypes: import_prop_types$71.default.array.isRequired, onError: import_prop_types$71.default.func, variant: import_prop_types$71.default.string, color: import_prop_types$71.default.string, onButtonClick: import_prop_types$71.default.func, onFileChoose: import_prop_types$71.default.func }; UploadFile.defaultProps = { className: "", type: "file-explorer", text: (0, _wordpress_i18n.__)("Select File", "elementor"), onError: function onError() {}, variant: "contained", color: "primary" }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/assets/js/ui/atoms/drag-drop.scss var init_drag_drop$1 = __esmMin((() => {})); //#endregion //#region app/assets/js/ui/atoms/drag-drop.js function DragDrop(props) { var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isDragOver = _useState2[0]; var setIsDragOver = _useState2[1]; var getClassName = function getClassName() { var baseClassName = "e-app-drag-drop"; var classes = [baseClassName, props.className]; if (isDragOver && !props.isLoading) classes.push(baseClassName + "--drag-over"); return arrayToClassName(classes); }; var onDragDropActions = function onDragDropActions(event) { event.preventDefault(); event.stopPropagation(); }; return /*#__PURE__*/ react.default.createElement("div", _extends$1({}, { onDrop: function onDrop(event) { onDragDropActions(event); setIsDragOver(false); if (props.onDrop) props.onDrop(event); }, onDragOver: function onDragOver(event) { onDragDropActions(event); setIsDragOver(true); if (props.onDragOver) props.onDragOver(event); }, onDragLeave: function onDragLeave(event) { onDragDropActions(event); setIsDragOver(false); if (props.onDragLeave) props.onDragLeave(event); } }, { className: getClassName() }), props.children); } var import_prop_types$70; var init_drag_drop = __esmMin((() => { import_prop_types$70 = /* @__PURE__ */ __toESM(require_prop_types()); init_extends(); init_slicedToArray(); init_utils$5(); init_drag_drop$1(); DragDrop.propTypes = { className: import_prop_types$70.default.string, children: import_prop_types$70.default.any, onDrop: import_prop_types$70.default.func, onDragLeave: import_prop_types$70.default.func, onDragOver: import_prop_types$70.default.func, isLoading: import_prop_types$70.default.bool }; DragDrop.defaultProps = { className: "" }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/assets/js/organisms/drop-zone.scss var init_drop_zone$1 = __esmMin((() => {})); //#endregion //#region app/assets/js/organisms/drop-zone.js function DropZone$1(props) { var classes = ["e-app-drop-zone", props.className]; return /*#__PURE__*/ react.default.createElement("section", { className: arrayToClassName(classes) }, /*#__PURE__*/ react.default.createElement(DragDrop, _extends$1({}, { onDrop: function onDrop(event) { if (!props.isLoading) { var file = event.dataTransfer.files[0]; if (file && isOneOf(file.type, props.filetypes)) props.onFileSelect(file, event, "drop"); else props.onError({ id: "file_not_allowed", message: (0, _wordpress_i18n.__)("This file type is not allowed", "elementor") }); } } }, { isLoading: props.isLoading }), props.icon && /*#__PURE__*/ react.default.createElement(Icon$2, { className: "e-app-drop-zone__icon ".concat(props.icon) }), props.heading && /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "display-3" }, props.heading), props.text && /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xl", className: "e-app-drop-zone__text" }, props.text), props.secondaryText && /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xl", className: "e-app-drop-zone__secondary-text" }, props.secondaryText), props.showButton && /*#__PURE__*/ react.default.createElement(UploadFile, { isLoading: props.isLoading, type: props.type, onButtonClick: props.onButtonClick, onFileSelect: props.onFileSelect, onWpMediaSelect: function onWpMediaSelect(frame) { return props.onWpMediaSelect(frame); }, onError: function onError(error) { return props.onError(error); }, text: props.buttonText, filetypes: props.filetypes, variant: props.buttonVariant, color: props.buttonColor, onFileChoose: props.onFileChoose }), props.description && /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xl", className: "e-app-drop-zone__description" }, props.description))); } var import_prop_types$69; var init_drop_zone = __esmMin((() => { import_prop_types$69 = /* @__PURE__ */ __toESM(require_prop_types()); init_extends(); init_utils$5(); init_upload_file(); init_drag_drop(); init_icon(); init_heading(); init_text(); init_drop_zone$1(); __name(DropZone$1, "DropZone"); DropZone$1.propTypes = { className: import_prop_types$69.default.string, children: import_prop_types$69.default.any, type: import_prop_types$69.default.string, onFileSelect: import_prop_types$69.default.func.isRequired, onWpMediaSelect: import_prop_types$69.default.func, heading: import_prop_types$69.default.string, text: import_prop_types$69.default.string, secondaryText: import_prop_types$69.default.string, buttonText: import_prop_types$69.default.string, buttonVariant: import_prop_types$69.default.string, buttonColor: import_prop_types$69.default.string, icon: import_prop_types$69.default.string, showButton: import_prop_types$69.default.bool, showIcon: import_prop_types$69.default.bool, isLoading: import_prop_types$69.default.bool, filetypes: import_prop_types$69.default.array.isRequired, onError: import_prop_types$69.default.func, description: import_prop_types$69.default.string, onButtonClick: import_prop_types$69.default.func, onFileChoose: import_prop_types$69.default.func }; DropZone$1.defaultProps = { className: "", type: "file-explorer", icon: "eicon-library-upload", showButton: true, showIcon: true, onError: function onError() {} }; })); //#endregion //#region app/assets/js/molecules/elementor-loading.js function ElementorLoading(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loading" }, /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loader-wrapper" }, /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loader" }, /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loader-boxes" }, /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loader-box" }), /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loader-box" }), /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loader-box" }), /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loader-box" }))), /*#__PURE__*/ react.default.createElement("div", { className: "elementor-loading-title" }, props.loadingText))); } var import_prop_types$68; var init_elementor_loading = __esmMin((() => { import_prop_types$68 = /* @__PURE__ */ __toESM(require_prop_types()); ElementorLoading.propTypes = { loadingText: import_prop_types$68.default.string }; ElementorLoading.defaultProps = { loadingText: (0, _wordpress_i18n.__)("Loading", "elementor") }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/assets/js/ui/atoms/checkbox.scss init_drop_zone(); init_elementor_loading(); //#endregion //#region app/assets/js/ui/atoms/checkbox.js init_utils$5(); function Checkbox$5(_ref) { var className = _ref.className; var checked = _ref.checked; var rounded = _ref.rounded; var indeterminate = _ref.indeterminate; var error = _ref.error; var disabled = _ref.disabled; var onChange = _ref.onChange; var id = _ref.id; var baseClassName = "eps-checkbox"; var classes = [baseClassName, className]; if (rounded) classes.push(baseClassName + "--rounded"); if (indeterminate) classes.push(baseClassName + "--indeterminate"); if (error) classes.push(baseClassName + "--error"); return /*#__PURE__*/ react.default.createElement("input", { className: arrayToClassName(classes), type: "checkbox", checked, disabled, onChange, id }); } __name(Checkbox$5, "Checkbox"); Checkbox$5.propTypes = { className: import_prop_types$82.default.string, checked: import_prop_types$82.default.bool, disabled: import_prop_types$82.default.bool, indeterminate: import_prop_types$82.default.bool, rounded: import_prop_types$82.default.bool, error: import_prop_types$82.default.bool, onChange: import_prop_types$82.default.func, id: import_prop_types$82.default.string }; Checkbox$5.defaultProps = { className: "", checked: null, disabled: false, indeterminate: false, error: false, onChange: function onChange() {} }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-kit/import-kit.js init_slicedToArray(); init_es$1(); init_use_query_params(); init_button$1(); init_apps_event_tracking(); init_dialog(); init_use_kit$1(); function ImportKit$1() { var sharedContext = (0, react.useContext)(SharedContext); var importContext = (0, react.useContext)(ImportContext$1); var navigate = useNavigate(); var _useKit = useKit$1(); var kitState = _useKit.kitState; var kitActions = _useKit.kitActions; var KIT_STATUS_MAP = _useKit.KIT_STATUS_MAP; var _useState2 = _slicedToArray((0, react.useState)(""), 2); var errorType = _useState2[0]; var setErrorType = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isLoading = _useState4[0]; var setIsLoading = _useState4[1]; var _sharedContext$data = sharedContext.data; var referrer = _sharedContext$data.referrer; var currentPage = _sharedContext$data.currentPage; var resetImportProcess = function resetImportProcess() { importContext.dispatch({ type: "SET_FILE", payload: null }); setErrorType(null); setIsLoading(false); kitActions.reset(); }; var eventTracking = function eventTracking(command) { var event = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var eventType = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "click"; var error = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; var modalType = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : null; var uploadMethod = arguments.length > 5 ? arguments[5] : void 0; if ("kit-library" === referrer) { var uploadMethodName = null; if (uploadMethod) uploadMethodName = "drop" === uploadMethod ? "drag-drop" : "browse"; var element = null; if (event && "eps-button eps-dialog__button" === event.currentTarget.className.trim()) element = "close button"; else if (event && "eps-button eps-dialog__close-button" === event.currentTarget.className.trim()) element = "x"; appsEventTrackingDispatch(command, { element, page_source: "import", event_type: eventType, step: currentPage, error: "general" === error ? "unknown" : error, modal_type: modalType, method: uploadMethodName }); } }; var getLearnMoreLink = function getLearnMoreLink() { return /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-what-are-kits", key: "learn-more-link", italic: true, onClick: function onClick() { return eventTracking("kit-library/seek-more-info", null, "click"); } }, (0, _wordpress_i18n.__)("Learn More", "elementor")); }; var _useConfirmAction = (0, _elementor_hooks.useConfirmAction)({ doNotShowAgainKey: "upload_json_warning_generic_message", action: function action(file, e) { setIsLoading(true); importContext.dispatch({ type: "SET_FILE", payload: file }); eventTracking("kit-library/file-upload", null, "feedback", null, null, e.type); } }); var uploadFile = _useConfirmAction.runAction; var dialog = _useConfirmAction.dialog; var checkbox = _useConfirmAction.checkbox; var _useQueryParams$getAl = useQueryParams().getAll(); var source = _useQueryParams$getAl.source; var kitId = _useQueryParams$getAl.kit_id; var isLoadingKitFromCloud = [importContext.data.source, source].includes(KIT_SOURCE_MAP.CLOUD); (0, react.useEffect)(function() { sharedContext.dispatch({ type: "SET_INCLUDES", payload: [] }); importContext.dispatch({ type: "SET_KIT_SOURCE", payload: source }); sharedContext.dispatch({ type: "SET_CURRENT_PAGE_NAME", payload: ImportKit$1.name }); }, []); (0, react.useEffect)(function() { if (importContext.data.file) kitActions.upload({ file: importContext.data.file }); }, [importContext.data.file]); (0, react.useEffect)(function() { if (KIT_STATUS_MAP.UPLOADED === kitState.status) { importContext.dispatch({ type: "SET_UPLOADED_DATA", payload: kitState.data }); if (isLoadingKitFromCloud && kitState.data.uploaded_kit) importContext.dispatch({ type: "SET_FILE", payload: kitState.data.uploaded_kit }); } else if ("error" === kitState.status) setErrorType(kitState.data); }, [kitState.status]); (0, react.useEffect)(function() { if (importContext.data.uploadedData && importContext.data.file) navigate(importContext.data.uploadedData.manifest.plugins ? "/import/plugins" : "/import/content"); }, [importContext.data.uploadedData]); (0, react.useEffect)(function() { if (KIT_SOURCE_MAP.CLOUD === source && kitId) kitActions.upload({ source, kitId }); }, [source, kitId]); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "import" }, /*#__PURE__*/ react.default.createElement("section", { className: "e-app-import" }, isLoadingKitFromCloud ? /*#__PURE__*/ react.default.createElement(ElementorLoading, null) : /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, "kit-library" === referrer && /*#__PURE__*/ react.default.createElement(Button$30, { className: "e-app-import__back-to-library", icon: "eicon-chevron-left", text: (0, _wordpress_i18n.__)("Back to Website Templates", "elementor"), url: isLoading ? "" : "/kit-library".concat(isLoadingKitFromCloud ? "/cloud" : "") }), /*#__PURE__*/ react.default.createElement(PageHeader$1, { heading: (0, _wordpress_i18n.__)("Import a Website Template", "elementor"), description: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Upload a .zip file with style, site settings, content, etc. Then, we’ll apply them to your site.", "elementor"), " ", getLearnMoreLink()) }), /*#__PURE__*/ react.default.createElement(Notice$1, { label: (0, _wordpress_i18n.__)("Heads up!", "elementor"), color: "warning", className: "e-app-import__notice" }, (0, _wordpress_i18n.__)("Before applying a new template, we recommend backing up your site so you can roll back any undesired changes.", "elementor")), /*#__PURE__*/ react.default.createElement(DropZone$1, { className: "e-app-import__drop-zone", heading: (0, _wordpress_i18n.__)("Choose a file to import", "elementor"), text: (0, _wordpress_i18n.__)("Drag & drop the .zip file with your website template", "elementor"), secondaryText: (0, _wordpress_i18n.__)("Or", "elementor"), filetypes: ["zip"], onFileChoose: function onFileChoose() { return eventTracking("kit-library/choose-file"); }, onFileSelect: uploadFile, onError: function onError() { return setErrorType("general"); }, isLoading, buttonText: (0, _wordpress_i18n.__)("Import from files", "elementor") }), dialog.isOpen && /*#__PURE__*/ react.default.createElement(Dialog$9, { title: (0, _wordpress_i18n.__)("Warning: JSON or ZIP files may be unsafe", "elementor"), text: (0, _wordpress_i18n.__)("Uploading JSON or ZIP files from unknown sources can be harmful and put your site at risk. For maximum safety, upload only JSON or ZIP files from trusted sources.", "elementor"), approveButtonColor: "link", approveButtonText: (0, _wordpress_i18n.__)("Continue", "elementor"), approveButtonOnClick: dialog.approve, dismissButtonText: (0, _wordpress_i18n.__)("Cancel", "elementor"), dismissButtonOnClick: dialog.dismiss, onClose: dialog.dismiss }, /*#__PURE__*/ react.default.createElement("label", { htmlFor: "do-not-show-upload-json-warning-again", style: { display: "flex", alignItems: "center", gap: "5px" } }, /*#__PURE__*/ react.default.createElement(Checkbox$5, { id: "do-not-show-upload-json-warning-again", type: "checkbox", value: checkbox.isChecked, onChange: function onChange(event) { return checkbox.setIsChecked(!!event.target.checked); } }), (0, _wordpress_i18n.__)("Do not show this message again", "elementor")))), errorType && /*#__PURE__*/ react.default.createElement(ProcessFailedDialog, { errorType, onApprove: resetImportProcess, onModalClose: function onModalClose(event) { return eventTracking("kit-library/modal-close", event, "load", null, "error"); }, onError: function onError() { return eventTracking("kit-library/modal-open", null, "load", errorType, "error"); }, onLearnMore: function onLearnMore() { return eventTracking("kit-library/seek-more-info", null, "click", null, "error"); } }))); } __name(ImportKit$1, "ImportKit"); //#endregion //#region \0vite/preload-helper.js var scriptRel, assetsURL, seen, __vitePreload; var init_preload_helper = __esmMin((() => { scriptRel = "modulepreload"; assetsURL = function(dep) { return "/" + dep; }; seen = {}; __vitePreload = function preload(baseModule, deps, importerUrl) { let promise = Promise.resolve(); if (false && deps && deps.length > 0) { const links = document.getElementsByTagName("link"); const cspNonceMeta = document.querySelector("meta[property=csp-nonce]"); const cspNonce = (cspNonceMeta === null || cspNonceMeta === void 0 ? void 0 : cspNonceMeta.nonce) || (cspNonceMeta === null || cspNonceMeta === void 0 ? void 0 : cspNonceMeta.getAttribute("nonce")); function allSettled(promises) { return Promise.all(promises.map((p) => Promise.resolve(p).then((value) => ({ status: "fulfilled", value }), (reason) => ({ status: "rejected", reason })))); } function importMetaResolve(specifier) { if ({}.resolve) return {}.resolve(specifier); return new URL( specifier, /** #__KEEP__ */ {}.url ).href; } promise = allSettled(deps.map((dep) => { dep = assetsURL(dep, importerUrl); dep = importMetaResolve(dep); if (dep in seen) return; seen[dep] = true; const isCss = dep.endsWith(".css"); for (let i = links.length - 1; i >= 0; i--) { const link = links[i]; if (link.href === dep && (!isCss || link.rel === "stylesheet")) return; } const link = document.createElement("link"); link.rel = isCss ? "stylesheet" : scriptRel; if (!isCss) link.as = "script"; link.crossOrigin = ""; link.href = dep; if (cspNonce) link.setAttribute("nonce", cspNonce); document.head.appendChild(link); if (isCss) return new Promise((res, rej) => { link.addEventListener("load", res); link.addEventListener("error", () => rej(/* @__PURE__ */ new Error(`Unable to preload CSS for ${dep}`))); }); })); } function handlePreloadError(err) { const e = new Event("vite:preloadError", { cancelable: true }); e.payload = err; window.dispatchEvent(e); if (!e.defaultPrevented) throw err; } return promise.then((res) => { for (const item of res || []) { if (item.status !== "rejected") continue; handlePreloadError(item.reason); } return baseModule().catch(handlePreloadError); }); }; })); //#endregion //#region app/assets/js/molecules/tooltip.js function Tooltip$2(props) { var classes = ["e-app-tooltip", props.className]; var childRef = (0, react.useRef)(null); var isAborted = (0, react.useRef)(false); var isManualControl = Object.prototype.hasOwnProperty.call(props, "show"); var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isLibraryLoaded = _useState2[0]; var setIsLibraryLoaded = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var showTooltip = _useState4[0]; var setShowTooltip = _useState4[1]; var tipsyConfig = { trigger: isManualControl ? "manual" : "hover", gravity: { top: "s", right: "w", down: "n", left: "e" }[props.direction], offset: props.offset, title: function title() { return props.title; } }; var setTipsy = function setTipsy() { var $tooltipContainer = jQuery(childRef.current); $tooltipContainer.tipsy(tipsyConfig); if (isManualControl) { var displayMode = showTooltip ? "show" : "hide"; $tooltipContainer.tipsy(displayMode); } }; (0, react.useEffect)(function() { if (!props.disabled) { isAborted.current = false; __vitePreload(() => import( /* webpackIgnore: true */ "".concat(elementorCommon.config.urls.assets, "lib/tipsy/tipsy.min.js?ver=1.0.0") ).then(function() { if (!isAborted.current) if (isLibraryLoaded) setTipsy(); else setIsLibraryLoaded(true); }), void 0); } return function() { if (!props.disabled) { isAborted.current = true; var nodes = document.querySelectorAll(".tipsy"); if (!nodes.length) return; nodes[nodes.length - 1].remove(); } }; }, [props.disabled]); (0, react.useEffect)(function() { if (isLibraryLoaded) setTipsy(); }, [isLibraryLoaded, showTooltip]); (0, react.useEffect)(function() { if (!props.disabled && props.show !== showTooltip) setShowTooltip(props.show); }, [props.show]); return /*#__PURE__*/ react.default.createElement(props.tag, { className: arrayToClassName(classes), ref: childRef }, props.children); } var import_prop_types$67; var init_tooltip = __esmMin((() => { import_prop_types$67 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); init_utils$5(); init_preload_helper(); __name(Tooltip$2, "Tooltip"); Tooltip$2.propTypes = { className: import_prop_types$67.default.string, offset: import_prop_types$67.default.number, show: import_prop_types$67.default.bool, direction: import_prop_types$67.default.oneOf([ "top", "right", "left", "down" ]), tag: import_prop_types$67.default.string.isRequired, title: import_prop_types$67.default.string.isRequired, disabled: import_prop_types$67.default.bool, children: import_prop_types$67.default.any }; Tooltip$2.defaultProps = { className: "", offset: 10, direction: "top", disabled: false }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/import-export/assets/js/shared/kit-content/components/templates-features/templates-features.scss init_tooltip(); //#endregion //#region app/modules/import-export/assets/js/shared/kit-content/components/templates-features/templates-features.js function TemplatesFeatures(props) { var _props$features$locke; var isLockedFeatures = (_props$features$locke = props.features.locked) === null || _props$features$locke === void 0 ? void 0 : _props$features$locke.length; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, function getOpenFeatures() { var _props$features$open; return (_props$features$open = props.features.open) === null || _props$features$open === void 0 ? void 0 : _props$features$open.join(", "); }(), function getLockedFeatures() { if (!isLockedFeatures) return; return /*#__PURE__*/ react.default.createElement(Tooltip$2, { tag: "span", offset: 19, show: props.showTooltip, title: props.features.tooltip, disabled: !props.isLocked, className: props.isLocked ? "e-app-export-templates-features__locked" : "" }, ", " + props.features.locked.join(", ")); }()); } TemplatesFeatures.propTypes = { features: import_prop_types$82.default.object, isLocked: import_prop_types$82.default.bool, showTooltip: import_prop_types$82.default.bool }; TemplatesFeatures.defaultProps = { showTooltip: false }; //#endregion //#region app/modules/import-export/assets/js/shared/kit-content/components/kit-content-checkbox/kit-content-checkbox.js function KitContentCheckbox(props) { var sharedContext = (0, react.useContext)(SharedContext); var isSelected = function isSelected() { return sharedContext.data.includes.includes(props.type); }; var setIncludes = function setIncludes(event) { var _props$onCheck; var actionType = event.target.checked ? "ADD_INCLUDE" : "REMOVE_INCLUDE"; (_props$onCheck = props.onCheck) === null || _props$onCheck === void 0 || _props$onCheck.call(props, event, props.type); sharedContext.dispatch({ type: actionType, payload: props.type }); }; (0, react.useEffect)(function() { if (!sharedContext.data.includes.length) sharedContext.dispatch({ type: "ADD_INCLUDE", payload: props.type }); }, []); return (0, react.useMemo)(function() { return /*#__PURE__*/ react.default.createElement(Checkbox$5, { checked: isSelected(), onChange: setIncludes, className: props.className }); }, [sharedContext.data.includes]); } KitContentCheckbox.propTypes = { className: import_prop_types$82.default.string, type: import_prop_types$82.default.string.isRequired }; KitContentCheckbox.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/atoms/select.js function Select$2(props) { return /*#__PURE__*/ react.default.createElement("select", { multiple: props.multiple, className: props.className, value: props.value, onChange: props.onChange, ref: props.elRef, onClick: function onClick() { var _props$onClick; return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props); } }, props.options.map(function(option) { return option.children ? /*#__PURE__*/ react.default.createElement("optgroup", { label: option.label, key: option.label }, option.children.map(function(childOption) { return /*#__PURE__*/ react.default.createElement("option", { key: childOption.value, value: childOption.value }, childOption.label); })) : /*#__PURE__*/ react.default.createElement("option", { key: option.value, value: option.value }, option.label); })); } __name(Select$2, "Select"); Select$2.propTypes = { className: import_prop_types$82.default.string, onChange: import_prop_types$82.default.func, options: import_prop_types$82.default.array, elRef: import_prop_types$82.default.object, multiple: import_prop_types$82.default.bool, value: import_prop_types$82.default.oneOfType([import_prop_types$82.default.array, import_prop_types$82.default.string]), onClick: import_prop_types$82.default.func }; Select$2.defaultProps = { className: "", options: [] }; //#endregion //#region app/assets/js/ui/molecules/select2.js init_defineProperty$1(); function ownKeys$34(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; } __name(ownKeys$34, "ownKeys"); function _objectSpread$33(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$34(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$34(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$33, "_objectSpread"); /** * Default settings of the select 2 * * @return {{placeholder: string, allowClear: boolean, dir: string}} */ var getDefaultSettings = function getDefaultSettings() { return { allowClear: true, placeholder: "", dir: elementorCommon.config.isRTL ? "rtl" : "ltr" }; }; /** * Main component * * @param {*} props * @return {*} component * @function Object() { [native code] } */ function Select2(props) { var ref = react.default.useRef(null); react.default.useEffect(function() { var $select2 = jQuery(ref.current).select2(_objectSpread$33(_objectSpread$33(_objectSpread$33({}, getDefaultSettings()), props.settings), {}, { placeholder: props.placeholder })).on("select2:select select2:unselect", props.onChange); if (props.onReady) props.onReady($select2); return function() { $select2.select2("destroy").off("select2:select select2:unselect"); }; }, [props.settings, props.options]); react.default.useEffect(function() { jQuery(ref.current).val(props.value).trigger("change"); }, [props.value]); return /*#__PURE__*/ react.default.createElement(Select$2, { multiple: props.multiple, value: props.value, onChange: props.onChange, elRef: ref, options: props.options, placeholder: props.placeholder }); } Select2.propTypes = { value: import_prop_types$82.default.oneOfType([import_prop_types$82.default.array, import_prop_types$82.default.string]), onChange: import_prop_types$82.default.func, onReady: import_prop_types$82.default.func, options: import_prop_types$82.default.array, settings: import_prop_types$82.default.object, multiple: import_prop_types$82.default.bool, placeholder: import_prop_types$82.default.string }; Select2.defaultProps = { settings: {}, options: [], dependencies: [], placeholder: "" }; //#endregion //#region app/assets/js/ui/atoms/text-field.js init_extends(); init_defineProperty$1(); init_utils$5(); function ownKeys$33(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; } __name(ownKeys$33, "ownKeys"); function _objectSpread$32(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$33(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$33(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$32, "_objectSpread"); function TextField(props) { var classNameBase = "eps-text-field"; var classes = [ classNameBase, props.className, _defineProperty$1({}, classNameBase + "--outlined", "outlined" === props.variant), _defineProperty$1({}, classNameBase + "--standard", "standard" === props.variant) ]; var validProps = _objectSpread$32(_objectSpread$32({}, props), {}, { className: arrayToClassName(classes) }); if (validProps.multiline) { delete validProps.multiline; return /*#__PURE__*/ react.default.createElement("textarea", validProps); } return /*#__PURE__*/ react.default.createElement("input", _extends$1({}, validProps, { type: "text" })); } TextField.propTypes = { className: import_prop_types$82.default.string, multiline: import_prop_types$82.default.bool, variant: import_prop_types$82.default.oneOf(["standard", "outlined"]), children: import_prop_types$82.default.string }; TextField.defaultProps = { className: "", variant: "standard" }; //#endregion //#region app/modules/import-export/assets/js/shared/cpt-select-box/cpt-select-box.js init_slicedToArray(); init_text(); function CptSelectBox() { var sharedContext = (0, react.useContext)(SharedContext); var customPostTypes = (sharedContext.data || []).customPostTypes; var _useState2 = _slicedToArray((0, react.useState)([]), 2); var selected = _useState2[0]; var setSelected = _useState2[1]; (0, react.useEffect)(function() { setSelected(arrayValueIterator(customPostTypes)); }, [customPostTypes]); (0, react.useEffect)(function() { sharedContext.dispatch({ type: "SET_SELECTED_CPT", payload: selected }); }, [selected]); var arrayValueIterator = function arrayValueIterator(array) { return array.map(function(_ref2) { return _ref2.value; }); }; var selectedCpt = function selectedCpt(selectedValue) { setSelected(arrayValueIterator(Array.from(selectedValue))); }; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(Text$11, { variant: "sm", tag: "p", className: "e-app-export-kit-content__description" }, (0, _wordpress_i18n.__)("Custom Post Type", "elementor")), customPostTypes.length > 0 ? /*#__PURE__*/ react.default.createElement(Select2, { multiple: true, settings: { width: "100%" }, options: customPostTypes, onChange: function onChange(e) { return selectedCpt(e.target.selectedOptions); }, value: selected, placeholder: (0, _wordpress_i18n.__)("Click to select custom post types", "elementor") }) : /*#__PURE__*/ react.default.createElement(TextField, { variant: "outlined", placeholder: (0, _wordpress_i18n.__)("No custom post types in your site...", "elementor"), className: "e-app-export-kit-content__disabled" }), /*#__PURE__*/ react.default.createElement(Text$11, { variant: "sm", tag: "span", className: "e-app-export-kit-content__small-notice" }, (0, _wordpress_i18n.__)("Add the custom posts types to export. The latest 20 items from each type will be included.", "elementor"))); } //#endregion //#region app/assets/js/molecules/go-pro-button.js init_extends(); init_button$1(); init_utils$5(); function GoProButton(props) { var classes = ["e-app-go-pro-button", props.className]; return /*#__PURE__*/ react.default.createElement(Button$30, _extends$1({}, props, { className: arrayToClassName(classes), text: props.text })); } GoProButton.propTypes = { className: import_prop_types$82.default.string, text: import_prop_types$82.default.string }; GoProButton.defaultProps = { className: "", variant: "outlined", size: "sm", color: "cta", target: "_blank", rel: "noopener noreferrer", text: (0, _wordpress_i18n.__)("Upgrade Now", "elementor") }; //#endregion //#region app/assets/js/ui/atoms/box.js init_utils$5(); function Box$22(props) { var baseClassName = "eps-box"; var classes = [baseClassName, props.className]; var style = {}; if (Object.prototype.hasOwnProperty.call(props, "padding")) { style["--eps-box-padding"] = pxToRem(props.padding); classes.push(baseClassName + "--padding"); } return /*#__PURE__*/ react.default.createElement("div", { style, className: arrayToClassName(classes) }, props.children); } __name(Box$22, "Box"); Box$22.propTypes = { className: import_prop_types$82.default.string, padding: import_prop_types$82.default.string, children: import_prop_types$82.default.oneOfType([ import_prop_types$82.default.string, import_prop_types$82.default.object, import_prop_types$82.default.arrayOf(import_prop_types$82.default.object) ]).isRequired }; Box$22.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/molecules/list-item.js init_utils$5(); function ListItem(props) { var baseClassName = "eps-list__item"; var classes = [baseClassName, props.className]; var style; if (Object.prototype.hasOwnProperty.call(props, "padding")) { style = { "--eps-list-item-padding": pxToRem(props.padding) }; classes.push(baseClassName + "--padding"); } return /*#__PURE__*/ react.default.createElement("li", { style, className: arrayToClassName(classes) }, props.children); } ListItem.propTypes = { className: import_prop_types$82.default.string, padding: import_prop_types$82.default.string, children: import_prop_types$82.default.any.isRequired }; ListItem.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/molecules/list.js init_utils$5(); function List(props) { var baseClassName = "eps-list"; var classes = [baseClassName, props.className]; var style; if (Object.prototype.hasOwnProperty.call(props, "padding")) { style = { "--eps-list-padding": pxToRem(props.padding) }; classes.push(baseClassName + "--padding"); } if (props.separated) classes.push(baseClassName + "--separated"); return /*#__PURE__*/ react.default.createElement("ul", { style, className: arrayToClassName(classes) }, props.children); } List.propTypes = { className: import_prop_types$82.default.string, divided: import_prop_types$82.default.any, separated: import_prop_types$82.default.any, padding: import_prop_types$82.default.string, children: import_prop_types$82.default.oneOfType([import_prop_types$82.default.object, import_prop_types$82.default.arrayOf(import_prop_types$82.default.object)]).isRequired }; List.defaultProps = { className: "" }; List.Item = ListItem; //#endregion //#region app/modules/import-export/assets/js/shared/kit-content/kit-content.js init_defineProperty$1(); init_slicedToArray(); init_heading(); init_text(); init_grid(); init_apps_event_tracking(); function ownKeys$32(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; } __name(ownKeys$32, "ownKeys"); function _objectSpread$31(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$32(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$32(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$31, "_objectSpread"); function KitContent(_ref) { var contentData = _ref.contentData; var hasPro = _ref.hasPro; var _useState2 = _slicedToArray((0, react.useState)({}), 2); var containerHover = _useState2[0]; var setContainerHover = _useState2[1]; var _sharedContext$data = (0, react.useContext)(SharedContext).data; var referrer = _sharedContext$data.referrer; var currentPage = _sharedContext$data.currentPage; var isProExist = hasPro || elementorAppConfig.hasPro; var getTemplateFeatures = function getTemplateFeatures(features, index) { if (!features) return; return /*#__PURE__*/ react.default.createElement(TemplatesFeatures, { features, isLocked: !isProExist, showTooltip: containerHover[index] }); }; var setContainerHoverState = function setContainerHoverState(index, state) { setContainerHover(function(prevState) { return _objectSpread$31(_objectSpread$31({}, prevState), {}, _defineProperty$1({}, index, state)); }); }; var eventTracking = function eventTracking(event, chosenPart) { if ("kit-library" === referrer) { var command = event.target.checked && event.target.checked ? "check" : "uncheck"; appsEventTrackingDispatch("kit-library/".concat(command), { page_source: "import", step: currentPage, event_type: "click", site_part: chosenPart }); } }; if (!contentData.length) return null; return /*#__PURE__*/ react.default.createElement(Box$22, null, /*#__PURE__*/ react.default.createElement(List, { separated: true, className: "e-app-export-kit-content" }, contentData.map(function(_ref2, index) { var _data$features; var type = _ref2.type; var data = _ref2.data; var isLockedFeaturesNoPro = ((_data$features = data.features) === null || _data$features === void 0 ? void 0 : _data$features.locked) && !isProExist; return /*#__PURE__*/ react.default.createElement(List.Item, { padding: "20", key: type, className: "e-app-export-kit-content__item" }, /*#__PURE__*/ react.default.createElement("div", { onMouseEnter: function onMouseEnter() { return isLockedFeaturesNoPro && setContainerHoverState(index, true); }, onMouseLeave: function onMouseLeave() { return isLockedFeaturesNoPro && setContainerHoverState(index, false); } }, /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, noWrap: true }, /*#__PURE__*/ react.default.createElement(KitContentCheckbox, { type, className: "e-app-export-kit-content__checkbox", onCheck: function onCheck(event, chosenPart) { eventTracking(event, chosenPart); } }), /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, container: true }, /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "h4", tag: "h3", className: "e-app-export-kit-content__title" }, data.title), /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, container: true, direction: isLockedFeaturesNoPro ? "row" : "column", alignItems: "baseline" }, /*#__PURE__*/ react.default.createElement(Text$11, { variant: "sm", tag: "p", className: "e-app-export-kit-content__description" }, data.description || getTemplateFeatures(data.features, index)), "content" === type && /*#__PURE__*/ react.default.createElement(CptSelectBox, null), isLockedFeaturesNoPro && /*#__PURE__*/ react.default.createElement(GoProButton, { className: "e-app-export-kit-content__go-pro-button", url: "https://go.elementor.com/go-pro-import-export" })))))); }))); } KitContent.propTypes = { className: import_prop_types$82.default.string, contentData: import_prop_types$82.default.array.isRequired, hasPro: import_prop_types$82.default.bool }; KitContent.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/shared/cpt-select-box/cpt-object-to-options-array.js var cptObjectToOptionsArray = function cptObjectToOptionsArray(cptObject) { var label = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "label"; var cptOptionsArray = []; if (cptObject && label) Object.keys(cptObject).forEach(function(key) { return cptOptionsArray.push({ label: cptObject[key][label], value: key }); }); return cptOptionsArray; }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-content/components/import-content-display/import-content-display.js function ImportContentDisplay(_ref) { var manifest = _ref.manifest; var hasPro = _ref.hasPro; var hasPlugins = _ref.hasPlugins; var isAllRequiredPluginsSelected = _ref.isAllRequiredPluginsSelected; var onResetProcess = _ref.onResetProcess; var sharedContext = (0, react.useContext)(SharedContext); var kitData = kitContentData$1.filter(function(_ref2) { var type = _ref2.type; var data = manifest === null || manifest === void 0 ? void 0 : manifest["settings" === type ? "site-settings" : type]; return !!(Array.isArray(data) ? data.length : data); }); (0, react.useEffect)(function() { sharedContext.dispatch({ type: "SET_CPT", payload: cptObjectToOptionsArray(manifest === null || manifest === void 0 ? void 0 : manifest["custom-post-type-title"], "label") }); }, []); if (!kitData.length && hasPlugins) return /*#__PURE__*/ react.default.createElement(Notice$1, { color: "info", label: (0, _wordpress_i18n.__)("Note:", "elementor") }, (0, _wordpress_i18n.__)("The Website Kit you’re using contains plugins for functionality, but no content or pages, etc.", "elementor")); if (!kitData.length) return /*#__PURE__*/ react.default.createElement(Notice$1, { color: "danger" }, (0, _wordpress_i18n.__)("You can’t use this Website Kit because it doesn’t contain any content, pages, etc. Try again with a different file.", "elementor"), " ", /*#__PURE__*/ react.default.createElement(InlineLink, { onClick: onResetProcess }, (0, _wordpress_i18n.__)("Go Back", "elementor"))); return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, !isAllRequiredPluginsSelected && /*#__PURE__*/ react.default.createElement(Notice$1, { color: "warning", label: (0, _wordpress_i18n.__)("Required plugins are still missing.", "elementor"), className: "e-app-import-content__plugins-notice" }, (0, _wordpress_i18n.__)("If you don't include them, this kit may not work properly.", "elementor"), " ", /*#__PURE__*/ react.default.createElement(InlineLink, { url: "/import/plugins" }, (0, _wordpress_i18n.__)("Go Back", "elementor"))), /*#__PURE__*/ react.default.createElement(KitContent, { contentData: kitData, hasPro })); } ImportContentDisplay.propTypes = { manifest: import_prop_types$82.default.object, hasPro: import_prop_types$82.default.bool, hasPlugins: import_prop_types$82.default.bool, isAllRequiredPluginsSelected: import_prop_types$82.default.bool, onResetProcess: import_prop_types$82.default.func }; //#endregion //#region app/assets/js/organisms/wizard-footer.js init_extends(); init_utils$5(); init_grid(); function WizardFooter(props) { var baseClassName = "e-app-wizard-footer"; var classes = [baseClassName, props.className]; if (props.separator) classes.push(baseClassName + "__separator"); return /*#__PURE__*/ react.default.createElement(Grid$14, _extends$1({ container: true }, props, { className: arrayToClassName(classes) }), props.children); } WizardFooter.propTypes = { className: import_prop_types$82.default.string, justify: import_prop_types$82.default.any, separator: import_prop_types$82.default.any, children: import_prop_types$82.default.oneOfType([ import_prop_types$82.default.string, import_prop_types$82.default.object, import_prop_types$82.default.arrayOf(import_prop_types$82.default.object) ]).isRequired }; WizardFooter.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/shared/actions-footer/actions-footer.js function ActionsFooter(props) { return /*#__PURE__*/ react.default.createElement(WizardFooter, { separator: true, justify: "end", className: props.className }, props.children); } ActionsFooter.propTypes = { children: import_prop_types$82.default.any, className: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-content/components/import-content-footer/import-content-footer.js init_es$1(); init_button$1(); function ImportContentFooter(_ref) { var hasPlugins = _ref.hasPlugins; var hasConflicts = _ref.hasConflicts; var isImportAllowed = _ref.isImportAllowed; var onResetProcess = _ref.onResetProcess; var onPreviousClick = _ref.onPreviousClick; var onImportClick = _ref.onImportClick; var navigate = useNavigate(); var getNextPageUrl = function getNextPageUrl() { if (hasConflicts) return "import/resolver"; else if (hasPlugins) return "import/plugins-activation"; return "import/process"; }; return /*#__PURE__*/ react.default.createElement(ActionsFooter, null, /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Previous", "elementor"), variant: "contained", onClick: function onClick() { onPreviousClick === null || onPreviousClick === void 0 || onPreviousClick(); if (hasPlugins) navigate("import/plugins/"); else onResetProcess(); } }), /*#__PURE__*/ react.default.createElement(Button$30, { variant: "contained", text: (0, _wordpress_i18n.__)("Import", "elementor"), color: isImportAllowed ? "primary" : "disabled", onClick: function onClick() { onImportClick === null || onImportClick === void 0 || onImportClick(); return isImportAllowed && navigate(getNextPageUrl()); } })); } ImportContentFooter.propTypes = { hasPlugins: import_prop_types$82.default.bool, hasConflicts: import_prop_types$82.default.bool, isImportAllowed: import_prop_types$82.default.bool, onResetProcess: import_prop_types$82.default.func.isRequired, onPreviousClick: import_prop_types$82.default.func, onImportClick: import_prop_types$82.default.func }; //#endregion //#region app/modules/import-export/assets/js/pages/import/hooks/use-import-actions.js init_es$1(); init_use_action(); function useImportActions() { var sharedContext = (0, react.useContext)(SharedContext); var navigate = useNavigate(); var backToDashboard = useAction().backToDashboard; var isStartedFromKitLibrary = "kit-library" === sharedContext.data.referrer; return { navigateToMainScreen: function navigateToMainScreen() { navigate(isStartedFromKitLibrary ? "/kit-library" : "/import"); }, closeApp: function closeApp() { if (isStartedFromKitLibrary) navigate("/kit-library"); else backToDashboard(); } }; } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-content/import-content.js init_apps_event_tracking(); function ImportContent() { var sharedContext = (0, react.useContext)(SharedContext); var importContext = (0, react.useContext)(ImportContext$1); var _sharedContext$data = sharedContext.data; var referrer = _sharedContext$data.referrer; var includes = _sharedContext$data.includes; var currentPage = _sharedContext$data.currentPage; var _importContext$data = importContext.data; var plugins = _importContext$data.plugins; var requiredPlugins = _importContext$data.requiredPlugins; var uploadedData = _importContext$data.uploadedData; var file = _importContext$data.file; var isProInstalledDuringProcess = _importContext$data.isProInstalledDuringProcess; var navigateToMainScreen = useImportActions().navigateToMainScreen; var handleResetProcess = function handleResetProcess() { return importContext.dispatch({ type: "SET_FILE", payload: null }); }; var eventTracking = function eventTracking(command) { if ("kit-library" === referrer) appsEventTrackingDispatch(command, { page_source: "import", step: currentPage, event_type: "click" }); }; var getFooter = function getFooter() { return /*#__PURE__*/ react.default.createElement(ImportContentFooter, { hasPlugins: !!plugins.length, hasConflicts: !!(includes.includes("templates") && uploadedData !== null && uploadedData !== void 0 && uploadedData.conflicts && Object.keys(uploadedData.conflicts).length), isImportAllowed: !!(plugins.length || includes.length), onResetProcess: handleResetProcess, onPreviousClick: function onPreviousClick() { return eventTracking("kit-library/go-back"); }, onImportClick: function onImportClick() { return eventTracking("kit-library/approve-import"); } }); }; (0, react.useEffect)(function() { sharedContext.dispatch({ type: "SET_CURRENT_PAGE_NAME", payload: ImportContent.name }); }, []); (0, react.useEffect)(function() { if (!file) navigateToMainScreen(); }, [file]); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "import", footer: getFooter() }, /*#__PURE__*/ react.default.createElement("section", { className: "e-app-import-content" }, /*#__PURE__*/ react.default.createElement(PageHeader$1, { heading: (0, _wordpress_i18n.__)("Select which parts you want to apply", "elementor"), description: (0, _wordpress_i18n.__)("All items are already selected by default. Uncheck the ones you don't want.", "elementor") }), /*#__PURE__*/ react.default.createElement(ImportContentDisplay, { manifest: uploadedData === null || uploadedData === void 0 ? void 0 : uploadedData.manifest, hasPro: isProInstalledDuringProcess, hasPlugins: !!requiredPlugins.length, isAllRequiredPluginsSelected: requiredPlugins.length === plugins.length, onResetProcess: handleResetProcess }))); } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-resolver/components/conflict/components/conflict-checkbox/conflict-checkbox.js function ConflictCheckbox(props) { var importContext = (0, react.useContext)(ImportContext$1); var isSelected = function isSelected() { return importContext.data.overrideConditions.includes(props.id); }; var updateOverrideCondition = function updateOverrideCondition(event) { var isChecked = event.target.checked; var actionType = isChecked ? "ADD_OVERRIDE_CONDITION" : "REMOVE_OVERRIDE_CONDITION"; if (props.onCheck) props.onCheck(isChecked); importContext.dispatch({ type: actionType, payload: props.id }); }; (0, react.useEffect)(function() { if (!importContext.data.overrideConditions.length) importContext.dispatch({ type: "ADD_OVERRIDE_CONDITION", payload: props.id }); }, []); return /*#__PURE__*/ react.default.createElement(Checkbox$5, { checked: isSelected(), onChange: updateOverrideCondition, className: props.className }); } ConflictCheckbox.propTypes = { className: import_prop_types$82.default.string, id: import_prop_types$82.default.number.isRequired, onCheck: import_prop_types$82.default.func }; ConflictCheckbox.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-resolver/components/conflict/conflict.js init_heading(); init_text(); init_grid(); init_button$1(); init_apps_event_tracking(); function Conflict(props) { var _importContext$data$u; var importContext = (0, react.useContext)(ImportContext$1); var sharedContext = (0, react.useContext)(SharedContext); var manifest = (_importContext$data$u = importContext.data.uploadedData) === null || _importContext$data$u === void 0 ? void 0 : _importContext$data$u.manifest; var currentPage = sharedContext.data.currentPage; var getConflictTitle = function getConflictTitle(id) { var _elementorAppConfig$i; var templateType = manifest.templates[id].doc_type; var summaryTitle = (_elementorAppConfig$i = elementorAppConfig["import-export"].summaryTitles.templates) === null || _elementorAppConfig$i === void 0 ? void 0 : _elementorAppConfig$i[templateType]; return (summaryTitle === null || summaryTitle === void 0 ? void 0 : summaryTitle.single) || templateType; }; var getEditTemplateButton = function getEditTemplateButton(editUrl, title) { return /*#__PURE__*/ react.default.createElement(Button$30, { className: "e-app-import-resolver-conflicts__edit-template", url: editUrl, target: "_blank", icon: "eicon-editor-external-link", text: (0, _wordpress_i18n.__)("Edit Template", "elementor"), hideText: true, onClick: function onClick() { if (props.onClick) props.onClick(title); } }); }; var isImportedAssetSelected = function isImportedAssetSelected(importedAssetId) { return importContext.data.overrideConditions.includes(importedAssetId); }; var getAssetClassName = function getAssetClassName(isActive) { var classes = ["e-app-import-resolver-conflicts__asset"]; if (isActive) classes.push("active"); return classes.join(" "); }; var getImportedAssetClasses = function getImportedAssetClasses(importedAssetId) { return getAssetClassName(isImportedAssetSelected(importedAssetId)); }; var getExistingAssetClasses = function getExistingAssetClasses(importedAssetId) { return getAssetClassName(!isImportedAssetSelected(importedAssetId)); }; var eventTracking = function eventTracking(command, title) { return appsEventTrackingDispatch("kit-library/".concat(command), { item: title, page_source: "import", step: currentPage, event_type: "click" }); }; return /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, noWrap: true }, /*#__PURE__*/ react.default.createElement(ConflictCheckbox, { id: props.importedId, type: "main-type", className: "e-app-import-resolver-conflicts__checkbox", onCheck: function onCheck(isChecked) { eventTracking(isChecked && isChecked ? "check" : "uncheck", props.conflictData.template_title); } }), /*#__PURE__*/ react.default.createElement(Grid$14, { item: true }, /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "h5", tag: "h4", className: "e-app-import-resolver-conflicts__title" }, getConflictTitle(props.importedId)), /*#__PURE__*/ react.default.createElement(Grid$14, { item: true }, /*#__PURE__*/ react.default.createElement(Text$11, { variant: "sm", tag: "span", className: getImportedAssetClasses(props.importedId) }, (0, _wordpress_i18n.__)("Imported", "elementor"), ": ", manifest.templates[props.importedId].title), /*#__PURE__*/ react.default.createElement(Text$11, { style: true, variant: "sm", tag: "span", className: getExistingAssetClasses(props.importedId) }, (0, _wordpress_i18n.__)("Existing", "elementor"), ": ", props.conflictData.template_title, " ", getEditTemplateButton(props.conflictData.edit_url, props.conflictData.template_title))))); } Conflict.propTypes = { importedId: import_prop_types$82.default.number, conflictData: import_prop_types$82.default.object, onClick: import_prop_types$82.default.func }; //#endregion //#region app/assets/js/ui/card/card-header.js init_utils$5(); function CardHeader$4(props) { var classNameBase = "eps-card__header"; var classes = [classNameBase, props.className]; var style = {}; if (Object.prototype.hasOwnProperty.call(props, "padding")) { style["--eps-card-header-padding"] = pxToRem(props.padding); classes.push(classNameBase + "--padding"); } return /*#__PURE__*/ react.default.createElement("header", { className: arrayToClassName(classes), style }, props.children); } __name(CardHeader$4, "CardHeader"); CardHeader$4.propTypes = { className: import_prop_types$82.default.string, padding: import_prop_types$82.default.string, passive: import_prop_types$82.default.bool, active: import_prop_types$82.default.bool, children: import_prop_types$82.default.any.isRequired }; CardHeader$4.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/card/card-body.js init_utils$5(); function CardBody$4(props) { var classNameBase = "eps-card__body"; var classes = [classNameBase, props.className]; var style = {}; if (Object.prototype.hasOwnProperty.call(props, "padding")) { style["--eps-card-body-padding"] = pxToRem(props.padding); classes.push(classNameBase + "--padding"); } return /*#__PURE__*/ react.default.createElement("main", { className: arrayToClassName(classes), style }, props.children); } __name(CardBody$4, "CardBody"); CardBody$4.propTypes = { className: import_prop_types$82.default.string, padding: import_prop_types$82.default.string, passive: import_prop_types$82.default.bool, active: import_prop_types$82.default.bool, children: import_prop_types$82.default.any.isRequired }; CardBody$4.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/card/card-image.js function CardImage$5(props) { var image = /*#__PURE__*/ react.default.createElement("img", { src: props.src, alt: props.alt, className: "eps-card__image", loading: "lazy", onError: props.onError }); return /*#__PURE__*/ react.default.createElement("figure", { className: "eps-card__figure ".concat(props.className) }, image, props.children); } __name(CardImage$5, "CardImage"); CardImage$5.propTypes = { className: import_prop_types$82.default.string, src: import_prop_types$82.default.string.isRequired, alt: import_prop_types$82.default.string.isRequired, children: import_prop_types$82.default.any, onError: import_prop_types$82.default.func }; CardImage$5.defaultProps = { className: "", onError: function onError() {} }; //#endregion //#region app/assets/js/ui/card/card-overlay.js function CardOverlay$4(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "eps-card__image-overlay ".concat(props.className) }, props.children); } __name(CardOverlay$4, "CardOverlay"); CardOverlay$4.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.object.isRequired }; CardOverlay$4.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/card/card-footer.js init_utils$5(); function CardFooter(props) { var classNameBase = "eps-card__footer"; var classes = [classNameBase, props.className]; var style = {}; if (Object.prototype.hasOwnProperty.call(props, "padding")) { style["--eps-card-footer-padding"] = pxToRem(props.padding); classes.push(classNameBase + "--padding"); } return /*#__PURE__*/ react.default.createElement("footer", { className: arrayToClassName(classes), style }, props.children); } CardFooter.propTypes = { className: import_prop_types$82.default.string, padding: import_prop_types$82.default.string, passive: import_prop_types$82.default.bool, active: import_prop_types$82.default.bool, children: import_prop_types$82.default.object.isRequired }; CardFooter.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/card/card-headline.js init_utils$5(); function CardHeadline(props) { var classes = ["eps-card__headline", props.className]; return /*#__PURE__*/ react.default.createElement("h4", { className: arrayToClassName(classes) }, props.children); } CardHeadline.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.any.isRequired }; CardHeadline.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/card/card-divider.js init_utils$5(); function CardDivider(props) { var classes = ["eps-card__divider", props.className]; return /*#__PURE__*/ react.default.createElement("hr", { className: arrayToClassName(classes) }); } CardDivider.propTypes = { className: import_prop_types$82.default.string }; CardDivider.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/card/card.js var Card$5 = react.default.forwardRef(function(props, ref) { return /*#__PURE__*/ react.default.createElement("article", { className: "eps-card ".concat(props.className), ref }, props.children); }); Card$5.propTypes = { type: import_prop_types$82.default.string, className: import_prop_types$82.default.string, children: import_prop_types$82.default.any }; Card$5.defaultProps = { className: "" }; Card$5.displayName = "Card"; Card$5.Header = CardHeader$4; Card$5.Body = CardBody$4; Card$5.Image = CardImage$5; Card$5.Overlay = CardOverlay$4; Card$5.Footer = CardFooter; Card$5.Headline = CardHeadline; Card$5.Divider = CardDivider; //#endregion //#region app/assets/js/molecules/collapse-context.js var CollapseContext = react.default.createContext(); //#endregion //#region app/assets/js/molecules/collapse-toggle.js init_defineProperty$1(); init_utils$5(); function CollapseToggle(props) { var context = (0, react.useContext)(CollapseContext); var style = { "--e-app-collapse-toggle-icon-spacing": pxToRem(props.iconSpacing) }; var classNameBase = "e-app-collapse-toggle"; var attrs = { style, className: arrayToClassName([classNameBase, _defineProperty$1({}, classNameBase + "--active", props.active)]) }; if (props.active) attrs.onClick = function() { return context.toggle(); }; return /*#__PURE__*/ react.default.createElement("div", attrs, props.children, props.active && props.showIcon && /*#__PURE__*/ react.default.createElement("i", { className: "eicon-caret-down e-app-collapse-toggle__icon" })); } CollapseToggle.propTypes = { className: import_prop_types$82.default.string, iconSpacing: import_prop_types$82.default.number, showIcon: import_prop_types$82.default.bool, active: import_prop_types$82.default.bool, children: import_prop_types$82.default.any }; CollapseToggle.defaultProps = { className: "", iconSpacing: 20, showIcon: true, active: true }; //#endregion //#region app/assets/js/molecules/collapse-content.js function CollapseContent(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "e-app-collapse-content" }, props.children); } CollapseContent.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.any }; CollapseContent.defaultProps = { className: "" }; //#endregion //#region app/assets/js/molecules/collapse.js init_defineProperty$1(); init_slicedToArray(); init_utils$5(); function Collapse$1(props) { var _useState2 = _slicedToArray((0, react.useState)(props.isOpened), 2); var isOpened = _useState2[0]; var setIsOpened = _useState2[1]; var classNameBase = "e-app-collapse"; var classes = [ classNameBase, props.className, _defineProperty$1({}, classNameBase + "--opened", isOpened) ]; var toggle = function toggle() { return setIsOpened(function(prevState) { return !prevState; }); }; (0, react.useEffect)(function() { if (props.isOpened !== isOpened) setIsOpened(props.isOpened); }, [props.isOpened]); (0, react.useEffect)(function() { if (props.onChange) props.onChange(isOpened); }, [isOpened]); return /*#__PURE__*/ react.default.createElement(CollapseContext.Provider, { value: { toggle } }, /*#__PURE__*/ react.default.createElement("div", { className: arrayToClassName(classes) }, props.children)); } __name(Collapse$1, "Collapse"); Collapse$1.propTypes = { className: import_prop_types$82.default.string, isOpened: import_prop_types$82.default.bool, onChange: import_prop_types$82.default.func, children: import_prop_types$82.default.oneOfType([import_prop_types$82.default.node, import_prop_types$82.default.arrayOf(import_prop_types$82.default.node)]) }; Collapse$1.defaultProps = { className: "", isOpened: false }; Collapse$1.Toggle = CollapseToggle; Collapse$1.Content = CollapseContent; //#endregion //#region app/assets/js/ui/panel/panel-header.js init_utils$5(); function PanelHeader(props) { return /*#__PURE__*/ react.default.createElement(Collapse$1.Toggle, { active: props.toggle, showIcon: props.showIcon }, /*#__PURE__*/ react.default.createElement(Card$5.Header, { padding: "20", className: arrayToClassName(["eps-panel__header", props.className]) }, props.children)); } PanelHeader.propTypes = { className: import_prop_types$82.default.string, padding: import_prop_types$82.default.string, toggle: import_prop_types$82.default.bool, showIcon: import_prop_types$82.default.bool, children: import_prop_types$82.default.any.isRequired }; PanelHeader.defaultProps = { className: "", padding: "20", toggle: true, showIcon: true }; //#endregion //#region app/assets/js/ui/panel/panel-headline.js init_utils$5(); function PanelHeadline(props) { return /*#__PURE__*/ react.default.createElement(Card$5.Headline, { className: arrayToClassName(["eps-panel__headline", props.className]) }, props.children); } PanelHeadline.propTypes = { className: import_prop_types$82.default.string, children: import_prop_types$82.default.any.isRequired }; PanelHeadline.defaultProps = { className: "" }; //#endregion //#region app/assets/js/ui/panel/panel-body.js init_utils$5(); function PanelBody(props) { return /*#__PURE__*/ react.default.createElement(Collapse$1.Content, null, /*#__PURE__*/ react.default.createElement(Card$5.Body, { padding: props.padding, className: arrayToClassName(["eps-panel__body", props.className]) }, props.children)); } PanelBody.propTypes = { className: import_prop_types$82.default.string, padding: import_prop_types$82.default.string, children: import_prop_types$82.default.any.isRequired }; PanelBody.defaultProps = { className: "", padding: "0" }; //#endregion //#region app/assets/js/ui/panel/panel.js init_utils$5(); function Panel$1(props) { return /*#__PURE__*/ react.default.createElement(Collapse$1, { isOpened: props.isOpened }, /*#__PURE__*/ react.default.createElement(Card$5, { className: arrayToClassName(["eps-panel", props.className]) }, props.children)); } __name(Panel$1, "Panel"); Panel$1.propTypes = { className: import_prop_types$82.default.string, isOpened: import_prop_types$82.default.bool, children: import_prop_types$82.default.any.isRequired }; Panel$1.defaultProps = { className: "", isOpened: false }; Panel$1.Header = PanelHeader; Panel$1.Headline = PanelHeadline; Panel$1.Body = PanelBody; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-resolver/import-resolver.js init_slicedToArray(); init_es$1(); init_button$1(); init_apps_event_tracking(); function ImportResolver() { var _importContext$data; var sharedContext = (0, react.useContext)(SharedContext); var importContext = (0, react.useContext)(ImportContext$1); var navigate = useNavigate(); var conflicts = ((_importContext$data = importContext.data) === null || _importContext$data === void 0 || (_importContext$data = _importContext$data.uploadedData) === null || _importContext$data === void 0 ? void 0 : _importContext$data.conflicts) || {}; var _ref = sharedContext.data || {}; var referrer = _ref.referrer; var currentPage = _ref.currentPage; var eventTracking = function eventTracking(command) { var sitePart = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; if ("kit-library" === referrer) appsEventTrackingDispatch(command, { site_part: sitePart, page_source: "import", step: currentPage, event_type: "click" }); }; var getFooter = function getFooter() { return /*#__PURE__*/ react.default.createElement(ActionsFooter, null, /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Previous", "elementor"), variant: "contained", onClick: function onClick() { eventTracking("kit-library/go-back"); navigate("import/content"); } }), /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Next", "elementor"), variant: "contained", color: "primary", onClick: function onClick() { eventTracking("kit-library/approve-selection"); var url = importContext.data.plugins.length ? "import/plugins-activation" : "import/process"; importContext.dispatch({ type: "SET_IS_RESOLVED", payload: true }); navigate(url); } })); }; var getLearnMoreLink = function getLearnMoreLink() { return /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-what-are-kits", italic: true, onClick: function onClick() { return eventTracking("kit-library/seek-more-info"); } }, (0, _wordpress_i18n.__)("Learn More", "elementor")); }; var isHomePageOverride = function isHomePageOverride() { if (sharedContext.data.includes.includes("content")) { var _importContext$data2; var pages = ((_importContext$data2 = importContext.data) === null || _importContext$data2 === void 0 || (_importContext$data2 = _importContext$data2.uploadedData) === null || _importContext$data2 === void 0 || (_importContext$data2 = _importContext$data2.manifest.content) === null || _importContext$data2 === void 0 ? void 0 : _importContext$data2.page) || {}; return Object.entries(pages).find(function(pageData) { return pageData[1].show_on_front; }); } return false; }; (0, react.useEffect)(function() { if (!importContext.data.uploadedData) navigate("import"); sharedContext.dispatch({ type: "SET_CURRENT_PAGE_NAME", payload: ImportResolver.name }); }, []); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "import", footer: getFooter() }, /*#__PURE__*/ react.default.createElement("section", { className: "e-app-import-resolver" }, /*#__PURE__*/ react.default.createElement(PageHeader$1, { heading: (0, _wordpress_i18n.__)("Import a Website Kit to your site", "elementor"), description: [/*#__PURE__*/ react.default.createElement(react.default.Fragment, { key: "description-first-line" }, (0, _wordpress_i18n.__)("Parts of this kit overlap with your site’s templates, design and settings. The items you leave checked on this list will replace your current design.", "elementor"), " ", getLearnMoreLink())] }), isHomePageOverride() && /*#__PURE__*/ react.default.createElement(Notice$1, { className: "e-app-import-resolver__notice", label: (0, _wordpress_i18n.__)("Note:", "elementor"), color: "warning" }, (0, _wordpress_i18n.__)("Your site's homepage will be determined by the kit. You can change this later.", "elementor")), /*#__PURE__*/ react.default.createElement(Panel$1, { isOpened: true }, /*#__PURE__*/ react.default.createElement(Panel$1.Header, { toggle: false }, /*#__PURE__*/ react.default.createElement(Panel$1.Headline, null, (0, _wordpress_i18n.__)("Select the items you want to keep and apply:", "elementor"))), /*#__PURE__*/ react.default.createElement(Panel$1.Body, { padding: "20" }, /*#__PURE__*/ react.default.createElement(Box$22, { className: "e-app-import-resolver-conflicts__container" }, /*#__PURE__*/ react.default.createElement(List, { separated: true, className: "e-app-import-resolver-conflicts" }, Object.entries(conflicts).map(function(_ref2, index) { var _ref3 = _slicedToArray(_ref2, 2); var id = _ref3[0]; var conflict = _ref3[1]; return /*#__PURE__*/ react.default.createElement(List.Item, { padding: "20", key: index, className: "e-app-import-resolver-conflicts__item" }, /*#__PURE__*/ react.default.createElement(Conflict, { importedId: parseInt(id), conflictData: conflict[0], onClick: function onClick(title) { return eventTracking("kit-library/check-item", title); } })); }))))))); } //#endregion //#region app/modules/import-export/assets/js/ui/wizard-step/wizard-step.js init_utils$5(); init_grid(); init_icon(); init_heading(); init_text(); function WizardStep(props) { var classes = ["e-app-import-export-wizard-step", props.className]; return /*#__PURE__*/ react.default.createElement(Grid$14, { className: arrayToClassName(classes), justify: "center", container: true }, /*#__PURE__*/ react.default.createElement(Grid$14, { item: true }, (props.image || props.icon) && /*#__PURE__*/ react.default.createElement(Grid$14, { className: "e-app-import-export-wizard-step__media-container", justify: "center", alignItems: "end", container: true }, props.image && /*#__PURE__*/ react.default.createElement("img", { className: "e-app-import-export-wizard-step__image", src: props.image }), props.icon && /*#__PURE__*/ react.default.createElement(Icon$2, { className: "e-app-import-export-wizard-step__icon ".concat(props.icon) })), props.heading && /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "display-3", className: "e-app-import-export-wizard-step__heading" }, props.heading), props.description && /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xl", className: "e-app-import-export-wizard-step__description" }, props.description), props.info && /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xl", className: "e-app-import-export-wizard-step__info" }, props.info), props.children && /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, className: "e-app-import-export-wizard-step__content" }, props.children), props.notice && /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xs", className: "e-app-import-export-wizard-step__notice" }, props.notice))); } WizardStep.propTypes = { className: import_prop_types$82.default.string, image: import_prop_types$82.default.string, icon: import_prop_types$82.default.string, heading: import_prop_types$82.default.string, description: import_prop_types$82.default.oneOfType([import_prop_types$82.default.string, import_prop_types$82.default.object]), info: import_prop_types$82.default.oneOfType([import_prop_types$82.default.string, import_prop_types$82.default.object]), notice: import_prop_types$82.default.oneOfType([import_prop_types$82.default.string, import_prop_types$82.default.object]), children: import_prop_types$82.default.any }; WizardStep.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/shared/file-process/file-process.js init_utils$5(); function FileProcess(props) { return /*#__PURE__*/ react.default.createElement(WizardStep, { className: arrayToClassName(["e-app-import-export-file-process", props.className]), icon: "eicon-loading eicon-animation-spin", heading: (0, _wordpress_i18n.__)("Setting up your website template...", "elementor"), description: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("This usually takes a few moments.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), (0, _wordpress_i18n.__)("Don't close this window until the process is finished.", "elementor")), info: props.info }, !!props.errorType && /*#__PURE__*/ react.default.createElement(ProcessFailedDialog, { onApprove: props.onDialogApprove, onDismiss: props.onDialogDismiss, errorType: props.errorType })); } FileProcess.propTypes = { className: import_prop_types$82.default.string, onDialogApprove: import_prop_types$82.default.func, onDialogDismiss: import_prop_types$82.default.func, errorType: import_prop_types$82.default.string, info: import_prop_types$82.default.string }; FileProcess.defaultProps = { className: "" }; //#endregion //#region app/modules/import-export/assets/js/hooks/use-plugins.js init_slicedToArray(); var PLUGINS_RESPONSE_MAP = Object.freeze({ INITIAL: "initial", SUCCESS: "success", ERROR: "error" }); var PLUGIN_STATUS_MAP = Object.freeze({ ACTIVE: "active", MULTISITE_ACTIVE: "network-active", INACTIVE: "inactive", NOT_INSTALLED: "Not Installed" }); var baseEndpoint = elementorCommon.config.urls.rest + "wp/v2/plugins/"; var getInitialState$1 = function getInitialState() { return { status: PLUGINS_RESPONSE_MAP.INITIAL, data: null }; }; function usePlugins() { var _useState2 = _slicedToArray((0, react.useState)(function() { return getInitialState$1(); }), 2); var response = _useState2[0]; var setResponse = _useState2[1]; var allowResponseUpdate = (0, react.useRef)(true); var fetchRest = function fetchRest(_ref) { var body = _ref.body; var method = _ref.method; var _ref$endpoint = _ref.endpoint; var endpoint = _ref$endpoint === void 0 ? "" : _ref$endpoint; var data = { method, headers: { "Content-Type": "application/json; charset=utf-8", "X-WP-Nonce": wpApiSettings.nonce, "X-Elementor-Action": "import-plugins" } }; if (body) data.body = JSON.stringify(body); if (response.data) reset(); return new Promise(function(resolve, reject) { fetch(baseEndpoint + endpoint, data).then(function(res) { return res.json(); }).then(function(res) { if (allowResponseUpdate.current) setResponse({ status: PLUGINS_RESPONSE_MAP.SUCCESS, data: res }); resolve(res); }).catch(function(error) { setResponse({ status: PLUGINS_RESPONSE_MAP.ERROR, data: error }); reject(error); }); }); }; var fetchData = function fetchData(slug) { return fetchRest({ method: "GET", endpoint: slug }); }; var install = function install(slug) { slug = slug.split("/")[0]; return fetchRest({ method: "POST", body: { slug } }); }; var activate = function activate(slug) { return fetchRest({ endpoint: slug, method: "PUT", body: { status: PLUGIN_STATUS_MAP.ACTIVE } }); }; var deactivate = function deactivate(slug) { return fetchRest({ endpoint: slug, method: "PUT", body: { status: PLUGIN_STATUS_MAP.INACTIVE } }); }; var remove = function remove(slug) { return fetchRest({ endpoint: slug, method: "DELETE" }); }; var reset = function reset() { return setResponse(getInitialState$1()); }; (0, react.useEffect)(function() { fetchData(); return function() { allowResponseUpdate.current = false; }; }, []); return { response, pluginsActions: { fetch: fetchData, install, activate, deactivate, remove, reset } }; } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins-activation/components/plugin-status-item/plugin-status-item.js init_grid(); init_text(); var ACTIVE = PLUGIN_STATUS_MAP.ACTIVE; var INACTIVE = PLUGIN_STATUS_MAP.INACTIVE; var NOT_INSTALLED = PLUGIN_STATUS_MAP.NOT_INSTALLED; function PluginStatusItem$1(_ref) { var name = _ref.name; var status = _ref.status; if (NOT_INSTALLED === status) return null; else if (INACTIVE === status) status = "installed"; else if (ACTIVE === status) status = "activated"; return /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, alignItems: "center", key: name }, /*#__PURE__*/ react.default.createElement(Checkbox$5, { rounded: true, checked: true, error: "failed" === status || null, onChange: function onChange() {} }), /*#__PURE__*/ react.default.createElement(Text$11, { tag: "span", variant: "xs", className: "e-app-import-plugins-activation__plugin-name" }, name + " " + status)); } __name(PluginStatusItem$1, "PluginStatusItem"); PluginStatusItem$1.propTypes = { name: import_prop_types$82.default.string.isRequired, status: import_prop_types$82.default.string.isRequired }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins-activation/hooks/use-install-plugins.js init_toConsumableArray(); init_defineProperty$1(); init_slicedToArray(); function ownKeys$31(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; } __name(ownKeys$31, "ownKeys"); function _objectSpread$30(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$31(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$31(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$30, "_objectSpread"); var ACTION_STATUS_MAP = Object.freeze({ ACTIVATED: "activated", INSTALLED: "installed", FAILED: "failed" }); function useInstallPlugins(_ref) { var _ref$plugins = _ref.plugins; var plugins = _ref$plugins === void 0 ? [] : _ref$plugins; var _ref$bulkMaxItems = _ref.bulkMaxItems; var bulkMaxItems = _ref$bulkMaxItems === void 0 ? 5 : _ref$bulkMaxItems; var _usePlugins = usePlugins(); var response = _usePlugins.response; var pluginsActions = _usePlugins.pluginsActions; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isPluginsFetched = _useState2[0]; var setIsPluginsFetched = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isDone = _useState4[0]; var setIsDone = _useState4[1]; var _useState6 = _slicedToArray((0, react.useState)([]), 2); var bulk = _useState6[0]; var setBulk = _useState6[1]; var _useState8 = _slicedToArray((0, react.useState)([]), 2); var ready = _useState8[0]; var setReady = _useState8[1]; var _useState0 = _slicedToArray((0, react.useState)(""), 2); var actionStatus = _useState0[0]; var setActionStatus = _useState0[1]; var _useState10 = _slicedToArray((0, react.useState)(null), 2); var currentPlugin = _useState10[0]; var setCurrentPlugin = _useState10[1]; var isError = PLUGINS_RESPONSE_MAP.ERROR === response.status; var getBulk = function getBulk() { if (bulk.length > bulkMaxItems) return bulk.slice(bulk.length - bulkMaxItems, bulk.length); return bulk; }; (0, react.useEffect)(function() { if (plugins.length) { if (ready.length === plugins.length) setIsDone(true); else if (isPluginsFetched) { var nextPluginToInstallIndex = ready.length; setCurrentPlugin(plugins[nextPluginToInstallIndex]); } } }, [ready, isPluginsFetched]); (0, react.useEffect)(function() { if (currentPlugin) (PLUGIN_STATUS_MAP.INACTIVE === currentPlugin.status ? pluginsActions.activate : pluginsActions.install)(currentPlugin.plugin); }, [currentPlugin]); (0, react.useEffect)(function() { if (PLUGINS_RESPONSE_MAP.SUCCESS === response.status) { var data = response.data; if (Array.isArray(data)) setIsPluginsFetched(true); else if (!Object.prototype.hasOwnProperty.call(data, "plugin")) setActionStatus(ACTION_STATUS_MAP.FAILED); else if (PLUGIN_STATUS_MAP.ACTIVE === data.status) setActionStatus(ACTION_STATUS_MAP.ACTIVATED); else if (PLUGIN_STATUS_MAP.INACTIVE === data.status) setActionStatus(ACTION_STATUS_MAP.INSTALLED); } else if (PLUGINS_RESPONSE_MAP.ERROR === response.status) setActionStatus(ACTION_STATUS_MAP.FAILED); }, [response.status]); (0, react.useEffect)(function() { if (actionStatus) { var pluginData = ACTION_STATUS_MAP.FAILED === actionStatus ? _objectSpread$30(_objectSpread$30({}, currentPlugin), {}, { status: ACTION_STATUS_MAP.FAILED }) : response.data; setBulk(function(prevState) { var processedPlugins = _toConsumableArray(prevState); processedPlugins[ready.length] = pluginData; return processedPlugins; }); if (ACTION_STATUS_MAP.ACTIVATED === actionStatus || ACTION_STATUS_MAP.FAILED === actionStatus) setReady(function(prevState) { return [].concat(_toConsumableArray(prevState), [pluginData]); }); else if (ACTION_STATUS_MAP.INSTALLED === actionStatus) setCurrentPlugin(pluginData); setActionStatus(""); } }, [actionStatus]); return { isDone, ready, bulk: (0, react.useMemo)(function() { return getBulk(); }, [bulk]), isError }; } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins-activation/import-plugins-activation.js init_es$1(); init_grid(); function ImportPluginsActivation() { var importContext = (0, react.useContext)(ImportContext$1); var sharedContext = (0, react.useContext)(SharedContext); var navigate = useNavigate(); var _useInstallPlugins = useInstallPlugins({ plugins: importContext.data.plugins }); var bulk = _useInstallPlugins.bulk; var ready = _useInstallPlugins.ready; var isDone = _useInstallPlugins.isDone; (0, react.useEffect)(function() { if (!importContext.data.plugins.length) navigate("/import/"); }, [importContext.data.plugins]); (0, react.useEffect)(function() { if (isDone) { importContext.dispatch({ type: "SET_IMPORTED_PLUGINS", payload: ready }); importContext.dispatch({ type: "SET_PLUGINS_STATE", payload: "success" }); sharedContext.dispatch({ type: "SET_CURRENT_PAGE_NAME", payload: ImportPluginsActivation.name }); } }, [isDone]); (0, react.useEffect)(function() { if (importContext.data.importedPlugins.length) navigate("/import/process"); }, [importContext.data.importedPlugins]); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "import" }, /*#__PURE__*/ react.default.createElement("section", { className: "e-app-import-plugins-activation" }, /*#__PURE__*/ react.default.createElement(FileProcess, { info: (0, _wordpress_i18n.__)("Activating plugins:", "elementor") }), /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, justify: "center" }, /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, className: "e-app-import-plugins-activation__installing-plugins" }, !!(bulk !== null && bulk !== void 0 && bulk.length) && /*#__PURE__*/ react.default.createElement(List, null, bulk.map(function(plugin) { return /*#__PURE__*/ react.default.createElement(List.Item, { className: "e-app-import-plugins-activation__plugin-status-item", key: plugin.name }, /*#__PURE__*/ react.default.createElement(PluginStatusItem$1, { name: plugin.name, status: plugin.status })); })))))); } //#endregion //#region app/assets/js/organisms/unfiltered-files-dialog.js function UnfilteredFilesDialog(props) { var show = props.show; var setShow = props.setShow; var onReady = props.onReady; var onCancel = props.onCancel; var onDismiss = props.onDismiss; var onLoad = props.onLoad; var onEnable = props.onEnable; var onClose = props.onClose; var _useAjax = useAjax(); var ajaxState = _useAjax.ajaxState; var setAjax = _useAjax.setAjax; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var enableUnfilteredFiles = _useState2[0]; var setEnableUnfilteredFiles = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isEnableError = _useState4[0]; var setIsEnableError = _useState4[1]; (0, react.useEffect)(function() { if (enableUnfilteredFiles) { setShow(false); setAjax({ data: { action: "elementor_ajax", actions: JSON.stringify({ enable_unfiltered_files_upload: { action: "enable_unfiltered_files_upload" } }) } }); if (onEnable) onEnable(); } }, [enableUnfilteredFiles]); (0, react.useEffect)(function() { switch (ajaxState.status) { case "success": onReady(); break; case "error": setIsEnableError(true); setShow(true); break; } }, [ajaxState]); (0, react.useEffect)(function() { if (show && onLoad) onLoad(); }, [show]); if (!show) return null; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, isEnableError ? /*#__PURE__*/ react.default.createElement(Dialog$9, { title: (0, _wordpress_i18n.__)("Something went wrong.", "elementor"), text: props.errorModalText, approveButtonColor: "link", approveButtonText: (0, _wordpress_i18n.__)("Continue", "elementor"), approveButtonOnClick: onReady, dismissButtonText: (0, _wordpress_i18n.__)("Go Back", "elementor"), dismissButtonOnClick: onCancel, onClose: onCancel }) : /*#__PURE__*/ react.default.createElement(Dialog$9, { title: (0, _wordpress_i18n.__)("First, enable unfiltered file uploads.", "elementor"), text: props.confirmModalText, approveButtonColor: "link", approveButtonText: (0, _wordpress_i18n.__)("Enable", "elementor"), approveButtonOnClick: function approveButtonOnClick() { return setEnableUnfilteredFiles(true); }, dismissButtonText: (0, _wordpress_i18n.__)("Skip", "elementor"), dismissButtonOnClick: onDismiss || onReady, onClose: onClose || onDismiss || onReady })); } var import_prop_types$66; var init_unfiltered_files_dialog = __esmMin((() => { import_prop_types$66 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); init_dialog(); init_use_ajax(); UnfilteredFilesDialog.propTypes = { show: import_prop_types$66.default.bool, setShow: import_prop_types$66.default.func.isRequired, onReady: import_prop_types$66.default.func.isRequired, onCancel: import_prop_types$66.default.func.isRequired, onDismiss: import_prop_types$66.default.func, confirmModalText: import_prop_types$66.default.string.isRequired, errorModalText: import_prop_types$66.default.string.isRequired, onLoad: import_prop_types$66.default.func, onEnable: import_prop_types$66.default.func, onClose: import_prop_types$66.default.func }; UnfilteredFilesDialog.defaultProps = { show: false, onReady: function onReady() {}, onCancel: function onCancel() {} }; })); //#endregion //#region app/modules/import-export/assets/js/hooks/use-plugins-data.js init_unfiltered_files_dialog(); var PLUGINS_KEYS = Object.freeze({ ELEMENTOR: "Elementor", ELEMENTOR_PRO: "Elementor Pro" }); function usePluginsData(plugins) { var getPluginsData = function getPluginsData() { if (!plugins) return []; var elementorPlugins = []; var generalPlugins = []; plugins.forEach(function(plugin) { switch (plugin.name) { case PLUGINS_KEYS.ELEMENTOR: elementorPlugins.unshift(plugin); break; case PLUGINS_KEYS.ELEMENTOR_PRO: elementorPlugins.push(plugin); break; default: generalPlugins.push(plugin); } }); return elementorPlugins.concat(generalPlugins); }; return { pluginsData: (0, react.useMemo)(function() { return getPluginsData(); }, [plugins]) }; } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins/hooks/use-import-plugins-data.js init_defineProperty$1(); init_utils$5(); function ownKeys$30(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; } __name(ownKeys$30, "ownKeys"); function _objectSpread$29(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$30(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$30(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$29, "_objectSpread"); var MISSING_PLUGINS_KEY = "missing"; var EXISTING_PLUGINS_KEY = "existing"; var ELEMENTOR_PRO_PLUGIN_KEY = "Elementor Pro"; function useImportPluginsData(pluginsToInstall, existingPlugins) { var getIsMinVersionExist = function getIsMinVersionExist(installedPluginVersion, kitPluginVersion) { return installedPluginVersion.localeCompare(kitPluginVersion) > -1; }; var getClassifiedPlugins = function getClassifiedPlugins() { var data = { missing: [], existing: [], minVersionMissing: [], proData: null }; var installedPluginsMap = arrayToObjectByKey(existingPlugins, "name"); pluginsToInstall.forEach(function(plugin) { var installedPluginData = installedPluginsMap[plugin.name]; var group = PLUGIN_STATUS_MAP.ACTIVE === (installedPluginData === null || installedPluginData === void 0 ? void 0 : installedPluginData.status) ? EXISTING_PLUGINS_KEY : MISSING_PLUGINS_KEY; var pluginData = installedPluginData || _objectSpread$29(_objectSpread$29({}, plugin), {}, { status: PLUGIN_STATUS_MAP.NOT_INSTALLED }); if (installedPluginData && !getIsMinVersionExist(installedPluginData.version, plugin.version)) data.minVersionMissing.push(plugin); if (ELEMENTOR_PRO_PLUGIN_KEY === pluginData.name) data.proData = pluginData; data[group].push(pluginData); }); return data; }; var classifiedPlugins = (0, react.useMemo)(function() { return getClassifiedPlugins(); }, [pluginsToInstall, existingPlugins]); return { importPluginsData: pluginsToInstall.length && existingPlugins.length ? classifiedPlugins : null }; } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-kit/hooks/use-import-kit-library-apply-all-plugins.js init_slicedToArray(); function useImportKitLibraryApplyAllPlugins(plugins) { var _useState2 = _slicedToArray((0, react.useState)(), 2); var missingPlugins = _useState2[0]; var setMissingPlugins = _useState2[1]; var response = usePlugins().response; var pluginsData = usePluginsData(response.data).pluginsData; var missing = (useImportPluginsData(plugins, pluginsData).importPluginsData || {}).missing; (0, react.useEffect)(function() { if (plugins && !plugins.length) return; setMissingPlugins(missing); }, [plugins, missing]); return missingPlugins; } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-process/import-process.js init_slicedToArray(); init_es$1(); init_apps_event_tracking(); init_use_query_params(); init_use_kit$1(); init_redirect(); function ImportProcess$1() { var sharedContext = (0, react.useContext)(SharedContext); var importContext = (0, react.useContext)(ImportContext$1); var navigate = useNavigate(); var _useState2 = _slicedToArray((0, react.useState)(""), 2); var errorType = _useState2[0]; var setErrorType = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var showUnfilteredFilesDialog = _useState4[0]; var setShowUnfilteredFilesDialog = _useState4[1]; var _useState6 = _slicedToArray((0, react.useState)(false), 2); var startImport = _useState6[0]; var setStartImport = _useState6[1]; var _useState8 = _slicedToArray((0, react.useState)([]), 2); var plugins = _useState8[0]; var setPlugins = _useState8[1]; var missing = useImportKitLibraryApplyAllPlugins(plugins); var _useKit = useKit$1(); var kitState = _useKit.kitState; var kitActions = _useKit.kitActions; var KIT_STATUS_MAP = _useKit.KIT_STATUS_MAP; var _useQueryParams$getAl = useQueryParams().getAll(); var id = _useQueryParams$getAl.id; var referrer = _useQueryParams$getAl.referrer; var fileURL = _useQueryParams$getAl.file_url; var actionType = _useQueryParams$getAl.action_type; var nonce = _useQueryParams$getAl.nonce; var returnToParam = _useQueryParams$getAl.return_to; var _ref = sharedContext.data || {}; var includes = _ref.includes; var selectedCustomPostTypes = _ref.selectedCustomPostTypes; var currentPage = _ref.currentPage; var returnTo = _ref.returnTo; var _ref2 = importContext.data || {}; var file = _ref2.file; var uploadedData = _ref2.uploadedData; var importedData = _ref2.importedData; var overrideConditions = _ref2.overrideConditions; var isResolvedData = _ref2.isResolvedData; var isKitHasSvgAssets = (0, react.useMemo)(function() { return includes.some(function(item) { return ["templates", "content"].includes(item); }); }, [includes]); var navigateToMainScreen = useImportActions().navigateToMainScreen; var uploadKit = function uploadKit() { var decodedFileURL = decodeURIComponent(fileURL); importContext.dispatch({ type: "SET_ID", payload: id }); importContext.dispatch({ type: "SET_FILE", payload: decodedFileURL }); kitActions.upload({ kitId: id, file: decodedFileURL, kitLibraryNonce: nonce }); }; var importKit = function importKit() { if (elementorAppConfig["import-export"].isUnfilteredFilesEnabled || !isKitHasSvgAssets) setStartImport(true); else setShowUnfilteredFilesDialog(true); }; var applyAllSetCpt = function applyAllSetCpt() { var _kitState$data; var _importContext$data; var cpt = ((_kitState$data = kitState.data) === null || _kitState$data === void 0 ? void 0 : _kitState$data.manifest["custom-post-type-title"]) || ((_importContext$data = importContext.data) === null || _importContext$data === void 0 || (_importContext$data = _importContext$data.uploadedData) === null || _importContext$data === void 0 ? void 0 : _importContext$data.manifest["custom-post-type-title"]); if (cpt) { var cptArray = Object.keys(cpt); sharedContext.dispatch({ type: "SET_SELECTED_CPT", payload: cptArray }); } }; var applyAllImportPlugins = function applyAllImportPlugins() { var _kitState$data2; setPlugins(((_kitState$data2 = kitState.data) === null || _kitState$data2 === void 0 || (_kitState$data2 = _kitState$data2.manifest) === null || _kitState$data2 === void 0 ? void 0 : _kitState$data2.plugins) || importContext.data.uploadedData.manifest.plugins); }; var onCancelProcess = function onCancelProcess() { importContext.dispatch({ type: "SET_FILE", payload: null }); navigateToMainScreen(); }; var _onReady = function onReady() { setShowUnfilteredFilesDialog(false); setStartImport(true); }; var eventTracking = function eventTracking(command) { var eventType = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "click"; if ("kit-library" === sharedContext.data.referrer) appsEventTrackingDispatch(command, { page_source: "import", step: currentPage, modal_type: "unfiltered_file", event_type: eventType }); }; (0, react.useEffect)(function() { if (referrer) sharedContext.dispatch({ type: "SET_REFERRER", payload: referrer }); if (actionType) importContext.dispatch({ type: "SET_ACTION_TYPE", payload: actionType }); if (returnToParam) sharedContext.dispatch({ type: "SET_RETURN_TO", payload: returnToParam }); if (fileURL && !file) uploadKit(); else if (uploadedData) importKit(); else navigate("import"); sharedContext.dispatch({ type: "SET_CURRENT_PAGE_NAME", payload: ImportProcess$1.name }); }, []); (0, react.useEffect)(function() { if (startImport) { var data = importContext.data; var isImportFromCloud = KIT_SOURCE_MAP.CLOUD === data.source; var kitId = isImportFromCloud ? data.file.id : data.id; var importReferrer = isImportFromCloud ? data.source : referrer; kitActions.import({ id: kitId, session: uploadedData.session, include: includes, overrideConditions, referrer: importReferrer, selectedCustomPostTypes }); } }, [startImport]); (0, react.useEffect)(function() { if (KIT_STATUS_MAP.INITIAL !== kitState.status) switch (kitState.status) { case KIT_STATUS_MAP.IMPORTED: importContext.dispatch({ type: "SET_IMPORTED_DATA", payload: kitState.data }); break; case KIT_STATUS_MAP.UPLOADED: importContext.dispatch({ type: "SET_UPLOADED_DATA", payload: kitState.data }); break; case KIT_STATUS_MAP.ERROR: setErrorType(kitState.data); break; } }, [kitState.status]); (0, react.useEffect)(function() { if (KIT_STATUS_MAP.INITIAL !== kitState.status || isResolvedData && "apply-all" === importContext.data.actionType) if (importedData) { if (returnTo && safeRedirect$1(returnTo)) return; navigate("/import/complete"); } else if ("apply-all" === importContext.data.actionType) { var _kitState$data3; var _importContext$data$u; if ((_kitState$data3 = kitState.data) !== null && _kitState$data3 !== void 0 && (_kitState$data3 = _kitState$data3.manifest) !== null && _kitState$data3 !== void 0 && _kitState$data3.plugins || (_importContext$data$u = importContext.data.uploadedData) !== null && _importContext$data$u !== void 0 && _importContext$data$u.manifest.plugins) importContext.dispatch({ type: "SET_PLUGINS_STATE", payload: "have" }); if (uploadedData.conflicts && Object.keys(uploadedData.conflicts).length && !isResolvedData) navigate("/import/resolver"); else { kitActions.reset(); if ("have" === importContext.data.pluginsState) applyAllImportPlugins(); if ("" === importContext.data.pluginsState || "success" === importContext.data.pluginsState) { applyAllSetCpt(); importKit(); } } } else navigate("/import/plugins"); }, [ uploadedData, importedData, importContext.data.pluginsState, returnTo ]); (0, react.useEffect)(function() { if ((missing === null || missing === void 0 ? void 0 : missing.length) > 0) { importContext.dispatch({ type: "SET_PLUGINS", payload: missing }); navigate("import/plugins-activation"); } }, [missing]); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "import" }, /*#__PURE__*/ react.default.createElement("section", null, /*#__PURE__*/ react.default.createElement(FileProcess, { info: uploadedData && (0, _wordpress_i18n.__)("Importing your content, templates and site settings", "elementor"), errorType, onDialogApprove: onCancelProcess, onDialogDismiss: onCancelProcess }), /*#__PURE__*/ react.default.createElement(UnfilteredFilesDialog, { show: showUnfilteredFilesDialog, setShow: setShowUnfilteredFilesDialog, confirmModalText: (0, _wordpress_i18n.__)("This allows Elementor to scan your SVGs for malicious content. Otherwise, you can skip any SVGs in this import.", "elementor"), errorModalText: (0, _wordpress_i18n.__)("Nothing to worry about, just continue without importing SVGs or go back and start the import again.", "elementor"), onReady: function onReady() { return _onReady(); }, onCancel: function onCancel() { setShowUnfilteredFilesDialog(false); onCancelProcess(); }, onLoad: function onLoad() { return eventTracking("kit-library/modal-load", "load"); }, onClose: function onClose() { eventTracking("kit-library/close"); _onReady(); }, onDismiss: function onDismiss() { _onReady(); eventTracking("kit-library/skip"); }, onEnable: function onEnable() { return eventTracking("kit-library/enable"); } }))); } __name(ImportProcess$1, "ImportProcess"); //#endregion //#region app/modules/import-export/assets/js/shared/kit-data/components/site-area/site-area.js init_text(); init_icon(); init_apps_event_tracking(); function SiteArea(_ref) { var text = _ref.text; var link = _ref.link; var eventTracking = function eventTracking(command) { appsEventTrackingDispatch(command, { site_area: text, page_source: "import complete", event_type: arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "click" }); }; return /*#__PURE__*/ react.default.createElement(InlineLink, { url: link, color: "secondary", underline: "none", onClick: function onClick() { return eventTracking("kit-library/open-site-area"); } }, /*#__PURE__*/ react.default.createElement(Text$11, { className: "e-app-import-export-kit-data__site-area" }, text, " ", link && /*#__PURE__*/ react.default.createElement(Icon$2, { className: "eicon-editor-external-link" }))); } SiteArea.propTypes = { text: import_prop_types$82.default.string, link: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export/assets/js/shared/kit-data/components/included/included.js init_text(); function Included(_ref) { var data = _ref.data; return /*#__PURE__*/ react.default.createElement(Text$11, { className: "e-app-import-export-kit-data__included" }, data.filter(function(value) { return value; }).join(" | ")); } Included.propTypes = { data: import_prop_types$82.default.array }; //#endregion //#region app/assets/js/ui/table/table-context.js var Context = react.default.createContext(); //#endregion //#region app/assets/js/ui/table/table.head.js init_utils$5(); function TableHead(props) { return /*#__PURE__*/ react.default.createElement("thead", { className: arrayToClassName(["eps-table__head", props.className]) }, props.children); } TableHead.propTypes = { children: import_prop_types$82.default.any.isRequired, className: import_prop_types$82.default.string }; //#endregion //#region app/assets/js/ui/table/table-body.js init_utils$5(); function TableBody(props) { return /*#__PURE__*/ react.default.createElement("tbody", { className: arrayToClassName(["eps-table__body", props.className]) }, props.children); } TableBody.propTypes = { children: import_prop_types$82.default.any.isRequired, className: import_prop_types$82.default.string }; //#endregion //#region app/assets/js/ui/table/table-row.js init_utils$5(); function TableRow(props) { return /*#__PURE__*/ react.default.createElement("tr", { className: arrayToClassName(["eps-table__row", props.className]) }, props.children); } TableRow.propTypes = { children: import_prop_types$82.default.any.isRequired, className: import_prop_types$82.default.string }; //#endregion //#region app/assets/js/ui/table/table-cell.js init_utils$5(); function TableCell(props) { return /*#__PURE__*/ react.default.createElement(function Element() { return react.default.createElement(props.tag, { className: arrayToClassName(["eps-table__cell", props.className]), colSpan: props.colSpan || null }, props.children); }, null); } TableCell.propTypes = { children: import_prop_types$82.default.any, className: import_prop_types$82.default.string, colSpan: import_prop_types$82.default.oneOfType([import_prop_types$82.default.number, import_prop_types$82.default.string]), tag: import_prop_types$82.default.oneOf(["td", "th"]).isRequired }; //#endregion //#region app/assets/js/ui/table/table-checkbox.js init_toConsumableArray(); init_utils$5(); function TableCheckbox(props) { var _ref = (0, react.useContext)(Context) || {}; var selected = _ref.selected; var disabled = _ref.disabled; var setSelected = _ref.setSelected; var isSelectAllCheckbox = Object.prototype.hasOwnProperty.call(props, "allSelectedCount"); var isAllSelected = selected.length === props.allSelectedCount; var isIndeterminate = isSelectAllCheckbox ? !!(selected.length - disabled.length && !isAllSelected) : false; var isSelected = isSelectAllCheckbox ? isAllSelected : selected.includes(props.index); var isDisabled = !isSelectAllCheckbox ? disabled.includes(props.index) : null; var onSelectAll = function onSelectAll() { setSelected(function() { if (isAllSelected || isIndeterminate) return disabled.length ? _toConsumableArray(disabled) : []; return Array(props.allSelectedCount).fill(true).map(function(value, index) { return index; }); }); }; var onSelectRow = function onSelectRow() { setSelected(function(prevState) { var currentSelections = _toConsumableArray(prevState); var currentIndexPosition = currentSelections.indexOf(props.index); if (currentIndexPosition > -1) currentSelections.splice(currentIndexPosition, 1); else currentSelections.push(props.index); return currentSelections; }); }; return /*#__PURE__*/ react.default.createElement(Checkbox$5, { checked: isSelected, indeterminate: isIndeterminate, onChange: function onChange() { return isSelectAllCheckbox ? onSelectAll() : onSelectRow(); }, disabled: isDisabled, className: arrayToClassName(["eps-table__checkbox", props.className]) }); } TableCheckbox.propTypes = { className: import_prop_types$82.default.string, index: import_prop_types$82.default.number, initialChecked: import_prop_types$82.default.bool, allSelectedCount: import_prop_types$82.default.number }; //#endregion //#region app/assets/js/ui/table/table.js init_defineProperty$1(); init_slicedToArray(); init_utils$5(); function Table(_ref) { var className = _ref.className; var initialSelected = _ref.initialSelected; var initialDisabled = _ref.initialDisabled; var selection = _ref.selection; var children = _ref.children; var onSelect = _ref.onSelect; var _useState2 = _slicedToArray((0, react.useState)(initialSelected), 2); var selected = _useState2[0]; var setSelected = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(initialDisabled), 2); var disabled = _useState4[0]; var setDisabled = _useState4[1]; var classNameBase = "eps-table"; var classes = [ classNameBase, _defineProperty$1({}, classNameBase + "--selection", selection), className ]; (0, react.useEffect)(function() { if (onSelect) onSelect(selected); }, [selected]); return /*#__PURE__*/ react.default.createElement(Context.Provider, { value: { selected, setSelected, disabled, setDisabled } }, /*#__PURE__*/ react.default.createElement("table", { className: arrayToClassName(classes) }, selection && /*#__PURE__*/ react.default.createElement("colgroup", null, /*#__PURE__*/ react.default.createElement("col", { className: classNameBase + "__checkboxes-column" })), children)); } Table.Head = TableHead; Table.Body = TableBody; Table.Row = TableRow; Table.Cell = TableCell; Table.Checkbox = TableCheckbox; Table.propTypes = { children: import_prop_types$82.default.any.isRequired, className: import_prop_types$82.default.string, headers: import_prop_types$82.default.array, initialDisabled: import_prop_types$82.default.array, initialSelected: import_prop_types$82.default.array, rows: import_prop_types$82.default.array, selection: import_prop_types$82.default.bool, onSelect: import_prop_types$82.default.func }; Table.defaultProps = { selection: false, initialDisabled: [], initialSelected: [] }; //#endregion //#region app/assets/js/molecules/data-table.js init_utils$5(); function DataTable(_ref) { var className = _ref.className; var onSelect = _ref.onSelect; var initialSelected = _ref.initialSelected; var initialDisabled = _ref.initialDisabled; var headers = _ref.headers; var layout = _ref.layout; var rows = _ref.rows; var selection = _ref.selection; return /*#__PURE__*/ react.default.createElement(Table, { selection, onSelect, initialSelected, initialDisabled, className: arrayToClassName(["e-app-data-table", className]) }, !!headers.length && /*#__PURE__*/ react.default.createElement(Table.Head, null, /*#__PURE__*/ react.default.createElement(Table.Row, null, selection && /*#__PURE__*/ react.default.createElement(Table.Cell, { tag: "th" }, /*#__PURE__*/ react.default.createElement(Table.Checkbox, { allSelectedCount: rows.length })), headers.map(function(header, index) { return /*#__PURE__*/ react.default.createElement(Table.Cell, { tag: "th", colSpan: layout && layout[index], key: index }, header); }))), /*#__PURE__*/ react.default.createElement(Table.Body, null, rows.map(function(row, rowIndex) { return /*#__PURE__*/ react.default.createElement(Table.Row, { key: rowIndex }, selection && /*#__PURE__*/ react.default.createElement(Table.Cell, { tag: "td" }, /*#__PURE__*/ react.default.createElement(Table.Checkbox, { index: rowIndex })), row.map(function(cell, cellIndex) { return /*#__PURE__*/ react.default.createElement(Table.Cell, { tag: "td", colSpan: layout && layout[cellIndex], key: cellIndex }, cell); })); }))); } DataTable.propTypes = { className: import_prop_types$82.default.string, headers: import_prop_types$82.default.array, rows: import_prop_types$82.default.array, initialDisabled: import_prop_types$82.default.array, initialSelected: import_prop_types$82.default.array, layout: import_prop_types$82.default.array, onSelect: import_prop_types$82.default.func, selection: import_prop_types$82.default.bool, withHeader: import_prop_types$82.default.bool }; DataTable.defaultProps = { className: "", headers: [], rows: [], initialDisabled: [], initialSelected: [], selection: false }; //#endregion //#region app/modules/import-export/assets/js/shared/kit-data/hooks/use-kit-data.js init_defineProperty$1(); init_slicedToArray(); function ownKeys$29(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; } __name(ownKeys$29, "ownKeys"); function _objectSpread$28(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$29(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$29(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$28, "_objectSpread"); function useKitData(kitData) { var getLabel = function getLabel(type, key, amount) { var _kitData$configData; var label = ((kitData === null || kitData === void 0 || (_kitData$configData = kitData.configData) === null || _kitData$configData === void 0 ? void 0 : _kitData$configData.summaryTitles) || elementorAppConfig["import-export"].summaryTitles)[type][key]; if (label !== null && label !== void 0 && label.single) { if (!amount) return ""; var title = amount > 1 ? label.plural : label.single; return amount + " " + title; } return label; }; var getTemplates = function getTemplates() { var templates = {}; for (var key in kitData === null || kitData === void 0 ? void 0 : kitData.templates) { var type = kitData.templates[key].doc_type; if (!templates[type]) templates[type] = 0; templates[type]++; } return Object.entries(templates).map(function(_ref) { var _ref2 = _slicedToArray(_ref, 2); var key = _ref2[0]; var amount = _ref2[1]; return getLabel("templates", key, amount); }).filter(function(value) { return value; }); }; var getSiteSettings = function getSiteSettings() { var siteSettings = (kitData === null || kitData === void 0 ? void 0 : kitData["site-settings"]) || {}; return Object.values(siteSettings).map(function(item) { return getLabel("site-settings", item); }); }; var getContent = function getContent() { var content = (kitData === null || kitData === void 0 ? void 0 : kitData.content) || {}; var wpContent = (kitData === null || kitData === void 0 ? void 0 : kitData["wp-content"]) || {}; var mergedContent = _objectSpread$28({}, content); for (var key in mergedContent) mergedContent[key] = Object.keys(mergedContent[key]).concat(wpContent[key] || []); mergedContent = _objectSpread$28(_objectSpread$28({}, wpContent), mergedContent); return Object.entries(mergedContent).map(function(_ref3) { var _ref4 = _slicedToArray(_ref3, 2); var key = _ref4[0]; var data = _ref4[1]; return getLabel("content", key, data.length); }).filter(function(value) { return value; }); }; var getPlugins = function getPlugins() { return kitData !== null && kitData !== void 0 && kitData.plugins ? kitData.plugins.map(function(_ref5) { return _ref5.name; }) : []; }; return (0, react.useMemo)(function() { return { templates: getTemplates(), siteSettings: getSiteSettings(), content: getContent(), plugins: getPlugins() }; }, [kitData]); } //#endregion //#region app/modules/import-export/assets/js/shared/kit-data/kit-data.js var siteEditorPath = elementorAppConfig.hasPro ? "#/site-editor" : "#/site-editor/promotion"; function KitData(_ref) { var data = _ref.data; var _useKitData = useKitData(data); var templates = _useKitData.templates; var siteSettings = _useKitData.siteSettings; var content = _useKitData.content; var plugins = _useKitData.plugins; var _ref2 = (data === null || data === void 0 ? void 0 : data.configData) || elementorAppConfig["import-export"]; var elementorHomePageUrl = _ref2.elementorHomePageUrl; var recentlyEditedElementorPageUrl = _ref2.recentlyEditedElementorPageUrl; var siteSettingsUrl = elementorHomePageUrl || recentlyEditedElementorPageUrl; var headers = [(0, _wordpress_i18n.__)("Site Area", "elementor"), (0, _wordpress_i18n.__)("Included", "elementor")]; var rows = [ { siteArea: (0, _wordpress_i18n.__)("Elementor Templates", "elementor"), link: elementorAppConfig.base_url + siteEditorPath, included: templates }, { siteArea: (0, _wordpress_i18n.__)("Site Settings", "elementor"), link: siteSettingsUrl ? siteSettingsUrl + "#e:run:panel/global/open" : "", included: siteSettings }, { siteArea: (0, _wordpress_i18n.__)("Content", "elementor"), link: elementorAppConfig.admin_url + "edit.php?post_type=page", included: content }, { siteArea: (0, _wordpress_i18n.__)("Plugins", "elementor"), link: elementorAppConfig.admin_url + "plugins.php", included: plugins } ].map(function(_ref3) { var siteArea = _ref3.siteArea; var included = _ref3.included; var link = _ref3.link; if (!included.length) return; return [/*#__PURE__*/ react.default.createElement(SiteArea, { key: siteArea, text: siteArea, link }), /*#__PURE__*/ react.default.createElement(Included, { key: included, data: included })]; }).filter(function(row) { return row; }); if (!rows.length) return null; return /*#__PURE__*/ react.default.createElement(DataTable, { className: "e-app-import-export-kit-data", headers, rows, layout: [1, 3] }); } KitData.propTypes = { data: import_prop_types$82.default.object }; var kit_data_default = (0, react.memo)(KitData); //#endregion //#region app/modules/import-export/assets/js/pages/import/import-complete/components/failed-plugins-notice/failed-plugins-notice.js init_button$1(); function FailedPluginsNotice(_ref) { var failedPlugins = _ref.failedPlugins; return /*#__PURE__*/ react.default.createElement(Notice$1, { className: "e-app-import-failed-plugins-notice", label: (0, _wordpress_i18n.__)("Important:", "elementor"), color: "warning", button: function getButton() { return /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Learn more", "elementor"), variant: "outlined", color: "secondary", size: "sm", target: "_blank", url: "https://go.elementor.com/app-import-plugin-installation-failed/" }); }() }, (0, _wordpress_i18n.__)("There are few plugins that we couldn't install:", "elementor") + " " + failedPlugins.map(function(_ref2) { return _ref2.name; }).join(" | ")); } FailedPluginsNotice.propTypes = { failedPlugins: import_prop_types$82.default.array }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-complete/components/connect-pro-notice/connect-pro-notice.js init_button$1(); function ConnectProNotice() { return /*#__PURE__*/ react.default.createElement(Notice$1, { className: "e-app-import-connect-pro-notice", label: (0, _wordpress_i18n.__)("Tip:", "elementor"), color: "info", button: function getButton() { return /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Let’s do it", "elementor"), variant: "outlined", color: "secondary", size: "sm", target: "_blank", url: elementorAppConfig.admin_url + "admin.php?page=elementor-license" }); }() }, (0, _wordpress_i18n.__)("Make sure your Elementor Pro account is connected", "elementor")); } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-complete/components/import-complete-footer/import-complete-footer.js init_button$1(); init_use_action(); init_apps_event_tracking(); function ImportCompleteFooter(_ref) { var seeItLiveUrl = _ref.seeItLiveUrl; var referrer = _ref.referrer; var action = useAction(); var eventTracking = function eventTracking(command) { var eventType = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "click"; if ("kit-library" === referrer) appsEventTrackingDispatch(command, { page_source: "kit is live", element_location: "app_wizard_footer", event_type: eventType }); }; return /*#__PURE__*/ react.default.createElement(ActionsFooter, null, seeItLiveUrl && /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("See It Live", "elementor"), variant: "contained", onClick: function onClick() { eventTracking("kit-library/see-it-live"); window.open(seeItLiveUrl, "_blank"); } }), /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Got It", "elementor"), variant: "contained", color: "primary", onClick: function onClick() { eventTracking("kit-library/close"); action.backToDashboard(); } })); } ImportCompleteFooter.propTypes = { seeItLiveUrl: import_prop_types$82.default.string, referrer: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-complete/hooks/use-imported-kit-data.js function useImportedKitData() { return { getTemplates: function getTemplates(templates, importedData) { var kitTemplates = {}; for (var key in importedData === null || importedData === void 0 || (_importedData$templat = importedData.templates) === null || _importedData$templat === void 0 ? void 0 : _importedData$templat.succeed) { var _importedData$templat; kitTemplates[key] = templates[key]; } return kitTemplates; }, getContent: function getContent(content, importedData) { var kitContent = {}; for (var contentType in importedData === null || importedData === void 0 ? void 0 : importedData.content) { kitContent[contentType] = {}; for (var key in (_importedData$content = importedData.content[contentType]) === null || _importedData$content === void 0 ? void 0 : _importedData$content.succeed) { var _importedData$content; kitContent[contentType][key] = content[contentType][key]; } } return kitContent; }, getWPContent: function getWPContent(content, importedData) { var kitWPContent = {}; for (var contentType in importedData === null || importedData === void 0 ? void 0 : importedData["wp-content"]) { var _importedData$wpCont; var succeededItems = (_importedData$wpCont = importedData["wp-content"][contentType]) === null || _importedData$wpCont === void 0 ? void 0 : _importedData$wpCont.succeed; kitWPContent[contentType] = succeededItems ? Object.keys(succeededItems) : []; } return kitWPContent; }, getPlugins: function getPlugins(importedPlugins) { var plugins = { activePlugins: [], failedPlugins: [] }; importedPlugins.forEach(function(plugin) { plugins[PLUGIN_STATUS_MAP.ACTIVE === plugin.status ? "activePlugins" : "failedPlugins"].push(plugin); }); return plugins; } }; } //#endregion //#region app/modules/import-export/assets/js/pages/import/import-complete/import-complete.js init_es$1(); init_apps_event_tracking(); function ImportComplete$1() { var sharedContext = (0, react.useContext)(SharedContext); var importContext = (0, react.useContext)(ImportContext$1); var navigate = useNavigate(); var _ref = importContext.data || {}; var importedPlugins = _ref.importedPlugins; var uploadedData = _ref.uploadedData; var importedData = _ref.importedData; var isProInstalledDuringProcess = _ref.isProInstalledDuringProcess; var referrer = (sharedContext.data || {}).referrer; var _useImportedKitData = useImportedKitData(); var getTemplates = _useImportedKitData.getTemplates; var getContent = _useImportedKitData.getContent; var getWPContent = _useImportedKitData.getWPContent; var getPlugins = _useImportedKitData.getPlugins; var _getPlugins = getPlugins(importedPlugins); var activePlugins = _getPlugins.activePlugins; var failedPlugins = _getPlugins.failedPlugins; var _ref3 = (importedData === null || importedData === void 0 ? void 0 : importedData.configData) || {}; var elementorHomePageUrl = _ref3.elementorHomePageUrl; var recentlyEditedElementorPageUrl = _ref3.recentlyEditedElementorPageUrl; var seeItLiveUrl = elementorHomePageUrl || recentlyEditedElementorPageUrl || null; var getKitData = function getKitData() { if (!uploadedData || !importedData) return {}; var manifest = uploadedData.manifest; return { templates: getTemplates(manifest.templates, importedData), content: getContent(manifest.content, importedData), "wp-content": getWPContent(manifest["wp-content"], importedData), "site-settings": sharedContext.data.includes.includes("settings") ? manifest["site-settings"] : {}, plugins: activePlugins, configData: importedData.configData }; }; var eventTracking = function eventTracking(command, source) { var eventType = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "click"; var elementLocation = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; if ("kit-library" === referrer) appsEventTrackingDispatch(command, { page_source: source, event_type: eventType, element_location: elementLocation }); }; var kitData = (0, react.useMemo)(function() { return getKitData(); }, []); (0, react.useEffect)(function() { if (!uploadedData) navigate("/import"); if (uploadedData) eventTracking("kit-library/kit-is-live-load", "kit is live", "load"); sharedContext.dispatch({ type: "SET_CURRENT_PAGE_NAME", payload: ImportComplete$1.name }); }, []); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "import", footer: /*#__PURE__*/ react.default.createElement(ImportCompleteFooter, { seeItLiveUrl, referrer }) }, /*#__PURE__*/ react.default.createElement(WizardStep, { image: elementorAppConfig.assets_url + "images/kit-is-live.svg", heading: (0, _wordpress_i18n.__)("We applied your template and your site is online!", "elementor"), description: (0, _wordpress_i18n.__)("You've imported and applied the following to your site:", "elementor"), notice: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-what-are-kits", italic: true, onClick: function onClick() { return eventTracking("kit-library/seek-more-info", "kit is live", "click", "app_header"); } }, (0, _wordpress_i18n.__)("Click here", "elementor")), " ", (0, _wordpress_i18n.__)("to learn more about building your site with Elementor Website Templates", "elementor")) }, !!failedPlugins.length && /*#__PURE__*/ react.default.createElement(FailedPluginsNotice, { failedPlugins }), isProInstalledDuringProcess && /*#__PURE__*/ react.default.createElement(ConnectProNotice, null), /*#__PURE__*/ react.default.createElement(kit_data_default, { data: kitData }))); } __name(ImportComplete$1, "ImportComplete"); //#endregion //#region app/modules/import-export/assets/js/shared/plugins-selection/components/plugins-table.js init_text(); init_icon(); function PluginsTable(_ref) { var plugins = _ref.plugins; var layout = _ref.layout; var withHeader = _ref.withHeader; var withStatus = _ref.withStatus; var onSelect = _ref.onSelect; var initialSelected = _ref.initialSelected; var initialDisabled = _ref.initialDisabled; var CellText = function CellText(cellTextProps) { return /*#__PURE__*/ react.default.createElement(Text$11, { className: "e-app-import-export-plugins-table__cell-content" }, cellTextProps.text); }; var CellLink = function CellLink(cellLinkProps) { return /*#__PURE__*/ react.default.createElement(InlineLink, { url: cellLinkProps.url, underline: "none" }, "".concat((0, _wordpress_i18n.__)("Version"), " ").concat(cellLinkProps.text), " ", /*#__PURE__*/ react.default.createElement(Icon$2, { className: "eicon-editor-external-link" })); }; var getHeaders = function getHeaders() { if (!withHeader) return []; var headers = ["Plugin Name", "Version"]; if (withStatus) headers.splice(1, 0, "Status"); return headers; }; var rows = plugins.map(function(_ref2) { var name = _ref2.name; var status = _ref2.status; var version = _ref2.version; var pluginUrl = _ref2.plugin_uri; var row = [/*#__PURE__*/ react.default.createElement(CellText, { text: name, key: name }), /*#__PURE__*/ react.default.createElement(CellLink, { text: version, url: pluginUrl, key: name })]; if (withStatus) row.splice(1, 0, /*#__PURE__*/ react.default.createElement(CellText, { text: status, key: name })); return row; }); return /*#__PURE__*/ react.default.createElement(DataTable, { selection: true, headers: getHeaders(), rows, onSelect, initialSelected, initialDisabled, layout, className: "e-app-import-export-plugins-table" }); } PluginsTable.propTypes = { onSelect: import_prop_types$82.default.func, initialDisabled: import_prop_types$82.default.array, initialSelected: import_prop_types$82.default.array, plugins: import_prop_types$82.default.array, withHeader: import_prop_types$82.default.bool, withStatus: import_prop_types$82.default.bool, layout: import_prop_types$82.default.array }; PluginsTable.defaultProps = { initialDisabled: [], initialSelected: [], plugins: [], withHeader: true, withStatus: true }; var plugins_table_default = (0, react.memo)(PluginsTable); //#endregion //#region app/modules/import-export/assets/js/shared/plugins-selection/plugins-selection.js function PluginsSelection(_ref) { var plugins = _ref.plugins; var initialSelected = _ref.initialSelected; var initialDisabled = _ref.initialDisabled; var withHeader = _ref.withHeader; var withStatus = _ref.withStatus; var layout = _ref.layout; var onSelect = _ref.onSelect; if (!plugins.length) return null; var cachedPlugins = (0, react.useMemo)(function() { return plugins; }, [plugins]); var cachedInitialSelected = (0, react.useMemo)(function() { return initialSelected; }, [plugins]); var cachedInitialDisabled = (0, react.useMemo)(function() { return initialDisabled; }, [plugins]); return /*#__PURE__*/ react.default.createElement(plugins_table_default, { plugins: cachedPlugins, initialDisabled: cachedInitialDisabled, initialSelected: cachedInitialSelected, onSelect: function handleOnSelect(selectedIndexes) { if (!onSelect) return; onSelect(selectedIndexes.map(function(pluginIndex) { return plugins[pluginIndex]; })); }, withHeader, withStatus, layout }); } PluginsSelection.propTypes = { initialDisabled: import_prop_types$82.default.array, initialSelected: import_prop_types$82.default.array, layout: import_prop_types$82.default.array, onSelect: import_prop_types$82.default.func, plugins: import_prop_types$82.default.array, selection: import_prop_types$82.default.bool, withHeader: import_prop_types$82.default.bool, withStatus: import_prop_types$82.default.bool }; PluginsSelection.defaultProps = { initialDisabled: [], initialSelected: [], plugins: [], selection: true, withHeader: true, withStatus: true }; var plugins_selection_default = (0, react.memo)(PluginsSelection); //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins/components/plugins-to-import/plugins-to-import.js init_heading(); var layout$2 = [ 3, 1, 1 ]; function PluginsToImport(_ref) { var plugins = _ref.plugins; if (!(plugins !== null && plugins !== void 0 && plugins.length)) return null; var importContext = (0, react.useContext)(ImportContext$1); var getPluginsToImport = function getPluginsToImport() { var _plugins$ = plugins[0]; var name = _plugins$.name; var status = _plugins$.status; if (PLUGINS_KEYS.ELEMENTOR_PRO === name && PLUGIN_STATUS_MAP.INACTIVE !== status) return plugins.splice(1); return plugins; }; var handleOnSelect = (0, react.useCallback)(function(selectedPlugins) { return importContext.dispatch({ type: "SET_PLUGINS", payload: selectedPlugins }); }, []); var pluginsToImport = (0, react.useMemo)(function() { return getPluginsToImport(); }, [plugins]); var initialSelected = (0, react.useMemo)(function() { return pluginsToImport.map(function(plugin, index) { return index; }); }, [plugins]); var isAllRequiredPluginsSelected = pluginsToImport.length === importContext.data.plugins.length; if (!pluginsToImport.length) return null; return /*#__PURE__*/ react.default.createElement("div", { className: "e-app-import-plugins__section" }, /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "h5", tag: "h3", className: "e-app-import-plugins__section-heading" }, isAllRequiredPluginsSelected ? (0, _wordpress_i18n.__)("Plugins to add:", "elementor") : (0, _wordpress_i18n.__)("Missing Required Plugins:", "elementor")), /*#__PURE__*/ react.default.createElement(plugins_selection_default, { plugins: pluginsToImport, initialSelected, onSelect: handleOnSelect, layout: layout$2 })); } PluginsToImport.propTypes = { plugins: import_prop_types$82.default.array }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins/components/existing-plugins/existing-plugins.js init_heading(); var layout$1 = [4, 1]; function ExistingPlugins(_ref) { var plugins = _ref.plugins; if (!(plugins !== null && plugins !== void 0 && plugins.length)) return null; var existingPlugins = (0, react.useMemo)(function() { return plugins; }, []); var initialSelected = (0, react.useMemo)(function() { return plugins.map(function(plugin, index) { return index; }); }, []); return /*#__PURE__*/ react.default.createElement("div", { className: "e-app-import-plugins__section" }, /*#__PURE__*/ react.default.createElement(Heading$11, { variant: "h5", tag: "h3", className: "e-app-import-plugins__section-heading" }, (0, _wordpress_i18n.__)("Plugins you already have:", "elementor")), /*#__PURE__*/ react.default.createElement(plugins_selection_default, { withHeader: false, withStatus: false, plugins: existingPlugins, initialSelected, initialDisabled: initialSelected, excludeSelections: initialSelected, layout: layout$1 })); } ExistingPlugins.propTypes = { plugins: import_prop_types$82.default.array }; //#endregion //#region app/modules/import-export/assets/js/ui/message-banner/message-banner.js init_heading(); init_text(); init_grid(); function MessageBanner(_ref) { var heading = _ref.heading; var description = _ref.description; var button = _ref.button; return /*#__PURE__*/ react.default.createElement(Box$22, { className: "e-app-import-export-message-banner", padding: "20" }, /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, alignItems: "center", justify: "space-between" }, /*#__PURE__*/ react.default.createElement(Grid$14, { item: true }, heading && /*#__PURE__*/ react.default.createElement(Heading$11, { className: "e-app-import-export-message-banner__heading", variant: "h3", tag: "h3" }, heading), description && /*#__PURE__*/ react.default.createElement(Text$11, { className: "e-app-import-export-message-banner__description" }, function getDescriptionContent() { if (Array.isArray(description)) return description.join(/*#__PURE__*/ react.default.createElement("br", null)); return description; }())), button && /*#__PURE__*/ react.default.createElement(Grid$14, { item: true }, button))); } MessageBanner.propTypes = { heading: import_prop_types$82.default.string, description: import_prop_types$82.default.oneOfType([import_prop_types$82.default.string, import_prop_types$82.default.array]), button: import_prop_types$82.default.object }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins/components/pro-banner/pro-banner.js init_slicedToArray(); init_dialog(); function ProBanner(_ref) { var onRefresh = _ref.onRefresh; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var showInfoDialog = _useState2[0]; var setShowInfoDialog = _useState2[1]; var openGoProExternalPage = function openGoProExternalPage() { return window.open("https://go.elementor.com/go-pro-import-export/", "_blank"); }; var onDialogDismiss = function onDialogDismiss() { return setShowInfoDialog(false); }; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(MessageBanner, { heading: (0, _wordpress_i18n.__)("Install Elementor Pro", "elementor"), description: (0, _wordpress_i18n.__)("Without Elementor Pro, importing components like templates, widgets and popups won't work.", "elementor"), button: /*#__PURE__*/ react.default.createElement(GoProButton, { onClick: function handleGoPro() { setShowInfoDialog(true); openGoProExternalPage(); } }) }), showInfoDialog && /*#__PURE__*/ react.default.createElement(Dialog$9, { title: (0, _wordpress_i18n.__)("Is your Elementor Pro ready?", "elementor"), text: (0, _wordpress_i18n.__)("If you’ve purchased, installed & activated Elementor Pro, we can continue importing all the parts of this site.", "elementor"), approveButtonColor: "primary", approveButtonText: (0, _wordpress_i18n.__)("Yes", "elementor"), approveButtonOnClick: function onDialogApprove() { setShowInfoDialog(false); onRefresh(); }, dismissButtonText: (0, _wordpress_i18n.__)("Not yet", "elementor"), dismissButtonOnClick: onDialogDismiss, onClose: onDialogDismiss })); } ProBanner.propTypes = { status: import_prop_types$82.default.string, onRefresh: import_prop_types$82.default.func }; ProBanner.defaultProps = { status: "" }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins/components/import-plugins-footer/import-plugins-footer.js init_button$1(); function ImportPluginsFooter(props) { var importContext = (0, react.useContext)(ImportContext$1); var navigateToMainScreen = useImportActions().navigateToMainScreen; return /*#__PURE__*/ react.default.createElement(ActionsFooter, null, /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Previous", "elementor"), variant: "contained", onClick: function onClick() { var _props$onPreviousClic; importContext.dispatch({ type: "SET_FILE", payload: null }); (_props$onPreviousClic = props.onPreviousClick) === null || _props$onPreviousClic === void 0 || _props$onPreviousClic.call(props); navigateToMainScreen(); } }), /*#__PURE__*/ react.default.createElement(Button$30, { variant: "contained", text: (0, _wordpress_i18n.__)("Next", "elementor"), color: "primary", url: "/import/content", onClick: function onClick() { var _props$onNextClick; (_props$onNextClick = props.onNextClick) === null || _props$onNextClick === void 0 || _props$onNextClick.call(props); } })); } ImportPluginsFooter.propTypes = { onPreviousClick: import_prop_types$82.default.func, onNextClick: import_prop_types$82.default.func }; //#endregion //#region app/modules/import-export/assets/js/ui/loader/loader.js init_utils$5(); init_icon(); function Loader(_ref) { var absoluteCenter = _ref.absoluteCenter; var baseClassName = "e-app-import-export-loader"; var classes = [baseClassName, "eicon-loading eicon-animation-spin"]; if (absoluteCenter) classes.push(baseClassName + "--absolute-center"); return /*#__PURE__*/ react.default.createElement(Icon$2, { className: arrayToClassName(classes) }); } Loader.propTypes = { absoluteCenter: import_prop_types$82.default.bool }; Loader.defaultProps = { absoluteCenter: false }; //#endregion //#region app/modules/import-export/assets/js/pages/import/import-plugins/import-plugins.js init_es$1(); init_apps_event_tracking(); function ImportPlugins() { var _importContext$data$u; var importContext = (0, react.useContext)(ImportContext$1); var sharedContext = (0, react.useContext)(SharedContext); var navigate = useNavigate(); var kitPlugins = ((_importContext$data$u = importContext.data.uploadedData) === null || _importContext$data$u === void 0 || (_importContext$data$u = _importContext$data$u.manifest) === null || _importContext$data$u === void 0 ? void 0 : _importContext$data$u.plugins) || []; var _usePlugins = usePlugins(); var response = _usePlugins.response; var pluginsActions = _usePlugins.pluginsActions; var pluginsData = usePluginsData(response.data).pluginsData; var importPluginsData = useImportPluginsData(kitPlugins, pluginsData).importPluginsData; var _ref = importPluginsData || {}; var missing = _ref.missing; var existing = _ref.existing; var minVersionMissing = _ref.minVersionMissing; var proData = _ref.proData; var _ref2 = sharedContext.data || {}; var referrer = _ref2.referrer; var currentPage = _ref2.currentPage; var handleRequiredPlugins = function handleRequiredPlugins() { if (missing.length) importContext.dispatch({ type: "SET_REQUIRED_PLUGINS", payload: missing }); }; var handleRefresh = function handleRefresh() { importContext.dispatch({ type: "SET_REQUIRED_PLUGINS", payload: [] }); pluginsActions.fetch(); }; var handleProInstallationStatus = function handleProInstallationStatus() { if (proData && !elementorAppConfig.hasPro) importContext.dispatch({ type: "SET_IS_PRO_INSTALLED_DURING_PROCESS", payload: true }); }; var eventTracking = function eventTracking(command) { if ("kit-library" === referrer) appsEventTrackingDispatch(command, { page_source: "import", step: currentPage, event_type: "click" }); }; (0, react.useEffect)(function() { if (!kitPlugins.length) navigate("import/content"); sharedContext.dispatch({ type: "SET_CURRENT_PAGE_NAME", payload: ImportPlugins.name }); }, []); (0, react.useEffect)(function() { if (importPluginsData && !importContext.data.requiredPlugins.length) { handleRequiredPlugins(); handleProInstallationStatus(); } }, [importPluginsData]); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "import", footer: /*#__PURE__*/ react.default.createElement(ImportPluginsFooter, { onPreviousClick: function onPreviousClick() { return eventTracking("kit-library/go-back"); }, onNextClick: function onNextClick() { return eventTracking("kit-library/approve-selection"); } }) }, /*#__PURE__*/ react.default.createElement("section", { className: "e-app-import-plugins" }, !importPluginsData && /*#__PURE__*/ react.default.createElement(Loader, { absoluteCenter: true }), /*#__PURE__*/ react.default.createElement(PageHeader$1, { heading: (0, _wordpress_i18n.__)("Select which plugins to include", "elementor"), description: (0, _wordpress_i18n.__)("All items are already selected by default. Uncheck the ones you don't want.", "elementor") }), !!(minVersionMissing !== null && minVersionMissing !== void 0 && minVersionMissing.length) && /*#__PURE__*/ react.default.createElement(Notice$1, { label: (0, _wordpress_i18n.__)(" Recommended:", "elementor"), className: "e-app-import-plugins__versions-notice", color: "warning" }, (0, _wordpress_i18n.__)("Head over to Updates and make sure that your plugins are updated to the latest version.", "elementor"), " ", /*#__PURE__*/ react.default.createElement(InlineLink, { url: elementorAppConfig.admin_url + "update-core.php" }, (0, _wordpress_i18n.__)("Take me there", "elementor"))), PLUGIN_STATUS_MAP.NOT_INSTALLED === (proData === null || proData === void 0 ? void 0 : proData.status) && /*#__PURE__*/ react.default.createElement(ProBanner, { onRefresh: handleRefresh }), /*#__PURE__*/ react.default.createElement(PluginsToImport, { plugins: missing }), /*#__PURE__*/ react.default.createElement(ExistingPlugins, { plugins: existing }))); } //#endregion //#region app/modules/import-export/assets/js/import.js init_es$1(); function Import$1() { return /*#__PURE__*/ react.default.createElement(SharedContextProvider, null, /*#__PURE__*/ react.default.createElement(ImportContextProvider$1, null, /*#__PURE__*/ react.default.createElement(LocationProvider, { history: _elementor_router.default.appHistory }, /*#__PURE__*/ react.default.createElement(Router, null, /*#__PURE__*/ react.default.createElement(ImportComplete$1, { path: "complete" }), /*#__PURE__*/ react.default.createElement(ImportProcess$1, { path: "process" }), /*#__PURE__*/ react.default.createElement(ImportResolver, { path: "resolver" }), /*#__PURE__*/ react.default.createElement(ImportContent, { path: "content" }), /*#__PURE__*/ react.default.createElement(ImportPlugins, { path: "plugins" }), /*#__PURE__*/ react.default.createElement(ImportPluginsActivation, { path: "plugins-activation" }), /*#__PURE__*/ react.default.createElement(ImportKit$1, { default: true }))))); } __name(Import$1, "Import"); //#endregion //#region app/modules/import-export/assets/js/context/export-context/export-context-reducer.js init_defineProperty$1(); function ownKeys$28(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; } __name(ownKeys$28, "ownKeys"); function _objectSpread$27(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$28(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$28(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$27, "_objectSpread"); var reducer$1 = function reducer(state, _ref) { var type = _ref.type; var payload = _ref.payload; switch (type) { case "SET_DOWNLOAD_URL": return _objectSpread$27(_objectSpread$27({}, state), {}, { downloadUrl: payload }); case "SET_EXPORTED_DATA": return _objectSpread$27(_objectSpread$27({}, state), {}, { exportedData: payload }); case "SET_PLUGINS": return _objectSpread$27(_objectSpread$27({}, state), {}, { plugins: payload }); case "SET_IS_EXPORT_PROCESS_STARTED": return _objectSpread$27(_objectSpread$27({}, state), {}, { isExportProcessStarted: payload }); case "SET_KIT_TITLE": return _objectSpread$27(_objectSpread$27({}, state), {}, { kitInfo: _objectSpread$27(_objectSpread$27({}, state.kitInfo), {}, { title: payload }) }); case "SET_KIT_DESCRIPTION": return _objectSpread$27(_objectSpread$27({}, state), {}, { kitInfo: _objectSpread$27(_objectSpread$27({}, state.kitInfo), {}, { description: payload }) }); case "SET_KIT_SAVE_SOURCE": return _objectSpread$27(_objectSpread$27({}, state), {}, { kitInfo: _objectSpread$27(_objectSpread$27({}, state.kitInfo), {}, { source: payload }) }); default: return state; } }; //#endregion //#region app/modules/import-export/assets/js/context/export-context/export-context-provider.js init_slicedToArray(); var ExportContext$1 = react.default.createContext(); function ExportContextProvider$1(props) { var _useReducer2 = _slicedToArray((0, react.useReducer)(reducer$1, { downloadUrl: "", exportedData: null, isExportProcessStarted: false, plugins: [], kitInfo: { title: null, description: null, source: null } }), 2); var data = _useReducer2[0]; var dispatch = _useReducer2[1]; return /*#__PURE__*/ react.default.createElement(ExportContext$1.Provider, { value: { data, dispatch } }, props.children); } __name(ExportContextProvider$1, "ExportContextProvider"); ExportContextProvider$1.propTypes = { children: import_prop_types$82.default.object.isRequired }; //#endregion //#region app/modules/import-export/assets/js/context/connect-state-context.js init_slicedToArray(); var ConnectStateContext$1 = (0, react.createContext)(); function ConnectStateProvider$1(_ref) { var children = _ref.children; var _useState2 = _slicedToArray((0, react.useState)(elementorCommon.config.library_connect.is_connected), 2); var isConnected = _useState2[0]; var setIsConnected = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isConnecting = _useState4[0]; var setIsConnecting = _useState4[1]; var handleConnectSuccess = (0, react.useCallback)(function(callback) { setIsConnecting(true); setIsConnected(true); elementorCommon.config.library_connect.is_connected = true; if (callback) callback(); }, []); var handleConnectError = (0, react.useCallback)(function(callback) { setIsConnected(false); setIsConnecting(false); elementorCommon.config.library_connect.is_connected = false; if (callback) callback(); }, []); var value = { isConnected, isConnecting, setConnecting: (0, react.useCallback)(function(connecting) { setIsConnecting(connecting); }, []), handleConnectSuccess, handleConnectError }; return /*#__PURE__*/ react.default.createElement(ConnectStateContext$1.Provider, { value }, children); } __name(ConnectStateProvider$1, "ConnectStateProvider"); ConnectStateProvider$1.propTypes = { children: import_prop_types$82.default.node.isRequired }; //#endregion //#region node_modules/@babel/runtime/helpers/esm/inheritsLoose.js function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); } var init_inheritsLoose = __esmMin((() => { init_setPrototypeOf(); })); //#endregion //#region node_modules/react-query/es/core/subscribable.js var Subscribable; var init_subscribable = __esmMin((() => { Subscribable = /*#__PURE__*/ function() { function Subscribable() { this.listeners = []; } var _proto = Subscribable.prototype; _proto.subscribe = function subscribe(listener) { var _this = this; var callback = listener || function() {}; this.listeners.push(callback); this.onSubscribe(); return function() { _this.listeners = _this.listeners.filter(function(x) { return x !== callback; }); _this.onUnsubscribe(); }; }; _proto.hasListeners = function hasListeners() { return this.listeners.length > 0; }; _proto.onSubscribe = function onSubscribe() {}; _proto.onUnsubscribe = function onUnsubscribe() {}; return Subscribable; }(); })); //#endregion //#region node_modules/react-query/es/core/utils.js function noop() {} function functionalUpdate(updater, input) { return typeof updater === "function" ? updater(input) : updater; } function isValidTimeout(value) { return typeof value === "number" && value >= 0 && value !== Infinity; } function ensureQueryKeyArray(value) { return Array.isArray(value) ? value : [value]; } function timeUntilStale(updatedAt, staleTime) { return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0); } function parseQueryArgs(arg1, arg2, arg3) { if (!isQueryKey(arg1)) return arg1; if (typeof arg2 === "function") return _extends$1({}, arg3, { queryKey: arg1, queryFn: arg2 }); return _extends$1({}, arg2, { queryKey: arg1 }); } function parseMutationArgs(arg1, arg2, arg3) { if (isQueryKey(arg1)) { if (typeof arg2 === "function") return _extends$1({}, arg3, { mutationKey: arg1, mutationFn: arg2 }); return _extends$1({}, arg2, { mutationKey: arg1 }); } if (typeof arg1 === "function") return _extends$1({}, arg2, { mutationFn: arg1 }); return _extends$1({}, arg1); } function parseFilterArgs(arg1, arg2, arg3) { return isQueryKey(arg1) ? [_extends$1({}, arg2, { queryKey: arg1 }), arg3] : [arg1 || {}, arg2]; } function mapQueryStatusFilter(active, inactive) { if (active === true && inactive === true || active == null && inactive == null) return "all"; else if (active === false && inactive === false) return "none"; else return (active != null ? active : !inactive) ? "active" : "inactive"; } function matchQuery(filters, query) { var active = filters.active; var exact = filters.exact; var fetching = filters.fetching; var inactive = filters.inactive; var predicate = filters.predicate; var queryKey = filters.queryKey; var stale = filters.stale; if (isQueryKey(queryKey)) { if (exact) { if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) return false; } else if (!partialMatchKey(query.queryKey, queryKey)) return false; } var queryStatusFilter = mapQueryStatusFilter(active, inactive); if (queryStatusFilter === "none") return false; else if (queryStatusFilter !== "all") { var isActive = query.isActive(); if (queryStatusFilter === "active" && !isActive) return false; if (queryStatusFilter === "inactive" && isActive) return false; } if (typeof stale === "boolean" && query.isStale() !== stale) return false; if (typeof fetching === "boolean" && query.isFetching() !== fetching) return false; if (predicate && !predicate(query)) return false; return true; } function matchMutation(filters, mutation) { var exact = filters.exact; var fetching = filters.fetching; var predicate = filters.predicate; var mutationKey = filters.mutationKey; if (isQueryKey(mutationKey)) { if (!mutation.options.mutationKey) return false; if (exact) { if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) return false; } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) return false; } if (typeof fetching === "boolean" && mutation.state.status === "loading" !== fetching) return false; if (predicate && !predicate(mutation)) return false; return true; } function hashQueryKeyByOptions(queryKey, options) { return ((options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey)(queryKey); } /** * Default query keys hash function. */ function hashQueryKey(queryKey) { return stableValueHash(ensureQueryKeyArray(queryKey)); } /** * Hashes the value into a stable hash. */ function stableValueHash(value) { return JSON.stringify(value, function(_, val) { return isPlainObject(val) ? Object.keys(val).sort().reduce(function(result, key) { result[key] = val[key]; return result; }, {}) : val; }); } /** * Checks if key `b` partially matches with key `a`. */ function partialMatchKey(a, b) { return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b)); } /** * Checks if `b` partially matches with `a`. */ function partialDeepEqual(a, b) { if (a === b) return true; if (typeof a !== typeof b) return false; if (a && b && typeof a === "object" && typeof b === "object") return !Object.keys(b).some(function(key) { return !partialDeepEqual(a[key], b[key]); }); return false; } /** * This function returns `a` if `b` is deeply equal. * If not, it will replace any deeply equal children of `b` with those of `a`. * This can be used for structural sharing between JSON values for example. */ function replaceEqualDeep(a, b) { if (a === b) return a; var array = Array.isArray(a) && Array.isArray(b); if (array || isPlainObject(a) && isPlainObject(b)) { var aSize = array ? a.length : Object.keys(a).length; var bItems = array ? b : Object.keys(b); var bSize = bItems.length; var copy = array ? [] : {}; var equalItems = 0; for (var i = 0; i < bSize; i++) { var key = array ? i : bItems[i]; copy[key] = replaceEqualDeep(a[key], b[key]); if (copy[key] === a[key]) equalItems++; } return aSize === bSize && equalItems === aSize ? a : copy; } return b; } /** * Shallow compare objects. Only works with objects that always have the same properties. */ function shallowEqualObjects(a, b) { if (a && !b || b && !a) return false; for (var key in a) if (a[key] !== b[key]) return false; return true; } function isPlainObject(o) { if (!hasObjectPrototype(o)) return false; var ctor = o.constructor; if (typeof ctor === "undefined") return true; var prot = ctor.prototype; if (!hasObjectPrototype(prot)) return false; if (!prot.hasOwnProperty("isPrototypeOf")) return false; return true; } function hasObjectPrototype(o) { return Object.prototype.toString.call(o) === "[object Object]"; } function isQueryKey(value) { return typeof value === "string" || Array.isArray(value); } function sleep(timeout) { return new Promise(function(resolve) { setTimeout(resolve, timeout); }); } /** * Schedules a microtask. * This can be useful to schedule state updates after rendering. */ function scheduleMicrotask$1(callback) { Promise.resolve().then(callback).catch(function(error) { return setTimeout(function() { throw error; }); }); } function getAbortController() { if (typeof AbortController === "function") return new AbortController(); } var isServer$2; var init_utils$4 = __esmMin((() => { init_extends(); isServer$2 = typeof window === "undefined"; __name(scheduleMicrotask$1, "scheduleMicrotask"); })); //#endregion //#region node_modules/react-query/es/core/focusManager.js var FocusManager, focusManager; var init_focusManager = __esmMin((() => { init_inheritsLoose(); init_subscribable(); init_utils$4(); FocusManager = /*#__PURE__*/ function(_Subscribable) { _inheritsLoose(FocusManager, _Subscribable); function FocusManager() { var _this = _Subscribable.call(this) || this; _this.setup = function(onFocus) { var _window; if (!isServer$2 && ((_window = window) == null ? void 0 : _window.addEventListener)) { var listener = function listener() { return onFocus(); }; window.addEventListener("visibilitychange", listener, false); window.addEventListener("focus", listener, false); return function() { window.removeEventListener("visibilitychange", listener); window.removeEventListener("focus", listener); }; } }; return _this; } var _proto = FocusManager.prototype; _proto.onSubscribe = function onSubscribe() { if (!this.cleanup) this.setEventListener(this.setup); }; _proto.onUnsubscribe = function onUnsubscribe() { if (!this.hasListeners()) { var _this$cleanup; (_this$cleanup = this.cleanup) == null || _this$cleanup.call(this); this.cleanup = void 0; } }; _proto.setEventListener = function setEventListener(setup) { var _this$cleanup2; var _this2 = this; this.setup = setup; (_this$cleanup2 = this.cleanup) == null || _this$cleanup2.call(this); this.cleanup = setup(function(focused) { if (typeof focused === "boolean") _this2.setFocused(focused); else _this2.onFocus(); }); }; _proto.setFocused = function setFocused(focused) { this.focused = focused; if (focused) this.onFocus(); }; _proto.onFocus = function onFocus() { this.listeners.forEach(function(listener) { listener(); }); }; _proto.isFocused = function isFocused() { if (typeof this.focused === "boolean") return this.focused; if (typeof document === "undefined") return true; return [ void 0, "visible", "prerender" ].includes(document.visibilityState); }; return FocusManager; }(Subscribable); focusManager = new FocusManager(); })); //#endregion //#region node_modules/react-query/es/core/onlineManager.js var OnlineManager, onlineManager; var init_onlineManager = __esmMin((() => { init_inheritsLoose(); init_subscribable(); init_utils$4(); OnlineManager = /*#__PURE__*/ function(_Subscribable) { _inheritsLoose(OnlineManager, _Subscribable); function OnlineManager() { var _this = _Subscribable.call(this) || this; _this.setup = function(onOnline) { var _window; if (!isServer$2 && ((_window = window) == null ? void 0 : _window.addEventListener)) { var listener = function listener() { return onOnline(); }; window.addEventListener("online", listener, false); window.addEventListener("offline", listener, false); return function() { window.removeEventListener("online", listener); window.removeEventListener("offline", listener); }; } }; return _this; } var _proto = OnlineManager.prototype; _proto.onSubscribe = function onSubscribe() { if (!this.cleanup) this.setEventListener(this.setup); }; _proto.onUnsubscribe = function onUnsubscribe() { if (!this.hasListeners()) { var _this$cleanup; (_this$cleanup = this.cleanup) == null || _this$cleanup.call(this); this.cleanup = void 0; } }; _proto.setEventListener = function setEventListener(setup) { var _this$cleanup2; var _this2 = this; this.setup = setup; (_this$cleanup2 = this.cleanup) == null || _this$cleanup2.call(this); this.cleanup = setup(function(online) { if (typeof online === "boolean") _this2.setOnline(online); else _this2.onOnline(); }); }; _proto.setOnline = function setOnline(online) { this.online = online; if (online) this.onOnline(); }; _proto.onOnline = function onOnline() { this.listeners.forEach(function(listener) { listener(); }); }; _proto.isOnline = function isOnline() { if (typeof this.online === "boolean") return this.online; if (typeof navigator === "undefined" || typeof navigator.onLine === "undefined") return true; return navigator.onLine; }; return OnlineManager; }(Subscribable); onlineManager = new OnlineManager(); })); //#endregion //#region node_modules/react-query/es/core/retryer.js function defaultRetryDelay(failureCount) { return Math.min(1e3 * Math.pow(2, failureCount), 3e4); } function isCancelable(value) { return typeof (value == null ? void 0 : value.cancel) === "function"; } function isCancelledError(value) { return value instanceof CancelledError; } var CancelledError, Retryer; var init_retryer = __esmMin((() => { init_focusManager(); init_onlineManager(); init_utils$4(); CancelledError = function CancelledError(options) { this.revert = options == null ? void 0 : options.revert; this.silent = options == null ? void 0 : options.silent; }; Retryer = function Retryer(config) { var _this = this; var cancelRetry = false; var cancelFn; var continueFn; var promiseResolve; var promiseReject; this.abort = config.abort; this.cancel = function(cancelOptions) { return cancelFn == null ? void 0 : cancelFn(cancelOptions); }; this.cancelRetry = function() { cancelRetry = true; }; this.continueRetry = function() { cancelRetry = false; }; this.continue = function() { return continueFn == null ? void 0 : continueFn(); }; this.failureCount = 0; this.isPaused = false; this.isResolved = false; this.isTransportCancelable = false; this.promise = new Promise(function(outerResolve, outerReject) { promiseResolve = outerResolve; promiseReject = outerReject; }); var resolve = function resolve(value) { if (!_this.isResolved) { _this.isResolved = true; config.onSuccess == null || config.onSuccess(value); continueFn == null || continueFn(); promiseResolve(value); } }; var reject = function reject(value) { if (!_this.isResolved) { _this.isResolved = true; config.onError == null || config.onError(value); continueFn == null || continueFn(); promiseReject(value); } }; var pause = function pause() { return new Promise(function(continueResolve) { continueFn = continueResolve; _this.isPaused = true; config.onPause == null || config.onPause(); }).then(function() { continueFn = void 0; _this.isPaused = false; config.onContinue == null || config.onContinue(); }); }; (function run() { if (_this.isResolved) return; var promiseOrValue; try { promiseOrValue = config.fn(); } catch (error) { promiseOrValue = Promise.reject(error); } cancelFn = function cancelFn(cancelOptions) { if (!_this.isResolved) { reject(new CancelledError(cancelOptions)); _this.abort == null || _this.abort(); if (isCancelable(promiseOrValue)) try { promiseOrValue.cancel(); } catch (_unused) {} } }; _this.isTransportCancelable = isCancelable(promiseOrValue); Promise.resolve(promiseOrValue).then(resolve).catch(function(error) { var _config$retry; var _config$retryDelay; if (_this.isResolved) return; var retry = (_config$retry = config.retry) != null ? _config$retry : 3; var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay; var delay = typeof retryDelay === "function" ? retryDelay(_this.failureCount, error) : retryDelay; var shouldRetry = retry === true || typeof retry === "number" && _this.failureCount < retry || typeof retry === "function" && retry(_this.failureCount, error); if (cancelRetry || !shouldRetry) { reject(error); return; } _this.failureCount++; config.onFail == null || config.onFail(_this.failureCount, error); sleep(delay).then(function() { if (!focusManager.isFocused() || !onlineManager.isOnline()) return pause(); }).then(function() { if (cancelRetry) reject(error); else run(); }); }); })(); }; })); //#endregion //#region node_modules/react-query/es/core/notifyManager.js var NotifyManager, notifyManager; var init_notifyManager = __esmMin((() => { init_utils$4(); NotifyManager = /*#__PURE__*/ function() { function NotifyManager() { this.queue = []; this.transactions = 0; this.notifyFn = function(callback) { callback(); }; this.batchNotifyFn = function(callback) { callback(); }; } var _proto = NotifyManager.prototype; _proto.batch = function batch(callback) { var result; this.transactions++; try { result = callback(); } finally { this.transactions--; if (!this.transactions) this.flush(); } return result; }; _proto.schedule = function schedule(callback) { var _this = this; if (this.transactions) this.queue.push(callback); else scheduleMicrotask$1(function() { _this.notifyFn(callback); }); }; _proto.batchCalls = function batchCalls(callback) { var _this2 = this; return function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; _this2.schedule(function() { callback.apply(void 0, args); }); }; }; _proto.flush = function flush() { var _this3 = this; var queue = this.queue; this.queue = []; if (queue.length) scheduleMicrotask$1(function() { _this3.batchNotifyFn(function() { queue.forEach(function(callback) { _this3.notifyFn(callback); }); }); }); }; _proto.setNotifyFunction = function setNotifyFunction(fn) { this.notifyFn = fn; }; _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) { this.batchNotifyFn = fn; }; return NotifyManager; }(); notifyManager = new NotifyManager(); })); //#endregion //#region node_modules/react-query/es/core/logger.js function getLogger() { return logger$8; } function setLogger(newLogger) { logger$8 = newLogger; } var logger$8; var init_logger$1 = __esmMin((() => { logger$8 = console; })); //#endregion //#region node_modules/react-query/es/core/query.js var Query; var init_query = __esmMin((() => { init_extends(); init_utils$4(); init_notifyManager(); init_logger$1(); init_retryer(); Query = /*#__PURE__*/ function() { function Query(config) { this.abortSignalConsumed = false; this.hadObservers = false; this.defaultOptions = config.defaultOptions; this.setOptions(config.options); this.observers = []; this.cache = config.cache; this.queryKey = config.queryKey; this.queryHash = config.queryHash; this.initialState = config.state || this.getDefaultState(this.options); this.state = this.initialState; this.meta = config.meta; this.scheduleGc(); } var _proto = Query.prototype; _proto.setOptions = function setOptions(options) { var _this$options$cacheTi; this.options = _extends$1({}, this.defaultOptions, options); this.meta = options == null ? void 0 : options.meta; this.cacheTime = Math.max(this.cacheTime || 0, (_this$options$cacheTi = this.options.cacheTime) != null ? _this$options$cacheTi : 300 * 1e3); }; _proto.setDefaultOptions = function setDefaultOptions(options) { this.defaultOptions = options; }; _proto.scheduleGc = function scheduleGc() { var _this = this; this.clearGcTimeout(); if (isValidTimeout(this.cacheTime)) this.gcTimeout = setTimeout(function() { _this.optionalRemove(); }, this.cacheTime); }; _proto.clearGcTimeout = function clearGcTimeout() { if (this.gcTimeout) { clearTimeout(this.gcTimeout); this.gcTimeout = void 0; } }; _proto.optionalRemove = function optionalRemove() { if (!this.observers.length) if (this.state.isFetching) { if (this.hadObservers) this.scheduleGc(); } else this.cache.remove(this); }; _proto.setData = function setData(updater, options) { var _this$options$isDataE; var _this$options; var prevData = this.state.data; var data = functionalUpdate(updater, prevData); if ((_this$options$isDataE = (_this$options = this.options).isDataEqual) == null ? void 0 : _this$options$isDataE.call(_this$options, prevData, data)) data = prevData; else if (this.options.structuralSharing !== false) data = replaceEqualDeep(prevData, data); this.dispatch({ data, type: "success", dataUpdatedAt: options == null ? void 0 : options.updatedAt }); return data; }; _proto.setState = function setState(state, setStateOptions) { this.dispatch({ type: "setState", state, setStateOptions }); }; _proto.cancel = function cancel(options) { var _this$retryer; var promise = this.promise; (_this$retryer = this.retryer) == null || _this$retryer.cancel(options); return promise ? promise.then(noop).catch(noop) : Promise.resolve(); }; _proto.destroy = function destroy() { this.clearGcTimeout(); this.cancel({ silent: true }); }; _proto.reset = function reset() { this.destroy(); this.setState(this.initialState); }; _proto.isActive = function isActive() { return this.observers.some(function(observer) { return observer.options.enabled !== false; }); }; _proto.isFetching = function isFetching() { return this.state.isFetching; }; _proto.isStale = function isStale() { return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(function(observer) { return observer.getCurrentResult().isStale; }); }; _proto.isStaleByTime = function isStaleByTime(staleTime) { if (staleTime === void 0) staleTime = 0; return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime); }; _proto.onFocus = function onFocus() { var _this$retryer2; var observer = this.observers.find(function(x) { return x.shouldFetchOnWindowFocus(); }); if (observer) observer.refetch(); (_this$retryer2 = this.retryer) == null || _this$retryer2.continue(); }; _proto.onOnline = function onOnline() { var _this$retryer3; var observer = this.observers.find(function(x) { return x.shouldFetchOnReconnect(); }); if (observer) observer.refetch(); (_this$retryer3 = this.retryer) == null || _this$retryer3.continue(); }; _proto.addObserver = function addObserver(observer) { if (this.observers.indexOf(observer) === -1) { this.observers.push(observer); this.hadObservers = true; this.clearGcTimeout(); this.cache.notify({ type: "observerAdded", query: this, observer }); } }; _proto.removeObserver = function removeObserver(observer) { if (this.observers.indexOf(observer) !== -1) { this.observers = this.observers.filter(function(x) { return x !== observer; }); if (!this.observers.length) { if (this.retryer) if (this.retryer.isTransportCancelable || this.abortSignalConsumed) this.retryer.cancel({ revert: true }); else this.retryer.cancelRetry(); if (this.cacheTime) this.scheduleGc(); else this.cache.remove(this); } this.cache.notify({ type: "observerRemoved", query: this, observer }); } }; _proto.getObserversCount = function getObserversCount() { return this.observers.length; }; _proto.invalidate = function invalidate() { if (!this.state.isInvalidated) this.dispatch({ type: "invalidate" }); }; _proto.fetch = function fetch(options, fetchOptions) { var _this2 = this; var _this$options$behavio; var _context$fetchOptions; var _abortController$abor; if (this.state.isFetching) { if (this.state.dataUpdatedAt && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) this.cancel({ silent: true }); else if (this.promise) { var _this$retryer4; (_this$retryer4 = this.retryer) == null || _this$retryer4.continueRetry(); return this.promise; } } if (options) this.setOptions(options); if (!this.options.queryFn) { var observer = this.observers.find(function(x) { return x.options.queryFn; }); if (observer) this.setOptions(observer.options); } var queryKey = ensureQueryKeyArray(this.queryKey); var abortController = getAbortController(); var queryFnContext = { queryKey, pageParam: void 0, meta: this.meta }; Object.defineProperty(queryFnContext, "signal", { enumerable: true, get: function get() { if (abortController) { _this2.abortSignalConsumed = true; return abortController.signal; } } }); var context = { fetchOptions, options: this.options, queryKey, state: this.state, fetchFn: function fetchFn() { if (!_this2.options.queryFn) return Promise.reject("Missing queryFn"); _this2.abortSignalConsumed = false; return _this2.options.queryFn(queryFnContext); }, meta: this.meta }; if ((_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch) { var _this$options$behavio2; (_this$options$behavio2 = this.options.behavior) == null || _this$options$behavio2.onFetch(context); } this.revertState = this.state; if (!this.state.isFetching || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) { var _context$fetchOptions2; this.dispatch({ type: "fetch", meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta }); } this.retryer = new Retryer({ fn: context.fetchFn, abort: abortController == null ? void 0 : (_abortController$abor = abortController.abort) == null ? void 0 : _abortController$abor.bind(abortController), onSuccess: function onSuccess(data) { _this2.setData(data); _this2.cache.config.onSuccess == null || _this2.cache.config.onSuccess(data, _this2); if (_this2.cacheTime === 0) _this2.optionalRemove(); }, onError: function onError(error) { if (!(isCancelledError(error) && error.silent)) _this2.dispatch({ type: "error", error }); if (!isCancelledError(error)) { _this2.cache.config.onError == null || _this2.cache.config.onError(error, _this2); getLogger().error(error); } if (_this2.cacheTime === 0) _this2.optionalRemove(); }, onFail: function onFail() { _this2.dispatch({ type: "failed" }); }, onPause: function onPause() { _this2.dispatch({ type: "pause" }); }, onContinue: function onContinue() { _this2.dispatch({ type: "continue" }); }, retry: context.options.retry, retryDelay: context.options.retryDelay }); this.promise = this.retryer.promise; return this.promise; }; _proto.dispatch = function dispatch(action) { var _this3 = this; this.state = this.reducer(this.state, action); notifyManager.batch(function() { _this3.observers.forEach(function(observer) { observer.onQueryUpdate(action); }); _this3.cache.notify({ query: _this3, type: "queryUpdated", action }); }); }; _proto.getDefaultState = function getDefaultState(options) { var data = typeof options.initialData === "function" ? options.initialData() : options.initialData; var initialDataUpdatedAt = typeof options.initialData !== "undefined" ? typeof options.initialDataUpdatedAt === "function" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0; var hasData = typeof data !== "undefined"; return { data, dataUpdateCount: 0, dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchMeta: null, isFetching: false, isInvalidated: false, isPaused: false, status: hasData ? "success" : "idle" }; }; _proto.reducer = function reducer(state, action) { var _action$meta; var _action$dataUpdatedAt; switch (action.type) { case "failed": return _extends$1({}, state, { fetchFailureCount: state.fetchFailureCount + 1 }); case "pause": return _extends$1({}, state, { isPaused: true }); case "continue": return _extends$1({}, state, { isPaused: false }); case "fetch": return _extends$1({}, state, { fetchFailureCount: 0, fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null, isFetching: true, isPaused: false }, !state.dataUpdatedAt && { error: null, status: "loading" }); case "success": return _extends$1({}, state, { data: action.data, dataUpdateCount: state.dataUpdateCount + 1, dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(), error: null, fetchFailureCount: 0, isFetching: false, isInvalidated: false, isPaused: false, status: "success" }); case "error": var error = action.error; if (isCancelledError(error) && error.revert && this.revertState) return _extends$1({}, this.revertState); return _extends$1({}, state, { error, errorUpdateCount: state.errorUpdateCount + 1, errorUpdatedAt: Date.now(), fetchFailureCount: state.fetchFailureCount + 1, isFetching: false, isPaused: false, status: "error" }); case "invalidate": return _extends$1({}, state, { isInvalidated: true }); case "setState": return _extends$1({}, state, action.state); default: return state; } }; return Query; }(); })); //#endregion //#region node_modules/react-query/es/core/queryCache.js var QueryCache; var init_queryCache = __esmMin((() => { init_inheritsLoose(); init_utils$4(); init_query(); init_notifyManager(); init_subscribable(); QueryCache = /*#__PURE__*/ function(_Subscribable) { _inheritsLoose(QueryCache, _Subscribable); function QueryCache(config) { var _this = _Subscribable.call(this) || this; _this.config = config || {}; _this.queries = []; _this.queriesMap = {}; return _this; } var _proto = QueryCache.prototype; _proto.build = function build(client, options, state) { var _options$queryHash; var queryKey = options.queryKey; var queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options); var query = this.get(queryHash); if (!query) { query = new Query({ cache: this, queryKey, queryHash, options: client.defaultQueryOptions(options), state, defaultOptions: client.getQueryDefaults(queryKey), meta: options.meta }); this.add(query); } return query; }; _proto.add = function add(query) { if (!this.queriesMap[query.queryHash]) { this.queriesMap[query.queryHash] = query; this.queries.push(query); this.notify({ type: "queryAdded", query }); } }; _proto.remove = function remove(query) { var queryInMap = this.queriesMap[query.queryHash]; if (queryInMap) { query.destroy(); this.queries = this.queries.filter(function(x) { return x !== query; }); if (queryInMap === query) delete this.queriesMap[query.queryHash]; this.notify({ type: "queryRemoved", query }); } }; _proto.clear = function clear() { var _this2 = this; notifyManager.batch(function() { _this2.queries.forEach(function(query) { _this2.remove(query); }); }); }; _proto.get = function get(queryHash) { return this.queriesMap[queryHash]; }; _proto.getAll = function getAll() { return this.queries; }; _proto.find = function find(arg1, arg2) { var filters = parseFilterArgs(arg1, arg2)[0]; if (typeof filters.exact === "undefined") filters.exact = true; return this.queries.find(function(query) { return matchQuery(filters, query); }); }; _proto.findAll = function findAll(arg1, arg2) { var filters = parseFilterArgs(arg1, arg2)[0]; return Object.keys(filters).length > 0 ? this.queries.filter(function(query) { return matchQuery(filters, query); }) : this.queries; }; _proto.notify = function notify(event) { var _this3 = this; notifyManager.batch(function() { _this3.listeners.forEach(function(listener) { listener(event); }); }); }; _proto.onFocus = function onFocus() { var _this4 = this; notifyManager.batch(function() { _this4.queries.forEach(function(query) { query.onFocus(); }); }); }; _proto.onOnline = function onOnline() { var _this5 = this; notifyManager.batch(function() { _this5.queries.forEach(function(query) { query.onOnline(); }); }); }; return QueryCache; }(Subscribable); })); //#endregion //#region node_modules/react-query/es/core/mutation.js function getDefaultState() { return { context: void 0, data: void 0, error: null, failureCount: 0, isPaused: false, status: "idle", variables: void 0 }; } function reducer(state, action) { switch (action.type) { case "failed": return _extends$1({}, state, { failureCount: state.failureCount + 1 }); case "pause": return _extends$1({}, state, { isPaused: true }); case "continue": return _extends$1({}, state, { isPaused: false }); case "loading": return _extends$1({}, state, { context: action.context, data: void 0, error: null, isPaused: false, status: "loading", variables: action.variables }); case "success": return _extends$1({}, state, { data: action.data, error: null, status: "success", isPaused: false }); case "error": return _extends$1({}, state, { data: void 0, error: action.error, failureCount: state.failureCount + 1, isPaused: false, status: "error" }); case "setState": return _extends$1({}, state, action.state); default: return state; } } var Mutation; var init_mutation = __esmMin((() => { init_extends(); init_logger$1(); init_notifyManager(); init_retryer(); init_utils$4(); Mutation = /*#__PURE__*/ function() { function Mutation(config) { this.options = _extends$1({}, config.defaultOptions, config.options); this.mutationId = config.mutationId; this.mutationCache = config.mutationCache; this.observers = []; this.state = config.state || getDefaultState(); this.meta = config.meta; } var _proto = Mutation.prototype; _proto.setState = function setState(state) { this.dispatch({ type: "setState", state }); }; _proto.addObserver = function addObserver(observer) { if (this.observers.indexOf(observer) === -1) this.observers.push(observer); }; _proto.removeObserver = function removeObserver(observer) { this.observers = this.observers.filter(function(x) { return x !== observer; }); }; _proto.cancel = function cancel() { if (this.retryer) { this.retryer.cancel(); return this.retryer.promise.then(noop).catch(noop); } return Promise.resolve(); }; _proto.continue = function _continue() { if (this.retryer) { this.retryer.continue(); return this.retryer.promise; } return this.execute(); }; _proto.execute = function execute() { var _this = this; var data; var restored = this.state.status === "loading"; var promise = Promise.resolve(); if (!restored) { this.dispatch({ type: "loading", variables: this.options.variables }); promise = promise.then(function() { _this.mutationCache.config.onMutate == null || _this.mutationCache.config.onMutate(_this.state.variables, _this); }).then(function() { return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables); }).then(function(context) { if (context !== _this.state.context) _this.dispatch({ type: "loading", context, variables: _this.state.variables }); }); } return promise.then(function() { return _this.executeMutation(); }).then(function(result) { data = result; _this.mutationCache.config.onSuccess == null || _this.mutationCache.config.onSuccess(data, _this.state.variables, _this.state.context, _this); }).then(function() { return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context); }).then(function() { return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context); }).then(function() { _this.dispatch({ type: "success", data }); return data; }).catch(function(error) { _this.mutationCache.config.onError == null || _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this); getLogger().error(error); return Promise.resolve().then(function() { return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context); }).then(function() { return _this.options.onSettled == null ? void 0 : _this.options.onSettled(void 0, error, _this.state.variables, _this.state.context); }).then(function() { _this.dispatch({ type: "error", error }); throw error; }); }); }; _proto.executeMutation = function executeMutation() { var _this2 = this; var _this$options$retry; this.retryer = new Retryer({ fn: function fn() { if (!_this2.options.mutationFn) return Promise.reject("No mutationFn found"); return _this2.options.mutationFn(_this2.state.variables); }, onFail: function onFail() { _this2.dispatch({ type: "failed" }); }, onPause: function onPause() { _this2.dispatch({ type: "pause" }); }, onContinue: function onContinue() { _this2.dispatch({ type: "continue" }); }, retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0, retryDelay: this.options.retryDelay }); return this.retryer.promise; }; _proto.dispatch = function dispatch(action) { var _this3 = this; this.state = reducer(this.state, action); notifyManager.batch(function() { _this3.observers.forEach(function(observer) { observer.onMutationUpdate(action); }); _this3.mutationCache.notify(_this3); }); }; return Mutation; }(); })); //#endregion //#region node_modules/react-query/es/core/mutationCache.js var MutationCache; var init_mutationCache = __esmMin((() => { init_inheritsLoose(); init_notifyManager(); init_mutation(); init_utils$4(); init_subscribable(); MutationCache = /*#__PURE__*/ function(_Subscribable) { _inheritsLoose(MutationCache, _Subscribable); function MutationCache(config) { var _this = _Subscribable.call(this) || this; _this.config = config || {}; _this.mutations = []; _this.mutationId = 0; return _this; } var _proto = MutationCache.prototype; _proto.build = function build(client, options, state) { var mutation = new Mutation({ mutationCache: this, mutationId: ++this.mutationId, options: client.defaultMutationOptions(options), state, defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : void 0, meta: options.meta }); this.add(mutation); return mutation; }; _proto.add = function add(mutation) { this.mutations.push(mutation); this.notify(mutation); }; _proto.remove = function remove(mutation) { this.mutations = this.mutations.filter(function(x) { return x !== mutation; }); mutation.cancel(); this.notify(mutation); }; _proto.clear = function clear() { var _this2 = this; notifyManager.batch(function() { _this2.mutations.forEach(function(mutation) { _this2.remove(mutation); }); }); }; _proto.getAll = function getAll() { return this.mutations; }; _proto.find = function find(filters) { if (typeof filters.exact === "undefined") filters.exact = true; return this.mutations.find(function(mutation) { return matchMutation(filters, mutation); }); }; _proto.findAll = function findAll(filters) { return this.mutations.filter(function(mutation) { return matchMutation(filters, mutation); }); }; _proto.notify = function notify(mutation) { var _this3 = this; notifyManager.batch(function() { _this3.listeners.forEach(function(listener) { listener(mutation); }); }); }; _proto.onFocus = function onFocus() { this.resumePausedMutations(); }; _proto.onOnline = function onOnline() { this.resumePausedMutations(); }; _proto.resumePausedMutations = function resumePausedMutations() { var pausedMutations = this.mutations.filter(function(x) { return x.state.isPaused; }); return notifyManager.batch(function() { return pausedMutations.reduce(function(promise, mutation) { return promise.then(function() { return mutation.continue().catch(noop); }); }, Promise.resolve()); }); }; return MutationCache; }(Subscribable); })); //#endregion //#region node_modules/react-query/es/core/infiniteQueryBehavior.js function infiniteQueryBehavior() { return { onFetch: function onFetch(context) { context.fetchFn = function() { var _context$fetchOptions; var _context$fetchOptions2; var _context$fetchOptions3; var _context$fetchOptions4; var _context$state$data; var _context$state$data2; var refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage; var fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore; var pageParam = fetchMore == null ? void 0 : fetchMore.pageParam; var isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === "forward"; var isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === "backward"; var oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || []; var oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || []; var abortController = getAbortController(); var abortSignal = abortController == null ? void 0 : abortController.signal; var newPageParams = oldPageParams; var cancelled = false; var queryFn = context.options.queryFn || function() { return Promise.reject("Missing queryFn"); }; var buildNewPages = function buildNewPages(pages, param, page, previous) { newPageParams = previous ? [param].concat(newPageParams) : [].concat(newPageParams, [param]); return previous ? [page].concat(pages) : [].concat(pages, [page]); }; var fetchPage = function fetchPage(pages, manual, param, previous) { if (cancelled) return Promise.reject("Cancelled"); if (typeof param === "undefined" && !manual && pages.length) return Promise.resolve(pages); var queryFnResult = queryFn({ queryKey: context.queryKey, signal: abortSignal, pageParam: param, meta: context.meta }); var promise = Promise.resolve(queryFnResult).then(function(page) { return buildNewPages(pages, param, page, previous); }); if (isCancelable(queryFnResult)) { var promiseAsAny = promise; promiseAsAny.cancel = queryFnResult.cancel; } return promise; }; var promise; if (!oldPages.length) promise = fetchPage([]); else if (isFetchingNextPage) { var manual = typeof pageParam !== "undefined"; promise = fetchPage(oldPages, manual, manual ? pageParam : getNextPageParam(context.options, oldPages)); } else if (isFetchingPreviousPage) { var _manual = typeof pageParam !== "undefined"; promise = fetchPage(oldPages, _manual, _manual ? pageParam : getPreviousPageParam(context.options, oldPages), true); } else (function() { newPageParams = []; var manual = typeof context.options.getNextPageParam === "undefined"; promise = (refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true) ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); var _loop = function _loop(i) { promise = promise.then(function(pages) { if (refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true) return fetchPage(pages, manual, manual ? oldPageParams[i] : getNextPageParam(context.options, pages)); return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i])); }); }; for (var i = 1; i < oldPages.length; i++) _loop(i); })(); var finalPromise = promise.then(function(pages) { return { pages, pageParams: newPageParams }; }); var finalPromiseAsAny = finalPromise; finalPromiseAsAny.cancel = function() { cancelled = true; abortController == null || abortController.abort(); if (isCancelable(promise)) promise.cancel(); }; return finalPromise; }; } }; } function getNextPageParam(options, pages) { return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages); } function getPreviousPageParam(options, pages) { return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages); } var init_infiniteQueryBehavior = __esmMin((() => { init_retryer(); init_utils$4(); })); //#endregion //#region node_modules/react-query/es/core/queryClient.js var QueryClient; var init_queryClient = __esmMin((() => { init_extends(); init_utils$4(); init_queryCache(); init_mutationCache(); init_focusManager(); init_onlineManager(); init_notifyManager(); init_infiniteQueryBehavior(); QueryClient = /*#__PURE__*/ function() { function QueryClient(config) { if (config === void 0) config = {}; this.queryCache = config.queryCache || new QueryCache(); this.mutationCache = config.mutationCache || new MutationCache(); this.defaultOptions = config.defaultOptions || {}; this.queryDefaults = []; this.mutationDefaults = []; } var _proto = QueryClient.prototype; _proto.mount = function mount() { var _this = this; this.unsubscribeFocus = focusManager.subscribe(function() { if (focusManager.isFocused() && onlineManager.isOnline()) { _this.mutationCache.onFocus(); _this.queryCache.onFocus(); } }); this.unsubscribeOnline = onlineManager.subscribe(function() { if (focusManager.isFocused() && onlineManager.isOnline()) { _this.mutationCache.onOnline(); _this.queryCache.onOnline(); } }); }; _proto.unmount = function unmount() { var _this$unsubscribeFocu; var _this$unsubscribeOnli; (_this$unsubscribeFocu = this.unsubscribeFocus) == null || _this$unsubscribeFocu.call(this); (_this$unsubscribeOnli = this.unsubscribeOnline) == null || _this$unsubscribeOnli.call(this); }; _proto.isFetching = function isFetching(arg1, arg2) { var filters = parseFilterArgs(arg1, arg2)[0]; filters.fetching = true; return this.queryCache.findAll(filters).length; }; _proto.isMutating = function isMutating(filters) { return this.mutationCache.findAll(_extends$1({}, filters, { fetching: true })).length; }; _proto.getQueryData = function getQueryData(queryKey, filters) { var _this$queryCache$find; return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data; }; _proto.getQueriesData = function getQueriesData(queryKeyOrFilters) { return this.getQueryCache().findAll(queryKeyOrFilters).map(function(_ref) { return [_ref.queryKey, _ref.state.data]; }); }; _proto.setQueryData = function setQueryData(queryKey, updater, options) { var parsedOptions = parseQueryArgs(queryKey); var defaultedOptions = this.defaultQueryOptions(parsedOptions); return this.queryCache.build(this, defaultedOptions).setData(updater, options); }; _proto.setQueriesData = function setQueriesData(queryKeyOrFilters, updater, options) { var _this2 = this; return notifyManager.batch(function() { return _this2.getQueryCache().findAll(queryKeyOrFilters).map(function(_ref2) { var queryKey = _ref2.queryKey; return [queryKey, _this2.setQueryData(queryKey, updater, options)]; }); }); }; _proto.getQueryState = function getQueryState(queryKey, filters) { var _this$queryCache$find2; return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state; }; _proto.removeQueries = function removeQueries(arg1, arg2) { var filters = parseFilterArgs(arg1, arg2)[0]; var queryCache = this.queryCache; notifyManager.batch(function() { queryCache.findAll(filters).forEach(function(query) { queryCache.remove(query); }); }); }; _proto.resetQueries = function resetQueries(arg1, arg2, arg3) { var _this3 = this; var _parseFilterArgs3 = parseFilterArgs(arg1, arg2, arg3); var filters = _parseFilterArgs3[0]; var options = _parseFilterArgs3[1]; var queryCache = this.queryCache; var refetchFilters = _extends$1({}, filters, { active: true }); return notifyManager.batch(function() { queryCache.findAll(filters).forEach(function(query) { query.reset(); }); return _this3.refetchQueries(refetchFilters, options); }); }; _proto.cancelQueries = function cancelQueries(arg1, arg2, arg3) { var _this4 = this; var _parseFilterArgs4 = parseFilterArgs(arg1, arg2, arg3); var filters = _parseFilterArgs4[0]; var _parseFilterArgs4$ = _parseFilterArgs4[1]; var cancelOptions = _parseFilterArgs4$ === void 0 ? {} : _parseFilterArgs4$; if (typeof cancelOptions.revert === "undefined") cancelOptions.revert = true; var promises = notifyManager.batch(function() { return _this4.queryCache.findAll(filters).map(function(query) { return query.cancel(cancelOptions); }); }); return Promise.all(promises).then(noop).catch(noop); }; _proto.invalidateQueries = function invalidateQueries(arg1, arg2, arg3) { var _ref3; var _filters$refetchActiv; var _filters$refetchInact; var _this5 = this; var _parseFilterArgs5 = parseFilterArgs(arg1, arg2, arg3); var filters = _parseFilterArgs5[0]; var options = _parseFilterArgs5[1]; var refetchFilters = _extends$1({}, filters, { active: (_ref3 = (_filters$refetchActiv = filters.refetchActive) != null ? _filters$refetchActiv : filters.active) != null ? _ref3 : true, inactive: (_filters$refetchInact = filters.refetchInactive) != null ? _filters$refetchInact : false }); return notifyManager.batch(function() { _this5.queryCache.findAll(filters).forEach(function(query) { query.invalidate(); }); return _this5.refetchQueries(refetchFilters, options); }); }; _proto.refetchQueries = function refetchQueries(arg1, arg2, arg3) { var _this6 = this; var _parseFilterArgs6 = parseFilterArgs(arg1, arg2, arg3); var filters = _parseFilterArgs6[0]; var options = _parseFilterArgs6[1]; var promises = notifyManager.batch(function() { return _this6.queryCache.findAll(filters).map(function(query) { return query.fetch(void 0, _extends$1({}, options, { meta: { refetchPage: filters == null ? void 0 : filters.refetchPage } })); }); }); var promise = Promise.all(promises).then(noop); if (!(options == null ? void 0 : options.throwOnError)) promise = promise.catch(noop); return promise; }; _proto.fetchQuery = function fetchQuery(arg1, arg2, arg3) { var parsedOptions = parseQueryArgs(arg1, arg2, arg3); var defaultedOptions = this.defaultQueryOptions(parsedOptions); if (typeof defaultedOptions.retry === "undefined") defaultedOptions.retry = false; var query = this.queryCache.build(this, defaultedOptions); return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data); }; _proto.prefetchQuery = function prefetchQuery(arg1, arg2, arg3) { return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop); }; _proto.fetchInfiniteQuery = function fetchInfiniteQuery(arg1, arg2, arg3) { var parsedOptions = parseQueryArgs(arg1, arg2, arg3); parsedOptions.behavior = infiniteQueryBehavior(); return this.fetchQuery(parsedOptions); }; _proto.prefetchInfiniteQuery = function prefetchInfiniteQuery(arg1, arg2, arg3) { return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop); }; _proto.cancelMutations = function cancelMutations() { var _this7 = this; var promises = notifyManager.batch(function() { return _this7.mutationCache.getAll().map(function(mutation) { return mutation.cancel(); }); }); return Promise.all(promises).then(noop).catch(noop); }; _proto.resumePausedMutations = function resumePausedMutations() { return this.getMutationCache().resumePausedMutations(); }; _proto.executeMutation = function executeMutation(options) { return this.mutationCache.build(this, options).execute(); }; _proto.getQueryCache = function getQueryCache() { return this.queryCache; }; _proto.getMutationCache = function getMutationCache() { return this.mutationCache; }; _proto.getDefaultOptions = function getDefaultOptions() { return this.defaultOptions; }; _proto.setDefaultOptions = function setDefaultOptions(options) { this.defaultOptions = options; }; _proto.setQueryDefaults = function setQueryDefaults(queryKey, options) { var result = this.queryDefaults.find(function(x) { return hashQueryKey(queryKey) === hashQueryKey(x.queryKey); }); if (result) result.defaultOptions = options; else this.queryDefaults.push({ queryKey, defaultOptions: options }); }; _proto.getQueryDefaults = function getQueryDefaults(queryKey) { var _this$queryDefaults$f; return queryKey ? (_this$queryDefaults$f = this.queryDefaults.find(function(x) { return partialMatchKey(queryKey, x.queryKey); })) == null ? void 0 : _this$queryDefaults$f.defaultOptions : void 0; }; _proto.setMutationDefaults = function setMutationDefaults(mutationKey, options) { var result = this.mutationDefaults.find(function(x) { return hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey); }); if (result) result.defaultOptions = options; else this.mutationDefaults.push({ mutationKey, defaultOptions: options }); }; _proto.getMutationDefaults = function getMutationDefaults(mutationKey) { var _this$mutationDefault; return mutationKey ? (_this$mutationDefault = this.mutationDefaults.find(function(x) { return partialMatchKey(mutationKey, x.mutationKey); })) == null ? void 0 : _this$mutationDefault.defaultOptions : void 0; }; _proto.defaultQueryOptions = function defaultQueryOptions(options) { if (options == null ? void 0 : options._defaulted) return options; var defaultedOptions = _extends$1({}, this.defaultOptions.queries, this.getQueryDefaults(options == null ? void 0 : options.queryKey), options, { _defaulted: true }); if (!defaultedOptions.queryHash && defaultedOptions.queryKey) defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions); return defaultedOptions; }; _proto.defaultQueryObserverOptions = function defaultQueryObserverOptions(options) { return this.defaultQueryOptions(options); }; _proto.defaultMutationOptions = function defaultMutationOptions(options) { if (options == null ? void 0 : options._defaulted) return options; return _extends$1({}, this.defaultOptions.mutations, this.getMutationDefaults(options == null ? void 0 : options.mutationKey), options, { _defaulted: true }); }; _proto.clear = function clear() { this.queryCache.clear(); this.mutationCache.clear(); }; return QueryClient; }(); })); //#endregion //#region node_modules/react-query/es/core/queryObserver.js function shouldLoadOnMount(query, options) { return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === "error" && options.retryOnMount === false); } function shouldFetchOnMount(query, options) { return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount); } function shouldFetchOn(query, options, field) { if (options.enabled !== false) { var value = typeof field === "function" ? field(query) : field; return value === "always" || value !== false && isStale(query, options); } return false; } function shouldFetchOptionally(query, prevQuery, options, prevOptions) { return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== "error") && isStale(query, options); } function isStale(query, options) { return query.isStaleByTime(options.staleTime); } var QueryObserver; var init_queryObserver = __esmMin((() => { init_extends(); init_inheritsLoose(); init_utils$4(); init_notifyManager(); init_focusManager(); init_subscribable(); init_logger$1(); init_retryer(); QueryObserver = /*#__PURE__*/ function(_Subscribable) { _inheritsLoose(QueryObserver, _Subscribable); function QueryObserver(client, options) { var _this = _Subscribable.call(this) || this; _this.client = client; _this.options = options; _this.trackedProps = []; _this.selectError = null; _this.bindMethods(); _this.setOptions(options); return _this; } var _proto = QueryObserver.prototype; _proto.bindMethods = function bindMethods() { this.remove = this.remove.bind(this); this.refetch = this.refetch.bind(this); }; _proto.onSubscribe = function onSubscribe() { if (this.listeners.length === 1) { this.currentQuery.addObserver(this); if (shouldFetchOnMount(this.currentQuery, this.options)) this.executeFetch(); this.updateTimers(); } }; _proto.onUnsubscribe = function onUnsubscribe() { if (!this.listeners.length) this.destroy(); }; _proto.shouldFetchOnReconnect = function shouldFetchOnReconnect() { return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect); }; _proto.shouldFetchOnWindowFocus = function shouldFetchOnWindowFocus() { return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus); }; _proto.destroy = function destroy() { this.listeners = []; this.clearTimers(); this.currentQuery.removeObserver(this); }; _proto.setOptions = function setOptions(options, notifyOptions) { var prevOptions = this.options; var prevQuery = this.currentQuery; this.options = this.client.defaultQueryObserverOptions(options); if (typeof this.options.enabled !== "undefined" && typeof this.options.enabled !== "boolean") throw new Error("Expected enabled to be a boolean"); if (!this.options.queryKey) this.options.queryKey = prevOptions.queryKey; this.updateQuery(); var mounted = this.hasListeners(); if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) this.executeFetch(); this.updateResult(notifyOptions); if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) this.updateStaleTimeout(); var nextRefetchInterval = this.computeRefetchInterval(); if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) this.updateRefetchInterval(nextRefetchInterval); }; _proto.getOptimisticResult = function getOptimisticResult(options) { var defaultedOptions = this.client.defaultQueryObserverOptions(options); var query = this.client.getQueryCache().build(this.client, defaultedOptions); return this.createResult(query, defaultedOptions); }; _proto.getCurrentResult = function getCurrentResult() { return this.currentResult; }; _proto.trackResult = function trackResult(result, defaultedOptions) { var _this2 = this; var trackedResult = {}; var trackProp = function trackProp(key) { if (!_this2.trackedProps.includes(key)) _this2.trackedProps.push(key); }; Object.keys(result).forEach(function(key) { Object.defineProperty(trackedResult, key, { configurable: false, enumerable: true, get: function get() { trackProp(key); return result[key]; } }); }); if (defaultedOptions.useErrorBoundary || defaultedOptions.suspense) trackProp("error"); return trackedResult; }; _proto.getNextResult = function getNextResult(options) { var _this3 = this; return new Promise(function(resolve, reject) { var unsubscribe = _this3.subscribe(function(result) { if (!result.isFetching) { unsubscribe(); if (result.isError && (options == null ? void 0 : options.throwOnError)) reject(result.error); else resolve(result); } }); }); }; _proto.getCurrentQuery = function getCurrentQuery() { return this.currentQuery; }; _proto.remove = function remove() { this.client.getQueryCache().remove(this.currentQuery); }; _proto.refetch = function refetch(options) { return this.fetch(_extends$1({}, options, { meta: { refetchPage: options == null ? void 0 : options.refetchPage } })); }; _proto.fetchOptimistic = function fetchOptimistic(options) { var _this4 = this; var defaultedOptions = this.client.defaultQueryObserverOptions(options); var query = this.client.getQueryCache().build(this.client, defaultedOptions); return query.fetch().then(function() { return _this4.createResult(query, defaultedOptions); }); }; _proto.fetch = function fetch(fetchOptions) { var _this5 = this; return this.executeFetch(fetchOptions).then(function() { _this5.updateResult(); return _this5.currentResult; }); }; _proto.executeFetch = function executeFetch(fetchOptions) { this.updateQuery(); var promise = this.currentQuery.fetch(this.options, fetchOptions); if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) promise = promise.catch(noop); return promise; }; _proto.updateStaleTimeout = function updateStaleTimeout() { var _this6 = this; this.clearStaleTimeout(); if (isServer$2 || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) return; var timeout = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime) + 1; this.staleTimeoutId = setTimeout(function() { if (!_this6.currentResult.isStale) _this6.updateResult(); }, timeout); }; _proto.computeRefetchInterval = function computeRefetchInterval() { var _this$options$refetch; return typeof this.options.refetchInterval === "function" ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false; }; _proto.updateRefetchInterval = function updateRefetchInterval(nextInterval) { var _this7 = this; this.clearRefetchInterval(); this.currentRefetchInterval = nextInterval; if (isServer$2 || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) return; this.refetchIntervalId = setInterval(function() { if (_this7.options.refetchIntervalInBackground || focusManager.isFocused()) _this7.executeFetch(); }, this.currentRefetchInterval); }; _proto.updateTimers = function updateTimers() { this.updateStaleTimeout(); this.updateRefetchInterval(this.computeRefetchInterval()); }; _proto.clearTimers = function clearTimers() { this.clearStaleTimeout(); this.clearRefetchInterval(); }; _proto.clearStaleTimeout = function clearStaleTimeout() { if (this.staleTimeoutId) { clearTimeout(this.staleTimeoutId); this.staleTimeoutId = void 0; } }; _proto.clearRefetchInterval = function clearRefetchInterval() { if (this.refetchIntervalId) { clearInterval(this.refetchIntervalId); this.refetchIntervalId = void 0; } }; _proto.createResult = function createResult(query, options) { var prevQuery = this.currentQuery; var prevOptions = this.options; var prevResult = this.currentResult; var prevResultState = this.currentResultState; var prevResultOptions = this.currentResultOptions; var queryChange = query !== prevQuery; var queryInitialState = queryChange ? query.state : this.currentQueryInitialState; var prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult; var state = query.state; var dataUpdatedAt = state.dataUpdatedAt; var error = state.error; var errorUpdatedAt = state.errorUpdatedAt; var isFetching = state.isFetching; var status = state.status; var isPreviousData = false; var isPlaceholderData = false; var data; if (options.optimisticResults) { var mounted = this.hasListeners(); var fetchOnMount = !mounted && shouldFetchOnMount(query, options); var fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions); if (fetchOnMount || fetchOptionally) { isFetching = true; if (!dataUpdatedAt) status = "loading"; } } if (options.keepPreviousData && !state.dataUpdateCount && (prevQueryResult == null ? void 0 : prevQueryResult.isSuccess) && status !== "error") { data = prevQueryResult.data; dataUpdatedAt = prevQueryResult.dataUpdatedAt; status = prevQueryResult.status; isPreviousData = true; } else if (options.select && typeof state.data !== "undefined") if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) data = this.selectResult; else try { this.selectFn = options.select; data = options.select(state.data); if (options.structuralSharing !== false) data = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, data); this.selectResult = data; this.selectError = null; } catch (selectError) { getLogger().error(selectError); this.selectError = selectError; } else data = state.data; if (typeof options.placeholderData !== "undefined" && typeof data === "undefined" && (status === "loading" || status === "idle")) { var placeholderData; if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) placeholderData = prevResult.data; else { placeholderData = typeof options.placeholderData === "function" ? options.placeholderData() : options.placeholderData; if (options.select && typeof placeholderData !== "undefined") try { placeholderData = options.select(placeholderData); if (options.structuralSharing !== false) placeholderData = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, placeholderData); this.selectError = null; } catch (selectError) { getLogger().error(selectError); this.selectError = selectError; } } if (typeof placeholderData !== "undefined") { status = "success"; data = placeholderData; isPlaceholderData = true; } } if (this.selectError) { error = this.selectError; data = this.selectResult; errorUpdatedAt = Date.now(); status = "error"; } return { status, isLoading: status === "loading", isSuccess: status === "success", isError: status === "error", isIdle: status === "idle", data, dataUpdatedAt, error, errorUpdatedAt, failureCount: state.fetchFailureCount, errorUpdateCount: state.errorUpdateCount, isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0, isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount, isFetching, isRefetching: isFetching && status !== "loading", isLoadingError: status === "error" && state.dataUpdatedAt === 0, isPlaceholderData, isPreviousData, isRefetchError: status === "error" && state.dataUpdatedAt !== 0, isStale: isStale(query, options), refetch: this.refetch, remove: this.remove }; }; _proto.shouldNotifyListeners = function shouldNotifyListeners(result, prevResult) { if (!prevResult) return true; var _this$options = this.options; var notifyOnChangeProps = _this$options.notifyOnChangeProps; var notifyOnChangePropsExclusions = _this$options.notifyOnChangePropsExclusions; if (!notifyOnChangeProps && !notifyOnChangePropsExclusions) return true; if (notifyOnChangeProps === "tracked" && !this.trackedProps.length) return true; var includedProps = notifyOnChangeProps === "tracked" ? this.trackedProps : notifyOnChangeProps; return Object.keys(result).some(function(key) { var typedKey = key; var changed = result[typedKey] !== prevResult[typedKey]; var isIncluded = includedProps == null ? void 0 : includedProps.some(function(x) { return x === key; }); var isExcluded = notifyOnChangePropsExclusions == null ? void 0 : notifyOnChangePropsExclusions.some(function(x) { return x === key; }); return changed && !isExcluded && (!includedProps || isIncluded); }); }; _proto.updateResult = function updateResult(notifyOptions) { var prevResult = this.currentResult; this.currentResult = this.createResult(this.currentQuery, this.options); this.currentResultState = this.currentQuery.state; this.currentResultOptions = this.options; if (shallowEqualObjects(this.currentResult, prevResult)) return; var defaultNotifyOptions = { cache: true }; if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && this.shouldNotifyListeners(this.currentResult, prevResult)) defaultNotifyOptions.listeners = true; this.notify(_extends$1({}, defaultNotifyOptions, notifyOptions)); }; _proto.updateQuery = function updateQuery() { var query = this.client.getQueryCache().build(this.client, this.options); if (query === this.currentQuery) return; var prevQuery = this.currentQuery; this.currentQuery = query; this.currentQueryInitialState = query.state; this.previousQueryResult = this.currentResult; if (this.hasListeners()) { prevQuery == null || prevQuery.removeObserver(this); query.addObserver(this); } }; _proto.onQueryUpdate = function onQueryUpdate(action) { var notifyOptions = {}; if (action.type === "success") notifyOptions.onSuccess = true; else if (action.type === "error" && !isCancelledError(action.error)) notifyOptions.onError = true; this.updateResult(notifyOptions); if (this.hasListeners()) this.updateTimers(); }; _proto.notify = function notify(notifyOptions) { var _this8 = this; notifyManager.batch(function() { if (notifyOptions.onSuccess) { _this8.options.onSuccess == null || _this8.options.onSuccess(_this8.currentResult.data); _this8.options.onSettled == null || _this8.options.onSettled(_this8.currentResult.data, null); } else if (notifyOptions.onError) { _this8.options.onError == null || _this8.options.onError(_this8.currentResult.error); _this8.options.onSettled == null || _this8.options.onSettled(void 0, _this8.currentResult.error); } if (notifyOptions.listeners) _this8.listeners.forEach(function(listener) { listener(_this8.currentResult); }); if (notifyOptions.cache) _this8.client.getQueryCache().notify({ query: _this8.currentQuery, type: "observerResultsUpdated" }); }); }; return QueryObserver; }(Subscribable); })); //#endregion //#region node_modules/react-query/es/core/mutationObserver.js var MutationObserver; var init_mutationObserver = __esmMin((() => { init_extends(); init_inheritsLoose(); init_mutation(); init_notifyManager(); init_subscribable(); MutationObserver = /*#__PURE__*/ function(_Subscribable) { _inheritsLoose(MutationObserver, _Subscribable); function MutationObserver(client, options) { var _this = _Subscribable.call(this) || this; _this.client = client; _this.setOptions(options); _this.bindMethods(); _this.updateResult(); return _this; } var _proto = MutationObserver.prototype; _proto.bindMethods = function bindMethods() { this.mutate = this.mutate.bind(this); this.reset = this.reset.bind(this); }; _proto.setOptions = function setOptions(options) { this.options = this.client.defaultMutationOptions(options); }; _proto.onUnsubscribe = function onUnsubscribe() { if (!this.listeners.length) { var _this$currentMutation; (_this$currentMutation = this.currentMutation) == null || _this$currentMutation.removeObserver(this); } }; _proto.onMutationUpdate = function onMutationUpdate(action) { this.updateResult(); var notifyOptions = { listeners: true }; if (action.type === "success") notifyOptions.onSuccess = true; else if (action.type === "error") notifyOptions.onError = true; this.notify(notifyOptions); }; _proto.getCurrentResult = function getCurrentResult() { return this.currentResult; }; _proto.reset = function reset() { this.currentMutation = void 0; this.updateResult(); this.notify({ listeners: true }); }; _proto.mutate = function mutate(variables, options) { this.mutateOptions = options; if (this.currentMutation) this.currentMutation.removeObserver(this); this.currentMutation = this.client.getMutationCache().build(this.client, _extends$1({}, this.options, { variables: typeof variables !== "undefined" ? variables : this.options.variables })); this.currentMutation.addObserver(this); return this.currentMutation.execute(); }; _proto.updateResult = function updateResult() { var state = this.currentMutation ? this.currentMutation.state : getDefaultState(); var result = _extends$1({}, state, { isLoading: state.status === "loading", isSuccess: state.status === "success", isError: state.status === "error", isIdle: state.status === "idle", mutate: this.mutate, reset: this.reset }); this.currentResult = result; }; _proto.notify = function notify(options) { var _this2 = this; notifyManager.batch(function() { if (_this2.mutateOptions) { if (options.onSuccess) { _this2.mutateOptions.onSuccess == null || _this2.mutateOptions.onSuccess(_this2.currentResult.data, _this2.currentResult.variables, _this2.currentResult.context); _this2.mutateOptions.onSettled == null || _this2.mutateOptions.onSettled(_this2.currentResult.data, null, _this2.currentResult.variables, _this2.currentResult.context); } else if (options.onError) { _this2.mutateOptions.onError == null || _this2.mutateOptions.onError(_this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context); _this2.mutateOptions.onSettled == null || _this2.mutateOptions.onSettled(void 0, _this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context); } } if (options.listeners) _this2.listeners.forEach(function(listener) { listener(_this2.currentResult); }); }); }; return MutationObserver; }(Subscribable); })); //#endregion //#region node_modules/react-query/es/core/types.js var init_types$1 = __esmMin((() => {})); //#endregion //#region node_modules/react-query/es/core/index.js var init_core = __esmMin((() => { init_retryer(); init_queryCache(); init_queryClient(); init_queryObserver(); init_inheritsLoose(); init_utils$4(); init_notifyManager(); init_subscribable(); init_extends(); init_infiniteQueryBehavior(); init_mutationCache(); init_mutationObserver(); init_logger$1(); init_focusManager(); init_onlineManager(); init_types$1(); })); //#endregion //#region node_modules/react-query/es/react/reactBatchedUpdates.js var unstable_batchedUpdates; var init_reactBatchedUpdates = __esmMin((() => { unstable_batchedUpdates = react_dom.default.unstable_batchedUpdates; })); //#endregion //#region node_modules/react-query/es/react/setBatchUpdatesFn.js var init_setBatchUpdatesFn = __esmMin((() => { init_core(); init_reactBatchedUpdates(); notifyManager.setBatchNotifyFunction(unstable_batchedUpdates); })); //#endregion //#region node_modules/react-query/es/react/logger.js var logger$7; var init_logger = __esmMin((() => { logger$7 = console; })); //#endregion //#region node_modules/react-query/es/react/setLogger.js var init_setLogger = __esmMin((() => { init_core(); init_logger(); setLogger(logger$7); })); //#endregion //#region node_modules/react-query/es/react/QueryClientProvider.js function getQueryClientContext(contextSharing) { if (contextSharing && typeof window !== "undefined") { if (!window.ReactQueryClientContext) window.ReactQueryClientContext = defaultContext; return window.ReactQueryClientContext; } return defaultContext; } var defaultContext, QueryClientSharingContext, useQueryClient, QueryClientProvider; var init_QueryClientProvider = __esmMin((() => { defaultContext = /*#__PURE__*/ react.default.createContext(void 0); QueryClientSharingContext = /*#__PURE__*/ react.default.createContext(false); useQueryClient = function useQueryClient() { var queryClient = react.default.useContext(getQueryClientContext(react.default.useContext(QueryClientSharingContext))); if (!queryClient) throw new Error("No QueryClient set, use QueryClientProvider to set one"); return queryClient; }; QueryClientProvider = function QueryClientProvider(_ref) { var client = _ref.client; var _ref$contextSharing = _ref.contextSharing; var contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing; var children = _ref.children; react.default.useEffect(function() { client.mount(); return function() { client.unmount(); }; }, [client]); var Context = getQueryClientContext(contextSharing); return /*#__PURE__*/ react.default.createElement(QueryClientSharingContext.Provider, { value: contextSharing }, /*#__PURE__*/ react.default.createElement(Context.Provider, { value: client }, children)); }; })); //#endregion //#region node_modules/react-query/es/react/QueryErrorResetBoundary.js function createValue() { var _isReset = false; return { clearReset: function clearReset() { _isReset = false; }, reset: function reset() { _isReset = true; }, isReset: function isReset() { return _isReset; } }; } var QueryErrorResetBoundaryContext, useQueryErrorResetBoundary; var init_QueryErrorResetBoundary = __esmMin((() => { QueryErrorResetBoundaryContext = /*#__PURE__*/ react.default.createContext(createValue()); useQueryErrorResetBoundary = function useQueryErrorResetBoundary() { return react.default.useContext(QueryErrorResetBoundaryContext); }; })); //#endregion //#region node_modules/react-query/es/react/utils.js function shouldThrowError(suspense, _useErrorBoundary, params) { if (typeof _useErrorBoundary === "function") return _useErrorBoundary.apply(void 0, params); if (typeof _useErrorBoundary === "boolean") return _useErrorBoundary; return !!suspense; } var init_utils$3 = __esmMin((() => {})); //#endregion //#region node_modules/react-query/es/react/useMutation.js function useMutation(arg1, arg2, arg3) { var mountedRef = react.default.useRef(false); var forceUpdate = react.default.useState(0)[1]; var options = parseMutationArgs(arg1, arg2, arg3); var queryClient = useQueryClient(); var obsRef = react.default.useRef(); if (!obsRef.current) obsRef.current = new MutationObserver(queryClient, options); else obsRef.current.setOptions(options); var currentResult = obsRef.current.getCurrentResult(); react.default.useEffect(function() { mountedRef.current = true; var unsubscribe = obsRef.current.subscribe(notifyManager.batchCalls(function() { if (mountedRef.current) forceUpdate(function(x) { return x + 1; }); })); return function() { mountedRef.current = false; unsubscribe(); }; }, []); var mutate = react.default.useCallback(function(variables, mutateOptions) { obsRef.current.mutate(variables, mutateOptions).catch(noop); }, []); if (currentResult.error && shouldThrowError(void 0, obsRef.current.options.useErrorBoundary, [currentResult.error])) throw currentResult.error; return _extends$1({}, currentResult, { mutate, mutateAsync: currentResult.mutate }); } var init_useMutation = __esmMin((() => { init_extends(); init_notifyManager(); init_utils$4(); init_mutationObserver(); init_QueryClientProvider(); init_utils$3(); })); //#endregion //#region node_modules/react-query/es/react/useBaseQuery.js function useBaseQuery(options, Observer) { var mountedRef = react.default.useRef(false); var forceUpdate = react.default.useState(0)[1]; var queryClient = useQueryClient(); var errorResetBoundary = useQueryErrorResetBoundary(); var defaultedOptions = queryClient.defaultQueryObserverOptions(options); defaultedOptions.optimisticResults = true; if (defaultedOptions.onError) defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError); if (defaultedOptions.onSuccess) defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess); if (defaultedOptions.onSettled) defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled); if (defaultedOptions.suspense) { if (typeof defaultedOptions.staleTime !== "number") defaultedOptions.staleTime = 1e3; if (defaultedOptions.cacheTime === 0) defaultedOptions.cacheTime = 1; } if (defaultedOptions.suspense || defaultedOptions.useErrorBoundary) { if (!errorResetBoundary.isReset()) defaultedOptions.retryOnMount = false; } var observer = react.default.useState(function() { return new Observer(queryClient, defaultedOptions); })[0]; var result = observer.getOptimisticResult(defaultedOptions); react.default.useEffect(function() { mountedRef.current = true; errorResetBoundary.clearReset(); var unsubscribe = observer.subscribe(notifyManager.batchCalls(function() { if (mountedRef.current) forceUpdate(function(x) { return x + 1; }); })); observer.updateResult(); return function() { mountedRef.current = false; unsubscribe(); }; }, [errorResetBoundary, observer]); react.default.useEffect(function() { observer.setOptions(defaultedOptions, { listeners: false }); }, [defaultedOptions, observer]); if (defaultedOptions.suspense && result.isLoading) throw observer.fetchOptimistic(defaultedOptions).then(function(_ref) { var data = _ref.data; defaultedOptions.onSuccess == null || defaultedOptions.onSuccess(data); defaultedOptions.onSettled == null || defaultedOptions.onSettled(data, null); }).catch(function(error) { errorResetBoundary.clearReset(); defaultedOptions.onError == null || defaultedOptions.onError(error); defaultedOptions.onSettled == null || defaultedOptions.onSettled(void 0, error); }); if (result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(defaultedOptions.suspense, defaultedOptions.useErrorBoundary, [result.error, observer.getCurrentQuery()])) throw result.error; if (defaultedOptions.notifyOnChangeProps === "tracked") result = observer.trackResult(result, defaultedOptions); return result; } var init_useBaseQuery = __esmMin((() => { init_notifyManager(); init_QueryErrorResetBoundary(); init_QueryClientProvider(); init_utils$3(); })); //#endregion //#region node_modules/react-query/es/react/useQuery.js function useQuery(arg1, arg2, arg3) { return useBaseQuery(parseQueryArgs(arg1, arg2, arg3), QueryObserver); } var init_useQuery = __esmMin((() => { init_core(); init_utils$4(); init_useBaseQuery(); })); //#endregion //#region node_modules/react-query/es/react/types.js var init_types = __esmMin((() => {})); //#endregion //#region node_modules/react-query/es/react/index.js var init_react = __esmMin((() => { init_setBatchUpdatesFn(); init_setLogger(); init_QueryClientProvider(); init_QueryErrorResetBoundary(); init_notifyManager(); init_utils$4(); init_useMutation(); init_useQuery(); init_inheritsLoose(); init_queryObserver(); init_subscribable(); init_extends(); init_infiniteQueryBehavior(); init_useBaseQuery(); init_core(); init_types(); })); //#endregion //#region node_modules/react-query/es/index.js var init_es = __esmMin((() => { init_core(); init_react(); })); //#endregion //#region app/modules/import-export/assets/js/pages/export/export-kit/components/kit-information/components/kit-name/kit-name.js init_es(); init_slicedToArray(); init_grid(); init_text(); function KitName() { var _exportContext$data$k; var exportContext = (0, react.useContext)(ExportContext$1); var _useState2 = _slicedToArray((0, react.useState)(null), 2); var error = _useState2[0]; var setError = _useState2[1]; var validateKitName = function validateKitName(value) { if (!value || 0 === value.trim().length) return (0, _wordpress_i18n.__)("Must add a name", "elementor"); return null; }; var handleChange = function handleChange(event) { var value = event.target.value; exportContext.dispatch({ type: "SET_KIT_TITLE", payload: value }); validateAndShowError(value); }; var validateAndShowError = function validateAndShowError(value) { var validationError = validateKitName(value); setError(validationError); return validationError; }; return /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, direction: "column" }, /*#__PURE__*/ react.default.createElement(Text$11, { tag: "span", variant: "xs" }, (0, _wordpress_i18n.__)("Name", "elementor")), /*#__PURE__*/ react.default.createElement(TextField, { placeholder: (0, _wordpress_i18n.__)("Type name here...", "elementor"), onChange: handleChange, onBlur: handleChange, className: error ? "e-app-export-kit-information__field--error" : "", title: error || "", value: ((_exportContext$data$k = exportContext.data.kitInfo) === null || _exportContext$data$k === void 0 ? void 0 : _exportContext$data$k.title) || "", autoFocus: true }), /*#__PURE__*/ react.default.createElement("div", { className: "e-app-export-kit-information__error-container" }, error && /*#__PURE__*/ react.default.createElement(Text$11, { variant: "xs", className: "e-app-export-kit-information__validation-error" }, error))); } //#endregion //#region app/modules/import-export/assets/js/pages/export/export-kit/components/kit-information/components/kit-description/kit-description.js init_grid(); init_text(); function KitDescription() { var exportContext = (0, react.useContext)(ExportContext$1); return /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, direction: "column" }, /*#__PURE__*/ react.default.createElement(Text$11, { tag: "span", variant: "xs" }, (0, _wordpress_i18n.__)("Description (Optional)", "elementor")), /*#__PURE__*/ react.default.createElement(TextField, { placeholder: (0, _wordpress_i18n.__)("Type description here...", "elementor"), onChange: function onChange(event) { exportContext.dispatch({ type: "SET_KIT_DESCRIPTION", payload: event.target.value }); } })); } //#endregion //#region app/modules/import-export/assets/js/pages/export/export-kit/components/kit-information/kit-information.js init_grid(); function KitInformation() { return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(Box$22, null, /*#__PURE__*/ react.default.createElement(List, { padding: "24 40", separated: true, className: "e-app-export-kit-information" }, /*#__PURE__*/ react.default.createElement(List.Item, null, /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, noWrap: true, direction: "column", className: "e-app-export-kit-information__content" }, /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, container: true }, /*#__PURE__*/ react.default.createElement(KitName, null)), /*#__PURE__*/ react.default.createElement(Grid$14, { item: true, container: true }, /*#__PURE__*/ react.default.createElement(KitDescription, null))))))); } //#endregion //#region app/modules/import-export/assets/js/pages/export/export-kit/export-kit.js init_button$1(); init_grid(); function ExportKit$1() { var exportContext = (0, react.useContext)(ExportContext$1); var sharedContext = (0, react.useContext)(SharedContext); var getFooter = function getFooter() { return /*#__PURE__*/ react.default.createElement(ActionsFooter, null, /*#__PURE__*/ react.default.createElement(Button$30, { variant: "contained", text: (0, _wordpress_i18n.__)("Next", "elementor"), color: exportContext.data.kitInfo.title ? "primary" : "disabled", url: exportContext.data.kitInfo.title ? "/export/plugins" : "" })); }; var getLearnMoreLink = function getLearnMoreLink() { return /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-what-are-kits", italic: true }, (0, _wordpress_i18n.__)("Learn More", "elementor")); }; (0, react.useEffect)(function() { var _elementorAppConfig$i; exportContext.dispatch({ type: "SET_IS_EXPORT_PROCESS_STARTED", payload: true }); sharedContext.dispatch({ type: "SET_CPT", payload: cptObjectToOptionsArray((_elementorAppConfig$i = elementorAppConfig["import-export"].summaryTitles.content) === null || _elementorAppConfig$i === void 0 ? void 0 : _elementorAppConfig$i.customPostTypes, "plural") }); }, []); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "export", footer: getFooter() }, /*#__PURE__*/ react.default.createElement("section", { className: "e-app-export-kit" }, /*#__PURE__*/ react.default.createElement(PageHeader$1, { heading: (0, _wordpress_i18n.__)("Select which items to export", "elementor"), description: [(0, _wordpress_i18n.__)("You can export the content, site settings, and templates as a Website Template to be reused in the future.", "elementor"), /*#__PURE__*/ react.default.createElement(react.default.Fragment, { key: "description-secondary-line" }, (0, _wordpress_i18n.__)("Uncheck the items you don't want to include.", "elementor"), " ", getLearnMoreLink())] }), /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, direction: "column", className: "e-app-export-kit__content" }, /*#__PURE__*/ react.default.createElement(KitInformation, null), /*#__PURE__*/ react.default.createElement(KitContent, { contentData: kitContentData$1 })))); } __name(ExportKit$1, "ExportKit"); //#endregion //#region app/assets/js/molecules/dashboard-button.js init_extends(); init_button$1(); init_use_action(); init_utils$5(); function DashboardButton(props) { var action = useAction(); var classes = ["e-app-dashboard-button", props.className]; return /*#__PURE__*/ react.default.createElement(Button$30, _extends$1({}, props, { className: arrayToClassName(classes), text: props.text, onClick: action.backToDashboard })); } DashboardButton.propTypes = { className: import_prop_types$82.default.string, text: import_prop_types$82.default.string }; DashboardButton.defaultProps = { className: "", variant: "contained", color: "primary", text: (0, _wordpress_i18n.__)("Back to dashboard", "elementor") }; //#endregion //#region app/modules/import-export/assets/js/pages/export/export-complete/export-complete.js init_es$1(); init_use_kit$1(); init_button$1(); var INVALID_FILENAME_CHARS$1 = /[<>:"/\\|?*]/g; function ExportComplete$1() { var _exportContext$data; var exportContext = (0, react.useContext)(ExportContext$1); var isSavedToCloud = KIT_SOURCE_MAP.CLOUD === exportContext.data.kitInfo.source; var navigate = useNavigate(); var downloadLink = (0, react.useRef)(null); var getFooter = function getFooter() { return /*#__PURE__*/ react.default.createElement(ActionsFooter, null, isSavedToCloud ? /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Open library", "elementor"), variant: "contained", color: "primary", url: "/kit-library/cloud" }) : /*#__PURE__*/ react.default.createElement(DashboardButton, { text: (0, _wordpress_i18n.__)("Done", "elementor") })); }; var downloadFile = function downloadFile() { if (!downloadLink.current) { var _exportContext$data$k; var link = document.createElement("a"); var defaultKitName = "elementor-kit"; var fileName = (((_exportContext$data$k = exportContext.data.kitInfo) === null || _exportContext$data$k === void 0 ? void 0 : _exportContext$data$k.title) || defaultKitName).replace(INVALID_FILENAME_CHARS$1, "").trim() || defaultKitName; link.href = "data:text/plain;base64," + exportContext.data.exportedData.file; link.download = fileName + ".zip"; downloadLink.current = link; } downloadLink.current.click(); }; var getDownloadLink = function getDownloadLink() { return /*#__PURE__*/ react.default.createElement(InlineLink, { onClick: downloadFile, italic: true }, (0, _wordpress_i18n.__)("Download manually", "elementor")); }; var getShowMeHowLink = function getShowMeHowLink() { return /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-what-are-kits", italic: true }, (0, _wordpress_i18n.__)("Show me how", "elementor")); }; var getTakeMeThereLink = function getTakeMeThereLink() { return /*#__PURE__*/ react.default.createElement(InlineLink, { url: "/kit-library/cloud", italic: true }, (0, _wordpress_i18n.__)("Take me there", "elementor")); }; (0, react.useEffect)(function() { if (!exportContext.data.exportedData) return navigate("/export"); if (!isSavedToCloud) downloadFile(); }, [exportContext.data.downloadUrl, isSavedToCloud]); var heading = (0, react.useMemo)(function() { return isSavedToCloud ? (0, _wordpress_i18n.__)("Your website template is now saved to the library!", "elementor") : (0, _wordpress_i18n.__)("Your .zip file is ready", "elementor"); }, [isSavedToCloud]); var description = (0, react.useMemo)(function() { return isSavedToCloud ? /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("You can find it in the My Website Templates tab.", "elementor"), " ", getTakeMeThereLink()) : (0, _wordpress_i18n.__)("Once the download is complete, you can upload it to be used for other sites.", "elementor"); }, [isSavedToCloud]); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "export", footer: getFooter() }, /*#__PURE__*/ react.default.createElement(WizardStep, { image: elementorAppConfig.assets_url + "images/go-pro.svg", heading, description, notice: function getNotice() { return isSavedToCloud ? /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Build sites faster with Website Templates.", "elementor"), " ", getShowMeHowLink()) : /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Is the automatic download not starting?", "elementor"), " ", getDownloadLink()); }() }, /*#__PURE__*/ react.default.createElement(kit_data_default, { data: (_exportContext$data = exportContext.data) === null || _exportContext$data === void 0 || (_exportContext$data = _exportContext$data.exportedData) === null || _exportContext$data === void 0 ? void 0 : _exportContext$data.manifest }))); } __name(ExportComplete$1, "ExportComplete"); //#endregion //#region app/modules/import-export/assets/js/pages/export/export-plugins/components/export-plugins-selection/export-plugins-selection.js var layout = [3, 1]; var initialDisabled = [0]; function ExportPluginsSelection(_ref) { var onSelect = _ref.onSelect; var response = usePlugins().response; var activePlugins = usePluginsData(response.data).pluginsData.filter(function(_ref2) { var status = _ref2.status; return PLUGIN_STATUS_MAP.ACTIVE === status || PLUGIN_STATUS_MAP.MULTISITE_ACTIVE === status; }); var getInitialSelected = function getInitialSelected() { var initialSelected = [0]; if (activePlugins.length > 1 && PLUGINS_KEYS.ELEMENTOR_PRO === activePlugins[1].name) initialSelected.push(1); return initialSelected; }; if (!response.data) return /*#__PURE__*/ react.default.createElement(Loader, { absoluteCenter: true }); return /*#__PURE__*/ react.default.createElement(plugins_selection_default, { plugins: activePlugins, initialSelected: getInitialSelected(), initialDisabled, layout, withStatus: false, onSelect }); } ExportPluginsSelection.propTypes = { onSelect: import_prop_types$82.default.func.isRequired }; var export_plugins_selection_default = (0, react.memo)(ExportPluginsSelection); //#endregion //#region app/assets/js/utils/cloud-kits.js /** * Fetch cloud kits availability from WordPress backend * * @return {Promise} Whether cloud kits should be available */ function fetchCloudKitsEligibility() { return _fetchCloudKitsEligibility.apply(this, arguments); } /** * Fetch cloud kits quota from WordPress backend * * @return {Promise} Quota data including storage information */ function _fetchCloudKitsEligibility() { _fetchCloudKitsEligibility = _asyncToGenerator(/*#__PURE__*/ import_regenerator$2.default.mark(function _callee() { var response; return import_regenerator$2.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.next = 1; return $e.data.get("cloud-kits/eligibility", {}, { refresh: true }); case 1: response = _context.sent; return _context.abrupt("return", response === null || response === void 0 ? void 0 : response.data); case 2: case "end": return _context.stop(); } }, _callee); })); return _fetchCloudKitsEligibility.apply(this, arguments); } function fetchCloudKitsQuota() { return _fetchCloudKitsQuota.apply(this, arguments); } function _fetchCloudKitsQuota() { _fetchCloudKitsQuota = _asyncToGenerator(/*#__PURE__*/ import_regenerator$2.default.mark(function _callee2() { var response; return import_regenerator$2.default.wrap(function(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 1; return $e.data.get("cloud-kits/quota", {}, { refresh: true }); case 1: response = _context2.sent; return _context2.abrupt("return", response === null || response === void 0 ? void 0 : response.data); case 2: case "end": return _context2.stop(); } }, _callee2); })); return _fetchCloudKitsQuota.apply(this, arguments); } var import_regenerator$2; var init_cloud_kits = __esmMin((() => { init_asyncToGenerator(); import_regenerator$2 = /* @__PURE__ */ __toESM(require_regenerator()); })); //#endregion //#region app/assets/js/hooks/use-cloud-kits-eligibility.js /** * Hook to check if cloud kits should be available * * @param {Object} options - React Query options * @return {Object} Query result with availability status */ function useCloudKitsEligibility() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; return useQuery([KEY$6], fetchCloudKitsEligibility, options); } var KEY$6; var init_use_cloud_kits_eligibility = __esmMin((() => { init_cloud_kits(); KEY$6 = "cloud-kits-availability"; })); //#endregion //#region app/modules/import-export/assets/js/hooks/use-connect-state.js init_use_cloud_kits_eligibility(); function useConnectState$2() { var context = (0, react.useContext)(ConnectStateContext$1); if (!context) throw new Error("useConnectState must be used within a ConnectStateProvider"); return context; } __name(useConnectState$2, "useConnectState"); //#endregion //#region app/modules/import-export/assets/js/pages/export/export-plugins/components/export-plugins-footer/export-plugins-footer.js init_use_kit$1(); init_button$1(); function ExportPluginsFooter(_ref) { var isKitReady = _ref.isKitReady; var exportContext = (0, react.useContext)(ExportContext$1); var _useConnectState = useConnectState$2(); var isConnected = _useConnectState.isConnected; var isConnecting = _useConnectState.isConnecting; var setConnecting = _useConnectState.setConnecting; var handleConnectSuccess = _useConnectState.handleConnectSuccess; var handleConnectError = _useConnectState.handleConnectError; var connectButtonRef = (0, react.useRef)(); var _useCloudKitsEligibil = useCloudKitsEligibility({ enabled: isConnected }); var cloudKitsData = _useCloudKitsEligibil.data; var isCheckingEligibility = _useCloudKitsEligibil.isLoading; var refetchEligibility = _useCloudKitsEligibil.refetch; var isCloudKitsEligible = (cloudKitsData === null || cloudKitsData === void 0 ? void 0 : cloudKitsData.is_eligible) || false; (0, react.useEffect)(function() { if (!connectButtonRef.current) return; jQuery(connectButtonRef.current).elementorConnect({ popup: { width: 600, height: 700 }, success: function success() { handleConnectSuccess(); setConnecting(true); refetchEligibility(); }, error: function error() { handleConnectError(); } }); }, [ handleConnectSuccess, handleConnectError, setConnecting, refetchEligibility ]); (0, react.useEffect)(function() { if (!isConnecting || isCheckingEligibility) return; if (!isCloudKitsEligible) window.location.href = elementorAppConfig.base_url + "#/kit-library/cloud"; else { exportContext.dispatch({ type: "SET_KIT_SAVE_SOURCE", payload: KIT_SOURCE_MAP.CLOUD }); window.location.href = elementorAppConfig.base_url + "#/export/process"; } }, [ isConnecting, isCheckingEligibility, isCloudKitsEligible, exportContext ]); (0, react.useEffect)(function() { if (isConnecting && !isCheckingEligibility) setConnecting(false); }, [ isConnecting, isCheckingEligibility, setConnecting ]); var handleUpgradeClick = function handleUpgradeClick() { window.location.href = elementorAppConfig.base_url + "#/kit-library/cloud"; }; var handleUploadClick = function handleUploadClick() { exportContext.dispatch({ type: "SET_KIT_SAVE_SOURCE", payload: KIT_SOURCE_MAP.CLOUD }); }; return /*#__PURE__*/ react.default.createElement(ActionsFooter, { className: "e-app-export-actions-container" }, /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Back", "elementor"), variant: "contained", url: "/export" }), function renderCloudButton() { if (!isConnected) { var _elementorAppConfig; return /*#__PURE__*/ react.default.createElement(Button$30, { elRef: connectButtonRef, text: (0, _wordpress_i18n.__)("Save to library", "elementor"), variant: "outlined", color: "secondary", url: ((_elementorAppConfig = elementorAppConfig) === null || _elementorAppConfig === void 0 || (_elementorAppConfig = _elementorAppConfig["cloud-library"]) === null || _elementorAppConfig === void 0 || (_elementorAppConfig = _elementorAppConfig.library_connect_url) === null || _elementorAppConfig === void 0 ? void 0 : _elementorAppConfig.replace(/&/g, "&")) || "#" }); } if (isConnecting || isCheckingEligibility) return /*#__PURE__*/ react.default.createElement(Button$30, { variant: "outlined", color: "secondary", icon: "eicon-loading eicon-animation-spin" }); if (!isCloudKitsEligible) return /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Save to library", "elementor"), variant: "outlined", color: "secondary", onClick: handleUpgradeClick }); return /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Save to library", "elementor"), variant: "outlined", color: "secondary", url: "/export/process", onClick: handleUploadClick }); }(), /*#__PURE__*/ react.default.createElement(Button$30, { text: (0, _wordpress_i18n.__)("Export as .zip", "elementor"), variant: "contained", color: isKitReady && !isCheckingEligibility ? "primary" : "disabled", url: isKitReady && !isCheckingEligibility ? "/export/process" : "", hideText: isCheckingEligibility, icon: isCheckingEligibility ? "eicon-loading eicon-animation-spin" : "", onClick: function onClick() { exportContext.dispatch({ type: "SET_KIT_SAVE_SOURCE", payload: KIT_SOURCE_MAP.FILE }); } })); } ExportPluginsFooter.propTypes = { isKitReady: import_prop_types$82.default.bool.isRequired }; //#endregion //#region app/modules/import-export/assets/js/pages/export/export-plugins/export-plugins.js init_slicedToArray(); init_es$1(); function ExportPlugins() { var sharedContext = (0, react.useContext)(SharedContext); var exportContext = (0, react.useContext)(ExportContext$1); var navigate = useNavigate(); var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isKitReady = _useState2[0]; var setIsKitReady = _useState2[1]; var _ref = exportContext.data || []; var plugins = _ref.plugins; var isExportProcessStarted = _ref.isExportProcessStarted; var hasIncludes = !!sharedContext.data.includes.length; var handleOnSelect = (0, react.useCallback)(function(selectedPlugins) { return exportContext.dispatch({ type: "SET_PLUGINS", payload: selectedPlugins }); }, []); var getLearnMoreLink = function getLearnMoreLink() { return /*#__PURE__*/ react.default.createElement(InlineLink, { url: "https://go.elementor.com/app-what-are-kits", italic: true }, (0, _wordpress_i18n.__)("Learn More", "elementor")); }; (0, react.useEffect)(function() { if (!isExportProcessStarted) navigate("/export"); }, []); (0, react.useEffect)(function() { if (hasIncludes && plugins.length) setIsKitReady(true); else setIsKitReady(plugins.length > 1); }, [plugins]); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "export", footer: /*#__PURE__*/ react.default.createElement(ExportPluginsFooter, { isKitReady }) }, /*#__PURE__*/ react.default.createElement("section", { className: "e-app-export-plugins" }, /*#__PURE__*/ react.default.createElement(PageHeader$1, { heading: (0, _wordpress_i18n.__)("Select which plugins to export", "elementor"), description: [(0, _wordpress_i18n.__)("Your Website Template may not work as expected if key plugins are missing.", "elementor"), /*#__PURE__*/ react.default.createElement(react.default.Fragment, { key: "description-secondary-line" }, (0, _wordpress_i18n.__)("By default, we’ll include everything in your file. Uncheck the items you don't want.", "elementor"), " ", getLearnMoreLink())] }), /*#__PURE__*/ react.default.createElement(export_plugins_selection_default, { onSelect: handleOnSelect }))); } //#endregion //#region app/modules/import-export/assets/js/pages/export/export-process/hooks/use-export-plugins-data.js function useExportPluginsData(plugins) { var getData = function getData() { var pluginsData = []; plugins.forEach(function(pluginData) { var name = pluginData.name; var plugin = pluginData.plugin; var pluginUri = pluginData.plugin_uri; var version = pluginData.version; pluginsData.push({ name, plugin, pluginUri, version }); }); return pluginsData; }; return { pluginsData: (0, react.useMemo)(function() { return getData(); }, [plugins]) }; } //#endregion //#region app/modules/import-export/assets/js/pages/export/export-process/export-process.js init_toConsumableArray(); init_asyncToGenerator(); init_slicedToArray(); var import_regenerator$1 = /* @__PURE__ */ __toESM(require_regenerator()); init_es$1(); init_use_kit$1(); function ExportProcess$1() { var sharedContext = (0, react.useContext)(SharedContext); var exportContext = (0, react.useContext)(ExportContext$1); var navigate = useNavigate(); var _useKit = useKit$1(); var kitState = _useKit.kitState; var kitActions = _useKit.kitActions; var KIT_STATUS_MAP = _useKit.KIT_STATUS_MAP; var _useState2 = _slicedToArray((0, react.useState)(""), 2); var errorType = _useState2[0]; var setErrorType = _useState2[1]; var _ref = exportContext.data || {}; var plugins = _ref.plugins; var exportedData = _ref.exportedData; var kitInfo = _ref.kitInfo; var isExportProcessStarted = _ref.isExportProcessStarted; var pluginsData = useExportPluginsData(plugins).pluginsData; var onDialogDismiss = function onDialogDismiss() { exportContext.dispatch({ type: "SET_DOWNLOAD_URL", payload: "" }); navigate("export"); }; var generateScreenshot = function generateScreenshot() { return new Promise(function(resolve) { var iframe = document.createElement("iframe"); iframe.style = "visibility: hidden;"; iframe.width = "1200"; iframe.height = "1000"; var _messageHandler = function messageHandler(event) { if ("kit-screenshot-done" === event.data.name) { window.removeEventListener("message", _messageHandler); document.body.removeChild(iframe); resolve(event.data.imageUrl || null); window.removeEventListener("message", _messageHandler); } }; window.addEventListener("message", _messageHandler); var previewUrl = new URL(window.location.origin); previewUrl.searchParams.set("kit_thumbnail", "1"); previewUrl.searchParams.set("nonce", elementorAppConfig["import-export"].kitPreviewNonce); document.body.appendChild(iframe); iframe.src = previewUrl.toString(); }); }; var exportKit = /*#__PURE__*/ function() { var _ref2 = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee() { var _sharedContext$data; var includes; var selectedCustomPostTypes; var kitData; var scr; return import_regenerator$1.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: _sharedContext$data = sharedContext.data, includes = _sharedContext$data.includes, selectedCustomPostTypes = _sharedContext$data.selectedCustomPostTypes; kitData = { include: [].concat(_toConsumableArray(includes), ["plugins"]), kitInfo, plugins: pluginsData, selectedCustomPostTypes }; if (!(KIT_SOURCE_MAP.CLOUD === exportContext.data.kitInfo.source)) { _context.next = 2; break; } _context.next = 1; return generateScreenshot(); case 1: scr = _context.sent; kitData.screenShotBlob = scr; case 2: kitActions.export(kitData); case 3: case "end": return _context.stop(); } }, _callee); })); return function exportKit() { return _ref2.apply(this, arguments); }; }(); (0, react.useEffect)(function() { if (isExportProcessStarted) exportKit(); else navigate("/export"); }, []); (0, react.useEffect)(function() { switch (kitState.status) { case KIT_STATUS_MAP.EXPORTED: exportContext.dispatch({ type: "SET_EXPORTED_DATA", payload: kitState.data }); break; case KIT_STATUS_MAP.ERROR: setErrorType(kitState.data); break; } }, [kitState.status]); (0, react.useEffect)(function() { if (exportedData) navigate("export/complete"); }, [exportedData]); return /*#__PURE__*/ react.default.createElement(Layout$1, { type: "export" }, /*#__PURE__*/ react.default.createElement(FileProcess, { errorType, onDialogApprove: onDialogDismiss, onDialogDismiss })); } __name(ExportProcess$1, "ExportProcess"); //#endregion //#region app/modules/import-export/assets/js/export.js init_es(); init_es$1(); var queryClient$2 = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, retry: false, staleTime: 1e3 * 60 * 30 } } }); function Export$1() { return /*#__PURE__*/ react.default.createElement(QueryClientProvider, { client: queryClient$2 }, /*#__PURE__*/ react.default.createElement(SharedContextProvider, null, /*#__PURE__*/ react.default.createElement(ConnectStateProvider$1, null, /*#__PURE__*/ react.default.createElement(ExportContextProvider$1, null, /*#__PURE__*/ react.default.createElement(LocationProvider, { history: _elementor_router.default.appHistory }, /*#__PURE__*/ react.default.createElement(Router, null, /*#__PURE__*/ react.default.createElement(ExportComplete$1, { path: "complete" }), /*#__PURE__*/ react.default.createElement(ExportPlugins, { path: "plugins" }), /*#__PURE__*/ react.default.createElement(ExportProcess$1, { path: "process" }), /*#__PURE__*/ react.default.createElement(ExportKit$1, { default: true }))))))); } __name(Export$1, "Export"); //#endregion //#region app/modules/import-export/assets/js/module.js init_createClass(); init_classCallCheck(); init_defineProperty$1(); function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0; var F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o; var a = !0; var u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } __name(_createForOfIteratorHelper$2, "_createForOfIteratorHelper"); function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(r, a); var t = {}.toString.call(r).slice(8, -1); 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$2(r, a) : void 0; } } __name(_unsupportedIterableToArray$2, "_unsupportedIterableToArray"); function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } __name(_arrayLikeToArray$2, "_arrayLikeToArray"); var ImportExport = /*#__PURE__*/ _createClass(function ImportExport() { _classCallCheck(this, ImportExport); _defineProperty$1(this, "routes", [{ path: "/import/*", component: Import$1 }, { path: "/export/*", component: Export$1 }]); var _iterator = _createForOfIteratorHelper$2(this.routes); var _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var route = _step.value; _elementor_router.default.addRoute(route); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } }); //#endregion //#region app/modules/import-export-customization/assets/js/export/context/export-context.js init_slicedToArray(); init_defineProperty$1(); init_toConsumableArray(); function ownKeys$27(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; } __name(ownKeys$27, "ownKeys"); function _objectSpread$26(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$27(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$27(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$26, "_objectSpread"); var ExportContext = (0, react.createContext)(); var EXPORT_STATUS = { PENDING: "PENDING", EXPORTING: "EXPORTING", COMPLETED: "COMPLETED" }; var initialState$1 = { downloadUrl: "", exportedData: null, exportStatus: EXPORT_STATUS.PENDING, plugins: [], customization: { settings: null, templates: null, content: null, plugins: null }, includes: ["content"].concat(_toConsumableArray(elementorAppConfig.hasPro ? ["templates"] : []), ["settings", "plugins"]), kitInfo: { title: null, description: null, source: null }, analytics: { customization: { settings: null, templates: null, content: null, plugins: null } }, showMediaFormatValidation: false, validationErrors: { name: null, description: null } }; function exportReducer(state, _ref) { var _state$analytics; var type = _ref.type; var payload = _ref.payload; switch (type) { case "SET_DOWNLOAD_URL": return _objectSpread$26(_objectSpread$26({}, state), {}, { downloadUrl: payload }); case "SET_EXPORTED_DATA": return _objectSpread$26(_objectSpread$26({}, state), {}, { exportedData: payload }); case "SET_PLUGINS": return _objectSpread$26(_objectSpread$26({}, state), {}, { plugins: payload }); case "SET_EXPORT_STATUS": return _objectSpread$26(_objectSpread$26({}, state), {}, { exportStatus: payload }); case "SET_KIT_TITLE": return _objectSpread$26(_objectSpread$26({}, state), {}, { kitInfo: _objectSpread$26(_objectSpread$26({}, state.kitInfo), {}, { title: payload }) }); case "SET_KIT_DESCRIPTION": return _objectSpread$26(_objectSpread$26({}, state), {}, { kitInfo: _objectSpread$26(_objectSpread$26({}, state.kitInfo), {}, { description: payload }) }); case "SET_KIT_SAVE_SOURCE": return _objectSpread$26(_objectSpread$26({}, state), {}, { kitInfo: _objectSpread$26(_objectSpread$26({}, state.kitInfo), {}, { source: payload }) }); case "ADD_INCLUDE": return _objectSpread$26(_objectSpread$26({}, state), {}, { includes: state.includes.includes(payload) ? state.includes : [].concat(_toConsumableArray(state.includes), [payload]) }); case "REMOVE_INCLUDE": return _objectSpread$26(_objectSpread$26({}, state), {}, { includes: state.includes.filter(function(item) { return item !== payload; }), customization: _objectSpread$26(_objectSpread$26({}, state.customization), {}, _defineProperty$1({}, payload, null)) }); case "SET_CUSTOMIZATION": return _objectSpread$26(_objectSpread$26({}, state), {}, { customization: _objectSpread$26(_objectSpread$26({}, state.customization), {}, _defineProperty$1({}, payload.key, payload.value)) }); case "SET_DATA_FOR_ANALYTICS": return _objectSpread$26(_objectSpread$26({}, state), {}, { analytics: { customization: _objectSpread$26(_objectSpread$26({}, (_state$analytics = state.analytics) === null || _state$analytics === void 0 ? void 0 : _state$analytics.customization), {}, _defineProperty$1({}, payload.key, payload.value)) } }); case "SET_MEDIA_FORMAT_VALIDATION": return _objectSpread$26(_objectSpread$26({}, state), {}, { showMediaFormatValidation: payload }); case "SET_VALIDATION_ERRORS": return _objectSpread$26(_objectSpread$26({}, state), {}, { validationErrors: _objectSpread$26(_objectSpread$26({}, state.validationErrors), payload) }); case "RESET_STATE": return _objectSpread$26({}, initialState$1); default: return state; } } function ExportContextProvider(_ref2) { var _data$kitInfo$title; var children = _ref2.children; var _useReducer2 = _slicedToArray((0, react.useReducer)(exportReducer, initialState$1), 2); var data = _useReducer2[0]; var dispatch = _useReducer2[1]; var isNameEmpty = !(((_data$kitInfo$title = data.kitInfo.title) === null || _data$kitInfo$title === void 0 ? void 0 : _data$kitInfo$title.trim()) || "").length; var hasNameError = data.validationErrors.name || isNameEmpty; var hasDescriptionError = data.validationErrors.description; var value = { data, dispatch, hasValidationErrors: !!(hasNameError || hasDescriptionError), isExporting: data.exportStatus === EXPORT_STATUS.EXPORTING, isCompleted: data.exportStatus === EXPORT_STATUS.COMPLETED, isPending: data.exportStatus === EXPORT_STATUS.PENDING }; return /*#__PURE__*/ react.default.createElement(ExportContext.Provider, { value }, children); } ExportContextProvider.propTypes = { children: import_prop_types$82.default.node.isRequired }; function useExportContext() { var context = (0, react.useContext)(ExportContext); if (!context) throw new Error("useExportContext must be used within an ExportContextProvider"); return context; } //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/layout/base-layout.js init_extends(); init_defineProperty$1(); init_objectWithoutProperties(); var _excluded$4 = [ "children", "topBar", "footer", "sx" ]; function ownKeys$26(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; } __name(ownKeys$26, "ownKeys"); function _objectSpread$25(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$26(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$26(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$25, "_objectSpread"); function BaseLayout(props) { var _elementorAppConfig$i; var _elementorCommon; var children = props.children; var topBar = props.topBar; var footer = props.footer; var _props$sx = props.sx; var sx = _props$sx === void 0 ? {} : _props$sx; var rest = _objectWithoutProperties(props, _excluded$4); var uiTheme = ((_elementorAppConfig$i = elementorAppConfig["import-export-customization"]) === null || _elementorAppConfig$i === void 0 ? void 0 : _elementorAppConfig$i.uiTheme) || "auto"; var colorScheme = "dark" === uiTheme || "auto" === uiTheme && window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; var isRTL = ((_elementorCommon = elementorCommon) === null || _elementorCommon === void 0 || (_elementorCommon = _elementorCommon.config) === null || _elementorCommon === void 0 ? void 0 : _elementorCommon.isRTL) || false; return /*#__PURE__*/ react.default.createElement(_elementor_ui.DirectionProvider, { rtl: isRTL }, /*#__PURE__*/ react.default.createElement(_elementor_ui.ThemeProvider, { colorScheme }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, _extends$1({ sx: _objectSpread$25({ height: "100vh", display: "flex", flexDirection: "column", overflow: "hidden" }, sx) }, rest), /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { position: "sticky", top: 0 } }, topBar), /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { component: "main", sx: { flex: 1, overflow: "auto", display: "flex", flexDirection: "column" } }, children), /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { position: "sticky", bottom: 0 } }, footer)))); } BaseLayout.propTypes = { children: import_prop_types$82.default.node.isRequired, topBar: import_prop_types$82.default.node, footer: import_prop_types$82.default.node, sx: import_prop_types$82.default.object }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/layout/centered-content.js var DEFAULT_OFFSET_WITHOUT_FOOTER = 120; var DEFAULT_OFFSET_WITH_FOOTER = 180; function CenteredContent(_ref) { var children = _ref.children; var _ref$hasFooter = _ref.hasFooter; var hasFooter = _ref$hasFooter === void 0 ? false : _ref$hasFooter; var offsetHeight = _ref.offsetHeight; var _ref$maxWidth = _ref.maxWidth; var maxWidth = _ref$maxWidth === void 0 ? "600px" : _ref$maxWidth; var calculatedOffset = offsetHeight || (hasFooter ? DEFAULT_OFFSET_WITH_FOOTER : DEFAULT_OFFSET_WITHOUT_FOOTER); return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { display: "flex", alignItems: "center", justifyContent: "center", minHeight: "calc(100vh - ".concat(calculatedOffset, "px)"), p: 3 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { maxWidth, textAlign: "center", width: "100%" } }, children)); } CenteredContent.propTypes = { children: import_prop_types$82.default.node.isRequired, hasFooter: import_prop_types$82.default.bool, offsetHeight: import_prop_types$82.default.number, maxWidth: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/layout/footer.js init_extends(); init_defineProperty$1(); init_objectWithoutProperties(); var _excluded$3 = ["children", "sx"]; function ownKeys$25(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; } __name(ownKeys$25, "ownKeys"); function _objectSpread$24(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$25(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$25(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$24, "_objectSpread"); function Footer(props) { var children = props.children; var _props$sx = props.sx; var sx = _props$sx === void 0 ? {} : _props$sx; var rest = _objectWithoutProperties(props, _excluded$3); return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, _extends$1({ component: "footer", sx: _objectSpread$24({ mt: "auto", py: 2, px: 3, borderTop: 1, borderColor: "divider", display: "flex", justifyContent: "flex-end", alignItems: "center" }, sx) }, rest), children); } Footer.propTypes = { children: import_prop_types$82.default.node, sx: import_prop_types$82.default.object }; //#endregion //#region app/modules/import-export-customization/assets/js/import/utils/version-utils.js /** * Compare two semantic versions. * * @param {string|number} a - First version to compare * @param {string|number} b - Second version to compare * @return {number} - Negative if a < b, positive if a > b, zero if equal * * @example * compareVersions('3.9.1', '3.33.0') // -1 (3.9.1 is older) * compareVersions('3.33.1', '3.33.0') // 1 (3.33.1 is newer) * compareVersions('3.33.0', '3.33.0') // 0 (equal) */ var compareVersions = function compareVersions(a, b) { var aParts = String(a || "0.0.0").split(".").map(Number); var bParts = String(b || "0.0.0").split(".").map(Number); for (var i = 0; i < Math.max(aParts.length, bParts.length); i++) { var aVal = aParts[i] || 0; var bVal = bParts[i] || 0; if (aVal !== bVal) return aVal - bVal; } return 0; }; /** * Check if version A is less than version B. * * @param {string|number} a - First version * @param {string|number} b - Second version * @return {boolean} - True if a < b * * @example * isVersionLessThan('3.9.1', '3.33.0') // true * isVersionLessThan('3.33.1', '3.33.0') // false */ var isVersionLessThan = function isVersionLessThan(a, b) { return compareVersions(a, b) < 0; }; //#endregion //#region app/modules/import-export-customization/assets/js/import/context/import-context.js init_slicedToArray(); init_toConsumableArray(); init_defineProperty$1(); function ownKeys$24(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; } __name(ownKeys$24, "ownKeys"); function _objectSpread$23(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$24(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$24(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$23, "_objectSpread"); var IMPORT_STATUS = { PENDING: "PENDING", UPLOADING: "UPLOADING", CUSTOMIZING: "CUSTOMIZING", IMPORTING: "IMPORTING", COMPLETED: "COMPLETED" }; var ACTION_TYPE = { APPLY_ALL: "apply-all" }; var importReducer = function importReducer(state, _ref) { var type = _ref.type; var payload = _ref.payload; switch (type) { case "SET_IMPORT_STATUS": return _objectSpread$23(_objectSpread$23({}, state), {}, { importStatus: payload }); case "SET_FILE": return _objectSpread$23(_objectSpread$23({}, state), {}, { file: payload }); case "SET_UPLOADED_DATA": return _objectSpread$23(_objectSpread$23({}, state), {}, { uploadedData: payload }); case "SET_IMPORTED_DATA": return _objectSpread$23(_objectSpread$23({}, state), {}, { importedData: payload }); case "SET_KIT_UPLOAD_PARAMS": return _objectSpread$23(_objectSpread$23({}, state), {}, { kitUploadParams: payload }); case "SET_ACTION_TYPE": return _objectSpread$23(_objectSpread$23({}, state), {}, { actionType: payload }); case "SET_RETURN_TO": return _objectSpread$23(_objectSpread$23({}, state), {}, { returnTo: payload }); case "SET_NO_AUTOMATIC_REDIRECT": return _objectSpread$23(_objectSpread$23({}, state), {}, { noAutomaticRedirect: payload }); case "SET_RUNNERS_STATE": return _objectSpread$23(_objectSpread$23({}, state), {}, { runnersState: _objectSpread$23(_objectSpread$23({}, state.runnersState), payload) }); case "ADD_INCLUDE": return _objectSpread$23(_objectSpread$23({}, state), {}, { includes: state.includes.includes(payload) ? state.includes : [].concat(_toConsumableArray(state.includes), [payload]) }); case "ADD_INCLUDES": return _objectSpread$23(_objectSpread$23({}, state), {}, { includes: Array.from(new Set([].concat(_toConsumableArray(state.includes), _toConsumableArray(payload)))) }); case "REMOVE_INCLUDE": return _objectSpread$23(_objectSpread$23({}, state), {}, { includes: state.includes.filter(function(item) { return item !== payload; }), customization: _objectSpread$23(_objectSpread$23({}, state.customization), {}, _defineProperty$1({}, payload, null)) }); case "RESET_STATE": return _objectSpread$23({}, initialState); case "SET_CUSTOMIZATION": return _objectSpread$23(_objectSpread$23({}, state), {}, { customization: _objectSpread$23(_objectSpread$23({}, state.customization), {}, _defineProperty$1({}, payload.key, payload.value)) }); case "SET_DURATION": return _objectSpread$23(_objectSpread$23({}, state), {}, { duration: payload }); default: return state; } }; var ImportContext = (0, react.createContext)(); var initialState = { file: null, uploadedData: null, importedData: null, kitUploadParams: null, actionType: null, returnTo: null, noAutomaticRedirect: false, plugins: [], includes: ["plugins"], importStatus: IMPORT_STATUS.PENDING, runnersState: {}, customization: { settings: null, templates: null, content: null, plugins: null }, duration: null }; function ImportContextProvider(props) { var _data$uploadedData; var _data$uploadedData2; var _useReducer2 = _slicedToArray((0, react.useReducer)(importReducer, initialState), 2); var data = _useReducer2[0]; var dispatch = _useReducer2[1]; var isOldExport = isVersionLessThan((_data$uploadedData = data.uploadedData) === null || _data$uploadedData === void 0 || (_data$uploadedData = _data$uploadedData.manifest) === null || _data$uploadedData === void 0 ? void 0 : _data$uploadedData.version, elementorAppConfig["import-export-customization"].manifestVersion); var isOldElementorVersion = isVersionLessThan(elementorAppConfig["import-export-customization"].elementorVersion, (_data$uploadedData2 = data.uploadedData) === null || _data$uploadedData2 === void 0 || (_data$uploadedData2 = _data$uploadedData2.manifest) === null || _data$uploadedData2 === void 0 ? void 0 : _data$uploadedData2.elementor_version); return /*#__PURE__*/ react.default.createElement(ImportContext.Provider, { value: { data, dispatch, runnersState: data.runnersState, isUploading: data.importStatus === IMPORT_STATUS.UPLOADING, isCustomizing: data.importStatus === IMPORT_STATUS.CUSTOMIZING, isProcessing: data.importStatus === IMPORT_STATUS.IMPORTING, isCompleted: data.importStatus === IMPORT_STATUS.COMPLETED, isOldExport, isOldElementorVersion } }, props.children); } ImportContextProvider.propTypes = { children: import_prop_types$82.default.node.isRequired }; function useImportContext() { var context = (0, react.useContext)(ImportContext); if (!context) throw new Error("useImportContext must be used within an ImportContextProvider"); return context; } //#endregion //#region app/modules/import-export-customization/assets/js/shared/hooks/use-context-detection.js function useContextDetection() { var importContext = (0, react.useContext)(ImportContext); var exportContext = (0, react.useContext)(ExportContext); if (importContext) return { isImport: true, contextData: importContext }; if (exportContext) return { isImport: false, contextData: exportContext }; throw new Error("useContextDetection must be used within either an ImportContextProvider or ExportContextProvider"); } //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/layout/page-header.js init_extends(); var StyledElementorLogo = (0, _elementor_ui.styled)(function ElementorLogo(props) { return /*#__PURE__*/ react.default.createElement(_elementor_ui.SvgIcon, _extends$1({ viewBox: "0 0 32 32" }, props), /*#__PURE__*/ react.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M2.69648 24.8891C0.938383 22.2579 0 19.1645 0 16C0 11.7566 1.68571 7.68687 4.68629 4.68629C7.68687 1.68571 11.7566 0 16 0C19.1645 0 22.2579 0.938383 24.8891 2.69648C27.5203 4.45459 29.5711 6.95344 30.7821 9.87706C31.9931 12.8007 32.3099 16.0177 31.6926 19.1214C31.0752 22.2251 29.5514 25.0761 27.3137 27.3137C25.0761 29.5514 22.2251 31.0752 19.1214 31.6926C16.0177 32.3099 12.8007 31.9931 9.87706 30.7821C6.95344 29.5711 4.45459 27.5203 2.69648 24.8891ZM12.0006 9.33281H9.33437V22.6665H12.0006V9.33281ZM22.6657 9.33281H14.6669V11.9991H22.6657V9.33281ZM22.6657 14.6654H14.6669V17.3316H22.6657V14.6654ZM22.6657 20.0003H14.6669V22.6665H22.6657V20.0003Z" })); })(function(_ref) { var theme = _ref.theme; return { width: theme.spacing(4), height: theme.spacing(4), "& path": { fill: theme.palette.text.primary } }; }); function PageHeader(_ref2) { var _ref2$title = _ref2.title; var title = _ref2$title === void 0 ? (0, _wordpress_i18n.__)("Export", "elementor") : _ref2$title; var _useContextDetection = useContextDetection(); var isImport = _useContextDetection.isImport; var contextData = _useContextDetection.contextData; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", spacing: 2, alignItems: "center" }, /*#__PURE__*/ react.default.createElement(StyledElementorLogo, { sx: { mr: 1 } }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h6", component: "h1", color: "text.primary", sx: { fontWeight: 600 } }, title)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", spacing: 1, alignItems: "center" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.IconButton, { onClick: function handleClose() { var path = "admin.php?page=elementor-tools#tab-import-export-kit"; if (isImport) { var _contextData$data; var _contextData$data2; if ("cloud" === (contextData === null || contextData === void 0 || (_contextData$data = contextData.data) === null || _contextData$data === void 0 || (_contextData$data = _contextData$data.kitUploadParams) === null || _contextData$data === void 0 ? void 0 : _contextData$data.source)) path = "admin.php?page=elementor-app&source=kit_import#kit-library/cloud"; else if ("kit-library" === (contextData === null || contextData === void 0 || (_contextData$data2 = contextData.data) === null || _contextData$data2 === void 0 || (_contextData$data2 = _contextData$data2.kitUploadParams) === null || _contextData$data2 === void 0 ? void 0 : _contextData$data2.source)) path = "admin.php?page=elementor-app&source=kit_import#kit-library"; } window.top.location = elementorAppConfig.admin_url + path; }, "aria-label": (0, _wordpress_i18n.__)("Close", "elementor") }, /*#__PURE__*/ react.default.createElement(_elementor_icons.XIcon, null)))); } PageHeader.propTypes = { title: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/layout/top-bar.js init_extends(); init_defineProperty$1(); init_objectWithoutProperties(); var _excluded$2 = ["children", "sx"]; function ownKeys$23(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; } __name(ownKeys$23, "ownKeys"); function _objectSpread$22(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$23(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$23(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$22, "_objectSpread"); function TopBar(props) { var children = props.children; var _props$sx = props.sx; var sx = _props$sx === void 0 ? {} : _props$sx; var rest = _objectWithoutProperties(props, _excluded$2); return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.AppBar, _extends$1({ position: "static", elevation: 0, sx: _objectSpread$22({ backgroundColor: "background.default" }, sx) }, rest), /*#__PURE__*/ react.default.createElement(_elementor_ui.Toolbar, { sx: { minHeight: { xs: 56, sm: 64 }, px: 3, justifyContent: "space-between" } }, children)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Divider, null)); } TopBar.propTypes = { children: import_prop_types$82.default.node, sx: import_prop_types$82.default.object }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/hooks/use-kit-plugins.js init_asyncToGenerator(); init_slicedToArray(); function useKitPlugins(_ref) { var open = _ref.open; var _useState2 = _slicedToArray((0, react.useState)({}), 2); var pluginsList = _useState2[0]; var setPluginsList = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isLoading = _useState4[0]; var setIsLoading = _useState4[1]; var fetchPlugins = (0, react.useCallback)(/*#__PURE__*/ _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee() { var _window$wpApiSettings; var requestUrl; var response; var result; var errorMessage; var pluginsObject; return import_regenerator$1.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: setIsLoading(true); _context.prev = 1; requestUrl = "".concat(elementorCommon.config.urls.rest, "wp/v2/plugins/"); _context.next = 2; return fetch(requestUrl, { method: "GET", headers: { "Content-Type": "application/json", "X-WP-Nonce": ((_window$wpApiSettings = window.wpApiSettings) === null || _window$wpApiSettings === void 0 ? void 0 : _window$wpApiSettings.nonce) || "" } }); case 2: response = _context.sent; _context.next = 3; return response.json(); case 3: result = _context.sent; if (response.ok) { _context.next = 4; break; } errorMessage = (result === null || result === void 0 ? void 0 : result.message) || "HTTP error! Status: ".concat(response.status); throw new Error(errorMessage); case 4: if (Array.isArray(result)) { _context.next = 5; break; } return _context.abrupt("return"); case 5: pluginsObject = {}; result.forEach(function(plugin) { pluginsObject[plugin.plugin] = { name: plugin.name, plugin: plugin.plugin, pluginUri: plugin.plugin_uri, version: plugin.version }; }); setPluginsList(pluginsObject); _context.next = 7; break; case 6: _context.prev = 6; _context["catch"](1); setPluginsList({}); case 7: _context.prev = 7; setIsLoading(false); return _context.finish(7); case 8: case "end": return _context.stop(); } }, _callee, null, [[ 1, 6, 7, 8 ]]); })), []); (0, react.useEffect)(function() { if (open) fetchPlugins(); }, [open, fetchPlugins]); return { pluginsList, isLoading }; } //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/upgrade-version-banner.js function UpgradeVersionBanner() { return /*#__PURE__*/ react.default.createElement(_elementor_ui.Paper, { color: "info", elevation: 0, variant: "elevation" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", sx: { alignItems: "center", justifyContent: "space-between", gap: "5px", py: 1.5, px: 2.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", sx: { alignItems: "center", gap: "5px" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.SvgIcon, { viewBox: "0 0 22 22", sx: { fontSize: 16, color: "info.light" } }, /*#__PURE__*/ react.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.58268 4.35352C4.5219 4.35352 4.46361 4.37766 4.42064 4.42064C4.37766 4.46361 4.35352 4.5219 4.35352 4.58268V6.64518H6.64518V4.35352H4.58268ZM4.58268 2.97852C4.15723 2.97852 3.7492 3.14753 3.44837 3.44837C3.14753 3.7492 2.97852 4.15723 2.97852 4.58268V17.416C2.97852 17.8415 3.14753 18.2495 3.44837 18.5503C3.74921 18.8512 4.15723 19.0202 4.58268 19.0202H17.416C17.8415 19.0202 18.2495 18.8512 18.5503 18.5503C18.8512 18.2495 19.0202 17.8415 19.0202 17.416V4.58268C19.0202 4.15723 18.8512 3.74921 18.5503 3.44837C18.2495 3.14753 17.8415 2.97852 17.416 2.97852H4.58268ZM8.02018 4.35352V6.64518H17.6452V4.58268C17.6452 4.5219 17.621 4.46361 17.5781 4.42064C17.5351 4.37766 17.4768 4.35352 17.416 4.35352H8.02018ZM17.6452 8.02018H4.35352V17.416C4.35352 17.4768 4.37766 17.5351 4.42064 17.5781C4.46361 17.621 4.5219 17.6452 4.58268 17.6452H17.416C17.4768 17.6452 17.5351 17.621 17.5781 17.5781C17.621 17.5351 17.6452 17.4768 17.6452 17.416V8.02018Z", fill: "currentColor" })), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2" }, (0, _wordpress_i18n.__)("You’re using an older Elementor version. Update for full customization.", "elementor"))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "outlined", onClick: function onClick() { var _elementorAppConfig$i; return window.open((_elementorAppConfig$i = elementorAppConfig["import-export-customization"]) === null || _elementorAppConfig$i === void 0 ? void 0 : _elementorAppConfig$i.upgradeVersionUrl, "_blank"); }, color: "info" }, (0, _wordpress_i18n.__)("Update version", "elementor")))); } //#endregion //#region app/modules/import-export-customization/assets/js/shared/utils/analytics-transformer.js init_typeof$1(); var ANALYTICS_TRANSFORM_RULES = { STRING: function STRING(value) { return value; }, BOOLEAN: function BOOLEAN(value) { return value; }, EMPTY_ARRAY: function EMPTY_ARRAY() { return "None"; }, FULL_ARRAY: function FULL_ARRAY() { return "All"; }, PARTIAL_ARRAY: function PARTIAL_ARRAY() { return "Partial"; } }; var getTotalAvailableCount = function getTotalAvailableCount(key, optionsArray) { return optionsArray.reduce(function(map, _ref) { var optionKey = _ref.key; map[optionKey] = _ref.options.length; return map; }, {})[key] || 0; }; var transformValueForAnalytics = function transformValueForAnalytics(key, value, optionsArray) { if ("string" === typeof value || "boolean" === typeof value) return ANALYTICS_TRANSFORM_RULES[_typeof$1(value).toUpperCase()](value); if ("object" === _typeof$1(value) && value !== null && !Array.isArray(value) && "enabled" in value) return value.enabled; if (Array.isArray(value)) { if (0 === value.length) return ANALYTICS_TRANSFORM_RULES.EMPTY_ARRAY(); var totalAvailable = getTotalAvailableCount(key, optionsArray); return value.length === totalAvailable ? ANALYTICS_TRANSFORM_RULES.FULL_ARRAY() : ANALYTICS_TRANSFORM_RULES.PARTIAL_ARRAY(); } return value; }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/kit-plugins-customization-dialog.js init_defineProperty$1(); init_slicedToArray(); init_apps_event_tracking(); function ownKeys$22(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; } __name(ownKeys$22, "ownKeys"); function _objectSpread$21(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$22(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$22(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$21, "_objectSpread"); var transformAnalyticsData$2 = function transformAnalyticsData(payload) { var transformed = {}; for (var _i = 0, _Object$entries = Object.entries(payload); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2); var key = _Object$entries$_i[0]; var value = _Object$entries$_i[1]; transformed[key] = transformValueForAnalytics(key, value, []); } return transformed; }; var REQUIRED_PLUGINS = ["elementor/elementor"]; function KitPluginsCustomizationDialog(_ref) { var _useContextDetection; var _data$uploadedData2; var _data$includes; var _data$customization2; var open = _ref.open; var handleClose = _ref.handleClose; var handleSaveChanges = _ref.handleSaveChanges; var _ref2 = (_useContextDetection = useContextDetection()) !== null && _useContextDetection !== void 0 ? _useContextDetection : {}; var _ref2$isImport = _ref2.isImport; var isImport = _ref2$isImport === void 0 ? false : _ref2$isImport; var _ref2$contextData = _ref2.contextData; var contextData = _ref2$contextData === void 0 ? {} : _ref2$contextData; var _contextData$data = contextData.data; var data = _contextData$data === void 0 ? null : _contextData$data; var _contextData$isOldEle = contextData.isOldElementorVersion; var isOldElementorVersion = _contextData$isOldEle === void 0 ? false : _contextData$isOldEle; var _useKitPlugins = useKitPlugins({ open: open && !isImport }); var fetchedPluginsList = _useKitPlugins.pluginsList; var fetchIsLoading = _useKitPlugins.isLoading; var pluginsList = (0, react.useMemo)(function() { if (isImport) { var _data$uploadedData; return ((data === null || data === void 0 || (_data$uploadedData = data.uploadedData) === null || _data$uploadedData === void 0 || (_data$uploadedData = _data$uploadedData.manifest) === null || _data$uploadedData === void 0 ? void 0 : _data$uploadedData.plugins) || []).reduce(function(acc, plugin) { acc[plugin.plugin] = plugin; return acc; }, {}); } return fetchedPluginsList; }, [ isImport, data === null || data === void 0 || (_data$uploadedData2 = data.uploadedData) === null || _data$uploadedData2 === void 0 || (_data$uploadedData2 = _data$uploadedData2.manifest) === null || _data$uploadedData2 === void 0 ? void 0 : _data$uploadedData2.plugins, fetchedPluginsList ]); var isLoading = isImport ? false : fetchIsLoading; var _useState2 = _slicedToArray((0, react.useState)({}), 2); var plugins = _useState2[0]; var setPlugins = _useState2[1]; var initialState = (data === null || data === void 0 || (_data$includes = data.includes) === null || _data$includes === void 0 ? void 0 : _data$includes.includes("plugins")) || false; (0, react.useEffect)(function() { var _data$customization; if (0 === Object.keys(pluginsList).length) return; var initialPluginsState = {}; if (data !== null && data !== void 0 && (_data$customization = data.customization) !== null && _data$customization !== void 0 && _data$customization.plugins) initialPluginsState = data.customization.plugins; else Object.keys(pluginsList).forEach(function(pluginKey) { initialPluginsState[pluginKey] = initialState; }); REQUIRED_PLUGINS.forEach(function(pluginKey) { if (initialPluginsState.hasOwnProperty(pluginKey)) initialPluginsState[pluginKey] = true; }); setPlugins(initialPluginsState); }, [ pluginsList, data === null || data === void 0 || (_data$customization2 = data.customization) === null || _data$customization2 === void 0 ? void 0 : _data$customization2.plugins, initialState ]); var isRequiredPlugin = (0, react.useCallback)(function(pluginKey) { return REQUIRED_PLUGINS.includes(pluginKey); }, []); var nonRequiredPlugins = (0, react.useMemo)(function() { return Object.keys(plugins).filter(function(pluginKey) { return !isRequiredPlugin(pluginKey); }); }, [plugins, isRequiredPlugin]); var isAllSelected = (0, react.useMemo)(function() { return nonRequiredPlugins.length > 0 && nonRequiredPlugins.every(function(pluginKey) { return plugins[pluginKey]; }); }, [nonRequiredPlugins, plugins]); var isIndeterminate = (0, react.useMemo)(function() { return nonRequiredPlugins.some(function(pluginKey) { return plugins[pluginKey]; }) && !isAllSelected; }, [ nonRequiredPlugins, plugins, isAllSelected ]); var handleToggleChange = (0, react.useCallback)(function(settingKey) { if (isRequiredPlugin(settingKey)) return; setPlugins(function(prev) { return _objectSpread$21(_objectSpread$21({}, prev), {}, _defineProperty$1({}, settingKey, !prev[settingKey])); }); }, [isRequiredPlugin]); var handleSelectAll = (0, react.useCallback)(function() { var allNonRequiredSelected = nonRequiredPlugins.every(function(pluginKey) { return plugins[pluginKey]; }); var newState = _objectSpread$21({}, plugins); nonRequiredPlugins.forEach(function(pluginKey) { newState[pluginKey] = !allNonRequiredSelected; }); REQUIRED_PLUGINS.forEach(function(pluginKey) { if (newState.hasOwnProperty(pluginKey)) newState[pluginKey] = true; }); setPlugins(newState); }, [plugins, nonRequiredPlugins]); var getPluginsSelection = (0, react.useCallback)(function() { var selectedPlugins = {}; Object.entries(plugins).forEach(function(_ref3) { var _ref4 = _slicedToArray(_ref3, 2); var pluginKey = _ref4[0]; selectedPlugins[pluginKey] = _ref4[1]; }); return selectedPlugins; }, [plugins]); (0, react.useEffect)(function() { if (open) AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitExportCustomizationEdit); }, [open]); var SettingSection = function SettingSection(_ref5) { var title = _ref5.title; var description = _ref5.description; var children = _ref5.children; var settingKey = _ref5.settingKey; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { key: settingKey, sx: { mb: 3, border: 1, borderRadius: 1, borderColor: "action.focus", p: 2.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h6" }, title), description && /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.secondary" }, description))), children && /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { mt: 2 } }, children)); }; SettingSection.propTypes = { title: import_prop_types$82.default.string.isRequired, description: import_prop_types$82.default.string, children: import_prop_types$82.default.node, settingKey: import_prop_types$82.default.string }; var SubSetting = function SubSetting(_ref6) { var label = _ref6.label; var settingKey = _ref6.settingKey; var version = _ref6.version; var pluginUri = _ref6.pluginUri; var isRequired = isRequiredPlugin(settingKey); return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { py: 1.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControlLabel, { control: /*#__PURE__*/ react.default.createElement(_elementor_ui.Checkbox, { checked: plugins[settingKey], onChange: function onChange() { return handleToggleChange(settingKey); }, color: "info", size: "medium", sx: { py: 0 }, disabled: isRequired }), label: /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", sx: { fontWeight: 400, color: isRequired ? "text.disabled" : "inherit" } }, label) }), version && /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.secondary", sx: { fontWeight: 400, ml: 4 } }, pluginUri ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { href: pluginUri, target: "_blank", rel: "noopener noreferrer", color: "info.light", underline: "hover", sx: { display: "inline-flex", alignItems: "center", gap: .5 } }, (0, _wordpress_i18n.__)("Version", "elementor"), " ", version, /*#__PURE__*/ react.default.createElement(_elementor_icons.ExternalLinkIcon, null)) : /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Version", "elementor"), " ", version))); }; SubSetting.propTypes = { label: import_prop_types$82.default.string.isRequired, settingKey: import_prop_types$82.default.string.isRequired, version: import_prop_types$82.default.string, pluginUri: import_prop_types$82.default.string }; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Dialog, { open, onClose: handleClose, maxWidth: "md", fullWidth: true, PaperProps: { sx: { minHeight: "600px" } } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogHeader, { onClose: handleClose }, /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogTitle, null, (0, _wordpress_i18n.__)("Edit plugins", "elementor"))), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogContent, { dividers: true, sx: { p: 3 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { gap: 2 }, isOldElementorVersion && /*#__PURE__*/ react.default.createElement(UpgradeVersionBanner, null), isLoading ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 3, alignItems: "center", sx: { py: 8 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.CircularProgress, { size: 30 })) : /*#__PURE__*/ react.default.createElement(SettingSection, { title: (0, _wordpress_i18n.__)("Plugin name and version", "elementor") }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { py: 1.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControlLabel, { control: /*#__PURE__*/ react.default.createElement(_elementor_ui.Checkbox, { checked: isAllSelected, indeterminate: isIndeterminate, onChange: handleSelectAll, color: "info", size: "medium", sx: { py: 0 } }), label: /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", sx: { fontWeight: 500 } }, (0, _wordpress_i18n.__)("All plugins", "elementor")) })), Object.entries(pluginsList).map(function(_ref7) { var _ref8 = _slicedToArray(_ref7, 2); var pluginKey = _ref8[0]; var pluginData = _ref8[1]; return /*#__PURE__*/ react.default.createElement(SubSetting, { key: pluginKey, label: pluginData.name, settingKey: pluginKey, version: pluginData.version, pluginUri: pluginData.pluginUri }); }))))), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogActions, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { onClick: handleClose, color: "secondary" }, (0, _wordpress_i18n.__)("Cancel", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { onClick: function onClick() { var pluginsSelection = getPluginsSelection(); handleSaveChanges("plugins", pluginsSelection, Object.values(pluginsSelection).some(Boolean), transformAnalyticsData$2(pluginsSelection)); handleClose(); }, variant: "contained", color: "primary", disabled: isLoading }, (0, _wordpress_i18n.__)("Save changes", "elementor")))); } KitPluginsCustomizationDialog.propTypes = { open: import_prop_types$82.default.bool.isRequired, handleClose: import_prop_types$82.default.func.isRequired, handleSaveChanges: import_prop_types$82.default.func.isRequired }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/kit-customization-dialog.js function KitCustomizationDialog(_ref) { var open = _ref.open; var title = _ref.title; var handleClose = _ref.handleClose; var handleSaveChanges = _ref.handleSaveChanges; var children = _ref.children; var _ref$saveDisabled = _ref.saveDisabled; var saveDisabled = _ref$saveDisabled === void 0 ? false : _ref$saveDisabled; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Dialog, { open, onClose: function handleDialogClose(_event, reason) { if ("escapeKeyDown" === reason) handleClose(); }, maxWidth: "md", fullWidth: true }, /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogHeader, { onClose: handleClose }, /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogTitle, null, title)), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogContent, { dividers: true, sx: { p: 3 } }, children), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogActions, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { onClick: handleClose, color: "secondary" }, (0, _wordpress_i18n.__)("Cancel", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { disabled: saveDisabled, onClick: handleSaveChanges, variant: "contained", color: "primary" }, (0, _wordpress_i18n.__)("Save changes", "elementor")))); } KitCustomizationDialog.propTypes = { open: import_prop_types$82.default.bool.isRequired, handleClose: import_prop_types$82.default.func.isRequired, handleSaveChanges: import_prop_types$82.default.func.isRequired, children: import_prop_types$82.default.node.isRequired, title: import_prop_types$82.default.string.isRequired, saveDisabled: import_prop_types$82.default.bool }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/customization-list-setting-section.js init_toConsumableArray(); init_slicedToArray(); init_utils$5(); var DEFAULT_VISIBLE_ITEMS_COUNT = 16; function ListSettingSection(_ref) { var items = _ref.items; var title = _ref.title; var loading = _ref.loading; var settings = _ref.settings; var onSettingChange = _ref.onSettingChange; var settingKey = _ref.settingKey; var _ref$disabled = _ref.disabled; var disabled = _ref$disabled === void 0 ? false : _ref$disabled; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var showMore = _useState2[0]; var setShowMore = _useState2[1]; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { key: settingKey, sx: { border: 1, borderRadius: 1, borderColor: "action.focus", p: 2.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h6" }, title), /*#__PURE__*/ react.default.createElement(_elementor_ui.Grid, { container: true, spacing: 1, alignItems: "start" }, loading ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Grid, { item: true, xs: 12, sx: { p: 1, alignItems: "center", textAlign: "center" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.CircularProgress, { size: 30 })) : /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Grid, { key: "all", item: true, xs: 12, sx: { py: 1, px: 0 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControlLabel, { control: /*#__PURE__*/ react.default.createElement(_elementor_ui.Checkbox, { color: "info", checked: settings.length === items.length, indeterminate: settings.length > 0 && settings.length !== items.length, onChange: function onChange(e, checked) { if (checked) onSettingChange(items.map(function(_ref2) { return _ref2.value; }), true); else onSettingChange([], true); }, disabled, sx: { p: 0 } }), sx: { gap: 1 }, slotProps: { typography: { sx: { fontWeight: 500 } } }, label: "".concat((0, _wordpress_i18n.__)("All", "elementor-pro"), " ").concat(title.toLowerCase()) })), (showMore ? items : items.slice(0, DEFAULT_VISIBLE_ITEMS_COUNT)).map(function(item) { return /*#__PURE__*/ react.default.createElement(_elementor_ui.Grid, { key: item.value, item: true, xs: 3, sx: { py: 1, px: 0 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControlLabel, { sx: { maxWidth: "100%", gap: 1 }, control: /*#__PURE__*/ react.default.createElement(_elementor_ui.Checkbox, { color: "info", checked: settings.includes(item.value), onChange: function onChange(e, checked) { if (checked) onSettingChange([].concat(_toConsumableArray(settings), [item.value])); else onSettingChange(settings.filter(function(setting) { return setting !== item.value; })); }, sx: { p: 0 }, disabled }), slotProps: { typography: { sx: { maxWidth: "100%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } } }, label: htmlDecodeTextContent(item.label) })); })))), items.length > DEFAULT_VISIBLE_ITEMS_COUNT && /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "text", color: "info", onClick: function onClick() { return setShowMore(!showMore); } }, showMore ? (0, _wordpress_i18n.__)("Show less", "elementor") : (0, _wordpress_i18n.__)("Show more", "elementor"))); } ListSettingSection.propTypes = { title: import_prop_types$82.string.isRequired, children: import_prop_types$82.node, loading: import_prop_types$82.bool, disabled: import_prop_types$82.bool, checked: import_prop_types$82.bool, settingKey: import_prop_types$82.string, onSettingChange: import_prop_types$82.func.isRequired, items: import_prop_types$82.arrayOf(import_prop_types$82.shape({ label: import_prop_types$82.string.isRequired, value: import_prop_types$82.oneOfType([import_prop_types$82.string, import_prop_types$82.number]) })), settings: import_prop_types$82.arrayOf(import_prop_types$82.oneOfType([import_prop_types$82.string, import_prop_types$82.number])) }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/customization-setting-section.js var SettingSection = function SettingSection(_ref) { var _ref$checked = _ref.checked; var checked = _ref$checked === void 0 ? false : _ref$checked; var title = _ref.title; var description = _ref.description; var children = _ref.children; var settingKey = _ref.settingKey; var onSettingChange = _ref.onSettingChange; var _ref$hasToggle = _ref.hasToggle; var hasToggle = _ref$hasToggle === void 0 ? true : _ref$hasToggle; var _ref$disabled = _ref.disabled; var disabled = _ref$disabled === void 0 ? false : _ref$disabled; var _ref$notExported = _ref.notExported; var notExported = _ref$notExported === void 0 ? false : _ref$notExported; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { key: settingKey, sx: { mb: 3, border: 1, borderRadius: 1, borderColor: "action.focus", p: 2.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 1 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h6" }, title), description && /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { "data-testid": "".concat(settingKey, "-description"), variant: "body1", color: "text.secondary" }, description)), function getToggle() { if (notExported) return /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { "data-testid": "".concat(settingKey, "-description"), variant: "body1", color: "text.secondary" }, (0, _wordpress_i18n.__)("Not exported", "elementor")); if (!hasToggle) return null; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Switch, { "data-testid": "".concat(settingKey, "-switch"), checked, onChange: function onChange(e, isChecked) { return onSettingChange && onSettingChange(settingKey, isChecked); }, color: "info", size: "medium", sx: { alignSelf: "center" }, disabled }); }()), children && /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { mt: 1 } }, children)); }; SettingSection.propTypes = { title: import_prop_types$82.string.isRequired, description: import_prop_types$82.string, children: import_prop_types$82.node, hasToggle: import_prop_types$82.bool, checked: import_prop_types$82.bool, disabled: import_prop_types$82.bool, settingKey: import_prop_types$82.string, onSettingChange: import_prop_types$82.func, notExported: import_prop_types$82.bool }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/hooks/use-custom-post-types.js init_slicedToArray(); function useCustomPostTypes() { var _ref$include = (arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}).include; var include = _ref$include === void 0 ? [] : _ref$include; var _useState2 = _slicedToArray((0, react.useState)([]), 2); var customPostTypes = _useState2[0]; var setCustomPostTypes = _useState2[1]; (0, react.useEffect)(function() { var _elementorAppConfig$i; var cpt = Object.assign({}, ((_elementorAppConfig$i = elementorAppConfig["import-export-customization"]) === null || _elementorAppConfig$i === void 0 || (_elementorAppConfig$i = _elementorAppConfig$i.summaryTitles) === null || _elementorAppConfig$i === void 0 || (_elementorAppConfig$i = _elementorAppConfig$i.content) === null || _elementorAppConfig$i === void 0 ? void 0 : _elementorAppConfig$i.customPostTypes) || {}); if (include.length) { var _elementorAppConfig$i2; Object.entries(((_elementorAppConfig$i2 = elementorAppConfig["import-export-customization"]) === null || _elementorAppConfig$i2 === void 0 || (_elementorAppConfig$i2 = _elementorAppConfig$i2.summaryTitles) === null || _elementorAppConfig$i2 === void 0 ? void 0 : _elementorAppConfig$i2.content) || {}).forEach(function(_ref2) { var _ref3 = _slicedToArray(_ref2, 2); var postType = _ref3[0]; var post = _ref3[1]; if (include.includes(postType)) cpt[postType] = post; }); } if (Object.keys(cpt).length) setCustomPostTypes(Object.entries(cpt).map(function(_ref4) { var _ref5 = _slicedToArray(_ref4, 2); return { value: _ref5[0], label: _ref5[1].single }; })); }, []); return { customPostTypes }; } //#endregion //#region app/modules/import-export-customization/assets/js/shared/hooks/use-kit-customization-custom-post-types.js init_typeof$1(); function useKitCustomizationCustomPostTypes(_ref) { var data = _ref.data; var isImport = data === null || data === void 0 ? void 0 : data.hasOwnProperty("uploadedData"); var builtInCustomPostTypes = useCustomPostTypes({ include: ["post"] }).customPostTypes; return { customPostTypes: (0, react.useMemo)(function() { var _data$uploadedData; var _data$uploadedData2; var _data$uploadedData3; if (!isImport) return builtInCustomPostTypes; var customPostTypesTitles = Object.values((data === null || data === void 0 || (_data$uploadedData = data.uploadedData) === null || _data$uploadedData === void 0 || (_data$uploadedData = _data$uploadedData.manifest) === null || _data$uploadedData === void 0 ? void 0 : _data$uploadedData["custom-post-type-title"]) || {}).map(function(postType) { return { value: postType.name, label: postType.label }; }); if (!customPostTypesTitles.some(function(postType) { return "post" === postType.value; })) customPostTypesTitles.push({ value: "post", label: "Post" }); var wpContent = (data === null || data === void 0 || (_data$uploadedData2 = data.uploadedData) === null || _data$uploadedData2 === void 0 || (_data$uploadedData2 = _data$uploadedData2.manifest) === null || _data$uploadedData2 === void 0 ? void 0 : _data$uploadedData2["wp-content"]) || {}; var content = (data === null || data === void 0 || (_data$uploadedData3 = data.uploadedData) === null || _data$uploadedData3 === void 0 || (_data$uploadedData3 = _data$uploadedData3.manifest) === null || _data$uploadedData3 === void 0 ? void 0 : _data$uploadedData3.content) || {}; return customPostTypesTitles.filter(function(postType) { var postTypeValue = postType.value; var wpContentObject = wpContent[postTypeValue]; var isInWpContent = wpContentObject && "object" === _typeof$1(wpContentObject) && Object.keys(wpContentObject).length > 0; var contentObject = content[postTypeValue]; var isInElementorContent = contentObject && "object" === _typeof$1(contentObject) && Object.keys(contentObject).length > 0; return isInWpContent || isInElementorContent; }); }, [ isImport, data === null || data === void 0 ? void 0 : data.uploadedData, builtInCustomPostTypes ]) }; } //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/kit-content-customization-dialog.js init_defineProperty$1(); init_slicedToArray(); init_apps_event_tracking(); function ownKeys$21(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; } __name(ownKeys$21, "ownKeys"); function _objectSpread$20(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$21(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$21(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$20, "_objectSpread"); var transformAnalyticsData$1 = function transformAnalyticsData(payload, customPostTypes) { var optionsArray = [{ key: "customPostTypes", options: customPostTypes }]; var transformed = {}; for (var _i = 0, _Object$entries = Object.entries(payload); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2); var key = _Object$entries$_i[0]; var value = _Object$entries$_i[1]; transformed[key] = transformValueForAnalytics(key, value, optionsArray); } return transformed; }; var MEDIA_FORMAT_OPTIONS = { LINK: "link", CLOUD: "cloud" }; var MEDIA_FORMAT_CONFIG = [{ value: MEDIA_FORMAT_OPTIONS.LINK, title: (0, _wordpress_i18n.__)("Link to media", "elementor"), description: (0, _wordpress_i18n.__)("Stores only the URLs. The export stays light, but files load only while the original site is online.", "elementor") }, { value: MEDIA_FORMAT_OPTIONS.CLOUD, title: (0, _wordpress_i18n.__)("Save media to the cloud", "elementor"), description: (0, _wordpress_i18n.__)("All images and files are stored with the template. Keeps everything intact, but the file is larger.", "elementor") }]; function KitContentCustomizationDialog(_ref) { var _useContextDetection; var _data$customization$c2; var open = _ref.open; var handleClose = _ref.handleClose; var _handleSaveChanges = _ref.handleSaveChanges; var _ref$isCloudKitsEligi = _ref.isCloudKitsEligible; var isCloudKitsEligible = _ref$isCloudKitsEligi === void 0 ? false : _ref$isCloudKitsEligi; var _ref$showMediaFormatV = _ref.showMediaFormatValidation; var showMediaFormatValidation = _ref$showMediaFormatV === void 0 ? false : _ref$showMediaFormatV; var _ref2 = (_useContextDetection = useContextDetection()) !== null && _useContextDetection !== void 0 ? _useContextDetection : {}; var _ref2$isImport = _ref2.isImport; var isImport = _ref2$isImport === void 0 ? false : _ref2$isImport; var _ref2$contextData = _ref2.contextData; var contextData = _ref2$contextData === void 0 ? {} : _ref2$contextData; var _contextData$data = contextData.data; var data = _contextData$data === void 0 ? null : _contextData$data; var _contextData$isOldEle = contextData.isOldElementorVersion; var isOldElementorVersion = _contextData$isOldEle === void 0 ? false : _contextData$isOldEle; var customPostTypes = useKitCustomizationCustomPostTypes({ data }).customPostTypes; var alertRef = (0, react.useRef)(null); var mediaFormatSectionRef = (0, react.useRef)(null); var _useState2 = _slicedToArray((0, react.useState)(function() { if (data.customization.content) return data.customization.content; return { customPostTypes: [], mediaFormat: MEDIA_FORMAT_OPTIONS.LINK }; }), 2); var settings = _useState2[0]; var setSettings = _useState2[1]; (0, react.useEffect)(function() { if (customPostTypes) setSettings(function(prevSettings) { var _data$customization$c; return _objectSpread$20(_objectSpread$20({}, prevSettings), {}, { customPostTypes: ((_data$customization$c = data.customization.content) === null || _data$customization$c === void 0 ? void 0 : _data$customization$c.customPostTypes) || customPostTypes.map(function(_ref3) { return _ref3.value; }) }); }); }, [customPostTypes, (_data$customization$c2 = data.customization.content) === null || _data$customization$c2 === void 0 ? void 0 : _data$customization$c2.customPostTypes]); (0, react.useEffect)(function() { if (open) setSettings(function(prevState) { if (!data.includes.includes("content")) return { customPostTypes: [], mediaFormat: MEDIA_FORMAT_OPTIONS.LINK }; return prevState; }); }, [ open, data, setSettings ]); (0, react.useEffect)(function() { if (open) AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitExportCustomizationEdit); }, [open]); (0, react.useEffect)(function() { if (showMediaFormatValidation) setTimeout(function() { var targetElement = alertRef.current || mediaFormatSectionRef.current; if (targetElement) targetElement.scrollIntoView({ behavior: "smooth", block: "center" }); }); }, [showMediaFormatValidation]); var handleSettingsChange = function handleSettingsChange(settingKey, payload) { setSettings(function(prev) { return _objectSpread$20(_objectSpread$20({}, prev), {}, _defineProperty$1({}, settingKey, payload)); }); }; return /*#__PURE__*/ react.default.createElement(KitCustomizationDialog, { open, title: (0, _wordpress_i18n.__)("Edit content", "elementor"), handleClose, handleSaveChanges: function handleSaveChanges() { _handleSaveChanges("content", settings, true, transformAnalyticsData$1(settings, customPostTypes)); handleClose(); } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { gap: 2 }, isOldElementorVersion && /*#__PURE__*/ react.default.createElement(UpgradeVersionBanner, null), isImport && !(customPostTypes !== null && customPostTypes !== void 0 && customPostTypes.length) ? /*#__PURE__*/ react.default.createElement(SettingSection, { title: (0, _wordpress_i18n.__)("Custom post types", "elementor"), settingKey: "customPostTypes", notExported: true }) : /*#__PURE__*/ react.default.createElement(ListSettingSection, { settingKey: "customPostTypes", title: (0, _wordpress_i18n.__)("Custom post types", "elementor"), onSettingChange: function onSettingChange(selectedCustomPostTypes) { handleSettingsChange("customPostTypes", selectedCustomPostTypes); }, settings: settings.customPostTypes, items: customPostTypes }), function renderMediaFormatSection() { if (isImport) return /*#__PURE__*/ react.default.createElement(SettingSection, { title: (0, _wordpress_i18n.__)("Media format", "elementor"), settingKey: "mediaFormat", hasToggle: false }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Alert, { icon: /*#__PURE__*/ react.default.createElement(_elementor_ui.SvgIcon, { color: "info", viewBox: "0 0 24 24" }, /*#__PURE__*/ react.default.createElement("path", { d: "M11.8623 14.7549C12.3665 14.8061 12.7598 15.2322 12.7598 15.75C12.7598 16.2678 12.3665 16.6939 11.8623 16.7451L11.7598 16.75H11.75C11.1977 16.75 10.75 16.3023 10.75 15.75C10.75 15.1977 11.1977 14.75 11.75 14.75H11.7598L11.8623 14.7549Z", fill: "currentColor" }), /*#__PURE__*/ react.default.createElement("path", { d: "M11.75 7C12.1642 7 12.5 7.33579 12.5 7.75V12.75C12.5 13.1642 12.1642 13.5 11.75 13.5C11.3358 13.5 11 13.1642 11 12.75V7.75C11 7.33579 11.3358 7 11.75 7Z", fill: "currentColor" }), /*#__PURE__*/ react.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M11.75 2C17.1348 2 21.5 6.36522 21.5 11.75C21.5 17.1348 17.1348 21.5 11.75 21.5C6.36522 21.5 2 17.1348 2 11.75C2 6.36522 6.36522 2 11.75 2ZM11.75 3.5C7.19365 3.5 3.5 7.19365 3.5 11.75C3.5 16.3063 7.19365 20 11.75 20C16.3063 20 20 16.3063 20 11.75C20 7.19365 16.3063 3.5 11.75 3.5Z", fill: "currentColor" })), sx: { backgroundColor: "transparent", p: 0 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.primary" }, /*#__PURE__*/ react.default.createElement("strong", null, (0, _wordpress_i18n.__)("Note:", "elementor")), " ", (0, _wordpress_i18n.__)("The media will be uploaded automatically, just as it was saved during export", "elementor")))); if (!isImport && !isCloudKitsEligible) return null; return /*#__PURE__*/ react.default.createElement(SettingSection, { ref: mediaFormatSectionRef, description: (0, _wordpress_i18n.__)("Select how do you want to save & export the media files.", "elementor"), title: (0, _wordpress_i18n.__)("Media format", "elementor"), settingKey: "mediaFormat", hasToggle: false }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { pt: 2.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControl, { component: "fieldset", sx: { width: "100%" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.RadioGroup, { value: settings.mediaFormat, onChange: function onChange(event) { handleSettingsChange("mediaFormat", event.target.value); }, sx: { width: "100%" } }, MEDIA_FORMAT_CONFIG.map(function(option, index) { return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { key: option.value, sx: { border: 1, borderColor: settings.mediaFormat === option.value ? "info.light" : "divider", borderRadius: 2, p: 1, mb: index < MEDIA_FORMAT_CONFIG.length - 1 ? 1.5 : 0, width: "100%" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControlLabel, { value: option.value, control: /*#__PURE__*/ react.default.createElement(_elementor_ui.Radio, { color: "info", "data-testid": "media-format-".concat(option.value) }), label: /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", sx: { mb: .25 } }, option.title), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.secondary" }, option.description)), sx: { alignItems: "flex-start", m: 0, width: "100%" } })); }))), showMediaFormatValidation && /*#__PURE__*/ react.default.createElement(_elementor_ui.Alert, { ref: alertRef, icon: /*#__PURE__*/ react.default.createElement(_elementor_ui.SvgIcon, { color: "error", viewBox: "0 0 24 24" }, /*#__PURE__*/ react.default.createElement("path", { d: "M11.8623 14.7549C12.3665 14.8061 12.7598 15.2322 12.7598 15.75C12.7598 16.2678 12.3665 16.6939 11.8623 16.7451L11.7598 16.75H11.75C11.1977 16.75 10.75 16.3023 10.75 15.75C10.75 15.1977 11.1977 14.75 11.75 14.75H11.7598L11.8623 14.7549Z", fill: "currentColor" }), /*#__PURE__*/ react.default.createElement("path", { d: "M11.75 7C12.1642 7 12.5 7.33579 12.5 7.75V12.75C12.5 13.1642 12.1642 13.5 11.75 13.5C11.3358 13.5 11 13.1642 11 12.75V7.75C11 7.33579 11.3358 7 11.75 7Z", fill: "currentColor" }), /*#__PURE__*/ react.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M11.75 2C17.1348 2 21.5 6.36522 21.5 11.75C21.5 17.1348 17.1348 21.5 11.75 21.5C6.36522 21.5 2 17.1348 2 11.75C2 6.36522 6.36522 2 11.75 2ZM11.75 3.5C7.19365 3.5 3.5 7.19365 3.5 11.75C3.5 16.3063 7.19365 20 11.75 20C16.3063 20 20 16.3063 20 11.75C20 7.19365 16.3063 3.5 11.75 3.5Z", fill: "currentColor" })), sx: { mt: 2, ml: 1, backgroundColor: "transparent", p: 0 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.primary" }, /*#__PURE__*/ react.default.createElement("strong", null, (0, _wordpress_i18n.__)("Note:", "elementor")), " ", (0, _wordpress_i18n.__)("To export a ZIP, go to Edit Content, choose 'Link to Media', then Export as ZIP.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), (0, _wordpress_i18n.__)("Or, save this template to the cloud instead.", "elementor"))))); }())); } KitContentCustomizationDialog.propTypes = { open: import_prop_types$82.default.bool.isRequired, handleClose: import_prop_types$82.default.func.isRequired, handleSaveChanges: import_prop_types$82.default.func.isRequired, isCloudKitsEligible: import_prop_types$82.default.bool, showMediaFormatValidation: import_prop_types$82.default.bool }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/classes-variables-section.js init_slicedToArray(); var SubSettingRow = function SubSettingRow(_ref) { var label = _ref.label; var checked = _ref.checked; var _onChange = _ref.onChange; var _ref$disabled = _ref.disabled; var disabled = _ref$disabled === void 0 ? false : _ref$disabled; var _ref$limitExceeded = _ref.limitExceeded; var limitExceeded = _ref$limitExceeded === void 0 ? false : _ref$limitExceeded; var _ref$overLimitCount = _ref.overLimitCount; var overLimitCount = _ref$overLimitCount === void 0 ? 0 : _ref$overLimitCount; var onReviewClick = _ref.onReviewClick; var _ref$overrideAll = _ref.overrideAll; var overrideAll = _ref$overrideAll === void 0 ? false : _ref$overrideAll; var onOverrideAllChange = _ref.onOverrideAllChange; var _ref$showOverrideOpti = _ref.showOverrideOption; var showOverrideOption = _ref$showOverrideOpti === void 0 ? false : _ref$showOverrideOpti; var _ref$notExported = _ref.notExported; if (_ref$notExported === void 0 ? false : _ref$notExported) return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", px: 1.25 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.primary" }, label), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.secondary" }, (0, _wordpress_i18n.__)("Not exported", "elementor"))); return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", px: 1.25 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", alignItems: "center", spacing: 1, sx: { flex: 1 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.primary" }, label), limitExceeded && overLimitCount > 0 && /*#__PURE__*/ react.default.createElement(_elementor_ui.Chip, { label: "".concat(overLimitCount, " ").concat((0, _wordpress_i18n.__)("over limit", "elementor")), size: "tiny", sx: { height: 20, borderColor: "warning.main", color: "warning.main", backgroundColor: "transparent", "& .MuiChip-label": { px: .75, fontSize: 12 } }, variant: "outlined" }), limitExceeded && onReviewClick && /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { component: "button", variant: "body2", color: "info.main", onClick: onReviewClick, sx: { display: "flex", alignItems: "center", gap: .5, textDecoration: "none", "&:hover": { textDecoration: "underline" } } }, (0, _wordpress_i18n.__)("Review", "elementor"), /*#__PURE__*/ react.default.createElement(_elementor_icons.ExternalLinkIcon, { sx: { fontSize: 16 } }))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", alignItems: "center", spacing: 1 }, showOverrideOption && limitExceeded && /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", alignItems: "center", spacing: .5 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControlLabel, { control: /*#__PURE__*/ react.default.createElement(_elementor_ui.Checkbox, { checked: overrideAll, onChange: function onChange(e) { return onOverrideAllChange === null || onOverrideAllChange === void 0 ? void 0 : onOverrideAllChange(e.target.checked); }, color: "info", size: "small", sx: { p: 0 } }), label: (0, _wordpress_i18n.__)("Override all", "elementor"), sx: { gap: 1, mr: 0, "& .MuiFormControlLabel-label": { fontSize: 14 } } }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Tooltip, { title: (0, _wordpress_i18n.__)("This will delete all existing items and replace them with the imported ones", "elementor"), placement: "top", arrow: true }, /*#__PURE__*/ react.default.createElement(_elementor_icons.AlertTriangleFilledIcon, { sx: { fontSize: 16, color: "warning.main", cursor: "pointer" } }))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Switch, { checked, onChange: function onChange(e, isChecked) { return _onChange === null || _onChange === void 0 ? void 0 : _onChange(isChecked); }, color: "info", size: "medium", disabled: disabled || limitExceeded && !overrideAll }))); }; SubSettingRow.propTypes = { label: import_prop_types$82.default.string.isRequired, checked: import_prop_types$82.default.bool, onChange: import_prop_types$82.default.func, disabled: import_prop_types$82.default.bool, limitExceeded: import_prop_types$82.default.bool, overLimitCount: import_prop_types$82.default.number, onReviewClick: import_prop_types$82.default.func, overrideAll: import_prop_types$82.default.bool, onOverrideAllChange: import_prop_types$82.default.func, showOverrideOption: import_prop_types$82.default.bool, notExported: import_prop_types$82.default.bool }; function ClassesVariablesSection(_ref2) { var _settings$classesOver; var _settings$variablesOv; var _settings$classes; var _settings$variables; var settings = _ref2.settings; var onSettingChange = _ref2.onSettingChange; var _ref2$isImport = _ref2.isImport; var isImport = _ref2$isImport === void 0 ? false : _ref2$isImport; var _ref2$classesExported = _ref2.classesExported; var classesExported = _ref2$classesExported === void 0 ? true : _ref2$classesExported; var _ref2$variablesExport = _ref2.variablesExported; var variablesExported = _ref2$variablesExport === void 0 ? true : _ref2$variablesExport; var _ref2$classesLimitExc = _ref2.classesLimitExceeded; var classesLimitExceeded = _ref2$classesLimitExc === void 0 ? false : _ref2$classesLimitExc; var _ref2$variablesLimitE = _ref2.variablesLimitExceeded; var variablesLimitExceeded = _ref2$variablesLimitE === void 0 ? false : _ref2$variablesLimitE; var _ref2$classesOverLimi = _ref2.classesOverLimitCount; var classesOverLimitCount = _ref2$classesOverLimi === void 0 ? 0 : _ref2$classesOverLimi; var _ref2$variablesOverLi = _ref2.variablesOverLimitCount; var variablesOverLimitCount = _ref2$variablesOverLi === void 0 ? 0 : _ref2$variablesOverLi; var onClassesReviewClick = _ref2.onClassesReviewClick; var onVariablesReviewClick = _ref2.onVariablesReviewClick; var _ref2$disabled = _ref2.disabled; var disabled = _ref2$disabled === void 0 ? false : _ref2$disabled; var _ref2$notExported = _ref2.notExported; var notExported = _ref2$notExported === void 0 ? false : _ref2$notExported; var _useState2 = _slicedToArray((0, react.useState)((_settings$classesOver = settings.classesOverrideAll) !== null && _settings$classesOver !== void 0 ? _settings$classesOver : false), 2); var classesOverrideAll = _useState2[0]; var setClassesOverrideAll = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)((_settings$variablesOv = settings.variablesOverrideAll) !== null && _settings$variablesOv !== void 0 ? _settings$variablesOv : false), 2); var variablesOverrideAll = _useState4[0]; var setVariablesOverrideAll = _useState4[1]; var hasLimitWarning = isImport && (classesLimitExceeded || variablesLimitExceeded); var classesNotExported = isImport && !classesExported; var variablesNotExported = isImport && !variablesExported; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { mb: 3, border: 1, borderRadius: 1, borderColor: "action.focus", p: 2.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 2.5 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h6" }, (0, _wordpress_i18n.__)("Classes & variables", "elementor"))), hasLimitWarning && !notExported && /*#__PURE__*/ react.default.createElement(_elementor_ui.Alert, { severity: "warning", icon: /*#__PURE__*/ react.default.createElement(_elementor_icons.AlertTriangleFilledIcon, { sx: { color: "warning.main" } }), sx: { alignItems: "center", backgroundColor: "warning.background", "& .MuiAlert-message": { display: "flex", alignItems: "center", gap: .75 } } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", component: "span", sx: { fontWeight: 500 }, color: "text.secondary" }, (0, _wordpress_i18n.__)("Import limit reached.", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", component: "span", color: "text.secondary" }, (0, _wordpress_i18n.__)("To resolve this, review existing items or choose to override", "elementor"))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 1.5 }, /*#__PURE__*/ react.default.createElement(SubSettingRow, { label: (0, _wordpress_i18n.__)("Classes", "elementor"), checked: (_settings$classes = settings.classes) !== null && _settings$classes !== void 0 ? _settings$classes : false, onChange: function onChange(isChecked) { return onSettingChange("classes", isChecked); }, disabled, limitExceeded: isImport && classesLimitExceeded && !classesNotExported, overLimitCount: classesOverLimitCount, onReviewClick: onClassesReviewClick, overrideAll: classesOverrideAll, onOverrideAllChange: function onOverrideAllChange(checked) { setClassesOverrideAll(checked); onSettingChange("classesOverrideAll", checked); }, showOverrideOption: isImport && !classesNotExported, notExported: classesNotExported }), /*#__PURE__*/ react.default.createElement(SubSettingRow, { label: (0, _wordpress_i18n.__)("Variables", "elementor"), checked: (_settings$variables = settings.variables) !== null && _settings$variables !== void 0 ? _settings$variables : false, onChange: function onChange(isChecked) { return onSettingChange("variables", isChecked); }, disabled, limitExceeded: isImport && variablesLimitExceeded && !variablesNotExported, overLimitCount: variablesOverLimitCount, onReviewClick: onVariablesReviewClick, overrideAll: variablesOverrideAll, onOverrideAllChange: function onOverrideAllChange(checked) { setVariablesOverrideAll(checked); onSettingChange("variablesOverrideAll", checked); }, showOverrideOption: isImport && !variablesNotExported, notExported: variablesNotExported })))); } ClassesVariablesSection.propTypes = { settings: import_prop_types$82.default.shape({ classes: import_prop_types$82.default.bool, variables: import_prop_types$82.default.bool, classesOverrideAll: import_prop_types$82.default.bool, variablesOverrideAll: import_prop_types$82.default.bool }).isRequired, onSettingChange: import_prop_types$82.default.func.isRequired, isImport: import_prop_types$82.default.bool, classesExported: import_prop_types$82.default.bool, variablesExported: import_prop_types$82.default.bool, classesLimitExceeded: import_prop_types$82.default.bool, variablesLimitExceeded: import_prop_types$82.default.bool, classesOverLimitCount: import_prop_types$82.default.number, variablesOverLimitCount: import_prop_types$82.default.number, onClassesReviewClick: import_prop_types$82.default.func, onVariablesReviewClick: import_prop_types$82.default.func, disabled: import_prop_types$82.default.bool, notExported: import_prop_types$82.default.bool }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/override-confirmation-dialog.js var getDialogContent = function getDialogContent(type) { switch (type) { case "both": return { title: (0, _wordpress_i18n.__)("Override all classes and variables?", "elementor"), description: (0, _wordpress_i18n.__)("This will delete all existing classes and variables and replace them with the imported ones. This action cannot be undone.", "elementor") }; case "variables": return { title: (0, _wordpress_i18n.__)("Override all variables?", "elementor"), description: (0, _wordpress_i18n.__)("This will delete all existing variables and replace them with the imported ones. This action cannot be undone.", "elementor") }; default: return { title: (0, _wordpress_i18n.__)("Override all classes?", "elementor"), description: (0, _wordpress_i18n.__)("This will delete all existing classes and replace them with the imported ones. This action cannot be undone.", "elementor") }; } }; function OverrideConfirmationDialog(_ref) { var open = _ref.open; var onClose = _ref.onClose; var onConfirm = _ref.onConfirm; var _ref$type = _ref.type; var _getDialogContent = getDialogContent(_ref$type === void 0 ? "classes" : _ref$type); var title = _getDialogContent.title; var description = _getDialogContent.description; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Dialog, { open, onClose, maxWidth: "xs", fullWidth: true }, /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogContent, { sx: { pt: 2, pb: 1.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 1.5 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", justifyContent: "space-between", alignItems: "flex-start" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", spacing: 1.5, alignItems: "flex-start", sx: { flex: 1 } }, /*#__PURE__*/ react.default.createElement(_elementor_icons.AlertTriangleFilledIcon, { sx: { color: "warning.dark", fontSize: 24, flexShrink: 0 } }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle1", sx: { fontWeight: 500 } }, title)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { onClick: onClose, sx: { minWidth: "auto", p: .5, color: "text.primary" } }, /*#__PURE__*/ react.default.createElement(_elementor_icons.XIcon, { sx: { fontSize: 20 } }))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.secondary", sx: { pr: 1 } }, description))), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogActions, { sx: { px: 3, pb: 2 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { onClick: onClose, color: "secondary", variant: "text" }, (0, _wordpress_i18n.__)("Cancel", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { onClick: onConfirm, variant: "contained", sx: { color: "white", backgroundColor: "warning.main", "&:hover": { backgroundColor: "warning.dark" } } }, (0, _wordpress_i18n.__)("Save and override", "elementor")))); } OverrideConfirmationDialog.propTypes = { open: import_prop_types$82.default.bool.isRequired, onClose: import_prop_types$82.default.func.isRequired, onConfirm: import_prop_types$82.default.func.isRequired, type: import_prop_types$82.default.oneOf([ "classes", "variables", "both" ]) }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/hooks/use-tab-focus.js function useTabFocus(callback) { (0, react.useEffect)(function() { var handleVisibilityChange = function handleVisibilityChange() { if ("visible" === document.visibilityState) callback(); }; document.addEventListener("visibilitychange", handleVisibilityChange); return function() { return document.removeEventListener("visibilitychange", handleVisibilityChange); }; }, [callback]); } //#endregion //#region app/modules/import-export-customization/assets/js/shared/hooks/use-classes-variables-limits.js init_asyncToGenerator(); init_slicedToArray(); var DEFAULT_CLASSES_LIMIT = 100; var DEFAULT_VARIABLES_LIMIT = 100; function getLimitsFromConfig() { var _window$elementorAppC; var _config$limits$classe; var _config$limits; var _config$limits$variab; var _config$limits2; var config = (_window$elementorAppC = window.elementorAppConfig) === null || _window$elementorAppC === void 0 ? void 0 : _window$elementorAppC["import-export-customization"]; return { classes: (_config$limits$classe = config === null || config === void 0 || (_config$limits = config.limits) === null || _config$limits === void 0 ? void 0 : _config$limits.classes) !== null && _config$limits$classe !== void 0 ? _config$limits$classe : DEFAULT_CLASSES_LIMIT, variables: (_config$limits$variab = config === null || config === void 0 || (_config$limits2 = config.limits) === null || _config$limits2 === void 0 ? void 0 : _config$limits2.variables) !== null && _config$limits$variab !== void 0 ? _config$limits$variab : DEFAULT_VARIABLES_LIMIT }; } function useClassesVariablesLimits(_ref) { var open = _ref.open; var isImport = _ref.isImport; var _useState2 = _slicedToArray((0, react.useState)(0), 2); var existingClassesCount = _useState2[0]; var setExistingClassesCount = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(0), 2); var existingVariablesCount = _useState4[0]; var setExistingVariablesCount = _useState4[1]; var _useState6 = _slicedToArray((0, react.useState)(false), 2); var isLoading = _useState6[0]; var setIsLoading = _useState6[1]; var _useState8 = _slicedToArray((0, react.useState)(null), 2); var error = _useState8[0]; var setError = _useState8[1]; var limits = (0, react.useMemo)(function() { return getLimitsFromConfig(); }, []); var fetchCounts = (0, react.useCallback)(/*#__PURE__*/ _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee() { var _window$wpApiSettings; var _window$wpApiSettings2; var baseUrl; var nonce; var _yield$Promise$all; var _yield$Promise$all2; var classesResponse; var variablesResponse; var classesData; var classesCount; var _variablesData$data; var variablesData; var variablesCount; var _t; return import_regenerator$1.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: if (!(!open || !isImport)) { _context.next = 1; break; } return _context.abrupt("return"); case 1: setIsLoading(true); setError(null); _context.prev = 2; baseUrl = ((_window$wpApiSettings = window.wpApiSettings) === null || _window$wpApiSettings === void 0 ? void 0 : _window$wpApiSettings.root) || "/wp-json/"; nonce = ((_window$wpApiSettings2 = window.wpApiSettings) === null || _window$wpApiSettings2 === void 0 ? void 0 : _window$wpApiSettings2.nonce) || ""; _context.next = 3; return Promise.all([fetch("".concat(baseUrl, "elementor/v1/global-classes"), { headers: { "X-WP-Nonce": nonce } }), fetch("".concat(baseUrl, "elementor/v1/variables/list"), { headers: { "X-WP-Nonce": nonce } })]); case 3: _yield$Promise$all = _context.sent; _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2); classesResponse = _yield$Promise$all2[0]; variablesResponse = _yield$Promise$all2[1]; if (!classesResponse.ok) { _context.next = 5; break; } _context.next = 4; return classesResponse.json(); case 4: classesData = _context.sent; classesCount = Object.keys((classesData === null || classesData === void 0 ? void 0 : classesData.data) || {}).length; setExistingClassesCount(classesCount); case 5: if (!variablesResponse.ok) { _context.next = 7; break; } _context.next = 6; return variablesResponse.json(); case 6: variablesData = _context.sent; variablesCount = (variablesData === null || variablesData === void 0 || (_variablesData$data = variablesData.data) === null || _variablesData$data === void 0 ? void 0 : _variablesData$data.total) || 0; setExistingVariablesCount(variablesCount); case 7: _context.next = 9; break; case 8: _context.prev = 8; _t = _context["catch"](2); setError(_t); case 9: _context.prev = 9; setIsLoading(false); return _context.finish(9); case 10: case "end": return _context.stop(); } }, _callee, null, [[ 2, 8, 9, 10 ]]); })), [open, isImport]); (0, react.useEffect)(function() { fetchCounts(); }, [fetchCounts]); useTabFocus(fetchCounts); var calculateLimitInfo = (0, react.useCallback)(function(existingCount, importedCount, limit) { var totalAfterImport = existingCount + importedCount; var isExceeded = totalAfterImport > limit; return { isExceeded, overLimitCount: isExceeded ? totalAfterImport - limit : 0, totalAfterImport }; }, []); return { existingClassesCount, existingVariablesCount, classesLimit: limits.classes, variablesLimit: limits.variables, isLoading, error, calculateLimitInfo, refetch: fetchCounts }; } //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/kit-settings-customization-dialog.js init_defineProperty$1(); init_asyncToGenerator(); init_slicedToArray(); init_apps_event_tracking(); function ownKeys$20(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; } __name(ownKeys$20, "ownKeys"); function _objectSpread$19(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$20(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$20(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$19, "_objectSpread"); function isExperimentActive$1(experimentName) { var _elementorCommon; return !!((_elementorCommon = elementorCommon) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.config) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.experimentalFeatures) !== null && _elementorCommon !== void 0 && _elementorCommon[experimentName]); } __name(isExperimentActive$1, "isExperimentActive"); function isClassesFeatureActive$1() { return isExperimentActive$1("e_atomic_elements"); } __name(isClassesFeatureActive$1, "isClassesFeatureActive"); function isVariablesFeatureActive$1() { return isExperimentActive$1("e_atomic_elements"); } __name(isVariablesFeatureActive$1, "isVariablesFeatureActive"); var transformAnalyticsData = function transformAnalyticsData(payload) { var transformed = {}; for (var _i = 0, _Object$entries = Object.entries(payload); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2); var key = _Object$entries$_i[0]; var value = _Object$entries$_i[1]; transformed[key] = transformValueForAnalytics(key, value, []); } return transformed; }; function fetchManagerUrl(_x) { return _fetchManagerUrl.apply(this, arguments); } function _fetchManagerUrl() { _fetchManagerUrl = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee2(panelId) { var _window$wpApiSettings; var _window$wpApiSettings2; var _data$data; var baseUrl; var nonce; var response; var data; return import_regenerator$1.default.wrap(function(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: baseUrl = ((_window$wpApiSettings = window.wpApiSettings) === null || _window$wpApiSettings === void 0 ? void 0 : _window$wpApiSettings.root) || "/wp-json/"; nonce = ((_window$wpApiSettings2 = window.wpApiSettings) === null || _window$wpApiSettings2 === void 0 ? void 0 : _window$wpApiSettings2.nonce) || ""; _context2.next = 1; return fetch("".concat(baseUrl, "elementor/v1/import-export-customization/manager-url?panel=").concat(panelId), { headers: { "X-WP-Nonce": nonce } }); case 1: response = _context2.sent; if (response.ok) { _context2.next = 2; break; } throw new Error("Failed to fetch manager URL"); case 2: _context2.next = 3; return response.json(); case 3: data = _context2.sent; return _context2.abrupt("return", ((_data$data = data.data) === null || _data$data === void 0 ? void 0 : _data$data.url) || data.url); case 4: case "end": return _context2.stop(); } }, _callee2); })); return _fetchManagerUrl.apply(this, arguments); } function getInitialState(contextData, isImport) { var _data$uploadedData; var data = contextData.data; var initialState = data.includes.includes("settings"); if (isImport && !(contextData !== null && contextData !== void 0 && contextData.isOldExport) && !(data !== null && data !== void 0 && (_data$uploadedData = data.uploadedData) !== null && _data$uploadedData !== void 0 && (_data$uploadedData = _data$uploadedData.manifest) !== null && _data$uploadedData !== void 0 && (_data$uploadedData = _data$uploadedData["site-settings"]) !== null && _data$uploadedData !== void 0 && _data$uploadedData.theme)) initialState = false; return initialState; } function isExported(contextData) { var _contextData$data2; if (contextData !== null && contextData !== void 0 && contextData.isOldExport) { var _contextData$data; return contextData === null || contextData === void 0 || (_contextData$data = contextData.data) === null || _contextData$data === void 0 || (_contextData$data = _contextData$data.uploadedData) === null || _contextData$data === void 0 || (_contextData$data = _contextData$data.manifest) === null || _contextData$data === void 0 ? void 0 : _contextData$data.theme; } return contextData === null || contextData === void 0 || (_contextData$data2 = contextData.data) === null || _contextData$data2 === void 0 || (_contextData$data2 = _contextData$data2.uploadedData) === null || _contextData$data2 === void 0 || (_contextData$data2 = _contextData$data2.manifest) === null || _contextData$data2 === void 0 || (_contextData$data2 = _contextData$data2["site-settings"]) === null || _contextData$data2 === void 0 ? void 0 : _contextData$data2.theme; } function isClassesExported(contextData) { var _contextData$data3; return !!(contextData !== null && contextData !== void 0 && (_contextData$data3 = contextData.data) !== null && _contextData$data3 !== void 0 && (_contextData$data3 = _contextData$data3.uploadedData) !== null && _contextData$data3 !== void 0 && (_contextData$data3 = _contextData$data3.manifest) !== null && _contextData$data3 !== void 0 && (_contextData$data3 = _contextData$data3["site-settings"]) !== null && _contextData$data3 !== void 0 && _contextData$data3.classes); } function isVariablesExported(contextData) { var _contextData$data4; return !!(contextData !== null && contextData !== void 0 && (_contextData$data4 = contextData.data) !== null && _contextData$data4 !== void 0 && (_contextData$data4 = _contextData$data4.uploadedData) !== null && _contextData$data4 !== void 0 && (_contextData$data4 = _contextData$data4.manifest) !== null && _contextData$data4 !== void 0 && (_contextData$data4 = _contextData$data4["site-settings"]) !== null && _contextData$data4 !== void 0 && _contextData$data4.variables); } function getClassesVariablesInitialState(contextData, isImport) { var _contextData$data5; var includesSettings = contextData === null || contextData === void 0 || (_contextData$data5 = contextData.data) === null || _contextData$data5 === void 0 || (_contextData$data5 = _contextData$data5.includes) === null || _contextData$data5 === void 0 ? void 0 : _contextData$data5.includes("settings"); return { classes: includesSettings && (!isImport || isClassesExported(contextData)), variables: includesSettings && (!isImport || isVariablesExported(contextData)), classesOverrideAll: false, variablesOverrideAll: false }; } function KitSettingsCustomizationDialog(_ref) { var _useContextDetection; var _contextData$data7; var _contextData$data8; var _contextData$data9; var _contextData$data0; var _contextData$data$upl; var _contextData$data1; var _contextData$data$upl2; var _contextData$data10; var _contextData$data11; var _settings$classes; var _settings$variables; var _settings$classesOver; var _settings$variablesOv; var open = _ref.open; var handleClose = _ref.handleClose; var handleSaveChanges = _ref.handleSaveChanges; var _ref2 = (_useContextDetection = useContextDetection()) !== null && _useContextDetection !== void 0 ? _useContextDetection : {}; var _ref2$isImport = _ref2.isImport; var isImport = _ref2$isImport === void 0 ? false : _ref2$isImport; var _ref2$contextData = _ref2.contextData; var contextData = _ref2$contextData === void 0 ? {} : _ref2$contextData; var _contextData$data6 = contextData.data; var data = _contextData$data6 === void 0 ? null : _contextData$data6; var showClassesSection = isClassesFeatureActive$1(); var showVariablesSection = isVariablesFeatureActive$1(); var showClassesVariablesSection = showClassesSection || showVariablesSection; var initialState = (0, react.useMemo)(function() { return getInitialState(contextData, isImport); }, [ contextData === null || contextData === void 0 || (_contextData$data7 = contextData.data) === null || _contextData$data7 === void 0 ? void 0 : _contextData$data7.includes, contextData === null || contextData === void 0 ? void 0 : contextData.isOldExport, contextData === null || contextData === void 0 || (_contextData$data8 = contextData.data) === null || _contextData$data8 === void 0 || (_contextData$data8 = _contextData$data8.uploadedData) === null || _contextData$data8 === void 0 ? void 0 : _contextData$data8.manifest, isImport ]); var classesVariablesInitialState = (0, react.useMemo)(function() { return getClassesVariablesInitialState(contextData, isImport); }, [ contextData === null || contextData === void 0 || (_contextData$data9 = contextData.data) === null || _contextData$data9 === void 0 ? void 0 : _contextData$data9.includes, contextData === null || contextData === void 0 || (_contextData$data0 = contextData.data) === null || _contextData$data0 === void 0 || (_contextData$data0 = _contextData$data0.uploadedData) === null || _contextData$data0 === void 0 ? void 0 : _contextData$data0.manifest, isImport ]); var _useClassesVariablesL = useClassesVariablesLimits({ open, isImport }); var existingClassesCount = _useClassesVariablesL.existingClassesCount; var existingVariablesCount = _useClassesVariablesL.existingVariablesCount; var classesLimit = _useClassesVariablesL.classesLimit; var variablesLimit = _useClassesVariablesL.variablesLimit; var calculateLimitInfo = _useClassesVariablesL.calculateLimitInfo; var importedClassesCount = (_contextData$data$upl = contextData === null || contextData === void 0 || (_contextData$data1 = contextData.data) === null || _contextData$data1 === void 0 || (_contextData$data1 = _contextData$data1.uploadedData) === null || _contextData$data1 === void 0 || (_contextData$data1 = _contextData$data1.manifest) === null || _contextData$data1 === void 0 || (_contextData$data1 = _contextData$data1["site-settings"]) === null || _contextData$data1 === void 0 ? void 0 : _contextData$data1.classesCount) !== null && _contextData$data$upl !== void 0 ? _contextData$data$upl : 0; var importedVariablesCount = (_contextData$data$upl2 = contextData === null || contextData === void 0 || (_contextData$data10 = contextData.data) === null || _contextData$data10 === void 0 || (_contextData$data10 = _contextData$data10.uploadedData) === null || _contextData$data10 === void 0 || (_contextData$data10 = _contextData$data10.manifest) === null || _contextData$data10 === void 0 || (_contextData$data10 = _contextData$data10["site-settings"]) === null || _contextData$data10 === void 0 ? void 0 : _contextData$data10.variablesCount) !== null && _contextData$data$upl2 !== void 0 ? _contextData$data$upl2 : 0; var classesLimitInfo = (0, react.useMemo)(function() { return calculateLimitInfo(existingClassesCount, importedClassesCount, classesLimit); }, [ existingClassesCount, importedClassesCount, classesLimit, calculateLimitInfo ]); var variablesLimitInfo = (0, react.useMemo)(function() { return calculateLimitInfo(existingVariablesCount, importedVariablesCount, variablesLimit); }, [ existingVariablesCount, importedVariablesCount, variablesLimit, calculateLimitInfo ]); var _useState2 = _slicedToArray((0, react.useState)(function() { if (data.customization.settings) return _objectSpread$19({}, data.customization.settings); return _objectSpread$19({ theme: initialState }, showClassesVariablesSection ? classesVariablesInitialState : {}); }), 2); var settings = _useState2[0]; var setSettings = _useState2[1]; (0, react.useEffect)(function() { if (open) if (data.customization.settings) setSettings(_objectSpread$19({}, data.customization.settings)); else setSettings(_objectSpread$19({ theme: initialState }, showClassesVariablesSection ? classesVariablesInitialState : {})); }, [open]); (0, react.useEffect)(function() { if (open) AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitExportCustomizationEdit); }, [open]); var handleToggleChange = function handleToggleChange(settingKey) { setSettings(function(prev) { return _objectSpread$19(_objectSpread$19({}, prev), {}, _defineProperty$1({}, settingKey, !prev[settingKey])); }); }; var handleClassesVariablesChange = function handleClassesVariablesChange(settingKey, value) { setSettings(function(prev) { return _objectSpread$19(_objectSpread$19({}, prev), {}, _defineProperty$1({}, settingKey, value)); }); }; var handleReviewClick = (0, react.useCallback)(/*#__PURE__*/ function() { var _ref3 = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee(panelId) { var transformedAnalytics; var url; var _t; return import_regenerator$1.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: transformedAnalytics = transformAnalyticsData(settings); handleSaveChanges("settings", settings, true, transformedAnalytics); handleClose(); _context.prev = 1; _context.next = 2; return fetchManagerUrl(panelId); case 2: url = _context.sent; window.open(url, "_blank"); _context.next = 4; break; case 3: _context.prev = 3; _t = _context["catch"](1); console.error("Failed to open ".concat(panelId, ":"), _t); case 4: case "end": return _context.stop(); } }, _callee, null, [[1, 3]]); })); return function(_x2) { return _ref3.apply(this, arguments); }; }(), [ settings, handleSaveChanges, handleClose ]); var handleClassesReviewClick = (0, react.useCallback)(function() { handleReviewClick("global-classes-manager"); }, [handleReviewClick]); var handleVariablesReviewClick = (0, react.useCallback)(function() { handleReviewClick("variables-manager"); }, [handleReviewClick]); var classesNotExported = isImport && !isClassesExported(contextData); var variablesNotExported = isImport && !isVariablesExported(contextData); var classesVariablesNotExported = classesNotExported && variablesNotExported; var classesLimitExceeded = isImport && classesLimitInfo.isExceeded; var variablesLimitExceeded = isImport && variablesLimitInfo.isExceeded; var classesOverLimitCount = classesLimitInfo.overLimitCount; var variablesOverLimitCount = variablesLimitInfo.overLimitCount; var _useState4 = _slicedToArray((0, react.useState)({ open: false, type: "classes" }), 2); var confirmationDialog = _useState4[0]; var setConfirmationDialog = _useState4[1]; var performSave = (0, react.useCallback)(function() { handleSaveChanges("settings", settings, true, transformAnalyticsData(settings)); handleClose(); }, [ settings, handleSaveChanges, handleClose ]); var handleSaveClick = (0, react.useCallback)(function() { var classesOverrideEnabled = settings.classesOverrideAll && settings.classes; var variablesOverrideEnabled = settings.variablesOverrideAll && settings.variables; if (classesOverrideEnabled && variablesOverrideEnabled) { setConfirmationDialog({ open: true, type: "both" }); return; } if (classesOverrideEnabled) { setConfirmationDialog({ open: true, type: "classes" }); return; } if (variablesOverrideEnabled) { setConfirmationDialog({ open: true, type: "variables" }); return; } performSave(); }, [settings, performSave]); var handleConfirmationClose = (0, react.useCallback)(function() { setConfirmationDialog({ open: false, type: "" }); }, []); var handleConfirmationConfirm = (0, react.useCallback)(function() { setConfirmationDialog({ open: false, type: "" }); performSave(); }, [performSave]); return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(KitCustomizationDialog, { open, title: (0, _wordpress_i18n.__)("Edit settings & configurations", "elementor"), handleClose, handleSaveChanges: handleSaveClick }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { gap: 2 }, (contextData === null || contextData === void 0 ? void 0 : contextData.isOldElementorVersion) && /*#__PURE__*/ react.default.createElement(UpgradeVersionBanner, null), isImport && !isExported(contextData) ? /*#__PURE__*/ react.default.createElement(SettingSection, { title: (0, _wordpress_i18n.__)("Theme", "elementor"), settingKey: "theme", notExported: true }) : /*#__PURE__*/ react.default.createElement(SettingSection, { key: "theme", checked: settings.theme, title: (0, _wordpress_i18n.__)("Theme", "elementor"), description: (0, _wordpress_i18n.__)("Only public WordPress themes are supported", "elementor"), settingKey: "theme", onSettingChange: handleToggleChange, disabled: isImport && !(contextData !== null && contextData !== void 0 && (_contextData$data11 = contextData.data) !== null && _contextData$data11 !== void 0 && (_contextData$data11 = _contextData$data11.uploadedData) !== null && _contextData$data11 !== void 0 && (_contextData$data11 = _contextData$data11.manifest) !== null && _contextData$data11 !== void 0 && (_contextData$data11 = _contextData$data11["site-settings"]) !== null && _contextData$data11 !== void 0 && _contextData$data11.theme) }), showClassesVariablesSection && /*#__PURE__*/ react.default.createElement(ClassesVariablesSection, { settings: { classes: (_settings$classes = settings.classes) !== null && _settings$classes !== void 0 ? _settings$classes : false, variables: (_settings$variables = settings.variables) !== null && _settings$variables !== void 0 ? _settings$variables : false, classesOverrideAll: (_settings$classesOver = settings.classesOverrideAll) !== null && _settings$classesOver !== void 0 ? _settings$classesOver : false, variablesOverrideAll: (_settings$variablesOv = settings.variablesOverrideAll) !== null && _settings$variablesOv !== void 0 ? _settings$variablesOv : false }, onSettingChange: handleClassesVariablesChange, isImport, classesExported: !classesNotExported && showClassesSection, variablesExported: !variablesNotExported && showVariablesSection, classesLimitExceeded, variablesLimitExceeded, classesOverLimitCount, variablesOverLimitCount, onClassesReviewClick: handleClassesReviewClick, onVariablesReviewClick: handleVariablesReviewClick, notExported: classesVariablesNotExported }))), /*#__PURE__*/ react.default.createElement(OverrideConfirmationDialog, { open: confirmationDialog.open, onClose: handleConfirmationClose, onConfirm: handleConfirmationConfirm, type: confirmationDialog.type })); } KitSettingsCustomizationDialog.propTypes = { open: import_prop_types$82.default.bool.isRequired, handleClose: import_prop_types$82.default.func.isRequired, handleSaveChanges: import_prop_types$82.default.func.isRequired }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/kit-content-data.js var kitContentData = [ { type: "content", data: { title: (0, _wordpress_i18n.__)("Content", "elementor"), features: { open: [ (0, _wordpress_i18n.__)("Elementor Pages", "elementor"), (0, _wordpress_i18n.__)("Elementor Posts", "elementor"), (0, _wordpress_i18n.__)("WP Pages", "elementor"), (0, _wordpress_i18n.__)("WP Posts", "elementor"), (0, _wordpress_i18n.__)("WP Menus", "elementor"), (0, _wordpress_i18n.__)("Custom Post Types", "elementor") ] } }, dialog: KitContentCustomizationDialog, required: false }, { type: "templates", data: { title: (0, _wordpress_i18n.__)("Templates", "elementor"), features: { open: [(0, _wordpress_i18n.__)("Saved Templates", "elementor")], locked: [ (0, _wordpress_i18n.__)("Headers", "elementor"), (0, _wordpress_i18n.__)("Footers", "elementor"), (0, _wordpress_i18n.__)("Archives", "elementor"), (0, _wordpress_i18n.__)("Single Posts", "elementor"), (0, _wordpress_i18n.__)("Single Pages", "elementor"), (0, _wordpress_i18n.__)("Search Results", "elementor"), (0, _wordpress_i18n.__)("404 Error Page", "elementor"), (0, _wordpress_i18n.__)("Popups", "elementor"), (0, _wordpress_i18n.__)("Global widgets", "elementor") ], tooltip: (0, _wordpress_i18n.__)("To import or export these components, you’ll need Elementor Pro.", "elementor") } }, dialog: null, required: false }, { type: "settings", data: { title: (0, _wordpress_i18n.__)("Settings & configurations", "elementor"), features: { open: [ (0, _wordpress_i18n.__)("Classes", "elementor"), (0, _wordpress_i18n.__)("Variables", "elementor"), (0, _wordpress_i18n.__)("Global Colors", "elementor"), (0, _wordpress_i18n.__)("Global Fonts", "elementor"), (0, _wordpress_i18n.__)("Theme Style Settings", "elementor"), (0, _wordpress_i18n.__)("Layout Settings", "elementor"), (0, _wordpress_i18n.__)("Lightbox Settings", "elementor"), (0, _wordpress_i18n.__)("Background Settings", "elementor"), (0, _wordpress_i18n.__)("Custom Fonts", "elementor"), (0, _wordpress_i18n.__)("Icons", "elementor"), (0, _wordpress_i18n.__)("Code", "elementor") ] } }, dialog: KitSettingsCustomizationDialog, required: false }, { type: "plugins", data: { title: (0, _wordpress_i18n.__)("Plugins", "elementor"), features: { open: [(0, _wordpress_i18n.__)("All plugins are required for this website templates to work", "elementor")] } }, dialog: KitPluginsCustomizationDialog, required: true } ]; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/re-export-banner.js function ReExportBanner() { return /*#__PURE__*/ react.default.createElement(_elementor_ui.Paper, { color: "secondary", elevation: 0, variant: "elevation" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", sx: { alignItems: "center", justifyContent: "space-between", gap: "5px", p: 2.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", sx: { alignItems: "center", gap: "5px" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { component: "i", className: "eicon-info-circle" }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2" }, (0, _wordpress_i18n.__)("This website template was exported from an older version of Elementor. If possible, re-export it with the latest version for better capabilities.", "elementor"))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { href: "http://go.elementor.com/app-import-export-errors-old-kits", variant: "body2", color: "info.light", underline: "hover", target: "_blank", rel: "noopener noreferrer" }, (0, _wordpress_i18n.__)("Learn more", "elementor")))); } //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/kit-parts-selection.js init_slicedToArray(); init_apps_event_tracking(); function isExperimentActive(experimentName) { var _common$config; var common = typeof globalThis !== "undefined" ? globalThis.elementorCommon : void 0; return !!(common !== null && common !== void 0 && (_common$config = common.config) !== null && _common$config !== void 0 && (_common$config = _common$config.experimentalFeatures) !== null && _common$config !== void 0 && _common$config[experimentName]); } function isClassesFeatureActive() { return isExperimentActive("e_atomic_elements"); } function isVariablesFeatureActive() { return isExperimentActive("e_atomic_elements"); } function KitPartsSelection(_ref) { var _useContextDetection; var _contextData$data$upl; var _contextData$data2; var _contextData$data$upl2; var _contextData$data3; var _contextData$data4; var _contextData$data5; var onCheckboxChange = _ref.onCheckboxChange; var testId = _ref.testId; var handleSaveCustomization = _ref.handleSaveCustomization; var _ref$isCloudKitsEligi = _ref.isCloudKitsEligible; var isCloudKitsEligible = _ref$isCloudKitsEligi === void 0 ? false : _ref$isCloudKitsEligi; var _ref$showMediaFormatV = _ref.showMediaFormatValidation; var showMediaFormatValidation = _ref$showMediaFormatV === void 0 ? false : _ref$showMediaFormatV; var _useState2 = _slicedToArray((0, react.useState)(null), 2); var activeDialog = _useState2[0]; var setActiveDialog = _useState2[1]; var _ref2 = (_useContextDetection = useContextDetection()) !== null && _useContextDetection !== void 0 ? _useContextDetection : {}; var _ref2$isImport = _ref2.isImport; var isImport = _ref2$isImport === void 0 ? false : _ref2$isImport; var _ref2$contextData = _ref2.contextData; var contextData = _ref2$contextData === void 0 ? {} : _ref2$contextData; var _contextData$data = contextData.data; var data = _contextData$data === void 0 ? null : _contextData$data; var showClassesSection = isClassesFeatureActive(); var showVariablesSection = isVariablesFeatureActive(); var _useClassesVariablesL = useClassesVariablesLimits({ open: true, isImport }); var existingClassesCount = _useClassesVariablesL.existingClassesCount; var existingVariablesCount = _useClassesVariablesL.existingVariablesCount; var classesLimit = _useClassesVariablesL.classesLimit; var variablesLimit = _useClassesVariablesL.variablesLimit; var calculateLimitInfo = _useClassesVariablesL.calculateLimitInfo; var importedClassesCount = (_contextData$data$upl = contextData === null || contextData === void 0 || (_contextData$data2 = contextData.data) === null || _contextData$data2 === void 0 || (_contextData$data2 = _contextData$data2.uploadedData) === null || _contextData$data2 === void 0 || (_contextData$data2 = _contextData$data2.manifest) === null || _contextData$data2 === void 0 || (_contextData$data2 = _contextData$data2["site-settings"]) === null || _contextData$data2 === void 0 ? void 0 : _contextData$data2.classesCount) !== null && _contextData$data$upl !== void 0 ? _contextData$data$upl : 0; var importedVariablesCount = (_contextData$data$upl2 = contextData === null || contextData === void 0 || (_contextData$data3 = contextData.data) === null || _contextData$data3 === void 0 || (_contextData$data3 = _contextData$data3.uploadedData) === null || _contextData$data3 === void 0 || (_contextData$data3 = _contextData$data3.manifest) === null || _contextData$data3 === void 0 || (_contextData$data3 = _contextData$data3["site-settings"]) === null || _contextData$data3 === void 0 ? void 0 : _contextData$data3.variablesCount) !== null && _contextData$data$upl2 !== void 0 ? _contextData$data$upl2 : 0; var isClassesExportedInManifest = !!(contextData !== null && contextData !== void 0 && (_contextData$data4 = contextData.data) !== null && _contextData$data4 !== void 0 && (_contextData$data4 = _contextData$data4.uploadedData) !== null && _contextData$data4 !== void 0 && (_contextData$data4 = _contextData$data4.manifest) !== null && _contextData$data4 !== void 0 && (_contextData$data4 = _contextData$data4["site-settings"]) !== null && _contextData$data4 !== void 0 && _contextData$data4.classes); var isVariablesExportedInManifest = !!(contextData !== null && contextData !== void 0 && (_contextData$data5 = contextData.data) !== null && _contextData$data5 !== void 0 && (_contextData$data5 = _contextData$data5.uploadedData) !== null && _contextData$data5 !== void 0 && (_contextData$data5 = _contextData$data5.manifest) !== null && _contextData$data5 !== void 0 && (_contextData$data5 = _contextData$data5["site-settings"]) !== null && _contextData$data5 !== void 0 && _contextData$data5.variables); var classesLimitInfo = (0, react.useMemo)(function() { return calculateLimitInfo(existingClassesCount, importedClassesCount, classesLimit); }, [ existingClassesCount, importedClassesCount, classesLimit, calculateLimitInfo ]); var variablesLimitInfo = (0, react.useMemo)(function() { return calculateLimitInfo(existingVariablesCount, importedVariablesCount, variablesLimit); }, [ existingVariablesCount, importedVariablesCount, variablesLimit, calculateLimitInfo ]); var hasSettingsLimitWarning = isImport && (showClassesSection && isClassesExportedInManifest && classesLimitInfo.isExceeded || showVariablesSection && isVariablesExportedInManifest && variablesLimitInfo.isExceeded); (0, react.useEffect)(function() { if (showMediaFormatValidation && !isImport) setActiveDialog("content"); }, [showMediaFormatValidation, isImport]); var isSiteSettingsExported = function isSiteSettingsExported() { var _contextData$data6; var siteSettings = contextData === null || contextData === void 0 || (_contextData$data6 = contextData.data) === null || _contextData$data6 === void 0 || (_contextData$data6 = _contextData$data6.uploadedData) === null || _contextData$data6 === void 0 || (_contextData$data6 = _contextData$data6.manifest) === null || _contextData$data6 === void 0 ? void 0 : _contextData$data6["site-settings"]; if (!siteSettings) return false; return Object.values(siteSettings).some(Boolean); }; var isContentSettingsExported = function isContentSettingsExported() { var _contextData$data7; var _contextData$data8; var _contextData$data9; var _contextData$data0; var taxonomies = contextData === null || contextData === void 0 || (_contextData$data7 = contextData.data) === null || _contextData$data7 === void 0 || (_contextData$data7 = _contextData$data7.uploadedData) === null || _contextData$data7 === void 0 || (_contextData$data7 = _contextData$data7.manifest) === null || _contextData$data7 === void 0 ? void 0 : _contextData$data7.taxonomies; var content = contextData === null || contextData === void 0 || (_contextData$data8 = contextData.data) === null || _contextData$data8 === void 0 || (_contextData$data8 = _contextData$data8.uploadedData) === null || _contextData$data8 === void 0 || (_contextData$data8 = _contextData$data8.manifest) === null || _contextData$data8 === void 0 ? void 0 : _contextData$data8.content; var wpContent = contextData === null || contextData === void 0 || (_contextData$data9 = contextData.data) === null || _contextData$data9 === void 0 || (_contextData$data9 = _contextData$data9.uploadedData) === null || _contextData$data9 === void 0 || (_contextData$data9 = _contextData$data9.manifest) === null || _contextData$data9 === void 0 ? void 0 : _contextData$data9["wp-content"]; var customPostTypes = contextData === null || contextData === void 0 || (_contextData$data0 = contextData.data) === null || _contextData$data0 === void 0 || (_contextData$data0 = _contextData$data0.uploadedData) === null || _contextData$data0 === void 0 || (_contextData$data0 = _contextData$data0.manifest) === null || _contextData$data0 === void 0 ? void 0 : _contextData$data0["custom-post-type-title"]; return taxonomies || content || wpContent || customPostTypes; }; var isExported = function isExported(item) { var _contextData$data1; switch (item.type) { case "settings": return isSiteSettingsExported(); case "content": return isContentSettingsExported(); default: return contextData === null || contextData === void 0 || (_contextData$data1 = contextData.data) === null || _contextData$data1 === void 0 || (_contextData$data1 = _contextData$data1.uploadedData) === null || _contextData$data1 === void 0 || (_contextData$data1 = _contextData$data1.manifest) === null || _contextData$data1 === void 0 ? void 0 : _contextData$data1[item.type]; } }; var isDisabled = function isDisabled(item) { var _item$data$features; var _contextData$data10; if ((_item$data$features = item.data.features) !== null && _item$data$features !== void 0 && _item$data$features.locked && !elementorAppConfig.hasPro) return true; if (isImport) return !isExported(item) || item.required; return item.required && (contextData === null || contextData === void 0 || (_contextData$data10 = contextData.data) === null || _contextData$data10 === void 0 || (_contextData$data10 = _contextData$data10.includes) === null || _contextData$data10 === void 0 ? void 0 : _contextData$data10.includes(item.type)); }; var isEditDisabled = function isEditDisabled(item) { if (isImport) { var _contextData$data11; var manifestKey = "settings" === item.type ? "site-settings" : item.type; return !(contextData !== null && contextData !== void 0 && (_contextData$data11 = contextData.data) !== null && _contextData$data11 !== void 0 && (_contextData$data11 = _contextData$data11.uploadedData) !== null && _contextData$data11 !== void 0 && (_contextData$data11 = _contextData$data11.manifest) !== null && _contextData$data11 !== void 0 && _contextData$data11[manifestKey]); } return false; }; var getDialogComponent = function getDialogComponent(item) { var _window$elementorModu; var _reg$get; var reg = (_window$elementorModu = window.elementorModules) === null || _window$elementorModu === void 0 || (_window$elementorModu = _window$elementorModu.importExport) === null || _window$elementorModu === void 0 ? void 0 : _window$elementorModu.customizationDialogsRegistry; var registered = reg === null || reg === void 0 || (_reg$get = reg.get) === null || _reg$get === void 0 ? void 0 : _reg$get.call(reg, item.type); return (registered === null || registered === void 0 ? void 0 : registered.component) || item.dialog; }; var renderFeatureDescription = function renderFeatureDescription(item, isLockedFeaturesNoPro) { var _item$data$features2; var _item$data$features3; var _item$data$features4; var featuresText = [ item.data.features.open.join(", "), ((_item$data$features2 = item.data.features) === null || _item$data$features2 === void 0 || (_item$data$features2 = _item$data$features2.locked) === null || _item$data$features2 === void 0 ? void 0 : _item$data$features2.length) > 0 && item.data.features.open.length > 0 ? ", " : "", (_item$data$features3 = item.data.features) === null || _item$data$features3 === void 0 || (_item$data$features3 = _item$data$features3.locked) === null || _item$data$features3 === void 0 ? void 0 : _item$data$features3.join(", ") ].join(""); var description = /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.secondary", sx: { mt: 1, ml: 4 } }, featuresText); return isLockedFeaturesNoPro ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Tooltip, { title: ((_item$data$features4 = item.data.features) === null || _item$data$features4 === void 0 ? void 0 : _item$data$features4.tooltip) || (0, _wordpress_i18n.__)("This feature requires Elementor Pro", "elementor"), arrow: true, placement: "top" }, description) : description; }; var renderCheckboxControl = function renderCheckboxControl(item, disabled) { return /*#__PURE__*/ react.default.createElement(_elementor_ui.FormControlLabel, { control: /*#__PURE__*/ react.default.createElement(_elementor_ui.Checkbox, { color: "info", checked: data.includes.includes(item.type), onChange: function onChange() { return onCheckboxChange(item.type); }, disabled, sx: { p: 0, mx: 1 }, "data-testid": "KitContentDataSelection-".concat(item.type), "data-type": item.type }), label: /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { color: "text.primary", variant: "body1", sx: { fontWeight: 500 } }, item.data.title), sx: { "& .MuiFormControlLabel-label.Mui-disabled": { color: "text.primary" } } }); }; var getSectionEditButton = function getSectionEditButton(item, isLockedFeaturesNoPro) { if (isLockedFeaturesNoPro) return /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", color: "promotion", onClick: function onClick() { AppsEventTracking.sendKitsCloudUpgradeClicked(item.type); window.open("https://go.elementor.com/go-pro-import-export", "_blank"); }, startIcon: /*#__PURE__*/ react.default.createElement("span", { className: "eicon-upgrade-crown" }), sx: { alignSelf: "center" }, "data-type": item.type, disabled: isEditDisabled(item) }, (0, _wordpress_i18n.__)("Upgrade", "elementor")); if (!isImport) return /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { color: "secondary", onClick: function onClick() { return setActiveDialog(item.type); }, sx: { alignSelf: "center" }, "data-type": item.type, disabled: isEditDisabled(item) }, (0, _wordpress_i18n.__)("Edit", "elementor")); return isExported(item) ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { color: "secondary", onClick: function onClick() { return setActiveDialog(item.type); }, sx: { alignSelf: "center" }, "data-type": item.type, disabled: isEditDisabled(item) }, (0, _wordpress_i18n.__)("Edit", "elementor")) : /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.disabled", sx: { alignSelf: "center" } }, (0, _wordpress_i18n.__)("Not exported", "elementor")); }; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 2, "data-testid": testId }, (contextData === null || contextData === void 0 ? void 0 : contextData.isOldExport) && /*#__PURE__*/ react.default.createElement(ReExportBanner, null), (contextData === null || contextData === void 0 ? void 0 : contextData.isOldElementorVersion) && /*#__PURE__*/ react.default.createElement(UpgradeVersionBanner, null), kitContentData.map(function(item) { var _item$data$features5; var isLockedFeaturesNoPro = ((_item$data$features5 = item.data.features) === null || _item$data$features5 === void 0 ? void 0 : _item$data$features5.locked) && !elementorAppConfig.hasPro; var disabled = isDisabled(item); var DialogComponent = getDialogComponent(item); return /*#__PURE__*/ react.default.createElement(react.Fragment, { key: item.type }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { "data-testid": "KitPartsSelectionRow-".concat(item.type), key: item.type, sx: { mb: 3, border: 1, borderRadius: 1, borderColor: "action.focus", p: 2.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "flex-start" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { flex: 1, opacity: isLockedFeaturesNoPro ? .5 : 1 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { display: "flex", alignItems: "center" } }, renderCheckboxControl(item, disabled), "settings" === item.type && hasSettingsLimitWarning && /*#__PURE__*/ react.default.createElement(_elementor_ui.Tooltip, { title: (0, _wordpress_i18n.__)("Limit exceeded. Click 'Edit' to review conflicts or override existing items", "elementor"), placement: "top", arrow: true }, /*#__PURE__*/ react.default.createElement(_elementor_icons.AlertTriangleFilledIcon, { sx: { fontSize: 20, color: "warning.main", ml: .5 }, "aria-hidden": true }))), renderFeatureDescription(item, isLockedFeaturesNoPro)), getSectionEditButton(item, isLockedFeaturesNoPro))), DialogComponent && /*#__PURE__*/ react.default.createElement(DialogComponent, { open: activeDialog === item.type, handleClose: function handleClose() { return setActiveDialog(null); }, data, handleSaveChanges: handleSaveCustomization, isImport, isOldExport: contextData.isOldExport, isOldElementorVersion: contextData.isOldElementorVersion, isCloudKitsEligible, showMediaFormatValidation })); })); } KitPartsSelection.propTypes = { onCheckboxChange: import_prop_types$82.default.func.isRequired, testId: import_prop_types$82.default.string, handleSaveCustomization: import_prop_types$82.default.func.isRequired, isCloudKitsEligible: import_prop_types$82.default.bool, showMediaFormatValidation: import_prop_types$82.default.bool }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/complete-icon.js function CompleteIcon(_ref) { var imageSrc = _ref.imageSrc; var altText = _ref.altText; var _ref$width = _ref.width; var width = _ref$width === void 0 ? "200px" : _ref$width; var _ref$marginBottom = _ref.marginBottom; var marginBottom = _ref$marginBottom === void 0 ? 2 : _ref$marginBottom; var _ref$testId = _ref.testId; var testId = _ref$testId === void 0 ? "complete-icon" : _ref$testId; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { mb: marginBottom }, "data-testid": testId }, /*#__PURE__*/ react.default.createElement("img", { src: imageSrc, alt: altText, style: { width } })); } CompleteIcon.propTypes = { imageSrc: import_prop_types$82.default.string.isRequired, altText: import_prop_types$82.default.string.isRequired, width: import_prop_types$82.default.string, marginBottom: import_prop_types$82.default.number, testId: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/complete-heading.js function CompleteHeading(_ref) { var title = _ref.title; var subtitle = _ref.subtitle; var linkText = _ref.linkText; var linkHref = _ref.linkHref; var linkOnClick = _ref.linkOnClick; var _ref$testId = _ref.testId; var testId = _ref$testId === void 0 ? "complete-heading" : _ref$testId; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { "data-testid": testId }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h4", color: "text.primary", component: "h2", gutterBottom: true }, title), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.secondary", sx: { mb: 3 } }, subtitle, linkText && linkHref && /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, " ", /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { href: linkHref, onClick: linkOnClick, sx: { cursor: "pointer", textDecoration: "underline" }, color: "info.light" }, linkText)))); } CompleteHeading.propTypes = { title: import_prop_types$82.default.string.isRequired, subtitle: import_prop_types$82.default.string.isRequired, linkText: import_prop_types$82.default.string, linkHref: import_prop_types$82.default.string, linkOnClick: import_prop_types$82.default.func, testId: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/summary-section.js function SummarySection(_ref) { var title = _ref.title; var subTitle = _ref.subTitle; var sectionKey = _ref.sectionKey; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { "data-testid": "summary_section_".concat(sectionKey) }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", alignItems: "center", spacing: 1 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.primary" }, title)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.tertiary", "data-testid": "summary_section_".concat(sectionKey, "_subtitle") }, subTitle)); } SummarySection.propTypes = { title: import_prop_types$82.default.string.isRequired, subTitle: import_prop_types$82.default.string.isRequired, sectionKey: import_prop_types$82.default.string.isRequired }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/complete-summary.js init_slicedToArray(); function CompleteSummary(_ref) { var summaryData = _ref.summaryData; var _ref$testId = _ref.testId; var testId = _ref$testId === void 0 ? "complete-summary" : _ref$testId; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { width: "100%", border: 1, borderRadius: 1, borderColor: "action.focus", p: 2.5, textAlign: "start" }, "data-testid": testId }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle1", color: "text.primary", sx: { mb: 2 } }, (0, _wordpress_i18n.__)("What's included:", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 2, sx: { maxWidth: "1075px" } }, Object.entries(summaryData).map(function(_ref2) { var _ref3 = _slicedToArray(_ref2, 2); var sectionKey = _ref3[0]; var sectionValue = _ref3[1]; return sectionValue ? /*#__PURE__*/ react.default.createElement(SummarySection, { key: sectionKey, sectionKey, title: sectionValue.title, subTitle: sectionValue.subTitle }) : null; }))); } CompleteSummary.propTypes = { summaryData: import_prop_types$82.default.objectOf(import_prop_types$82.default.shape({ title: import_prop_types$82.default.string.isRequired, subTitle: import_prop_types$82.default.string.isRequired })).isRequired, testId: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/download-link.js function DownloadLink$1(_ref) { var message = _ref.message; var linkText = _ref.linkText; var onClick = _ref.onClick; var _ref$testId = _ref.testId; var testId = _ref$testId === void 0 ? "download-link" : _ref$testId; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.secondary", "data-testid": testId }, message, " ", /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { href: "#", onClick, color: "info.light", sx: { cursor: "pointer", textDecoration: "underline" } }, linkText), ". "); } __name(DownloadLink$1, "DownloadLink"); DownloadLink$1.propTypes = { message: import_prop_types$82.default.string.isRequired, linkText: import_prop_types$82.default.string.isRequired, onClick: import_prop_types$82.default.func.isRequired, testId: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export-customization/assets/js/export/components/export-intro.js function ExportIntro() { return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { mb: 4 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h4", component: "h2", gutterBottom: true, color: "text.primary" }, (0, _wordpress_i18n.__)("Export a Website template?", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle1", color: "text.secondary" }, (0, _wordpress_i18n.__)("Choose which Elementor components - templates, content and site settings - to include in your website templates file. By default, all of your components will be exported.", "elementor"), " ", /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { href: "https://go.elementor.com/app-what-are-kits", color: "info.light", target: "_blank", rel: "noopener noreferrer" }, (0, _wordpress_i18n.__)("Learn more", "elementor")))); } //#endregion //#region app/modules/import-export-customization/assets/js/shared/hooks/use-connect-state.js init_slicedToArray(); function useConnectState$1() { var _useState2 = _slicedToArray((0, react.useState)(elementorCommon.config.library_connect.is_connected), 2); var isConnected = _useState2[0]; var setIsConnected = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isConnecting = _useState4[0]; var setIsConnecting = _useState4[1]; var handleConnectSuccess = (0, react.useCallback)(function(callback) { setIsConnecting(true); setIsConnected(true); elementorCommon.config.library_connect.is_connected = true; if (callback) callback(); }, []); var handleConnectError = (0, react.useCallback)(function(callback) { setIsConnected(false); setIsConnecting(false); elementorCommon.config.library_connect.is_connected = false; if (callback) callback(); }, []); return { isConnected, isConnecting, setConnecting: (0, react.useCallback)(function(connecting) { setIsConnecting(connecting); }, []), handleConnectSuccess, handleConnectError }; } __name(useConnectState$1, "useConnectState"); //#endregion //#region app/modules/import-export-customization/assets/js/export/components/export-kit-footer.js init_es$1(); init_use_cloud_kits_eligibility(); init_apps_event_tracking(); function ExportKitFooter() { var connectButtonRef = (0, react.useRef)(); var navigate = useNavigate(); var _useConnectState = useConnectState$1(); var isConnected = _useConnectState.isConnected; var isConnecting = _useConnectState.isConnecting; var setConnecting = _useConnectState.setConnecting; var handleConnectSuccess = _useConnectState.handleConnectSuccess; var handleConnectError = _useConnectState.handleConnectError; var _useExportContext = useExportContext(); var data = _useExportContext.data; var dispatch = _useExportContext.dispatch; var hasValidationErrors = _useExportContext.hasValidationErrors; var isExporting = _useExportContext.isExporting; var _useCloudKitsEligibil = useCloudKitsEligibility({ enabled: isConnected }); var cloudKitsData = _useCloudKitsEligibil.data; var isCheckingEligibility = _useCloudKitsEligibil.isLoading; var refetchEligibility = _useCloudKitsEligibil.refetch; var isCloudKitsEligible = (cloudKitsData === null || cloudKitsData === void 0 ? void 0 : cloudKitsData.is_eligible) || false; (0, react.useEffect)(function() { if (!connectButtonRef.current) return; jQuery(connectButtonRef.current).elementorConnect({ popup: { width: 600, height: 700 }, success: function success() { handleConnectSuccess(); setConnecting(true); refetchEligibility(); }, error: function error() { handleConnectError(); } }); }, [ handleConnectSuccess, handleConnectError, setConnecting, refetchEligibility ]); (0, react.useEffect)(function() { if (!isConnecting || isCheckingEligibility) return; if (!isCloudKitsEligible) navigate("/kit-library/cloud"); else { dispatch({ type: "SET_KIT_SAVE_SOURCE", payload: "cloud" }); dispatch({ type: "SET_EXPORT_STATUS", payload: EXPORT_STATUS.EXPORTING }); } }, [ isConnecting, isCheckingEligibility, isCloudKitsEligible, dispatch ]); (0, react.useEffect)(function() { if (isConnecting && !isCheckingEligibility) setConnecting(false); }, [ isConnecting, isCheckingEligibility, setConnecting ]); (0, react.useEffect)(function() { if (isExporting) navigate("/export-customization/process"); }, [isExporting, navigate]); var handleUpgradeClick = function handleUpgradeClick() { AppsEventTracking.sendKitsCloudUpgradeClicked(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitExportCustomization); navigate("/kit-library/cloud"); }; var handleUploadClick = function handleUploadClick() { if (hasValidationErrors) return; dispatch({ type: "SET_KIT_SAVE_SOURCE", payload: "cloud" }); dispatch({ type: "SET_EXPORT_STATUS", payload: EXPORT_STATUS.EXPORTING }); }; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", spacing: 1 }, function renderSaveToLibraryButton() { if (!isConnected) { var _elementorAppConfig; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { ref: connectButtonRef, variant: "outlined", color: "secondary", size: "small", disabled: hasValidationErrors, href: ((_elementorAppConfig = elementorAppConfig) === null || _elementorAppConfig === void 0 || (_elementorAppConfig = _elementorAppConfig["cloud-library"]) === null || _elementorAppConfig === void 0 || (_elementorAppConfig = _elementorAppConfig.library_connect_url) === null || _elementorAppConfig === void 0 ? void 0 : _elementorAppConfig.replace(/&/g, "&")) || "#", "data-testid": "export-kit-footer-save-to-library-button" }, (0, _wordpress_i18n.__)("Save to library", "elementor")); } if (isConnecting || isCheckingEligibility) return /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "outlined", color: "secondary", size: "small", disabled: true, startIcon: /*#__PURE__*/ react.default.createElement(_elementor_ui.CircularProgress, { size: 16 }), "data-testid": "export-kit-footer-save-to-library-button" }, (0, _wordpress_i18n.__)("Save to library", "elementor")); if (!isCloudKitsEligible) return /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "outlined", color: "secondary", size: "small", disabled: hasValidationErrors, onClick: handleUpgradeClick, "data-testid": "export-kit-footer-save-to-library-button" }, (0, _wordpress_i18n.__)("Save to library", "elementor")); return /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "outlined", color: "secondary", size: "small", disabled: hasValidationErrors, onClick: handleUploadClick, "data-testid": "export-kit-footer-save-to-library-button" }, (0, _wordpress_i18n.__)("Save to library", "elementor")); }(), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", color: "primary", size: "small", disabled: hasValidationErrors, onClick: function handleExportAsZip() { var _data$customization; if (hasValidationErrors) return; if ("cloud" === ((_data$customization = data.customization) === null || _data$customization === void 0 || (_data$customization = _data$customization.content) === null || _data$customization === void 0 ? void 0 : _data$customization.mediaFormat)) { dispatch({ type: "SET_MEDIA_FORMAT_VALIDATION", payload: true }); return; } dispatch({ type: "SET_KIT_SAVE_SOURCE", payload: "file" }); dispatch({ type: "SET_EXPORT_STATUS", payload: EXPORT_STATUS.EXPORTING }); }, "data-testid": "export-kit-footer-export-zip-button" }, (0, _wordpress_i18n.__)("Export as .zip", "elementor"))); } //#endregion //#region app/modules/import-export-customization/assets/js/export/components/export-kit-parts-selection.js init_use_cloud_kits_eligibility(); function ExportKitPartsSelection() { var _useExportContext = useExportContext(); var data = _useExportContext.data; var dispatch = _useExportContext.dispatch; var cloudKitsData = useCloudKitsEligibility().data; var isCloudKitsEligible = (cloudKitsData === null || cloudKitsData === void 0 ? void 0 : cloudKitsData.is_eligible) || false; return /*#__PURE__*/ react.default.createElement(KitPartsSelection, { onCheckboxChange: function handleCheckboxChange(itemType) { var isChecked = data.includes.includes(itemType); var kitItem = kitContentData.find(function(item) { return item.type === itemType; }); if (isChecked && kitItem !== null && kitItem !== void 0 && kitItem.required) return; dispatch({ type: isChecked ? "REMOVE_INCLUDE" : "ADD_INCLUDE", payload: itemType }); }, handleSaveCustomization: function handleSaveCustomization(key, payload, hasEnabledCustomization, excludedValues) { dispatch({ type: "SET_CUSTOMIZATION", payload: { key, value: payload } }); dispatch({ type: "SET_DATA_FOR_ANALYTICS", payload: { key, value: excludedValues } }); if (hasEnabledCustomization) dispatch({ type: "ADD_INCLUDE", payload: key }); else dispatch({ type: "REMOVE_INCLUDE", payload: key }); if (data.showMediaFormatValidation) dispatch({ type: "SET_MEDIA_FORMAT_VALIDATION", payload: false }); }, isCloudKitsEligible, showMediaFormatValidation: data.showMediaFormatValidation }); } //#endregion //#region app/modules/import-export-customization/assets/js/export/hooks/use-kit-validation.js init_slicedToArray(); function useKitValidation() { var _useExportContext = useExportContext(); var data = _useExportContext.data; var dispatch = _useExportContext.dispatch; var _useState2 = _slicedToArray((0, react.useState)(null), 2); var nameError = _useState2[0]; var setNameError = _useState2[1]; var DESCRIPTION_MAX_LENGTH = 300; var validateKitName = function validateKitName(value) { if (!value || 0 === value.trim().length) return (0, _wordpress_i18n.__)("Must add a website template name", "elementor"); if (/[^\w\s\-_.()]/g.test(value)) return (0, _wordpress_i18n.__)("Use characters only", "elementor"); return null; }; var validateDescription = function validateDescription(value) { if (value.length > DESCRIPTION_MAX_LENGTH) return (0, _wordpress_i18n.__)("Description exceeds 300 characters", "elementor"); return null; }; var templateName = data.kitInfo.title || ""; var description = data.kitInfo.description || ""; var hasDescriptionError = description.length > DESCRIPTION_MAX_LENGTH; var descriptionCounterColor = hasDescriptionError ? "error" : "text.secondary"; (0, react.useEffect)(function() { var nameValidationError = validateKitName(templateName); var descriptionValidationError = validateDescription(description); setNameError(nameValidationError); dispatch({ type: "SET_VALIDATION_ERRORS", payload: { name: nameValidationError, description: descriptionValidationError } }); }, [ templateName, description, dispatch ]); return { templateName, description, nameError, hasDescriptionError, descriptionCounterColor, handleNameChange: function handleNameChange(e) { dispatch({ type: "SET_KIT_TITLE", payload: e.target.value || "" }); }, handleDescriptionChange: function handleDescriptionChange(e) { var value = e.target.value || ""; if (value.length <= DESCRIPTION_MAX_LENGTH) dispatch({ type: "SET_KIT_DESCRIPTION", payload: value }); }, DESCRIPTION_MAX_LENGTH, validateKitName, validateDescription }; } //#endregion //#region app/modules/import-export-customization/assets/js/export/components/kit-info.js function KitInfo() { var _useKitValidation = useKitValidation(); var templateName = _useKitValidation.templateName; var description = _useKitValidation.description; var nameError = _useKitValidation.nameError; var hasDescriptionError = _useKitValidation.hasDescriptionError; var descriptionCounterColor = _useKitValidation.descriptionCounterColor; var handleNameChange = _useKitValidation.handleNameChange; var handleDescriptionChange = _useKitValidation.handleDescriptionChange; var DESCRIPTION_MAX_LENGTH = _useKitValidation.DESCRIPTION_MAX_LENGTH; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { mb: 3, border: 1, borderRadius: 1, borderColor: "action.focus", p: 3.5 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "caption", component: "label", color: "text.secondary" }, (0, _wordpress_i18n.__)("Website template name", "elementor"), " *"), /*#__PURE__*/ react.default.createElement(_elementor_ui.Input, { fullWidth: true, required: true, value: templateName, onChange: handleNameChange, placeholder: (0, _wordpress_i18n.__)("Type name here...", "elementor"), inputProps: { maxLength: 75 }, error: !!nameError, sx: { mb: nameError ? 1 : 2 } }), nameError && /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { color: "error.main", variant: "caption", sx: { mb: 2, display: "block" } }, nameError), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "caption", component: "label", color: "text.secondary" }, (0, _wordpress_i18n.__)("Description (Optional)", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Input, { fullWidth: true, multiline: true, value: description, onChange: handleDescriptionChange, placeholder: (0, _wordpress_i18n.__)("Type description here...", "elementor"), inputProps: { maxLength: DESCRIPTION_MAX_LENGTH }, error: hasDescriptionError }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "caption", color: descriptionCounterColor, sx: { mt: .5, display: "block" } }, description.length, " / ", DESCRIPTION_MAX_LENGTH, " ", (0, _wordpress_i18n.__)("characters", "elementor"))); } //#endregion //#region app/modules/import-export-customization/assets/js/export/pages/export-kit.js init_apps_event_tracking(); function ExportKit() { var dispatch = useExportContext().dispatch; (0, react.useEffect)(function() { dispatch({ type: "RESET_STATE" }); }, [dispatch]); var footerContent = /*#__PURE__*/ react.default.createElement(ExportKitFooter, null); var headerContent = /*#__PURE__*/ react.default.createElement(PageHeader, { title: (0, _wordpress_i18n.__)("Export", "elementor") }); (0, react.useEffect)(function() { AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitExportCustomization); }, []); return /*#__PURE__*/ react.default.createElement(BaseLayout, { topBar: /*#__PURE__*/ react.default.createElement(TopBar, null, headerContent), footer: /*#__PURE__*/ react.default.createElement(Footer, null, footerContent) }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { p: 3, mb: 2, maxWidth: "1075px", mx: "auto" } }, /*#__PURE__*/ react.default.createElement(ExportIntro, null), /*#__PURE__*/ react.default.createElement(KitInfo, null), /*#__PURE__*/ react.default.createElement(ExportKitPartsSelection, null))); } //#endregion //#region app/modules/import-export-customization/assets/js/export/utils/screenshot.js var generateScreenshot = function generateScreenshot() { return new Promise(function(resolve) { var iframe = document.createElement("iframe"); iframe.style = "visibility: hidden;"; iframe.width = "1200"; iframe.height = "1000"; var _messageHandler = function messageHandler(event) { if ("kit-screenshot-done" === event.data.name) { window.removeEventListener("message", _messageHandler); document.body.removeChild(iframe); resolve(event.data.imageUrl || null); } }; window.addEventListener("message", _messageHandler); var previewUrl = new URL(window.location.origin); previewUrl.searchParams.set("kit_thumbnail", "1"); previewUrl.searchParams.set("nonce", elementorAppConfig["import-export-customization"].kitPreviewNonce); document.body.appendChild(iframe); iframe.src = previewUrl.toString(); }); }; //#endregion //#region node_modules/@babel/runtime/helpers/esm/isNativeFunction.js function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } } //#endregion //#region node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js function _isNativeReflectConstruct$16() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$16 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$16, "_isNativeReflectConstruct"); //#endregion //#region node_modules/@babel/runtime/helpers/esm/construct.js init_setPrototypeOf(); function _construct$1(t, e, r) { if (_isNativeReflectConstruct$16()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; } __name(_construct$1, "_construct"); //#endregion //#region node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js init_getPrototypeOf(); init_setPrototypeOf(); function _wrapNativeSuper(t) { var r = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct$1(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); } //#endregion //#region app/modules/import-export-customization/assets/js/shared/error/import-export-error.js init_createClass(); init_classCallCheck(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$15(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$15() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$15, "_callSuper"); function _isNativeReflectConstruct$15() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$15 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$15, "_isNativeReflectConstruct"); var ImportExportError = /*#__PURE__*/ function(_Error) { function ImportExportError(errorMessage, errorCode) { var _this; _classCallCheck(this, ImportExportError); _this = _callSuper$15(this, ImportExportError, ["string" === typeof errorMessage ? errorMessage : ""]); _this.code = errorCode || "general"; _this.details = errorMessage; return _this; } _inherits$1(ImportExportError, _Error); return _createClass(ImportExportError); }(/*#__PURE__*/ _wrapNativeSuper(Error)); //#endregion //#region app/modules/import-export-customization/assets/js/export/hooks/use-export-kit.js init_typeof$1(); init_asyncToGenerator(); init_slicedToArray(); init_es$1(); var STATUS_PROCESSING = "processing"; var STATUS_PROCESSING_MEDIA = "processing-media"; var STATUS_ERROR = "error"; var useExportKit = function useExportKit(_ref) { var includes = _ref.includes; var kitInfo = _ref.kitInfo; var customization = _ref.customization; var isExporting = _ref.isExporting; var dispatch = _ref.dispatch; var _useState2 = _slicedToArray((0, react.useState)(STATUS_PROCESSING), 2); var status = _useState2[0]; var setStatus = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(null), 2); var error = _useState4[0]; var setError = _useState4[1]; var _useState6 = _slicedToArray((0, react.useState)(null), 2); var exportedData = _useState6[0]; var setExportedData = _useState6[1]; var navigate = useNavigate(); var processMedia = (0, react.useCallback)(/*#__PURE__*/ function() { var _ref2 = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee(exportData, mediaUrls, kit) { var _window$wpApiSettings; var _mediaResult$data4; var baseUrl; var mediaResponse; var mediaResult; var _mediaResult$data; var _mediaResult$data2; var _mediaResult$data3; var errorMessage; return import_regenerator$1.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: setStatus(STATUS_PROCESSING_MEDIA); baseUrl = elementorAppConfig["import-export-customization"].restApiBaseUrl; _context.next = 1; return fetch("".concat(baseUrl, "/process-media"), { method: "POST", headers: { "Content-Type": "application/json", "X-WP-Nonce": ((_window$wpApiSettings = window.wpApiSettings) === null || _window$wpApiSettings === void 0 ? void 0 : _window$wpApiSettings.nonce) || "" }, body: JSON.stringify({ media_urls: mediaUrls, kit }) }); case 1: mediaResponse = _context.sent; _context.next = 2; return mediaResponse.json(); case 2: mediaResult = _context.sent; if (mediaResponse.ok) { _context.next = 3; break; } errorMessage = (mediaResult === null || mediaResult === void 0 || (_mediaResult$data = mediaResult.data) === null || _mediaResult$data === void 0 ? void 0 : _mediaResult$data.message) || "Media processing error! Code: ".concat(mediaResult === null || mediaResult === void 0 || (_mediaResult$data2 = mediaResult.data) === null || _mediaResult$data2 === void 0 ? void 0 : _mediaResult$data2.code); throw new ImportExportError(errorMessage, mediaResult === null || mediaResult === void 0 || (_mediaResult$data3 = mediaResult.data) === null || _mediaResult$data3 === void 0 ? void 0 : _mediaResult$data3.code); case 3: exportData.media = { processed: true, message: (mediaResult === null || mediaResult === void 0 || (_mediaResult$data4 = mediaResult.data) === null || _mediaResult$data4 === void 0 ? void 0 : _mediaResult$data4.message) || "Media processed successfully" }; return _context.abrupt("return", exportData); case 4: case "end": return _context.stop(); } }, _callee); })); return function(_x, _x2, _x3) { return _ref2.apply(this, arguments); }; }(), []); var deleteKit = (0, react.useCallback)(/*#__PURE__*/ function() { var _ref3 = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee2(kitId) { return import_regenerator$1.default.wrap(function(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: if (kitId) { _context2.next = 1; break; } return _context2.abrupt("return"); case 1: _context2.prev = 1; _context2.next = 2; return $e.data.delete("cloud-kits/index", { id: kitId }); case 2: _context2.next = 4; break; case 3: _context2.prev = 3; _context2["catch"](1); case 4: case "end": return _context2.stop(); } }, _callee2, null, [[1, 3]]); })); return function(_x4) { return _ref3.apply(this, arguments); }; }(), []); var retryMediaProcessing = (0, react.useCallback)(/*#__PURE__*/ _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee3() { var updatedExportedData; var _t2; return import_regenerator$1.default.wrap(function(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: if (exportedData) { _context3.next = 1; break; } throw new ImportExportError("No export data available for media retry"); case 1: _context3.prev = 1; setError(null); _context3.next = 2; return processMedia(exportedData.exportedData, exportedData.mediaUrls, exportedData.kit); case 2: updatedExportedData = _context3.sent; dispatch({ type: "SET_EXPORTED_DATA", payload: updatedExportedData }); dispatch({ type: "SET_EXPORT_STATUS", payload: EXPORT_STATUS.COMPLETED }); navigate("/export-customization/complete"); _context3.next = 4; break; case 3: _context3.prev = 3; _t2 = _context3["catch"](1); setStatus(STATUS_ERROR); setError(_t2 instanceof ImportExportError ? _t2 : new ImportExportError(_t2.message)); case 4: case "end": return _context3.stop(); } }, _callee3, null, [[1, 3]]); })), [ exportedData, processMedia, dispatch, navigate ]); var exportKit = (0, react.useCallback)(/*#__PURE__*/ _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee4() { var _kitInfo$title; var _kitInfo$description; var _window$wpApiSettings2; var exportData; var isCloudExport; var screenshot; var baseUrl; var exportUrl; var response; var result; var _result$data; var _result$data2; var _result$data3; var rawMessage; var errorMessage; var errorCode; var isExportLocal; var isExportToCloud; var kitExportData; var mediaUrls; var _t3; return import_regenerator$1.default.wrap(function(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _context4.prev = 0; setStatus(STATUS_PROCESSING); setError(null); exportData = { kitInfo: { title: ((_kitInfo$title = kitInfo.title) === null || _kitInfo$title === void 0 ? void 0 : _kitInfo$title.trim()) || null, description: ((_kitInfo$description = kitInfo.description) === null || _kitInfo$description === void 0 ? void 0 : _kitInfo$description.trim()) || null, source: kitInfo.source }, include: includes, customization }; isCloudExport = "cloud" === kitInfo.source; if (!isCloudExport) { _context4.next = 2; break; } _context4.next = 1; return generateScreenshot(); case 1: screenshot = _context4.sent; exportData.screenShotBlob = screenshot; case 2: baseUrl = elementorAppConfig["import-export-customization"].restApiBaseUrl; exportUrl = "".concat(baseUrl, "/export"); _context4.next = 3; return fetch(exportUrl, { method: "POST", headers: { "Content-Type": "application/json", "X-WP-Nonce": ((_window$wpApiSettings2 = window.wpApiSettings) === null || _window$wpApiSettings2 === void 0 ? void 0 : _window$wpApiSettings2.nonce) || "" }, body: JSON.stringify(exportData) }); case 3: response = _context4.sent; _context4.next = 4; return response.json(); case 4: result = _context4.sent; if (response.ok) { _context4.next = 5; break; } rawMessage = result === null || result === void 0 || (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.message; errorMessage = "object" === _typeof$1(rawMessage) ? rawMessage : rawMessage || "HTTP error! with the following code: ".concat(result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.code); errorCode = 408 === (response === null || response === void 0 ? void 0 : response.status) ? "timeout" : result === null || result === void 0 || (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3.code; throw new ImportExportError(errorMessage, errorCode); case 5: isExportLocal = "file" === kitInfo.source && result.data && result.data.file; isExportToCloud = "cloud" === kitInfo.source && result.data && result.data.kit; kitExportData = null; if (!isExportLocal) { _context4.next = 6; break; } kitExportData = { file: result.data.file, manifest: result.data.manifest }; dispatch({ type: "SET_EXPORTED_DATA", payload: kitExportData }); dispatch({ type: "SET_EXPORT_STATUS", payload: EXPORT_STATUS.COMPLETED }); navigate("/export-customization/complete"); _context4.next = 9; break; case 6: if (!isExportToCloud) { _context4.next = 8; break; } kitExportData = { kit: result.data.kit, manifest: result.data.manifest }; setExportedData({ exportedData: kitExportData, mediaUrls: result.data.media_urls, kit: result.data.kit }); mediaUrls = result.data.media_urls; if (!(mediaUrls && mediaUrls.length > 0)) { _context4.next = 7; break; } _context4.next = 7; return processMedia(kitExportData, mediaUrls, result.data.kit); case 7: dispatch({ type: "SET_EXPORTED_DATA", payload: kitExportData }); dispatch({ type: "SET_EXPORT_STATUS", payload: EXPORT_STATUS.COMPLETED }); navigate("/export-customization/complete"); _context4.next = 9; break; case 8: throw new ImportExportError("Invalid response format from server"); case 9: _context4.next = 11; break; case 10: _context4.prev = 10; _t3 = _context4["catch"](0); setStatus(STATUS_ERROR); setError(_t3 instanceof ImportExportError ? _t3 : new ImportExportError(_t3.message)); case 11: case "end": return _context4.stop(); } }, _callee4, null, [[0, 10]]); })), [ includes, kitInfo, customization, dispatch, navigate, processMedia ]); (0, react.useEffect)(function() { if (isExporting) exportKit(); }, [isExporting, exportKit]); return { status, STATUS_PROCESSING, STATUS_PROCESSING_MEDIA, STATUS_ERROR, error, exportKit, retryMediaProcessing, deleteKit, exportedData }; }; //#endregion //#region app/modules/import-export-customization/assets/js/export/components/export-processing.js function ExportProcessing(_ref) { var statusText = _ref.statusText; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.CircularProgress, { size: 20 }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h5", color: "text.primary", component: "h2" }, statusText), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.secondary" }, (0, _wordpress_i18n.__)("This usually takes a few moments.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), (0, _wordpress_i18n.__)("Don't close this window until the process is finished.", "elementor"))); } ExportProcessing.propTypes = { statusText: import_prop_types$82.default.string.isRequired }; //#endregion //#region app/modules/import-export-customization/assets/js/shared/components/error/processing-error-dialog.js init_typeof$1(); init_slicedToArray(); function Link$3(_ref) { var href = _ref.href; var children = _ref.children; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { href, variant: "body2", color: "info.light", underline: "hover", target: "_blank", rel: "noopener noreferrer" }, children); } __name(Link$3, "Link"); Link$3.propTypes = { href: import_prop_types$82.default.string.isRequired, children: import_prop_types$82.default.node.isRequired }; var messagesContent = { general: { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("We couldn’t download the Website Template due to technical difficulties on our part. Try again and if the problem persists contact ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor"))) }, "zip-archive-module-missing": { title: (0, _wordpress_i18n.__)("Couldn’t handle the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("Seems like your server is missing the PHP zip module. Install it on your server or contact your site host for further instructions.", "elementor") }, "invalid-zip-file": { title: (0, _wordpress_i18n.__)("Couldn’t use the .zip file", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Seems like there is a problem with the zip’s files. Try installing again and if the problem persists contact ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor"))) }, timeout: { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("It took too much time to download your Website Template and we were unable to complete the process. If all the Website Template’s parts don’t appear in ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: elementorAppConfig.pages_url }, (0, _wordpress_i18n.__)("Pages", "elementor")), (0, _wordpress_i18n.__)(", try again and if the problem persists contact ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor"))) }, "invalid-kit-library-zip-error": { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("We couldn’t download the Website Template due to technical difficulty on our part. Try again in a few minutes and if the problem persists contact ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor"))) }, "no-write-permissions": { title: (0, _wordpress_i18n.__)("Couldn’t access the file", "elementor"), text: (0, _wordpress_i18n.__)("Seems like Elementor isn’t authorized to access relevant files for installing this Website Template. Contact your site host to get permission.", "elementor") }, "plugin-installation-permissions-error": { title: (0, _wordpress_i18n.__)("Couldn’t install the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("The Website Template includes plugins you don’t have permission to install. Contact your site admin to change your permissions.", "elementor") }, "third-party-error": { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("This is due to a conflict with one or more third-party plugins already active on your site. Try disabling them, and then give the download another go.", "elementor") }, "domdocument-missing": { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: (0, _wordpress_i18n.__)("This download requires the 'DOMDocument' PHP extension, which we couldn’t detect on your server. Enable this extension, or get in touch with your hosting service for support, and then give the download another go.", "elementor") }, "insufficient-quota": { title: (0, _wordpress_i18n.__)("Couldn’t Export the Website Template", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("The export failed because it will pass the maximum Website Templates you can export. ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://go.elementor.com/app-general-load-issue/" }, (0, _wordpress_i18n.__)("Learn more", "elementor"))) }, "failed-to-fetch-quota": { title: (0, _wordpress_i18n.__)("Couldn’t fetch quota", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Failed to fetch quota, please try again. If the problem continues, contact ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor")), ". ", /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://go.elementor.com/app-import-export-common-errors" }, (0, _wordpress_i18n.__)("Learn more", "elementor"))) }, "cloud-upload-failed": { title: (0, _wordpress_i18n.__)("Couldn’t Upload to Library", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("We couldn’t add your export to the library. Try again. ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://go.elementor.com/app-import-export-common-errors" }, (0, _wordpress_i18n.__)("Learn more", "elementor"))) }, "error-loading-resource": { title: (0, _wordpress_i18n.__)("Unable to download the Website Template", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("We couldn’t download the Website Template due to technical difficulties on our part. Try again and if the problem persists contact ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://my.elementor.com/support-center/" }, (0, _wordpress_i18n.__)("Support", "elementor")), ". ", /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://go.elementor.com/app-import-export-common-errors" }, (0, _wordpress_i18n.__)("Learn more", "elementor"))) }, "media-processing-error": { title: (0, _wordpress_i18n.__)("Couldn’t save media files to the cloud", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("We ran into a problem while saving your media files to the cloud. Please try again. If the issue persists, edit the Content section and choose \"Link to media\" to save it as a reference. ", "elementor"), /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://go.elementor.com/app-import-export-common-errors" }, (0, _wordpress_i18n.__)("Learn more", "elementor"))) }, "insufficient-storage-quota": { title: (0, _wordpress_i18n.__)("Your library is full", "elementor"), text: function text() { var _ref2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; var _ref2$filename = _ref2.filename; var filename = _ref2$filename === void 0 ? (0, _wordpress_i18n.__)("This file", "elementor") : _ref2$filename; var _ref2$maxSize = _ref2.maxSize; var maxSize = _ref2$maxSize === void 0 ? 0 : _ref2$maxSize; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h6", sx: { mb: 2 } }, (0, _wordpress_i18n.sprintf)((0, _wordpress_i18n.__)("%s exceeds the library size limit", "elementor"), filename)), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2" }, (0, _wordpress_i18n.sprintf)((0, _wordpress_i18n.__)("The maximum website template library size is %s GB. To save this file, you can either export it locally as a .zip file or get more storage by", "elementor"), maxSize), " ", /*#__PURE__*/ react.default.createElement(Link$3, { href: "https://go.elementor.com/go-pro-cloud-website-templates-library-advanced/" }, (0, _wordpress_i18n.__)("Upgrade now", "elementor")), ".")); } } }; function ProcessingErrorDialog(_ref3) { var _messagesContent$erro; var error = _ref3.error; var handleClose = _ref3.handleClose; var handleTryAgain = _ref3.handleTryAgain; var handleExportAsZip = _ref3.handleExportAsZip; var _useState2 = _slicedToArray((0, react.useState)(Boolean(error)), 2); var open = _useState2[0]; var setOpen = _useState2[1]; var errorType = (error === null || error === void 0 ? void 0 : error.code) || "general"; var errorMessageContent = (_messagesContent$erro = messagesContent[errorType]) !== null && _messagesContent$erro !== void 0 ? _messagesContent$erro : messagesContent.general; var resolveText = function resolveText() { var details = (error === null || error === void 0 ? void 0 : error.details) || (error === null || error === void 0 ? void 0 : error.message); var replacements = details && "object" === _typeof$1(details) ? details.replacements : null; var text = errorMessageContent.text; if ("function" === typeof text) return text(replacements); return text; }; var shouldRenderTryAgainButton = function shouldRenderTryAgainButton() { return [ "general", "timeout", "cloud-upload-failed", "third-party-error", "invalid-zip-file", "zip-archive-module-missing", "no-write-permissions", "plugin-installation-permissions-error", "failed-to-fetch-quota", "insufficient-quota", "error-loading-resource", "media-processing-error", "import-runner-error" ].includes(errorType); }; var renderButtons = function renderButtons() { var isQuotaError = "insufficient-storage-quota" === errorType; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { onClick: function onClick() { if (handleClose) handleClose(); setOpen(false); }, color: "secondary" }, (0, _wordpress_i18n.__)("Cancel", "elementor")), isQuotaError && handleExportAsZip && /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { onClick: function onClick() { handleExportAsZip(); setOpen(false); }, variant: "contained", color: "primary" }, (0, _wordpress_i18n.__)("Export as .zip", "elementor")), shouldRenderTryAgainButton(errorType) && !isQuotaError && /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { "data-testid": "try-again-button", onClick: function onClick() { if (handleTryAgain) handleTryAgain(); }, variant: "contained", color: "primary" }, (0, _wordpress_i18n.__)("Try Again", "elementor"))); }; (0, react.useEffect)(function() { setOpen(Boolean(error)); }, [error]); if (!error) return null; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Dialog, { "data-testid": "error-dialog", open, onClose: function onClose() { if (handleClose) handleClose(); setOpen(false); }, maxWidth: "sm" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogHeader, { onClose: handleClose }, /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogTitle, null, errorMessageContent.title)), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogContent, { dividers: true, sx: { p: 3 } }, resolveText()), /*#__PURE__*/ react.default.createElement(_elementor_ui.DialogActions, null, renderButtons())); } ProcessingErrorDialog.propTypes = { error: import_prop_types$82.default.any, handleClose: import_prop_types$82.default.func, handleTryAgain: import_prop_types$82.default.func, handleExportAsZip: import_prop_types$82.default.func }; //#endregion //#region app/modules/import-export-customization/assets/js/export/pages/export-process.js init_es$1(); function ExportProcess() { var _useExportContext = useExportContext(); var data = _useExportContext.data; var dispatch = _useExportContext.dispatch; var isExporting = _useExportContext.isExporting; var isPending = _useExportContext.isPending; var kitInfo = data.kitInfo; var includes = data.includes; var customization = data.customization; var _useExportKit = useExportKit({ includes, kitInfo, customization, isExporting, dispatch }); var status = _useExportKit.status; var STATUS_PROCESSING = _useExportKit.STATUS_PROCESSING; var STATUS_PROCESSING_MEDIA = _useExportKit.STATUS_PROCESSING_MEDIA; var STATUS_ERROR = _useExportKit.STATUS_ERROR; var error = _useExportKit.error; var exportKit = _useExportKit.exportKit; var retryMediaProcessing = _useExportKit.retryMediaProcessing; var deleteKit = _useExportKit.deleteKit; var exportedData = _useExportKit.exportedData; if (isPending) return /*#__PURE__*/ react.default.createElement(Redirect, { to: "/export-customization/", replace: true }); var getStatusText = function getStatusText() { if (status === STATUS_PROCESSING) return (0, _wordpress_i18n.__)("Setting up your website template...", "elementor"); if (status === STATUS_PROCESSING_MEDIA) return (0, _wordpress_i18n.__)("Processing media files...", "elementor"); return (0, _wordpress_i18n.__)("Export failed", "elementor"); }; var headerContent = /*#__PURE__*/ react.default.createElement(PageHeader, { title: (0, _wordpress_i18n.__)("Export", "elementor") }); return /*#__PURE__*/ react.default.createElement(BaseLayout, { topBar: /*#__PURE__*/ react.default.createElement(TopBar, null, headerContent) }, /*#__PURE__*/ react.default.createElement(CenteredContent, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 3, alignItems: "center" }, (status === STATUS_PROCESSING || status === STATUS_PROCESSING_MEDIA) && /*#__PURE__*/ react.default.createElement(ExportProcessing, { statusText: getStatusText() }), status === STATUS_ERROR && /*#__PURE__*/ react.default.createElement(ProcessingErrorDialog, { error, handleClose: function handleCloseError() { var _exportedData$kit; var isMediaError = "media-processing-error" === (error === null || error === void 0 ? void 0 : error.code); dispatch({ type: "SET_EXPORT_STATUS", payload: EXPORT_STATUS.PENDING }); if (isMediaError && exportedData !== null && exportedData !== void 0 && (_exportedData$kit = exportedData.kit) !== null && _exportedData$kit !== void 0 && _exportedData$kit.id) deleteKit(exportedData.kit.id); }, handleTryAgain: function handleTryAgain() { if ("media-processing-error" === (error === null || error === void 0 ? void 0 : error.code)) retryMediaProcessing(); else exportKit(); }, handleExportAsZip: function handleExportAsZip() { dispatch({ type: "SET_KIT_SAVE_SOURCE", payload: "file" }); dispatch({ type: "SET_EXPORT_STATUS", payload: EXPORT_STATUS.EXPORTING }); } })))); } //#endregion //#region app/modules/import-export-customization/assets/js/shared/utils/string.js function formatToTitleCase(str) { return str.replace(/([A-Z])/g, " $1").replace(/^./, function(s) { return s.toUpperCase(); }).trim(); } //#endregion //#region app/modules/import-export-customization/assets/js/shared/utils/utils.js init_slicedToArray(); function buildKitSettingsSummary(siteSettings) { var _Object$entries; var formattedSettings = (Array.isArray(siteSettings) ? siteSettings : (_Object$entries = Object.entries(siteSettings)) === null || _Object$entries === void 0 ? void 0 : _Object$entries.filter(function(_ref) { var _ref2 = _slicedToArray(_ref, 2); _ref2[0]; return _ref2[1]; }).map(function(_ref3) { return _slicedToArray(_ref3, 1)[0]; })).map(function(setting) { return formatToTitleCase(setting); }); return formattedSettings.length > 0 ? formattedSettings.join(" | ") : ""; } //#endregion //#region app/modules/import-export-customization/assets/js/export/pages/export-complete.js init_slicedToArray(); init_es$1(); init_apps_event_tracking(); var INVALID_FILENAME_CHARS = /[<>:"/\\|?*]/g; function ExportComplete() { var navigate = useNavigate(); var _useExportContext = useExportContext(); var data = _useExportContext.data; var isCompleted = _useExportContext.isCompleted; var exportedData = data.exportedData; var kitInfo = data.kitInfo; var includes = data.includes; var analytics = data.analytics; var downloadLink = (0, react.useRef)(null); var downloadFile = function downloadFile(event) { event === null || event === void 0 || event.preventDefault(); if (!downloadLink.current) { var link = document.createElement("a"); var defaultKitName = "elementor-kit"; var fileName = (kitInfo.title || defaultKitName).replace(INVALID_FILENAME_CHARS, "").trim() || defaultKitName; link.href = "data:application/zip;base64," + exportedData.file; link.download = fileName + ".zip"; downloadLink.current = link; } downloadLink.current.click(); }; (0, react.useEffect)(function() { if ("cloud" !== kitInfo.source && exportedData !== null && exportedData !== void 0 && exportedData.file) downloadFile(); }, [exportedData, kitInfo.source]); (0, react.useEffect)(function() { AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitExportSummary); }, []); (0, react.useEffect)(function() { if (exportedData.manifest) { var _exportedData$manifes; var _exportedData$manifes2; var contentCounts = getContentCounts(); AppsEventTracking.sendExportKitCustomization({ kit_export_content: includes.includes("content"), kit_export_templates: includes.includes("templates"), kit_export_settings: includes.includes("settings"), kit_export_plugins: includes.includes("plugins"), kit_export_customization_modals: analytics === null || analytics === void 0 ? void 0 : analytics.customization, kit_description: Boolean(kitInfo.description), kit_page_count: contentCounts.page || 0, kit_post_count: contentCounts.post || 0, kit_post_type_count: (_exportedData$manifes = exportedData.manifest) !== null && _exportedData$manifes !== void 0 && _exportedData$manifes["custom-post-type-title"] ? Object.keys((_exportedData$manifes2 = exportedData.manifest) === null || _exportedData$manifes2 === void 0 ? void 0 : _exportedData$manifes2["custom-post-type-title"]).length : 0, kit_source: kitInfo.source }); } }, [ includes, exportedData === null || exportedData === void 0 ? void 0 : exportedData.manifest, analytics === null || analytics === void 0 ? void 0 : analytics.customization, kitInfo.description ]); var handleDone = function handleDone() { window.top.location = elementorAppConfig.admin_url; }; if (!isCompleted) return /*#__PURE__*/ react.default.createElement(Redirect, { to: "/export-customization/", replace: true }); var isCloudExport = "cloud" === kitInfo.source; var footerContent = /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", spacing: 1 }, isCloudExport ? /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", color: "primary", size: "small", onClick: function onClick() { return navigate("/kit-library/cloud"); }, "data-testid": "view-in-library-button" }, (0, _wordpress_i18n.__)("View in Library", "elementor")) : /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", color: "primary", size: "small", onClick: handleDone, "data-testid": "done-button" }, (0, _wordpress_i18n.__)("Done", "elementor"))); var headerContent = /*#__PURE__*/ react.default.createElement(PageHeader, { title: (0, _wordpress_i18n.__)("Export", "elementor") }); var getTemplatesSummary = function getTemplatesSummary() { var _exportedData$manifes3; var _elementorAppConfig$i; var templates = exportedData === null || exportedData === void 0 || (_exportedData$manifes3 = exportedData.manifest) === null || _exportedData$manifes3 === void 0 ? void 0 : _exportedData$manifes3.templates; if (!templates) return (0, _wordpress_i18n.__)("No templates exported", "elementor"); var templatesByType = {}; Object.values(templates).forEach(function(template) { var docType = template.doc_type; if (!templatesByType[docType]) templatesByType[docType] = 0; templatesByType[docType]++; }); var summaryTitles = ((_elementorAppConfig$i = elementorAppConfig["import-export-customization"]) === null || _elementorAppConfig$i === void 0 || (_elementorAppConfig$i = _elementorAppConfig$i.summaryTitles) === null || _elementorAppConfig$i === void 0 ? void 0 : _elementorAppConfig$i.templates) || {}; var summaryParts = Object.entries(templatesByType).map(function(_ref) { var _ref2 = _slicedToArray(_ref, 2); var docType = _ref2[0]; var count = _ref2[1]; var label = summaryTitles[docType]; if (!label) return null; var title = count > 1 ? label.plural : label.single; return "".concat(count, " ").concat(title); }).filter(function(part) { return part !== null; }); return summaryParts.length > 0 ? summaryParts.join(" | ") : (0, _wordpress_i18n.__)("No templates exported", "elementor"); }; var getContentCounts = function getContentCounts() { var _exportedData$manifes4; var _exportedData$manifes5; var content = exportedData === null || exportedData === void 0 || (_exportedData$manifes4 = exportedData.manifest) === null || _exportedData$manifes4 === void 0 ? void 0 : _exportedData$manifes4.content; var wpContent = exportedData === null || exportedData === void 0 || (_exportedData$manifes5 = exportedData.manifest) === null || _exportedData$manifes5 === void 0 ? void 0 : _exportedData$manifes5["wp-content"]; var counts = {}; var countItems = function countItems(_ref3) { var _ref4 = _slicedToArray(_ref3, 2); var docType = _ref4[0]; var docs = _ref4[1]; var count = Object.keys(docs).length; if (count > 0) counts[docType] = (counts[docType] || 0) + count; }; Object.entries(content || {}).forEach(countItems); Object.entries(wpContent || {}).forEach(countItems); return counts; }; var summaryData = { content: { title: (0, _wordpress_i18n.__)("Content", "elementor"), subTitle: function getContentSummary() { var _exportedData$manifes6; var _exportedData$manifes7; var _exportedData$manifes8; var _elementorAppConfig$i2; var content = exportedData === null || exportedData === void 0 || (_exportedData$manifes6 = exportedData.manifest) === null || _exportedData$manifes6 === void 0 ? void 0 : _exportedData$manifes6.content; var wpContent = exportedData === null || exportedData === void 0 || (_exportedData$manifes7 = exportedData.manifest) === null || _exportedData$manifes7 === void 0 ? void 0 : _exportedData$manifes7["wp-content"]; var taxonomies = exportedData === null || exportedData === void 0 || (_exportedData$manifes8 = exportedData.manifest) === null || _exportedData$manifes8 === void 0 ? void 0 : _exportedData$manifes8.taxonomies; if (!content && !wpContent && !taxonomies) return (0, _wordpress_i18n.__)("No content exported", "elementor"); var summaryTitles = ((_elementorAppConfig$i2 = elementorAppConfig["import-export-customization"]) === null || _elementorAppConfig$i2 === void 0 || (_elementorAppConfig$i2 = _elementorAppConfig$i2.summaryTitles) === null || _elementorAppConfig$i2 === void 0 ? void 0 : _elementorAppConfig$i2.content) || {}; var counts = getContentCounts(); var summaryPartsMap = {}; Object.entries(counts).forEach(function(_ref5) { var _ref6 = _slicedToArray(_ref5, 2); var docType = _ref6[0]; var count = _ref6[1]; var label = summaryTitles[docType]; if (!label) return; summaryPartsMap[docType] = { count, title: count > 1 ? label.plural : label.single }; }); if (Object.keys(taxonomies || {}).length) { var allTaxonomiesSet = /* @__PURE__ */ new Set(); Object.values(taxonomies).forEach(function(postTypeTaxonomies) { postTypeTaxonomies.forEach(function(taxonomy) { allTaxonomiesSet.add(taxonomy.name); }); }); if (allTaxonomiesSet.size) summaryPartsMap.taxonomies = { count: allTaxonomiesSet.size, title: (0, _wordpress_i18n.__)("Taxonomies", "elementor") }; } var summaryParts = Object.values(summaryPartsMap).map(function(_ref7) { var count = _ref7.count; var title = _ref7.title; return "".concat(count, " ").concat(title); }); return summaryParts.length > 0 ? summaryParts.join(" | ") : (0, _wordpress_i18n.__)("No content exported", "elementor"); }() }, templates: { title: (0, _wordpress_i18n.__)("Templates", "elementor"), subTitle: getTemplatesSummary() }, settings: { title: (0, _wordpress_i18n.__)("Site settings", "elementor"), subTitle: function getSettingsSummary() { var _exportedData$manifes1; var siteSettings = exportedData === null || exportedData === void 0 || (_exportedData$manifes1 = exportedData.manifest) === null || _exportedData$manifes1 === void 0 ? void 0 : _exportedData$manifes1["site-settings"]; if (!siteSettings) return (0, _wordpress_i18n.__)("No settings exported", "elementor"); var summary = buildKitSettingsSummary(siteSettings); return summary.length > 0 ? summary : (0, _wordpress_i18n.__)("No settings exported", "elementor"); }() }, plugins: { title: (0, _wordpress_i18n.__)("Plugins", "elementor"), subTitle: function getPluginsSummary() { var _exportedData$manifes9; var _exportedData$manifes0; return exportedData !== null && exportedData !== void 0 && (_exportedData$manifes9 = exportedData.manifest) !== null && _exportedData$manifes9 !== void 0 && _exportedData$manifes9.plugins ? exportedData === null || exportedData === void 0 || (_exportedData$manifes0 = exportedData.manifest) === null || _exportedData$manifes0 === void 0 ? void 0 : _exportedData$manifes0.plugins.map(function(plugin) { return plugin.name; }).join(" | ") : (0, _wordpress_i18n.__)("No plugins exported", "elementor"); }() } }; return /*#__PURE__*/ react.default.createElement(BaseLayout, { topBar: /*#__PURE__*/ react.default.createElement(TopBar, null, headerContent), footer: /*#__PURE__*/ react.default.createElement(Footer, null, footerContent) }, /*#__PURE__*/ react.default.createElement(CenteredContent, { hasFooter: true, maxWidth: "800px" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 3, alignItems: "center", "data-testid": "export-complete-content" }, /*#__PURE__*/ react.default.createElement(CompleteIcon, { imageSrc: elementorAppConfig.assets_url + "images/kit-is-live.svg", altText: "", testId: "export-complete-icon" }), /*#__PURE__*/ react.default.createElement(CompleteHeading, { title: isCloudExport ? (0, _wordpress_i18n.__)("Your website template is now saved to the library!", "elementor") : (0, _wordpress_i18n.__)("Your .zip file is ready", "elementor"), subtitle: isCloudExport ? (0, _wordpress_i18n.__)("You can find it in the My Website Templates tab.", "elementor") : (0, _wordpress_i18n.__)("Once the download is complete, you can upload it to be used for other sites.", "elementor"), linkText: isCloudExport ? (0, _wordpress_i18n.__)("Take me there", "elementor") : void 0, linkHref: isCloudExport ? elementorAppConfig.base_url + "#/kit-library/cloud" : void 0, testId: "export-complete-heading" }), /*#__PURE__*/ react.default.createElement(CompleteSummary, { summaryData, testId: "export-complete-summary" }), !isCloudExport && /*#__PURE__*/ react.default.createElement(DownloadLink$1, { message: (0, _wordpress_i18n.__)("Is the automatic download not starting?", "elementor"), linkText: (0, _wordpress_i18n.__)("Download manually", "elementor"), onClick: downloadFile, testId: "export-complete-download-link" })))); } //#endregion //#region app/modules/import-export-customization/assets/js/export/export.js init_es$1(); init_es(); var queryClient$1 = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, retry: false, staleTime: 1e3 * 60 * 30 } } }); function Export() { return /*#__PURE__*/ react.default.createElement(QueryClientProvider, { client: queryClient$1 }, /*#__PURE__*/ react.default.createElement(ExportContextProvider, null, /*#__PURE__*/ react.default.createElement(LocationProvider, { history: _elementor_router.default.appHistory }, /*#__PURE__*/ react.default.createElement(Router, null, /*#__PURE__*/ react.default.createElement(ExportKit, { path: "/", default: true }), /*#__PURE__*/ react.default.createElement(ExportProcess, { path: "/process" }), /*#__PURE__*/ react.default.createElement(ExportComplete, { path: "/complete" }))))); } //#endregion //#region app/modules/import-export-customization/assets/js/import/utils/file-validation.js init_toConsumableArray(); var getMimeTypeToExtensionMap = function getMimeTypeToExtensionMap() { return { "application/zip": ["zip"], "application/json": ["json"], "application/pdf": ["pdf"], "text/plain": ["txt"], "image/jpeg": ["jpg", "jpeg"], "image/png": ["png"], "image/gif": ["gif"], "text/csv": ["csv"], "application/xml": ["xml"], "text/xml": ["xml"] }; }; var getValidExtensions = function getValidExtensions(filetypes) { var mimeToExtMap = getMimeTypeToExtensionMap(); var validExtensions = []; filetypes.forEach(function(mimeType) { if (mimeToExtMap[mimeType]) validExtensions.push.apply(validExtensions, _toConsumableArray(mimeToExtMap[mimeType])); }); return validExtensions; }; var isValidFileType = function isValidFileType(fileType) { var fileName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; var filetypes = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; if (0 === filetypes.length) return true; if (filetypes.includes(fileType)) return true; var extension = fileName.toLowerCase().split(".").pop(); return getValidExtensions(filetypes).includes(extension); }; var getAcceptedFileTypes = function getAcceptedFileTypes(filetypes) { var acceptTypes = _toConsumableArray(filetypes); getValidExtensions(filetypes).forEach(function(ext) { acceptTypes.push(".".concat(ext)); }); return acceptTypes.join(","); }; //#endregion //#region app/modules/import-export-customization/assets/js/import/hooks/use-drop-zone.js init_slicedToArray(); var useDropZone = function useDropZone(_ref) { var onFileSelect = _ref.onFileSelect; var onError = _ref.onError; var filetypes = _ref.filetypes; var isLoading = _ref.isLoading; var onButtonClick = _ref.onButtonClick; var onFileChoose = _ref.onFileChoose; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isDragOver = _useState2[0]; var setIsDragOver = _useState2[1]; var setDragCounter = _slicedToArray((0, react.useState)(0), 2)[1]; var fileInputRef = (0, react.useRef)(null); return { isDragOver, fileInputRef, fileInputId: (0, react.useId)(), handleDragEnter: function handleDragEnter(e) { e.preventDefault(); e.stopPropagation(); setDragCounter(function(prev) { return prev + 1; }); if (e.dataTransfer.items && e.dataTransfer.items.length > 0) setIsDragOver(true); }, handleDragLeave: function handleDragLeave(e) { e.preventDefault(); e.stopPropagation(); setDragCounter(function(prev) { var newCounter = prev - 1; if (newCounter <= 0) setIsDragOver(false); return newCounter; }); }, handleDragOver: function handleDragOver(e) { e.preventDefault(); e.stopPropagation(); }, handleDrop: function handleDrop(e) { e.preventDefault(); e.stopPropagation(); setIsDragOver(false); setDragCounter(0); if (isLoading) return; if (!e.dataTransfer.files || 0 === e.dataTransfer.files.length) return; var file = e.dataTransfer.files[0]; if (file && isValidFileType(file.type, file.name, filetypes)) onFileSelect(file, e, "drop"); else onError({ id: "file_not_allowed", message: (0, _wordpress_i18n.__)("This file type is not allowed", "elementor") }); }, handleFileInputChange: function handleFileInputChange(e) { if (!e.target.files || 0 === e.target.files.length) return; var file = e.target.files[0]; if (!file) return; if (!isValidFileType(file.type, file.name, filetypes)) { onError({ id: "file_not_allowed", message: (0, _wordpress_i18n.__)("This file type is not allowed", "elementor") }); return; } onFileSelect(file, e, "browse"); if (onFileChoose) onFileChoose(file); }, handleUploadClick: function handleUploadClick(e) { if (onButtonClick) onButtonClick(e); if (fileInputRef.current) fileInputRef.current.click(); } }; }; //#endregion //#region app/modules/import-export-customization/assets/js/import/components/drop-zone.js init_extends(); init_objectWithoutProperties(); var _excluded$1 = [ "onFileSelect", "onError", "filetypes", "className", "isLoading", "error", "onButtonClick", "onFileChoose", "helperText" ]; var StyledDropZoneBox = (0, _elementor_ui.styled)(_elementor_ui.Box, { shouldForwardProp: function shouldForwardProp(prop) { return !["isDragOver", "isLoading"].includes(prop); } })(function(_ref) { var theme = _ref.theme; var isDragOver = _ref.isDragOver; var isLoading = _ref.isLoading; return { border: 2, borderColor: isDragOver ? theme.palette.primary.main : theme.palette.divider, borderStyle: "dashed", backgroundColor: isDragOver ? theme.palette.action.hover : theme.palette.background.default, transition: "all 0.2s ease-in-out", cursor: isLoading ? "not-allowed" : "normal", position: "relative", borderRadius: theme.spacing(.5) }; }); var StyledContentStack = (0, _elementor_ui.styled)(_elementor_ui.Stack, { shouldForwardProp: function shouldForwardProp(prop) { return prop !== "isLoading"; } })(function(_ref2) { return { opacity: _ref2.isLoading ? .5 : 1, transition: "opacity 0.2s ease-in-out" }; }); var DropZone = function DropZone(_ref3) { var onFileSelect = _ref3.onFileSelect; var _ref3$onError = _ref3.onError; var onError = _ref3$onError === void 0 ? function() {} : _ref3$onError; var _ref3$filetypes = _ref3.filetypes; var filetypes = _ref3$filetypes === void 0 ? ["application/zip"] : _ref3$filetypes; var _ref3$className = _ref3.className; var className = _ref3$className === void 0 ? "" : _ref3$className; var _ref3$isLoading = _ref3.isLoading; var isLoading = _ref3$isLoading === void 0 ? false : _ref3$isLoading; var error = _ref3.error; var onButtonClick = _ref3.onButtonClick; var onFileChoose = _ref3.onFileChoose; var _ref3$helperText = _ref3.helperText; var helperText = _ref3$helperText === void 0 ? (0, _wordpress_i18n.__)("Upload a .zip file", "elementor") : _ref3$helperText; var props = _objectWithoutProperties(_ref3, _excluded$1); var _useDropZone = useDropZone({ onFileSelect, onError, filetypes, isLoading, onButtonClick, onFileChoose }); var isDragOver = _useDropZone.isDragOver; var fileInputRef = _useDropZone.fileInputRef; var fileInputId = _useDropZone.fileInputId; var handleDragEnter = _useDropZone.handleDragEnter; var handleDragLeave = _useDropZone.handleDragLeave; var handleDragOver = _useDropZone.handleDragOver; var handleDrop = _useDropZone.handleDrop; var handleFileInputChange = _useDropZone.handleFileInputChange; var handleUploadClick = _useDropZone.handleUploadClick; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, _extends$1({ className, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, onDragOver: handleDragOver, onDrop: handleDrop, "data-testid": "drop-zone" }, props), /*#__PURE__*/ react.default.createElement(StyledDropZoneBox, { isDragOver, isLoading }, /*#__PURE__*/ react.default.createElement(StyledContentStack, { alignItems: "center", justifyContent: "center", gap: 1, p: 6, minHeight: "520px", isLoading }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { "data-testid": "icon-container" }, isLoading ? /*#__PURE__*/ react.default.createElement(_elementor_ui.CircularProgress, { size: 40, "data-testid": "loading-spinner", sx: { color: "primary.dark" } }) : /*#__PURE__*/ react.default.createElement(_elementor_icons.UploadIcon, { "data-testid": "upload-icon", sx: { fontSize: "40px", color: "text.disabled" } })), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 2, alignItems: "center", textAlign: "center", "data-testid": "text-container" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { "data-testid": "main-text" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { variant: "body1", component: "span", onClick: handleUploadClick, "data-testid": "click-to-upload" }, (0, _wordpress_i18n.__)("Click to upload", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", component: "span", color: "text.primary", sx: { marginLeft: .5 } }, (0, _wordpress_i18n.__)("or drag and drop", "elementor"))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: error ? "error" : "text.secondary", "data-testid": "helper-text" }, error ? error.message : helperText)), /*#__PURE__*/ react.default.createElement("input", { ref: fileInputRef, id: fileInputId, type: "file", accept: getAcceptedFileTypes(filetypes), onChange: handleFileInputChange, style: { display: "none" }, "data-testid": "file-input" })))); }; DropZone.propTypes = { className: import_prop_types$82.default.string, onFileSelect: import_prop_types$82.default.func.isRequired, onError: import_prop_types$82.default.func, filetypes: import_prop_types$82.default.array, isLoading: import_prop_types$82.default.bool, error: import_prop_types$82.default.shape({ message: import_prop_types$82.default.string.isRequired }), onButtonClick: import_prop_types$82.default.func, onFileChoose: import_prop_types$82.default.func, helperText: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export-customization/assets/js/import/hooks/use-upload-kit.js init_defineProperty$1(); init_asyncToGenerator(); init_slicedToArray(); init_apps_event_tracking(); function ownKeys$19(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; } __name(ownKeys$19, "ownKeys"); function _objectSpread$18(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$19(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$19(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$18, "_objectSpread"); function useUploadKit() { var _useImportContext = useImportContext(); var data = _useImportContext.data; var isUploading = _useImportContext.isUploading; var dispatch = _useImportContext.dispatch; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var uploading = _useState2[0]; var setUploading = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(null), 2); var error = _useState4[0]; var setError = _useState4[1]; function uploadKit() { return _uploadKit.apply(this, arguments); } function _uploadKit() { _uploadKit = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee() { var _window$wpApiSettings; var baseUrl; var uploadUrl; var uploadData; var _data$kitUploadParams; var id; var source; var fileUrl; var response; var result; var _result$data; var _result$data2; var _result$data3; var errorMessage; var errorCode; var _t; return import_regenerator$1.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.prev = 0; setUploading(true); setError(null); baseUrl = elementorAppConfig["import-export-customization"].restApiBaseUrl; uploadUrl = "".concat(baseUrl, "/upload"); uploadData = null; if (data.file) { uploadData = new FormData(); uploadData.append("e_import_file", data.file); } if (data.kitUploadParams) { _data$kitUploadParams = data.kitUploadParams, id = _data$kitUploadParams.id, source = _data$kitUploadParams.source, fileUrl = _data$kitUploadParams.fileUrl; uploadData = JSON.stringify({ referrer: source, source, kit_id: id, file_url: fileUrl }); } _context.next = 1; return fetch(uploadUrl, { method: "POST", headers: _objectSpread$18({ "X-WP-Nonce": ((_window$wpApiSettings = window.wpApiSettings) === null || _window$wpApiSettings === void 0 ? void 0 : _window$wpApiSettings.nonce) || "" }, "string" === typeof uploadData ? { "Content-Type": "application/json" } : null), body: uploadData }); case 1: response = _context.sent; _context.next = 2; return response.json(); case 2: result = _context.sent; if (response.ok) { _context.next = 3; break; } errorMessage = (result === null || result === void 0 || (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.message) || "HTTP error! with the following code: ".concat(result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.code); errorCode = 408 === (response === null || response === void 0 ? void 0 : response.status) ? "timeout" : result === null || result === void 0 || (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3.code; throw new ImportExportError(errorMessage, errorCode); case 3: if (data.file) AppsEventTracking.sendKitImportUploadFile("Success"); dispatch({ type: "SET_UPLOADED_DATA", payload: result.data }); _context.next = 5; break; case 4: _context.prev = 4; _t = _context["catch"](0); setError(_t instanceof ImportExportError ? _t : new ImportExportError(_t.message)); AppsEventTracking.sendKitImportUploadFile(_t.message); case 5: _context.prev = 5; setUploading(false); return _context.finish(5); case 6: case "end": return _context.stop(); } }, _callee, null, [[ 0, 4, 5, 6 ]]); })); return _uploadKit.apply(this, arguments); } (0, react.useEffect)(function() { if (isUploading && (data.file || data.kitUploadParams)) uploadKit(); else setError(null); }, [ isUploading, data.file, data.kitUploadParams ]); return { uploading, error, uploadKit }; } //#endregion //#region app/modules/import-export-customization/assets/js/shared/utils/is-valid-redirect-url.js function isValidRedirectUrl(url) { try { var parsedUrl = new URL(url); return parsedUrl.hostname === window.location.hostname && ("http:" === parsedUrl.protocol || "https:" === parsedUrl.protocol); } catch (e) { return false; } } //#endregion //#region app/modules/import-export-customization/assets/js/shared/utils/safe-redirect.js function safeRedirect(url) { try { var decodedUrl = decodeURIComponent(url); if (decodedUrl.startsWith("/")) decodedUrl = window.location.origin + decodedUrl; if (isValidRedirectUrl(decodedUrl)) { window.location.href = decodedUrl; return true; } } catch (e) { return false; } } //#endregion //#region app/modules/import-export-customization/assets/js/shared/hooks/use-return-to-redirect.js function useReturnToRedirect(returnTo) { return { attemptRedirect: (0, react.useCallback)(function(fallbackAction) { if (returnTo && safeRedirect(returnTo)) return true; if (fallbackAction) fallbackAction(); return false; }, [returnTo]) }; } //#endregion //#region app/modules/import-export-customization/assets/js/import/pages/import-kit.js init_es$1(); init_use_query_params(); init_apps_event_tracking(); function ImportKit() { var _useImportContext = useImportContext(); var data = _useImportContext.data; var dispatch = _useImportContext.dispatch; var navigate = useNavigate(); var _useQueryParams$getAl = useQueryParams().getAll(); var id = _useQueryParams$getAl.id; var referrer = _useQueryParams$getAl.referrer; var fileUrl = _useQueryParams$getAl.file_url; var actionType = _useQueryParams$getAl.action_type; var nonce = _useQueryParams$getAl.nonce; var returnToParam = _useQueryParams$getAl.return_to; var noAutomaticRedirectParam = _useQueryParams$getAl.no_automatic_redirect; var _useUploadKit = useUploadKit(); var uploading = _useUploadKit.uploading; var error = _useUploadKit.error; var uploadKit = _useUploadKit.uploadKit; var attemptRedirect = useReturnToRedirect(data.returnTo).attemptRedirect; var headerContent = /*#__PURE__*/ react.default.createElement(PageHeader, { title: (0, _wordpress_i18n.__)("Import", "elementor") }); var onFileSelect = function onFileSelect(file) { dispatch({ type: "SET_IMPORT_STATUS", payload: IMPORT_STATUS.UPLOADING }); dispatch({ type: "SET_FILE", payload: file }); }; var handleTryAgain = function handleTryAgain() { uploadKit(); }; var handleCloseError = function handleCloseError() { var _data$kitUploadParams; var _data$kitUploadParams2; if (attemptRedirect()) return; if (data.file) return dispatch({ type: "SET_EXPORT_STATUS", payload: IMPORT_STATUS.CUSTOMIZING }); var path = "admin.php?page=elementor-tools#tab-import-export-kit"; if ("cloud" === (data === null || data === void 0 || (_data$kitUploadParams = data.kitUploadParams) === null || _data$kitUploadParams === void 0 ? void 0 : _data$kitUploadParams.source)) path = "admin.php?page=elementor-app&source=kit_import#kit-library/cloud"; else if ("kit-library" === (data === null || data === void 0 || (_data$kitUploadParams2 = data.kitUploadParams) === null || _data$kitUploadParams2 === void 0 ? void 0 : _data$kitUploadParams2.source)) path = "admin.php?page=elementor-app&source=kit_import#kit-library"; window.top.location = elementorAppConfig.admin_url + path; }; (0, react.useEffect)(function() { dispatch({ type: "RESET_STATE" }); }, [dispatch]); (0, react.useEffect)(function() { if (data.uploadedData) if (data.actionType === ACTION_TYPE.APPLY_ALL) { var _data$uploadedData; var _data$uploadedData2; var _data$uploadedData3; var _data$uploadedData4; var includes = []; if ((_data$uploadedData = data.uploadedData) !== null && _data$uploadedData !== void 0 && (_data$uploadedData = _data$uploadedData.manifest) !== null && _data$uploadedData !== void 0 && _data$uploadedData["site-settings"]) includes.push("settings"); if (0 < Object.keys(((_data$uploadedData2 = data.uploadedData) === null || _data$uploadedData2 === void 0 || (_data$uploadedData2 = _data$uploadedData2.manifest) === null || _data$uploadedData2 === void 0 ? void 0 : _data$uploadedData2.templates) || {}).length) includes.push("templates"); if ((_data$uploadedData3 = data.uploadedData) !== null && _data$uploadedData3 !== void 0 && (_data$uploadedData3 = _data$uploadedData3.manifest) !== null && _data$uploadedData3 !== void 0 && _data$uploadedData3.content) includes.push("content"); if ((_data$uploadedData4 = data.uploadedData) !== null && _data$uploadedData4 !== void 0 && (_data$uploadedData4 = _data$uploadedData4.manifest) !== null && _data$uploadedData4 !== void 0 && _data$uploadedData4.plugins) includes.push("plugins"); dispatch({ type: "ADD_INCLUDES", payload: includes }); dispatch({ type: "SET_IMPORT_STATUS", payload: IMPORT_STATUS.IMPORTING }); navigate("import-customization/process"); } else { dispatch({ type: "SET_IMPORT_STATUS", payload: IMPORT_STATUS.CUSTOMIZING }); navigate("import-customization/content"); } }, [ data.uploadedData, dispatch, navigate, data.actionType ]); (0, react.useEffect)(function() { if (id || fileUrl) { dispatch({ type: "SET_KIT_UPLOAD_PARAMS", payload: { id, source: referrer, fileUrl, nonce } }); if (actionType) dispatch({ type: "SET_ACTION_TYPE", payload: actionType }); if (returnToParam) dispatch({ type: "SET_RETURN_TO", payload: returnToParam }); if ("true" === noAutomaticRedirectParam) dispatch({ type: "SET_NO_AUTOMATIC_REDIRECT", payload: true }); dispatch({ type: "SET_IMPORT_STATUS", payload: IMPORT_STATUS.UPLOADING }); } }, [ id, referrer, fileUrl, actionType, nonce, returnToParam, noAutomaticRedirectParam, dispatch ]); (0, react.useEffect)(function() { AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitImportUploadBox); }, []); return /*#__PURE__*/ react.default.createElement(BaseLayout, { topBar: /*#__PURE__*/ react.default.createElement(TopBar, null, headerContent) }, function renderContent() { if (uploading || referrer) return /*#__PURE__*/ react.default.createElement(CenteredContent, { "data-testid": "import-loader" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.CircularProgress, { size: 30 })); return /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { "data-testid": "content-container", direction: "column", alignItems: "flex-start", justifyContent: "center", sx: { pt: 8, gap: 7, maxWidth: 1080, mx: "auto" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "column", sx: { gap: 3 } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h4", color: "text.primary", "data-testid": "import-title" }, (0, _wordpress_i18n.__)("Import a website template", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body1", color: "text.secondary", "data-testid": "import-description" }, (0, _wordpress_i18n.__)("Upload a file with templates, site settings, content, etc., and apply them to your site ", "elementor"), /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { href: "#", color: "info.light", sx: { ml: 1, textDecoration: "none" }, "data-testid": "import-learn-more-link" }, (0, _wordpress_i18n.__)("Learn more", "elementor")))), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { sx: { width: "100%" }, "data-testid": "import-card" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { p: 0 }, "data-testid": "import-card-content" }, /*#__PURE__*/ react.default.createElement(DropZone, { onFileSelect })))); }(), /*#__PURE__*/ react.default.createElement(ProcessingErrorDialog, { error, handleClose: handleCloseError, handleTryAgain })); } //#endregion //#region app/modules/import-export-customization/assets/js/import/pages/import-complete.js init_defineProperty$1(); init_slicedToArray(); init_es$1(); init_apps_event_tracking(); function ownKeys$18(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; } __name(ownKeys$18, "ownKeys"); function _objectSpread$17(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$18(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$18(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$17, "_objectSpread"); function ImportComplete() { var _data$uploadedData; var _data$kitUploadParams; var _runnersState$templat2; var _elementorAppConfig; var _data$kitUploadParams2; var _useImportContext = useImportContext(); var data = _useImportContext.data; var isCompleted = _useImportContext.isCompleted; var runnersState = _useImportContext.runnersState; var includes = data.includes; var analytics = data.analytics; var uploadedData = data.uploadedData; var duration = data.duration; var navigate = useNavigate(); var attemptRedirect = useReturnToRedirect(data.returnTo).attemptRedirect; var handleDone = function handleDone() { if (attemptRedirect()) return; window.top.location = elementorAppConfig.admin_url; }; var title = (data === null || data === void 0 || (_data$uploadedData = data.uploadedData) === null || _data$uploadedData === void 0 || (_data$uploadedData = _data$uploadedData.manifest) === null || _data$uploadedData === void 0 ? void 0 : _data$uploadedData.title) || ""; var kitId = (data === null || data === void 0 || (_data$kitUploadParams = data.kitUploadParams) === null || _data$kitUploadParams === void 0 ? void 0 : _data$kitUploadParams.id) || ""; var getTemplatesSummary = (0, react.useCallback)(function() { var _runnersState$templat; var _elementorAppConfig$i; var templatesSummary = runnersState === null || runnersState === void 0 || (_runnersState$templat = runnersState.templates) === null || _runnersState$templat === void 0 ? void 0 : _runnersState$templat.succeed_summary; if (!templatesSummary) return (0, _wordpress_i18n.__)("No templates imported", "elementor"); var summaryTitles = ((_elementorAppConfig$i = elementorAppConfig["import-export-customization"]) === null || _elementorAppConfig$i === void 0 || (_elementorAppConfig$i = _elementorAppConfig$i.summaryTitles) === null || _elementorAppConfig$i === void 0 ? void 0 : _elementorAppConfig$i.templates) || {}; var summaryParts = Object.entries(templatesSummary).map(function(_ref) { var _ref2 = _slicedToArray(_ref, 2); var docType = _ref2[0]; var count = _ref2[1]; var label = summaryTitles[docType]; if (!label) return null; var itemTitle = count > 1 ? label.plural : label.single; return "".concat(count, " ").concat(itemTitle); }).filter(function(part) { return part !== null; }); return summaryParts.length > 0 ? summaryParts.join(" | ") : (0, _wordpress_i18n.__)("No templates imported", "elementor"); }, [runnersState === null || runnersState === void 0 || (_runnersState$templat2 = runnersState.templates) === null || _runnersState$templat2 === void 0 ? void 0 : _runnersState$templat2.succeed_summary]); var getContentSummary = (0, react.useCallback)(function() { var _elementorAppConfig$i2; var elementorContent = runnersState === null || runnersState === void 0 ? void 0 : runnersState["elementor-content"]; var wpContent = runnersState === null || runnersState === void 0 ? void 0 : runnersState["wp-content"]; var content = runnersState === null || runnersState === void 0 ? void 0 : runnersState.content; var taxonomies = runnersState === null || runnersState === void 0 ? void 0 : runnersState.taxonomies; var contentCounts = {}; var summaryTitles = ((_elementorAppConfig$i2 = elementorAppConfig["import-export-customization"]) === null || _elementorAppConfig$i2 === void 0 || (_elementorAppConfig$i2 = _elementorAppConfig$i2.summaryTitles) === null || _elementorAppConfig$i2 === void 0 ? void 0 : _elementorAppConfig$i2.content) || {}; var countSucceedItems = function countSucceedItems(contentSection) { if (!contentSection) return {}; var counts = {}; Object.entries(contentSection).forEach(function(_ref3) { var _ref4 = _slicedToArray(_ref3, 2); var docType = _ref4[0]; var result = _ref4[1]; if (result !== null && result !== void 0 && result.succeed && Object.keys(result.succeed).length > 0) counts[docType] = (counts[docType] || 0) + Object.keys(result.succeed).length; }); return counts; }; [ countSucceedItems(wpContent), countSucceedItems(content), countSucceedItems(elementorContent) ].forEach(function(counts) { Object.entries(counts).forEach(function(_ref5) { var _ref6 = _slicedToArray(_ref5, 2); var docType = _ref6[0]; var count = _ref6[1]; contentCounts[docType] = (contentCounts[docType] || 0) + count; }); }); var totalTaxonomies = 0; if (taxonomies) Object.values(taxonomies).forEach(function(taxonomy) { Object.values(taxonomy).forEach(function(terms) { totalTaxonomies += terms.length; }); }); var totalNavMenuItems = 0; [ wpContent, content, elementorContent ].forEach(function(contentSection) { var _contentSection$nav_m; if (contentSection !== null && contentSection !== void 0 && (_contentSection$nav_m = contentSection.nav_menu_item) !== null && _contentSection$nav_m !== void 0 && _contentSection$nav_m.succeed) totalNavMenuItems += Object.keys(contentSection.nav_menu_item.succeed).length; }); if (!(Object.keys(contentCounts).length > 0 || totalTaxonomies > 0 || totalNavMenuItems > 0)) return (0, _wordpress_i18n.__)("No content imported", "elementor"); var summaryParts = []; Object.entries(contentCounts).forEach(function(_ref7) { var _ref8 = _slicedToArray(_ref7, 2); var docType = _ref8[0]; var count = _ref8[1]; var label = summaryTitles[docType]; if (label && count > 0) { var itemTitle = count > 1 ? label.plural : label.single; summaryParts.push("".concat(count, " ").concat(itemTitle)); } }); if (totalTaxonomies > 0) { var taxonomyLabel = totalTaxonomies > 1 ? (0, _wordpress_i18n.__)("Taxonomies", "elementor") : (0, _wordpress_i18n.__)("Taxonomy", "elementor"); summaryParts.push("".concat(totalTaxonomies, " ").concat(taxonomyLabel)); } if (totalNavMenuItems > 0) { var menuLabel = totalNavMenuItems > 1 ? (0, _wordpress_i18n.__)("Menus", "elementor") : (0, _wordpress_i18n.__)("Menu", "elementor"); summaryParts.push("".concat(totalNavMenuItems, " ").concat(menuLabel)); } return summaryParts.length > 0 ? summaryParts.join(" | ") : (0, _wordpress_i18n.__)("No content imported", "elementor"); }, [runnersState]); var getPluginsSummary = (0, react.useCallback)(function() { var plugins = Array.isArray(runnersState === null || runnersState === void 0 ? void 0 : runnersState.plugins) ? runnersState === null || runnersState === void 0 ? void 0 : runnersState.plugins : Object.values((runnersState === null || runnersState === void 0 ? void 0 : runnersState.plugins) || {}); return runnersState !== null && runnersState !== void 0 && runnersState.plugins ? plugins.join(" | ") : (0, _wordpress_i18n.__)("No plugins imported", "elementor"); }, [runnersState === null || runnersState === void 0 ? void 0 : runnersState.plugins]); var getSettingsSummary = (0, react.useCallback)(function() { var _data$customization; var _data$uploadedData2; var siteSettings = data.includes.includes("settings") ? (data === null || data === void 0 || (_data$customization = data.customization) === null || _data$customization === void 0 ? void 0 : _data$customization.settings) || (data === null || data === void 0 || (_data$uploadedData2 = data.uploadedData) === null || _data$uploadedData2 === void 0 ? void 0 : _data$uploadedData2.manifest["site-settings"]) || {} : {}; if (!Object.keys(siteSettings).length || !Object.keys(runnersState["site-settings"] || {}).length) return (0, _wordpress_i18n.__)("No settings imported", "elementor"); var summary = buildKitSettingsSummary(siteSettings); return summary.length > 0 ? summary : (0, _wordpress_i18n.__)("No settings imported", "elementor"); }, [data, runnersState]); var summaryData = (0, react.useMemo)(function() { return { content: { title: (0, _wordpress_i18n.__)("Content", "elementor"), subTitle: getContentSummary() }, templates: { title: (0, _wordpress_i18n.__)("Templates", "elementor"), subTitle: getTemplatesSummary() }, settings: { title: (0, _wordpress_i18n.__)("Site settings", "elementor"), subTitle: getSettingsSummary() }, plugins: { title: (0, _wordpress_i18n.__)("Plugins", "elementor"), subTitle: getPluginsSummary() } }; }, [ getPluginsSummary, getTemplatesSummary, getSettingsSummary, getContentSummary ]); (0, react.useEffect)(function() { if (!isCompleted) navigate("/import-customization", { replace: true }); }, [isCompleted, navigate]); var footerContent = /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", spacing: 1 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "outlined", color: "secondary", size: "small", "data-testid": "see-it-live-button", href: (_elementorAppConfig = elementorAppConfig) === null || _elementorAppConfig === void 0 ? void 0 : _elementorAppConfig.home_url, target: "_blank" }, (0, _wordpress_i18n.__)("See it Live", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", color: "primary", size: "small", onClick: handleDone, "data-testid": "close-button" }, (0, _wordpress_i18n.__)("Close", "elementor"))); var headerContent = /*#__PURE__*/ react.default.createElement(PageHeader, { title: (0, _wordpress_i18n.__)("Import", "elementor") }); (0, react.useEffect)(function() { AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitImportSummary); }, []); var kitSource = (data === null || data === void 0 || (_data$kitUploadParams2 = data.kitUploadParams) === null || _data$kitUploadParams2 === void 0 ? void 0 : _data$kitUploadParams2.source) || "file"; var isFromKitsLibrary = "kit-library" === kitSource; (0, react.useEffect)(function() { var _uploadedData$manifes; AppsEventTracking.sendImportKitCustomization(_objectSpread$17(_objectSpread$17(_objectSpread$17({ kit_source: kitSource, kit_import_content: includes.includes("content"), kit_import_templates: includes.includes("templates"), kit_import_settings: includes.includes("settings"), kit_import_plugins: includes.includes("plugins"), kit_import_deselected: analytics === null || analytics === void 0 ? void 0 : analytics.customization, kit_description: !!(uploadedData !== null && uploadedData !== void 0 && (_uploadedData$manifes = uploadedData.manifest) !== null && _uploadedData$manifes !== void 0 && _uploadedData$manifes.description) }, kitId && isFromKitsLibrary && { kit_import_id: kitId }), title && isFromKitsLibrary && { kit_import_title: title }), duration && { kit_import_duration: duration })); }, [ includes, analytics, uploadedData, data, kitId, title, duration, kitSource, isFromKitsLibrary ]); return /*#__PURE__*/ react.default.createElement(BaseLayout, { topBar: /*#__PURE__*/ react.default.createElement(TopBar, null, headerContent), footer: /*#__PURE__*/ react.default.createElement(Footer, null, footerContent) }, /*#__PURE__*/ react.default.createElement(CenteredContent, { hasFooter: true, maxWidth: "800px" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 3, alignItems: "center", "data-testid": "import-complete-content" }, /*#__PURE__*/ react.default.createElement(CompleteIcon, { imageSrc: elementorAppConfig.assets_url + "images/kit-is-live.svg", altText: (0, _wordpress_i18n.__)("Kit is live illustration", "elementor"), testId: "import-complete-icon" }), /*#__PURE__*/ react.default.createElement(CompleteHeading, { title: (0, _wordpress_i18n.__)("Your website template is now live on your site!", "elementor"), subtitle: (0, _wordpress_i18n.__)("You've imported and applied the following to your site:", "elementor"), testId: "import-complete-heading" }), /*#__PURE__*/ react.default.createElement(CompleteSummary, { summaryData, testId: "import-complete-summary" }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { mt: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", justifyContent: "center", alignItems: "center", spacing: 3 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: "text.secondary" }, (0, _wordpress_i18n.__)("Build sites faster with Website Templates.", "elementor"), /*#__PURE__*/ react.default.createElement(_elementor_ui.Link, { href: "https://go.elementor.com/app-what-are-kits", color: "info.light", target: "_blank", sx: { ml: 1, textDecoration: "none" } }, (0, _wordpress_i18n.__)("Show me how", "elementor")))))))); } //#endregion //#region app/modules/import-export-customization/assets/js/import/components/import-kit-parts-selection.js function ImportKitPartsSelection() { var _useImportContext = useImportContext(); var data = _useImportContext.data; var dispatch = _useImportContext.dispatch; var handleCheckboxChange = function handleCheckboxChange(itemType) { var isChecked = data.includes.includes(itemType); var kitItem = kitContentData.find(function(item) { return item.type === itemType; }); if (isChecked && kitItem !== null && kitItem !== void 0 && kitItem.required) return; dispatch({ type: isChecked ? "REMOVE_INCLUDE" : "ADD_INCLUDE", payload: itemType }); }; var handleSaveCustomization = function handleSaveCustomization(key, payload, hasEnabledCustomization) { dispatch({ type: "SET_CUSTOMIZATION", payload: { key, value: payload } }); if (hasEnabledCustomization) dispatch({ type: "ADD_INCLUDE", payload: key }); else dispatch({ type: "REMOVE_INCLUDE", payload: key }); }; (0, react.useEffect)(function() { if (data.uploadedData) { var _data$uploadedData; var _data$uploadedData2; var _data$uploadedData3; var includes = []; if ((_data$uploadedData = data.uploadedData) !== null && _data$uploadedData !== void 0 && (_data$uploadedData = _data$uploadedData.manifest) !== null && _data$uploadedData !== void 0 && _data$uploadedData["site-settings"]) includes.push("settings"); if (0 < Object.keys(((_data$uploadedData2 = data.uploadedData) === null || _data$uploadedData2 === void 0 || (_data$uploadedData2 = _data$uploadedData2.manifest) === null || _data$uploadedData2 === void 0 ? void 0 : _data$uploadedData2.templates) || {}).length && elementorAppConfig.hasPro) includes.push("templates"); if ((_data$uploadedData3 = data.uploadedData) !== null && _data$uploadedData3 !== void 0 && (_data$uploadedData3 = _data$uploadedData3.manifest) !== null && _data$uploadedData3 !== void 0 && _data$uploadedData3.content) includes.push("content"); dispatch({ type: "ADD_INCLUDES", payload: includes }); } }, [data.uploadedData, dispatch]); return /*#__PURE__*/ react.default.createElement(KitPartsSelection, { onCheckboxChange: handleCheckboxChange, handleSaveCustomization, testId: "import-kit-parts-content" }); } //#endregion //#region app/modules/import-export-customization/assets/js/import/pages/import-customization.js init_es$1(); init_apps_event_tracking(); var headerContent$1 = /*#__PURE__*/ react.default.createElement(PageHeader, { title: (0, _wordpress_i18n.__)("Import", "elementor") }); function ImportCustomization() { var _useImportContext = useImportContext(); var isCustomizing = _useImportContext.isCustomizing; var dispatch = _useImportContext.dispatch; var isProcessing = _useImportContext.isProcessing; var data = _useImportContext.data; var navigate = useNavigate(); (0, react.useEffect)(function() { AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.kitImportCustomization); }, []); var footerContent = /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { direction: "row", spacing: 1 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "text", color: "secondary", size: "small", onClick: function onClick() { if (data !== null && data !== void 0 && data.kitUploadParams) { var _data$kitUploadParams; var _data$kitUploadParams2; var url = ""; if ("cloud" === (data === null || data === void 0 || (_data$kitUploadParams = data.kitUploadParams) === null || _data$kitUploadParams === void 0 ? void 0 : _data$kitUploadParams.source)) url = "kit-library/cloud"; else if ("kit-library" === (data === null || data === void 0 || (_data$kitUploadParams2 = data.kitUploadParams) === null || _data$kitUploadParams2 === void 0 ? void 0 : _data$kitUploadParams2.source)) url = "kit-library"; navigate(url, { replace: true }); } else { dispatch({ type: "RESET_STATE" }); dispatch({ type: "SET_IMPORT_STATUS", payload: IMPORT_STATUS.PENDING }); } }, "data-testid": "import-back-button" }, (0, _wordpress_i18n.__)("Back", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Button, { variant: "contained", color: "primary", size: "small", onClick: function onClick() { dispatch({ type: "SET_IMPORT_STATUS", payload: IMPORT_STATUS.IMPORTING }); navigate("import-customization/process"); }, "data-testid": "import-apply-button" }, (0, _wordpress_i18n.__)("Import and apply", "elementor"))); (0, react.useEffect)(function() { if (isProcessing) navigate("import-customization/process"); else if (!isCustomizing) navigate("import-customization", { replace: true }); }, [ isProcessing, isCustomizing, navigate ]); return /*#__PURE__*/ react.default.createElement(BaseLayout, { topBar: /*#__PURE__*/ react.default.createElement(TopBar, null, headerContent$1), footer: /*#__PURE__*/ react.default.createElement(Footer, null, footerContent) }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 4, sx: { mt: 4, mx: "auto" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 2 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h4", component: "h2", gutterBottom: true, color: "text.primary" }, (0, _wordpress_i18n.__)("Select which parts you want to apply", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle2" }, (0, _wordpress_i18n.__)("These are the templates, content and site settings that come with your website templates.", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle2" }, (0, _wordpress_i18n.__)("All items are already selected by default. Uncheck the ones you don't want.", "elementor")))), /*#__PURE__*/ react.default.createElement(ImportKitPartsSelection, null))); } //#endregion //#region app/modules/import-export-customization/assets/js/import/hooks/use-import-kit.js init_defineProperty$1(); init_slicedToArray(); init_asyncToGenerator(); function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0; var F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o; var a = !0; var u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } __name(_createForOfIteratorHelper$1, "_createForOfIteratorHelper"); function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); 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$1(r, a) : void 0; } } __name(_unsupportedIterableToArray$1, "_unsupportedIterableToArray"); function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } __name(_arrayLikeToArray$1, "_arrayLikeToArray"); function request(_x) { return _request.apply(this, arguments); } function _request() { _request = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee3(_ref) { var _window$wpApiSettings; var data; var path; var _ref$method; var method; var baseUrl; var requestUrl; var response; var result; var _result$data; var _result$data2; var _result$data3; var errorMessage; var errorCode; return import_regenerator$1.default.wrap(function(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: data = _ref.data, path = _ref.path, _ref$method = _ref.method, method = _ref$method === void 0 ? "POST" : _ref$method; baseUrl = elementorAppConfig["import-export-customization"].restApiBaseUrl; requestUrl = "".concat(baseUrl, "/").concat(path); _context3.next = 1; return fetch(requestUrl, { method, headers: { "Content-Type": "application/json", "X-WP-Nonce": ((_window$wpApiSettings = window.wpApiSettings) === null || _window$wpApiSettings === void 0 ? void 0 : _window$wpApiSettings.nonce) || "" }, body: JSON.stringify(data) }); case 1: response = _context3.sent; _context3.next = 2; return response.json(); case 2: result = _context3.sent; if (response.ok) { _context3.next = 3; break; } errorMessage = (result === null || result === void 0 || (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.message) || "HTTP error! with the following code: ".concat(result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.code); errorCode = 408 === (response === null || response === void 0 ? void 0 : response.status) ? "timeout" : result === null || result === void 0 || (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3.code; throw new ImportExportError(errorMessage, errorCode); case 3: return _context3.abrupt("return", result); case 4: case "end": return _context3.stop(); } }, _callee3); })); return _request.apply(this, arguments); } var IMPORT_PROCESSING_STATUS = { PENDING: "PENDING", IN_PROGRESS: "IN_PROGRESS", DONE: "DONE" }; function useImportKit(_ref2) { var data = _ref2.data; var includes = _ref2.includes; var customization = _ref2.customization; var isProcessing = _ref2.isProcessing; var dispatch = _ref2.dispatch; var _useState2 = _slicedToArray((0, react.useState)(IMPORT_PROCESSING_STATUS.PENDING), 2); var status = _useState2[0]; var setImportStatus = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(null), 2); var error = _useState4[0]; var setError = _useState4[1]; var _useState6 = _slicedToArray((0, react.useState)(null), 2); var startTime = _useState6[0]; var setStartTime = _useState6[1]; var runImportRunners = /*#__PURE__*/ function() { var _ref3 = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee() { var session; var runners; var stopIterations; var _iterator; var _step; var runner; var _result$data$imported; var result; var runnerKey; var endTime; var millisecondsToSeconds; var importDuration; var _t; var _t2; return import_regenerator$1.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: setImportStatus(IMPORT_PROCESSING_STATUS.IN_PROGRESS); session = data.importedData.session; runners = data.importedData.runners; stopIterations = null; _iterator = _createForOfIteratorHelper$1(runners); _context.prev = 1; _iterator.s(); case 2: if ((_step = _iterator.n()).done) { _context.next = 8; break; } runner = _step.value; _context.prev = 3; if (!stopIterations) { _context.next = 4; break; } return _context.abrupt("continue", 8); case 4: _context.next = 5; return request({ data: { session, runner }, path: "import-runner" }); case 5: result = _context.sent; runnerKey = "elementor-content" === runner ? "content" : runner; dispatch({ type: "SET_RUNNERS_STATE", payload: _defineProperty$1({}, runnerKey, ((_result$data$imported = result.data.imported_data) === null || _result$data$imported === void 0 ? void 0 : _result$data$imported[runnerKey]) || result.data[runnerKey]) }); _context.next = 7; break; case 6: _context.prev = 6; _t = _context["catch"](3); stopIterations = _t; setError(_t); case 7: _context.next = 2; break; case 8: _context.next = 10; break; case 9: _context.prev = 9; _t2 = _context["catch"](1); _iterator.e(_t2); case 10: _context.prev = 10; _iterator.f(); return _context.finish(10); case 11: if (startTime) { endTime = Date.now(); millisecondsToSeconds = 1e3; importDuration = (endTime - startTime) / millisecondsToSeconds; dispatch({ type: "SET_DURATION", payload: Number(importDuration.toFixed(2)) }); } setImportStatus(IMPORT_PROCESSING_STATUS.DONE); if (!stopIterations) dispatch({ type: "SET_IMPORT_STATUS", payload: IMPORT_STATUS.COMPLETED }); case 12: case "end": return _context.stop(); } }, _callee, null, [[ 1, 9, 10, 11 ], [3, 6]]); })); return function runImportRunners() { return _ref3.apply(this, arguments); }; }(); function importKit() { return _importKit.apply(this, arguments); } function _importKit() { _importKit = _asyncToGenerator(/*#__PURE__*/ import_regenerator$1.default.mark(function _callee2() { var _data$kitUploadParams; var _data$kitUploadParams2; var _data$uploadedData; var importData; var result; var _t3; return import_regenerator$1.default.wrap(function(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.prev = 0; setError(null); setStartTime(Date.now()); setImportStatus(IMPORT_PROCESSING_STATUS.IN_PROGRESS); importData = { id: (_data$kitUploadParams = data.kitUploadParams) === null || _data$kitUploadParams === void 0 ? void 0 : _data$kitUploadParams.id, referrer: (_data$kitUploadParams2 = data.kitUploadParams) === null || _data$kitUploadParams2 === void 0 ? void 0 : _data$kitUploadParams2.referrer, session: data === null || data === void 0 || (_data$uploadedData = data.uploadedData) === null || _data$uploadedData === void 0 ? void 0 : _data$uploadedData.session, include: includes, customization }; _context2.next = 1; return request({ data: importData, path: "import" }); case 1: result = _context2.sent; dispatch({ type: "SET_IMPORTED_DATA", payload: result.data }); _context2.next = 3; break; case 2: _context2.prev = 2; _t3 = _context2["catch"](0); setError(_t3); setImportStatus(IMPORT_PROCESSING_STATUS.DONE); case 3: case "end": return _context2.stop(); } }, _callee2, null, [[0, 2]]); })); return _importKit.apply(this, arguments); } (0, react.useEffect)(function() { if (isProcessing && data.includes.length) importKit(); }, [data.includes, isProcessing]); (0, react.useEffect)(function() { if (isProcessing && data.importedData && !error) runImportRunners(); }, [ data.importedData, isProcessing, error ]); return { status, error, importKit }; } //#endregion //#region app/modules/import-export-customization/assets/js/import/components/plugin-status-item.js function PluginStatusItem(_ref) { var name = _ref.name; var status = _ref.status; var isActivated = "activated" === status; return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { display: "flex", alignItems: "center", gap: 1.5 }, /*#__PURE__*/ react.default.createElement(_elementor_ui.SvgIcon, { sx: { color: isActivated ? "text.primary" : "text.muted", fontSize: 20 }, viewBox: "0 0 24 24" }, /*#__PURE__*/ react.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" })), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "body2", color: isActivated ? "text.primary" : "text.muted" }, name, " ", status)); } PluginStatusItem.propTypes = { name: import_prop_types$82.default.string.isRequired, status: import_prop_types$82.default.string }; //#endregion //#region app/modules/import-export-customization/assets/js/import/components/plugin-activation.js init_typeof$1(); function PluginActivation(_ref) { var _data$uploadedData; var plugins = _ref.plugins; var data = useImportContext().data; var pluginsToActivate = ((_data$uploadedData = data.uploadedData) === null || _data$uploadedData === void 0 || (_data$uploadedData = _data$uploadedData.manifest) === null || _data$uploadedData === void 0 || (_data$uploadedData = _data$uploadedData.plugins) === null || _data$uploadedData === void 0 ? void 0 : _data$uploadedData.filter(function(plugin) { var _data$customization; if (data !== null && data !== void 0 && (_data$customization = data.customization) !== null && _data$customization !== void 0 && _data$customization.plugins) return true === data.customization.plugins[plugin.plugin]; return true; })) || []; if (!pluginsToActivate.length) return null; var pluginsArray = []; if (Array.isArray(plugins)) pluginsArray = plugins; else if (plugins && "object" === _typeof$1(plugins)) pluginsArray = Object.values(plugins); return /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle1", color: "text.secondary", sx: { mb: 2 } }, (0, _wordpress_i18n.__)("Activating plugins:", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Box, { sx: { width: "100%", maxWidth: 500, borderRadius: 1, border: 1, borderColor: "action.focus", p: 2.5, maxHeight: 300, overflow: "auto" } }, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 1.5 }, pluginsToActivate.map(function(plugin) { var isActivated = pluginsArray.includes(plugin.name); return /*#__PURE__*/ react.default.createElement(PluginStatusItem, { key: plugin.name, name: plugin.name, status: isActivated ? "activated" : "activating" }); })))); } PluginActivation.propTypes = { plugins: import_prop_types$82.default.arrayOf(import_prop_types$82.default.string) }; //#endregion //#region app/modules/import-export-customization/assets/js/import/pages/import-process.js init_es$1(); init_apps_event_tracking(); var headerContent = /*#__PURE__*/ react.default.createElement(PageHeader, { title: (0, _wordpress_i18n.__)("Import", "elementor") }); function ImportProcess() { var _useImportContext = useImportContext(); var data = _useImportContext.data; var dispatch = _useImportContext.dispatch; var isProcessing = _useImportContext.isProcessing; var runnersState = _useImportContext.runnersState; var includes = data.includes; var customization = data.customization; var _useImportKit = useImportKit({ data, includes, customization, isProcessing, dispatch }); var status = _useImportKit.status; var error = _useImportKit.error; var importKit = _useImportKit.importKit; var navigate = useNavigate(); var attemptRedirect = useReturnToRedirect(data.returnTo).attemptRedirect; (0, react.useEffect)(function() { if (!error) { if (IMPORT_PROCESSING_STATUS.DONE === status) { AppsEventTracking.sendKitImportStatus(null); if (!data.noAutomaticRedirect && attemptRedirect()) return; navigate("import-customization/complete"); } else if (!isProcessing) navigate("import-customization", { replace: true }); } else AppsEventTracking.sendKitImportStatus(error); }, [ status, error, navigate, isProcessing, attemptRedirect, data.noAutomaticRedirect ]); return /*#__PURE__*/ react.default.createElement(BaseLayout, { topBar: /*#__PURE__*/ react.default.createElement(TopBar, null, headerContent) }, /*#__PURE__*/ react.default.createElement(CenteredContent, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 3, alignItems: "center" }, status === IMPORT_PROCESSING_STATUS.IN_PROGRESS && !error && /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, { spacing: 3, alignItems: "center" }, /*#__PURE__*/ react.default.createElement(_elementor_ui.CircularProgress, { size: 30 }), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "h5" }, (0, _wordpress_i18n.__)("Setting up your website template...", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Stack, null, /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle1" }, (0, _wordpress_i18n.__)("This usually takes a few moments.", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_ui.Typography, { variant: "subtitle1" }, (0, _wordpress_i18n.__)("Don't close this window until the process is finished.", "elementor")))), /*#__PURE__*/ react.default.createElement(PluginActivation, { plugins: runnersState === null || runnersState === void 0 ? void 0 : runnersState.plugins })), /*#__PURE__*/ react.default.createElement(ProcessingErrorDialog, { error, handleClose: function handleCloseError() { if (attemptRedirect()) return; dispatch({ type: "SET_IMPORT_STATUS", payload: IMPORT_STATUS.CUSTOMIZING }); navigate("import-customization/content"); }, handleTryAgain: function handleTryAgain() { importKit(); } })))); } //#endregion //#region app/modules/import-export-customization/assets/js/import/import.js init_es$1(); function Import() { return /*#__PURE__*/ react.default.createElement(ImportContextProvider, null, /*#__PURE__*/ react.default.createElement(LocationProvider, { history: _elementor_router.default.appHistory }, /*#__PURE__*/ react.default.createElement(Router, null, /*#__PURE__*/ react.default.createElement(ImportKit, { path: "/", default: true }), /*#__PURE__*/ react.default.createElement(ImportCustomization, { path: "/content" }), /*#__PURE__*/ react.default.createElement(ImportProcess, { path: "/process" }), /*#__PURE__*/ react.default.createElement(ImportComplete, { path: "/complete" })))); } //#endregion //#region app/modules/import-export-customization/assets/js/module.js init_createClass(); init_classCallCheck(); init_defineProperty$1(); function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0; var F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o; var a = !0; var u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); 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; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var ImportExportCustomization = /*#__PURE__*/ _createClass(function ImportExportCustomization() { _classCallCheck(this, ImportExportCustomization); _defineProperty$1(this, "routes", [{ path: "/export-customization/*", component: Export }, { path: "/import-customization/*", component: Import }]); var _iterator = _createForOfIteratorHelper(this.routes); var _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var route = _step.value; _elementor_router.default.addRoute(route); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } }); //#endregion //#region app/modules/kit-library/assets/js/data/kits/commands-data/download-link.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$14(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$14() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$14, "_callSuper"); function _isNativeReflectConstruct$14() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$14 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$14, "_isNativeReflectConstruct"); var DownloadLink = /*#__PURE__*/ function(_$e$modules$CommandDa) { function DownloadLink() { _classCallCheck(this, DownloadLink); return _callSuper$14(this, DownloadLink, arguments); } _inherits$1(DownloadLink, _$e$modules$CommandDa); return _createClass(DownloadLink, null, [{ key: "getEndpointFormat", value: function getEndpointFormat() { return "kits/download-link/{id}"; } }]); }($e.modules.CommandData); //#endregion //#region app/modules/kit-library/assets/js/data/kits/commands-data/favorites.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$13(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$13() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$13, "_callSuper"); function _isNativeReflectConstruct$13() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$13 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$13, "_isNativeReflectConstruct"); var Favorites$1 = /*#__PURE__*/ function(_$e$modules$CommandDa) { function Favorites() { _classCallCheck(this, Favorites); return _callSuper$13(this, Favorites, arguments); } _inherits$1(Favorites, _$e$modules$CommandDa); return _createClass(Favorites, null, [{ key: "getEndpointFormat", value: function getEndpointFormat() { return "kits/favorites/{id}"; } }]); }($e.modules.CommandData); //#endregion //#region app/modules/kit-library/assets/js/data/kits/commands-data/index.js var commands_data_exports$2 = /* @__PURE__ */ __exportAll({ DownloadLink: () => DownloadLink, Favorites: () => Favorites$1, Index: () => Index$4 }); init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$12(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$12() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$12, "_callSuper"); function _isNativeReflectConstruct$12() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$12 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$12, "_isNativeReflectConstruct"); var Index$4 = /*#__PURE__*/ function(_$e$modules$CommandDa) { function Index() { _classCallCheck(this, Index); return _callSuper$12(this, Index, arguments); } _inherits$1(Index, _$e$modules$CommandDa); return _createClass(Index, null, [{ key: "getEndpointFormat", value: function getEndpointFormat() { return "kits/{id}"; } }]); }($e.modules.CommandData); //#endregion //#region app/modules/kit-library/assets/js/data/kits/component.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$11(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$11() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$11, "_callSuper"); function _isNativeReflectConstruct$11() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$11 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$11, "_isNativeReflectConstruct"); var Component$2 = /*#__PURE__*/ function(_$e$modules$Component) { function Component() { _classCallCheck(this, Component); return _callSuper$11(this, Component, arguments); } _inherits$1(Component, _$e$modules$Component); return _createClass(Component, [{ key: "getNamespace", value: function getNamespace() { return "kits"; } }, { key: "defaultData", value: function defaultData() { return this.importCommands(commands_data_exports$2); } }]); }($e.modules.ComponentBase); //#endregion //#region app/modules/kit-library/assets/js/data/taxonomies/commands-data/index.js var commands_data_exports$1 = /* @__PURE__ */ __exportAll({ Index: () => Index$3 }); init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$10(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$10() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$10, "_callSuper"); function _isNativeReflectConstruct$10() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$10 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$10, "_isNativeReflectConstruct"); var Index$3 = /*#__PURE__*/ function(_$e$modules$CommandDa) { function Index() { _classCallCheck(this, Index); return _callSuper$10(this, Index, arguments); } _inherits$1(Index, _$e$modules$CommandDa); return _createClass(Index, null, [{ key: "getEndpointFormat", value: function getEndpointFormat() { return "kit-taxonomies/{id}"; } }]); }($e.modules.CommandData); //#endregion //#region app/modules/kit-library/assets/js/data/taxonomies/component.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$9(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$9() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$9, "_callSuper"); function _isNativeReflectConstruct$9() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$9 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$9, "_isNativeReflectConstruct"); var Component$1 = /*#__PURE__*/ function(_$e$modules$Component) { function Component() { _classCallCheck(this, Component); return _callSuper$9(this, Component, arguments); } _inherits$1(Component, _$e$modules$Component); return _createClass(Component, [{ key: "getNamespace", value: function getNamespace() { return "kit-taxonomies"; } }, { key: "defaultData", value: function defaultData() { return this.importCommands(commands_data_exports$1); } }]); }($e.modules.ComponentBase); //#endregion //#region app/modules/kit-library/assets/js/e-component.js init_defineProperty$1(); init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function ownKeys$17(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; } __name(ownKeys$17, "ownKeys"); function _objectSpread$16(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$17(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$17(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } __name(_objectSpread$16, "_objectSpread"); function _callSuper$8(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$8() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$8, "_callSuper"); function _isNativeReflectConstruct$8() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$8 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$8, "_isNativeReflectConstruct"); var EComponent = /*#__PURE__*/ function(_$e$modules$Component) { function EComponent() { _classCallCheck(this, EComponent); return _callSuper$8(this, EComponent, arguments); } _inherits$1(EComponent, _$e$modules$Component); return _createClass(EComponent, [{ key: "getNamespace", value: function getNamespace() { return "kit-library"; } }, { key: "defaultCommands", value: function defaultCommands() { return _objectSpread$16({}, [ "apply-kit", "approve-import", "approve-selection", "back-to-library", "browse", "change-sort-direction", "change-sort-type", "change-sort-value", "check", "check-item", "check-out-kit", "checking-a-checkbox", "check-kits-on-theme-forest", "checkbox-filtration", "collapse", "choose-file", "choose-site-parts-to-import", "clear-filter", "close", "drop", "enable", "expand", "file-upload", "filter", "filter-selection", "favorite-icon", "go-back", "go-back-to-view-kits", "kit-free-search", "kit-is-live-load", "kit-import", "logo", "mark-as-favorite", "modal-close", "modal-load", "modal-open", "modal-error", "open-site-area", "refetch", "responsive-controls", "see-it-live", "seek-more-info", "sidebar-tag-filter", "skip", "select-organizing-category", "top-bar-change-view", "uncheck", "unchecking-a-checkbox", "view-demo-page", "view-demo-part", "view-overview-page", "cloud-import", "cloud-delete" ].reduce(function(allCommands, command) { return _objectSpread$16(_objectSpread$16({}, allCommands), {}, _defineProperty$1({}, command, function() {})); }, {})); } }]); }($e.modules.ComponentBase); //#endregion //#region app/modules/kit-library/assets/js/data/cloud-kits/commands-data/eligibility.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$7(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$7() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$7, "_callSuper"); function _isNativeReflectConstruct$7() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$7 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$7, "_isNativeReflectConstruct"); var Eligibility = /*#__PURE__*/ function(_$e$modules$CommandDa) { function Eligibility() { _classCallCheck(this, Eligibility); return _callSuper$7(this, Eligibility, arguments); } _inherits$1(Eligibility, _$e$modules$CommandDa); return _createClass(Eligibility, null, [{ key: "getEndpointFormat", value: function getEndpointFormat() { return "cloud-kits/eligibility"; } }]); }($e.modules.CommandData); //#endregion //#region app/modules/kit-library/assets/js/data/cloud-kits/commands-data/quota.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$6(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$6() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$6, "_callSuper"); function _isNativeReflectConstruct$6() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$6 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$6, "_isNativeReflectConstruct"); var Quota = /*#__PURE__*/ function(_$e$modules$CommandDa) { function Quota() { _classCallCheck(this, Quota); return _callSuper$6(this, Quota, arguments); } _inherits$1(Quota, _$e$modules$CommandDa); return _createClass(Quota, null, [{ key: "getEndpointFormat", value: function getEndpointFormat() { return "cloud-kits/quota"; } }]); }($e.modules.CommandData); //#endregion //#region app/modules/kit-library/assets/js/data/cloud-kits/commands-data/index.js var commands_data_exports = /* @__PURE__ */ __exportAll({ Eligibility: () => Eligibility, Index: () => Index$2, Quota: () => Quota }); init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$5(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$5() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$5, "_callSuper"); function _isNativeReflectConstruct$5() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$5 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$5, "_isNativeReflectConstruct"); var Index$2 = /*#__PURE__*/ function(_$e$modules$CommandDa) { function Index() { _classCallCheck(this, Index); return _callSuper$5(this, Index, arguments); } _inherits$1(Index, _$e$modules$CommandDa); return _createClass(Index, null, [{ key: "getEndpointFormat", value: function getEndpointFormat() { return "cloud-kits/{id}"; } }]); }($e.modules.CommandData); //#endregion //#region app/modules/kit-library/assets/js/data/cloud-kits/component.js init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); function _callSuper$4(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$4() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } __name(_callSuper$4, "_callSuper"); function _isNativeReflectConstruct$4() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$4 = function _isNativeReflectConstruct() { return !!t; })(); } __name(_isNativeReflectConstruct$4, "_isNativeReflectConstruct"); var Component = /*#__PURE__*/ function(_$e$modules$Component) { function Component() { _classCallCheck(this, Component); return _callSuper$4(this, Component, arguments); } _inherits$1(Component, _$e$modules$Component); return _createClass(Component, [{ key: "getNamespace", value: function getNamespace() { return "cloud-kits"; } }, { key: "defaultData", value: function defaultData() { return this.importCommands(commands_data_exports); } }]); }($e.modules.ComponentBase); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/envato-promotion.scss var init_envato_promotion$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/envato-promotion.js function EnvatoPromotion() { return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { className: "e-kit-library-promotion", variant: "xl" }, (0, _wordpress_i18n.__)("Looking for more Website Templates?", "elementor"), " ", " ", /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { variant: "underlined", color: "link", url: "https://go.elementor.com/app-envato-kits/", target: "_blank", rel: "noreferrer", text: (0, _wordpress_i18n.__)("Check out Elementor Website Templates on ThemeForest", "elementor") })); } var init_envato_promotion = __esmMin((() => { init_envato_promotion$1(); })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/error-screen.scss var init_error_screen$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/error-screen.js function ErrorScreen(props) { return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, alignItems: "center", justify: "center", direction: "column", className: "e-kit-library__error-screen" }, /*#__PURE__*/ react.default.createElement("img", { src: "".concat(elementorAppConfig.assets_url, "images/no-search-results.svg") }), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", variant: "display-1", className: "e-kit-library__error-screen-title" }, props.title), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { variant: "xl", className: "e-kit-library__error-screen-description" }, props.description, " ", " ", !props.newLineButton && /*#__PURE__*/ react.default.createElement(ErrorScreenButton, props.button)), props.newLineButton && /*#__PURE__*/ react.default.createElement(ErrorScreenButton, props.button)); } var import_prop_types$65, ErrorScreenButton; var init_error_screen = __esmMin((() => { import_prop_types$65 = /* @__PURE__ */ __toESM(require_prop_types()); init_error_screen$1(); ErrorScreenButton = function ErrorScreenButton(props) { return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: props.text, onClick: function onClick() { if (props.action) props.action(); }, url: props.url, target: props.target, color: props.color || "link", variant: props.variant || "" }); }; ErrorScreenButton.propTypes = { text: import_prop_types$65.default.string, action: import_prop_types$65.default.func, url: import_prop_types$65.default.string, target: import_prop_types$65.default.string, color: import_prop_types$65.default.oneOf([ "primary", "secondary", "cta", "link", "disabled" ]), variant: import_prop_types$65.default.oneOf([ "contained", "underlined", "outlined", "" ]) }; ErrorScreen.propTypes = { title: import_prop_types$65.default.string, description: import_prop_types$65.default.string, newLineButton: import_prop_types$65.default.bool, button: import_prop_types$65.default.shape({ text: import_prop_types$65.default.string, action: import_prop_types$65.default.func, url: import_prop_types$65.default.string, target: import_prop_types$65.default.string, category: import_prop_types$65.default.string, color: import_prop_types$65.default.oneOf([ "primary", "secondary", "cta", "link", "disabled" ]), variant: import_prop_types$65.default.oneOf([ "contained", "underlined", "outlined", "" ]) }) }; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-selected-taxonomies.js function useSelectedTaxonomies(taxonomiesFilter) { return (0, react.useMemo)(function() { return Object.values(taxonomiesFilter).reduce(function(current, groupedTaxonomies) { return [].concat(_toConsumableArray(current), _toConsumableArray(groupedTaxonomies)); }); }, [taxonomiesFilter]); } var init_use_selected_taxonomies = __esmMin((() => { init_toConsumableArray(); })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/badge.scss var init_badge$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/badge.js function Badge(props) { return /*#__PURE__*/ react.default.createElement("span", { className: "eps-badge eps-badge--".concat(props.variant, " ").concat(props.className), style: props.style }, props.children); } var import_prop_types$64; var init_badge = __esmMin((() => { import_prop_types$64 = /* @__PURE__ */ __toESM(require_prop_types()); init_badge$1(); Badge.propTypes = { children: import_prop_types$64.default.node, className: import_prop_types$64.default.string, style: import_prop_types$64.default.object, variant: import_prop_types$64.default.oneOf(["sm", "md"]) }; Badge.defaultProps = { className: "", style: {}, variant: "md" }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/filter-indication-text.scss var init_filter_indication_text$1 = __esmMin((() => {})); //#endregion //#region assets/dev/js/utils/tiers.js var TIERS_PRIORITY, TIERS, isTierAtLeast; var init_tiers = __esmMin((() => { TIERS_PRIORITY = Object.freeze([ "free", "essential", "essential-oct2023", "advanced", "expert", "agency" ]); TIERS = Object.freeze(TIERS_PRIORITY.reduce(function(acc, tier) { acc[tier] = tier; return acc; }, {})); isTierAtLeast = function isTierAtLeast(currentTier, expectedTier) { var currentTierIndex = TIERS_PRIORITY.indexOf(currentTier); var expectedTierIndex = TIERS_PRIORITY.indexOf(expectedTier); if (-1 === currentTierIndex || -1 === expectedTierIndex) return false; return currentTierIndex >= expectedTierIndex; }; })); //#endregion //#region app/modules/kit-library/assets/js/models/base-model.js var BaseModel; var init_base_model = __esmMin((() => { init_slicedToArray(); init_classCallCheck(); init_createClass(); BaseModel = /*#__PURE__*/ function() { function BaseModel() { _classCallCheck(this, BaseModel); } return _createClass(BaseModel, [{ key: "clone", value: function clone() { var _this = this; var instance = new this.constructor(); Object.keys(this).forEach(function(key) { instance[key] = _this[key]; }); return instance; } }, { key: "init", value: function init() { var _this2 = this; var data = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; Object.entries(data).forEach(function(_ref) { var _ref2 = _slicedToArray(_ref, 2); var key = _ref2[0]; _this2[key] = _ref2[1]; }); return this; } }]); }(); })); //#endregion //#region app/modules/kit-library/assets/js/models/taxonomy.js function _callSuper$3(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$3() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct$3() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$3 = function _isNativeReflectConstruct() { return !!t; })(); } var SUBSCRIPTION_PLAN, TaxonomyTypes, Taxonomy; var init_taxonomy = __esmMin((() => { init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); init_defineProperty$1(); init_base_model(); __name(_callSuper$3, "_callSuper"); __name(_isNativeReflectConstruct$3, "_isNativeReflectConstruct"); SUBSCRIPTION_PLAN = "subscription_plans"; TaxonomyTypes = [ { key: "categories", label: (0, _wordpress_i18n.__)("Categories", "elementor"), isOpenByDefault: true, data: [] }, { key: "tags", label: (0, _wordpress_i18n.__)("Tags", "elementor"), data: [] }, { key: "features", label: (0, _wordpress_i18n.__)("Features", "elementor"), data: [] }, { key: SUBSCRIPTION_PLAN, label: (0, _wordpress_i18n.__)("Plan", "elementor"), data: [] } ]; Taxonomy = /*#__PURE__*/ function(_BaseModel) { function Taxonomy() { var _this; _classCallCheck(this, Taxonomy); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; _this = _callSuper$3(this, Taxonomy, [].concat(args)); _defineProperty$1(_this, "text", ""); _defineProperty$1(_this, "type", "tag"); _defineProperty$1(_this, "id", null); return _this; } _inherits$1(Taxonomy, _BaseModel); return _createClass(Taxonomy, null, [{ key: "createFromResponse", value: function createFromResponse(taxonomy) { return new Taxonomy().init({ text: taxonomy.text, type: taxonomy.type, id: taxonomy.id || null }); } }]); }(BaseModel); })); //#endregion //#region app/modules/kit-library/assets/js/models/taxonomy-transformer.js function ownKeys$16(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; } function _objectSpread$15(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$16(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$16(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function getTaxonomyFilterItems(taxonomies) { taxonomies = taxonomies ? _toConsumableArray(taxonomies) : []; var taxonomyFilterItems = taxonomies.reduce(function(map, taxonomy) { var formattedTaxonomy = _getFormattedTaxonomyItem(taxonomy); var taxonomyType = TaxonomyTypes.find(function(_ref) { return _ref.key === formattedTaxonomy.type; }); if (!taxonomyType) return map; if (!map[formattedTaxonomy.type]) map[formattedTaxonomy.type] = _objectSpread$15({}, taxonomyType); if (!map[formattedTaxonomy.type].data.find(function(_ref2) { return _ref2.text === formattedTaxonomy.text; })) map[formattedTaxonomy.type].data.push(formattedTaxonomy); return map; }, {}); return TaxonomyTypes.reduce(function(formattedTaxonomies, taxonomyItem) { var _taxonomyFilterItems$; if ((_taxonomyFilterItems$ = taxonomyFilterItems[taxonomyItem.key]) !== null && _taxonomyFilterItems$ !== void 0 && (_taxonomyFilterItems$ = _taxonomyFilterItems$.data) !== null && _taxonomyFilterItems$ !== void 0 && _taxonomyFilterItems$.length) formattedTaxonomies.push(taxonomyFilterItems[taxonomyItem.key]); return formattedTaxonomies; }, []); } function isKitInTaxonomy(kit, taxonomyType, taxonomies) { return "subscription_plans" === taxonomyType ? taxonomies.includes(TierToKeyMap[kit.accessTier]) : taxonomies.some(function(taxonomy) { return kit.taxonomies.includes(taxonomy); }); } function _getFormattedTaxonomyItem(taxonomy) { switch (taxonomy.type) { case SUBSCRIPTION_PLAN: return _getFormattedSubscriptionByPlanTaxonomy(taxonomy); default: return taxonomy; } } function _getTaxonomyIdByText(taxonomyText) { return Object.keys(OldPlanTexts).find(function(id) { return OldPlanTexts[id] === taxonomyText; }); } function _getFormattedTaxonomyId(taxonomyId) { return TaxonomyTransformMap[taxonomyId] || taxonomyId; } function _getFormattedSubscriptionByPlanTaxonomy(taxonomy) { var transformedTaxonomy = new Taxonomy(); transformedTaxonomy.id = _getFormattedTaxonomyId(_getTaxonomyIdByText(taxonomy.text)); transformedTaxonomy.text = NewPlanTexts[transformedTaxonomy.id] || taxonomy.text; transformedTaxonomy.type = taxonomy.type; return transformedTaxonomy; } var FREE, ESSENTIAL, ADVANCED, PRO, EXPERT, AGENCY, OldPlanTexts, NewPlanTexts, TaxonomyTransformMap, TierToKeyMap, PromotionChipText; var init_taxonomy_transformer = __esmMin((() => { init_toConsumableArray(); init_defineProperty$1(); init_tiers(); init_taxonomy(); __name(ownKeys$16, "ownKeys"); __name(_objectSpread$15, "_objectSpread"); FREE = "free"; ESSENTIAL = "essential"; ADVANCED = "advanced"; PRO = "pro"; EXPERT = "expert,"; AGENCY = "agency"; OldPlanTexts = _defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1({}, FREE, (0, _wordpress_i18n.__)("Free", "elementor")), PRO, (0, _wordpress_i18n.__)("Pro", "elementor")), ADVANCED, (0, _wordpress_i18n.__)("Advanced", "elementor")), EXPERT, (0, _wordpress_i18n.__)("Expert", "elementor")), AGENCY, (0, _wordpress_i18n.__)("Agency", "elementor")); NewPlanTexts = _defineProperty$1(_defineProperty$1(_defineProperty$1({}, FREE, (0, _wordpress_i18n.__)("Free", "elementor")), ESSENTIAL, (0, _wordpress_i18n.__)("Essential", "elementor")), ADVANCED, (0, _wordpress_i18n.__)("Advanced & Higher", "elementor")); TaxonomyTransformMap = _defineProperty$1(_defineProperty$1(_defineProperty$1({}, PRO, ESSENTIAL), EXPERT, ADVANCED), AGENCY, ADVANCED); TierToKeyMap = _defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1(_defineProperty$1({}, TIERS.free, FREE), TIERS.essential, ESSENTIAL), TIERS["essential-oct2023"], ADVANCED), TIERS.expert, ADVANCED), TIERS.agency, ADVANCED); PromotionChipText = _defineProperty$1(_defineProperty$1(_defineProperty$1({}, FREE, (0, _wordpress_i18n.__)("Free", "elementor")), ESSENTIAL, (0, _wordpress_i18n.__)("Essential", "elementor")), ADVANCED, (0, _wordpress_i18n.__)("Advanced", "elementor")); })); //#endregion //#region app/modules/kit-library/assets/js/components/filter-indication-text.js function FilterIndicationText(props) { var selectedTaxonomies = useSelectedTaxonomies(props.queryParams.taxonomies); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, className: "e-kit-library__filter-indication" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { className: "e-kit-library__filter-indication-text" }, (0, _wordpress_i18n.sprintf)((0, _wordpress_i18n._n)("Showing %s result for", "Showing %s results for", props.resultCount, "elementor"), !props.resultCount ? (0, _wordpress_i18n.__)("no", "elementor") : props.resultCount), " ", props.queryParams.search && "\"".concat(props.queryParams.search, "\""), " ", selectedTaxonomies.length > 0 && /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, selectedTaxonomies.map(function(taxonomy) { return /*#__PURE__*/ react.default.createElement(Badge, { key: taxonomy, className: "e-kit-library__filter-indication-badge" }, NewPlanTexts[taxonomy] || taxonomy, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: (0, _wordpress_i18n.__)("Remove", "elementor"), hideText: true, icon: "eicon-editor-close", className: "e-kit-library__filter-indication-badge-remove", onClick: function onClick() { props.onRemoveTag(taxonomy); } })); }))), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { className: "e-kit-library__filter-indication-button", text: (0, _wordpress_i18n.__)("Clear all", "elementor"), variant: "underlined", onClick: function onClick() { props.onClear(); } })); } var import_prop_types$63; var init_filter_indication_text = __esmMin((() => { import_prop_types$63 = /* @__PURE__ */ __toESM(require_prop_types()); init_use_selected_taxonomies(); init_badge(); init_filter_indication_text$1(); init_taxonomy_transformer(); FilterIndicationText.propTypes = { queryParams: import_prop_types$63.default.shape({ search: import_prop_types$63.default.string, taxonomies: import_prop_types$63.default.objectOf(import_prop_types$63.default.arrayOf(import_prop_types$63.default.string)), favorite: import_prop_types$63.default.bool }), resultCount: import_prop_types$63.default.number.isRequired, onClear: import_prop_types$63.default.func.isRequired, onRemoveTag: import_prop_types$63.default.func.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/context/return-to-context.js function useReturnTo() { return (0, react.useContext)(ReturnToContext); } function ReturnToProvider(_ref) { var value = _ref.value; var children = _ref.children; return /*#__PURE__*/ react.default.createElement(ReturnToContext.Provider, { value }, children); } var import_prop_types$62, ReturnToContext; var init_return_to_context = __esmMin((() => { import_prop_types$62 = /* @__PURE__ */ __toESM(require_prop_types()); ReturnToContext = (0, react.createContext)(null); ReturnToProvider.propTypes = { children: import_prop_types$62.default.any, value: import_prop_types$62.default.string }; })); //#endregion //#region app/modules/kit-library/assets/js/components/layout/header.js function Header$1(props) { var returnTo = useReturnTo(); var onClose = (0, react.useCallback)(function() { if (window.top !== window) { window.top.$e.run("app/close"); return; } if (returnTo && safeRedirect$1(returnTo)) return; window.top.location = elementorAppConfig.admin_url; }, [returnTo]); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, alignItems: "center", justify: "space-between", className: "eps-app__header" }, props.startColumn || /*#__PURE__*/ react.default.createElement("a", { className: "eps-app__logo-title-wrapper", href: "#/kit-library" }, /*#__PURE__*/ react.default.createElement("i", { className: "eps-app__logo eicon-elementor-circle" }), /*#__PURE__*/ react.default.createElement("h1", { className: "eps-app__title" }, (0, _wordpress_i18n.__)("Website Templates", "elementor"))), props.centerColumn || /*#__PURE__*/ react.default.createElement("span", null), props.endColumn || /*#__PURE__*/ react.default.createElement("div", { style: { flex: 1 } }, /*#__PURE__*/ react.default.createElement(HeaderButtons, { buttons: props.buttons, onClose }))); } var import_prop_types$61; var init_header$1 = __esmMin((() => { import_prop_types$61 = /* @__PURE__ */ __toESM(require_prop_types()); init_header_buttons(); init_return_to_context(); init_redirect(); __name(Header$1, "Header"); Header$1.propTypes = { startColumn: import_prop_types$61.default.node, endColumn: import_prop_types$61.default.node, centerColumn: import_prop_types$61.default.node, buttons: import_prop_types$61.default.arrayOf(import_prop_types$61.default.object), kitName: import_prop_types$61.default.string, pageId: import_prop_types$61.default.string }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/pages/index/index-header.scss var init_index_header$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/pages/index/index-header.js function IndexHeader(props) { var _elementorAppConfig$u; var _elementorAppConfig$u2; var navigate = useNavigate(); var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isInfoModalOpen = _useState2[0]; var setIsInfoModalOpen = _useState2[1]; var importRef = (0, react.useRef)(); var shouldShowImportButton = elementorAppConfig.user.is_administrator || ((_elementorAppConfig$u = (_elementorAppConfig$u2 = elementorAppConfig.user.restrictions) === null || _elementorAppConfig$u2 === void 0 ? void 0 : _elementorAppConfig$u2.includes("json-upload")) !== null && _elementorAppConfig$u !== void 0 ? _elementorAppConfig$u : false); var refetch = props.refetch; var isFetching = props.isFetching; var buttons = (0, react.useMemo)(function() { return [ { id: "info", text: (0, _wordpress_i18n.__)("Info", "elementor"), hideText: true, icon: "eicon-info-circle-o", onClick: function onClick() { setIsInfoModalOpen(true); } }, { id: "refetch", text: (0, _wordpress_i18n.__)("Refetch", "elementor"), hideText: true, icon: "eicon-sync ".concat(isFetching ? "eicon-animation-spin" : ""), onClick: function onClick() { refetch(); } }, shouldShowImportButton && { id: "import", text: (0, _wordpress_i18n.__)("Import", "elementor"), hideText: true, icon: "eicon-upload-circle-o", elRef: importRef, onClick: function onClick() { navigate("/import-customization"); } } ]; }, [ isFetching, refetch, shouldShowImportButton, navigate ]); return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(Header$1, { buttons }), /*#__PURE__*/ react.default.createElement(PopoverDialog, { targetRef: importRef, wrapperClass: "e-kit-library__tooltip" }, (0, _wordpress_i18n.__)("Import Website Template", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.ModalProvider, { title: (0, _wordpress_i18n.__)("Welcome to the Library", "elementor"), show: isInfoModalOpen, setShow: setIsInfoModalOpen }, /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library-header-info-modal-container" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", variant: "h3" }, (0, _wordpress_i18n.__)("What's a Website Template?", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, null, (0, _wordpress_i18n.__)("A Website Template is full, ready-made design that you can apply to your site. It includes all the pages, parts, settings and content that you'd expect in a fully functional website.", "elementor"))), /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library-header-info-modal-container" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", variant: "h3" }, (0, _wordpress_i18n.__)("What's going on in the Website Templates Library?", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, null, (0, _wordpress_i18n.__)("Search & filter for website templates by category and tags, or browse through individual website templates to see what's inside.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), (0, _wordpress_i18n.__)("Once you've picked a winner, apply it to your site!", "elementor"))), /*#__PURE__*/ react.default.createElement("div", null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", variant: "h3" }, (0, _wordpress_i18n.__)("Happy browsing!", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { url: "https://go.elementor.com/app-kit-library-how-to-use-kits/", target: "_blank", rel: "noreferrer", text: (0, _wordpress_i18n.__)("Learn more", "elementor"), color: "link" }), " ", (0, _wordpress_i18n.__)("about using templates", "elementor"))))); } var import_prop_types$60; var init_index_header = __esmMin((() => { import_prop_types$60 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); init_header$1(); init_es$1(); init_popover_dialog(); init_index_header$1(); IndexHeader.propTypes = { refetch: import_prop_types$60.default.func.isRequired, isFetching: import_prop_types$60.default.bool }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/index/index-sidebar.js function IndexSidebar(props) { return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, props.menuItems.map(function(item) { return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.MenuItem, { key: item.label, text: item.label, className: "eps-menu-item__link ".concat(item.isActive ? "eps-menu-item--active" : ""), icon: item.icon, url: item.url }); }), props.tagsFilterSlot); } var import_prop_types$59; var init_index_sidebar = __esmMin((() => { import_prop_types$59 = /* @__PURE__ */ __toESM(require_prop_types()); IndexSidebar.propTypes = { tagsFilterSlot: import_prop_types$59.default.node, menuItems: import_prop_types$59.default.arrayOf(import_prop_types$59.default.shape({ label: import_prop_types$59.default.string, icon: import_prop_types$59.default.string, isActive: import_prop_types$59.default.bool, url: import_prop_types$59.default.string })) }; })); //#endregion //#region app/modules/kit-library/assets/js/models/document.js function _callSuper$2(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$2() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function _isNativeReflectConstruct() { return !!t; })(); } var Document; var init_document = __esmMin((() => { init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); init_defineProperty$1(); init_base_model(); __name(_callSuper$2, "_callSuper"); __name(_isNativeReflectConstruct$2, "_isNativeReflectConstruct"); Document = /*#__PURE__*/ function(_BaseModel) { function Document() { var _this; _classCallCheck(this, Document); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; _this = _callSuper$2(this, Document, [].concat(args)); _defineProperty$1(_this, "id", ""); _defineProperty$1(_this, "title", ""); _defineProperty$1(_this, "documentType", ""); _defineProperty$1(_this, "thumbnailUrl", ""); _defineProperty$1(_this, "previewUrl", ""); return _this; } _inherits$1(Document, _BaseModel); return _createClass(Document, null, [{ key: "createFromResponse", value: function createFromResponse(document) { return new Document().init({ id: document.id, title: document.title, documentType: document.doc_type, thumbnailUrl: document.thumbnail_url, previewUrl: document.preview_url }); } }]); }(BaseModel); })); //#endregion //#region app/modules/kit-library/assets/js/models/kit.js function _callSuper$1(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$1() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct$1() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct$1 = function _isNativeReflectConstruct() { return !!t; })(); } var Kit; var init_kit = __esmMin((() => { init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); init_defineProperty$1(); init_base_model(); init_document(); __name(_callSuper$1, "_callSuper"); __name(_isNativeReflectConstruct$1, "_isNativeReflectConstruct"); Kit = /*#__PURE__*/ function(_BaseModel) { function Kit() { var _this; _classCallCheck(this, Kit); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; _this = _callSuper$1(this, Kit, [].concat(args)); _defineProperty$1(_this, "id", ""); _defineProperty$1(_this, "title", ""); _defineProperty$1(_this, "description", ""); _defineProperty$1(_this, "isFavorite", false); _defineProperty$1(_this, "thumbnailUrl", null); _defineProperty$1(_this, "previewUrl", ""); _defineProperty$1(_this, "accessLevel", 0); _defineProperty$1(_this, "trendIndex", null); _defineProperty$1(_this, "popularityIndex", null); _defineProperty$1(_this, "featuredIndex", null); _defineProperty$1(_this, "createdAt", null); _defineProperty$1(_this, "updatedAt", null); _defineProperty$1(_this, "keywords", []); _defineProperty$1(_this, "taxonomies", []); _defineProperty$1(_this, "documents", []); return _this; } _inherits$1(Kit, _BaseModel); return _createClass(Kit, [{ key: "getDocumentsByTypes", value: function getDocumentsByTypes(contentTypes) { var _this2 = this; return contentTypes.map(function(contentType) { contentType = contentType.clone(); contentType.documents = _this2.documents.filter(function(document) { return contentType.documentTypes.includes(document.documentType); }); return contentType; }); } }], [{ key: "createFromResponse", value: function createFromResponse(kit) { return new Kit().init({ id: kit.id, title: kit.title, description: kit.description, isFavorite: kit.is_favorite, thumbnailUrl: kit.thumbnail_url, previewUrl: kit.preview_url, accessLevel: kit.access_level, accessTier: kit.access_tier, trendIndex: kit.trend_index, popularityIndex: kit.popularity_index, featuredIndex: kit.featured_index, createdAt: kit.created_at ? new Date(kit.created_at) : null, updatedAt: kit.updated_at ? new Date(kit.updated_at) : null, keywords: kit.keywords, taxonomies: kit.taxonomies, documents: kit.documents ? kit.documents.map(function(document) { return Document.createFromResponse(document); }) : [], status: kit.status || "active" }); } }]); }(BaseModel); })); //#endregion //#region app/modules/kit-library/assets/js/utils.js /** * A util function to transform data throw transform functions * * @param {Array} functions * @return {function(*=, ...[*]): *} function */ function pipe() { for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) functions[_key] = arguments[_key]; return function(value) { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2]; return functions.reduce(function(currentValue, currentFunction) { return currentFunction.apply(void 0, [currentValue].concat(args)); }, value); }; } /** * Check if cloud kits are deactivated based on storage quota * * @param {Object} quotaData - The quota data from the API * @return {boolean} True if deactivated, false otherwise */ function isCloudKitsDeactivated(quotaData) { if (!(quotaData !== null && quotaData !== void 0 && quotaData.storage)) return false; var _quotaData$storage = quotaData.storage; var _quotaData$storage$cu = _quotaData$storage.currentUsage; var currentUsage = _quotaData$storage$cu === void 0 ? 0 : _quotaData$storage$cu; var _quotaData$storage$su = _quotaData$storage.subscriptionId; return currentUsage > 0 && "" === (_quotaData$storage$su === void 0 ? "" : _quotaData$storage$su); } var init_utils$2 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-kits.js function ownKeys$15(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; } function _objectSpread$14(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$15(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$15(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** * Fetch kits * * @param {boolean} force * @return {*} kits */ function fetchKits$1(force) { return $e.data.get("kits/index", { force: force ? 1 : void 0 }, { refresh: true }).then(function(response) { return response.data; }).then(function(_ref2) { return _ref2.data.map(function(item) { return Kit.createFromResponse(item); }); }); } /** * Main function. * * @param {*} initialQueryParams * @return {Object} query */ function useKits() { var initialQueryParams = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var force = _useState2[0]; var setForce = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(function() { return _objectSpread$14(_objectSpread$14({ ready: false }, defaultQueryParams$1), initialQueryParams); }), 2); var queryParams = _useState4[0]; var setQueryParams = _useState4[1]; var forceRefetch = (0, react.useCallback)(function() { return setForce(true); }, [setForce]); var clearQueryParams = (0, react.useCallback)(function() { return setQueryParams(_objectSpread$14(_objectSpread$14({ ready: true }, defaultQueryParams$1), initialQueryParams)); }, [setQueryParams]); var query = useQuery([KEY$5], function() { return fetchKits$1(force); }); var data = (0, react.useMemo)(function() { return !query.data ? [] : pipe.apply(void 0, _toConsumableArray(Object.values(kitsPipeFunctions$1)))(_toConsumableArray(query.data), queryParams); }, [query.data, queryParams]); var selectedTaxonomies = useSelectedTaxonomies(queryParams.taxonomies); var isFilterActive = (0, react.useMemo)(function() { return !!queryParams.search || !!selectedTaxonomies.length; }, [queryParams]); (0, react.useEffect)(function() { if (!force) return; query.refetch().then(function() { return setForce(false); }); }, [force]); return _objectSpread$14(_objectSpread$14({}, query), {}, { data, queryParams, setQueryParams, clearQueryParams, forceRefetch, isFilterActive }); } var KEY$5, defaultQueryParams$1, kitsPipeFunctions$1; var init_use_kits = __esmMin((() => { init_slicedToArray(); init_toConsumableArray(); init_defineProperty$1(); init_kit(); init_use_selected_taxonomies(); init_taxonomy(); init_taxonomy_transformer(); init_es(); init_utils$2(); __name(ownKeys$15, "ownKeys"); __name(_objectSpread$14, "_objectSpread"); KEY$5 = "kits"; defaultQueryParams$1 = { favorite: false, search: "", taxonomies: TaxonomyTypes.reduce(function(current, _ref) { var key = _ref.key; return _objectSpread$14(_objectSpread$14({}, current), {}, _defineProperty$1({}, key, [])); }, {}), order: { direction: "asc", by: "featuredIndex" }, referrer: null }; kitsPipeFunctions$1 = { /** * Filter by favorite * * @param {Array<*>} data * @param {*} queryParams * @return {Array} filtered data */ favoriteFilter: function favoriteFilter(data, queryParams) { if (!queryParams.favorite) return data; return data.filter(function(item) { return item.isFavorite; }); }, /** * Filter by search term. * * @param {Array<*>} data * @param {*} queryParams * @return {Array} filtered data */ searchFilter: function searchFilter(data, queryParams) { if (!queryParams.search) return data; return data.filter(function(item) { var keywords = [].concat(_toConsumableArray(item.keywords), _toConsumableArray(item.taxonomies), [item.title]); var searchTerm = queryParams.search.toLowerCase(); return keywords.some(function(keyword) { return keyword.toLowerCase().includes(searchTerm); }); }); }, /** * Filter by taxonomies. * In each taxonomy type it use the OR operator and between types it uses the AND operator. * * @param {Array<*>} data * @param {*} queryParams * @return {Array} filtered data */ taxonomiesFilter: function taxonomiesFilter(data, queryParams) { var taxonomyTypes = Object.keys(queryParams.taxonomies).filter(function(taxonomyType) { return queryParams.taxonomies[taxonomyType].length; }); return !taxonomyTypes.length ? data : data.filter(function(kit) { return taxonomyTypes.some(function(taxonomyType) { return isKitInTaxonomy(kit, taxonomyType, queryParams.taxonomies[taxonomyType]); }); }); }, /** * Sort all the data by the "order" query param * * @param {Array<*>} data * @param {*} queryParams * @return {Array} sorted data */ sort: function sort(data, queryParams) { var order = queryParams.order; return data.sort(function(item1, item2) { if ("asc" === order.direction) return item1[order.by] - item2[order.by]; return item2[order.by] - item1[order.by]; }); } }; __name(fetchKits$1, "fetchKits"); })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-kit.js function useKit(id) { var placeholderDataCallback = usePlaceholderDataCallback(id); return useQuery(["kit", id], fetchKitItem, { placeholderData: placeholderDataCallback }); } /** * Return placeholder function for kit query. * * @param {*} id * @return {function(): (undefined|*)} placeholder */ function usePlaceholderDataCallback(id) { var queryClient = useQueryClient(); return (0, react.useCallback)(function() { var _queryClient$getQuery; var placeholder = (_queryClient$getQuery = queryClient.getQueryData("kits")) === null || _queryClient$getQuery === void 0 ? void 0 : _queryClient$getQuery.find(function(kit) { return kit.id === id; }); if (!placeholder) return; return placeholder; }, [queryClient, id]); } /** * Fetch kit * * @param {Object} root0 * @param {Object} root0.queryKey * @param {*} root0.queryKey.0 * @param {string} root0.queryKey.1 * @return {Promise} kit */ function fetchKitItem(_ref) { var _ref$queryKey = _slicedToArray(_ref.queryKey, 2); _ref$queryKey[0]; var id = _ref$queryKey[1]; return $e.data.get("kits/index", { id }, { refresh: true }).then(function(response) { return response.data; }).then(function(_ref2) { var data = _ref2.data; return Kit.createFromResponse(data); }); } var KEY$4; var init_use_kit = __esmMin((() => { init_slicedToArray(); init_kit(); init_use_kits(); init_es(); KEY$4 = "kit"; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-kit-favorites-mutations.js function useKitFavoritesMutations() { var queryClient = useQueryClient(); var onSuccess = (0, react.useCallback)(function(_ref) { var data = _ref.data; var id = data.data.id; var isFavorite = data.data.is_favorite; if (queryClient.getQueryData(["kits"])) queryClient.setQueryData([KEY$5], function(kits) { if (!kits) return kits; return kits.map(function(item) { if (item.id === id) { item.isFavorite = isFavorite; return item.clone(); } return item; }); }); if (queryClient.getQueryData(["kit", id])) queryClient.setQueryData(["kit", id], function(currentKit) { currentKit.isFavorite = isFavorite; return currentKit.clone(); }); }, [queryClient]); var addToFavorites = useMutation(function(id) { return $e.data.create("kits/favorites", {}, { id }); }, { onSuccess }); var removeFromFavorites = useMutation(function(id) { return $e.data.delete("kits/favorites", { id }); }, { onSuccess }); return { addToFavorites, removeFromFavorites, isLoading: addToFavorites.isLoading || removeFromFavorites.isLoading }; } var init_use_kit_favorites_mutations = __esmMin((() => { init_use_kits(); init_use_kit(); init_es(); })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-kit-library-tracking.js function ownKeys$14(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; } function _objectSpread$13(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$14(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$14(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var SESSION_TIMEOUT, useKitLibraryTracking; var init_use_kit_library_tracking = __esmMin((() => { init_defineProperty$1(); init_events_config(); __name(ownKeys$14, "ownKeys"); __name(_objectSpread$13, "_objectSpread"); SESSION_TIMEOUT = 1800 * 1e3; useKitLibraryTracking = function useKitLibraryTracking() { var sessionStartTime = (0, react.useRef)(Date.now()); var lastActivityTime = (0, react.useRef)(Date.now()); var sessionEndedRef = (0, react.useRef)(false); var actionsCount = (0, react.useRef)(0); var filtersCount = (0, react.useRef)(0); var demoViews = (0, react.useRef)(0); var kitApplied = (0, react.useRef)(false); var _ref$config = (elementorCommon || {}).config; var _config$editor_events = (_ref$config === void 0 ? {} : _ref$config).editor_events; var _editorEvents$can_sen = (_config$editor_events === void 0 ? {} : _config$editor_events).can_send_events; var canSendEvents = _editorEvents$can_sen === void 0 ? false : _editorEvents$can_sen; var isEventsManagerAvailable = (0, react.useCallback)(function() { var _elementorCommon; return ((_elementorCommon = elementorCommon) === null || _elementorCommon === void 0 ? void 0 : _elementorCommon.eventsManager) && "function" === typeof elementorCommon.eventsManager.dispatchEvent; }, []); var trackMixpanelEvent = (0, react.useCallback)(function(eventName) { var properties = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; var callback = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; try { if (canSendEvents && isEventsManagerAvailable()) elementorCommon.eventsManager.dispatchEvent(eventName, properties); } finally { if (callback) callback(); } }, [canSendEvents, isEventsManagerAvailable]); var updateActivity = (0, react.useCallback)(function() { lastActivityTime.current = Date.now(); sessionEndedRef.current = false; }, []); var addTriggerToProperties = (0, react.useCallback)(function(properties, trigger) { if (!trigger) return properties; return _objectSpread$13(_objectSpread$13({}, properties), {}, { trigger: eventsConfig.triggers[trigger] || trigger }); }, []); var trackWithActivity = (0, react.useCallback)(function(eventName, properties) { var callback = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; updateActivity(); actionsCount.current += 1; trackMixpanelEvent(eventName, properties, callback); }, [updateActivity, trackMixpanelEvent]); var trackKitlibOpened = (0, react.useCallback)(function(source) { var callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var trigger = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; trackWithActivity("kitlib_opened", addTriggerToProperties({ referrer_area: source }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitlibCategorySelected = (0, react.useCallback)(function(kitCategory) { var callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var trigger = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "click"; filtersCount.current += 1; trackWithActivity("kitlib_category_selected", addTriggerToProperties({ kit_category: kitCategory }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitlibTagSelected = (0, react.useCallback)(function(kitTag) { var callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var trigger = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "click"; filtersCount.current += 1; trackWithActivity("kitlib_tag_selected", addTriggerToProperties({ kit_tag: kitTag }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitlibPlanFilterSelected = (0, react.useCallback)(function(planType) { var callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var trigger = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "click"; filtersCount.current += 1; trackWithActivity("kitlib_plan_filter_selected", addTriggerToProperties({ kit_plan_filter: planType }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitlibSorterSelected = (0, react.useCallback)(function(sortType) { var callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var trigger = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "dropdownClick"; trackWithActivity("kitlib_sorter_selected", addTriggerToProperties({ kit_sorter: sortType }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitlibSearchSubmitted = (0, react.useCallback)(function(searchTerm) { var resultsCount = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var callback = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var trigger = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; trackWithActivity("kitlib_search_submitted", addTriggerToProperties({ kit_search_input: searchTerm, kit_search_result_count: resultsCount }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitlibFavoriteClicked = (0, react.useCallback)(function(kitId, title, favorited) { var callback = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; var trigger = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : "click"; trackWithActivity("kitlib_favorite_clicked", addTriggerToProperties({ kit_id: kitId, kit_title: title, kit_fav_status: favorited }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitlibFavoriteTab = (0, react.useCallback)(function() { var callback = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; var trigger = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "click"; trackWithActivity("kitlib_favorite_tab", addTriggerToProperties({ page_url: window.location.href }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoClicked = (0, react.useCallback)(function(kitId, title) { var position = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var plan = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : ""; var callback = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : null; var trigger = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : "click"; trackWithActivity("kitdemo_clicked", addTriggerToProperties({ kit_id: kitId, kit_title: title, kit_position: position, requires_pro: plan }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoOpened = (0, react.useCallback)(function(kitId, title) { var loadTime = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var callback = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; var trigger = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : "pageLoaded"; demoViews.current += 1; trackWithActivity("kitdemo_opened", addTriggerToProperties({ kit_id: kitId, kit_title: title, kit_load_time: loadTime }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoApplyClicked = (0, react.useCallback)(function(kitId, title) { var plan = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ""; var callback = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; var trigger = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : "click"; kitApplied.current = true; trackWithActivity("kitdemo_apply_clicked", addTriggerToProperties({ kit_id: kitId, kit_title: title, requires_pro: plan }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoApplyRemoveExisting = (0, react.useCallback)(function(userChoice) { var callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var trigger = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; trackWithActivity("kitdemo_apply_remove_existing", addTriggerToProperties({ remove_existing_kit: userChoice }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoApplyAllOrCustomize = (0, react.useCallback)(function(userChoice) { var callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var trigger = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "click"; trackWithActivity("kitdemo_apply_all_or_customize", addTriggerToProperties({ apply_all: userChoice }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoApplyCompleted = (0, react.useCallback)(function(kitId) { var importTime = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var itemsImported = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var callback = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; var trigger = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : null; trackWithActivity("kitdemo_apply_completed", addTriggerToProperties({ kit_id: kitId, import_time: importTime, items_imported: itemsImported }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoApplyFailed = (0, react.useCallback)(function(kitId) { var errorMessage = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; var errorCode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var callback = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; var trigger = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : null; trackWithActivity("kitdemo_apply_failed", addTriggerToProperties({ kit_id: kitId, error_message: errorMessage, error_code: errorCode }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoDownloadClicked = (0, react.useCallback)(function(kitId, title) { var callback = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var trigger = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "click"; trackWithActivity("kitdemo_download_clicked", addTriggerToProperties({ kit_id: kitId, kit_title: title }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoUpgradeClicked = (0, react.useCallback)(function(kitId, title) { var plan = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ""; var callback = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null; var trigger = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : "click"; trackWithActivity("kitdemo_upgrade_clicked", addTriggerToProperties({ kit_id: kitId, kit_title: title, kit_demo_upgrade_plan: plan }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoOverviewClicked = (0, react.useCallback)(function(kitId, title) { var callback = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var trigger = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "click"; trackWithActivity("kitdemo_overview_clicked", addTriggerToProperties({ kit_id: kitId, kit_title: title }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitdemoOverviewBack = (0, react.useCallback)(function(kitId, title) { var callback = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var trigger = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "click"; trackWithActivity("kitdemo_overview_back", addTriggerToProperties({ kit_id: kitId, kit_title: title }, trigger), callback); }, [addTriggerToProperties, trackWithActivity]); var trackKitlibSessionEnded = (0, react.useCallback)(function() { var reason = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "timeout"; if (sessionEndedRef.current) return; sessionEndedRef.current = true; var durationMs = Date.now() - sessionStartTime.current; trackMixpanelEvent("kitlib_session_ended", { duration_s: Number((durationMs / 1e3).toFixed(2)), actions_count: actionsCount.current, filters_count: filtersCount.current, demo_views: demoViews.current, kit_applied: kitApplied.current, reason }); }, [trackMixpanelEvent]); (0, react.useEffect)(function() { var interval = setInterval(function checkSessionTimeout() { if (Date.now() - lastActivityTime.current > SESSION_TIMEOUT && !sessionEndedRef.current) trackKitlibSessionEnded("timeout"); }, 6e4); var handleBeforeUnload = function handleBeforeUnload() { trackKitlibSessionEnded("page_unload"); }; window.addEventListener("beforeunload", handleBeforeUnload); return function() { clearInterval(interval); window.removeEventListener("beforeunload", handleBeforeUnload); }; }, [trackKitlibSessionEnded]); (0, react.useEffect)(function() { var handleUserActivity = function handleUserActivity() { updateActivity(); }; var events = [ "mousedown", "mousemove", "keypress", "scroll", "touchstart", "click" ]; events.forEach(function(event) { document.addEventListener(event, handleUserActivity, true); }); return function() { events.forEach(function(event) { document.removeEventListener(event, handleUserActivity, true); }); }; }, [updateActivity]); return { trackKitlibOpened, trackKitlibCategorySelected, trackKitlibTagSelected, trackKitlibPlanFilterSelected, trackKitlibSorterSelected, trackKitlibSearchSubmitted, trackKitlibFavoriteClicked, trackKitlibFavoriteTab, trackKitdemoClicked, trackKitdemoOpened, trackKitdemoApplyClicked, trackKitdemoApplyRemoveExisting, trackKitdemoApplyAllOrCustomize, trackKitdemoApplyCompleted, trackKitdemoApplyFailed, trackKitdemoDownloadClicked, trackKitdemoUpgradeClicked, trackKitdemoOverviewClicked, trackKitdemoOverviewBack, trackKitlibSessionEnded, updateActivity }; }; })); //#endregion //#region app/modules/kit-library/assets/js/context/tracking-context.js var import_prop_types$58, TrackingContext, TrackingProvider, useTracking; var init_tracking_context = __esmMin((() => { init_use_kit_library_tracking(); import_prop_types$58 = /* @__PURE__ */ __toESM(require_prop_types()); TrackingContext = (0, react.createContext)(); TrackingProvider = function TrackingProvider(_ref) { var children = _ref.children; var tracking = useKitLibraryTracking(); (0, react.useEffect)(function() { var source = new URLSearchParams(window.location.search).get("source") || "direct"; tracking.trackKitlibOpened(source); }, []); return /*#__PURE__*/ react.default.createElement(TrackingContext.Provider, { value: tracking }, children); }; useTracking = function useTracking() { var context = (0, react.useContext)(TrackingContext); if (!context) throw new Error("useTracking must be used within a TrackingProvider"); return context; }; TrackingProvider.propTypes = { children: import_prop_types$58.default.node }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/favorites-actions.scss var init_favorites_actions$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/favorites-actions.js function FavoritesActions(props) { var _useKitFavoritesMutat = useKitFavoritesMutations(); var addToFavorites = _useKitFavoritesMutat.addToFavorites; var removeFromFavorites = _useKitFavoritesMutat.removeFromFavorites; var isLoading = _useKitFavoritesMutat.isLoading; var tracking = useTracking(); var loadingClasses = isLoading ? "e-kit-library__kit-favorite-actions--loading" : ""; return props.isFavorite ? /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: (0, _wordpress_i18n.__)("Remove from Favorites", "elementor"), hideText: true, icon: "eicon-heart", className: "e-kit-library__kit-favorite-actions e-kit-library__kit-favorite-actions--active ".concat(loadingClasses), onClick: function handleRemoveFromFavorites() { if (isLoading) return; tracking.trackKitlibFavoriteClicked(props.id, props === null || props === void 0 ? void 0 : props.name, false, function() { return removeFromFavorites.mutate(props.id); }); } }) : /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: (0, _wordpress_i18n.__)("Add to Favorites", "elementor"), hideText: true, icon: "eicon-heart-o", className: "e-kit-library__kit-favorite-actions ".concat(loadingClasses), onClick: function handleAddToFavorites() { if (isLoading) return; tracking.trackKitlibFavoriteClicked(props.id, props === null || props === void 0 ? void 0 : props.name, true, function() { return addToFavorites.mutate(props.id); }); } }); } var import_prop_types$57; var init_favorites_actions = __esmMin((() => { import_prop_types$57 = /* @__PURE__ */ __toESM(require_prop_types()); init_use_kit_favorites_mutations(); init_tracking_context(); init_favorites_actions$1(); FavoritesActions.propTypes = { isFavorite: import_prop_types$57.default.bool, id: import_prop_types$57.default.string, name: import_prop_types$57.default.string, source: import_prop_types$57.default.string, index: import_prop_types$57.default.number, queryParams: import_prop_types$57.default.string }; })); //#endregion //#region app/modules/kit-library/assets/js/context/settings-context.js function ownKeys$13(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; } function _objectSpread$12(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$13(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$13(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** * Consume the context * * @return {{emptyTrashDays: number}} context value */ function useSettingsContext() { return (0, react.useContext)(SettingsContext); } /** * Settings Provider * * @param {*} props * @return {JSX.Element} element * @function Object() { [native code] } */ function SettingsProvider(props) { var _useState2 = _slicedToArray((0, react.useState)({}), 2); var settings = _useState2[0]; var setSettings = _useState2[1]; var updateSettings = (0, react.useCallback)(function(newSettings) { setSettings(function(prev) { return _objectSpread$12(_objectSpread$12({}, prev), newSettings); }); }, [setSettings]); (0, react.useEffect)(function() { setSettings(props.value); }, [setSettings]); return /*#__PURE__*/ react.default.createElement(SettingsContext.Provider, { value: { settings, setSettings, updateSettings } }, props.children); } var import_prop_types$56, SettingsContext; var init_settings_context = __esmMin((() => { import_prop_types$56 = /* @__PURE__ */ __toESM(require_prop_types()); init_defineProperty$1(); init_slicedToArray(); __name(ownKeys$13, "ownKeys"); __name(_objectSpread$12, "_objectSpread"); SettingsContext = (0, react.createContext)({}); SettingsProvider.propTypes = { children: import_prop_types$56.default.any, value: import_prop_types$56.default.object.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-kit-call-to-action.js function useKitCallToAction(kitAccessTier) { var settings = useSettingsContext().settings; var userAccessTier = settings.access_tier; var tierKey = TierToKeyMap[kitAccessTier]; if (settings.is_pro && settings.is_library_connected && userAccessTier === TIERS.free) userAccessTier = TIERS["essential-oct2023"]; var subscriptionPlan = (0, react.useMemo)(function() { var _settings$subscriptio; return (_settings$subscriptio = settings.subscription_plans) === null || _settings$subscriptio === void 0 ? void 0 : _settings$subscriptio[kitAccessTier]; }, [settings, kitAccessTier]); subscriptionPlan.label = PromotionChipText[tierKey]; subscriptionPlan.isPromoted = TIERS.free !== kitAccessTier; return { type: (0, react.useMemo)(function() { var isAuthorizeToApplyKit = isTierAtLeast(userAccessTier, kitAccessTier); if (!settings.is_library_connected && (settings.is_pro || isAuthorizeToApplyKit)) return TYPE_CONNECT; if (!isAuthorizeToApplyKit) return TYPE_PROMOTION; return TYPE_APPLY; }, [settings, kitAccessTier]), subscriptionPlan }; } var TYPE_CONNECT, TYPE_PROMOTION, TYPE_APPLY; var init_use_kit_call_to_action = __esmMin((() => { init_settings_context(); init_tiers(); init_taxonomy_transformer(); TYPE_CONNECT = "connect"; TYPE_PROMOTION = "promotion"; TYPE_APPLY = "apply"; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-add-kit-promotion-utm.js function useAddKitPromotionUTM(promotionUrl, kitId, kitTitle) { if (!promotionUrl) return ""; var url; try { url = new URL(promotionUrl); } catch (e) { return ""; } if (kitTitle && "string" === typeof kitTitle) { var cleanTitle = kitTitle.trim().replace(/\s+/g, "-").replace(/[^\w-]/g, "").toLowerCase(); url.searchParams.set("utm_term", cleanTitle); } if (kitId && "string" === typeof kitId) url.searchParams.set("utm_content", kitId); return url.toString(); } var init_use_add_kit_promotion_utm = __esmMin((() => {})); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/kit-list-item.scss var init_kit_list_item$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/kit-list-item.js var import_prop_types$55, KitListItem, kit_list_item_default; var init_kit_list_item = __esmMin((() => { import_prop_types$55 = /* @__PURE__ */ __toESM(require_prop_types()); init_badge(); init_favorites_actions(); init_kit(); init_use_kit_call_to_action(); init_use_add_kit_promotion_utm(); init_tracking_context(); init_kit_list_item$1(); KitListItem = function KitListItem(props) { var _useKitCallToAction = useKitCallToAction(props.model.accessTier); var type = _useKitCallToAction.type; var subscriptionPlan = _useKitCallToAction.subscriptionPlan; var promotionUrl = useAddKitPromotionUTM(subscriptionPlan.promotion_url, props.model.id, props.model.title); var ctaText = (0, _wordpress_i18n.__)("Upgrade", "elementor"); var showPromotion = TYPE_PROMOTION === type; var tracking = useTracking(); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Card, { className: "e-kit-library__kit-item" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardHeader, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", title: props.model.title, variant: "h5", className: "eps-card__headline" }, props.model.title), /*#__PURE__*/ react.default.createElement(FavoritesActions, { id: props.model.id, isFavorite: props.model.isFavorite, index: props.index, name: props.model.title, queryParams: props.queryParams, source: props.source })), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardBody, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardImage, { alt: props.model.title, src: props.model.thumbnailUrl || "" }, /*#__PURE__*/ react.default.createElement(Badge, { variant: "sm", className: "e-kit-library__kit-item-subscription-plan-badge ".concat(subscriptionPlan.isPromoted ? "promoted" : "") }, subscriptionPlan.label), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardOverlay, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, direction: "column", className: "e-kit-library__kit-item-overlay" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { className: "e-kit-library__kit-item-overlay-overview-button", text: (0, _wordpress_i18n.__)("View Demo", "elementor"), icon: "eicon-preview-medium", url: "/kit-library/preview/".concat(props.model.id), onClick: function onClick() { tracking.trackKitdemoClicked(props.model.id, props.model.title, props.index, subscriptionPlan.label); } }), showPromotion && /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { className: "e-kit-library__kit-item-overlay-promotion-button", text: ctaText, icon: "eicon-external-link-square", url: promotionUrl, target: "_blank", onClick: function onClick() { return tracking.trackKitdemoUpgradeClicked(props.model.id, props.model.title, subscriptionPlan.label); } })))))); }; KitListItem.propTypes = { model: import_prop_types$55.default.instanceOf(Kit).isRequired, index: import_prop_types$55.default.number, queryParams: import_prop_types$55.default.string, source: import_prop_types$55.default.string }; kit_list_item_default = react.default.memo(KitListItem); })); //#endregion //#region app/modules/kit-library/assets/js/components/new-page-kit-list-item.js var NewPageKitListItem, new_page_kit_list_item_default; var init_new_page_kit_list_item = __esmMin((() => { init_settings_context(); init_kit_list_item$1(); NewPageKitListItem = function NewPageKitListItem() { var _settings$urls; var settings = useSettingsContext().settings; return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Card, { className: "e-kit-library__kit-item" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardHeader, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", title: (0, _wordpress_i18n.__)("Blank Canvas", "elementor"), variant: "h5", className: "eps-card__headline" }, (0, _wordpress_i18n.__)("Blank Canvas", "elementor"))), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardBody, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardImage, { alt: (0, _wordpress_i18n.__)("Blank Canvas", "elementor"), src: elementorCommon.config.urls.assets + "images/app/onboarding/Blank_Preview.jpg" || "" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardOverlay, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, direction: "column", className: "e-kit-library__kit-item-overlay" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { className: "e-kit-library__kit-item-overlay-overview-button", text: (0, _wordpress_i18n.__)("Create New Elementor Page", "elementor"), icon: "eicon-single-page", url: (_settings$urls = settings.urls) === null || _settings$urls === void 0 ? void 0 : _settings$urls.createNewPage })))))); }; new_page_kit_list_item_default = react.default.memo(NewPageKitListItem); })); //#endregion //#region app/modules/kit-library/assets/js/components/kit-list.js function KitList(props) { var referrer = new URLSearchParams(window.location.search).get("referrer"); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CssGrid, { spacing: 24, colMinWidth: 290 }, "onboarding" === referrer && /*#__PURE__*/ react.default.createElement(new_page_kit_list_item_default, null), props.data.map(function(model, index) { var _props$queryParams; return /*#__PURE__*/ react.default.createElement(kit_list_item_default, { key: model.id, model, index: index + 1, queryParams: (_props$queryParams = props.queryParams) === null || _props$queryParams === void 0 ? void 0 : _props$queryParams.search, source: props.source }); })); } var import_prop_types$54; var init_kit_list = __esmMin((() => { import_prop_types$54 = /* @__PURE__ */ __toESM(require_prop_types()); init_kit(); init_kit_list_item(); init_new_page_kit_list_item(); KitList.propTypes = { data: import_prop_types$54.default.arrayOf(import_prop_types$54.default.instanceOf(Kit)), queryParams: import_prop_types$54.default.shape({ search: import_prop_types$54.default.string }), source: import_prop_types$54.default.string }; })); //#endregion //#region app/modules/kit-library/assets/js/components/layout/index.js function Index$1(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__lightbox" }, /*#__PURE__*/ react.default.createElement("div", { className: "eps-app" }, props.header, /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__main" }, props.sidebar && /*#__PURE__*/ react.default.createElement(Sidebar, null, props.sidebar), props.children))); } var import_prop_types$53; var init_layout$1 = __esmMin((() => { import_prop_types$53 = /* @__PURE__ */ __toESM(require_prop_types()); init_sidebar(); __name(Index$1, "Index"); Index$1.propTypes = { header: import_prop_types$53.default.node, sidebar: import_prop_types$53.default.node, children: import_prop_types$53.default.node }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/page-loader.scss var init_page_loader$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/page-loader.js function PageLoader(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__page-loader ".concat(props.className) }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Icon, { className: "eicon-loading eicon-animation-spin" })); } var import_prop_types$52; var init_page_loader = __esmMin((() => { import_prop_types$52 = /* @__PURE__ */ __toESM(require_prop_types()); init_page_loader$1(); PageLoader.propTypes = { className: import_prop_types$52.default.string }; PageLoader.defaultProps = { className: "" }; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-debounced-callback.js function useDebouncedCallback(callback, wait) { var timeout = (0, react.useRef)(); return (0, react.useCallback)(function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; var later = function later() { clearTimeout(timeout.current); callback.apply(void 0, args); }; clearTimeout(timeout.current); timeout.current = setTimeout(later, wait); }, [callback, wait]); } var init_use_debounced_callback = __esmMin((() => {})); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/search-input.scss var init_search_input$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/search-input.js function SearchInput(props) { var _useState2 = _slicedToArray((0, react.useState)(props.value || ""), 2); var localValue = _useState2[0]; var setLocalValue = _useState2[1]; var debouncedOnChange = useDebouncedCallback(function(value) { return props.onChange(value); }, props.debounceTimeout); (0, react.useEffect)(function() { if (props.value !== localValue) setLocalValue(props.value); }, [props.value]); return /*#__PURE__*/ react.default.createElement("div", { className: "eps-search-input__container ".concat(props.className) }, /*#__PURE__*/ react.default.createElement("input", { className: "eps-search-input eps-search-input--".concat(props.size), placeholder: props.placeholder, value: localValue, onChange: function onChange(e) { setLocalValue(e.target.value); debouncedOnChange(e.target.value); } }), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Icon, { className: "eicon-search-bold eps-search-input__icon eps-search-input__icon--".concat(props.size) }), props.value && /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: (0, _wordpress_i18n.__)("Clear", "elementor"), hideText: true, className: "eicon-close-circle eps-search-input__clear-icon eps-search-input__clear-icon--".concat(props.size), onClick: function onClick() { return props.onChange(""); } })); } var import_prop_types$51; var init_search_input = __esmMin((() => { import_prop_types$51 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); init_use_debounced_callback(); init_search_input$1(); SearchInput.propTypes = { placeholder: import_prop_types$51.default.string, value: import_prop_types$51.default.string.isRequired, onChange: import_prop_types$51.default.func.isRequired, className: import_prop_types$51.default.string, size: import_prop_types$51.default.oneOf(["md", "sm"]), debounceTimeout: import_prop_types$51.default.number }; SearchInput.defaultProps = { className: "", size: "md", debounceTimeout: 300 }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/sort-select.scss var init_sort_select$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/sort-select.js function SortSelect(props) { var getSelectedOptionDetails = function getSelectedOptionDetails(value) { return props.options.find(function(option) { return option.value === value; }); }; var _useState2 = _slicedToArray((0, react.useState)(getSelectedOptionDetails(props.value.by)), 2); var selectedSortBy = _useState2[0]; var setSelectedSortBy = _useState2[1]; (0, react.useEffect)(function() { var _selectedSortBy$defau; props.onChange({ by: selectedSortBy.value, direction: (_selectedSortBy$defau = selectedSortBy.defaultOrder) !== null && _selectedSortBy$defau !== void 0 ? _selectedSortBy$defau : props.value.direction }); }, [selectedSortBy]); return /*#__PURE__*/ react.default.createElement("div", { className: "eps-sort-select" }, /*#__PURE__*/ react.default.createElement("div", { className: "eps-sort-select__select-wrapper" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Select, { options: props.options, value: props.value.by, onChange: function onChange(e) { var _props$onChangeSortVa; var value = e.target.value; setSelectedSortBy(getSelectedOptionDetails(value)); (_props$onChangeSortVa = props.onChangeSortValue) === null || _props$onChangeSortVa === void 0 || _props$onChangeSortVa.call(props, value); }, className: "eps-sort-select__select", onClick: function onClick() { var _props$onSortSelectOp; props.onChange({ by: props.value.by, direction: props.value.direction }); (_props$onSortSelectOp = props.onSortSelectOpen) === null || _props$onSortSelectOp === void 0 || _props$onSortSelectOp.call(props); } })), !selectedSortBy.orderDisabled && /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: "asc" === props.value.direction ? (0, _wordpress_i18n.__)("Sort Descending", "elementor") : (0, _wordpress_i18n.__)("Sort Ascending", "elementor"), hideText: true, icon: "asc" === props.value.direction ? "eicon-arrow-up" : "eicon-arrow-down", className: "eps-sort-select__button", onClick: function onClick() { var direction = props.value.direction && "asc" === props.value.direction ? "desc" : "asc"; if (props.onChangeSortDirection) props.onChangeSortDirection(direction); props.onChange({ by: props.value.by, direction }); } })); } var import_prop_types$50; var init_sort_select = __esmMin((() => { import_prop_types$50 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); init_sort_select$1(); SortSelect.propTypes = { options: import_prop_types$50.default.arrayOf(import_prop_types$50.default.shape({ label: import_prop_types$50.default.string.isRequired, value: import_prop_types$50.default.oneOfType([import_prop_types$50.default.string, import_prop_types$50.default.number]).isRequired })).isRequired, value: import_prop_types$50.default.shape({ direction: import_prop_types$50.default.oneOf(["asc", "desc"]).isRequired, by: import_prop_types$50.default.string.isRequired }).isRequired, onChange: import_prop_types$50.default.func.isRequired, onChangeSortValue: import_prop_types$50.default.func, onSortSelectOpen: import_prop_types$50.default.func, onChangeSortDirection: import_prop_types$50.default.func }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/collapse.scss var init_collapse$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/collapse.js function Collapse(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "eps-collapse ".concat(props.className), "data-open": props.isOpen || void 0 }, /*#__PURE__*/ react.default.createElement("button", { className: "eps-collapse__title", onClick: function onClick() { var _props$onClick; props.onChange(function(value) { return !value; }); (_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, props.isOpen, props.title); } }, /*#__PURE__*/ react.default.createElement("span", null, props.title), /*#__PURE__*/ react.default.createElement("i", { className: "eicon-chevron-right eps-collapse__icon" })), /*#__PURE__*/ react.default.createElement("div", { className: "eps-collapse__content" }, props.children)); } var import_prop_types$49; var init_collapse = __esmMin((() => { import_prop_types$49 = /* @__PURE__ */ __toESM(require_prop_types()); init_collapse$1(); Collapse.propTypes = { isOpen: import_prop_types$49.default.bool, onChange: import_prop_types$49.default.func, className: import_prop_types$49.default.string, title: import_prop_types$49.default.node, onClick: import_prop_types$49.default.func, children: import_prop_types$49.default.oneOfType([import_prop_types$49.default.node, import_prop_types$49.default.arrayOf(import_prop_types$49.default.node)]) }; Collapse.defaultProps = { className: "", isOpen: false }; })); //#endregion //#region app/modules/kit-library/assets/js/components/taxonomies-filter-list.js var import_prop_types$48, MIN_TAGS_LENGTH_FOR_SEARCH_INPUT, TaxonomiesFilterList, taxonomies_filter_list_default; var init_taxonomies_filter_list = __esmMin((() => { import_prop_types$48 = /* @__PURE__ */ __toESM(require_prop_types()); init_toConsumableArray(); init_slicedToArray(); init_taxonomy(); init_collapse(); init_search_input(); init_tracking_context(); MIN_TAGS_LENGTH_FOR_SEARCH_INPUT = 15; TaxonomiesFilterList = function TaxonomiesFilterList(props) { var _useState2 = _slicedToArray((0, react.useState)(props.taxonomiesByType.isOpenByDefault), 2); var isOpen = _useState2[0]; var setIsOpen = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(""), 2); var search = _useState4[0]; var setSearch = _useState4[1]; var tracking = useTracking(); var taxonomies = (0, react.useMemo)(function() { if (!search) return props.taxonomiesByType.data; var lowerCaseSearch = search.toLowerCase(); return props.taxonomiesByType.data.filter(function(tag) { return tag.text.toLowerCase().includes(lowerCaseSearch); }); }, [props.taxonomiesByType.data, search]); return /*#__PURE__*/ react.default.createElement(Collapse, { className: "e-kit-library__tags-filter-list", title: props.taxonomiesByType.label, isOpen, onChange: setIsOpen }, props.taxonomiesByType.data.length >= MIN_TAGS_LENGTH_FOR_SEARCH_INPUT && /*#__PURE__*/ react.default.createElement(SearchInput, { size: "sm", className: "e-kit-library__tags-filter-list-search", placeholder: (0, _wordpress_i18n.sprintf)((0, _wordpress_i18n.__)("Search %s...", "elementor"), props.taxonomiesByType.label), value: search, onChange: function onChange(searchTerm) { setSearch(searchTerm); } }), /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__tags-filter-list-container" }, 0 === taxonomies.length && /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, null, (0, _wordpress_i18n.__)("No Results Found", "elementor")), taxonomies.map(function(taxonomy) { var _props$selected$taxon; return /*#__PURE__*/ react.default.createElement("label", { key: taxonomy.text, className: "e-kit-library__tags-filter-list-item" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Checkbox, { checked: !!((_props$selected$taxon = props.selected[taxonomy.type]) !== null && _props$selected$taxon !== void 0 && _props$selected$taxon.includes(taxonomy.id || taxonomy.text)), onChange: function onChange(e) { var checked = e.target.checked; var callback = function callback() { props.onSelect(taxonomy.type, function(prev) { return checked ? [].concat(_toConsumableArray(prev), [taxonomy.id || taxonomy.text]) : prev.filter(function(tagId) { return ![taxonomy.id, taxonomy.text].includes(tagId); }); }); }; if ("categories" === taxonomy.type && checked) tracking.trackKitlibCategorySelected(taxonomy.text, callback); else if ("tags" === taxonomy.type && checked) tracking.trackKitlibTagSelected(taxonomy.text, callback); else if ("subscription_plans" === taxonomy.type && checked) tracking.trackKitlibPlanFilterSelected(taxonomy.text, callback); else callback(); } }), taxonomy.text); }))); }; TaxonomiesFilterList.propTypes = { taxonomiesByType: import_prop_types$48.default.shape({ key: import_prop_types$48.default.string, label: import_prop_types$48.default.string, data: import_prop_types$48.default.arrayOf(import_prop_types$48.default.instanceOf(Taxonomy)), isOpenByDefault: import_prop_types$48.default.bool }), selected: import_prop_types$48.default.objectOf(import_prop_types$48.default.arrayOf(import_prop_types$48.default.string)), onSelect: import_prop_types$48.default.func, onCollapseChange: import_prop_types$48.default.func, category: import_prop_types$48.default.string, onChange: import_prop_types$48.default.func }; taxonomies_filter_list_default = react.default.memo(TaxonomiesFilterList); })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/tags-filter.scss var init_tags_filter = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/taxonomies-filter.js function TaxonomiesFilter(props) { var taxonomiesByType = useMemo$10(function() { return getTaxonomyFilterItems(props.taxonomies); }, [props.taxonomies]); return /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__tags-filter" }, taxonomiesByType.map(function(group) { return /*#__PURE__*/ react.default.createElement(taxonomies_filter_list_default, { key: group.key, taxonomiesByType: group, selected: props.selected, onSelect: props.onSelect, category: props.category }); })); } var import_prop_types$47, useMemo$10; var init_taxonomies_filter = __esmMin((() => { import_prop_types$47 = /* @__PURE__ */ __toESM(require_prop_types()); init_taxonomies_filter_list(); init_taxonomy(); init_taxonomy_transformer(); init_tags_filter(); useMemo$10 = react.default.useMemo; TaxonomiesFilter.propTypes = { selected: import_prop_types$47.default.objectOf(import_prop_types$47.default.arrayOf(import_prop_types$47.default.string)), onSelect: import_prop_types$47.default.func, taxonomies: import_prop_types$47.default.arrayOf(import_prop_types$47.default.instanceOf(Taxonomy)), category: import_prop_types$47.default.string }; })); //#endregion //#region app/modules/kit-library/assets/js/context/connect-state-context.js function ConnectStateProvider(_ref) { var children = _ref.children; var _useState2 = _slicedToArray((0, react.useState)(elementorCommon.config.library_connect.is_connected), 2); var isConnected = _useState2[0]; var setIsConnected = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isConnecting = _useState4[0]; var setIsConnecting = _useState4[1]; var handleConnectSuccess = (0, react.useCallback)(function(callback) { setIsConnecting(true); setIsConnected(true); elementorCommon.config.library_connect.is_connected = true; if (callback) callback(); }, []); var handleConnectError = (0, react.useCallback)(function(callback) { setIsConnected(false); setIsConnecting(false); elementorCommon.config.library_connect.is_connected = false; if (callback) callback(); }, []); var value = { isConnected, isConnecting, setConnecting: (0, react.useCallback)(function(connecting) { setIsConnecting(connecting); }, []), handleConnectSuccess, handleConnectError }; return /*#__PURE__*/ react.default.createElement(ConnectStateContext.Provider, { value }, children); } var import_prop_types$46, ConnectStateContext; var init_connect_state_context = __esmMin((() => { init_slicedToArray(); import_prop_types$46 = /* @__PURE__ */ __toESM(require_prop_types()); ConnectStateContext = (0, react.createContext)(); ConnectStateProvider.propTypes = { children: import_prop_types$46.default.node.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-connect-state.js function useConnectState() { var context = (0, react.useContext)(ConnectStateContext); if (!context) throw new Error("useConnectState must be used within a ConnectStateProvider"); return context; } var init_use_connect_state = __esmMin((() => { init_connect_state_context(); })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-menu-items.js /** * Generate the menu items for the kit library pages. * * @param {string} path - The current page path * @return {Array} menu items */ function useMenuItems(path) { var isConnected = useConnectState().isConnected; var cloudKitsData = useCloudKitsEligibility({ enabled: isConnected }).data; var isCloudKitsAvailable = cloudKitsData === null || cloudKitsData === void 0 ? void 0 : cloudKitsData.is_eligible; return (0, react.useMemo)(function() { var page = path.replace("/", ""); var myWebsiteTemplatesLabel = (0, _wordpress_i18n.__)("My Website Templates", "elementor"); if (!isConnected) myWebsiteTemplatesLabel = /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("My Website Templates", "elementor"), /*#__PURE__*/ react.default.createElement("span", { className: "connect-badge" }, (0, _wordpress_i18n.__)("Connect", "elementor"))); else if (isConnected && false === isCloudKitsAvailable) myWebsiteTemplatesLabel = /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("My Website Templates", "elementor"), /*#__PURE__*/ react.default.createElement("span", { className: "upgrade-badge" }, (0, _wordpress_i18n.__)("Upgrade", "elementor"))); return [ { label: (0, _wordpress_i18n.__)("All Website Templates", "elementor"), icon: "eicon-filter", isActive: !page, url: "/kit-library", trackEventData: { command: "kit-library/select-organizing-category", category: "all" } }, { label: myWebsiteTemplatesLabel, icon: "eicon-library-cloud-empty", isActive: "cloud" === page, url: "/kit-library/cloud", trackEventData: { command: "kit-library/select-organizing-category", category: "cloud" } }, { label: (0, _wordpress_i18n.__)("Favorites", "elementor"), icon: "eicon-heart-o", isActive: "favorites" === page, url: "/kit-library/favorites", trackEventData: { command: "kit-library/select-organizing-category", category: "favorites" } } ]; }, [ path, isConnected, isCloudKitsAvailable ]); } var init_use_menu_items = __esmMin((() => { init_use_cloud_kits_eligibility(); init_use_connect_state(); })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-taxonomies.js function ownKeys$12(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; } function _objectSpread$11(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$12(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$12(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function useTaxonomies() { var _useState2 = _slicedToArray((0, react.useState)(false), 2); var force = _useState2[0]; var setForce = _useState2[1]; var forceRefetch = (0, react.useCallback)(function() { return setForce(true); }, [setForce]); var query = useQuery([KEY$3], function() { return fetchTaxonomies(force); }); (0, react.useEffect)(function() { if (!force) return; query.refetch().then(function() { return setForce(false); }); }, [force]); return _objectSpread$11(_objectSpread$11({}, query), {}, { forceRefetch }); } function fetchTaxonomies(force) { return $e.data.get("kit-taxonomies/index", { force: force ? 1 : void 0 }, { refresh: true }).then(function(response) { return response.data; }).then(function(_ref) { return _ref.data.map(function(taxonomy) { return Taxonomy.createFromResponse(taxonomy); }); }); } var KEY$3; var init_use_taxonomies = __esmMin((() => { init_defineProperty$1(); init_slicedToArray(); init_taxonomy(); init_es(); __name(ownKeys$12, "ownKeys"); __name(_objectSpread$11, "_objectSpread"); KEY$3 = "tags"; })); //#endregion //#region app/modules/kit-library/assets/js/context/last-filter-context.js /** * Consume the context * * @return {{}} context value */ function useLastFilterContext() { return (0, react.useContext)(LastFilterContext); } /** * Settings Provider * * @param {*} props * @return {JSX.Element} element * @function Object() { [native code] } */ function LastFilterProvider(props) { var _useState2 = _slicedToArray((0, react.useState)({}), 2); var lastFilter = _useState2[0]; var setLastFilter = _useState2[1]; return /*#__PURE__*/ react.default.createElement(LastFilterContext.Provider, { value: { lastFilter, setLastFilter } }, props.children); } var import_prop_types$45, LastFilterContext; var init_last_filter_context = __esmMin((() => { import_prop_types$45 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); LastFilterContext = (0, react.createContext)({}); LastFilterProvider.propTypes = { children: import_prop_types$45.default.any }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/pages/index/index.scss var init_index$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/pages/index/index.js function ownKeys$11(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; } function _objectSpread$10(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$11(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$11(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** * Generate select and unselect taxonomy functions. * * @param {Function} setQueryParams * @return {((function(*, *): *)|(function(*=): *))[]} taxonomy functions */ function useTaxonomiesSelection(setQueryParams) { return [(0, react.useCallback)(function(type, callback) { return setQueryParams(function(prev) { var taxonomies = _objectSpread$10({}, prev.taxonomies); taxonomies[type] = callback(prev.taxonomies[type]); return _objectSpread$10(_objectSpread$10({}, prev), {}, { taxonomies }); }); }, [setQueryParams]), (0, react.useCallback)(function(taxonomy) { return setQueryParams(function(prev) { var taxonomies = Object.entries(prev.taxonomies).reduce(function(current, _ref) { var _ref2 = _slicedToArray(_ref, 2); var key = _ref2[0]; var groupedTaxonomies = _ref2[1]; return _objectSpread$10(_objectSpread$10({}, current), {}, _defineProperty$1({}, key, groupedTaxonomies.filter(function(item) { return item !== taxonomy; }))); }, {}); return _objectSpread$10(_objectSpread$10({}, prev), {}, { taxonomies }); }); }, [setQueryParams])]; } /** * Update and read the query param from the url * * @param {*} queryParams * @param {*} setQueryParams * @param {Array} exclude */ function useRouterQueryParams(queryParams, setQueryParams) { var exclude = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; var location = useLocation(); var setLastFilter = useLastFilterContext().setLastFilter; (0, react.useEffect)(function() { var filteredQueryParams = Object.fromEntries(Object.entries(queryParams).filter(function(_ref3) { var _ref4 = _slicedToArray(_ref3, 2); var key = _ref4[0]; var item = _ref4[1]; return !exclude.includes(key) && item; })); setLastFilter(filteredQueryParams); history.replaceState(null, "", decodeURI("#".concat(wp.url.addQueryArgs(location.pathname.split("?")[0] || "/", filteredQueryParams)))); }, [queryParams]); (0, react.useEffect)(function() { var routerQueryParams = Object.keys(defaultQueryParams$1).reduce(function(current, key) { var queryArg = wp.url.getQueryArg(location.pathname, key); if (!queryArg) return current; return _objectSpread$10(_objectSpread$10({}, current), {}, _defineProperty$1({}, key, queryArg)); }, {}); setQueryParams(function(prev) { return _objectSpread$10(_objectSpread$10(_objectSpread$10({}, prev), routerQueryParams), {}, { taxonomies: _objectSpread$10(_objectSpread$10({}, prev.taxonomies), routerQueryParams.taxonomies), ready: true }); }); }, []); } function Index(_ref5) { var path = _ref5.path; var _ref5$initialQueryPar = _ref5.initialQueryParams; var initialQueryParams = _ref5$initialQueryPar === void 0 ? {} : _ref5$initialQueryPar; var _ref5$renderNoResults = _ref5.renderNoResultsComponent; var renderNoResultsComponent = _ref5$renderNoResults === void 0 ? function(_ref6) { return _ref6.defaultComponent; } : _ref5$renderNoResults; usePageTitle({ title: (0, _wordpress_i18n.__)("Website Templates", "elementor") }); var menuItems = useMenuItems(path); var tracking = useTracking(); var _useKits = useKits(initialQueryParams); var data = _useKits.data; var isSuccess = _useKits.isSuccess; var isLoading = _useKits.isLoading; var isFetching = _useKits.isFetching; var isError = _useKits.isError; var queryParams = _useKits.queryParams; var setQueryParams = _useKits.setQueryParams; var clearQueryParams = _useKits.clearQueryParams; var forceRefetch = _useKits.forceRefetch; var isFilterActive = _useKits.isFilterActive; useRouterQueryParams(queryParams, setQueryParams, ["ready"].concat(_toConsumableArray(Object.keys(initialQueryParams)))); (0, react.useEffect)(function() { if (!queryParams.search) return; tracking.trackKitlibSearchSubmitted(queryParams.search, data.length); }, [ queryParams.search, data.length, tracking ]); var _useTaxonomies = useTaxonomies(); var taxonomiesData = _useTaxonomies.data; var forceRefetchTaxonomies = _useTaxonomies.forceRefetch; var isFetchingTaxonomies = _useTaxonomies.isFetching; var _useTaxonomiesSelecti2 = _slicedToArray(useTaxonomiesSelection(setQueryParams), 2); var selectTaxonomy = _useTaxonomiesSelecti2[0]; var unselectTaxonomy = _useTaxonomiesSelecti2[1]; var options = [ { label: (0, _wordpress_i18n.__)("Featured", "elementor"), value: "featuredIndex", defaultOrder: "asc", orderDisabled: true }, { label: (0, _wordpress_i18n.__)("New", "elementor"), value: "createdAt", defaultOrder: "desc" }, { label: (0, _wordpress_i18n.__)("Popular", "elementor"), value: "popularityIndex", defaultOrder: "desc" }, { label: (0, _wordpress_i18n.__)("Trending", "elementor"), value: "trendIndex", defaultOrder: "desc" } ]; return /*#__PURE__*/ react.default.createElement(Index$1, { sidebar: /*#__PURE__*/ react.default.createElement(IndexSidebar, { tagsFilterSlot: /*#__PURE__*/ react.default.createElement(TaxonomiesFilter, { selected: queryParams.taxonomies, onSelect: selectTaxonomy, taxonomies: taxonomiesData, category: path }), menuItems }), header: /*#__PURE__*/ react.default.createElement(IndexHeader, { refetch: function refetch() { forceRefetch(); forceRefetchTaxonomies(); }, isFetching: isFetching || isFetchingTaxonomies }) }, /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__index-layout-container" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, className: "e-kit-library__index-layout-heading" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { item: true, className: "e-kit-library__index-layout-heading-search" }, /*#__PURE__*/ react.default.createElement(SearchInput, { placeholder: (0, _wordpress_i18n.__)("Search all Website Templates...", "elementor"), value: queryParams.search, onChange: function onChange(value) { setQueryParams(function(prev) { return _objectSpread$10(_objectSpread$10({}, prev), {}, { search: value }); }); } }), isFilterActive && /*#__PURE__*/ react.default.createElement(FilterIndicationText, { queryParams, resultCount: data.length || 0, onClear: clearQueryParams, onRemoveTag: unselectTaxonomy })), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { item: true, className: "e-kit-library__index-layout-heading-sort" }, /*#__PURE__*/ react.default.createElement(SortSelect, { options, value: queryParams.order, onChange: function onChange(order) { return setQueryParams(function(prev) { return _objectSpread$10(_objectSpread$10({}, prev), {}, { order }); }); }, onChangeSortValue: function onChangeSortValue(value) { var label = options.find(function(option) { return option.value === value; }).label; setQueryParams(function(prev) { return _objectSpread$10(_objectSpread$10({}, prev), {}, { order: _objectSpread$10(_objectSpread$10({}, prev.order), {}, { by: value }) }); }); tracking.trackKitlibSorterSelected(label); } }))), /*#__PURE__*/ react.default.createElement(Content, { className: "e-kit-library__index-layout-main" }, /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, isLoading && /*#__PURE__*/ react.default.createElement(PageLoader, null), isError && /*#__PURE__*/ react.default.createElement(ErrorScreen, { title: (0, _wordpress_i18n.__)("Something went wrong.", "elementor"), description: (0, _wordpress_i18n.__)("Nothing to worry about, use 🔄 on the top corner to try again. If the problem continues, head over to the Help Center.", "elementor"), button: { text: (0, _wordpress_i18n.__)("Learn More", "elementor"), url: "https://go.elementor.com/app-kit-library-error/", target: "_blank" } }), isSuccess && 0 < data.length && queryParams.ready && /*#__PURE__*/ react.default.createElement(KitList, { data, queryParams, source: path }), isSuccess && 0 === data.length && queryParams.ready && renderNoResultsComponent({ defaultComponent: /*#__PURE__*/ react.default.createElement(ErrorScreen, { title: (0, _wordpress_i18n.__)("No results matched your search.", "elementor"), description: (0, _wordpress_i18n.__)("Try different keywords or ", "elementor"), button: { text: (0, _wordpress_i18n.__)("Continue browsing.", "elementor"), action: clearQueryParams, category: path } }), isFilterActive }), /*#__PURE__*/ react.default.createElement(EnvatoPromotion, { category: path }))))); } var import_prop_types$44; var init_index = __esmMin((() => { import_prop_types$44 = /* @__PURE__ */ __toESM(require_prop_types()); init_toConsumableArray(); init_slicedToArray(); init_defineProperty$1(); init_content(); init_envato_promotion(); init_error_screen(); init_filter_indication_text(); init_index_header(); init_index_sidebar(); init_kit_list(); init_layout$1(); init_page_loader(); init_search_input(); init_sort_select(); init_taxonomies_filter(); init_use_kits(); init_use_menu_items(); init_use_page_title(); init_use_taxonomies(); init_last_filter_context(); init_es$1(); init_tracking_context(); init_index$1(); __name(ownKeys$11, "ownKeys"); __name(_objectSpread$10, "_objectSpread"); Index.propTypes = { path: import_prop_types$44.default.string, initialQueryParams: import_prop_types$44.default.object, renderNoResultsComponent: import_prop_types$44.default.func }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/favorites/favorites.js function Favorites(props) { var navigate = useNavigate(); var tracking = useTracking(); (0, react.useEffect)(function() { tracking.trackKitlibFavoriteTab(); }, [tracking]); var indexNotResultsFavorites = /*#__PURE__*/ react.default.createElement(ErrorScreen, { title: (0, _wordpress_i18n.__)("No favorites here yet...", "elementor"), description: (0, _wordpress_i18n.__)("Use the heart icon to save Website Templates that inspire you. You'll be able to find them here.", "elementor"), button: { text: (0, _wordpress_i18n.__)("Continue browsing.", "elementor"), action: function action() { return navigate("/kit-library"); } } }); return /*#__PURE__*/ react.default.createElement(Index, { path: props.path, initialQueryParams: { favorite: true }, renderNoResultsComponent: function renderNoResultsComponent(_ref) { var defaultComponent = _ref.defaultComponent; if (!_ref.isFilterActive) return indexNotResultsFavorites; return defaultComponent; } }); } var import_prop_types$43; var init_favorites = __esmMin((() => { init_index(); init_error_screen(); init_es$1(); import_prop_types$43 = /* @__PURE__ */ __toESM(require_prop_types()); init_tracking_context(); Favorites.propTypes = { path: import_prop_types$43.default.string }; })); //#endregion //#region app/modules/kit-library/assets/js/components/kit-list-cloud-item.js var import_prop_types$42, PLACEHOLDER_IMAGE_SRC, PopoverItem, KitActionsPopover, KitListCloudItem, kit_list_cloud_item_default; var init_kit_list_cloud_item = __esmMin((() => { init_slicedToArray(); init_es$1(); import_prop_types$42 = /* @__PURE__ */ __toESM(require_prop_types()); init_kit(); init_apps_event_tracking(); init_use_kit$1(); init_tooltip(); init_kit_list_item$1(); PLACEHOLDER_IMAGE_SRC = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQ1IiBoZWlnaHQ9IjMzMCIgdmlld0JveD0iMCAwIDM0NSAzMzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzNDUiIGhlaWdodD0iMzMwIiBmaWxsPSIjRjRGNUY4Ii8+CjxwYXRoIGQ9Ik0xNjQuMjY3IDE2Ny42QzE2Ni40NzIgMTYxLjc2MSAxNzAuMjEzIDE1Ni42MjUgMTc1LjA5NCAxNTIuNzM1QzE3OS45NzUgMTQ4Ljg0NiAxODUuODE2IDE0Ni4zNDYgMTkyIDE0NS41QzE5MS4xNTUgMTUxLjY4NCAxODguNjU0IDE1Ny41MjUgMTg0Ljc2NCAxNjIuNDA2QzE4MC44NzQgMTY3LjI4OCAxNzUuNzM5IDE3MS4wMjggMTY5LjkgMTczLjIzM00xNjkuNDY3IDE1OC41QzE3My42NzcgMTYwLjQ0MyAxNzcuMDU3IDE2My44MjMgMTc5IDE2OC4wMzNNMTUzIDE4NC41VjE3NS44MzNDMTUzIDE3NC4xMTkgMTUzLjUwOCAxNzIuNDQ0IDE1NC40NjEgMTcxLjAxOEMxNTUuNDEzIDE2OS41OTMgMTU2Ljc2NiAxNjguNDgyIDE1OC4zNSAxNjcuODI2QzE1OS45MzQgMTY3LjE3IDE2MS42NzYgMTY2Ljk5OSAxNjMuMzU3IDE2Ny4zMzNDMTY1LjAzOSAxNjcuNjY4IDE2Ni41ODMgMTY4LjQ5MyAxNjcuNzk1IDE2OS43MDVDMTY5LjAwNyAxNzAuOTE3IDE2OS44MzIgMTcyLjQ2MSAxNzAuMTY3IDE3NC4xNDNDMTcwLjUwMSAxNzUuODI0IDE3MC4zMyAxNzcuNTY2IDE2OS42NzQgMTc5LjE1QzE2OS4wMTggMTgwLjczNCAxNjcuOTA3IDE4Mi4wODcgMTY2LjQ4MiAxODMuMDM5QzE2NS4wNTYgMTgzLjk5MiAxNjMuMzgxIDE4NC41IDE2MS42NjcgMTg0LjVIMTUzWiIgc3Ryb2tlPSIjQUJBQkFCIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K"; PopoverItem = function PopoverItem(_ref) { var _ref$className = _ref.className; var className = _ref$className === void 0 ? "" : _ref$className; var icon = _ref.icon; var title = _ref.title; var onClick = _ref.onClick; return /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__kit-item-actions-popover-item ".concat(className), role: "button", tabIndex: 0, onClick: function handleClick() { onClick(); }, onKeyDown: function handleKeyDown(event) { if ("Enter" === event.key || " " === event.key) { event.preventDefault(); onClick(); } } }, /*#__PURE__*/ react.default.createElement("i", { className: icon }), /*#__PURE__*/ react.default.createElement("span", null, title)); }; PopoverItem.propTypes = { className: import_prop_types$42.default.string, icon: import_prop_types$42.default.string.isRequired, title: import_prop_types$42.default.string.isRequired, onClick: import_prop_types$42.default.func.isRequired }; KitActionsPopover = function KitActionsPopover(_ref2) { var isOpen = _ref2.isOpen; var onClose = _ref2.onClose; var onDelete = _ref2.onDelete; var _ref2$className = _ref2.className; var className = _ref2$className === void 0 ? "e-kit-library__kit-item-actions-popover" : _ref2$className; if (!isOpen) return null; return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Popover, { className, closeFunction: onClose, arrowPosition: "none" }, /*#__PURE__*/ react.default.createElement(PopoverItem, { className: "e-kit-library__kit-item-actions-popover-item--danger", icon: "eicon-library-delete", title: (0, _wordpress_i18n.__)("Delete", "elementor"), onClick: onDelete })); }; KitActionsPopover.propTypes = { isOpen: import_prop_types$42.default.bool.isRequired, onClose: import_prop_types$42.default.func.isRequired, onDelete: import_prop_types$42.default.func.isRequired, className: import_prop_types$42.default.string }; KitListCloudItem = function KitListCloudItem(props) { var _props$model; var navigate = useNavigate(); var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isPopoverOpen = _useState2[0]; var setIsPopoverOpen = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var imageError = _useState4[0]; var setImageError = _useState4[1]; var isLocked = "locked" === ((_props$model = props.model) === null || _props$model === void 0 ? void 0 : _props$model.status); var imageSrc = !props.model.thumbnailUrl || imageError ? PLACEHOLDER_IMAGE_SRC : props.model.thumbnailUrl; (0, react.useEffect)(function() { setImageError(false); }, [props.model.thumbnailUrl]); return /* @__PURE__ */ react.default.createElement(_elementor_app_ui.Card, { className: "e-kit-library__kit-item ".concat(isLocked ? "e-kit-library__kit-item--locked" : "") }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardHeader, { className: "e-kit-library__kit-item-header" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", title: props.model.title, variant: "h5", className: "eps-card__headline" }, isLocked && /*#__PURE__*/ react.default.createElement(Tooltip$2, { tag: "span", title: (0, _wordpress_i18n.__)("Your library is currently over the new quota. Upgrade your plan within 90 days to keep all website templates", "elementor") }, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-lock e-kit-library__kit-item-lock-icon", "aria-hidden": "true" })), props.model.title), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: (0, _wordpress_i18n.__)("Actions", "elementor"), hideText: true, icon: "eicon-ellipsis-v", className: "e-kit-library__kit-item-actions-menu", onClick: function onClick(event) { event.stopPropagation(); setIsPopoverOpen(true); } }), /*#__PURE__*/ react.default.createElement(KitActionsPopover, { isOpen: isPopoverOpen, onClose: function onClose() { return setIsPopoverOpen(false); }, onDelete: function handleDelete() { setIsPopoverOpen(false); AppsEventTracking.sendKitCloudLibraryDelete(props.model.id); props.onDelete(); } })), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardBody, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardImage, { alt: props.model.title, src: imageSrc, onError: function handleImageError() { if (props.model.thumbnailUrl && !imageError) setImageError(true); } }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardOverlay, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, direction: "column", className: "e-kit-library__kit-item-cloud-overlay" }, isLocked ? /*#__PURE__*/ react.default.createElement(Tooltip$2, { tag: "span", title: (0, _wordpress_i18n.__)("Your library is currently over the new quota. Upgrade your plan within 90 days to keep all website templates", "elementor") }, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-lock e-kit-library__kit-item-lock-icon", "aria-hidden": "true" })) : /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { className: "eps-button e-kit-library__kit-item-cloud-overlay-import-button eps-button--primary eps-button--sm eps-button--contained", text: (0, _wordpress_i18n.__)("Apply", "elementor"), icon: "eicon-library-download", onClick: function onClick() { var _elementorCommon; AppsEventTracking.sendKitCloudLibraryApply(props.model.id); navigate((_elementorCommon = elementorCommon) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.config) !== null && _elementorCommon !== void 0 && _elementorCommon.experimentalFeatures["import-export-customization"] ? "import-customization?referrer=".concat(KIT_SOURCE_MAP.CLOUD, "&id=").concat(props.model.id) : "import?referrer=kit-library&source=".concat(KIT_SOURCE_MAP.CLOUD, "&kit_id=").concat(props.model.id), { replace: true }); } })))))); }; KitListCloudItem.propTypes = { model: import_prop_types$42.default.instanceOf(Kit).isRequired, index: import_prop_types$42.default.number, source: import_prop_types$42.default.string, onDelete: import_prop_types$42.default.func.isRequired }; kit_list_cloud_item_default = react.default.memo(KitListCloudItem); })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-cloud-kits.js function ownKeys$10(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; } function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$10(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$10(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** * Fetch kits * * @return {*} kits */ function fetchKits() { return $e.data.get("cloud-kits/index", {}, { refresh: true }).then(function(response) { return response.data; }).then(function(_ref) { return _ref.data.map(function(item) { return Kit.createFromResponse(item); }); }); } /** * Main function. * * @param {*} initialQueryParams * @return {Object} query */ function useCloudKits() { var initialQueryParams = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var force = _useState2[0]; var setForce = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(function() { return _objectSpread$9(_objectSpread$9({ ready: false }, defaultQueryParams), initialQueryParams); }), 2); var queryParams = _useState4[0]; var setQueryParams = _useState4[1]; var forceRefetch = (0, react.useCallback)(function() { return setForce(true); }, [setForce]); var clearQueryParams = (0, react.useCallback)(function() { return setQueryParams(_objectSpread$9(_objectSpread$9({ ready: true }, defaultQueryParams), initialQueryParams)); }, [setQueryParams]); var query = useQuery([KEY$2], function() { return fetchKits(force); }); var data = (0, react.useMemo)(function() { return !query.data ? [] : pipe.apply(void 0, _toConsumableArray(Object.values(kitsPipeFunctions)))(_toConsumableArray(query.data), queryParams); }, [query.data, queryParams]); var isFilterActive = (0, react.useMemo)(function() { return !!queryParams.search; }, [queryParams]); (0, react.useEffect)(function() { if (!force) return; query.refetch().then(function() { return setForce(false); }); }, [force]); return _objectSpread$9(_objectSpread$9({}, query), {}, { data, queryParams, setQueryParams, clearQueryParams, forceRefetch, isFilterActive }); } var KEY$2, defaultQueryParams, kitsPipeFunctions; var init_use_cloud_kits = __esmMin((() => { init_toConsumableArray(); init_defineProperty$1(); init_slicedToArray(); init_kit(); init_es(); init_utils$2(); __name(ownKeys$10, "ownKeys"); __name(_objectSpread$9, "_objectSpread"); KEY$2 = "cloud-kits"; defaultQueryParams = { search: "", referrer: null }; kitsPipeFunctions = { /** * Filter by search term. * * @param {Array<*>} data * @param {*} queryParams * @return {Array} filtered data */ searchFilter: function searchFilter(data, queryParams) { if (!queryParams.search) return data; return data.filter(function(item) { var keywords = [item.title]; var searchTerm = queryParams.search.toLowerCase(); return keywords.some(function(keyword) { return keyword.toLowerCase().includes(searchTerm); }); }); } }; })); //#endregion //#region app/assets/js/hooks/use-cloud-kits-quota.js /** * Hook to fetch cloud kits quota data * * @param {Object} options - React Query options * @return {Object} Query result with quota data */ function useCloudKitsQuota() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; return useQuery([KEY$1], fetchCloudKitsQuota, options); } var KEY$1; var init_use_cloud_kits_quota = __esmMin((() => { init_es(); init_cloud_kits(); KEY$1 = "cloud-kits-quota"; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-kit-cloud-mutation.js function useKitCloudMutations() { var queryClient = useQueryClient(); var remove = useMutation(function(id) { return $e.data.delete("cloud-kits/index", { id }); }, { onSuccess: function onSuccess() { queryClient.invalidateQueries(KEY$2); queryClient.invalidateQueries(KEY$1); } }); return { remove, isLoading: remove.isLoading }; } var init_use_kit_cloud_mutation = __esmMin((() => { init_es(); init_use_cloud_kits(); init_use_cloud_kits_quota(); })); //#endregion //#region app/modules/kit-library/assets/js/components/kit-cloud-delete-dialog.js function KitCloudDeleteDialog(_ref) { var kit = _ref.kit; var show = _ref.show; var onCancelClick = _ref.onCancelClick; var onDeleteClick = _ref.onDeleteClick; var isLoading = _ref.isLoading; if (!kit || !show) return null; var handleDeleteClick = function handleDeleteClick() { if (!isLoading) onDeleteClick(); }; var handleCancelClick = function handleCancelClick() { if (!isLoading) onCancelClick(); }; return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Dialog, { title: (0, _wordpress_i18n.__)("Delete this Website Template?", "elementor"), text: (0, _wordpress_i18n.sprintf)((0, _wordpress_i18n.__)("Removing \"%s\" will permanently delete this website template from your library.", "elementor"), (kit === null || kit === void 0 ? void 0 : kit.title) || ""), onClose: handleCancelClick, dismissButtonText: (0, _wordpress_i18n.__)("Cancel", "elementor"), dismissButtonOnClick: handleCancelClick, approveButtonText: isLoading ? "" : (0, _wordpress_i18n.__)("Delete", "elementor"), approveButtonOnClick: handleDeleteClick, approveButtonColor: "danger" }); } var import_prop_types$41; var init_kit_cloud_delete_dialog = __esmMin((() => { import_prop_types$41 = /* @__PURE__ */ __toESM(require_prop_types()); KitCloudDeleteDialog.propTypes = { onDeleteClick: import_prop_types$41.default.func.isRequired, onCancelClick: import_prop_types$41.default.func.isRequired, show: import_prop_types$41.default.bool.isRequired, isLoading: import_prop_types$41.default.bool.isRequired, kit: import_prop_types$41.default.shape({ id: import_prop_types$41.default.string, title: import_prop_types$41.default.string }) }; })); //#endregion //#region app/modules/kit-library/assets/js/components/kit-list-cloud.js function KitListCloud(props) { var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isDeleteModalOpen = _useState2[0]; var setIsDeleteModalOpen = _useState2[1]; var _useKitCloudMutations = useKitCloudMutations(); var remove = _useKitCloudMutations.remove; var isLoading = _useKitCloudMutations.isLoading; var _useState4 = _slicedToArray((0, react.useState)(), 2); var kit = _useState4[0]; var setKit = _useState4[1]; var resetKit = (0, react.useCallback)(function() { setKit(null); setIsDeleteModalOpen(false); }, []); var handleDelete = (0, react.useCallback)(/*#__PURE__*/ _asyncToGenerator(/*#__PURE__*/ import_regenerator.default.mark(function _callee() { return import_regenerator.default.wrap(function(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 1; return remove.mutate(kit.id); case 1: _context.prev = 1; resetKit(); return _context.finish(1); case 2: case "end": return _context.stop(); } }, _callee, null, [[ 0, , 1, 2 ]]); })), [ kit, remove, resetKit ]); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CssGrid, { spacing: 24, colMinWidth: 290 }, /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, props.data.map(function(model, index) { return /*#__PURE__*/ react.default.createElement(kit_list_cloud_item_default, { key: model.id, model, index, source: props.source, onDelete: function onDelete() { setKit(model); setIsDeleteModalOpen(true); } }); })), /*#__PURE__*/ react.default.createElement(KitCloudDeleteDialog, { kit, show: isDeleteModalOpen, onDeleteClick: handleDelete, onCancelClick: resetKit, isLoading })); } var import_prop_types$40, import_regenerator; var init_kit_list_cloud = __esmMin((() => { import_prop_types$40 = /* @__PURE__ */ __toESM(require_prop_types()); init_asyncToGenerator(); init_slicedToArray(); import_regenerator = /* @__PURE__ */ __toESM(require_regenerator()); init_kit(); init_kit_list_cloud_item(); init_use_kit_cloud_mutation(); init_kit_cloud_delete_dialog(); KitListCloud.propTypes = { data: import_prop_types$40.default.arrayOf(import_prop_types$40.default.instanceOf(Kit)), source: import_prop_types$40.default.string }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/quota-bar.scss var init_quota_bar$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/quota-bar.js function QuotaBar(_ref) { var _ref$used = _ref.used; var used = _ref$used === void 0 ? 0 : _ref$used; var _ref$total = _ref.total; var total = _ref$total === void 0 ? 15 : _ref$total; var _ref$unit = _ref.unit; var unit = _ref$unit === void 0 ? "GB" : _ref$unit; var _ref$label = _ref.label; var label = _ref$label === void 0 ? "Storage" : _ref$label; var displayValues = formatDisplayValues(used, total, unit); var usagePercentage = total > 0 ? Math.min(used / total * 100, 100) : 0; var getUsageState = function getUsageState() { if (0 === usagePercentage) return "empty"; if (usagePercentage >= 100) return "alert"; if (usagePercentage >= 80) return "warning"; return "normal"; }; return /*#__PURE__*/ react.default.createElement("div", { className: QUOTA_BAR_CLASSNAME }, /*#__PURE__*/ react.default.createElement("div", { className: "".concat(QUOTA_BAR_CLASSNAME, "__container") }, /*#__PURE__*/ react.default.createElement("div", { className: "".concat(QUOTA_BAR_CLASSNAME, "__header") }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { className: "".concat(QUOTA_BAR_CLASSNAME, "__label"), variant: "xs", tag: "span" }, function getUsageText() { var state = getUsageState(); if ("warning" === state || "alert" === state) return "".concat(label, ": ").concat(Math.round(usagePercentage), "%"); return label; }()), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { className: "".concat(QUOTA_BAR_CLASSNAME, "__count"), variant: "xs", tag: "span" }, displayValues.used, " ", displayValues.usedUnit, " ", (0, _wordpress_i18n.__)("of", "elementor"), " ", displayValues.total, " ", displayValues.totalUnit)), /*#__PURE__*/ react.default.createElement("div", { className: function getProgressContainerClass() { var state = getUsageState(); return "".concat(QUOTA_BAR_CLASSNAME, "__progress-container ").concat(QUOTA_BAR_CLASSNAME, "__progress-container--").concat(state); }() }, /*#__PURE__*/ react.default.createElement("div", { className: function getProgressBarClass() { var state = getUsageState(); return "".concat(QUOTA_BAR_CLASSNAME, "__progress-bar ").concat(QUOTA_BAR_CLASSNAME, "__progress-bar--").concat(state); }(), style: { width: "".concat(usagePercentage, "%") } })), function shouldShowUpgradeMessage() { var state = getUsageState(); return "warning" === state || "alert" === state; }() && /*#__PURE__*/ react.default.createElement("div", { className: "".concat(QUOTA_BAR_CLASSNAME, "__upgrade-message") }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { variant: "xs", tag: "span" }, (0, _wordpress_i18n.__)("To get more space", "elementor")), /*#__PURE__*/ react.default.createElement("a", { className: "".concat(QUOTA_BAR_CLASSNAME, "__upgrade-link"), href: "https://go.elementor.com/go-pro-cloud-website-templates-library-advanced/", target: "_blank", rel: "noopener noreferrer" }, (0, _wordpress_i18n.__)("Upgrade now", "elementor"))))); } var import_prop_types$39, QUOTA_BAR_CLASSNAME, BYTES_TO_GB, BYTES_TO_MB, convertBytesToGB, convertBytesToMB, formatDisplayValues; var init_quota_bar = __esmMin((() => { import_prop_types$39 = /* @__PURE__ */ __toESM(require_prop_types()); init_quota_bar$1(); QUOTA_BAR_CLASSNAME = "e-kit-library__quota-bar"; BYTES_TO_GB = 1024 * 1024 * 1024; BYTES_TO_MB = 1024 * 1024; convertBytesToGB = function convertBytesToGB(bytes) { return Math.round(bytes / BYTES_TO_GB * 100) / 100; }; convertBytesToMB = function convertBytesToMB(bytes) { return Math.round(bytes / BYTES_TO_MB * 100) / 100; }; formatDisplayValues = function formatDisplayValues(used, total, unit) { if ("B" === unit) { var totalInGB = convertBytesToGB(total); var usedInGB = convertBytesToGB(used); var usedInMB = convertBytesToMB(used); if (used === total) return { used: usedInGB, usedUnit: "GB", total: totalInGB, totalUnit: "GB" }; if (usedInGB < 1) return { used: usedInMB, usedUnit: "MB", total: totalInGB, totalUnit: "GB" }; return { used: usedInGB, usedUnit: "GB", total: totalInGB, totalUnit: "GB" }; } return { used, usedUnit: unit, total, totalUnit: unit }; }; QuotaBar.propTypes = { used: import_prop_types$39.default.number, total: import_prop_types$39.default.number, unit: import_prop_types$39.default.string, label: import_prop_types$39.default.string }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/quota-notification.scss var init_quota_notification$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/quota-notification.js function QuotaNotification(_ref) { var usagePercentage = _ref.usagePercentage; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isDismissed = _useState2[0]; var setIsDismissed = _useState2[1]; var handleDismiss = function handleDismiss() { setIsDismissed(true); }; var getNotificationState = function getNotificationState() { if (usagePercentage >= 100) return "alert"; if (usagePercentage >= 80) return "warning"; return null; }; var getNotificationContent = function getNotificationContent() { var state = getNotificationState(); if ("alert" === state) return { icon: "eicon-alert", message: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("strong", null, (0, _wordpress_i18n.__)("Website template storage is full.", "elementor")), " ", (0, _wordpress_i18n.__)("Get more space ", "elementor")), actions: [{ text: (0, _wordpress_i18n.__)("Upgrade now", "elementor"), href: "https://go.elementor.com/go-pro-cloud-website-templates-library-advanced/", type: "link" }] }; if ("warning" === state) return { icon: "eicon-warning-full", message: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("strong", null, (0, _wordpress_i18n.sprintf)((0, _wordpress_i18n.__)("Website template storage is %1$s%% full.", "elementor"), Math.round(usagePercentage))), " ", (0, _wordpress_i18n.__)("Get more space ", "elementor")), actions: [{ text: (0, _wordpress_i18n.__)("Upgrade now", "elementor"), href: "https://go.elementor.com/go-pro-cloud-website-templates-library-advanced/", type: "link" }] }; return null; }; var state = getNotificationState(); var content = getNotificationContent(); if (!state || !content || isDismissed) return null; return /*#__PURE__*/ react.default.createElement("div", { className: "".concat(QUOTA_NOTIFICATION_CLASSNAME, " ").concat(QUOTA_NOTIFICATION_CLASSNAME, "--").concat(state) }, /*#__PURE__*/ react.default.createElement("div", { className: "".concat(QUOTA_NOTIFICATION_CLASSNAME, "__content") }, /*#__PURE__*/ react.default.createElement("i", { className: "".concat(QUOTA_NOTIFICATION_CLASSNAME, "__icon ").concat(content.icon) }), /*#__PURE__*/ react.default.createElement("div", { className: "".concat(QUOTA_NOTIFICATION_CLASSNAME, "__message") }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { tag: "span" }, content.message), content.actions.map(function(action, index) { return /*#__PURE__*/ react.default.createElement("span", { key: index }, index > 0 && /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { tag: "span" }, " ", (0, _wordpress_i18n.__)("or", "elementor"), " "), /*#__PURE__*/ react.default.createElement("a", { className: "".concat(QUOTA_NOTIFICATION_CLASSNAME, "__action-link"), href: action.href, target: "_blank", rel: "noopener noreferrer" }, action.text)); }))), /*#__PURE__*/ react.default.createElement("button", { className: "".concat(QUOTA_NOTIFICATION_CLASSNAME, "__dismiss"), onClick: handleDismiss, "aria-label": (0, _wordpress_i18n.__)("Dismiss notification", "elementor") }, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-close" }))); } var import_prop_types$38, QUOTA_NOTIFICATION_CLASSNAME; var init_quota_notification = __esmMin((() => { init_slicedToArray(); import_prop_types$38 = /* @__PURE__ */ __toESM(require_prop_types()); init_quota_notification$1(); QUOTA_NOTIFICATION_CLASSNAME = "e-kit-library__quota-notification"; QuotaNotification.propTypes = { usagePercentage: import_prop_types$38.default.number.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/cloud/connect-screen.js function ConnectScreen(_ref) { var _elementorAppConfig; var _elementorAppConfig2; var _elementorAppConfig3; var _elementorAppConfig4; var onConnectSuccess = _ref.onConnectSuccess; var onConnectError = _ref.onConnectError; var menuItems = _ref.menuItems; var forceRefetch = _ref.forceRefetch; var isFetching = _ref.isFetching; var connectButtonRef = (0, react.useRef)(); (0, react.useEffect)(function() { if (!connectButtonRef.current) return; jQuery(connectButtonRef.current).elementorConnect({ popup: { width: 600, height: 700 }, success: function success(_event, data) { var isTrackingOptedInConnect = data.tracking_opted_in && elementorCommon.config.editor_events; elementorCommon.config.library_connect.is_connected = true; elementorCommon.config.library_connect.current_access_level = data.kits_access_level || data.access_level || 0; elementorCommon.config.library_connect.current_access_tier = data.access_tier; elementorCommon.config.library_connect.plan_type = data.plan_type; if (isTrackingOptedInConnect) elementorCommon.config.editor_events.can_send_events = true; onConnectSuccess === null || onConnectSuccess === void 0 || onConnectSuccess(); }, error: function error() { elementorCommon.config.library_connect.is_connected = false; elementorCommon.config.library_connect.current_access_level = 0; elementorCommon.config.library_connect.current_access_tier = ""; elementorCommon.config.library_connect.plan_type = TIERS.free; onConnectError === null || onConnectError === void 0 || onConnectError(); } }); }, [onConnectSuccess, onConnectError]); (0, react.useEffect)(function() { AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.cloudKitLibraryConnect); }, []); return /*#__PURE__*/ react.default.createElement(Index$1, { sidebar: /*#__PURE__*/ react.default.createElement(IndexSidebar, { menuItems }), header: /*#__PURE__*/ react.default.createElement(IndexHeader, { refetch: function refetch() { forceRefetch(); }, isFetching }) }, /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__index-layout-container" }, /*#__PURE__*/ react.default.createElement(Content, { className: "e-kit-library__index-layout-main e-kit-library__connect-container" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, alignItems: "center", justify: "center", direction: "column", className: "e-kit-library__error-screen" }, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-library-cloud-connect", "aria-hidden": "true" }), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", variant: "display-1", className: "e-kit-library__error-screen-title" }, (_elementorAppConfig = elementorAppConfig) === null || _elementorAppConfig === void 0 || (_elementorAppConfig = _elementorAppConfig["cloud-library"]) === null || _elementorAppConfig === void 0 ? void 0 : _elementorAppConfig.library_connect_title_copy), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { variant: "xl", className: "e-kit-library__error-screen-description" }, (_elementorAppConfig2 = elementorAppConfig) === null || _elementorAppConfig2 === void 0 || (_elementorAppConfig2 = _elementorAppConfig2["cloud-library"]) === null || _elementorAppConfig2 === void 0 || (_elementorAppConfig2 = _elementorAppConfig2.library_connect_sub_title_copy) === null || _elementorAppConfig2 === void 0 ? void 0 : _elementorAppConfig2.replace(//gi, "\n")), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { elRef: connectButtonRef, text: (_elementorAppConfig3 = elementorAppConfig) === null || _elementorAppConfig3 === void 0 || (_elementorAppConfig3 = _elementorAppConfig3["cloud-library"]) === null || _elementorAppConfig3 === void 0 || (_elementorAppConfig3 = _elementorAppConfig3.library_connect_button_copy) === null || _elementorAppConfig3 === void 0 ? void 0 : _elementorAppConfig3.replace(/&/g, "&"), url: (_elementorAppConfig4 = elementorAppConfig) === null || _elementorAppConfig4 === void 0 || (_elementorAppConfig4 = _elementorAppConfig4["cloud-library"]) === null || _elementorAppConfig4 === void 0 || (_elementorAppConfig4 = _elementorAppConfig4.library_connect_url) === null || _elementorAppConfig4 === void 0 ? void 0 : _elementorAppConfig4.replace(/&/g, "&"), className: "e-kit-library__connect-button" }))))); } var import_prop_types$37; var init_connect_screen = __esmMin((() => { import_prop_types$37 = /* @__PURE__ */ __toESM(require_prop_types()); init_content(); init_index_header(); init_index_sidebar(); init_layout$1(); init_apps_event_tracking(); init_tiers(); ConnectScreen.propTypes = { onConnectSuccess: import_prop_types$37.default.func, onConnectError: import_prop_types$37.default.func, menuItems: import_prop_types$37.default.array.isRequired, forceRefetch: import_prop_types$37.default.func.isRequired, isFetching: import_prop_types$37.default.bool.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/cloud/upgrade-message.js function UpgradeMessage(_ref) { var hasSubscription = _ref.hasSubscription; var showPlanUpgradeMessage = !_ref.isCloudKitsAvailable && hasSubscription; var content = (0, react.useMemo)(function() { return showPlanUpgradeMessage ? { heading: (0, _wordpress_i18n.__)("Access Website Templates with a plan upgrade", "elementor"), description: (0, _wordpress_i18n.__)("Your current plan doesn't include saving and importing Website Templates. Upgrade to the Advanced plan or higher to use this feature.", "elementor"), buttonText: (0, _wordpress_i18n.__)("Compare plans", "elementor"), url: UPGRADE_URLS.ADVANCED_PLAN } : { heading: (0, _wordpress_i18n.__)("It's time to level up", "elementor"), description: (0, _wordpress_i18n.__)("Upgrade to Elementor Pro to import your own website template and save templates that you can reuse on any of your connected websites.", "elementor"), buttonText: (0, _wordpress_i18n.__)("Upgrade now", "elementor"), url: UPGRADE_URLS.GO_PRO }; }, [showPlanUpgradeMessage]); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, alignItems: "center", justify: "center", direction: "column", className: "e-kit-library__error-screen" }, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-library-subscription-upgrade", "aria-hidden": "true" }), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", variant: "display-1", className: "e-kit-library__error-screen-title" }, content.heading), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { variant: "xl", className: "e-kit-library__error-screen-description" }, content.description), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: content.buttonText, url: content.url, onClick: function onClick() { AppsEventTracking.sendKitsCloudUpgradeClicked(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.cloudKitLibrary); }, target: "_blank", className: "e-kit-library__upgrade-button" })); } var import_prop_types$36, UPGRADE_URLS; var init_upgrade_message = __esmMin((() => { import_prop_types$36 = /* @__PURE__ */ __toESM(require_prop_types()); init_apps_event_tracking(); UPGRADE_URLS = { ADVANCED_PLAN: "https://go.elementor.com/go-pro-cloud-website-templates-library-advanced/", GO_PRO: "https://go.elementor.com/go-pro-cloud-website-templates-library/" }; UpgradeMessage.propTypes = { hasSubscription: import_prop_types$36.default.bool.isRequired, isCloudKitsAvailable: import_prop_types$36.default.bool.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/cloud/upgrade-screen.js function UpgradeScreen(_ref) { var _cloudKitsData$is_eli; var menuItems = _ref.menuItems; var forceRefetch = _ref.forceRefetch; var isFetching = _ref.isFetching; var cloudKitsData = _ref.cloudKitsData; var hasSubscription = "" !== (cloudKitsData === null || cloudKitsData === void 0 ? void 0 : cloudKitsData.subscription_id); var isCloudKitsAvailable = (_cloudKitsData$is_eli = cloudKitsData === null || cloudKitsData === void 0 ? void 0 : cloudKitsData.is_eligible) !== null && _cloudKitsData$is_eli !== void 0 ? _cloudKitsData$is_eli : false; (0, react.useEffect)(function() { AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.cloudKitLibraryUpgrade); }, []); return /*#__PURE__*/ react.default.createElement(Index$1, { sidebar: /*#__PURE__*/ react.default.createElement(IndexSidebar, { menuItems }), header: /*#__PURE__*/ react.default.createElement(IndexHeader, { refetch: function refetch() { forceRefetch(); }, isFetching }) }, /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__index-layout-container" }, /*#__PURE__*/ react.default.createElement(Content, { className: "e-kit-library__index-layout-main e-kit-library__connect-container" }, /*#__PURE__*/ react.default.createElement(UpgradeMessage, { hasSubscription, isCloudKitsAvailable })))); } var import_prop_types$35; var init_upgrade_screen = __esmMin((() => { import_prop_types$35 = /* @__PURE__ */ __toESM(require_prop_types()); init_content(); init_index_header(); init_index_sidebar(); init_layout$1(); init_apps_event_tracking(); init_upgrade_message(); UpgradeScreen.propTypes = { menuItems: import_prop_types$35.default.array.isRequired, forceRefetch: import_prop_types$35.default.func.isRequired, isFetching: import_prop_types$35.default.bool.isRequired, cloudKitsData: import_prop_types$35.default.object.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/cloud/deactivated-icon.js var DeactivatedIcon; var init_deactivated_icon = __esmMin((() => { init_extends(); DeactivatedIcon = function DeactivatedIcon(props) { return /*#__PURE__*/ react.createElement("svg", _extends$1({ width: 409, height: 204, viewBox: "0 0 409 204", fill: "none", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink" }, props), /*#__PURE__*/ react.createElement("g", { clipPath: "url(#clip0_9066_32193)" }, /*#__PURE__*/ react.createElement("path", { d: "M324.425 167.25H81.7246L84.8596 19.5898H327.56L324.425 167.25Z", fill: "white" }), /*#__PURE__*/ react.createElement("path", { d: "M324.5 167.85H81.725C81.56 166.35 81.41 166.275 81.305 166.17C81.2473 166.114 81.2015 166.046 81.1706 165.971C81.1397 165.897 81.1242 165.816 81.125 165.735L84.26 19.5754C84.26 19.4973 84.2756 19.42 84.306 19.348C84.3363 19.2761 84.3807 19.2109 84.4366 19.1564C84.4926 19.1019 84.5588 19.0591 84.6316 19.0306C84.7043 19.0021 84.782 18.9884 84.86 18.9904H327.5C327.581 18.9896 327.661 19.005 327.736 19.036C327.811 19.0669 327.878 19.1126 327.935 19.1704C328.041 19.2845 328.1 19.4346 328.1 19.5904L324.965 165.765C325.025 166.08 324.755 166.35 324.5 167.85ZM82.415 166.65H323.915L327.02 20.1904H85.52L82.415 166.65Z", fill: "black" }), /*#__PURE__*/ react.createElement("path", { d: "M324.425 167.25H81.7246L84.8596 19.5898H327.56L324.425 167.25Z", fill: "white" }), /*#__PURE__*/ react.createElement("path", { d: "M327.5 18.6152V18.6162C327.63 18.6153 327.759 18.6398 327.879 18.6895C327.97 18.7271 328.055 18.778 328.131 18.8408L328.203 18.9082L328.21 18.915L328.209 18.916C328.38 19.0995 328.475 19.3402 328.475 19.5908V19.5986L325.34 165.752C325.355 165.875 325.343 165.988 325.319 166.095C325.294 166.207 325.251 166.339 325.209 166.476C325.121 166.759 324.994 167.184 324.87 167.913L324.816 168.226H81.3887L81.3525 167.892C81.2705 167.146 81.1944 166.784 81.1357 166.604C81.1081 166.519 81.0889 166.488 81.084 166.48C81.0775 166.471 81.0852 166.481 81.04 166.436L81.041 166.435C80.9484 166.343 80.874 166.235 80.8242 166.114C80.774 165.993 80.7486 165.863 80.75 165.731V165.728L83.8848 19.5674C83.8858 19.442 83.9112 19.3177 83.96 19.2021C84.0097 19.0841 84.0831 18.9772 84.1748 18.8877C84.2666 18.7983 84.3758 18.7284 84.4951 18.6816C84.6115 18.6361 84.7355 18.6142 84.8604 18.6162V18.6152H327.5ZM82.7979 166.275H323.548L326.638 20.5654H85.8867L82.7979 166.275Z", fill: "black", stroke: "black", strokeWidth: .75 }), /*#__PURE__*/ react.createElement("rect", { x: 62.8398, y: 70.7256, width: 129.6, height: 130.05, fill: "url(#pattern0_9066_32193)" }), /*#__PURE__*/ react.createElement("path", { d: "M327 20H86V27H327V20Z", fill: "black" }), /*#__PURE__*/ react.createElement("path", { d: "M379.517 66.4746C384.493 66.5767 389.147 67.4985 392.973 69.9111L393.34 70.1494C398.027 73.2721 400.399 77.8954 401.349 83.0469C402.264 88.0107 401.85 93.4321 400.92 98.3701H268.579C269.354 97.3672 270.032 96.4076 270.664 95.4883C271.555 94.1919 272.34 93.0016 273.194 91.8545C274.881 89.5905 276.807 87.5467 280.124 85.5752L280.128 85.5723C282.558 84.1054 292.59 78.7477 303.176 82.2373L303.177 82.2383C308.021 83.8273 312.135 87.1022 314.769 91.4678L315.227 92.2275L315.899 91.6484C320.102 88.0331 324.584 84.7564 329.304 81.8486L329.323 81.8369C339.795 74.9467 351.547 70.2358 363.879 67.9854C368.968 67.1385 374.379 66.3693 379.517 66.4746Z", fill: "white", stroke: "black", strokeWidth: 1.5 }), /*#__PURE__*/ react.createElement("path", { d: "M401.54 99.7197H267.02C266.906 99.7209 266.794 99.689 266.698 99.6277C266.602 99.5664 266.526 99.4785 266.48 99.3747C266.428 99.274 266.408 99.1604 266.421 99.0483C266.435 98.9361 266.481 98.8304 266.555 98.7447C267.865 97.1334 269.091 95.4562 270.23 93.7197C272.465 89.9075 275.608 86.7075 279.38 84.4047C282.26 82.6797 292.52 77.3247 303.53 80.9547C308.473 82.5478 312.713 85.8018 315.53 90.1647C319.651 86.6929 324.023 83.5293 328.61 80.6997C339.226 73.6882 351.158 68.9112 363.68 66.6597C374.075 64.9197 385.865 63.5247 394.115 69.0297C404.36 75.8547 404.135 89.2347 402.155 99.2397C402.126 99.3799 402.049 99.5053 401.936 99.5933C401.823 99.6813 401.683 99.7261 401.54 99.7197ZM268.265 98.5197H401C402.815 88.9347 402.905 76.3797 393.365 70.0197C385.49 64.7547 373.97 66.1347 363.8 67.8297C351.434 70.0599 339.65 74.7805 329.165 81.7047C324.416 84.6183 319.903 87.8983 315.665 91.5147C315.6 91.5721 315.523 91.6141 315.44 91.6374C315.357 91.6608 315.27 91.665 315.185 91.6497C315.098 91.6357 315.016 91.603 314.943 91.5538C314.871 91.5045 314.81 91.44 314.765 91.3647C312.101 86.9697 307.95 83.6754 303.065 82.0797C292.565 78.5997 282.68 83.7597 279.905 85.4247C276.284 87.6529 273.274 90.7455 271.145 94.4247C270.335 95.7147 269.405 97.0647 268.265 98.5197Z", fill: "black" }), /*#__PURE__*/ react.createElement("rect", { x: 256.61, y: 29.9395, width: 67.83, height: 102.69, fill: "url(#pattern1_9066_32193)" }), /*#__PURE__*/ react.createElement("path", { d: "M114.534 142.455C125.859 142.165 134.638 149.891 138.123 159.657C141.561 169.291 140.771 180.648 138.615 191.851H7.4873C14.0371 189.906 18.5275 187.327 22.167 184.635C24.4859 182.919 26.4597 181.156 28.3643 179.526C30.2782 177.888 32.132 176.375 34.2617 175.093L34.2871 175.077C37.9279 172.683 42.0044 171.029 46.2842 170.21C55.9983 168.873 63.2438 175.597 69.2598 182.215L70.0039 183.034L70.4893 182.039C74.9672 172.844 80.0844 163.559 87.4814 155.984C94.8869 148.401 104.941 142.645 114.529 142.455H114.534Z", fill: "white", stroke: "black", strokeWidth: 1.5 }), /*#__PURE__*/ react.createElement("path", { d: "M139.235 193.201H1.26466C1.10553 193.215 0.947384 193.165 0.825016 193.062C0.702649 192.96 0.626081 192.813 0.612157 192.654C0.598234 192.494 0.648094 192.336 0.75077 192.214C0.853446 192.092 1.00053 192.015 1.15966 192.001C10.6712 190.413 19.4897 186.014 26.4797 179.371C28.6625 177.384 31.011 175.588 33.4997 174.001C37.3028 171.511 41.5586 169.794 46.0247 168.946C56.1497 167.536 63.4997 174.136 69.5897 180.706C73.6847 172.321 78.8896 162.841 86.4496 155.101C94.8496 146.506 105.32 141.286 114.5 141.106C125.615 140.896 135.395 147.991 139.4 159.211C142.49 167.866 142.625 178.516 139.82 192.706C139.795 192.844 139.723 192.969 139.616 193.059C139.51 193.15 139.375 193.2 139.235 193.201ZM6.49966 192.001H138.74C141.395 178.261 141.245 168.001 138.26 159.601C134.51 149.101 125.405 142.306 115.01 142.306H114.5C105.62 142.486 95.4646 147.556 87.3346 155.806C79.6546 163.666 74.4196 173.401 70.3247 181.891C70.2806 181.98 70.215 182.057 70.1339 182.115C70.0527 182.172 69.9585 182.209 69.8597 182.221C69.7642 182.234 69.6669 182.225 69.5757 182.194C69.4845 182.162 69.4019 182.11 69.3346 182.041C63.3347 175.486 56.1047 168.541 46.2197 170.041C41.9437 170.889 37.8701 172.549 34.2197 174.931C31.7589 176.501 29.44 178.283 27.2897 180.256C21.4457 185.841 14.2995 189.878 6.49966 192.001Z", fill: "black" }), /*#__PURE__*/ react.createElement("rect", { x: 1.16016, y: 159.721, width: 74.7, height: 39.15, fill: "url(#pattern2_9066_32193)" }), /*#__PURE__*/ react.createElement("path", { d: "M351.575 47.475H350.66C350.975 41.37 350.885 38.58 349.49 37.11C348.095 35.64 345.335 35.43 339.62 35.43V34.5C350.78 34.5 351.35 33.945 351.935 22.5H352.865C352.55 28.605 352.64 31.38 354.035 32.85C355.43 34.32 358.19 34.5 363.905 34.5V35.415C352.745 35.385 352.175 36 351.575 47.475Z", fill: "black" }), /*#__PURE__*/ react.createElement("path", { d: "M365.928 48.5617C365.965 48.5274 365.966 48.4704 365.932 48.4344C365.897 48.3984 365.841 48.3969 365.804 48.4312C365.768 48.4654 365.767 48.5224 365.801 48.5584C365.835 48.5944 365.892 48.5959 365.928 48.5617Z", fill: "black" }), /*#__PURE__*/ react.createElement("path", { d: "M365.945 56.1301H365.03C365.21 52.5601 365.15 50.8201 364.355 49.9801C363.56 49.1401 361.91 49.0051 358.49 49.0051V48.0001C365.18 48.0001 365.45 47.7301 365.795 40.8301H366.71C366.53 44.4151 366.59 46.1551 367.385 46.9951C368.18 47.8351 369.83 47.9551 373.25 47.9551V48.8701C366.5 48.9601 366.29 49.2301 365.945 56.1301Z", fill: "black" }), /*#__PURE__*/ react.createElement("path", { d: "M35.7348 121.501C35.5847 121.501 35.4402 121.443 35.3314 121.34C35.2225 121.237 35.1575 121.095 35.1498 120.946C35.1436 120.867 35.1531 120.787 35.1777 120.712C35.2023 120.637 35.2416 120.568 35.2931 120.508C35.3447 120.448 35.4076 120.399 35.4783 120.363C35.5489 120.328 35.6259 120.306 35.7048 120.301C45.1943 119.723 54.4415 117.07 62.7948 112.531C61.4473 111.922 60.2425 111.037 59.2581 109.934C58.2738 108.831 57.5317 107.533 57.0798 106.126C56.8661 105.317 56.8614 104.468 57.0661 103.657C57.2707 102.846 57.678 102.101 58.2498 101.491C59.9194 99.935 62.1177 99.0718 64.3998 99.0756C68.2698 98.9706 71.8998 101.356 72.0348 104.116C72.1698 106.876 69.5898 109.246 67.5348 110.776C66.8148 111.331 66.0348 111.856 65.2848 112.381C69.5723 113.922 74.1785 114.36 78.6798 113.656L86.8248 111.781C86.9796 111.749 87.1408 111.778 87.2749 111.861C87.4089 111.945 87.5056 112.077 87.5448 112.231C87.5625 112.307 87.565 112.387 87.552 112.465C87.539 112.543 87.5108 112.617 87.469 112.684C87.4272 112.751 87.3727 112.809 87.3084 112.854C87.2442 112.9 87.1716 112.933 87.0948 112.951L78.9048 114.826C74.1613 115.576 69.305 115.111 64.7898 113.476L64.0398 113.161C55.3894 118.084 45.7171 120.938 35.7798 121.501H35.7348ZM64.5798 100.321H64.4148C62.4581 100.297 60.5675 101.028 59.1348 102.361C58.7017 102.829 58.3936 103.399 58.2389 104.017C58.0842 104.636 58.0879 105.284 58.2498 105.901C58.7748 108.181 60.8898 110.401 64.0098 111.901C65.0148 111.271 65.9748 110.611 66.8598 109.936C69.6498 107.791 70.9398 105.946 70.8498 104.296C70.7598 102.646 67.9998 100.321 64.5798 100.321Z", fill: "black" }), /*#__PURE__*/ react.createElement("path", { d: "M227.918 83.4521L219.466 83.9988L219.216 79.8446L218.535 72.8255C217.891 63.9799 210.155 57.3905 201.31 58.1067C192.464 58.8229 185.839 66.63 186.483 75.4397L187.021 82.4589L189.599 121.852L181.219 123.643L178.533 83.1393L177.996 76.1202C176.993 62.5832 187.164 50.6936 200.665 49.5834C214.166 48.4733 225.984 58.5723 226.987 72.0734L227.667 79.0926L227.918 83.2826V83.4521Z", fill: "white", stroke: "#0C0D0E", strokeWidth: 2.25, strokeMiterlimit: 10 }), /*#__PURE__*/ react.createElement("path", { d: "M176.061 141.262L234.507 136.428C236.584 136.249 238.159 134.386 238.016 132.309L235.76 102.263C235.617 100.293 233.934 98.8608 231.964 99.004L173.519 103.839C171.442 104.018 169.866 105.88 170.009 107.957L172.265 138.003C172.408 139.973 174.092 141.406 176.061 141.262Z", fill: "#0C0D0E", stroke: "#0C0D0E", strokeWidth: 3.375, strokeMiterlimit: 10 }), /*#__PURE__*/ react.createElement("path", { d: "M185.693 140.473L236.045 136.319C238.015 136.14 239.554 134.385 239.411 132.379L237.155 102.011C237.012 100.113 235.4 98.7519 233.502 98.8951L183.15 103.049C181.181 103.228 179.641 104.983 179.784 106.989L182.04 137.357C182.184 139.255 183.795 140.616 185.693 140.473Z", fill: "white", stroke: "#0C0D0E", strokeWidth: 2.25, strokeMiterlimit: 10 }), /*#__PURE__*/ react.createElement("g", { style: { mixBlendMode: "multiply" } }, /*#__PURE__*/ react.createElement("path", { d: "M199.911 139.544L235.508 136.607C236.904 136.5 237.979 134.888 237.836 133.098L235.723 105.522C235.579 103.803 234.433 102.514 233.073 102.621L197.475 105.558C196.079 105.666 195.004 107.277 195.148 109.068L197.261 136.643C197.404 138.362 198.55 139.651 199.911 139.544Z", fill: "#FBF2FB" }))), /*#__PURE__*/ react.createElement("path", { d: "M83.4999 104.999L84 66L143.5 25.5005L196 25.4994L83.4999 104.999Z", fill: "white", stroke: "black", strokeWidth: 2.25 }), /*#__PURE__*/ react.createElement("path", { d: "M126.356 67.4886C125.206 68.2993 124.008 68.767 122.761 68.8917C121.518 68.9943 120.335 68.7839 119.212 68.2606C118.092 67.7153 117.138 66.8695 116.349 65.7234C115.548 64.5865 115.007 63.3812 114.729 62.1078C114.463 60.8252 114.438 59.5561 114.655 58.3004C114.876 57.0227 115.332 55.831 116.023 54.7252C116.704 53.6065 117.607 52.6509 118.731 51.8584C119.894 51.0386 121.097 50.5774 122.339 50.4747C123.573 50.3592 124.75 50.5741 125.87 51.1195C126.993 51.6428 127.949 52.4775 128.738 53.6236C129.53 54.7476 130.064 55.9574 130.339 57.2529C130.618 58.5263 130.647 59.8019 130.426 61.0796C130.208 62.3353 129.759 63.5225 129.078 64.6412C128.4 65.7378 127.493 66.687 126.356 67.4886ZM125.013 64.9249C125.723 64.4239 126.282 63.8172 126.689 63.1048C127.109 62.3833 127.374 61.6067 127.483 60.7749C127.597 59.921 127.546 59.067 127.331 58.213C127.12 57.3369 126.741 56.5113 126.194 55.7361C125.669 54.9647 125.076 54.3968 124.413 54.0325C123.75 53.6682 123.05 53.5133 122.315 53.5675C121.579 53.6218 120.837 53.9131 120.088 54.4415C119.377 54.9425 118.812 55.5537 118.392 56.2752C117.976 56.9747 117.711 57.7514 117.598 58.6052C117.488 59.437 117.534 60.2845 117.736 61.1477C117.952 62.0017 118.337 62.8228 118.893 63.611C119.421 64.3603 120.021 64.9236 120.694 65.3008C121.369 65.656 122.08 65.8129 122.824 65.7715C123.573 65.7082 124.302 65.4259 125.013 64.9249Z", fill: "#0C0D0E" }), /*#__PURE__*/ react.createElement("path", { d: "M107.473 80.4541L100.292 65.207L105.292 61.6817C106.261 60.9985 107.174 60.6063 108.031 60.5049C108.892 60.3816 109.666 60.493 110.355 60.839C111.048 61.163 111.616 61.6526 112.058 62.3077C112.723 63.2509 113.063 64.2399 113.076 65.2746C113.09 66.3094 112.807 67.3212 112.228 68.31C111.652 69.2768 110.809 70.1519 109.698 70.9353L107.275 72.6433L110.089 78.6094L107.473 80.4541ZM114.643 75.3984L108.691 70.6589L111.404 68.746L117.492 73.3898L114.643 75.3984ZM106.285 70.498L108.572 68.8857C109.399 68.3027 109.903 67.6185 110.084 66.833C110.278 66.0385 110.102 65.2536 109.556 64.4784C109.209 63.9874 108.765 63.7007 108.224 63.6184C107.686 63.514 107.062 63.7123 106.351 64.2133L104.064 65.8257L106.285 70.498Z", fill: "#0C0D0E" }), /*#__PURE__*/ react.createElement("path", { d: "M95.5492 88.8603L88.3682 73.6133L93.4653 70.0196C94.4343 69.3365 95.3473 68.9442 96.2043 68.8429C97.0613 68.7416 97.8343 68.8639 98.5231 69.21C99.2029 69.5431 99.7751 70.0392 100.24 70.6981C100.923 71.6671 101.274 72.6865 101.293 73.7562C101.316 74.8038 101.038 75.8221 100.458 76.8109C99.8828 77.7777 99.0394 78.6528 97.9282 79.4362L95.4281 81.1989L98.1655 87.0157L95.5492 88.8603ZM94.307 78.8268L96.6326 77.1871C97.4983 76.5768 98.0199 75.8899 98.1973 75.1265C98.3877 74.354 98.216 73.5755 97.6824 72.7912C97.3089 72.2615 96.8559 71.9619 96.3234 71.8924C95.7818 71.8101 95.1556 72.0194 94.445 72.5204L92.1194 74.1601L94.307 78.8268Z", fill: "#0C0D0E" }), /*#__PURE__*/ react.createElement("path", { d: "M118.585 51.6485C119.78 50.8061 121.026 50.3252 122.321 50.2183L122.32 50.2189C123.599 50.0994 124.821 50.322 125.981 50.8862L126.198 50.9931C127.273 51.5414 128.191 52.3714 128.952 53.4758L129.243 53.9121C129.896 54.9393 130.347 56.0354 130.594 57.1999C130.88 58.5051 130.909 59.8138 130.683 61.124C130.46 62.4125 129.998 63.6309 129.301 64.7764L129.3 64.777C128.603 65.9055 127.671 66.8805 126.507 67.7006C125.326 68.5336 124.086 69.0195 122.789 69.1491L122.785 69.1497C121.498 69.256 120.27 69.0375 119.106 68.4952L119.102 68.493C117.938 67.926 116.951 67.0486 116.14 65.8702C115.321 64.7078 114.766 63.4723 114.479 62.164L114.478 62.1609C114.206 60.8476 114.182 59.5458 114.405 58.2574C114.631 56.9475 115.098 55.7249 115.805 54.5916L116.079 54.1685C116.741 53.199 117.578 52.3589 118.585 51.6485ZM118.882 52.0699C117.786 52.843 116.908 53.7731 116.246 54.86L116.244 54.8626C115.571 55.9402 115.128 57.1006 114.912 58.3453C114.701 59.5672 114.723 60.8029 114.982 62.0537L114.983 62.0539C115.254 63.2914 115.78 64.465 116.563 65.5757L116.565 65.5781C117.33 66.6904 118.25 67.504 119.323 68.0278C120.406 68.532 121.544 68.7341 122.743 68.6352C123.938 68.5148 125.094 68.0665 126.21 67.2792C127.321 66.4961 128.203 65.5708 128.861 64.506C129.526 63.4147 129.963 62.2584 130.175 61.0361C130.39 59.7916 130.361 58.55 130.09 57.3091L130.089 57.3069C129.822 56.0471 129.303 54.8694 128.53 53.7729L128.529 53.7704C127.763 52.6575 126.841 51.8552 125.764 51.3536L125.759 51.3521C124.682 50.8274 123.553 50.6209 122.367 50.7319L122.363 50.7328C121.173 50.8312 120.013 51.2728 118.882 52.0699ZM119.942 54.2314C120.72 53.6826 121.507 53.3696 122.299 53.3112C123.085 53.2532 123.834 53.4196 124.54 53.8072C125.245 54.1945 125.866 54.7928 126.408 55.5884L126.611 55.8909C127.067 56.6033 127.392 57.3582 127.585 58.1539C127.807 59.0379 127.86 59.9237 127.742 60.8097C127.628 61.6746 127.351 62.4829 126.915 63.2336C126.488 63.9805 125.904 64.6153 125.164 65.1366C124.422 65.6597 123.65 65.9616 122.849 66.0295L122.841 66.0303C122.049 66.0742 121.293 65.9063 120.577 65.5301L120.57 65.5261C119.859 65.1269 119.231 64.5354 118.685 63.7607C118.113 62.9492 117.712 62.0989 117.489 61.2114L117.488 61.2069C117.279 60.3153 117.231 59.436 117.345 58.5717C117.463 57.6855 117.739 56.8754 118.174 56.1444C118.613 55.3905 119.203 54.7523 119.942 54.2314ZM119.106 63.4637C119.615 64.185 120.186 64.7179 120.816 65.073L121.056 65.1897C121.619 65.4409 122.203 65.5484 122.813 65.5145L122.812 65.5151C123.506 65.455 124.19 65.1926 124.867 64.7153C125.549 64.2347 126.081 63.6556 126.468 62.9779L126.469 62.9759C126.872 62.2841 127.125 61.5396 127.231 60.7414C127.34 59.9208 127.291 59.0997 127.083 58.2767L127.083 58.2745C126.88 57.4317 126.515 56.6355 125.986 55.8854L125.984 55.8821C125.477 55.1367 124.912 54.5999 124.292 54.2592C123.671 53.9183 123.021 53.7751 122.336 53.8256C121.658 53.8758 120.959 54.1449 120.239 54.6527C119.557 55.1332 119.018 55.7174 118.618 56.4054L118.617 56.4074C118.22 57.0752 117.966 57.8186 117.856 58.6399C117.751 59.439 117.795 60.2549 117.99 61.0893C118.197 61.9085 118.568 62.7001 119.106 63.4637Z", fill: "#0C0D0E" }), /*#__PURE__*/ react.createElement("path", { d: "M105.146 61.4721C106.135 60.775 107.086 60.3605 107.996 60.2513C108.899 60.122 109.726 60.2366 110.466 60.6064C111.201 60.9502 111.804 61.4698 112.271 62.16L112.515 62.5301C113.047 63.4009 113.324 64.3158 113.337 65.2719C113.351 66.3585 113.054 67.4164 112.453 68.4412L112.452 68.4432C112.347 68.6193 112.231 68.79 112.109 68.9597L117.931 73.3988L114.637 75.7211L114.486 75.6011L109.341 71.5053L107.603 72.7306L110.417 78.6962L107.372 80.8428L99.9687 65.1225L105.146 61.4721ZM111.795 69.3685C111.27 70.0078 110.622 70.6022 109.849 71.1473L109.78 71.1955L114.655 75.0776L117.058 73.383L111.795 69.3685ZM107.577 80.0676L109.766 78.5244L106.952 72.5587L108.921 71.171L108.263 70.6476L111.412 68.4273L111.699 68.6467C111.728 68.6053 111.76 68.5659 111.789 68.5242L112.009 68.1794C112.567 67.2271 112.834 66.2618 112.821 65.2795C112.808 64.3027 112.489 63.3628 111.85 62.457L111.847 62.4529C111.43 61.8351 110.897 61.3766 110.248 61.073L110.242 61.0704C109.606 60.7511 108.885 60.6443 108.07 60.7612L108.063 60.7622C107.262 60.8571 106.389 61.2266 105.443 61.8935L100.62 65.2944L107.577 80.0676ZM109.36 70.8612L109.552 70.726C110.267 70.2218 110.863 69.6802 111.346 69.1051L109.123 70.6721L109.36 70.8612ZM109.347 64.628C109.037 64.1883 108.652 63.9446 108.187 63.8739L108.177 63.8722C107.74 63.7873 107.188 63.9413 106.502 64.4249L104.393 65.9124L106.388 70.113L108.426 68.6765C109.215 68.1204 109.672 67.485 109.835 66.776L109.836 66.7732C110.01 66.0628 109.858 65.3531 109.347 64.628ZM109.769 64.331C110.35 65.1563 110.552 66.0165 110.337 66.8953C110.138 67.7557 109.587 68.4887 108.723 69.0978L106.186 70.8865L106.055 70.6094L103.834 65.9379L103.741 65.7411L106.205 64.0035C106.937 63.488 107.63 63.245 108.265 63.3643L108.491 63.4106C109.007 63.5442 109.434 63.8565 109.769 64.331Z", fill: "#0C0D0E" }), /*#__PURE__*/ react.createElement("path", { d: "M100.03 70.8484C99.589 70.2226 99.0496 69.7562 98.4113 69.4433L98.4094 69.4423C97.7709 69.1215 97.0489 69.0048 96.2358 69.101C95.4344 69.1958 94.5616 69.5656 93.6153 70.2328L88.6953 73.7016L95.6529 88.4748L97.8418 86.9316L95.1047 81.1151L97.7815 79.2278C98.8691 78.461 99.6849 77.6111 100.239 76.6812C100.796 75.73 101.059 74.7588 101.037 73.7638C101.019 72.7512 100.687 71.78 100.03 70.8484ZM94.2975 72.3117C95.0298 71.7955 95.7228 71.5441 96.3582 71.6386L96.5856 71.6816C97.1034 71.8105 97.5394 72.1416 97.8943 72.645L97.8967 72.6483C98.4628 73.4804 98.6609 74.3331 98.4496 75.1904L98.4482 75.1901C98.2513 76.0326 97.6798 76.7667 96.7821 77.3996L94.2056 79.2161L91.8877 74.2719L91.7959 74.0754L94.2975 72.3117ZM94.4105 78.4409L96.485 76.9783C97.3173 76.3916 97.7885 75.7531 97.9473 75.0702L97.9486 75.0668C98.1178 74.3801 97.9721 73.6772 97.473 72.942L97.3429 72.7714C97.0327 72.3985 96.6821 72.2011 96.2914 72.1502L96.2858 72.1492C95.8395 72.0815 95.2812 72.2489 94.5945 72.7331L92.446 74.2479L94.4105 78.4409ZM100.452 70.5513C101.161 71.5574 101.531 72.626 101.552 73.7524C101.576 74.8522 101.284 75.9176 100.682 76.9436C100.085 77.9473 99.2132 78.8491 98.0785 79.6491L95.7556 81.2869L98.4001 86.9075L98.4927 87.1034L95.448 89.25L88.0444 73.5298L93.3182 69.8115C94.3098 69.1124 95.263 68.697 96.1755 68.5891C97.0755 68.4827 97.8995 68.61 98.6381 68.9804L98.9035 69.121C99.5088 69.4678 100.025 69.9461 100.452 70.5513Z", fill: "#0C0D0E" }), /*#__PURE__*/ react.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M139.254 33.713C139.666 33.4358 140.202 33.372 140.646 33.5779L149.068 36.9906L151.39 29.4591C151.571 28.8508 152.127 28.453 152.748 28.4112C153.369 28.3695 153.949 28.7464 154.182 29.3269L160.068 43.2661C160.348 43.9266 160.107 44.6776 159.552 45.0754L142.342 56.7546C141.76 57.1681 140.965 57.0967 140.46 56.6038L129.667 45.9751C129.236 45.5465 129.094 44.8768 129.36 44.2905C129.625 43.7043 130.212 43.3598 130.827 43.4294L138.688 44.0517L138.617 34.9481C138.611 34.4494 138.843 33.9902 139.254 33.713Z", fill: "#0C0D0E" }), /*#__PURE__*/ react.createElement("defs", null, /*#__PURE__*/ react.createElement("pattern", { id: "pattern0_9066_32193", patternContentUnits: "objectBoundingBox", width: 1, height: 1 }, /*#__PURE__*/ react.createElement("use", { xlinkHref: "#image0_9066_32193", transform: "scale(0.00173611 0.0017301)" })), /*#__PURE__*/ react.createElement("pattern", { id: "pattern1_9066_32193", patternContentUnits: "objectBoundingBox", width: 1, height: 1 }, /*#__PURE__*/ react.createElement("use", { xlinkHref: "#image1_9066_32193", transform: "scale(0.00309598 0.00204499)" })), /*#__PURE__*/ react.createElement("pattern", { id: "pattern2_9066_32193", patternContentUnits: "objectBoundingBox", width: 1, height: 1 }, /*#__PURE__*/ react.createElement("use", { xlinkHref: "#image2_9066_32193", transform: "scale(0.00301205 0.00574713)" })), /*#__PURE__*/ react.createElement("clipPath", { id: "clip0_9066_32193" }, /*#__PURE__*/ react.createElement("rect", { width: 408, height: 204, fill: "white", transform: "translate(0.5)" })), /*#__PURE__*/ react.createElement("image", { id: "image0_9066_32193", width: 576, height: 578, preserveAspectRatio: "none", xlinkHref: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkAAAAJCCAYAAAAoUng9AAAACXBIWXMAAEtbAABLWwHvoCmtAAAgAElEQVR4Xu3d63Lruo4wWua8/zvn+9GHtbEwAZJK7MwLx6hK2RJB8CJHQjtz7f74/PwcAAA3+f92AQAA/xoFEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBRAAcB0FEABwHQUQAHAdBdAP+vj4+NzFAADv9/H56ZkMANzFN0C/wcfHx6dvgwDg9/ENEABwHd8A/eF8UwQAr+cbIADgOr4B+gf51ggA1hRAP2AWJE8Lk9P4HPf5+fnRxUan+QHgX6MA+kGnhcl0Gv/5+flRFTO7Auc0PwD8axRAP+A7hcbpt0dzjBi3Gtd/ig/Azfwj6N/o4+Pj8zvFEQDwNb4B+o12xU/+9uf0W5sYcxIPALfxDdAPyt/4PPkGqIt9kqPy3f4A8DfyDdAP6gqN7h8wn/57nie++l+MAcC/xDdAl/ud3wD9zrEBuJtvgH5A/tal+jc6p/9WZxe3GqvyOwuQ3zk2AHdTAP2A/J+oVw/+7t/3PI3L7U+LjF3B9FXvygsAX+FPYL9BLoSqwuhP+PPQag5P5vckFgB+ggLoB63+S675/vP//191XhUMu/aV7/QFgH+FP4H9gNWfvub5+bOKm/9lWP6mqIqNbdWfyHZ/ksr/TmkXP+N2MQDwJ1AA/YAn37jkwiO37/5MFoue1bi7OcX2WJxVc4qFmSIIgL+BAujNckGwKnBy0ZKLlN1xda4rSLpCpoqNujF3314BwJ/EvwH6A3Tf5MxvVKrXLteJkxw5ZhZHu34nXpkLAL5CAfSDVn+yOi0GToqXdzoZv4t5utZXOZkzAHdRAP2A+OCPD+PqW5ZXFEhj9P97Qad5XqVb+2z76fkAwBgKoD9GVxx85U9fq9gnebI4lzHOizIA+NP4R9A/YBYMHx+//ufkuZiYMfM4v1Z987nuW6RK1zbnEecc5/K7ip8439W6Vr7aD4B/h2+AfrPdNzyr9iff5jyJ/a5YML1q3FflAYAxfAP0dl/5tqH71iXHdQVB9U3TPF/FP9HljuI3RK8qWmYxtYvL8zvp88Sr8wHwe/gG6M1yIdO155hXfOPxihy/S5z7T61jN86uHYC/h2+A3qx6YOaiZ/7M8/NB233bsPp2pyuouphTJ31OYiq7dZ4Uj6+wK2527QD8PRRAPyB+k5G/RagKlln8dAVMdb7rUzmJyXKB1sXE4xi3Kla69ezm2e1jVM05nzudJwD/DgXQD8iFT3zwVg/xKnaM/xZSI+mKnzl27P9VVaFSFRNxvJOxc44u9kkRtWqf7+P8KnEtq5hVOwB/Jv8G6AfNIqV60K/aKjE+vp702cWM0f97pFWO3HYy3ndUa1+dq/pWeTtxb77SP/pufwC+RwH0B8gP6zH++21P9fCe708f7NUY0+mDuCtwqjnH4ypH95rjc7+u/dVePd6r8wHwPf4E9gM+Pn79U1EnPyS7h2YuRGJbHC/Hxwfx52f972yqua6KtGrO+VxXFHU5sl17ttvnnafjrayK0ioegPdTAL3ZfPitHvSxsOgeirEoWT1MV8XH7niOX83187P/093ss5p/V/hkueiq8uWY3D7GukDszr+rIOnW+soiC4BnFEA/YFUYRLsiKeeY577yIF0VN7Egmq/dOLm4+8pcolgM5nxVAVaN1+1TXldWrb1yci2fqsZ9xzgA/B8F0JvNh/hXC4P4EMw5Vm2rbx1WhUyVczVu95DO5588zLv8sTjaxWa5UFvFncacrqmKq4q0+Jrfn44FwJmPT/8I+u26h11sm8XHrlBaxcRcp/Gr2JP5vMOqsMtx1b51x/F8tVc/YTdXAH6Gb4B+QH7AzYfvfPjtHvInBUGXaz74cxGWi4HYnouy3K96fZW4jtW+1b3/T7UHq/Nj/Dfn6TgrXd9uzFd6xfwB/nUKoDeLxUT1IM7FUH5oxX4xNj/kumKhapvnZp44r3ic5dj42sXP16qQqh7Qea3xfZxfNZdsVQDkve72/teerxOv7Svt9gUABdBb5Yd4fGjP96fFx4zJ7+O5qujJBVIsSqqxun75/aq4mPIcq7G7PHncPJ+TucR+OWZXHHVt8zrmczmuytHNZZ6rcgPwHh+f/g3QW+2KmpWqYJrvxzj7v/C72FwsdWPt5Ad2LlZOcu1iVnNbHe9i8/ldexW7m/vv9ORzAnAbBdAbdUXLrtioHlyruBlbjXEyh64t5p9to/GqQmD10P5u8VGteXUdTn2l76rPV/JF3+0/xr4oBPjbKYDe6PThkR/6r3rQVw/4VRGwypXPjXH2zcLpeCfzmO/zmnJMt2e7/azWdTr/74pzG+Nsb0+8a75jvLeIA3g3/wboN5sPiu6hXsXH16o9PuRjXHWuilm1z3MjyTFPHuRVkZFj5h7FuJx7tnd7OM91czrZ92o/drq9ieLcTvb31G7/v5p3jH1ugD+ZAugHVA+ZWWjMh0guGHIRMs+dPKRnn5P4k+KmUhUf8/0cNxdWM26OWxVJ3QP5yYP6Sb44j7xf8Tie7/aoWu+MXx2fOFnTV5xe76dy3lfOGeAVFEC/SSxqYsEQj6uHU2yP52bO/KDePXhjn64g6R6+1UMtFxM5pltbtYacayTdXPKa4/m8xjhetQ/V/Ecjxuf5Vtcitnd5q/PVXnRW8/2KXb6u/cmcAX7Cx6d/A/Q2sQjoHo45psox31f9qjwz9vR99zDOc9/NO69vt7ZoN6dOXvcY5w/bPPeu35P5jLGPP92XXfurnM4H4F/iG6A3ig/m+XCpHtZVEfHxUf8/IM1FRpenionn89zia9dnvu/mlfPmtcbY+VqtJ+7Fak4xNr6u+uTr0e3nd+zmkOfc7X81pxyz258T1WdnjNfkBvhTKYDeLD/s5vtd0TGLiXguxs7iYFUkxIdaVVTEMfIDML6Pfaq4eC6/78aecVURUq2n2q98rtrrLO/9Kjb2ice7a/cVu1zdXsb1dH12uceo11jtzUkugL/Bx6c/gf2Y6oG1Os7FxS7X7FPF5vbqgVrF5Pddv6rPztPYMb4+/5hnda5bZ47v2p44uXY7T/bwJ1R7uesTPenzJBYgUwD9gHyjjg/Z7mGcH45j9N9EVG2drmD56oMr5usKgzzPLn/Olfds13/GVXt9ErvyJG+OeRJbHa8+J/ncGOvPwm4uuxy7ea08jQd4JwXQD1oVAl958OR8MfbkXMyV31ftMc9KXNuqf9W+i8nr6MaJub5yvhpnxlTr6/LFnCfnq/3a7c/4Aav1vcNPjwfcx78BeqOPj1//RwXja4z7/Pzfv4fJ/eL7aPapHtLxOOfqHqA5T9U/yuuocuU1dYVAzhPX1a0vts32vNY5fjyX+52cn23dQ3nXb3U+7nO11tP9X8WeyPsXdZ+N/P7ESXy3zwCv8vHpG6C3iw/i+JrbZnz3wIxtVc7ZXj3M45hRPt89hPO56oGf53aSv3s/46u9qNYx27/SNtvHePbgPdnn3bivkj8P8VwXe3r+nX7HmABj+AboR80H1Bj/fXiuCo18PueK52OuKk8ce/5Ux7lfzpXXUa0p962OV+/nT96HMf67jtxWxY3Rz7nT7UU055jP5ePdWNnpPKv1nRQTXUx1/mTuu3nGuHxuN9+TvF/1ztzAn08B9Gb5oRTf5wfYfIjFB2D3gMhFwIyrCp+qXywy8oM8j5vnOV+rXCPoiojqgZnXPV/z3sV9ymvtjmP/2JbnkdtnrtNr0LV3uv75WuY+eQ25X3W8m0snj9HFdHuU46rzq/wneb/qnbmBP58C6I2qG/t8oOaH9XywVUXE6oEYH1D5gV7liOdin/hQffIgrQqJGZeLiBwXx47jnjyYqpicO7ePURdJ1f7E+LxHuS33ibnja26f77u15Lact+pTnR/jrJCpruHTPl9xcr0BXu3j078Bepv44I8PoPy+6jff5wdXVVSsHpLdA6qbQ8y3yx1jurZRqPYkt8/31V7kPdud6/YqW619nhujLmiq/KvxurY4xmpdJ2sZo59r3WtfZP2E3Ryzp/HZd/sDfyffAL3Z7kH68bH+tzez/8yRY6vzebx5nPPkvvm1ml9s78T+8Weey69Ve5UjtseYKM43P8y7PZzv877lmDmPPG68Tt1eVvm6czHfKmYsdH13/Vaqz8Jp++4zE3WfuzHqa1ddkyd2nyng3/Tx6RugHxEfkNUNt3voVbob/6rvqk910+/mGouI1fvVWqqYah0nObrjeH6MXx9yq/XF19w3ejJmjl+trbKbS7bLv9qXrs/Kd/pWvpvv5Bp0TmKAv58C6Id0D/h4rnsAx/axscrdxZ08lPMDJcfuxovn42ts7x7K+Vw8P52up7oOsa1af9enul55/+NedOs+sdqH1Xq72HhujPPCaoz9OJ2n/br5PsmRPe3/NB74eyiA3ig/OKsHZRc7z8W46mG1e0h0eUehm2M375OxV/PY6cbrcuX2bh7dnHf7fbL+rm8+P9t2OVb723k6z11bt5YcV7V1vpszX7PuGlZ9qradk/xV/C4O+H0+PhVAb1XdoMf49eGX22dMzBPPdcednDuey3OI7/N8uvlH1fndumPMVK11tc5qLp08x+8ez3Nj7Auvbp05T27v5pBfxxc86bu7lk9yjdHv00l8de5pvugk/iTmFX5qHLjVx6cC6O2qB8bJQyS299n/z+6B0MXHcXZ9d31OY3K+VY68Pytd/9gW22NMN9bqOqzOreb9ZD05z2nfne/kqfZolWsXv+ufPY3vvCoP8HfyX4H9sHzDnQ/Qj4///e++rG7M8fx8nx8mMX71EK4eRHk+Y/xf/vgAznlmzEhinyounq/6dOdiW5UjjtWtY4p7GPejyhvj43G+DtV1mao9zzE5bs6tipux1bluDVVs9X53vLr2UV5vdw2yeL1P1jGdxu7mPcZ5LuDvowB6s+7hlB+c+XjG5IdMfgDtHo5de86XH7h5Lqt1zPY8VnxfzT+O0z0Y89h5HjHHPI6xcW+rdcT1x9ecN88vzjv3XYl7tNqzai+q8zlHnn+Oz33iuqr5d/PIqr2tYvL7VZ+45u4aT7uxs5P5jnFWJO3MsU7GG+P5WoCv+fj0J7C3iQ+a+JDpHjgxNj/YVn3i+TxOlSfHnuSNfVcPwWq9Vd/dPuS88XyOz32q9c3z3R53a9qp1pfzrfZ7tS9RlfNkzt1exPbV2HFNqzw7p/ONTvrs5r/rszpX+e5n56vXEXg93wC9WXez7eKn2Gf1APr4+PUbknmcX1fvx/jvtwY57xy3aou54oOhyl/1ie1xrfl87JP3ZzSqvchj5OOTfVvtzQjy8TwX15Tjur07mVd+X+1djMmfrd18u/Wt5jb75/Yufuo+R1XsKk/WfcbicZcjXuuq37Sbw9R9Br7rlbngX6UA+gHVw2GM+iEeHxT5AZXl/lW+VVt8wHQ38hwX+49RFwM5Lq9hjpfn1M1lnq/aYu44bhV3epzX17XH+VRjV+vMuap886daV9W/y1O15+tYrSG+VvPvrnclz6WLn3G5rRs/7kWcZ7f2Km88v1rDV5xco67tFV6ZC/5VCqA3izfw1YNkHs+f1Q2suonuHkL5QVfNJf6MUT+YZ3x8WOX15TXHh1v3oIvyXGa+OP7qQVc91FbxOXaK66/2ereOvH9Vjpgrx+Q9zPFxTXGOeZ/GRu6XX7PqOlRjVmua57s93O1pXHPVp5pH1Sf2zf2ykz38KXkuf9Lc4G/z8enfAL3NyY29e3DM4+5hVj0A87ncJ/etjmO+2LbKmR8eXftqfXH+ud+U1/ikzy7P7FvtY7WH05Pxqva8J9mqvRtrxlfrqmJnTG6r1t/lWvXr1v7UV/qf9jmNq+z67tr/Bv/CGiDzDdAb5Qfd5+ev3wZ9fKz/L/fZnh/C8Xjmjn1ibB433sxivzh+vtnlnLmtG3sVn8eu5lH1zXtYxcz31T5XTm7ucR/n8Xy/mntcW4yN8as9rHJW+eLexH75fOyT11T1zXFxPdVc4/Vd7dfqM1O1n1yjbu9W1z6bY+8+M9NuXrv2J7q96tpWnsS/cg3wp/j49A3Q28QHT7zZnNyUqwfQ7ua+GyvmyPnmcTe3qu+THPkGGuO62Gpdq7FzzDiwyp3nPONmvzy/ym6deb55Prlftze5T/V+1Z5zrXTxX8nZzekr7Sd28bv2zu46173+Z/V5O+l/6iv5vtIH/gYfnwqgt4k3wejz8/wBPUb/oNzlqPrN82OsH1hd/ChU+XO+qYqLr1VcF1vFzL5d+8k6s2rd3Xy6tVdz6saL8bu2bj3VcbXHq+N4Ph7v+qzmvmqv9i23r/KeWs25e50xY5wVNNGTeT+Jzb7Td+edueF38SewHxBvHK+6ieQb0mqMGRtv5PNmnh9uUc4zj+Nrt548Vn54xNc4lzifHBNjc0x3bs4x5pjvq7Wv9ibmivGxfbWfcfwuR9Vnvs6fPE61BzE25om6tngc51z12a05xk7duHlfpm7dJ7rrnMX1xX2L84nzO8k5VWvqPM2/+/w9ybOKfbIG+Ft8fPoG6G1Obz7Z0xt9jI830Pz+yUMrx6z6VLFj/PqQ3J2fVv2qHN1x7H/SnnPlOXTnV31GkuPy+Xyum29u72J24nzG6Pez67daw5P5VGsZ49mDtxt/3eu/8rX+ylpi/Olx5zSu8pU9fLXvzB/e7eNTAfQ2+eHyHfGmnM/l19k2Rl00xPYp9utyxr5dWxc3z1U35SpHt5bcd57PY+X1jKRbZ9d/N2YVU+n266Rv5WSes30en8x3t9d1r72TOVbnumszktW1qmLHeLb3p/lX+7Saz5PzO1/t9wq/c2w45U9gbzRvAN2NILd/fvb/o3nxhtKdiw/Xj4/6TyD5OOeZ5+ODcsbN+cVzsS2/xly5T847X6v5zeO8N3FNq4dHPI4xsd/uht3lqa7JfI0/uW81j3xNuj2r2mKeGBPHiWvNfbucs606X9nlqcavrvnco3kuxuT9q3JV5+LerOJzTJTjqz2u4qLuGjxZ0xj9HE/msPLkeu+scr1yHPgKBdAbVTfcXXuOjTfYVXyMy6/xhtjlr+aYHxQfH/t/T5EfCHkuOTbmzDfuat1xHnneOV/MEWPi8cwR81bziGNV+xDnNA5V+5RV+72KjevZxWe5T9Wv2s+8ZzEmt8e5xbZ8rad8jXdribF57Cle19znRDef6vrHdY/C07Gjai9Wczi12+Ooy533eBUzxvM5wit8fPoT2Nuc/lLHm/zu5hPjqhtxvgGublBPHjzduXi+Wkc13269MUeVM48Z+8Sx8hi5z3Qy13hcXZsqx8nccp6v6OY02/K5bk9P1lVZ7e9qbpXdeKt97a7rGOtrF+O/097F7a7Pag2dJ7FTvOa7vicxr/TT40GkAHqj1UOoio9t8ebYxeX4fKM7HT+fq/Lm+DHquWVV7GoO+Wb4ZIwpjzXPxbiTfY7tM2Y3zyo+ts+YavxV7twWz8XYKseuf/U6CquxqjFz7Dx/Mk5cWxfXyeuMbdX5am9ibM556snevkp1jbu4MZ7v7fQTa4F38yewN6tuEic3jo+Psz83VefjzXb+VDHdDb97aOQHQpUr94u5u/Hiufi6W0PVt9qTnHuMs7Wu5pfPzfg5h+oBEXPm/NUex9zxNbbl/vl9nuN4oNrLeD12Oas15bl1Y8zX+b5bd1TFnO53bsvjVuvsPmvV2PH1VLU/3dpnW7fXWd6PldW+nuiuM/xuCqAfUt3In9yEqht4/IkPuup9FZfHyHOLbbNvfI39qpt+dfM+WXPMtbpxVuvP7XGu1ZpyTLW2qm+3B91YM6Z6XcXkfDFv3uu4hpw3t3V7k/ehurZVe7W3I4lr+wzXLsfEn5ivuxYxZr7mdcyY1Xri64lq7t2a4mvVVuny57jVvnT58/6uxLzd3q9UexKdzgNeTQH0RvGmHX/Jq1/4GFvJD5rqAVG978SHRXU+zvvpjXvKuboHQ6Xaj+4BV/WtHm7zfbV3c2+rOVd7kM93e7661tUaqs9MNf+4F/M4zyWvKcp9qraYa57PY1T7POPyGvOcc5/ZVs25yj0O5Dwx924901fHGqPey5iv29/cN8dG1XpO+lTz6a5LtGr7im6Op141D+6jAPoh3S/5vMk9+SWefaob2Oo43lDzgyTnqh5Ac57VTTnOp7tpVzfo3DfGVv2qvarmXI2V517p5jdf89rmT+y3GyOK1yaPXa21WmN1Ll/rkVTXMop5Yp9qTpW4V3OcfB2r10qc5+neVte+W1MVF9t3MfPcKOzWtZrP6VqnvOfxdaUac7XfT67Fyfg7uxwn84CKAuhNqptkFRNfxzi/8eSbZ3yw7G66832MO7mhx7FWN9ruYRPb8zrnuXh+9+Dp9jfuxTxX7Unei5M9yG27HFme/+o6V8ezT1xjXu/ugVCtM/7Mva8+b/M49luNm8eK8632MPbLefP1XPWPc8w5dvPMfeP7nK+z+hzMuee5rHJWc1mJY8xzq367nPH6n5rjP+1XeUUOyD4+/Vdgb7G68Vc32C62k/OtxjuNqc5/Jc9J3nhujPObZbyx59cZU7XnvjMunp/vY1t3rlPtxRi/Fjune1jNfxyK443x6750bV3/nd11yOfG+O8Yu/ju3Mncq7mNpJpLbF/NJedaqfJ0MafnVzEnfV7hu+Oc7EsVv4uDzsenAugtqptyJcbEX/7VDTq3VfGrsXNbl7eK7dq6ua/W8pW8p3s6xq9FzOl4sW81l9gvxsZzUdc+15OPV/OccfM4z3vKOWLfKs+qLc+ruiZVvsrp+DE+xmRVn3y+i4mx+dwuvprnk/FybPU6xnoeX7Gb24mvzO0V48Kr+RPYG8Ubxckv/4zPN+R4s6z6ZXGs3cMhy3Ndxa5u5DFmjD5vNddq/fFct5+rfer2dLbNnB8f/Z/ZYlyeU9Sdz/lXObq96d7PvHmfRiHHrcTrGdfd7X/e1y5XNX4339U64p5W48X+8zi/zpg8Tr72OV8VV7Vn1W6Nvb8AABNtSURBVPXrXqt9quZfebLHWbeXY5zl6Pak29OuX6fbg9P+MMbwDdC7rH4RVze3HHcaE2NPHjL5hhb7znyruJ3T+ez6jFE/yLqc1VpGoXqIrXLGuFGo5hbt5tStt5pXNfcqV7c3J9cxx+Y+1Zx28+uuX7VfWRW365vbu2uQ596t46d1+9+taZdndf4r+5ud5vhO3qd9O6/Kw99NAfQm8Qb7Kt2Nujr+rl2+eGMeo17var45boyzB3mV57R/nPPJ3Of7rn88F/t185i5Vn262DjX3bx3c8zx830er1pHFVONledYHXd9VlZ98lhf8WQeVVw1p5N8Ud7bqq06PpnTV+e3mtN3vDofPOFPYL/J5+evX7nnc/N9vHnNtvh+Hu9uJLv2KObP88g3wjyXKkeeX86ZzTHyQy3mqW7k+VzVN75285ptOW+eb3UdYq68jl2fOO48njlyzGof5nGe75xTXGcVu1p3HmM1Zjf+SPJ88ut8n3PnvY2xXVuOi/HV3GJsFzfz5H3p3ud5Vdehuka5T7Ufq5is2vdqvJm7y/XV67Ca299o93njz6IA+gHVA6G7YVY3zSr2RHeT3sWd3FTj68rqgRBzz+O4P1Xf3Gck3VyjfDOv3se5zPPVXGdMdW1Wc9ldy27fVlZzyHtbncvn47mpyzOSnC+ej7l2sfE4XvsoXs94Pbr1Vap1rcTPwhh1sZLnPtu7Pcw5T/LM99Wcu72q+uR9y/1m22qc3B7XmnOe7HGW+7wix6t1e8ef6ePTn8DeovtF624inRz/tH+06jvb8mvVr8pTxa/i4o04tu3OreYV46cne5Vzj9GPG9u6XDOmmtNqv3P/Lu887vbztM+0y9n1mzHVWqp1VvFVru44nh+jXl+XZ77v+kQn+xFjuzXmvLltN4eZt4uJcV85VzldR2V1bVfxu7in3pWXf4dvgN5kdaOqznfyTTsfz3HieE/GzjfhfMOtVG27m82ca+yb+3Rjxpt/NU7OEdeSY7o5Vu15rjE+zqPKmecc5xXb4/HuWsZcoxDHjD+zzzyOeePc8jWqxsnXMJ/v9jeq1p73KL6Pc8254nzi+nJbFZP35DvivnbXZ4xfPxfzfTeHmDfG5DGq/ifnqrnOfYmfixzTifHVWPl6VHGvssq7uka/y584p3+dAuhN3vFhzjej7oby5ObS3QB3MVN1U46v8WFTzTE+BFbHMV+15qy6EeeHU7WXXXvOkV9zzAiqa1CtrzLHiOPlmGrc6hrktti/mnNeW36f92uq+kR5X6vxpzhOlS+eX81pjHp/sti/m1c8362v25fYL76f8XkNq/3N51Z9u/zVZyN+nk73bL4/+azFMaqYr8pry+fjue7zNp3OaXet4vld3Op3oDrP9318+hPYW6w+5E8/0LHP6sab++S4k7FPYqY8r9N+0XdzxBvqqm+3b1X/HPtkjKo99z8ZK+eo2mK+Kn41Ro6LMfn9bk25bdqtqdqHrn88V81/vt/lnPHdeKt5TLs1n1zTuH/d3uRzp3bXZRVTzWmXa4x+3fE4nuuczP2pnHM1xpPxd5+zlSfj8D6+AXqT+eHOH/LqZlfJv7Dx/ckNJcfNc6s+3c24k+e1ip0+P//7Z5gnOU5u2FXMbI8xq+syY/MNPM+vGyu/j/2rz8U8X+1/HmP3uaquexTn1O1ZXn83h8ruGk4xd74+Y/z6QI1z7cbY7X3O3/Wv9nDOczV+nHPsE+c+f3Lf2JbnnsU1VXG7/jEmqq75ar1ZjKuuRfe5ieuIMbvr1a0/68aNdjmmvMaT3GN87RrxfgqgNzn5YFc3ifn+pP8Yv940spNf0NNfxurmWLWvxIdLfDDM15McndOb7pxD1ZbnUK057lc+7vpNc+zuZl99DnbXZ7ef1Z7P9nic1zPPVeNW+cb4X86Ta5v3olvnav2xbzXXk/HjcYzNa6jy57VWc4xtsT1e32oe3XFcU3ydcd18urnldU45f47PsVV8l7uS+8Xj7vrGflXbKr46V7Xla5bbs92YT/PxPgqg36i7OXU3qs4qfndTWN20s3yzzjepLk93w879qhtcvLHuzuc9zDfQkeTx8l7E9rj2eS7H572ZP3Gu8bVab5U75ojziP26/cjz6+YRz80x4rnqfTzO84nn817M83m+U7WO/D7nW/Wt9qqKzfuar1G1xzFPXl91LXdrjuub/fI+x5hVrtPzT62u+25+VfxJv6n7PFbH1efjK6oc+XOVPzc5Purau73hfRRAb1Z9iHe/ID9pdROtbjbxpnK6jnxj292YVjfYeD7niQ+aGBNj47rice4727vcM38+Xu1b1Xe11pgr33DnuVV7Fve/uiar1+p6xfF31zPv8Xyf96tbQ7Wnecx8HPPnNVdjzvP5eHeNdnu0yhP7z+M456p99o/v8/Xq8kd53rFv1ac6V12DOPdqT6r42G+eX/WburWNcZZjtzedvLaTsaJ8nSpPc/KcAug3qG5oJ94VW8m/mPF4d6M8sbrRVTfm+T6/Vv1W8oOhuhHFc9UNfiQnN/u4lnxuvo85qr2tcmRxXau5z7g4bu4T23PO1ecjjhHbqjnlazDb55gxrjqfc82Y+Fq9r+Zf7decX86d42KevI5dn9x/vlbrqOKrsbr1Vnt3cu262Lg3UbWmfH627dq7tngu59nNe6pydudXe7hS9euuU47LOXgtBdBv9uSD/crY7sYc7XLs7G78Y6zHiDf3HD/b5o2vekh0D5B4s8wPj27O+SaWY6sHQZxfdfPLN+y8ltk/xlfjdtcxrzHGd/ue11eta7bnPqt9zfOs5lbliO1Vzpgrvo/7GXNWsXkOcd1zrGoeldXcpm7vsxwXc66u+Sr/7LfKMc2Y7nrEHKdrquz2c77vxojXqeuXx9hdl6o9fv5y20rV7+Qa7c5Fp/t/GncLBdAP6T7AT8+f2vXf3SiznG+Xf4xnv2yrm9d8jTfiea67Acf4/FrFxZ/cPka93nzj/fz8b8HQ3USrnDlHjIviuTl2nEfcky5fzFGtOcZU68s5oura5b4zZ5U3983ryXlzv7z2PFaOXeXOqnGr/evWHde/Gmeac5tjVPsVz/WZ6t/fLkcVOwo5vtuH1dzmPPKezfcn12MV3/XvPg/dNdrl7WKfjF/ZfU5O9vhJ3G0+Pv3vAL3F7oP7Ck9upKtfxFWO77ZXuhvmbPv4+PX/8syxq/Yn663Gy3H5/Rj/ezCfzmG3hnhuvp9jzPexz6rvbk5V3Izp1hzHrPLG/rt1xbj5fhRO1tP1r9barXN1Lp7Pqv3oxqvO7fZwFbeaaz5X6caebVWOfB3yHue4HDvb4n7NmNjWjRXzd2OvVP26MVc5djE7q3k/XdMT78z9t/r4VAC9RfwFf7V8A3naHj2J7axynOb/Tly+gb3aydx2MU/nGG/U1euMmfFV3tVeTTlXPI594/gjyee7fl3/3Gf2y21VjipnHj/Gxfjdelb7vdKNP4+r/NUauvnu9qAav3Iy/u5cZ7e3XZ8x+jk/Gb9y0n+137v+Vd8uduek/0nMK/zUOL+DP4H9YU4+aPEGF8Vfvqo9m7/Uu7hKnOcqxy7/0zl3cbub52pfZ1uOOZnb5+ezP6+cXN8x/jdm9RrnNX/meNUaqjFnvxkTx4jxsX91zePDIR7H+Gof4vvcZ7dHeU/m+ypXXGeOrdYT++X5xzHy2CPJufMe59huTTlHFTeP47ry+HHO87W7nrFtNc5qD7pruFrDnHe1R1MeM8+jiq3WW8XNmBg/9zO3VXaf2yjOrcq5G2vGrNqnXZ6d03H+Rh+fvgF6i+6X6hWqX9In8WPUN5+Tc6ee9H0Su3OyjrwHq/G/M7c4TjWH3TyzVb4YU41TfQambh9i3Gp/YvvpZ606H9u69hyTzbU+OdftTzxfrTMfd+OMQrXOp+vq2nbr7XylX7f+7n3s1507Wc+Jk36nczv1pO+TWN7DN0A/oLsJTvGXoHsfxXwnv0Q5Ph7Hm1Q8zv1epZprHufzc/8twMnedOfyHnTrnDfjqi3GdMdxnGoOM351DeLxyZzj5yG+dp+BGd997mJszJdj4hyrz9DJOmNbnlfuH39i327seJzN/en2vRJz5f2Oqpyrc9Uc59zi3uS2+T7GVvuTz+V++fzqGk15/XlO8zWOfTrWjO2uXcyZ11rF5L6r3J1uD8dYf2aiao/+dn/jOj4+fQP0Fu/+MDz5xT2NPY17lZPx4g1lFzvGOudX22b7GL8++Krj/LqLH0k8fzKvPFae626e1blq36s92OWPcVW/kXTziX1i7tw2z52sI8fG/F3O3G8kq/PzfbUv3Z5VcdVxtScn8/2qk72t4rpzT9qz3bXo9m33eajmPd8/md+p3TzHeM24T/f3X+YboN9g9eGLbbubRNf2VSc5n/7idOvJv9hdn4+P9f/lmFU3i/kaf/FP55Lbu/FjTH6ddsdj7NdX3ZTjDXu+j2utbqyrfPM17ns8V/WdY8e55Fwjybljzm6cmDv26frFOeRzOefMEV/jXsY9ieNV+xTf5/zVvuScI6lyVm1j/G8/dnnicfVajbEbO5/P12qeq+K7Ne7GrPLN83lfq755brFPjo3XcYz+WnX7spLHjHNbfTZOvTLX9NUcX+33ah+fvgF6i5++wN0N76nuhrDqc+qruVb9TnLGX/iT+NwnnjvtexJXqfp2+b6zL/nmOvdmjP2NcrU3OdeMO1nXap3xuBonn6tedznn+Tz/SjfPau257cmcYlw1p5w/t8e2bq+qXPHcaf/Kbo2Vap/y2Pn9LtcqJsed9DmJOfG7xuX/+AboH9Hd/J7qborRV38BvzLHeQPs2k/m9/Hx3/8rPsdXZp8x+kIgtlV7drJPsX+c3+4aVGaOMfo+Vft8v+qT57Pbi5M57/YpzjXmm/mr/aquRz6e/bprnMfNsTlvzh37VnnjcXXNur2rrlk1fv7J/eL+jSTG5z3OMXk9+X1c49jIfWJb1/8kbzX/Lq56n1W58rnVeNVe5verfCdrHuP8ntH5bv+/hQLoTb7zS/s7nd4wOq9e33fmMsZ/5/Mk1+zX7Ue+WeWb1Hf2MfY9uTHHueQHSFzHjOlydfln3hwbf2LsbI/9ur3I+xRz5rl285jvu/FWa466fazmtDL75v6n8xijLlTinq6uVXW8GjNfszjejKmuU3U9Yr/cf4z69yWey3FR3JPcluPi8cl+V6q57q5Fd22eXIf8Pvfp9j062aeV3Z59J3fnHTl3Pj79CewtfvJinn7YVzeX0xw/7WReu5iuPd7wu5tmvhH9xN6dXKc45sn4JzHTKja3VfPoHgjVXlc39ypP1z/q4uf7GVPt36/Zfp1LHrfbi928u/Gq2JUqTzV+F5Njq/Xl80/2L6r67PY1zy3OZzdmXmO35hy/el8d5xzz/W5+0y5ft2dV/OwzY1cxJ7myp9fgu35iDN8A/YGeXvR8A+lUN5qubefpHDurPPGXf2X+ouxuTLsbTT6Xxz65eb7CHDvmrOZXvc+6HPN9tW+r/crzWt2cqxtmnOs8rvZ5vq6uQZ57jK/2pBo/n4s54prmaxy7y5Nf83yrNeU5xPg8ZtzTnKebxyo278l87fYqvo6kWkcU15PPV69ZHrfbuymvJ+fN1yjvS47v9j63x5hq/6v4TtyzXXy3vzkmvu6uWe6X37/LaozVPJ/4+PQNEABwGd8AAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDXUQABANdRAAEA11EAAQDX+X/Z+IWTCJcbtQAAAABJRU5ErkJggg==" }), /*#__PURE__*/ react.createElement("image", { id: "image1_9066_32193", width: 323, height: 489, preserveAspectRatio: "none", xlinkHref: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUMAAAHpCAYAAAAYtF6PAAAACXBIWXMAAFGCAABRggFYdP86AAAMQklEQVR4Xu3c0W7bOAJA0ev9/3/OvowADktKspNM2/gcYBBbIinZjS7kupjHx8dHAO/uf1cDAN6BGAIkhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJIUAlhgCVGAJUYghQiSFAJYYAlRgCVGIIUIkhQCWGAJUYAlRiCFCJ4ac8Ho+P8efVOODP9fj4cJ1+lcfj8fHx8fE4fl6NB/4cYvhJwgc/g4/Jn3QWwvnj8fh89RHbx2n4fdwZvujuHeHdj85X+4Hv5c7wRVdhuzNuNI+7c5d49wsc4Jo7w0/6rju68Y6y7kcVeI07Q4DE8NPuflyet119uTKu+8pHaOA5Yviirw7SLn6r2PrIDF9PDF90J0i/I2RfHWl4F2J4051/D3jn293xC5FnwnVn7br+SH31HN6Vb5MvjH9/98w3x981dnQ275U1X5kDP4U7w5vmf+pyNfbs+bj9Kmhn287CdfdcR0LIOxPDhdVH0jEuu9iNH4GvvgTZbX82gGfBezVud2MOP4kYLhzhezZqx88xjs+GZIzuvO7V+MPVMXdR33kmqs+uDX8KMTyxu0PcfQSdI3Y8nqM4rzevdRWf3fjx+PO5r8737DivxuxOwA+vHgO+gy9QJscd4fF43r/7aLv6+DreYY4/d2utYjqu1cIqrFeRuxOqlfm9ubvOM2PhdxHDyeqCv3Mx3xk773tm7NmYO+vuttW/43t37plnx8OfwMfkf4x3WPP2qwv76m5v3D8fZ7fvWGd3XuOY1fZ53mq9j49//53oOO5q25nVsc5eB/wJxBAgMax+/bh53M2Nd07zXc7xfBy3ugsc913dhe3u3pqMx57P+Wze2fZ5/rFt/Ll7vLvrOzvW+BP+BP7OcDBfnHOcxot7te3YvovfuH+1vfZfqhyOtedtx9g7x9yNe8bqda7W3W2r5z9+w3d66zvDXVR2j+c7ryMGx3/HvvnxuH8Vs3m9ce6xfRWcefu85mFc9+rn/PjKLr7Hz9X+8bzH8fA7vf2d4XHBjhfuuO0Y9+zdzbzuHMPdttVaq/XmfXVvndHVazjGrPY/c5zZs2veOc/RZ86N9/W2MdzFaY7UOPYwXmjjhTc/nseutu/mr9ZfuTP/eDy/tvl1N3nlfGbPjr/rK84NRm8Zw7O47caMxqjMz6/CNO4f57cwxupq7DhnHHfnPMb9u2NdrfOVztb9rmOCGP7jiM4cn3nfMX8ctwrcOHe1b15z507cdtvvrH817iqcrx7zO/zOY/P3e6svUB6PX//JzOriWV3g8/xdCOe152OOa49zx2PMxzqbM0d23LZaf2UO3G7fWWjmY87bz85zN+bKOH73+Gzb2Xbez1vdGZ5d6Ed45rGrMePPca35+dm8MVSrx8fzca3V/vG4qxDt5q72X63xHVbvydm4u9v/C7/z2Hy9t7kzHH9x5wCMF+Tx3zx3Dt283hiTq7XOHs/H6cR83Gf2j695N39c4+q858crq/3zn8nV+Hn7OO/s+K/uO3P158Pf5S3uDOdf9tUFNAdyDt7OOGY1ft62Gn92Dk3GOVcxm491jFud07xvt+7Z9q94H67mrbw6D0Y/PobHxVvrj7K757vHx/Nx7fn5aHeRj84CtDruuH0XgV2c5v27deb1rrY9a3WeuzGrfbNnxsLK23xMBjjzo2M43vXMd0HzXcm8/9i3m7c6zmg+xjHm8fj3t6jz/nHNs23zucxjj33jaxyPNb7ucf7uuOO++XxXr/9s3+o8zsYcz1fjVnZjr7bvXveZO2P4O/zoj8nHL+oqNnPkrn6pV+PPts0X+dm4cfxu3fE8ztadjzGOe3bMMa4T49jD+FrG56t5Z2PP5p9Zvf/P7Oc9/fgYri7u1fZx368rnc+9mrcyX4xzpMbHq+PeicZqnXHf6vnZe7OaO6+z88qc2o89W2N+Lasxd7x6zvydfuTH5PFC3kVqtX38hf/4+PX/An3MWYVkN+fM47H+fxCOF+C8b348bhvXG8/pGDMfb15/fj6/njvrN5mPeczZncdu/dUa45yz93GePx9jfnzYveersVeenfPseD7vx90ZXl14O8e4cfx4Ia5icexbrTM/nu3WG50dd94//tytsRuzGlvX793uvVqNm7ddmdc9ts1/Jqt5Z8e72v+q71qX/86PiuHZhVv7i3t1IZ9d3Ctnobmzxjx/frwbv9o+zp/Dtps3r3F1ca/Obzf+KmJn53pnnWfO9a6z9V9Z7xln63/3sd/Zj4/h/Es87z/GzBfiPH+39upCuTtudayz7cfjcf7xuME8f7Xv7HUd4+b9uyDsXtvu+ehs/dX20dlxVu/XvNbuPR23r+a94uw94M/wo2II8Kof+QUKwLPEECAxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgEoMASoxBKjEEKASQ4BKDAEqMQSoxBCgEkOASgwBKjEEqMQQoBJDgKr+D2phk8xYkYdKAAAAAElFTkSuQmCC" }), /*#__PURE__*/ react.createElement("image", { id: "image2_9066_32193", width: 332, height: 174, preserveAspectRatio: "none", xlinkHref: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUwAAACuCAYAAABdlTRiAAAACXBIWXMAAEtbAABLWwHvoCmtAAAISElEQVR4Xu3aWZLbMBIFQHLuf2fOhwMz5eoCUJTZe2aEQyJ2osVnqO3zuq4DgL3/7BoA8IfABGgSmABNAhOgSWACNAlMgCaBCdAkMAGaBCZAk8AEaBKYAE0CE6BJYAI0CUyAJoEJ0CQwAZoEJkCTwARoEpgATQIToElgAjQJTIAmgQnQJDABmgQmQJPABGgSmABNAhOgSWACNAlMgCaBCdAkMAGaBCZAk8AEaBKYAE0CE6BJYAI0CUyAJoEJ0CQwAZoEJkCTwARoEpgATQIToElgAjQJTIAmgQnQJDABmgQmQJPABGgSmABNAhOgSWACNAlMgCaBCdAkMAGaBCZAk8AEaBKYAE0CE6BJYAI0CUyAJoEJ0CQwAZoEJkCTwARoEpgATQIToElgAjQJTIAmgQnQJDABmgQmQJPABGgSmABNAhOgSWACNAlMgCaBCdAkMAGaBCZAk8AEaBKYAE0CE6BJYAI0CUyAJoEJ0CQwAZoEJkCTwARoEpgATQIToElgAjQJTIAmgQnQJDABmgQmQJPABGgSmABNAhOgSWACNAlMgCaBCdAkMAGaBCZAk8AEaBKYAE0CE6BJYAI0CUyAJoEJ0CQwAZoEJkCTwARoEpgATQLzCzjP89q1AT6fwPxk53le13Wd4/2uPfB5zuvyjAJ0OGE+JJ8OZ6fFWO5ECd+LwHzI+Fo9u87l46v4K6EpdOFz+Er+TkaQxeCMv698bx85F/wWTpgPySe967rOKrCqE+F7nBKFJTxPYD5kF47ViXPIp9Dc9189ORb8Zr6S3zD7mhvD8M5X4V3bXT3wsZwwJ87zvPJpbxVeOSyfONW9EpZPn1DjPsBvJzALI/hGYFVfmaOqXTQLnNm4nfdZ9TvUbtuVsQ93+sBPJTCT1dfg2eltV54DZxY+1Uk2nljzuuI4u9COOm2yV/rAT+N3mMe93xV2AjWfHLtjR7OAXM1d1cXyV9cC/PErA7M6+Y33+TQYy2djPRGQO+81LtD3K7+SX1f9+8mqvmpznvN/CImBO2uT7dp1wjKPsRvzrn8dr9O/0wY+068IzCrgVqfI6gQa5UB9ShW01Qk296kC9en1rU7Y8TWXD9VfOkfy9JrhaT/+K3kOxlieAzK3m4Vovh7tcvtdAHTa3Gk35LVW9XfGm1mN89Qc8JX8uMD8l5PLLgCOo/ffdWbBPOuTw3ZWfxz7k173XrMn+q/Wv2oD38WP+UpenRLHn9gmtxvXVdDG9vGhz+2Gar7V+1gWQzEa442xZ2Pmuas23bWv2s3s5p61ueuVtcFTvv0JcxYy1clsd8K5W79qPwvaV0Nj1X+37m6bSuz36hgf6Tuske/r254wc4CME1InLM/zz8lxdfqK9VW7PN6RxLVU16Pf7Ho2Zi6blef+uU11v0eSw2c3xkfYzSkseU/fJjBjkOzCIJbHQB39Y30MtKr/rGwVHjn08pyxLF7vAjher4J1Zuzdbq5hFz53AnRWV/084av68l/JY7DkE88s/HL72etunvg66kbbqv9s7FfkOTvtOn0665u16fSN7Vb7NOt7p81x7PcHnvTlTpjn5MQRH8LcZjw0q9eq/Rg3lo3rHJaxLsr94zhV+6ouzjleq6CZjfdUWI45Zm2qfavWNNv3WLey2/exxs5Yd8z2F4YvEZg5KGYBtwugVX1+v3o44oM41lM9oGO91QNdXa/uqRqrWseRxHCK5asgm917nqMbilWbcb0LtWrssRdV++PYj9mxuieYOa9P+kq++8DGAJm9jj7xAcvv89izsBht8rhVm7c9385bBU+U153lPrv2M3nfZvVV353Oz6Dq06nbrauqf2rsu54ej6/rQwNzF1azuvjQz9rEhyGWdQIjt411d6+rsfL68/tqrKhTt5rvOPZBv5ojtptdz+T7vKu6r12fqHt/0PGuX8njAxs/sPF1/Mlt4588Vjb65zazwKjKZ33jOmZtc9ns4Yxl+b7j++pehrwnVRjksrju2Tqr/encZ67Pbcd9rtqt5PuKdbv5o9ka7owB7xKYs/CJ1zHk8vWRjIcuP3yzUKoe0lUIjH6xPo6R66pxcvtZ2FR1cQ9G/6pPXFtuH/cyjpH3K19Xe16Nm/ez2uPj+Huf477N9r1j9zOr2uR9qOqq+4r1lc59dNrwPZ3XP34l7344qg/3LFhy+9Fn1j6WV2ETr3ObStVv9XAOMSCq8iHW57VXD/Fq/rwnswBY7We1htl41VhV/Wrc2X3G/rPxcvtV34+ymjfWfdb6eM6twJw9BPkhyzoP0Gr8/H4lz/XKeldtd9e575FU88Z2s/vNY96Zc7Sf1XXc6Z/3P9cdx/wvudzmeMFq7+P+vTr+U77CGrhnGZizYJg94LlP7ldd78pX8pz5YeiMl+9rtrbjeLsf4/2svKrbPSS7h30316osv89jrOZYtT+CXLaaf7ZXs70ddas5ctluv2d2P4dVG36u//0OM34w84c0lsUPSyyrPuyV/CGL4817/d91/f07yryG6gHrvN89XHncPFdeT1WX+1dl1f7m+tVcsV9+Xd3bGHvWNs4by7pzxLo812qv4s971K3WcRx/7+NqPSuzfnnvn/Ze4/KM87quNz+k/AGs5DZ3Pkid8buqdcQHsno9jrcPbX4/2qzmWpXn+YZZWdV3vD8Ks3vK7ar+1Rp25cfx9p52a5zZ7Uv1s6nGqczWetcrfV/pU3lqHJ53Xjd+hwnwm73LfysC+IkEJkCTwARoEpgATQIToElgAjQJTIAmgQnQJDABmgQmQJPABGgSmABNAhOgSWACNAlMgCaBCdAkMAGaBCZAk8AEaBKYAE0CE6BJYAI0CUyApv8CbNNILtJ4154AAAAASUVORK5CYII=" }))); }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/cloud/deactivated-screen.js function DeactivatedScreen(_ref) { var menuItems = _ref.menuItems; var forceRefetch = _ref.forceRefetch; var isFetching = _ref.isFetching; return /*#__PURE__*/ react.default.createElement(Index$1, { sidebar: /*#__PURE__*/ react.default.createElement(IndexSidebar, { menuItems }), header: /*#__PURE__*/ react.default.createElement(IndexHeader, { refetch: function refetch() { forceRefetch(); }, isFetching }) }, /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__index-layout-container" }, /*#__PURE__*/ react.default.createElement(Content, { className: "e-kit-library__index-layout-main e-kit-library__connect-container" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, alignItems: "center", justify: "center", direction: "column", className: "e-kit-library__error-screen" }, /*#__PURE__*/ react.default.createElement(DeactivatedIcon, null), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", variant: "display-1", className: "e-kit-library__error-screen-title" }, (0, _wordpress_i18n.__)("Your library has been deactivated", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { variant: "xl", className: "e-kit-library__error-screen-description" }, (0, _wordpress_i18n.__)("Your subscription is currently deactivated, but you still have a 90 day window to keep all your templates safe. Upgrade within this time to continue enjoying them without interruption.", "elementor")), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { text: (0, _wordpress_i18n.__)("Upgrade now", "elementor"), url: "https://go.elementor.com/go-pro-cloud-website-templates-library-advanced/", target: "_blank", className: "e-kit-library__upgrade-button" }))))); } var import_prop_types$34; var init_deactivated_screen = __esmMin((() => { import_prop_types$34 = /* @__PURE__ */ __toESM(require_prop_types()); init_content(); init_index_header(); init_index_sidebar(); init_layout$1(); init_deactivated_icon(); DeactivatedScreen.propTypes = { menuItems: import_prop_types$34.default.array.isRequired, forceRefetch: import_prop_types$34.default.func.isRequired, isFetching: import_prop_types$34.default.bool.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/cloud/full-page-loader.js function FullPageLoader(_ref) { var menuItems = _ref.menuItems; var forceRefetch = _ref.forceRefetch; var isFetching = _ref.isFetching; return /*#__PURE__*/ react.default.createElement(Index$1, { sidebar: /*#__PURE__*/ react.default.createElement(IndexSidebar, { menuItems }), header: /*#__PURE__*/ react.default.createElement(IndexHeader, { refetch: function refetch() { forceRefetch(); }, isFetching }) }, /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__index-layout-container" }, /*#__PURE__*/ react.default.createElement(Content, { className: "e-kit-library__index-layout-main" }, /*#__PURE__*/ react.default.createElement(PageLoader, null)))); } var import_prop_types$33; var init_full_page_loader = __esmMin((() => { import_prop_types$33 = /* @__PURE__ */ __toESM(require_prop_types()); init_content(); init_index_header(); init_index_sidebar(); init_layout$1(); init_page_loader(); FullPageLoader.propTypes = { menuItems: import_prop_types$33.default.array.isRequired, forceRefetch: import_prop_types$33.default.func.isRequired, isFetching: import_prop_types$33.default.bool.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/cloud/cloud.js function ownKeys$9(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; } function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function Cloud(_ref) { var _elementorCommon; var _ref$path = _ref.path; var path = _ref$path === void 0 ? "" : _ref$path; var _ref$renderNoResultsC = _ref.renderNoResultsComponent; var renderNoResultsComponent = _ref$renderNoResultsC === void 0 ? function(_ref2) { return _ref2.defaultComponent; } : _ref$renderNoResultsC; usePageTitle({ title: (0, _wordpress_i18n.__)("Website Templates", "elementor") }); var _useConnectState = useConnectState(); var isConnected = _useConnectState.isConnected; var isConnecting = _useConnectState.isConnecting; var setConnecting = _useConnectState.setConnecting; var handleConnectSuccess = _useConnectState.handleConnectSuccess; var handleConnectError = _useConnectState.handleConnectError; var _useCloudKits = useCloudKits(); var data = _useCloudKits.data; var isSuccess = _useCloudKits.isSuccess; var isLoading = _useCloudKits.isLoading; var isFetching = _useCloudKits.isFetching; var isError = _useCloudKits.isError; var queryParams = _useCloudKits.queryParams; var setQueryParams = _useCloudKits.setQueryParams; var clearQueryParams = _useCloudKits.clearQueryParams; var forceRefetch = _useCloudKits.forceRefetch; var isFilterActive = _useCloudKits.isFilterActive; var _useCloudKitsEligibil = useCloudKitsEligibility({ enabled: isConnected }); var cloudKitsData = _useCloudKitsEligibil.data; var isCheckingEligibility = _useCloudKitsEligibil.isLoading; var refetchEligibility = _useCloudKitsEligibil.refetch; var _useCloudKitsQuota = useCloudKitsQuota({ enabled: isConnected }); var quotaData = _useCloudKitsQuota.data; var isLoadingQuota = _useCloudKitsQuota.isLoading; var isCloudKitsAvailable = (cloudKitsData === null || cloudKitsData === void 0 ? void 0 : cloudKitsData.is_eligible) || false; var isDeactivated = quotaData && isCloudKitsDeactivated(quotaData); var exportUrl = (_elementorCommon = elementorCommon) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.config) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.experimentalFeatures) !== null && _elementorCommon !== void 0 && _elementorCommon["import-export-customization"] ? elementorAppConfig.base_url + "#/export-customization" : elementorAppConfig.base_url + "#/export"; var menuItems = useMenuItems(path); var onConnectSuccess = function onConnectSuccess() { refetchEligibility(); forceRefetch(); handleConnectSuccess(); }; var onConnectError = function onConnectError() { handleConnectError(); }; var shouldShowLoading = isConnecting || isCheckingEligibility || isConnected && isLoading; (0, react.useEffect)(function() { if (isConnecting && !isCheckingEligibility && !isLoading) setConnecting(false); }, [ isConnecting, isCheckingEligibility, isLoading, setConnecting ]); (0, react.useEffect)(function() { AppsEventTracking.sendPageViewsWebsiteTemplates(elementorCommon.eventsManager.config.secondaryLocations.kitLibrary.cloudKitLibrary); }, []); if (!isConnected) return /*#__PURE__*/ react.default.createElement(ConnectScreen, { onConnectSuccess, onConnectError, menuItems, forceRefetch, isFetching }); if (shouldShowLoading) return /*#__PURE__*/ react.default.createElement(FullPageLoader, { menuItems, forceRefetch, isFetching }); if (isDeactivated && !shouldShowLoading) return /*#__PURE__*/ react.default.createElement(DeactivatedScreen, { menuItems, forceRefetch, isFetching }); if (!isCloudKitsAvailable && !shouldShowLoading) return /*#__PURE__*/ react.default.createElement(UpgradeScreen, { menuItems, forceRefetch, isFetching, cloudKitsData }); return /*#__PURE__*/ react.default.createElement(Index$1, { sidebar: /*#__PURE__*/ react.default.createElement(IndexSidebar, { menuItems }), header: /*#__PURE__*/ react.default.createElement(IndexHeader, { refetch: function refetch() { forceRefetch(); }, isFetching }) }, /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__index-layout-container" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, className: "e-kit-library__index-layout-heading" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { item: true, className: "e-kit-library__index-layout-heading-search" }, /*#__PURE__*/ react.default.createElement(SearchInput, { placeholder: (0, _wordpress_i18n.__)("Search my Website Templates...", "elementor"), value: queryParams.search, onChange: function onChange(value) { setQueryParams(function(prev) { return _objectSpread$8(_objectSpread$8({}, prev), {}, { search: value }); }); } })), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { item: true, className: "e-kit-library__index-layout-heading-quota" }, !isLoadingQuota && (quotaData === null || quotaData === void 0 ? void 0 : quotaData.storage) && /*#__PURE__*/ react.default.createElement(QuotaBar, { used: quotaData.storage.currentUsage, total: quotaData.storage.threshold, unit: quotaData.storage.unit }))), !isLoadingQuota && (quotaData === null || quotaData === void 0 ? void 0 : quotaData.storage) && /*#__PURE__*/ react.default.createElement(QuotaNotification, { usagePercentage: Math.min(quotaData.storage.currentUsage / quotaData.storage.threshold * 100, 100) }), /*#__PURE__*/ react.default.createElement(Content, { className: "e-kit-library__index-layout-main" }, /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, isError && /*#__PURE__*/ react.default.createElement(ErrorScreen, { title: (0, _wordpress_i18n.__)("Something went wrong.", "elementor"), description: (0, _wordpress_i18n.__)("Nothing to worry about, use 🔄 on the top corner to try again. If the problem continues, head over to the Help Center.", "elementor"), button: { text: (0, _wordpress_i18n.__)("Learn More", "elementor"), url: "https://go.elementor.com/app-kit-library-error/", target: "_blank" } }), isSuccess && 0 < data.length && /*#__PURE__*/ react.default.createElement(KitListCloud, { data, source: path }), isSuccess && 0 === data.length && (queryParams.search ? /*#__PURE__*/ react.default.createElement(ErrorScreen, { title: (0, _wordpress_i18n.__)("No Website Templates found for your search", "elementor"), description: (0, _wordpress_i18n.__)("Try different keywords or ", "elementor"), button: { text: (0, _wordpress_i18n.__)("Continue browsing.", "elementor"), action: clearQueryParams } }) : renderNoResultsComponent({ defaultComponent: /*#__PURE__*/ react.default.createElement(ErrorScreen, { title: (0, _wordpress_i18n.__)("No Website Templates to show here yet", "elementor"), description: (0, _wordpress_i18n.__)("Once you export a Website to the cloud, you'll find it here and be able to use it on all your sites.", "elementor"), newLineButton: true, button: { text: (0, _wordpress_i18n.__)("Export this site", "elementor"), url: exportUrl, target: "_blank", variant: "contained", color: "primary" } }), isFilterActive })))))); } var import_prop_types$32; var init_cloud = __esmMin((() => { init_defineProperty$1(); init_content(); init_error_screen(); init_index_header(); init_index_sidebar(); init_kit_list_cloud(); init_layout$1(); init_quota_bar(); init_quota_notification(); init_search_input(); init_use_cloud_kits(); init_use_cloud_kits_eligibility(); init_use_cloud_kits_quota(); init_use_menu_items(); init_use_connect_state(); init_use_page_title(); init_apps_event_tracking(); init_utils$2(); import_prop_types$32 = /* @__PURE__ */ __toESM(require_prop_types()); init_connect_screen(); init_upgrade_screen(); init_deactivated_screen(); init_full_page_loader(); init_index$1(); __name(ownKeys$9, "ownKeys"); __name(_objectSpread$8, "_objectSpread"); Cloud.propTypes = { path: import_prop_types$32.default.string, renderNoResultsComponent: import_prop_types$32.default.func }; })); //#endregion //#region app/modules/kit-library/assets/js/components/kit-already-applied-dialog.js function KitAlreadyAppliedDialog(props) { var tracking = useTracking(); var _useQueryParams$getAl = useQueryParams().getAll(); var returnToParam = _useQueryParams$getAl.return_to; var noAutomaticRedirectParam = _useQueryParams$getAl.no_automatic_redirect; var getRemoveKitUrl = function getRemoveKitUrl() { var elementorToolsUrl = elementorAppConfig["import-export"].tools_url; var url = new URL(elementorToolsUrl); url.searchParams.append("referrer_kit", props.id); url.searchParams.append("scroll_to_revert", "1"); if (returnToParam) url.searchParams.append("return_to", returnToParam); if (noAutomaticRedirectParam) url.searchParams.append("no_automatic_redirect", noAutomaticRedirectParam); url.hash = "tab-import-export-kit"; return url.toString(); }; return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Dialog, { title: (0, _wordpress_i18n.__)("You've already applied a Website Templates.", "elementor"), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("Applying two Website Templates on the same website will mix global styles and colors and hurt your site's performance.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement("br", null), (0, _wordpress_i18n.__)("Remove the existing Website Template before applying a new one.", "elementor")), approveButtonText: (0, _wordpress_i18n.__)("Remove existing", "elementor"), approveButtonColor: "primary", approveButtonOnClick: function approveButtonOnClick() { return tracking.trackKitdemoApplyRemoveExisting(true, function() { location.href = getRemoveKitUrl(); }); }, dismissButtonText: (0, _wordpress_i18n.__)("Apply anyway", "elementor"), dismissButtonOnClick: function dismissButtonOnClick() { return tracking.trackKitdemoApplyRemoveExisting(false, props.dismissButtonOnClick); }, onClose: props.onClose }); } var import_prop_types$31; var init_kit_already_applied_dialog = __esmMin((() => { import_prop_types$31 = /* @__PURE__ */ __toESM(require_prop_types()); init_tracking_context(); init_use_query_params(); KitAlreadyAppliedDialog.propTypes = { id: import_prop_types$31.default.string.isRequired, dismissButtonOnClick: import_prop_types$31.default.func.isRequired, onClose: import_prop_types$31.default.func.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/components/apply-kit-dialog.js function ApplyKitDialog(props) { var navigate = useNavigate(); var tracking = useTracking(); var returnTo = useReturnTo(); var startImportProcess = (0, react.useCallback)(function() { var _elementorCommon; var applyAll = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false; var url = ""; if ((_elementorCommon = elementorCommon) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.config) !== null && _elementorCommon !== void 0 && _elementorCommon.experimentalFeatures["import-export-customization"]) { url = "import-customization?referrer=kit-library&id=".concat(props.id, "&file_url=").concat(encodeURIComponent(props.downloadLink)); if (applyAll) url += "&action_type=apply-all"; if (returnTo) url += "&return_to=".concat(encodeURIComponent(returnTo), "&no_automatic_redirect=true"); } else { url = "/import/process" + "?id=".concat(props.id) + "&file_url=".concat(encodeURIComponent(props.downloadLink)) + "&nonce=".concat(props.nonce, "&referrer=kit-library"); if (applyAll) url += "&action_type=apply-all"; if (returnTo) url += "&return_to=".concat(encodeURIComponent(returnTo), "&no_automatic_redirect=true"); } tracking.trackKitdemoApplyAllOrCustomize(applyAll, function() { return navigate(url); }); }, [ props.downloadLink, props.nonce, props.id, tracking, navigate, returnTo ]); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Dialog, { title: (0, _wordpress_i18n.__)("Apply %s?", "elementor").replace("%s", props.title), text: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("You can use everything in this kit, or Customize to only include some items.", "elementor"), /*#__PURE__*/ react.default.createElement("br", null), /*#__PURE__*/ react.default.createElement("br", null), (0, _wordpress_i18n.__)("By applying the entire kit, you'll override any styles, settings or content already on your site.", "elementor")), approveButtonText: (0, _wordpress_i18n.__)("Apply All", "elementor"), approveButtonColor: "primary", approveButtonOnClick: function approveButtonOnClick() { return startImportProcess(true); }, dismissButtonText: (0, _wordpress_i18n.__)("Customize", "elementor"), dismissButtonOnClick: function dismissButtonOnClick() { return startImportProcess(false); }, onClose: props.onClose }); } var import_prop_types$30; var init_apply_kit_dialog = __esmMin((() => { import_prop_types$30 = /* @__PURE__ */ __toESM(require_prop_types()); init_es$1(); init_tracking_context(); init_return_to_context(); ApplyKitDialog.propTypes = { id: import_prop_types$30.default.string.isRequired, downloadLink: import_prop_types$30.default.string.isRequired, nonce: import_prop_types$30.default.string.isRequired, onClose: import_prop_types$30.default.func.isRequired, title: import_prop_types$30.default.string }; ApplyKitDialog.defaultProps = { title: "Kit" }; })); //#endregion //#region app/modules/kit-library/assets/js/components/kit-dialog.js function KitDialog(props) { var _useState2 = _slicedToArray((0, react.useState)(false), 2); var applyAnyway = _useState2[0]; var setApplyAnyway = _useState2[1]; if (!!elementorAppConfig["import-export"].lastImportedSession.session_id && !applyAnyway) return /*#__PURE__*/ react.default.createElement(KitAlreadyAppliedDialog, { id: props.id, dismissButtonOnClick: function dismissButtonOnClick() { return setApplyAnyway(true); }, onClose: props.onClose }); return /*#__PURE__*/ react.default.createElement(ApplyKitDialog, { id: props.id, downloadLink: props.downloadLinkData.data.download_link, nonce: props.downloadLinkData.meta.nonce, onClose: props.onClose }); } var import_prop_types$29; var init_kit_dialog = __esmMin((() => { import_prop_types$29 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); init_kit_already_applied_dialog(); init_apply_kit_dialog(); KitDialog.propTypes = { id: import_prop_types$29.default.string.isRequired, downloadLinkData: import_prop_types$29.default.object.isRequired, onClose: import_prop_types$29.default.func.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/components/connect-dialog.js function ConnectDialog(props) { var settings = useSettingsContext().settings; var approveButtonRef = useRef$7(); useEffect$12(function() { jQuery(approveButtonRef.current).elementorConnect({ success: function success(e, data) { return props.onSuccess(data); }, error: function error() { return props.onError((0, _wordpress_i18n.__)("Unable to connect", "elementor")); }, parseUrl: function parseUrl(url) { return url.replace("%%page%%", props.pageId); } }); }, []); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Dialog, { title: (0, _wordpress_i18n.__)("Connect to Template Library", "elementor"), text: (0, _wordpress_i18n.__)("Access this template and our entire library by creating a free personal account", "elementor"), approveButtonText: (0, _wordpress_i18n.__)("Get Started", "elementor"), approveButtonUrl: settings.library_connect_url, approveButtonOnClick: function approveButtonOnClick() { return props.onClose(); }, approveButtonColor: "primary", approveButtonRef, dismissButtonText: (0, _wordpress_i18n.__)("Cancel", "elementor"), dismissButtonOnClick: function dismissButtonOnClick() { return props.onClose(); }, onClose: function onClose() { return props.onClose(); } }); } var import_prop_types$28, _React, useEffect$12, useRef$7; var init_connect_dialog = __esmMin((() => { import_prop_types$28 = /* @__PURE__ */ __toESM(require_prop_types()); init_settings_context(); _React = react.default; useEffect$12 = _React.useEffect; useRef$7 = _React.useRef; ConnectDialog.propTypes = { onClose: import_prop_types$28.default.func.isRequired, onError: import_prop_types$28.default.func.isRequired, onSuccess: import_prop_types$28.default.func.isRequired, pageId: import_prop_types$28.default.string }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/layout/header-back-button.scss var init_header_back_button$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/layout/header-back-button.js function HeaderBackButton(props) { var navigate = useNavigate(); var lastFilter = useLastFilterContext().lastFilter; var tracking = useTracking(); return /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__header-back-container" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { className: "e-kit-library__header-back", icon: "eicon-chevron-left", text: (0, _wordpress_i18n.__)("Back to Library", "elementor"), onClick: function onClick() { tracking.trackKitdemoOverviewBack(props.kitId, props.kitName, function() { return navigate(wp.url.addQueryArgs("/kit-library", lastFilter)); }); } })); } var import_prop_types$27; var init_header_back_button = __esmMin((() => { import_prop_types$27 = /* @__PURE__ */ __toESM(require_prop_types()); init_last_filter_context(); init_es$1(); init_tracking_context(); init_header_back_button$1(); HeaderBackButton.propTypes = { pageId: import_prop_types$27.default.string.isRequired, kitName: import_prop_types$27.default.string.isRequired, kitId: import_prop_types$27.default.string.isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-download-link-mutation.js function useDownloadLinkMutation(model, _ref) { var onError = _ref.onError; var onSuccess = _ref.onSuccess; return useMutation((0, react.useCallback)(function() { return $e.data.get("kits/download-link", { id: model.id }, { refresh: true }); }, [model]), { onSuccess, onError }); } var init_use_download_link_mutation = __esmMin((() => { init_es(); })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/components/item-header.scss var init_item_header$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/components/item-header.js /** * Returns the right call to action button. * * @param {Kit} model * @param {Object} root0 * @param {Function} root0.apply * @param {Function} root0.onConnect * @param {Function} root0.onClick * @param {boolean} root0.isApplyLoading * @param {Function} root0.onUpgrade * @return {Object} result */ function useKitCallToActionButton(model, _ref) { var apply = _ref.apply; var isApplyLoading = _ref.isApplyLoading; var onConnect = _ref.onConnect; var _onClick = _ref.onClick; var _ref$onUpgrade = _ref.onUpgrade; var onUpgrade = _ref$onUpgrade === void 0 ? function() {} : _ref$onUpgrade; var _useKitCallToAction = useKitCallToAction(model.accessTier); var type = _useKitCallToAction.type; var subscriptionPlan = _useKitCallToAction.subscriptionPlan; var promotionUrl = useAddKitPromotionUTM(subscriptionPlan.promotion_url, model.id, model.title); var settings = useSettingsContext().settings; return (0, react.useMemo)(function() { if (type === "connect") return { id: "connect", text: (0, _wordpress_i18n.__)("Apply", "elementor"), hideText: false, variant: "contained", color: "primary", size: "sm", onClick: function onClick(e) { onConnect(e); _onClick === null || _onClick === void 0 || _onClick(e); }, includeHeaderBtnClass: false }; if (type === "promotion" && subscriptionPlan) return { id: "promotion", text: settings.is_pro ? "Upgrade" : "Go ".concat(subscriptionPlan.label), hideText: false, variant: "contained", color: "cta", size: "sm", url: promotionUrl, target: "_blank", onClick: function onClick(e) { onUpgrade === null || onUpgrade === void 0 || onUpgrade(e); }, includeHeaderBtnClass: false }; return { id: "apply", text: (0, _wordpress_i18n.__)("Apply", "elementor"), className: "e-kit-library__apply-button", icon: isApplyLoading ? "eicon-loading eicon-animation-spin" : "", hideText: false, variant: "contained", color: isApplyLoading ? "disabled" : "primary", size: "sm", onClick: function onClick(e) { if (!isApplyLoading) apply(e); _onClick === null || _onClick === void 0 || _onClick(e); }, includeHeaderBtnClass: false }; }, [ type, subscriptionPlan, isApplyLoading, apply ]); } function ItemHeader(props) { var updateSettings = useSettingsContext().updateSettings; var tracking = useTracking(); var resetConnect = function resetConnect() { var _elementorCommon; var lc = (_elementorCommon = elementorCommon) === null || _elementorCommon === void 0 || (_elementorCommon = _elementorCommon.config) === null || _elementorCommon === void 0 ? void 0 : _elementorCommon.library_connect; if (!lc) return; lc.is_connected = false; lc.current_access_level = 0; lc.current_access_tier = TIERS.free; lc.plan_type = TIERS.free; updateSettings({ is_library_connected: false, access_level: 0, access_tier: TIERS.free }); }; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var isConnectDialogOpen = _useState2[0]; var setIsConnectDialogOpen = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(null), 2); var downloadLinkData = _useState4[0]; var setDownloadLinkData = _useState4[1]; var _useState6 = _slicedToArray((0, react.useState)(false), 2); var error = _useState6[0]; var setError = _useState6[1]; var handleKitError = function handleKitError(_ref2) { var code = _ref2.code; if (401 === code) { resetConnect(); setIsConnectDialogOpen(true); return; } setError({ code, message: (0, _wordpress_i18n.__)("Something went wrong.", "elementor") }); }; var kitData = { kitName: props.model.title, pageId: props.pageId }; var _useDownloadLinkMutat = useDownloadLinkMutation(props.model, { onSuccess: function onSuccess(_ref3) { var data = _ref3.data; return setDownloadLinkData(data); }, onError: handleKitError }); var apply = _useDownloadLinkMutat.mutate; var isApplyLoading = _useDownloadLinkMutat.isLoading; var _useDownloadLinkMutat2 = useDownloadLinkMutation(props.model, { onSuccess: function onSuccess(response) { try { var _response$data; var linkUrl = response === null || response === void 0 || (_response$data = response.data) === null || _response$data === void 0 || (_response$data = _response$data.data) === null || _response$data === void 0 ? void 0 : _response$data.download_link; if (linkUrl) window.open(linkUrl, "_blank"); } catch (e) { setError({ message: (0, _wordpress_i18n.__)("Something went wrong.", "elementor") }); } }, onError: handleKitError }); var fetchDownloadLink = _useDownloadLinkMutat2.mutate; var isDownloadLoading = _useDownloadLinkMutat2.isLoading; var subscriptionPlan = useKitCallToAction(props.model.accessTier).subscriptionPlan; var applyButton = useKitCallToActionButton(props.model, { onConnect: function onConnect() { return setIsConnectDialogOpen(true); }, apply, isApplyLoading, onClick: function onClick() { tracking.trackKitdemoApplyClicked(props.model.id, props.model.title, props.model.accessTier); }, onUpgrade: function onUpgrade() { tracking.trackKitdemoUpgradeClicked(props.model.id, props.model.title, subscriptionPlan.label); } }); var downloadButton = (0, react.useMemo)(function() { return { id: "download", text: (0, _wordpress_i18n.__)("Download Website", "elementor"), hideText: true, icon: "eicon-file-download", tooltip: (0, _wordpress_i18n.__)("Download Website ZIP", "elementor"), color: isDownloadLoading ? "disabled" : "secondary", includeHeaderBtnClass: false, onClick: function onClick(e) { if (isDownloadLoading) return; tracking.trackKitdemoDownloadClicked(props.model.id, props.model.title, function() { return fetchDownloadLink(e); }); } }; }, [ isDownloadLoading, fetchDownloadLink, tracking, props.model.id, props.model.title ]); var buttons = (0, react.useMemo)(function() { return [downloadButton, applyButton].concat(_toConsumableArray(props.buttons)); }, [ props.buttons, applyButton, downloadButton ]); return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, error && /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Dialog, { title: error.message, text: (0, _wordpress_i18n.__)("Go to the pages screen to make sure your kit pages have been imported successfully. If not, try again.", "elementor"), approveButtonText: (0, _wordpress_i18n.__)("Go to pages", "elementor"), approveButtonColor: "primary", approveButtonUrl: elementorAppConfig.admin_url + "edit.php?post_type=page", approveButtonOnClick: function approveButtonOnClick() { return setError(false); }, dismissButtonText: (0, _wordpress_i18n.__)("Got it", "elementor"), dismissButtonOnClick: function dismissButtonOnClick() { return setError(false); }, onClose: function onClose() { return setError(false); } }), downloadLinkData && /*#__PURE__*/ react.default.createElement(KitDialog, { id: props.model.id, downloadLinkData, onClose: function onClose() { return setDownloadLinkData(null); } }), isConnectDialogOpen && /*#__PURE__*/ react.default.createElement(ConnectDialog, { pageId: props.pageId, onClose: function onClose() { return setIsConnectDialogOpen(false); }, onSuccess: function onSuccess(data) { var accessLevel = data.kits_access_level || data.access_level || 0; var accessTier = data.access_tier; elementorCommon.config.library_connect.is_connected = true; elementorCommon.config.library_connect.current_access_level = accessLevel; elementorCommon.config.library_connect.current_access_tier = accessTier; elementorCommon.config.library_connect.plan_type = data.plan_type; updateSettings({ is_library_connected: true, access_level: accessLevel, access_tier: accessTier }); if (data.access_level < props.model.accessLevel) return; if (!isTierAtLeast(accessTier, props.model.accessTier)) return; apply(); }, onError: function onError(message) { return setError({ message }); } }), /*#__PURE__*/ react.default.createElement(Header$1, _extends$1({ startColumn: /*#__PURE__*/ react.default.createElement(HeaderBackButton, _extends$1({}, kitData, { kitId: props.model.id })), centerColumn: props.centerColumn, buttons }, kitData))); } var import_prop_types$26; var init_item_header = __esmMin((() => { import_prop_types$26 = /* @__PURE__ */ __toESM(require_prop_types()); init_extends(); init_toConsumableArray(); init_slicedToArray(); init_kit_dialog(); init_connect_dialog(); init_header$1(); init_header_back_button(); init_kit(); init_use_download_link_mutation(); init_use_kit_call_to_action(); init_use_add_kit_promotion_utm(); init_settings_context(); init_tiers(); init_tracking_context(); init_item_header$1(); ItemHeader.propTypes = { model: import_prop_types$26.default.instanceOf(Kit).isRequired, centerColumn: import_prop_types$26.default.node, buttons: import_prop_types$26.default.arrayOf(import_prop_types$26.default.object), pageId: import_prop_types$26.default.string }; })); //#endregion //#region app/modules/kit-library/assets/js/models/content-type.js function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var ContentType; var init_content_type = __esmMin((() => { init_classCallCheck(); init_createClass(); init_possibleConstructorReturn(); init_getPrototypeOf(); init_inherits(); init_defineProperty$1(); init_base_model(); ContentType = /*#__PURE__*/ function(_BaseModel) { function ContentType() { var _this; _classCallCheck(this, ContentType); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; _this = _callSuper(this, ContentType, [].concat(args)); _defineProperty$1(_this, "id", ""); _defineProperty$1(_this, "label", ""); _defineProperty$1(_this, "documentTypes", []); _defineProperty$1(_this, "documents", []); _defineProperty$1(_this, "order", 0); return _this; } _inherits$1(ContentType, _BaseModel); return _createClass(ContentType, null, [{ key: "createFromResponse", value: function createFromResponse(documentType) { return new ContentType().init({ id: documentType.id, label: documentType.label, documentTypes: documentType.doc_types, order: documentType.order, documents: [] }); } }]); }(BaseModel); })); //#endregion //#region app/modules/kit-library/assets/js/pages/overview/overview-content-group-item.js function OverviewContentGroupItem(props) { return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Card, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardHeader, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", title: props.document.title, variant: "h5", className: "eps-card__headline" }, props.document.title)), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardBody, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardImage, { alt: props.document.title, src: props.document.thumbnailUrl || "" }, props.document.previewUrl && /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardOverlay, null, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { className: "e-kit-library__kit-item-overlay-overview-button", text: (0, _wordpress_i18n.__)("View Demo", "elementor"), icon: "eicon-preview-medium", url: "/kit-library/preview/".concat(props.kitId, "?document_id=").concat(props.document.id) }))))); } var import_prop_types$25; var init_overview_content_group_item = __esmMin((() => { import_prop_types$25 = /* @__PURE__ */ __toESM(require_prop_types()); init_document(); OverviewContentGroupItem.propTypes = { document: import_prop_types$25.default.instanceOf(Document).isRequired, kitId: import_prop_types$25.default.string.isRequired, kitTitle: import_prop_types$25.default.string.isRequired, groupData: import_prop_types$25.default.shape({ label: import_prop_types$25.default.string, id: import_prop_types$25.default.string }).isRequired }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/overview/overview-content-group.js function OverviewContentGroup(props) { var _props$contentType; if (((_props$contentType = props.contentType) === null || _props$contentType === void 0 || (_props$contentType = _props$contentType.documents) === null || _props$contentType === void 0 ? void 0 : _props$contentType.length) <= 0) return ""; return /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__content-overview-group-item" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h3", variant: "h3", className: "e-kit-library__content-overview-group-title" }, props.contentType.label), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CssGrid, { spacing: 24, colMinWidth: 250 }, props.contentType.documents.map(function(document) { return /*#__PURE__*/ react.default.createElement(OverviewContentGroupItem, { key: document.id, document, kitId: props.kitId, kitTitle: props.kitTitle, groupData: props.contentType }); }))); } var import_prop_types$24; var init_overview_content_group = __esmMin((() => { import_prop_types$24 = /* @__PURE__ */ __toESM(require_prop_types()); init_content_type(); init_overview_content_group_item(); OverviewContentGroup.propTypes = { contentType: import_prop_types$24.default.instanceOf(ContentType), kitId: import_prop_types$24.default.string.isRequired, kitTitle: import_prop_types$24.default.string.isRequired }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/pages/overview/overview-sidebar.scss var init_overview_sidebar$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/pages/overview/overview-sidebar.js function OverviewSidebar(props) { var _props$groupedKitCont; var _useState2 = _slicedToArray((0, react.useState)(true), 2); var isInformationCollapseOpen = _useState2[0]; var setIsInformationCollapseOpen = _useState2[1]; return /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__item-sidebar" }, /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library__item-sidebar-header" }, /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Heading, { tag: "h1", variant: "h5", className: "e-kit-library__item-sidebar-header-title" }, props.model.title), /*#__PURE__*/ react.default.createElement(FavoritesActions, { isFavorite: props.model.isFavorite, id: props.model.id })), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.CardImage, { className: "e-kit-library__item-sidebar-thumbnail", alt: props.model.title, src: props.model.thumbnailUrl || "" }), /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { className: "e-kit-library__item-sidebar-description" }, props.model.description || ""), ((_props$groupedKitCont = props.groupedKitContent) === null || _props$groupedKitCont === void 0 ? void 0 : _props$groupedKitCont.length) > 0 && props.model.documents.length > 0 && /*#__PURE__*/ react.default.createElement(Collapse, { isOpen: isInformationCollapseOpen, onChange: setIsInformationCollapseOpen, title: (0, _wordpress_i18n.__)("WHAT'S INSIDE", "elementor"), className: "e-kit-library__item-sidebar-collapse-info" }, props.groupedKitContent.map(function(contentType) { if (contentType.documents <= 0) return ""; return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Text, { className: "e-kit-library__item-information-text", key: contentType.id }, contentType.documents.length, " ", contentType.label); }))); } var import_prop_types$23; var init_overview_sidebar = __esmMin((() => { import_prop_types$23 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); init_collapse(); init_content_type(); init_favorites_actions(); init_kit(); init_overview_sidebar$1(); OverviewSidebar.propTypes = { model: import_prop_types$23.default.instanceOf(Kit).isRequired, index: import_prop_types$23.default.number, groupedKitContent: import_prop_types$23.default.arrayOf(import_prop_types$23.default.instanceOf(ContentType)) }; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-content-types.js /** * The data should come from the server, this is a temp solution that helps to demonstrate that data comes from the server * but for now this is a local data. * * @return {import('react-query').UseQueryResult} result */ function useContentTypes() { var settings = useSettingsContext().settings; return useQuery([KEY, settings], function() { return fetchContentTypes(settings); }); } /** * @param {Object} settings - Current settings * * @return {Promise.constructor} content types */ function fetchContentTypes(settings) { var contentTypes = [{ id: "page", label: (0, _wordpress_i18n.__)("Pages", "elementor"), doc_types: ["wp-page"], order: 0 }, { id: "site-parts", label: (0, _wordpress_i18n.__)("Site Parts", "elementor"), doc_types: [ "archive", "error-404", "footer", "header", "search-results", "single-page", "single-post", "product", "product-archive", "404", "single" ], order: 1 }]; var userAccessTier = settings.access_tier; if (settings.is_pro && settings.is_library_connected && userAccessTier === TIERS.free) userAccessTier = TIERS["essential-oct2023"]; var tierThatSupportsPopups = TIERS["essential-oct2023"]; if (isTierAtLeast(userAccessTier, tierThatSupportsPopups)) contentTypes.push({ id: "popup", label: (0, _wordpress_i18n.__)("Popups", "elementor"), doc_types: ["popup"], order: 2 }); return Promise.resolve(contentTypes).then(function(data) { return data.map(function(contentType) { return ContentType.createFromResponse(contentType); }); }); } var KEY; var init_use_content_types = __esmMin((() => { init_content_type(); init_es(); init_settings_context(); init_tiers(); KEY = "content-types"; })); //#endregion //#region app/modules/kit-library/assets/js/hooks/use-kit-document-by-type.js function ownKeys$8(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; } function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function useKitDocumentByType(kit) { var contentTypesQuery = useContentTypes(); var data = (0, react.useMemo)(function() { if (!kit || !contentTypesQuery.data) return []; return kit.getDocumentsByTypes(contentTypesQuery.data).sort(function(a, b) { return a.order - b.order; }); }, [kit, contentTypesQuery.data]); return _objectSpread$7(_objectSpread$7({}, contentTypesQuery), {}, { data }); } var init_use_kit_document_by_type = __esmMin((() => { init_defineProperty$1(); init_use_content_types(); __name(ownKeys$8, "ownKeys"); __name(_objectSpread$7, "_objectSpread"); })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/pages/overview/overview.scss var init_overview$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/pages/overview/overview.js function useHeaderButtons$1(id, kitName) { var navigate = useNavigate(); return (0, react.useMemo)(function() { return [{ id: "view-demo", text: (0, _wordpress_i18n.__)("View Demo", "elementor"), hideText: false, variant: "outlined", color: "secondary", size: "sm", onClick: function onClick() { navigate("/kit-library/preview/".concat(id)); }, includeHeaderBtnClass: false }]; }, [ id, kitName, navigate ]); } function Overview(props) { var _useKit = useKit(props.id); var kit = _useKit.data; var isError = _useKit.isError; var isLoading = _useKit.isLoading; var documentsByType = useKitDocumentByType(kit).data; var headerButtons = useHeaderButtons$1(props.id, kit && kit.title); usePageTitle({ title: kit ? "".concat((0, _wordpress_i18n.__)("Kit Library", "elementor"), " | ").concat(kit.title) : (0, _wordpress_i18n.__)("Loading...", "elementor") }); if (isError) throw new Error(); if (isLoading) return /*#__PURE__*/ react.default.createElement(ElementorLoading, null); return /*#__PURE__*/ react.default.createElement(Index$1, { header: /*#__PURE__*/ react.default.createElement(ItemHeader, { model: kit, buttons: headerButtons, pageId: "overview" }), sidebar: /*#__PURE__*/ react.default.createElement(OverviewSidebar, { model: kit, groupedKitContent: documentsByType }) }, documentsByType.length > 0 && /*#__PURE__*/ react.default.createElement(Content, null, documentsByType.map(function(contentType) { return /*#__PURE__*/ react.default.createElement(OverviewContentGroup, { key: contentType.id, contentType, kitId: props.id, kitTitle: kit.title }); }))); } var import_prop_types$22; var init_overview = __esmMin((() => { import_prop_types$22 = /* @__PURE__ */ __toESM(require_prop_types()); init_content(); init_elementor_loading(); init_item_header(); init_layout$1(); init_overview_content_group(); init_overview_sidebar(); init_use_kit(); init_use_kit_document_by_type(); init_use_page_title(); init_es$1(); init_overview$1(); __name(useHeaderButtons$1, "useHeaderButtons"); Overview.propTypes = { id: import_prop_types$22.default.string }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/pages/preview/preview-responsive-controls.scss var init_preview_responsive_controls$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/pages/preview/preview-responsive-controls.js function PreviewResponsiveControls(props) { return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, alignItems: "center", justify: "center", className: "e-kit-library__preview-responsive-controls" }, breakpoints.map(function(_ref) { var label = _ref.label; var value = _ref.value; var className = "e-kit-library__preview-responsive-controls-item"; if (props.active === value) className += " e-kit-library__preview-responsive-controls-item--active"; return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Button, { key: value, text: label, hideText: true, className, icon: "eicon-device-".concat(value), onClick: function onClick() { return props.onChange(value); } }); })); } var import_prop_types$21; var init_preview_responsive_controls = __esmMin((() => { import_prop_types$21 = /* @__PURE__ */ __toESM(require_prop_types()); init_preview(); init_preview_responsive_controls$1(); PreviewResponsiveControls.propTypes = { active: import_prop_types$21.default.string, onChange: import_prop_types$21.default.func.isRequired }; PreviewResponsiveControls.defaultProps = { active: "desktop" }; })); //#endregion //#region app/modules/kit-library/assets/js/pages/preview/preview-iframe.js function PreviewIframe(props) { var ref = (0, react.useRef)(); (0, react.useEffect)(function() { if (!ref.current) return; var listener = function listener() { return props.onLoaded(); }; ref.current.addEventListener("load", listener); return function() { return ref.current && ref.current.removeEventListener("load", listener); }; }, [ref.current, props.previewUrl]); return /*#__PURE__*/ react.default.createElement(_elementor_app_ui.Grid, { container: true, justify: "center", className: "e-kit-library__preview-iframe-container" }, /*#__PURE__*/ react.default.createElement("iframe", { className: "e-kit-library__preview-iframe", src: props.previewUrl, style: props.style, ref })); } var import_prop_types$20; var init_preview_iframe = __esmMin((() => { import_prop_types$20 = /* @__PURE__ */ __toESM(require_prop_types()); PreviewIframe.propTypes = { previewUrl: import_prop_types$20.default.string.isRequired, style: import_prop_types$20.default.object, onLoaded: import_prop_types$20.default.func }; PreviewIframe.defaultProps = { style: { width: "100%", height: "100%" }, onLoaded: function onLoaded() {} }; })); //#endregion //#region \0app-scss:/home/runner/work/elementor/elementor/app/modules/kit-library/assets/js/pages/preview/preview.scss var init_preview$1 = __esmMin((() => {})); //#endregion //#region app/modules/kit-library/assets/js/pages/preview/preview.js function useHeaderButtons(id, kitName) { var navigate = useNavigate(); var tracking = useTracking(); return (0, react.useMemo)(function() { return [{ id: "overview", text: (0, _wordpress_i18n.__)("Overview", "elementor"), hideText: false, variant: "outlined", color: "secondary", size: "sm", onClick: function onClick() { tracking.trackKitdemoOverviewClicked(id, kitName, function() { return navigate("/kit-library/overview/".concat(id)); }); }, includeHeaderBtnClass: false }]; }, [ id, kitName, tracking, navigate ]); } /** * Get preview url. * * @param {*} data * @return {null|string} Preview URL */ function usePreviewUrl(data) { var location = useLocation(); return (0, react.useMemo)(function() { var _location$pathname$sp; var _data$documents$find; if (!data) return null; var documentId = new URLSearchParams((_location$pathname$sp = location.pathname.split("?")) === null || _location$pathname$sp === void 0 ? void 0 : _location$pathname$sp[1]).get("document_id"); var utm = "?utm_source=kit-library&utm_medium=wp-dash&utm_campaign=preview"; var previewUrl = data.previewUrl ? data.previewUrl + utm : data.previewUrl; if (!documentId) return previewUrl; var documentPreviewUrl = ((_data$documents$find = data.documents.find(function(item) { return item.id === parseInt(documentId); })) === null || _data$documents$find === void 0 ? void 0 : _data$documents$find.previewUrl) || previewUrl; return documentPreviewUrl ? documentPreviewUrl + utm : documentPreviewUrl; }, [location, data]); } function Preview(props) { var _useKit = useKit(props.id); var data = _useKit.data; var isError = _useKit.isError; var isLoading = _useKit.isLoading; var _useState2 = _slicedToArray((0, react.useState)(true), 2); var isIframeLoading = _useState2[0]; var setIsIframeLoading = _useState2[1]; var headersButtons = useHeaderButtons(props.id, data && data.title); var previewUrl = usePreviewUrl(data); var _useState4 = _slicedToArray((0, react.useState)("desktop"), 2); var activeDevice = _useState4[0]; var setActiveDevice = _useState4[1]; var tracking = useTracking(); var loadStartTime = (0, react.useRef)(Date.now()); var hasTrackedOpen = (0, react.useRef)(false); var iframeStyle = (0, react.useMemo)(function() { return breakpoints.find(function(_ref) { return _ref.value === activeDevice; }).style; }, [activeDevice]); (0, react.useEffect)(function() { if (!isIframeLoading && data && !hasTrackedOpen.current) { var loadTime = Date.now() - loadStartTime.current; tracking.trackKitdemoOpened(props.id, data.title, loadTime); hasTrackedOpen.current = true; } }, [ isIframeLoading, data, props.id, tracking ]); var _onChange = function onChange(device) { setActiveDevice(device); }; usePageTitle({ title: data ? "".concat((0, _wordpress_i18n.__)("Kit Library", "elementor"), " | ").concat(data.title) : (0, _wordpress_i18n.__)("Loading...", "elementor") }); if (isError) throw new Error(); if (isLoading) return /*#__PURE__*/ react.default.createElement(ElementorLoading, null); return /*#__PURE__*/ react.default.createElement(Index$1, { header: /*#__PURE__*/ react.default.createElement(ItemHeader, { model: data, buttons: headersButtons, centerColumn: /*#__PURE__*/ react.default.createElement(PreviewResponsiveControls, { active: activeDevice, onChange: function onChange(device) { return _onChange(device); }, kitName: data.title }), pageId: "demo" }) }, isIframeLoading && /*#__PURE__*/ react.default.createElement(PageLoader, { className: "e-kit-library__preview-loader" }), previewUrl && /*#__PURE__*/ react.default.createElement(PreviewIframe, { previewUrl, style: iframeStyle, onLoaded: function onLoaded() { return setIsIframeLoading(false); } })); } var import_prop_types$19, breakpoints; var init_preview = __esmMin((() => { import_prop_types$19 = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); init_elementor_loading(); init_item_header(); init_layout$1(); init_page_loader(); init_preview_responsive_controls(); init_use_kit(); init_use_page_title(); init_preview_iframe(); init_es$1(); init_tracking_context(); init_preview$1(); breakpoints = [ { value: "desktop", label: (0, _wordpress_i18n.__)("Desktop", "elementor"), style: { width: "100%", height: "100%" } }, { value: "tablet", label: (0, _wordpress_i18n.__)("Tablet", "elementor"), style: { marginBlockStart: "30px", marginBlockEnd: "30px", width: "768px", height: "1024px" } }, { value: "mobile", label: (0, _wordpress_i18n.__)("Mobile", "elementor"), style: { marginBlockStart: "30px", marginBlockEnd: "30px", width: "375px", height: "667px" } } ]; Preview.propTypes = { id: import_prop_types$19.default.string }; })); //#endregion //#region node_modules/match-sorter/node_modules/remove-accents/index.js var require_remove_accents = /* @__PURE__ */ __commonJSMin(((exports, module) => { var characterMap = { "À": "A", "Á": "A", "Â": "A", "Ã": "A", "Ä": "A", "Å": "A", "Ấ": "A", "Ắ": "A", "Ẳ": "A", "Ẵ": "A", "Ặ": "A", "Æ": "AE", "Ầ": "A", "Ằ": "A", "Ȃ": "A", "Ả": "A", "Ạ": "A", "Ẩ": "A", "Ẫ": "A", "Ậ": "A", "Ç": "C", "Ḉ": "C", "È": "E", "É": "E", "Ê": "E", "Ë": "E", "Ế": "E", "Ḗ": "E", "Ề": "E", "Ḕ": "E", "Ḝ": "E", "Ȇ": "E", "Ẻ": "E", "Ẽ": "E", "Ẹ": "E", "Ể": "E", "Ễ": "E", "Ệ": "E", "Ì": "I", "Í": "I", "Î": "I", "Ï": "I", "Ḯ": "I", "Ȋ": "I", "Ỉ": "I", "Ị": "I", "Ð": "D", "Ñ": "N", "Ò": "O", "Ó": "O", "Ô": "O", "Õ": "O", "Ö": "O", "Ø": "O", "Ố": "O", "Ṍ": "O", "Ṓ": "O", "Ȏ": "O", "Ỏ": "O", "Ọ": "O", "Ổ": "O", "Ỗ": "O", "Ộ": "O", "Ờ": "O", "Ở": "O", "Ỡ": "O", "Ớ": "O", "Ợ": "O", "Ù": "U", "Ú": "U", "Û": "U", "Ü": "U", "Ủ": "U", "Ụ": "U", "Ử": "U", "Ữ": "U", "Ự": "U", "Ý": "Y", "à": "a", "á": "a", "â": "a", "ã": "a", "ä": "a", "å": "a", "ấ": "a", "ắ": "a", "ẳ": "a", "ẵ": "a", "ặ": "a", "æ": "ae", "ầ": "a", "ằ": "a", "ȃ": "a", "ả": "a", "ạ": "a", "ẩ": "a", "ẫ": "a", "ậ": "a", "ç": "c", "ḉ": "c", "è": "e", "é": "e", "ê": "e", "ë": "e", "ế": "e", "ḗ": "e", "ề": "e", "ḕ": "e", "ḝ": "e", "ȇ": "e", "ẻ": "e", "ẽ": "e", "ẹ": "e", "ể": "e", "ễ": "e", "ệ": "e", "ì": "i", "í": "i", "î": "i", "ï": "i", "ḯ": "i", "ȋ": "i", "ỉ": "i", "ị": "i", "ð": "d", "ñ": "n", "ò": "o", "ó": "o", "ô": "o", "õ": "o", "ö": "o", "ø": "o", "ố": "o", "ṍ": "o", "ṓ": "o", "ȏ": "o", "ỏ": "o", "ọ": "o", "ổ": "o", "ỗ": "o", "ộ": "o", "ờ": "o", "ở": "o", "ỡ": "o", "ớ": "o", "ợ": "o", "ù": "u", "ú": "u", "û": "u", "ü": "u", "ủ": "u", "ụ": "u", "ử": "u", "ữ": "u", "ự": "u", "ý": "y", "ÿ": "y", "Ā": "A", "ā": "a", "Ă": "A", "ă": "a", "Ą": "A", "ą": "a", "Ć": "C", "ć": "c", "Ĉ": "C", "ĉ": "c", "Ċ": "C", "ċ": "c", "Č": "C", "č": "c", "C̆": "C", "c̆": "c", "Ď": "D", "ď": "d", "Đ": "D", "đ": "d", "Ē": "E", "ē": "e", "Ĕ": "E", "ĕ": "e", "Ė": "E", "ė": "e", "Ę": "E", "ę": "e", "Ě": "E", "ě": "e", "Ĝ": "G", "Ǵ": "G", "ĝ": "g", "ǵ": "g", "Ğ": "G", "ğ": "g", "Ġ": "G", "ġ": "g", "Ģ": "G", "ģ": "g", "Ĥ": "H", "ĥ": "h", "Ħ": "H", "ħ": "h", "Ḫ": "H", "ḫ": "h", "Ĩ": "I", "ĩ": "i", "Ī": "I", "ī": "i", "Ĭ": "I", "ĭ": "i", "Į": "I", "į": "i", "İ": "I", "ı": "i", "IJ": "IJ", "ij": "ij", "Ĵ": "J", "ĵ": "j", "Ķ": "K", "ķ": "k", "Ḱ": "K", "ḱ": "k", "K̆": "K", "k̆": "k", "Ĺ": "L", "ĺ": "l", "Ļ": "L", "ļ": "l", "Ľ": "L", "ľ": "l", "Ŀ": "L", "ŀ": "l", "Ł": "l", "ł": "l", "Ḿ": "M", "ḿ": "m", "M̆": "M", "m̆": "m", "Ń": "N", "ń": "n", "Ņ": "N", "ņ": "n", "Ň": "N", "ň": "n", "ʼn": "n", "N̆": "N", "n̆": "n", "Ō": "O", "ō": "o", "Ŏ": "O", "ŏ": "o", "Ő": "O", "ő": "o", "Œ": "OE", "œ": "oe", "P̆": "P", "p̆": "p", "Ŕ": "R", "ŕ": "r", "Ŗ": "R", "ŗ": "r", "Ř": "R", "ř": "r", "R̆": "R", "r̆": "r", "Ȓ": "R", "ȓ": "r", "Ś": "S", "ś": "s", "Ŝ": "S", "ŝ": "s", "Ş": "S", "Ș": "S", "ș": "s", "ş": "s", "Š": "S", "š": "s", "Ţ": "T", "ţ": "t", "ț": "t", "Ț": "T", "Ť": "T", "ť": "t", "Ŧ": "T", "ŧ": "t", "T̆": "T", "t̆": "t", "Ũ": "U", "ũ": "u", "Ū": "U", "ū": "u", "Ŭ": "U", "ŭ": "u", "Ů": "U", "ů": "u", "Ű": "U", "ű": "u", "Ų": "U", "ų": "u", "Ȗ": "U", "ȗ": "u", "V̆": "V", "v̆": "v", "Ŵ": "W", "ŵ": "w", "Ẃ": "W", "ẃ": "w", "X̆": "X", "x̆": "x", "Ŷ": "Y", "ŷ": "y", "Ÿ": "Y", "Y̆": "Y", "y̆": "y", "Ź": "Z", "ź": "z", "Ż": "Z", "ż": "z", "Ž": "Z", "ž": "z", "ſ": "s", "ƒ": "f", "Ơ": "O", "ơ": "o", "Ư": "U", "ư": "u", "Ǎ": "A", "ǎ": "a", "Ǐ": "I", "ǐ": "i", "Ǒ": "O", "ǒ": "o", "Ǔ": "U", "ǔ": "u", "Ǖ": "U", "ǖ": "u", "Ǘ": "U", "ǘ": "u", "Ǚ": "U", "ǚ": "u", "Ǜ": "U", "ǜ": "u", "Ứ": "U", "ứ": "u", "Ṹ": "U", "ṹ": "u", "Ǻ": "A", "ǻ": "a", "Ǽ": "AE", "ǽ": "ae", "Ǿ": "O", "ǿ": "o", "Þ": "TH", "þ": "th", "Ṕ": "P", "ṕ": "p", "Ṥ": "S", "ṥ": "s", "X́": "X", "x́": "x", "Ѓ": "Г", "ѓ": "г", "Ќ": "К", "ќ": "к", "A̋": "A", "a̋": "a", "E̋": "E", "e̋": "e", "I̋": "I", "i̋": "i", "Ǹ": "N", "ǹ": "n", "Ồ": "O", "ồ": "o", "Ṑ": "O", "ṑ": "o", "Ừ": "U", "ừ": "u", "Ẁ": "W", "ẁ": "w", "Ỳ": "Y", "ỳ": "y", "Ȁ": "A", "ȁ": "a", "Ȅ": "E", "ȅ": "e", "Ȉ": "I", "ȉ": "i", "Ȍ": "O", "ȍ": "o", "Ȑ": "R", "ȑ": "r", "Ȕ": "U", "ȕ": "u", "B̌": "B", "b̌": "b", "Č̣": "C", "č̣": "c", "Ê̌": "E", "ê̌": "e", "F̌": "F", "f̌": "f", "Ǧ": "G", "ǧ": "g", "Ȟ": "H", "ȟ": "h", "J̌": "J", "ǰ": "j", "Ǩ": "K", "ǩ": "k", "M̌": "M", "m̌": "m", "P̌": "P", "p̌": "p", "Q̌": "Q", "q̌": "q", "Ř̩": "R", "ř̩": "r", "Ṧ": "S", "ṧ": "s", "V̌": "V", "v̌": "v", "W̌": "W", "w̌": "w", "X̌": "X", "x̌": "x", "Y̌": "Y", "y̌": "y", "A̧": "A", "a̧": "a", "B̧": "B", "b̧": "b", "Ḑ": "D", "ḑ": "d", "Ȩ": "E", "ȩ": "e", "Ɛ̧": "E", "ɛ̧": "e", "Ḩ": "H", "ḩ": "h", "I̧": "I", "i̧": "i", "Ɨ̧": "I", "ɨ̧": "i", "M̧": "M", "m̧": "m", "O̧": "O", "o̧": "o", "Q̧": "Q", "q̧": "q", "U̧": "U", "u̧": "u", "X̧": "X", "x̧": "x", "Z̧": "Z", "z̧": "z", "й": "и", "Й": "И", "ё": "е", "Ё": "Е" }; var chars = Object.keys(characterMap).join("|"); var allAccents = new RegExp(chars, "g"); var firstAccent = new RegExp(chars, ""); function matcher(match) { return characterMap[match]; } var removeAccents = function(string) { return string.replace(allAccents, matcher); }; var hasAccents = function(string) { return !!string.match(firstAccent); }; module.exports = removeAccents; module.exports.has = hasAccents; module.exports.remove = removeAccents; })); //#endregion //#region \0@oxc-project+runtime@0.140.0/helpers/esm/typeof.js function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } var init_typeof = __esmMin((() => {})); //#endregion //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPrimitive.js function toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var init_toPrimitive = __esmMin((() => { init_typeof(); })); //#endregion //#region \0@oxc-project+runtime@0.140.0/helpers/esm/toPropertyKey.js function toPropertyKey(t) { var i = toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } var init_toPropertyKey = __esmMin((() => { init_typeof(); init_toPrimitive(); })); //#endregion //#region \0@oxc-project+runtime@0.140.0/helpers/esm/defineProperty.js function _defineProperty(e, r, t) { return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } var init_defineProperty = __esmMin((() => { init_toPropertyKey(); })); //#endregion //#region \0@oxc-project+runtime@0.140.0/helpers/esm/objectSpread2.js function ownKeys$7(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; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function(r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var init_objectSpread2 = __esmMin((() => { init_defineProperty(); __name(ownKeys$7, "ownKeys"); })); //#endregion //#region node_modules/match-sorter/dist/match-sorter.esm.js /** * @name match-sorter * @license MIT license. * @copyright (c) 2020 Kent C. Dodds * @author Kent C. Dodds (https://kentcdodds.com) */ /** * Takes an array of items and a value and returns a new array with the items that match the given value * @param {Array} items - the items to sort * @param {String} value - the value to use for ranking * @param {Object} options - Some options to configure the sorter * @return {Array} - the new sorted array */ function matchSorter(items, value, options) { if (options === void 0) options = {}; const { keys, threshold = rankings.MATCHES, baseSort = defaultBaseSortFn, sorter = (matchedItems) => matchedItems.sort((a, b) => sortRankedValues(a, b, baseSort)) } = options; return sorter(items.reduce(reduceItemsToRanked, [])).map((_ref) => { let { item } = _ref; return item; }); function reduceItemsToRanked(matches, item, index) { const rankingInfo = getHighestRanking(item, keys, value, options); const { rank, keyThreshold = threshold } = rankingInfo; if (rank >= keyThreshold) matches.push(_objectSpread2(_objectSpread2({}, rankingInfo), {}, { item, index })); return matches; } } /** * Gets the highest ranking for value for the given item based on its values for the given keys * @param {*} item - the item to rank * @param {Array} keys - the keys to get values from the item for the ranking * @param {String} value - the value to rank against * @param {Object} options - options to control the ranking * @return {{rank: Number, keyIndex: Number, keyThreshold: Number}} - the highest ranking */ function getHighestRanking(item, keys, value, options) { if (!keys) { const stringItem = item; return { rankedValue: stringItem, rank: getMatchRanking(stringItem, value, options), keyIndex: -1, keyThreshold: options.threshold }; } return getAllValuesToRank(item, keys).reduce((_ref2, _ref3, i) => { let { rank, rankedValue, keyIndex, keyThreshold } = _ref2; let { itemValue, attributes } = _ref3; let newRank = getMatchRanking(itemValue, value, options); let newRankedValue = rankedValue; const { minRanking, maxRanking, threshold } = attributes; if (newRank < minRanking && newRank >= rankings.MATCHES) newRank = minRanking; else if (newRank > maxRanking) newRank = maxRanking; if (newRank > rank) { rank = newRank; keyIndex = i; keyThreshold = threshold; newRankedValue = itemValue; } return { rankedValue: newRankedValue, rank, keyIndex, keyThreshold }; }, { rankedValue: item, rank: rankings.NO_MATCH, keyIndex: -1, keyThreshold: options.threshold }); } /** * Gives a rankings score based on how well the two strings match. * @param {String} testString - the string to test against * @param {String} stringToRank - the string to rank * @param {Object} options - options for the match (like keepDiacritics for comparison) * @returns {Number} the ranking for how well stringToRank matches testString */ function getMatchRanking(testString, stringToRank, options) { testString = prepareValueForComparison(testString, options); stringToRank = prepareValueForComparison(stringToRank, options); if (stringToRank.length > testString.length) return rankings.NO_MATCH; if (testString === stringToRank) return rankings.CASE_SENSITIVE_EQUAL; testString = testString.toLowerCase(); stringToRank = stringToRank.toLowerCase(); if (testString === stringToRank) return rankings.EQUAL; if (testString.startsWith(stringToRank)) return rankings.STARTS_WITH; if (testString.includes(` ${stringToRank}`)) return rankings.WORD_STARTS_WITH; if (testString.includes(stringToRank)) return rankings.CONTAINS; else if (stringToRank.length === 1) return rankings.NO_MATCH; if (getAcronym(testString).includes(stringToRank)) return rankings.ACRONYM; return getClosenessRanking(testString, stringToRank); } /** * Generates an acronym for a string. * * @param {String} string the string for which to produce the acronym * @returns {String} the acronym */ function getAcronym(string) { let acronym = ""; string.split(" ").forEach((wordInString) => { wordInString.split("-").forEach((splitByHyphenWord) => { acronym += splitByHyphenWord.substr(0, 1); }); }); return acronym; } /** * Returns a score based on how spread apart the * characters from the stringToRank are within the testString. * A number close to rankings.MATCHES represents a loose match. A number close * to rankings.MATCHES + 1 represents a tighter match. * @param {String} testString - the string to test against * @param {String} stringToRank - the string to rank * @returns {Number} the number between rankings.MATCHES and * rankings.MATCHES + 1 for how well stringToRank matches testString */ function getClosenessRanking(testString, stringToRank) { let matchingInOrderCharCount = 0; let charNumber = 0; function findMatchingCharacter(matchChar, string, index) { for (let j = index, J = string.length; j < J; j++) if (string[j] === matchChar) { matchingInOrderCharCount += 1; return j + 1; } return -1; } function getRanking(spread) { const spreadPercentage = 1 / spread; const inOrderPercentage = matchingInOrderCharCount / stringToRank.length; return rankings.MATCHES + inOrderPercentage * spreadPercentage; } const firstIndex = findMatchingCharacter(stringToRank[0], testString, 0); if (firstIndex < 0) return rankings.NO_MATCH; charNumber = firstIndex; for (let i = 1, I = stringToRank.length; i < I; i++) { const matchChar = stringToRank[i]; charNumber = findMatchingCharacter(matchChar, testString, charNumber); if (!(charNumber > -1)) return rankings.NO_MATCH; } return getRanking(charNumber - firstIndex); } /** * Sorts items that have a rank, index, and keyIndex * @param {Object} a - the first item to sort * @param {Object} b - the second item to sort * @return {Number} -1 if a should come first, 1 if b should come first, 0 if equal */ function sortRankedValues(a, b, baseSort) { const aFirst = -1; const bFirst = 1; const { rank: aRank, keyIndex: aKeyIndex } = a; const { rank: bRank, keyIndex: bKeyIndex } = b; if (aRank === bRank) if (aKeyIndex === bKeyIndex) return baseSort(a, b); else return aKeyIndex < bKeyIndex ? aFirst : bFirst; else return aRank > bRank ? aFirst : bFirst; } /** * Prepares value for comparison by stringifying it, removing diacritics (if specified) * @param {String} value - the value to clean * @param {Object} options - {keepDiacritics: whether to remove diacritics} * @return {String} the prepared value */ function prepareValueForComparison(value, _ref4) { let { keepDiacritics } = _ref4; value = `${value}`; if (!keepDiacritics) value = (0, import_remove_accents.default)(value); return value; } /** * Gets value for key in item at arbitrarily nested keypath * @param {Object} item - the item * @param {Object|Function} key - the potentially nested keypath or property callback * @return {Array} - an array containing the value(s) at the nested keypath */ function getItemValues(item, key) { if (typeof key === "object") key = key.key; let value; if (typeof key === "function") value = key(item); else if (item == null) value = null; else if (Object.hasOwnProperty.call(item, key)) value = item[key]; else if (key.includes(".")) return getNestedValues(key, item); else value = null; if (value == null) return []; if (Array.isArray(value)) return value; return [String(value)]; } /** * Given path: "foo.bar.baz" * And item: {foo: {bar: {baz: 'buzz'}}} * -> 'buzz' * @param path a dot-separated set of keys * @param item the item to get the value from */ function getNestedValues(path, item) { const keys = path.split("."); let values = [item]; for (let i = 0, I = keys.length; i < I; i++) { const nestedKey = keys[i]; let nestedValues = []; for (let j = 0, J = values.length; j < J; j++) { const nestedItem = values[j]; if (nestedItem == null) continue; if (Object.hasOwnProperty.call(nestedItem, nestedKey)) { const nestedValue = nestedItem[nestedKey]; if (nestedValue != null) nestedValues.push(nestedValue); } else if (nestedKey === "*") nestedValues = nestedValues.concat(nestedItem); } values = nestedValues; } if (Array.isArray(values[0])) return [].concat(...values); return values; } /** * Gets all the values for the given keys in the given item and returns an array of those values * @param item - the item from which the values will be retrieved * @param keys - the keys to use to retrieve the values * @return objects with {itemValue, attributes} */ function getAllValuesToRank(item, keys) { const allValues = []; for (let j = 0, J = keys.length; j < J; j++) { const key = keys[j]; const attributes = getKeyAttributes(key); const itemValues = getItemValues(item, key); for (let i = 0, I = itemValues.length; i < I; i++) allValues.push({ itemValue: itemValues[i], attributes }); } return allValues; } /** * Gets all the attributes for the given key * @param key - the key from which the attributes will be retrieved * @return object containing the key's attributes */ function getKeyAttributes(key) { if (typeof key === "string") return defaultKeyAttributes; return _objectSpread2(_objectSpread2({}, defaultKeyAttributes), key); } var import_remove_accents, rankings, defaultBaseSortFn, defaultKeyAttributes; var init_match_sorter_esm = __esmMin((() => { import_remove_accents = /* @__PURE__ */ __toESM(require_remove_accents()); init_objectSpread2(); rankings = { CASE_SENSITIVE_EQUAL: 7, EQUAL: 6, STARTS_WITH: 5, WORD_STARTS_WITH: 4, CONTAINS: 3, ACRONYM: 2, MATCHES: 1, NO_MATCH: 0 }; defaultBaseSortFn = (a, b) => String(a.rankedValue).localeCompare(String(b.rankedValue)); matchSorter.rankings = rankings; defaultKeyAttributes = { maxRanking: Infinity, minRanking: -Infinity }; })); //#endregion //#region node_modules/react-query/es/devtools/useLocalStorage.js function useLocalStorage(key, defaultValue) { var _React$useState = react.default.useState(); var value = _React$useState[0]; var setValue = _React$useState[1]; react.default.useEffect(function() { var initialValue = getItem(key); if (typeof initialValue === "undefined" || initialValue === null) setValue(typeof defaultValue === "function" ? defaultValue() : defaultValue); else setValue(initialValue); }, [defaultValue, key]); return [value, react.default.useCallback(function(updater) { setValue(function(old) { var newVal = updater; if (typeof updater == "function") newVal = updater(old); try { localStorage.setItem(key, JSON.stringify(newVal)); } catch (_unused2) {} return newVal; }); }, [key])]; } var getItem; var init_useLocalStorage = __esmMin((() => { getItem = function getItem(key) { try { var itemValue = localStorage.getItem(key); if (typeof itemValue === "string") return JSON.parse(itemValue); return; } catch (_unused) { return; } }; })); //#endregion //#region node_modules/react-query/es/devtools/theme.js function ThemeProvider(_ref) { var theme = _ref.theme; var rest = _objectWithoutPropertiesLoose(_ref, ["theme"]); return /*#__PURE__*/ react.default.createElement(ThemeContext.Provider, _extends$1({ value: theme }, rest)); } function useTheme() { return react.default.useContext(ThemeContext); } var defaultTheme, ThemeContext; var init_theme = __esmMin((() => { init_extends(); init_objectWithoutPropertiesLoose(); defaultTheme = { background: "#0b1521", backgroundAlt: "#132337", foreground: "white", gray: "#3f4e60", grayAlt: "#222e3e", inputBackgroundColor: "#fff", inputTextColor: "#000", success: "#00ab52", danger: "#ff0085", active: "#006bff", warning: "#ffb200" }; ThemeContext = /*#__PURE__*/ react.default.createContext(defaultTheme); })); //#endregion //#region node_modules/react-query/es/devtools/useMediaQuery.js function useMediaQuery(query) { var _React$useState = react.default.useState(function() { if (typeof window !== "undefined") return window.matchMedia && window.matchMedia(query).matches; }); var isMatch = _React$useState[0]; var setIsMatch = _React$useState[1]; react.default.useEffect(function() { if (typeof window !== "undefined") { if (!window.matchMedia) return; var matcher = window.matchMedia(query); var onChange = function onChange(_ref) { var matches = _ref.matches; return setIsMatch(matches); }; matcher.addListener(onChange); return function() { matcher.removeListener(onChange); }; } }, [ isMatch, query, setIsMatch ]); return isMatch; } var init_useMediaQuery = __esmMin((() => {})); //#endregion //#region node_modules/react-query/es/devtools/utils.js function getQueryStatusColor(query, theme) { return query.state.isFetching ? theme.active : !query.getObserversCount() ? theme.gray : query.isStale() ? theme.warning : theme.success; } function getQueryStatusLabel(query) { return query.state.isFetching ? "fetching" : !query.getObserversCount() ? "inactive" : query.isStale() ? "stale" : "fresh"; } function styled(type, newStyles, queries) { if (queries === void 0) queries = {}; return /*#__PURE__*/ react.default.forwardRef(function(_ref, ref) { var style = _ref.style; var rest = _objectWithoutPropertiesLoose(_ref, ["style"]); var theme = useTheme(); var mediaStyles = Object.entries(queries).reduce(function(current, _ref2) { var key = _ref2[0]; var value = _ref2[1]; return useMediaQuery(key) ? _extends$1({}, current, typeof value === "function" ? value(rest, theme) : value) : current; }, {}); return /*#__PURE__*/ react.default.createElement(type, _extends$1({}, rest, { style: _extends$1({}, typeof newStyles === "function" ? newStyles(rest, theme) : newStyles, style, mediaStyles), ref })); }); } function useIsMounted() { var mountedRef = react.default.useRef(false); var isMounted = react.default.useCallback(function() { return mountedRef.current; }, []); react.default[isServer$1 ? "useEffect" : "useLayoutEffect"](function() { mountedRef.current = true; return function() { mountedRef.current = false; }; }, []); return isMounted; } /** * This hook is a safe useState version which schedules state updates in microtasks * to prevent updating a component state while React is rendering different components * or when the component is not mounted anymore. */ function useSafeState(initialState) { var isMounted = useIsMounted(); var _React$useState = react.default.useState(initialState); var state = _React$useState[0]; var setState = _React$useState[1]; return [state, react.default.useCallback(function(value) { scheduleMicrotask(function() { if (isMounted()) setState(value); }); }, [isMounted])]; } /** * Schedules a microtask. * This can be useful to schedule state updates after rendering. */ function scheduleMicrotask(callback) { Promise.resolve().then(callback).catch(function(error) { return setTimeout(function() { throw error; }); }); } var isServer$1, displayValue; var init_utils$1 = __esmMin((() => { init_extends(); init_objectWithoutPropertiesLoose(); init_theme(); init_useMediaQuery(); isServer$1 = typeof window === "undefined"; displayValue = function displayValue(value) { var name = Object.getOwnPropertyNames(Object(value)); var newValue = typeof value === "bigint" ? value.toString() + "n" : value; return JSON.stringify(newValue, name); }; })); //#endregion //#region node_modules/react-query/es/devtools/styledComponents.js var Panel, ActiveQueryPanel, Button$1, QueryKeys, QueryKey, Code, Input, Select; var init_styledComponents = __esmMin((() => { init_utils$1(); Panel = styled("div", function(_props, theme) { return { fontSize: "clamp(12px, 1.5vw, 14px)", fontFamily: "sans-serif", display: "flex", backgroundColor: theme.background, color: theme.foreground }; }, { "(max-width: 700px)": { flexDirection: "column" }, "(max-width: 600px)": { fontSize: ".9em" } }); ActiveQueryPanel = styled("div", function() { return { flex: "1 1 500px", display: "flex", flexDirection: "column", overflow: "auto", height: "100%" }; }, { "(max-width: 700px)": function maxWidth700px(_props, theme) { return { borderTop: "2px solid " + theme.gray }; } }); Button$1 = styled("button", function(props, theme) { return { appearance: "none", fontSize: ".9em", fontWeight: "bold", background: theme.gray, border: "0", borderRadius: ".3em", color: "white", padding: ".5em", opacity: props.disabled ? ".5" : void 0, cursor: "pointer" }; }); QueryKeys = styled("span", { display: "inline-block", fontSize: "0.9em" }); QueryKey = styled("span", { display: "inline-flex", alignItems: "center", padding: ".2em .4em", fontWeight: "bold", textShadow: "0 0 10px black", borderRadius: ".2em" }); Code = styled("code", { fontSize: ".9em", color: "inherit", background: "inherit" }); Input = styled("input", function(_props, theme) { return { backgroundColor: theme.inputBackgroundColor, border: 0, borderRadius: ".2em", color: theme.inputTextColor, fontSize: ".9em", lineHeight: "1.3", padding: ".3em .4em" }; }); Select = styled("select", function(_props, theme) { return { display: "inline-block", fontSize: ".9em", fontFamily: "sans-serif", fontWeight: "normal", lineHeight: "1.3", padding: ".3em 1.5em .3em .5em", height: "auto", border: 0, borderRadius: ".2em", appearance: "none", WebkitAppearance: "none", backgroundColor: theme.inputBackgroundColor, backgroundImage: "url(\"data:image/svg+xml;utf8,\")", backgroundRepeat: "no-repeat", backgroundPosition: "right .55em center", backgroundSize: ".65em auto, 100%", color: theme.inputTextColor }; }, { "(max-width: 500px)": { display: "none" } }); })); //#endregion //#region node_modules/react-query/es/devtools/Explorer.js /** * Chunk elements in the array by size * * when the array cannot be chunked evenly by size, the last chunk will be * filled with the remaining elements * * @example * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']] */ function chunkArray(array, size) { if (size < 1) return []; var i = 0; var result = []; while (i < array.length) { result.push(array.slice(i, i + size)); i = i + size; } return result; } function isIterable(x) { return Symbol.iterator in x; } function Explorer(_ref3) { var value = _ref3.value; var defaultExpanded = _ref3.defaultExpanded; var _ref3$renderer = _ref3.renderer; var renderer = _ref3$renderer === void 0 ? DefaultRenderer : _ref3$renderer; var _ref3$pageSize = _ref3.pageSize; var pageSize = _ref3$pageSize === void 0 ? 100 : _ref3$pageSize; var rest = _objectWithoutPropertiesLoose(_ref3, [ "value", "defaultExpanded", "renderer", "pageSize" ]); var _React$useState2 = react.default.useState(Boolean(defaultExpanded)); var expanded = _React$useState2[0]; var setExpanded = _React$useState2[1]; var toggleExpanded = react.default.useCallback(function() { return setExpanded(function(old) { return !old; }); }, []); var type = typeof value; var subEntries = []; var makeProperty = function makeProperty(sub) { var _ref4; return _extends$1({}, sub, { defaultExpanded: defaultExpanded === true ? (_ref4 = {}, _ref4[sub.label] = true, _ref4) : defaultExpanded == null ? void 0 : defaultExpanded[sub.label] }); }; if (Array.isArray(value)) { type = "array"; subEntries = value.map(function(d, i) { return makeProperty({ label: i.toString(), value: d }); }); } else if (value !== null && typeof value === "object" && isIterable(value) && typeof value[Symbol.iterator] === "function") { type = "Iterable"; subEntries = Array.from(value, function(val, i) { return makeProperty({ label: i.toString(), value: val }); }); } else if (typeof value === "object" && value !== null) { type = "object"; subEntries = Object.entries(value).map(function(_ref5) { var key = _ref5[0]; var val = _ref5[1]; return makeProperty({ label: key, value: val }); }); } var subEntryPages = chunkArray(subEntries, pageSize); return renderer(_extends$1({ HandleEntry: function HandleEntry(_ref6) { var entry = _ref6.entry; return /*#__PURE__*/ react.default.createElement(Explorer, _extends$1({ value, renderer }, rest, entry)); }, type, subEntries, subEntryPages, value, expanded, toggleExpanded, pageSize }, rest)); } var Entry, Label, LabelButton, ExpandButton, Value, SubEntries, Info, Expander, DefaultRenderer; var init_Explorer = __esmMin((() => { init_objectWithoutPropertiesLoose(); init_extends(); init_utils$1(); Entry = styled("div", { fontFamily: "Menlo, monospace", fontSize: "1em", lineHeight: "1.7", outline: "none", wordBreak: "break-word" }); Label = styled("span", { color: "white" }); LabelButton = styled("button", { cursor: "pointer", color: "white" }); ExpandButton = styled("button", { cursor: "pointer", color: "inherit", font: "inherit", outline: "inherit", background: "transparent", border: "none", padding: 0 }); Value = styled("span", function(_props, theme) { return { color: theme.danger }; }); SubEntries = styled("div", { marginLeft: ".1em", paddingLeft: "1em", borderLeft: "2px solid rgba(0,0,0,.15)" }); Info = styled("span", { color: "grey", fontSize: ".7em" }); Expander = function Expander(_ref) { var expanded = _ref.expanded; var _ref$style = _ref.style; var style = _ref$style === void 0 ? {} : _ref$style; return /*#__PURE__*/ react.default.createElement("span", { style: _extends$1({ display: "inline-block", transition: "all .1s ease", transform: "rotate(" + (expanded ? 90 : 0) + "deg) " + (style.transform || "") }, style) }, "▶"); }; DefaultRenderer = function DefaultRenderer(_ref2) { var HandleEntry = _ref2.HandleEntry; var label = _ref2.label; var value = _ref2.value; var _ref2$subEntries = _ref2.subEntries; var subEntries = _ref2$subEntries === void 0 ? [] : _ref2$subEntries; var _ref2$subEntryPages = _ref2.subEntryPages; var subEntryPages = _ref2$subEntryPages === void 0 ? [] : _ref2$subEntryPages; var type = _ref2.type; var _ref2$expanded = _ref2.expanded; var expanded = _ref2$expanded === void 0 ? false : _ref2$expanded; var toggleExpanded = _ref2.toggleExpanded; var pageSize = _ref2.pageSize; var _React$useState = react.default.useState([]); var expandedPages = _React$useState[0]; var setExpandedPages = _React$useState[1]; return /*#__PURE__*/ react.default.createElement(Entry, { key: label }, (subEntryPages == null ? void 0 : subEntryPages.length) ? /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(ExpandButton, { onClick: function onClick() { return toggleExpanded(); } }, /*#__PURE__*/ react.default.createElement(Expander, { expanded }), " ", label, " ", /*#__PURE__*/ react.default.createElement(Info, null, String(type).toLowerCase() === "iterable" ? "(Iterable) " : "", subEntries.length, " ", subEntries.length > 1 ? "items" : "item")), expanded ? subEntryPages.length === 1 ? /*#__PURE__*/ react.default.createElement(SubEntries, null, subEntries.map(function(entry) { return /*#__PURE__*/ react.default.createElement(HandleEntry, { key: entry.label, entry }); })) : /*#__PURE__*/ react.default.createElement(SubEntries, null, subEntryPages.map(function(entries, index) { return /*#__PURE__*/ react.default.createElement("div", { key: index }, /*#__PURE__*/ react.default.createElement(Entry, null, /*#__PURE__*/ react.default.createElement(LabelButton, { onClick: function onClick() { return setExpandedPages(function(old) { return old.includes(index) ? old.filter(function(d) { return d !== index; }) : [].concat(old, [index]); }); } }, /*#__PURE__*/ react.default.createElement(Expander, { expanded }), " [", index * pageSize, " ...", " ", index * pageSize + pageSize - 1, "]"), expandedPages.includes(index) ? /*#__PURE__*/ react.default.createElement(SubEntries, null, entries.map(function(entry) { return /*#__PURE__*/ react.default.createElement(HandleEntry, { key: entry.label, entry }); })) : null)); })) : null) : /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(Label, null, label, ":"), " ", /*#__PURE__*/ react.default.createElement(Value, null, displayValue(value)))); }; })); //#endregion //#region node_modules/react-query/es/devtools/Logo.js function Logo(props) { return /*#__PURE__*/ react.createElement("svg", _extends$1({ width: "40px", height: "40px", viewBox: "0 0 190 190", version: "1.1" }, props), /*#__PURE__*/ react.createElement("g", { stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd" }, /*#__PURE__*/ react.createElement("g", { transform: "translate(-33.000000, 0.000000)" }, /*#__PURE__*/ react.createElement("path", { d: "M72.7239712,61.3436237 C69.631224,46.362877 68.9675112,34.8727722 70.9666331,26.5293551 C72.1555965,21.5671678 74.3293088,17.5190846 77.6346064,14.5984631 C81.1241394,11.5150478 85.5360327,10.0020122 90.493257,10.0020122 C98.6712013,10.0020122 107.26826,13.7273214 116.455725,20.8044264 C120.20312,23.6910458 124.092437,27.170411 128.131651,31.2444746 C128.45314,30.8310265 128.816542,30.4410453 129.22143,30.0806152 C140.64098,19.9149716 150.255245,13.5989272 158.478408,11.1636507 C163.367899,9.715636 167.958526,9.57768202 172.138936,10.983031 C176.551631,12.4664684 180.06766,15.5329489 182.548314,19.8281091 C186.642288,26.9166735 187.721918,36.2310983 186.195595,47.7320243 C185.573451,52.4199112 184.50985,57.5263831 183.007094,63.0593153 C183.574045,63.1277086 184.142416,63.2532808 184.705041,63.4395297 C199.193932,68.2358678 209.453582,73.3937462 215.665021,79.2882839 C219.360669,82.7953831 221.773972,86.6998434 222.646365,91.0218204 C223.567176,95.5836746 222.669313,100.159332 220.191548,104.451297 C216.105211,111.529614 208.591643,117.11221 197.887587,121.534031 C193.589552,123.309539 188.726579,124.917559 183.293259,126.363748 C183.541176,126.92292 183.733521,127.516759 183.862138,128.139758 C186.954886,143.120505 187.618598,154.61061 185.619477,162.954027 C184.430513,167.916214 182.256801,171.964297 178.951503,174.884919 C175.46197,177.968334 171.050077,179.48137 166.092853,179.48137 C157.914908,179.48137 149.31785,175.756061 140.130385,168.678956 C136.343104,165.761613 132.410866,162.238839 128.325434,158.108619 C127.905075,158.765474 127.388968,159.376011 126.77857,159.919385 C115.35902,170.085028 105.744755,176.401073 97.5215915,178.836349 C92.6321009,180.284364 88.0414736,180.422318 83.8610636,179.016969 C79.4483686,177.533532 75.9323404,174.467051 73.4516862,170.171891 C69.3577116,163.083327 68.2780823,153.768902 69.8044053,142.267976 C70.449038,137.410634 71.56762,132.103898 73.1575891,126.339009 C72.5361041,126.276104 71.9120754,126.144816 71.2949591,125.940529 C56.8060684,121.144191 46.5464184,115.986312 40.3349789,110.091775 C36.6393312,106.584675 34.2260275,102.680215 33.3536352,98.3582381 C32.4328237,93.7963839 33.3306866,89.2207269 35.8084524,84.9287618 C39.8947886,77.8504443 47.4083565,72.2678481 58.1124133,67.8460273 C62.5385143,66.0176154 67.5637208,64.366822 73.1939394,62.8874674 C72.9933393,62.3969171 72.8349374,61.8811235 72.7239712,61.3436237 Z", fill: "#002C4B", fillRule: "nonzero", transform: "translate(128.000000, 95.000000) scale(-1, 1) translate(-128.000000, -95.000000) " }), /*#__PURE__*/ react.createElement("path", { d: "M113.396882,64 L142.608177,64 C144.399254,64 146.053521,64.958025 146.944933,66.5115174 L161.577138,92.0115174 C162.461464,93.5526583 162.461464,95.4473417 161.577138,96.9884826 L146.944933,122.488483 C146.053521,124.041975 144.399254,125 142.608177,125 L113.396882,125 C111.605806,125 109.951539,124.041975 109.060126,122.488483 L94.4279211,96.9884826 C93.543596,95.4473417 93.543596,93.5526583 94.4279211,92.0115174 L109.060126,66.5115174 C109.951539,64.958025 111.605806,64 113.396882,64 Z M138.987827,70.2765273 C140.779849,70.2765273 142.434839,71.2355558 143.325899,72.7903404 L154.343038,92.0138131 C155.225607,93.5537825 155.225607,95.4462175 154.343038,96.9861869 L143.325899,116.20966 C142.434839,117.764444 140.779849,118.723473 138.987827,118.723473 L117.017233,118.723473 C115.225211,118.723473 113.570221,117.764444 112.67916,116.20966 L101.662022,96.9861869 C100.779452,95.4462175 100.779452,93.5537825 101.662022,92.0138131 L112.67916,72.7903404 C113.570221,71.2355558 115.225211,70.2765273 117.017233,70.2765273 L138.987827,70.2765273 Z M135.080648,77.1414791 L120.924411,77.1414791 C119.134228,77.1414791 117.480644,78.0985567 116.5889,79.6508285 L116.5889,79.6508285 L109.489217,92.0093494 C108.603232,93.5515958 108.603232,95.4484042 109.489217,96.9906506 L109.489217,96.9906506 L116.5889,109.349172 C117.480644,110.901443 119.134228,111.858521 120.924411,111.858521 L120.924411,111.858521 L135.080648,111.858521 C136.870831,111.858521 138.524416,110.901443 139.41616,109.349172 L139.41616,109.349172 L146.515843,96.9906506 C147.401828,95.4484042 147.401828,93.5515958 146.515843,92.0093494 L146.515843,92.0093494 L139.41616,79.6508285 C138.524416,78.0985567 136.870831,77.1414791 135.080648,77.1414791 L135.080648,77.1414791 Z M131.319186,83.7122186 C133.108028,83.7122186 134.760587,84.6678753 135.652827,86.2183156 L138.983552,92.0060969 C139.87203,93.5500005 139.87203,95.4499995 138.983552,96.9939031 L135.652827,102.781684 C134.760587,104.332125 133.108028,105.287781 131.319186,105.287781 L124.685874,105.287781 C122.897032,105.287781 121.244473,104.332125 120.352233,102.781684 L117.021508,96.9939031 C116.13303,95.4499995 116.13303,93.5500005 117.021508,92.0060969 L120.352233,86.2183156 C121.244473,84.6678753 122.897032,83.7122186 124.685874,83.7122186 L131.319186,83.7122186 Z M128.003794,90.1848875 C126.459294,90.1848875 125.034382,91.0072828 124.263005,92.3424437 C123.491732,93.6774232 123.491732,95.3225768 124.263005,96.6575563 C125.034382,97.9927172 126.459294,98.8151125 128.001266,98.8151125 L128.001266,98.8151125 C129.545766,98.8151125 130.970678,97.9927172 131.742055,96.6575563 C132.513327,95.3225768 132.513327,93.6774232 131.742055,92.3424437 C130.970678,91.0072828 129.545766,90.1848875 128.003794,90.1848875 L128.003794,90.1848875 Z M93,94.5009646 L100.767764,94.5009646", fill: "#FFD94C" }), /*#__PURE__*/ react.createElement("path", { d: "M87.8601729,108.357758 C89.1715224,107.608286 90.8360246,108.074601 91.5779424,109.399303 L91.5779424,109.399303 L92.0525843,110.24352 C95.8563392,116.982993 99.8190116,123.380176 103.940602,129.435068 C108.807881,136.585427 114.28184,143.82411 120.362479,151.151115 C121.316878,152.30114 121.184944,154.011176 120.065686,154.997937 L120.065686,154.997937 L119.454208,155.534625 C99.3465389,173.103314 86.2778188,176.612552 80.2480482,166.062341 C74.3500652,155.742717 76.4844915,136.982888 86.6513274,109.782853 C86.876818,109.179582 87.3045861,108.675291 87.8601729,108.357758 Z M173.534177,129.041504 C174.986131,128.785177 176.375496,129.742138 176.65963,131.194242 L176.65963,131.194242 L176.812815,131.986376 C181.782365,157.995459 178.283348,171 166.315764,171 C154.609745,171 139.708724,159.909007 121.612702,137.727022 C121.211349,137.235047 120.994572,136.617371 121,135.981509 C121.013158,134.480686 122.235785,133.274651 123.730918,133.287756 L123.730918,133.287756 L124.684654,133.294531 C132.305698,133.335994 139.714387,133.071591 146.910723,132.501323 C155.409039,131.82788 164.283523,130.674607 173.534177,129.041504 Z M180.408726,73.8119663 C180.932139,72.4026903 182.508386,71.6634537 183.954581,72.149012 L183.954581,72.149012 L184.742552,72.4154854 C210.583763,81.217922 220.402356,90.8916805 214.198332,101.436761 C208.129904,111.751366 190.484347,119.260339 161.26166,123.963678 C160.613529,124.067994 159.948643,123.945969 159.382735,123.618843 C158.047025,122.846729 157.602046,121.158214 158.388848,119.847438 L158.388848,119.847438 L158.889328,119.0105 C162.877183,112.31633 166.481358,105.654262 169.701854,99.0242957 C173.50501,91.1948179 177.073967,82.7907081 180.408726,73.8119663 Z M94.7383398,66.0363218 C95.3864708,65.9320063 96.0513565,66.0540315 96.6172646,66.3811573 C97.9529754,67.153271 98.3979538,68.8417862 97.6111517,70.1525615 L97.6111517,70.1525615 L97.1106718,70.9895001 C93.1228168,77.6836699 89.5186416,84.3457379 86.2981462,90.9757043 C82.49499,98.8051821 78.9260328,107.209292 75.5912744,116.188034 C75.0678608,117.59731 73.4916142,118.336546 72.045419,117.850988 L72.045419,117.850988 L71.2574475,117.584515 C45.4162372,108.782078 35.597644,99.1083195 41.8016679,88.5632391 C47.8700957,78.2486335 65.515653,70.7396611 94.7383398,66.0363218 Z M136.545792,34.4653746 C156.653461,16.8966864 169.722181,13.3874478 175.751952,23.9376587 C181.649935,34.2572826 179.515508,53.0171122 169.348673,80.2171474 C169.123182,80.8204179 168.695414,81.324709 168.139827,81.6422422 C166.828478,82.3917144 165.163975,81.9253986 164.422058,80.6006966 L164.422058,80.6006966 L163.947416,79.7564798 C160.143661,73.0170065 156.180988,66.6198239 152.059398,60.564932 C147.192119,53.4145727 141.71816,46.1758903 135.637521,38.8488847 C134.683122,37.6988602 134.815056,35.9888243 135.934314,35.0020629 L135.934314,35.0020629 Z M90.6842361,18 C102.390255,18 117.291276,29.0909926 135.387298,51.2729777 C135.788651,51.7649527 136.005428,52.3826288 136,53.0184911 C135.986842,54.5193144 134.764215,55.7253489 133.269082,55.7122445 L133.269082,55.7122445 L132.315346,55.7054689 C124.694302,55.6640063 117.285613,55.9284091 110.089277,56.4986773 C101.590961,57.17212 92.7164767,58.325393 83.4658235,59.9584962 C82.0138691,60.2148231 80.6245044,59.2578618 80.3403697,57.805758 L80.3403697,57.805758 L80.1871846,57.0136235 C75.2176347,31.0045412 78.7166519,18 90.6842361,18 Z", fill: "#FF4154" })))); } var init_Logo = __esmMin((() => { init_extends(); })); //#endregion //#region node_modules/react-query/es/devtools/devtools.js function ReactQueryDevtools$1(_ref) { var initialIsOpen = _ref.initialIsOpen; var _ref$panelProps = _ref.panelProps; var panelProps = _ref$panelProps === void 0 ? {} : _ref$panelProps; var _ref$closeButtonProps = _ref.closeButtonProps; var closeButtonProps = _ref$closeButtonProps === void 0 ? {} : _ref$closeButtonProps; var _ref$toggleButtonProp = _ref.toggleButtonProps; var toggleButtonProps = _ref$toggleButtonProp === void 0 ? {} : _ref$toggleButtonProp; var _ref$position = _ref.position; var position = _ref$position === void 0 ? "bottom-left" : _ref$position; var _ref$containerElement = _ref.containerElement; var Container = _ref$containerElement === void 0 ? "aside" : _ref$containerElement; var styleNonce = _ref.styleNonce; var rootRef = react.default.useRef(null); var panelRef = react.default.useRef(null); var _useLocalStorage = useLocalStorage("reactQueryDevtoolsOpen", initialIsOpen); var isOpen = _useLocalStorage[0]; var setIsOpen = _useLocalStorage[1]; var _useLocalStorage2 = useLocalStorage("reactQueryDevtoolsHeight", null); var devtoolsHeight = _useLocalStorage2[0]; var setDevtoolsHeight = _useLocalStorage2[1]; var _useSafeState = useSafeState(false); var isResolvedOpen = _useSafeState[0]; var setIsResolvedOpen = _useSafeState[1]; var _useSafeState2 = useSafeState(false); var isResizing = _useSafeState2[0]; var setIsResizing = _useSafeState2[1]; var isMounted = useIsMounted(); var _handleDragStart = function handleDragStart(panelElement, startEvent) { var _panelElement$getBoun; if (startEvent.button !== 0) return; setIsResizing(true); var dragInfo = { originalHeight: (_panelElement$getBoun = panelElement == null ? void 0 : panelElement.getBoundingClientRect().height) != null ? _panelElement$getBoun : 0, pageY: startEvent.pageY }; var run = function run(moveEvent) { var delta = dragInfo.pageY - moveEvent.pageY; var newHeight = (dragInfo == null ? void 0 : dragInfo.originalHeight) + delta; setDevtoolsHeight(newHeight); if (newHeight < 70) setIsOpen(false); else setIsOpen(true); }; var unsub = function unsub() { setIsResizing(false); document.removeEventListener("mousemove", run); document.removeEventListener("mouseUp", unsub); }; document.addEventListener("mousemove", run); document.addEventListener("mouseup", unsub); }; react.default.useEffect(function() { setIsResolvedOpen(isOpen != null ? isOpen : false); }, [ isOpen, isResolvedOpen, setIsResolvedOpen ]); react.default.useEffect(function() { var ref = panelRef.current; if (ref) { var handlePanelTransitionStart = function handlePanelTransitionStart() { if (ref && isResolvedOpen) ref.style.visibility = "visible"; }; var handlePanelTransitionEnd = function handlePanelTransitionEnd() { if (ref && !isResolvedOpen) ref.style.visibility = "hidden"; }; ref.addEventListener("transitionstart", handlePanelTransitionStart); ref.addEventListener("transitionend", handlePanelTransitionEnd); return function() { ref.removeEventListener("transitionstart", handlePanelTransitionStart); ref.removeEventListener("transitionend", handlePanelTransitionEnd); }; } }, [isResolvedOpen]); react.default[isServer ? "useEffect" : "useLayoutEffect"](function() { if (isResolvedOpen) { var _rootRef$current; var _rootRef$current$pare; var previousValue = (_rootRef$current = rootRef.current) == null ? void 0 : (_rootRef$current$pare = _rootRef$current.parentElement) == null ? void 0 : _rootRef$current$pare.style.paddingBottom; var run = function run() { var _panelRef$current; var _rootRef$current2; var containerHeight = (_panelRef$current = panelRef.current) == null ? void 0 : _panelRef$current.getBoundingClientRect().height; if ((_rootRef$current2 = rootRef.current) == null ? void 0 : _rootRef$current2.parentElement) rootRef.current.parentElement.style.paddingBottom = containerHeight + "px"; }; run(); if (typeof window !== "undefined") { window.addEventListener("resize", run); return function() { var _rootRef$current3; window.removeEventListener("resize", run); if (((_rootRef$current3 = rootRef.current) == null ? void 0 : _rootRef$current3.parentElement) && typeof previousValue === "string") rootRef.current.parentElement.style.paddingBottom = previousValue; }; } } }, [isResolvedOpen]); var _panelProps$style = panelProps.style; var panelStyle = _panelProps$style === void 0 ? {} : _panelProps$style; var otherPanelProps = _objectWithoutPropertiesLoose(panelProps, ["style"]); var _closeButtonProps$sty = closeButtonProps.style; var closeButtonStyle = _closeButtonProps$sty === void 0 ? {} : _closeButtonProps$sty; var onCloseClick = closeButtonProps.onClick; var otherCloseButtonProps = _objectWithoutPropertiesLoose(closeButtonProps, ["style", "onClick"]); var _toggleButtonProps$st = toggleButtonProps.style; var toggleButtonStyle = _toggleButtonProps$st === void 0 ? {} : _toggleButtonProps$st; var onToggleClick = toggleButtonProps.onClick; var otherToggleButtonProps = _objectWithoutPropertiesLoose(toggleButtonProps, ["style", "onClick"]); if (!isMounted()) return null; return /*#__PURE__*/ react.default.createElement(Container, { ref: rootRef, className: "ReactQueryDevtools", "aria-label": "React Query Devtools" }, /*#__PURE__*/ react.default.createElement(ThemeProvider, { theme: defaultTheme }, /*#__PURE__*/ react.default.createElement(ReactQueryDevtoolsPanel, _extends$1({ ref: panelRef, styleNonce }, otherPanelProps, { style: _extends$1({ position: "fixed", bottom: "0", right: "0", zIndex: 99999, width: "100%", height: devtoolsHeight != null ? devtoolsHeight : 500, maxHeight: "90%", boxShadow: "0 0 20px rgba(0,0,0,.3)", borderTop: "1px solid " + defaultTheme.gray, transformOrigin: "top", visibility: isOpen ? "visible" : "hidden" }, panelStyle, isResizing ? { transition: "none" } : { transition: "all .2s ease" }, isResolvedOpen ? { opacity: 1, pointerEvents: "all", transform: "translateY(0) scale(1)" } : { opacity: 0, pointerEvents: "none", transform: "translateY(15px) scale(1.02)" }), isOpen: isResolvedOpen, setIsOpen, handleDragStart: function handleDragStart(e) { return _handleDragStart(panelRef.current, e); } })), isResolvedOpen ? /*#__PURE__*/ react.default.createElement(Button$1, _extends$1({ type: "button", "aria-controls": "ReactQueryDevtoolsPanel", "aria-haspopup": "true", "aria-expanded": "true" }, otherCloseButtonProps, { onClick: function onClick(e) { setIsOpen(false); onCloseClick && onCloseClick(e); }, style: _extends$1({ position: "fixed", zIndex: 99999, margin: ".5em", bottom: 0 }, position === "top-right" ? { right: "0" } : position === "top-left" ? { left: "0" } : position === "bottom-right" ? { right: "0" } : { left: "0" }, closeButtonStyle) }), "Close") : null), !isResolvedOpen ? /*#__PURE__*/ react.default.createElement("button", _extends$1({ type: "button" }, otherToggleButtonProps, { "aria-label": "Open React Query Devtools", "aria-controls": "ReactQueryDevtoolsPanel", "aria-haspopup": "true", "aria-expanded": "false", onClick: function onClick(e) { setIsOpen(true); onToggleClick && onToggleClick(e); }, style: _extends$1({ background: "none", border: 0, padding: 0, position: "fixed", zIndex: 99999, display: "inline-flex", fontSize: "1.5em", margin: ".5em", cursor: "pointer", width: "fit-content" }, position === "top-right" ? { top: "0", right: "0" } : position === "top-left" ? { top: "0", left: "0" } : position === "bottom-right" ? { bottom: "0", right: "0" } : { bottom: "0", left: "0" }, toggleButtonStyle) }), /*#__PURE__*/ react.default.createElement(Logo, { "aria-hidden": true })) : null); } var isServer, getStatusRank, sortFns, ReactQueryDevtoolsPanel; var init_devtools$1 = __esmMin((() => { init_extends(); init_objectWithoutPropertiesLoose(); init_es(); init_match_sorter_esm(); init_useLocalStorage(); init_utils$1(); init_styledComponents(); init_theme(); init_Explorer(); init_Logo(); init_utils$4(); isServer = typeof window === "undefined"; __name(ReactQueryDevtools$1, "ReactQueryDevtools"); getStatusRank = function getStatusRank(q) { return q.state.isFetching ? 0 : !q.getObserversCount() ? 3 : q.isStale() ? 2 : 1; }; sortFns = { "Status > Last Updated": function StatusLastUpdated(a, b) { var _sortFns$LastUpdated; return getStatusRank(a) === getStatusRank(b) ? (_sortFns$LastUpdated = sortFns["Last Updated"]) == null ? void 0 : _sortFns$LastUpdated.call(sortFns, a, b) : getStatusRank(a) > getStatusRank(b) ? 1 : -1; }, "Query Hash": function QueryHash(a, b) { return a.queryHash > b.queryHash ? 1 : -1; }, "Last Updated": function LastUpdated(a, b) { return a.state.dataUpdatedAt < b.state.dataUpdatedAt ? 1 : -1; } }; ReactQueryDevtoolsPanel = /*#__PURE__*/ react.default.forwardRef(function ReactQueryDevtoolsPanel(props, ref) { var _activeQuery$state; var _props$isOpen = props.isOpen; var isOpen = _props$isOpen === void 0 ? true : _props$isOpen; var styleNonce = props.styleNonce; var setIsOpen = props.setIsOpen; var handleDragStart = props.handleDragStart; var panelProps = _objectWithoutPropertiesLoose(props, [ "isOpen", "styleNonce", "setIsOpen", "handleDragStart" ]); var queryClient = useQueryClient(); var queryCache = queryClient.getQueryCache(); var _useLocalStorage3 = useLocalStorage("reactQueryDevtoolsSortFn", Object.keys(sortFns)[0]); var sort = _useLocalStorage3[0]; var setSort = _useLocalStorage3[1]; var _useLocalStorage4 = useLocalStorage("reactQueryDevtoolsFilter", ""); var filter = _useLocalStorage4[0]; var setFilter = _useLocalStorage4[1]; var _useLocalStorage5 = useLocalStorage("reactQueryDevtoolsSortDesc", false); var sortDesc = _useLocalStorage5[0]; var setSortDesc = _useLocalStorage5[1]; var sortFn = react.default.useMemo(function() { return sortFns[sort]; }, [sort]); react.default[isServer ? "useEffect" : "useLayoutEffect"](function() { if (!sortFn) setSort(Object.keys(sortFns)[0]); }, [setSort, sortFn]); var _useSafeState3 = useSafeState(Object.values(queryCache.findAll())); var unsortedQueries = _useSafeState3[0]; var setUnsortedQueries = _useSafeState3[1]; var _useLocalStorage6 = useLocalStorage("reactQueryDevtoolsActiveQueryHash", ""); var activeQueryHash = _useLocalStorage6[0]; var setActiveQueryHash = _useLocalStorage6[1]; var queries = react.default.useMemo(function() { var sorted = [].concat(unsortedQueries).sort(sortFn); if (sortDesc) sorted.reverse(); if (!filter) return sorted; return matchSorter(sorted, filter, { keys: ["queryHash"] }).filter(function(d) { return d.queryHash; }); }, [ sortDesc, sortFn, unsortedQueries, filter ]); var activeQuery = react.default.useMemo(function() { return queries.find(function(query) { return query.queryHash === activeQueryHash; }); }, [activeQueryHash, queries]); var hasFresh = queries.filter(function(q) { return getQueryStatusLabel(q) === "fresh"; }).length; var hasFetching = queries.filter(function(q) { return getQueryStatusLabel(q) === "fetching"; }).length; var hasStale = queries.filter(function(q) { return getQueryStatusLabel(q) === "stale"; }).length; var hasInactive = queries.filter(function(q) { return getQueryStatusLabel(q) === "inactive"; }).length; react.default.useEffect(function() { if (isOpen) { var unsubscribe = queryCache.subscribe(function() { setUnsortedQueries(Object.values(queryCache.getAll())); }); setUnsortedQueries(Object.values(queryCache.getAll())); return unsubscribe; } }, [ isOpen, sort, sortFn, sortDesc, setUnsortedQueries, queryCache ]); return /*#__PURE__*/ react.default.createElement(ThemeProvider, { theme: defaultTheme }, /*#__PURE__*/ react.default.createElement(Panel, _extends$1({ ref, className: "ReactQueryDevtoolsPanel", "aria-label": "React Query Devtools Panel", id: "ReactQueryDevtoolsPanel" }, panelProps), /*#__PURE__*/ react.default.createElement("style", { nonce: styleNonce, dangerouslySetInnerHTML: { __html: "\n .ReactQueryDevtoolsPanel * {\n scrollbar-color: " + defaultTheme.backgroundAlt + " " + defaultTheme.gray + ";\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar, .ReactQueryDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-track, .ReactQueryDevtoolsPanel scrollbar-track {\n background: " + defaultTheme.backgroundAlt + ";\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactQueryDevtoolsPanel scrollbar-thumb {\n background: " + defaultTheme.gray + ";\n border-radius: .5em;\n border: 3px solid " + defaultTheme.backgroundAlt + ";\n }\n " } }), /*#__PURE__*/ react.default.createElement("div", { style: { position: "absolute", left: 0, top: 0, width: "100%", height: "4px", marginBottom: "-4px", cursor: "row-resize", zIndex: 1e5 }, onMouseDown: handleDragStart }), /*#__PURE__*/ react.default.createElement("div", { style: { flex: "1 1 500px", minHeight: "40%", maxHeight: "100%", overflow: "auto", borderRight: "1px solid " + defaultTheme.grayAlt, display: isOpen ? "flex" : "none", flexDirection: "column" } }, /*#__PURE__*/ react.default.createElement("div", { style: { padding: ".5em", background: defaultTheme.backgroundAlt, display: "flex", justifyContent: "space-between", alignItems: "center" } }, /*#__PURE__*/ react.default.createElement("button", { type: "button", "aria-label": "Close React Query Devtools", "aria-controls": "ReactQueryDevtoolsPanel", "aria-haspopup": "true", "aria-expanded": "true", onClick: function onClick() { return setIsOpen(false); }, style: { display: "inline-flex", background: "none", border: 0, padding: 0, marginRight: ".5em", cursor: "pointer" } }, /*#__PURE__*/ react.default.createElement(Logo, { "aria-hidden": true })), /*#__PURE__*/ react.default.createElement("div", { style: { display: "flex", flexDirection: "column" } }, /*#__PURE__*/ react.default.createElement(QueryKeys, { style: { marginBottom: ".5em" } }, /*#__PURE__*/ react.default.createElement(QueryKey, { style: { background: defaultTheme.success, opacity: hasFresh ? 1 : .3 } }, "fresh ", /*#__PURE__*/ react.default.createElement(Code, null, "(", hasFresh, ")")), " ", /*#__PURE__*/ react.default.createElement(QueryKey, { style: { background: defaultTheme.active, opacity: hasFetching ? 1 : .3 } }, "fetching ", /*#__PURE__*/ react.default.createElement(Code, null, "(", hasFetching, ")")), " ", /*#__PURE__*/ react.default.createElement(QueryKey, { style: { background: defaultTheme.warning, color: "black", textShadow: "0", opacity: hasStale ? 1 : .3 } }, "stale ", /*#__PURE__*/ react.default.createElement(Code, null, "(", hasStale, ")")), " ", /*#__PURE__*/ react.default.createElement(QueryKey, { style: { background: defaultTheme.gray, opacity: hasInactive ? 1 : .3 } }, "inactive ", /*#__PURE__*/ react.default.createElement(Code, null, "(", hasInactive, ")"))), /*#__PURE__*/ react.default.createElement("div", { style: { display: "flex", alignItems: "center" } }, /*#__PURE__*/ react.default.createElement(Input, { placeholder: "Filter", "aria-label": "Filter by queryhash", value: filter != null ? filter : "", onChange: function onChange(e) { return setFilter(e.target.value); }, onKeyDown: function onKeyDown(e) { if (e.key === "Escape") setFilter(""); }, style: { flex: "1", marginRight: ".5em", width: "100%" } }), !filter ? /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(Select, { "aria-label": "Sort queries", value: sort, onChange: function onChange(e) { return setSort(e.target.value); }, style: { flex: "1", minWidth: 75, marginRight: ".5em" } }, Object.keys(sortFns).map(function(key) { return /*#__PURE__*/ react.default.createElement("option", { key, value: key }, "Sort by ", key); })), /*#__PURE__*/ react.default.createElement(Button$1, { type: "button", onClick: function onClick() { return setSortDesc(function(old) { return !old; }); }, style: { padding: ".3em .4em" } }, sortDesc ? "⬇ Desc" : "⬆ Asc")) : null))), /*#__PURE__*/ react.default.createElement("div", { style: { overflowY: "auto", flex: "1" } }, queries.map(function(query, i) { var isDisabled = query.getObserversCount() > 0 && !query.isActive(); return /*#__PURE__*/ react.default.createElement("div", { key: query.queryHash || i, role: "button", "aria-label": "Open query details for " + query.queryHash, onClick: function onClick() { return setActiveQueryHash(activeQueryHash === query.queryHash ? "" : query.queryHash); }, style: { display: "flex", borderBottom: "solid 1px " + defaultTheme.grayAlt, cursor: "pointer", background: query === activeQuery ? "rgba(255,255,255,.1)" : void 0 } }, /*#__PURE__*/ react.default.createElement("div", { style: { flex: "0 0 auto", width: "2em", height: "2em", background: getQueryStatusColor(query, defaultTheme), display: "flex", alignItems: "center", justifyContent: "center", fontWeight: "bold", textShadow: getQueryStatusLabel(query) === "stale" ? "0" : "0 0 10px black", color: getQueryStatusLabel(query) === "stale" ? "black" : "white" } }, query.getObserversCount()), isDisabled ? /*#__PURE__*/ react.default.createElement("div", { style: { flex: "0 0 auto", height: "2em", background: defaultTheme.gray, display: "flex", alignItems: "center", fontWeight: "bold", padding: "0 0.5em" } }, "disabled") : null, /*#__PURE__*/ react.default.createElement(Code, { style: { padding: ".5em" } }, "" + query.queryHash)); }))), activeQuery ? /*#__PURE__*/ react.default.createElement(ActiveQueryPanel, null, /*#__PURE__*/ react.default.createElement("div", { style: { padding: ".5em", background: defaultTheme.backgroundAlt, position: "sticky", top: 0, zIndex: 1 } }, "Query Details"), /*#__PURE__*/ react.default.createElement("div", { style: { padding: ".5em" } }, /*#__PURE__*/ react.default.createElement("div", { style: { marginBottom: ".5em", display: "flex", alignItems: "start", justifyContent: "space-between" } }, /*#__PURE__*/ react.default.createElement(Code, { style: { lineHeight: "1.8em" } }, /*#__PURE__*/ react.default.createElement("pre", { style: { margin: 0, padding: 0, overflow: "auto" } }, JSON.stringify(activeQuery.queryKey, null, 2))), /*#__PURE__*/ react.default.createElement("span", { style: { padding: "0.3em .6em", borderRadius: "0.4em", fontWeight: "bold", textShadow: "0 2px 10px black", background: getQueryStatusColor(activeQuery, defaultTheme), flexShrink: 0 } }, getQueryStatusLabel(activeQuery))), /*#__PURE__*/ react.default.createElement("div", { style: { marginBottom: ".5em", display: "flex", alignItems: "center", justifyContent: "space-between" } }, "Observers: ", /*#__PURE__*/ react.default.createElement(Code, null, activeQuery.getObserversCount())), /*#__PURE__*/ react.default.createElement("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" } }, "Last Updated:", " ", /*#__PURE__*/ react.default.createElement(Code, null, new Date(activeQuery.state.dataUpdatedAt).toLocaleTimeString()))), /*#__PURE__*/ react.default.createElement("div", { style: { background: defaultTheme.backgroundAlt, padding: ".5em", position: "sticky", top: 0, zIndex: 1 } }, "Actions"), /*#__PURE__*/ react.default.createElement("div", { style: { padding: "0.5em" } }, /*#__PURE__*/ react.default.createElement(Button$1, { type: "button", onClick: function handleRefetch() { var promise = activeQuery == null ? void 0 : activeQuery.fetch(); promise == null || promise.catch(noop); }, disabled: activeQuery.state.isFetching, style: { background: defaultTheme.active } }, "Refetch"), " ", /*#__PURE__*/ react.default.createElement(Button$1, { type: "button", onClick: function onClick() { return queryClient.invalidateQueries(activeQuery); }, style: { background: defaultTheme.warning, color: defaultTheme.inputTextColor } }, "Invalidate"), " ", /*#__PURE__*/ react.default.createElement(Button$1, { type: "button", onClick: function onClick() { return queryClient.resetQueries(activeQuery); }, style: { background: defaultTheme.gray } }, "Reset"), " ", /*#__PURE__*/ react.default.createElement(Button$1, { type: "button", onClick: function onClick() { return queryClient.removeQueries(activeQuery); }, style: { background: defaultTheme.danger } }, "Remove")), /*#__PURE__*/ react.default.createElement("div", { style: { background: defaultTheme.backgroundAlt, padding: ".5em", position: "sticky", top: 0, zIndex: 1 } }, "Data Explorer"), /*#__PURE__*/ react.default.createElement("div", { style: { padding: ".5em" } }, /*#__PURE__*/ react.default.createElement(Explorer, { label: "Data", value: activeQuery == null ? void 0 : (_activeQuery$state = activeQuery.state) == null ? void 0 : _activeQuery$state.data, defaultExpanded: {} })), /*#__PURE__*/ react.default.createElement("div", { style: { background: defaultTheme.backgroundAlt, padding: ".5em", position: "sticky", top: 0, zIndex: 1 } }, "Query Explorer"), /*#__PURE__*/ react.default.createElement("div", { style: { padding: ".5em" } }, /*#__PURE__*/ react.default.createElement(Explorer, { label: "Query", value: activeQuery, defaultExpanded: { queryKey: true } }))) : null)); }); })); //#endregion //#region node_modules/react-query/es/devtools/index.js var devtools_exports = /* @__PURE__ */ __exportAll({ ReactQueryDevtools: () => ReactQueryDevtools$1, ReactQueryDevtoolsPanel: () => ReactQueryDevtoolsPanel }); var init_devtools = __esmMin((() => { init_devtools$1(); })); //#endregion //#region node_modules/react-query/devtools/index.js var require_devtools = /* @__PURE__ */ __commonJSMin(((exports, module) => { module.exports = (init_devtools(), __toCommonJS(devtools_exports)); })); //#endregion //#region app/modules/kit-library/assets/js/app.js var app_exports$1 = /* @__PURE__ */ __exportAll({ default: () => App$1 }); function AppContent() { var returnTo = useQueryParams().getAll().return_to; return /*#__PURE__*/ react.default.createElement(SettingsProvider, { value: elementorAppConfig["kit-library"] }, /*#__PURE__*/ react.default.createElement(ReturnToProvider, { value: returnTo }, /*#__PURE__*/ react.default.createElement(ConnectStateProvider, null, /*#__PURE__*/ react.default.createElement(TrackingProvider, null, /*#__PURE__*/ react.default.createElement(LastFilterProvider, null, /*#__PURE__*/ react.default.createElement(Router, null, /*#__PURE__*/ react.default.createElement(Index, { path: "/" }), /*#__PURE__*/ react.default.createElement(Favorites, { path: "/favorites" }), /*#__PURE__*/ react.default.createElement(Preview, { path: "/preview/:id" }), /*#__PURE__*/ react.default.createElement(Overview, { path: "/overview/:id" }), /*#__PURE__*/ react.default.createElement(Cloud, { path: "/cloud" }))))))); } function App$1() { return /*#__PURE__*/ react.default.createElement("div", { className: "e-kit-library" }, /*#__PURE__*/ react.default.createElement(QueryClientProvider, { client: queryClient }, /*#__PURE__*/ react.default.createElement(AppContent, null), elementorCommon.config.isElementorDebug && /*#__PURE__*/ react.default.createElement(import_devtools.ReactQueryDevtools, { initialIsOpen: false }))); } var import_devtools, queryClient; var init_app$1 = __esmMin((() => { init_favorites(); init_index(); init_cloud(); init_overview(); init_preview(); init_last_filter_context(); init_es(); import_devtools = require_devtools(); init_es$1(); init_settings_context(); init_connect_state_context(); init_tracking_context(); init_return_to_context(); init_use_query_params(); queryClient = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, retry: false, staleTime: 1e3 * 60 * 30 } } }); __name(App$1, "App"); })); //#endregion //#region app/modules/kit-library/assets/js/module.js init_classCallCheck(); init_createClass(); init_preload_helper(); var KitLibrary = /*#__PURE__*/ function() { function KitLibrary() { _classCallCheck(this, KitLibrary); if (!this.hasAccessToModule()) return; $e.components.register(new Component$2()); $e.components.register(new Component$1()); $e.components.register(new EComponent()); $e.components.register(new Component()); _elementor_router.default.addRoute({ path: "/kit-library/*", component: react.default.lazy(function() { return __vitePreload(() => Promise.resolve().then(() => (init_app$1(), app_exports$1)), void 0); }) }); } return _createClass(KitLibrary, [{ key: "hasAccessToModule", value: function hasAccessToModule() { var _elementorAppConfig$k; return (_elementorAppConfig$k = elementorAppConfig["kit-library"]) === null || _elementorAppConfig$k === void 0 ? void 0 : _elementorAppConfig$k.has_access_to_module; } }]); }(); //#endregion //#region app/modules/onboarding/assets/js/context/context.js function ownKeys$6(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; } function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function ContextProvider(props) { var onboardingConfig = elementorAppConfig.onboarding; var _useState2 = _slicedToArray((0, react.useState)({ hasPro: elementorAppConfig.hasPro, isLibraryConnected: onboardingConfig.isLibraryConnected, isHelloThemeInstalled: onboardingConfig.helloInstalled, isHelloThemeActivated: onboardingConfig.helloActivated, siteName: onboardingConfig.siteName, siteLogo: onboardingConfig.siteLogo, proNotice: "", currentStep: "", nextStep: "", steps: { account: false, hello: false, chooseFeatures: false, siteName: false, siteLogo: false, goodToGo: false } }), 2); var state = _useState2[0]; var setState = _useState2[1]; var updateState = (0, react.useCallback)(function(newState) { setState(function(prev) { return _objectSpread$6(_objectSpread$6({}, prev), newState); }); }, [setState]); return /*#__PURE__*/ react.default.createElement(OnboardingContext.Provider, { value: { state, setState, updateState, getStateObjectToUpdate: function getStateObjectToUpdate(stateObject, mainChangedPropertyKey, subChangedPropertyKey, subChangedPropertyValue) { var mutatedStateCopy = JSON.parse(JSON.stringify(stateObject)); mutatedStateCopy[mainChangedPropertyKey][subChangedPropertyKey] = subChangedPropertyValue; return mutatedStateCopy; } } }, props.children); } var import_prop_types$18, OnboardingContext; var init_context = __esmMin((() => { import_prop_types$18 = /* @__PURE__ */ __toESM(require_prop_types()); init_defineProperty$1(); init_slicedToArray(); __name(ownKeys$6, "ownKeys"); __name(_objectSpread$6, "_objectSpread"); OnboardingContext = (0, react.createContext)({}); ContextProvider.propTypes = { children: import_prop_types$18.default.any }; })); //#endregion //#region app/modules/onboarding/assets/js/utils/modules/storage-manager.js function getString(key) { return localStorage.getItem(key); } function setString(key, value) { localStorage.setItem(key, value); } function remove(key) { localStorage.removeItem(key); } function getObject(key) { var storedString = getString(key); if (!storedString) return null; try { var parsed = JSON.parse(storedString); if (parsed && "object" === _typeof$1(parsed)) return parsed; return null; } catch (error) { remove(key); return null; } } function setObject(key, value) { try { setString(key, JSON.stringify(value)); return true; } catch (error) { return false; } } function getArray(key) { var storedArray = getObject(key); return Array.isArray(storedArray) ? storedArray : []; } function appendToArray(key, item) { var existingArray = getArray(key); existingArray.push(item); return setObject(key, existingArray); } function getNumber(key) { var defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; var storedString = getString(key); if (!storedString) return defaultValue; var parsed = parseInt(storedString, 10); return isNaN(parsed) ? defaultValue : parsed; } function setNumber(key, value) { setString(key, value.toString()); } function incrementNumber(key) { var increment = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; var newValue = getNumber(key) + increment; setNumber(key, newValue); return newValue; } function exists(key) { return getString(key) !== null; } function clearMultiple(keys) { keys.forEach(function(key) { return remove(key); }); } function clearAllOnboardingData() { clearMultiple([ ONBOARDING_STORAGE_KEYS.START_TIME, ONBOARDING_STORAGE_KEYS.INITIATED, ONBOARDING_STORAGE_KEYS.STEP1_ACTIONS, ONBOARDING_STORAGE_KEYS.STEP2_ACTIONS, ONBOARDING_STORAGE_KEYS.STEP3_ACTIONS, ONBOARDING_STORAGE_KEYS.STEP4_ACTIONS, ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE, ONBOARDING_STORAGE_KEYS.STEP4_HAS_PREVIOUS_CLICK, ONBOARDING_STORAGE_KEYS.EDITOR_LOAD_TRACKED, ONBOARDING_STORAGE_KEYS.POST_ONBOARDING_CLICK_COUNT, ONBOARDING_STORAGE_KEYS.PENDING_SKIP, ONBOARDING_STORAGE_KEYS.PENDING_CREATE_ACCOUNT_STATUS, ONBOARDING_STORAGE_KEYS.PENDING_CREATE_MY_ACCOUNT, ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE, ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE_NO_CLICK, ONBOARDING_STORAGE_KEYS.PENDING_CONNECT_STATUS, ONBOARDING_STORAGE_KEYS.PENDING_STEP1_CLICKED_CONNECT, ONBOARDING_STORAGE_KEYS.PENDING_STEP1_END_STATE, ONBOARDING_STORAGE_KEYS.PENDING_EXIT, ONBOARDING_STORAGE_KEYS.PENDING_AB_101_START_AS_FREE_USER, ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE_MOUSEOVER, ONBOARDING_STORAGE_KEYS.STEP1_START_TIME, ONBOARDING_STORAGE_KEYS.STEP2_START_TIME, ONBOARDING_STORAGE_KEYS.STEP3_START_TIME, ONBOARDING_STORAGE_KEYS.STEP4_START_TIME ]); for (var i = 1; i <= 4; i++) remove("elementor_onboarding_click_".concat(i, "_data")); remove(ONBOARDING_STORAGE_KEYS.STEP1_END_STATE_SENT); remove(ONBOARDING_STORAGE_KEYS.STEP2_END_STATE_SENT); remove(ONBOARDING_STORAGE_KEYS.STEP3_END_STATE_SENT); remove(ONBOARDING_STORAGE_KEYS.STEP4_END_STATE_SENT); remove(ONBOARDING_STORAGE_KEYS.STEP2_THEMES_LOADED_SENT); } function clearExperimentData() { clearMultiple([ ONBOARDING_STORAGE_KEYS.EXPERIMENT101_VARIANT, ONBOARDING_STORAGE_KEYS.EXPERIMENT101_STARTED, ONBOARDING_STORAGE_KEYS.EXPERIMENT201_VARIANT, ONBOARDING_STORAGE_KEYS.EXPERIMENT201_STARTED, ONBOARDING_STORAGE_KEYS.EXPERIMENT202_VARIANT, ONBOARDING_STORAGE_KEYS.EXPERIMENT202_STARTED, ONBOARDING_STORAGE_KEYS.EXPERIMENT401_VARIANT, ONBOARDING_STORAGE_KEYS.EXPERIMENT401_STARTED, ONBOARDING_STORAGE_KEYS.EXPERIMENT402_VARIANT, ONBOARDING_STORAGE_KEYS.EXPERIMENT402_STARTED, ONBOARDING_STORAGE_KEYS.PENDING_EXPERIMENT_DATA ]); } function getStepStartTime(stepNumber) { var key = { 1: ONBOARDING_STORAGE_KEYS.STEP1_START_TIME, 2: ONBOARDING_STORAGE_KEYS.STEP2_START_TIME, 3: ONBOARDING_STORAGE_KEYS.STEP3_START_TIME, 4: ONBOARDING_STORAGE_KEYS.STEP4_START_TIME }[stepNumber]; return key ? getNumber(key) : null; } function setStepStartTime(stepNumber, timestamp) { var key = { 1: ONBOARDING_STORAGE_KEYS.STEP1_START_TIME, 2: ONBOARDING_STORAGE_KEYS.STEP2_START_TIME, 3: ONBOARDING_STORAGE_KEYS.STEP3_START_TIME, 4: ONBOARDING_STORAGE_KEYS.STEP4_START_TIME }[stepNumber]; if (key) { setNumber(key, timestamp); return true; } return false; } function clearStepStartTime$1(stepNumber) { var key = { 1: ONBOARDING_STORAGE_KEYS.STEP1_START_TIME, 2: ONBOARDING_STORAGE_KEYS.STEP2_START_TIME, 3: ONBOARDING_STORAGE_KEYS.STEP3_START_TIME, 4: ONBOARDING_STORAGE_KEYS.STEP4_START_TIME }[stepNumber]; if (key) remove(key); } var ONBOARDING_STORAGE_KEYS, StorageManager; var init_storage_manager = __esmMin((() => { init_typeof$1(); ONBOARDING_STORAGE_KEYS = { START_TIME: "elementor_onboarding_start_time", INITIATED: "elementor_onboarding_initiated", STEP1_ACTIONS: "elementor_onboarding_step1_actions", STEP2_ACTIONS: "elementor_onboarding_step2_actions", STEP3_ACTIONS: "elementor_onboarding_step3_actions", STEP4_ACTIONS: "elementor_onboarding_step4_actions", STEP1_START_TIME: "elementor_onboarding_s1_start_time", STEP2_START_TIME: "elementor_onboarding_s2_start_time", STEP3_START_TIME: "elementor_onboarding_s3_start_time", STEP4_START_TIME: "elementor_onboarding_s4_start_time", STEP4_SITE_STARTER_CHOICE: "elementor_onboarding_s4_site_starter_choice", STEP4_HAS_PREVIOUS_CLICK: "elementor_onboarding_s4_has_previous_click", EDITOR_LOAD_TRACKED: "elementor_onboarding_editor_load_tracked", POST_ONBOARDING_CLICK_COUNT: "elementor_onboarding_click_count", PENDING_SKIP: "elementor_onboarding_pending_skip", PENDING_CONNECT_STATUS: "elementor_onboarding_pending_connect_status", PENDING_CREATE_ACCOUNT_STATUS: "elementor_onboarding_pending_create_account_status", PENDING_CREATE_MY_ACCOUNT: "elementor_onboarding_pending_create_my_account", PENDING_TOP_UPGRADE: "elementor_onboarding_pending_top_upgrade", PENDING_TOP_UPGRADE_NO_CLICK: "elementor_onboarding_pending_top_upgrade_no_click", PENDING_STEP1_CLICKED_CONNECT: "elementor_onboarding_pending_step1_clicked_connect", PENDING_STEP1_END_STATE: "elementor_onboarding_pending_step1_end_state", PENDING_EXIT: "elementor_onboarding_pending_exit", PENDING_AB_101_START_AS_FREE_USER: "elementor_onboarding_pending_ab_101_start_as_free_user", PENDING_TOP_UPGRADE_MOUSEOVER: "elementor_onboarding_pending_top_upgrade_mouseover", EXPERIMENT101_VARIANT: "elementor_onboarding_experiment101_variant", EXPERIMENT101_STARTED: "elementor_onboarding_experiment101_started", EXPERIMENT201_VARIANT: "elementor_onboarding_experiment201_variant", EXPERIMENT201_STARTED: "elementor_onboarding_experiment201_started", EXPERIMENT202_VARIANT: "elementor_onboarding_experiment202_variant", EXPERIMENT202_STARTED: "elementor_onboarding_experiment202_started", EXPERIMENT401_VARIANT: "elementor_onboarding_experiment401_variant", EXPERIMENT401_STARTED: "elementor_onboarding_experiment401_started", EXPERIMENT402_VARIANT: "elementor_onboarding_experiment402_variant", EXPERIMENT402_STARTED: "elementor_onboarding_experiment402_started", PENDING_EXPERIMENT_DATA: "elementor_onboarding_pending_experiment_data", STEP1_END_STATE_SENT: "elementor_onboarding_step1_end_state_sent", STEP2_END_STATE_SENT: "elementor_onboarding_step2_end_state_sent", STEP3_END_STATE_SENT: "elementor_onboarding_step3_end_state_sent", STEP4_END_STATE_SENT: "elementor_onboarding_step4_end_state_sent", STEP2_THEMES_LOADED_SENT: "elementor_onboarding_step2_themes_loaded_sent" }; __name(clearStepStartTime$1, "clearStepStartTime"); StorageManager = { getString, setString, remove, getObject, setObject, getArray, appendToArray, getNumber, setNumber, incrementNumber, exists, clearMultiple, clearAllOnboardingData, clearExperimentData, getStepStartTime, setStepStartTime, clearStepStartTime: clearStepStartTime$1 }; })); //#endregion //#region node_modules/mixpanel-browser/dist/mixpanel.module.js function _array_like_to_array(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) resolve(value); else Promise.resolve(value).then(_next, _throw); } function _async_to_generator(fn) { return function() { var self = this; var args = arguments; return new Promise(function(resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(void 0); }); }; } function _construct(Parent, args, Class) { if (_is_native_reflect_construct()) _construct = Reflect.construct; else _construct = function construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var instance = new (Function.bind.apply(Parent, a))(); if (Class) _set_prototype_of(instance, Class.prototype); return instance; }; return _construct.apply(null, arguments); } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _create_class(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); return Constructor; } function _extends() { _extends = Object.assign || function(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key]; } return target; }; return _extends.apply(this, arguments); } function _get_prototype_of(o) { _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _get_prototype_of(o); } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) throw new TypeError("Super expression must either be null or a function"); subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _set_prototype_of(subClass, superClass); } function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) return !!right[Symbol.hasInstance](left); else return left instanceof right; } function _is_native_function(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } function _object_without_properties_loose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key; var i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _set_prototype_of(o, p) { _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _set_prototype_of(o, p); } function _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } function _unsupported_iterable_to_array(o, minLen) { if (!o) return; if (typeof o === "string") return _array_like_to_array(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen); } function _wrap_native_super(Class) { var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0; _wrap_native_super = function wrapNativeSuper(Class) { if (Class === null || !_is_native_function(Class)) return Class; if (typeof Class !== "function") throw new TypeError("Super expression must either be null or a function"); if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _get_prototype_of(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _set_prototype_of(Wrapper, Class); }; return _wrap_native_super(Class); } function _is_native_reflect_construct() { try { var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch (_) {} return (_is_native_reflect_construct = function() { return !!result; })(); } function _create_for_of_iterator_helper_loose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike) { if (it) o = it; var i = 0; return function() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _ts_generator(thisArg, body) { var f; var y; var t; var g; var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function(v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function _ts_values(o) { var s = typeof Symbol === "function" && Symbol.iterator; var m = s && o[s]; var i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function() { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } function getUntaintedPrototype$1(key) { if (untaintedBasePrototype$1[key]) return untaintedBasePrototype$1[key]; var defaultObj = globalThis[key]; var defaultPrototype = defaultObj.prototype; var accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0; var isUntaintedAccessors = Boolean(accessorNames && accessorNames.every(function(accessor) { var _a2; var _b; return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes("[native code]")); })); var methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0; var isUntaintedMethods = Boolean(methodNames && methodNames.every(function(method) { var _a2; return typeof defaultPrototype[method] === "function" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes("[native code]")); })); if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) { untaintedBasePrototype$1[key] = defaultObj.prototype; return defaultObj.prototype; } try { var iframeEl = document.createElement("iframe"); document.body.appendChild(iframeEl); var win = iframeEl.contentWindow; if (!win) return defaultObj.prototype; var untaintedObject = win[key].prototype; document.body.removeChild(iframeEl); if (!untaintedObject) return defaultPrototype; return untaintedBasePrototype$1[key] = untaintedObject; } catch (e) { return defaultPrototype; } } function getUntaintedAccessor$1(key, instance, accessor) { var _a2; var cacheKey = key + "." + String(accessor); if (untaintedAccessorCache$1[cacheKey]) return untaintedAccessorCache$1[cacheKey].call(instance); var untaintedPrototype = getUntaintedPrototype$1(key); var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get; if (!untaintedAccessor) return instance[accessor]; untaintedAccessorCache$1[cacheKey] = untaintedAccessor; return untaintedAccessor.call(instance); } function getUntaintedMethod$1(key, instance, method) { var cacheKey = key + "." + String(method); if (untaintedMethodCache$1[cacheKey]) return untaintedMethodCache$1[cacheKey].bind(instance); var untaintedMethod = getUntaintedPrototype$1(key)[method]; if (typeof untaintedMethod !== "function") return instance[method]; untaintedMethodCache$1[cacheKey] = untaintedMethod; return untaintedMethod.bind(instance); } function childNodes$1(n2) { return getUntaintedAccessor$1("Node", n2, "childNodes"); } function parentNode$1(n2) { return getUntaintedAccessor$1("Node", n2, "parentNode"); } function parentElement$1(n2) { return getUntaintedAccessor$1("Node", n2, "parentElement"); } function textContent$1(n2) { return getUntaintedAccessor$1("Node", n2, "textContent"); } function contains$1(n2, other) { return getUntaintedMethod$1("Node", n2, "contains")(other); } function getRootNode$1(n2) { return getUntaintedMethod$1("Node", n2, "getRootNode")(); } function host$1(n2) { if (!n2 || !("host" in n2)) return null; return getUntaintedAccessor$1("ShadowRoot", n2, "host"); } function styleSheets$1(n2) { return n2.styleSheets; } function shadowRoot$1(n2) { if (!n2 || !("shadowRoot" in n2)) return null; return getUntaintedAccessor$1("Element", n2, "shadowRoot"); } function querySelector$1(n2, selectors) { return getUntaintedAccessor$1("Element", n2, "querySelector")(selectors); } function querySelectorAll$1(n2, selectors) { return getUntaintedAccessor$1("Element", n2, "querySelectorAll")(selectors); } function mutationObserverCtor$1() { return getUntaintedPrototype$1("MutationObserver").constructor; } function patch$1(source, name, replacement) { try { if (!(name in source)) return function() {}; var original = source[name]; var wrapped = replacement(original); if (typeof wrapped === "function") { wrapped.prototype = wrapped.prototype || {}; Object.defineProperties(wrapped, { __rrweb_original__: { enumerable: false, value: original } }); } source[name] = wrapped; return function() { source[name] = original; }; } catch (e) { return function() {}; } } function isElement(n2) { return n2.nodeType === n2.ELEMENT_NODE; } function isShadowRoot(n2) { var hostEl = n2 && "host" in n2 && "mode" in n2 && index$1.host(n2) || null; return Boolean(hostEl && "shadowRoot" in hostEl && index$1.shadowRoot(hostEl) === n2); } function isNativeShadowDom(shadowRoot2) { return Object.prototype.toString.call(shadowRoot2) === "[object ShadowRoot]"; } function fixBrowserCompatibilityIssuesInCSS(cssText) { if (cssText.includes(" background-clip: text;") && !cssText.includes(" -webkit-background-clip: text;")) cssText = cssText.replace(/\sbackground-clip:\s*text;/g, " -webkit-background-clip: text; background-clip: text;"); return cssText; } function escapeImportStatement(rule2) { var cssText = rule2.cssText; if (cssText.split("\"").length < 3) return cssText; var statement = ["@import", "url(" + JSON.stringify(rule2.href) + ")"]; if (rule2.layerName === "") statement.push("layer"); else if (rule2.layerName) statement.push("layer(" + rule2.layerName + ")"); if (rule2.supportsText) statement.push("supports(" + rule2.supportsText + ")"); if (rule2.media.length) statement.push(rule2.media.mediaText); return statement.join(" ") + ";"; } function stringifyStylesheet(s2) { try { var rules2 = s2.rules || s2.cssRules; if (!rules2) return null; var sheetHref = s2.href; if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) sheetHref = s2.ownerNode.ownerDocument.location.href; return fixBrowserCompatibilityIssuesInCSS(Array.from(rules2, function(rule2) { return stringifyRule(rule2, sheetHref); }).join("")); } catch (error) { return null; } } function stringifyRule(rule2, sheetHref) { if (isCSSImportRule(rule2)) { var importStringified; try { importStringified = stringifyStylesheet(rule2.styleSheet) || escapeImportStatement(rule2); } catch (error) { importStringified = rule2.cssText; } if (rule2.styleSheet.href) return absolutifyURLs(importStringified, rule2.styleSheet.href); return importStringified; } else { var ruleStringified = rule2.cssText; if (isCSSStyleRule(rule2) && rule2.selectorText.includes(":")) ruleStringified = fixSafariColons(ruleStringified); if (sheetHref) return absolutifyURLs(ruleStringified, sheetHref); return ruleStringified; } } function fixSafariColons(cssStringified) { return cssStringified.replace(/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm, "$1\\$2"); } function isCSSImportRule(rule2) { return "styleSheet" in rule2; } function isCSSStyleRule(rule2) { return "selectorText" in rule2; } function createMirror$2() { return new Mirror(); } function maskInputValue(param) { var element = param.element; var maskInputOptions = param.maskInputOptions; var tagName = param.tagName; var type = param.type; var value = param.value; var maskInputFn = param.maskInputFn; var text = value || ""; var actualType = type && toLowerCase(type); if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) if (maskInputFn) text = maskInputFn(text, element); else text = "*".repeat(text.length); return text; } function toLowerCase(str) { return str.toLowerCase(); } function is2DCanvasBlank(canvas) { var ctx = canvas.getContext("2d"); if (!ctx) return true; var chunkSize = 50; for (var x2 = 0; x2 < canvas.width; x2 += chunkSize) for (var y = 0; y < canvas.height; y += chunkSize) { var getImageData = ctx.getImageData; var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData; if (new Uint32Array(originalGetImageData.call(ctx, x2, y, Math.min(chunkSize, canvas.width - x2), Math.min(chunkSize, canvas.height - y)).data.buffer).some(function(pixel) { return pixel !== 0; })) return false; } return true; } function getInputType(element) { var type = element.type; return element.hasAttribute("data-rr-is-password") ? "password" : type ? toLowerCase(type) : null; } function extractFileExtension(path, baseURL) { var url; try { url = new URL(path, baseURL != null ? baseURL : window.location.href); } catch (err) { return null; } var match = url.pathname.match(/\.([0-9a-z]+)(?:$)/i); var _ref; return (_ref = match == null ? void 0 : match[1]) != null ? _ref : null; } function extractOrigin(url) { var origin = ""; if (url.indexOf("//") > -1) origin = url.split("/").slice(0, 3).join("/"); else origin = url.split("/")[0]; origin = origin.split("?")[0]; return origin; } function absolutifyURLs(cssText, href) { return (cssText || "").replace(URL_IN_CSS_REF, function(origin, quote1, path1, quote2, path2, path3) { var filePath = path1 || path2 || path3; var maybeQuote = quote1 || quote2 || ""; if (!filePath) return origin; if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) return "url(" + maybeQuote + filePath + maybeQuote + ")"; if (DATA_URI.test(filePath)) return "url(" + maybeQuote + filePath + maybeQuote + ")"; if (filePath[0] === "/") return "url(" + maybeQuote + (extractOrigin(href) + filePath) + maybeQuote + ")"; var stack = href.split("/"); var parts = filePath.split("/"); stack.pop(); for (var _iterator = _create_for_of_iterator_helper_loose(parts), _step; !(_step = _iterator()).done;) { var part = _step.value; if (part === ".") continue; else if (part === "..") stack.pop(); else stack.push(part); } return "url(" + maybeQuote + stack.join("/") + maybeQuote + ")"; }); } function normalizeCssString(cssText, _testNoPxNorm) { if (_testNoPxNorm === void 0) _testNoPxNorm = false; if (_testNoPxNorm) return cssText.replace(/(\/\*[^*]*\*\/)|[\s;]/g, ""); else return cssText.replace(/(\/\*[^*]*\*\/)|[\s;]/g, "").replace(/0px/g, "0"); } function splitCssText(cssText, style, _testNoPxNorm) { if (_testNoPxNorm === void 0) _testNoPxNorm = false; var childNodes2 = Array.from(style.childNodes); var splits = []; var iterCount = 0; if (childNodes2.length > 1 && cssText && typeof cssText === "string") { var cssTextNorm = normalizeCssString(cssText, _testNoPxNorm); var normFactor = cssTextNorm.length / cssText.length; for (var i2 = 1; i2 < childNodes2.length; i2++) if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === "string") { var textContentNorm = normalizeCssString(childNodes2[i2].textContent, _testNoPxNorm); var jLimit = 100; var j = 3; for (; j < textContentNorm.length; j++) { if (textContentNorm[j].match(/[a-zA-Z0-9]/) || textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1) continue; break; } for (; j < textContentNorm.length; j++) { var startSubstring = textContentNorm.substring(0, j); var cssNormSplits = cssTextNorm.split(startSubstring); var splitNorm = -1; if (cssNormSplits.length === 2) splitNorm = cssNormSplits[0].length; else if (cssNormSplits.length > 2 && cssNormSplits[0] === "" && childNodes2[i2 - 1].textContent !== "") splitNorm = cssTextNorm.indexOf(startSubstring, 1); else if (cssNormSplits.length === 1) { startSubstring = startSubstring.substring(0, startSubstring.length - 1); cssNormSplits = cssTextNorm.split(startSubstring); if (cssNormSplits.length <= 1) { splits.push(cssText); return splits; } j = jLimit + 1; } else if (j === textContentNorm.length - 1) splitNorm = cssTextNorm.indexOf(startSubstring); if (cssNormSplits.length >= 2 && j > jLimit) { var prevTextContent = childNodes2[i2 - 1].textContent; if (prevTextContent && typeof prevTextContent === "string") { var prevMinLength = normalizeCssString(prevTextContent).length; splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength); } if (splitNorm === -1) splitNorm = cssNormSplits[0].length; } if (splitNorm !== -1) { var k = Math.floor(splitNorm / normFactor); for (; k > 0 && k < cssText.length;) { iterCount += 1; if (iterCount > 50 * childNodes2.length) { splits.push(cssText); return splits; } var normPart = normalizeCssString(cssText.substring(0, k), _testNoPxNorm); if (normPart.length === splitNorm) { splits.push(cssText.substring(0, k)); cssText = cssText.substring(k); cssTextNorm = cssTextNorm.substring(splitNorm); break; } else if (normPart.length < splitNorm) k += Math.max(1, Math.floor((splitNorm - normPart.length) / normFactor)); else k -= Math.max(1, Math.floor((normPart.length - splitNorm) * normFactor)); } break; } } } } splits.push(cssText); return splits; } function markCssSplits(cssText, style) { return splitCssText(cssText, style).join("/* rr_split */"); } function genId() { return _id++; } function getValidTagName$1(element) { if (_instanceof(element, HTMLFormElement)) return "form"; var processedTagName = toLowerCase(element.tagName); if (tagNameRegex.test(processedTagName)) return "div"; return processedTagName; } function getAbsoluteSrcsetString(doc, attributeValue) { if (attributeValue.trim() === "") return attributeValue; var pos = 0; function collectCharacters(regEx) { var chars2; var match = regEx.exec(attributeValue.substring(pos)); if (match) { chars2 = match[0]; pos += chars2.length; return chars2; } return ""; } var output = []; while (true) { collectCharacters(SRCSET_COMMAS_OR_SPACES); if (pos >= attributeValue.length) break; var url = collectCharacters(SRCSET_NOT_SPACES); if (url.slice(-1) === ",") { url = absoluteToDoc(doc, url.substring(0, url.length - 1)); output.push(url); } else { var descriptorsStr = ""; url = absoluteToDoc(doc, url); var inParens = false; while (true) { var c2 = attributeValue.charAt(pos); if (c2 === "") { output.push((url + descriptorsStr).trim()); break; } else if (!inParens) { if (c2 === ",") { pos += 1; output.push((url + descriptorsStr).trim()); break; } else if (c2 === "(") inParens = true; } else if (c2 === ")") inParens = false; descriptorsStr += c2; pos += 1; } } } return output.join(", "); } function absoluteToDoc(doc, attributeValue) { if (!attributeValue || attributeValue.trim() === "") return attributeValue; return getHref(doc, attributeValue); } function isSVGElement(el) { return Boolean(el.tagName === "svg" || el.ownerSVGElement); } function getHref(doc, customHref) { var a2 = cachedDocument.get(doc); if (!a2) { a2 = doc.createElement("a"); cachedDocument.set(doc, a2); } if (!customHref) customHref = ""; else if (customHref.startsWith("blob:") || customHref.startsWith("data:")) return customHref; a2.setAttribute("href", customHref); return a2.href; } function transformAttribute(doc, tagName, name, value) { if (!value) return value; if (name === "src" || name === "href" && !(tagName === "use" && value[0] === "#")) return absoluteToDoc(doc, value); else if (name === "xlink:href" && value[0] !== "#") return absoluteToDoc(doc, value); else if (name === "background" && (tagName === "table" || tagName === "td" || tagName === "th")) return absoluteToDoc(doc, value); else if (name === "srcset") return getAbsoluteSrcsetString(doc, value); else if (name === "style") return absolutifyURLs(value, getHref(doc)); else if (tagName === "object" && name === "data") return absoluteToDoc(doc, value); return value; } function ignoreAttribute(tagName, name, _value) { return (tagName === "video" || tagName === "audio") && name === "autoplay"; } function _isBlockedElement(element, blockClass, blockSelector) { try { if (typeof blockClass === "string") { if (element.classList.contains(blockClass)) return true; } else for (var eIndex = element.classList.length; eIndex--;) { var className = element.classList[eIndex]; if (blockClass.test(className)) return true; } if (blockSelector) return element.matches(blockSelector); } catch (e2) {} return false; } function classMatchesRegex(node2, regex, checkAncestors) { if (!node2) return false; if (node2.nodeType !== node2.ELEMENT_NODE) { if (!checkAncestors) return false; return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors); } for (var eIndex = node2.classList.length; eIndex--;) { var className = node2.classList[eIndex]; if (regex.test(className)) return true; } if (!checkAncestors) return false; return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors); } function needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) { var el; if (isElement(node2)) { el = node2; if (!index$1.childNodes(el).length) return false; } else if (index$1.parentElement(node2) === null) return false; else el = index$1.parentElement(node2); try { if (typeof maskTextClass === "string") { if (checkAncestors) { if (el.closest("." + maskTextClass)) return true; } else if (el.classList.contains(maskTextClass)) return true; } else if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true; if (maskTextSelector) { if (checkAncestors) { if (el.closest(maskTextSelector)) return true; } else if (el.matches(maskTextSelector)) return true; } } catch (e2) {} return false; } function onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) { var win = iframeEl.contentWindow; if (!win) return; var fired = false; var readyState; try { readyState = win.document.readyState; } catch (error) { return; } if (readyState !== "complete") { var timer = setTimeout(function() { if (!fired) { listener(); fired = true; } }, iframeLoadTimeout); iframeEl.addEventListener("load", function() { clearTimeout(timer); fired = true; listener(); }); return; } var blankUrl = "about:blank"; if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === "") { setTimeout(listener, 0); return iframeEl.addEventListener("load", listener); } iframeEl.addEventListener("load", listener); } function onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) { var fired = false; var styleSheetLoaded; try { styleSheetLoaded = link.sheet; } catch (error) { return; } if (styleSheetLoaded) return; var timer = setTimeout(function() { if (!fired) { listener(); fired = true; } }, styleSheetLoadTimeout); link.addEventListener("load", function() { clearTimeout(timer); fired = true; listener(); }); } function serializeNode(n2, options) { var doc = options.doc; var mirror2 = options.mirror; var blockClass = options.blockClass; var blockSelector = options.blockSelector; var needsMask = options.needsMask; var inlineStylesheet = options.inlineStylesheet; var _options_maskInputOptions = options.maskInputOptions; var maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions; var maskTextFn = options.maskTextFn; var maskInputFn = options.maskInputFn; var _options_dataURLOptions = options.dataURLOptions; var dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions; var inlineImages = options.inlineImages; var recordCanvas = options.recordCanvas; var keepIframeSrcFn = options.keepIframeSrcFn; var _options_newlyAddedElement = options.newlyAddedElement; var newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement; var _options_cssCaptured = options.cssCaptured; var cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured; var rootId = getRootId(doc, mirror2); switch (n2.nodeType) { case n2.DOCUMENT_NODE: if (n2.compatMode !== "CSS1Compat") return { type: NodeType$3.Document, childNodes: [], compatMode: n2.compatMode }; else return { type: NodeType$3.Document, childNodes: [] }; case n2.DOCUMENT_TYPE_NODE: return { type: NodeType$3.DocumentType, name: n2.name, publicId: n2.publicId, systemId: n2.systemId, rootId }; case n2.ELEMENT_NODE: return serializeElementNode(n2, { doc, blockClass, blockSelector, inlineStylesheet, maskInputOptions, maskInputFn, dataURLOptions, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement, rootId }); case n2.TEXT_NODE: return serializeTextNode(n2, { doc, needsMask, maskTextFn, rootId, cssCaptured }); case n2.CDATA_SECTION_NODE: return { type: NodeType$3.CDATA, textContent: "", rootId }; case n2.COMMENT_NODE: return { type: NodeType$3.Comment, textContent: index$1.textContent(n2) || "", rootId }; default: return false; } } function getRootId(doc, mirror2) { if (!mirror2.hasNode(doc)) return void 0; var docId = mirror2.getId(doc); return docId === 1 ? void 0 : docId; } function serializeTextNode(n2, options) { var needsMask = options.needsMask; var maskTextFn = options.maskTextFn; var rootId = options.rootId; var cssCaptured = options.cssCaptured; var parent = index$1.parentNode(n2); var parentTagName = parent && parent.tagName; var textContent2 = ""; var isStyle = parentTagName === "STYLE" ? true : void 0; var isScript = parentTagName === "SCRIPT" ? true : void 0; if (isScript) textContent2 = "SCRIPT_PLACEHOLDER"; else if (!cssCaptured) { textContent2 = index$1.textContent(n2); if (isStyle && textContent2) textContent2 = absolutifyURLs(textContent2, getHref(options.doc)); } if (!isStyle && !isScript && textContent2 && needsMask) textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\S]/g, "*"); return { type: NodeType$3.Text, textContent: textContent2 || "", rootId }; } function serializeElementNode(n2, options) { var doc = options.doc; var blockClass = options.blockClass; var blockSelector = options.blockSelector; var inlineStylesheet = options.inlineStylesheet; var _options_maskInputOptions = options.maskInputOptions; var maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions; var maskInputFn = options.maskInputFn; var _options_dataURLOptions = options.dataURLOptions; var dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions; var inlineImages = options.inlineImages; var recordCanvas = options.recordCanvas; var keepIframeSrcFn = options.keepIframeSrcFn; var _options_newlyAddedElement = options.newlyAddedElement; var newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement; var rootId = options.rootId; var needBlock = _isBlockedElement(n2, blockClass, blockSelector); var tagName = getValidTagName$1(n2); var attributes = {}; var len = n2.attributes.length; for (var i2 = 0; i2 < len; i2++) { var attr = n2.attributes[i2]; if (!ignoreAttribute(tagName, attr.name, attr.value)) attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value); } if (tagName === "link" && inlineStylesheet) { var stylesheet = Array.from(doc.styleSheets).find(function(s2) { return s2.href === n2.href; }); var cssText = null; if (stylesheet) cssText = stringifyStylesheet(stylesheet); if (cssText) { delete attributes.rel; delete attributes.href; attributes._cssText = cssText; } } if (tagName === "style" && n2.sheet) { var cssText1 = stringifyStylesheet(n2.sheet); if (cssText1) { if (n2.childNodes.length > 1) cssText1 = markCssSplits(cssText1, n2); attributes._cssText = cssText1; } } if (tagName === "input" || tagName === "textarea" || tagName === "select") { var value = n2.value; var checked = n2.checked; if (attributes.type !== "radio" && attributes.type !== "checkbox" && attributes.type !== "submit" && attributes.type !== "button" && value) attributes.value = maskInputValue({ element: n2, type: getInputType(n2), tagName, value, maskInputOptions, maskInputFn }); else if (checked) attributes.checked = checked; } if (tagName === "option") if (n2.selected && !maskInputOptions["select"]) attributes.selected = true; else delete attributes.selected; if (tagName === "dialog" && n2.open) attributes.rr_open_mode = n2.matches("dialog:modal") ? "modal" : "non-modal"; if (tagName === "canvas" && recordCanvas) { if (n2.__context === "2d") { if (!is2DCanvasBlank(n2)) attributes.rr_dataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality); } else if (!("__context" in n2)) { var canvasDataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality); var blankCanvas = doc.createElement("canvas"); blankCanvas.width = n2.width; blankCanvas.height = n2.height; if (canvasDataURL !== blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality)) attributes.rr_dataURL = canvasDataURL; } } if (tagName === "img" && inlineImages) { if (!canvasService) { canvasService = doc.createElement("canvas"); canvasCtx = canvasService.getContext("2d"); } var image = n2; var imageSrc = image.currentSrc || image.getAttribute("src") || ""; var priorCrossOrigin = image.crossOrigin; var recordInlineImage = function() { image.removeEventListener("load", recordInlineImage); try { canvasService.width = image.naturalWidth; canvasService.height = image.naturalHeight; canvasCtx.drawImage(image, 0, 0); attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality); } catch (err) { if (image.crossOrigin !== "anonymous") { image.crossOrigin = "anonymous"; if (image.complete && image.naturalWidth !== 0) recordInlineImage(); else image.addEventListener("load", recordInlineImage); return; } else console.warn("Cannot inline img src=" + imageSrc + "! Error: " + err); } if (image.crossOrigin === "anonymous") priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute("crossorigin"); }; if (image.complete && image.naturalWidth !== 0) recordInlineImage(); else image.addEventListener("load", recordInlineImage); } if (tagName === "audio" || tagName === "video") { var mediaAttributes = attributes; mediaAttributes.rr_mediaState = n2.paused ? "paused" : "played"; mediaAttributes.rr_mediaCurrentTime = n2.currentTime; mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate; mediaAttributes.rr_mediaMuted = n2.muted; mediaAttributes.rr_mediaLoop = n2.loop; mediaAttributes.rr_mediaVolume = n2.volume; } if (!newlyAddedElement) { if (n2.scrollLeft) attributes.rr_scrollLeft = n2.scrollLeft; if (n2.scrollTop) attributes.rr_scrollTop = n2.scrollTop; } if (needBlock) { var _n2_getBoundingClientRect = n2.getBoundingClientRect(); var width = _n2_getBoundingClientRect.width; var height = _n2_getBoundingClientRect.height; attributes = { class: attributes.class, rr_width: "" + width + "px", rr_height: "" + height + "px" }; } if (tagName === "iframe" && !keepIframeSrcFn(attributes.src)) { if (!n2.contentDocument) attributes.rr_src = attributes.src; delete attributes.src; } var isCustomElement; try { if (customElements.get(tagName)) isCustomElement = true; } catch (e2) {} return { type: NodeType$3.Element, tagName, attributes, childNodes: [], isSVG: isSVGElement(n2) || void 0, needBlock, rootId, isCustom: isCustomElement }; } function lowerIfExists(maybeAttr) { if (maybeAttr === void 0 || maybeAttr === null) return ""; else return maybeAttr.toLowerCase(); } function slimDOMExcluded(sn, slimDOMOptions) { if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) return true; else if (sn.type === NodeType$3.Element) { if (slimDOMOptions.script && (sn.tagName === "script" || sn.tagName === "link" && (sn.attributes.rel === "preload" && sn.attributes.as === "script" || sn.attributes.rel === "modulepreload") || sn.tagName === "link" && sn.attributes.rel === "prefetch" && typeof sn.attributes.href === "string" && extractFileExtension(sn.attributes.href) === "js")) return true; else if (slimDOMOptions.headFavicon && (sn.tagName === "link" && sn.attributes.rel === "shortcut icon" || sn.tagName === "meta" && (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) || lowerIfExists(sn.attributes.name) === "application-name" || lowerIfExists(sn.attributes.rel) === "icon" || lowerIfExists(sn.attributes.rel) === "apple-touch-icon" || lowerIfExists(sn.attributes.rel) === "shortcut icon"))) return true; else if (sn.tagName === "meta") { if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) return true; else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === "pinterest")) return true; else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === "robots" || lowerIfExists(sn.attributes.name) === "googlebot" || lowerIfExists(sn.attributes.name) === "bingbot")) return true; else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes["http-equiv"] !== void 0) return true; else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === "author" || lowerIfExists(sn.attributes.name) === "generator" || lowerIfExists(sn.attributes.name) === "framework" || lowerIfExists(sn.attributes.name) === "publisher" || lowerIfExists(sn.attributes.name) === "progid" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) return true; else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === "google-site-verification" || lowerIfExists(sn.attributes.name) === "yandex-verification" || lowerIfExists(sn.attributes.name) === "csrf-token" || lowerIfExists(sn.attributes.name) === "p:domain_verify" || lowerIfExists(sn.attributes.name) === "verify-v1" || lowerIfExists(sn.attributes.name) === "verification" || lowerIfExists(sn.attributes.name) === "shopify-checkout-api-token")) return true; } } return false; } function serializeNodeWithId(n2, options) { var doc = options.doc; var mirror2 = options.mirror; var blockClass = options.blockClass; var blockSelector = options.blockSelector; var maskTextClass = options.maskTextClass; var maskTextSelector = options.maskTextSelector; var _options_skipChild = options.skipChild; var skipChild = _options_skipChild === void 0 ? false : _options_skipChild; var _options_inlineStylesheet = options.inlineStylesheet; var inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet; var _options_maskInputOptions = options.maskInputOptions; var maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions; var maskTextFn = options.maskTextFn; var maskInputFn = options.maskInputFn; var slimDOMOptions = options.slimDOMOptions; var _options_dataURLOptions = options.dataURLOptions; var dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions; var _options_inlineImages = options.inlineImages; var inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages; var _options_recordCanvas = options.recordCanvas; var recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas; var onSerialize = options.onSerialize; var onIframeLoad = options.onIframeLoad; var _options_iframeLoadTimeout = options.iframeLoadTimeout; var iframeLoadTimeout = _options_iframeLoadTimeout === void 0 ? 5e3 : _options_iframeLoadTimeout; var onStylesheetLoad = options.onStylesheetLoad; var _options_stylesheetLoadTimeout = options.stylesheetLoadTimeout; var stylesheetLoadTimeout = _options_stylesheetLoadTimeout === void 0 ? 5e3 : _options_stylesheetLoadTimeout; var _options_keepIframeSrcFn = options.keepIframeSrcFn; var keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() { return false; } : _options_keepIframeSrcFn; var _options_newlyAddedElement = options.newlyAddedElement; var newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement; var _options_cssCaptured = options.cssCaptured; var cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured; var needsMask = options.needsMask; var _options_preserveWhiteSpace = options.preserveWhiteSpace; var preserveWhiteSpace = _options_preserveWhiteSpace === void 0 ? true : _options_preserveWhiteSpace; if (!needsMask) needsMask = needMaskingText(n2, maskTextClass, maskTextSelector, needsMask === void 0); var _serializedNode = serializeNode(n2, { doc, mirror: mirror2, blockClass, blockSelector, needsMask, inlineStylesheet, maskInputOptions, maskTextFn, maskInputFn, dataURLOptions, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement, cssCaptured }); if (!_serializedNode) { console.warn(n2, "not serialized"); return null; } var id; if (mirror2.hasNode(n2)) id = mirror2.getId(n2); else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\s+|\s+$/gm, "").length) id = IGNORED_NODE; else id = genId(); var serializedNode = Object.assign(_serializedNode, { id }); mirror2.add(n2, serializedNode); if (id === IGNORED_NODE) return null; if (onSerialize) onSerialize(n2); var recordChild = !skipChild; if (serializedNode.type === NodeType$3.Element) { recordChild = recordChild && !serializedNode.needBlock; delete serializedNode.needBlock; var shadowRootEl = index$1.shadowRoot(n2); if (shadowRootEl && isNativeShadowDom(shadowRootEl)) serializedNode.isShadowHost = true; } if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) { if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === "head") preserveWhiteSpace = false; var bypassOptions = { doc, mirror: mirror2, blockClass, blockSelector, needsMask, maskTextClass, maskTextSelector, skipChild, inlineStylesheet, maskInputOptions, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions, inlineImages, recordCanvas, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn, cssCaptured: false }; if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === "textarea" && serializedNode.attributes.value !== void 0); else { if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === "string") bypassOptions.cssCaptured = true; for (var _iterator = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(n2))), _step; !(_step = _iterator()).done;) { var childN = _step.value; var serializedChildNode = serializeNodeWithId(childN, bypassOptions); if (serializedChildNode) serializedNode.childNodes.push(serializedChildNode); } } var shadowRootEl1 = null; if (isElement(n2) && (shadowRootEl1 = index$1.shadowRoot(n2))) for (var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(shadowRootEl1))), _step1; !(_step1 = _iterator1()).done;) { var childN1 = _step1.value; var serializedChildNode1 = serializeNodeWithId(childN1, bypassOptions); if (serializedChildNode1) { isNativeShadowDom(shadowRootEl1) && (serializedChildNode1.isShadow = true); serializedNode.childNodes.push(serializedChildNode1); } } } var parent = index$1.parentNode(n2); if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) serializedNode.isShadow = true; if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === "iframe") onceIframeLoaded(n2, function() { var iframeDoc = n2.contentDocument; if (iframeDoc && onIframeLoad) { var serializedIframeNode = serializeNodeWithId(iframeDoc, { doc: iframeDoc, mirror: mirror2, blockClass, blockSelector, needsMask, maskTextClass, maskTextSelector, skipChild: false, inlineStylesheet, maskInputOptions, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions, inlineImages, recordCanvas, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn }); if (serializedIframeNode) onIframeLoad(n2, serializedIframeNode); } }, iframeLoadTimeout); if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === "link" && typeof serializedNode.attributes.rel === "string" && (serializedNode.attributes.rel === "stylesheet" || serializedNode.attributes.rel === "preload" && typeof serializedNode.attributes.href === "string" && extractFileExtension(serializedNode.attributes.href) === "css")) onceStylesheetLoaded(n2, function() { if (onStylesheetLoad) { var serializedLinkNode = serializeNodeWithId(n2, { doc, mirror: mirror2, blockClass, blockSelector, needsMask, maskTextClass, maskTextSelector, skipChild: false, inlineStylesheet, maskInputOptions, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions, inlineImages, recordCanvas, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn }); if (serializedLinkNode) onStylesheetLoad(n2, serializedLinkNode); } }, stylesheetLoadTimeout); return serializedNode; } function snapshot(n2, options) { var _ref = options || {}; var tmp = _ref.mirror; var mirror2 = tmp === void 0 ? new Mirror() : tmp; var _ref_blockClass = _ref.blockClass; var blockClass = _ref_blockClass === void 0 ? "rr-block" : _ref_blockClass; var _ref_blockSelector = _ref.blockSelector; var blockSelector = _ref_blockSelector === void 0 ? null : _ref_blockSelector; var _ref_maskTextClass = _ref.maskTextClass; var maskTextClass = _ref_maskTextClass === void 0 ? "rr-mask" : _ref_maskTextClass; var _ref_maskTextSelector = _ref.maskTextSelector; var maskTextSelector = _ref_maskTextSelector === void 0 ? null : _ref_maskTextSelector; var _ref_inlineStylesheet = _ref.inlineStylesheet; var inlineStylesheet = _ref_inlineStylesheet === void 0 ? true : _ref_inlineStylesheet; var _ref_inlineImages = _ref.inlineImages; var inlineImages = _ref_inlineImages === void 0 ? false : _ref_inlineImages; var _ref_recordCanvas = _ref.recordCanvas; var recordCanvas = _ref_recordCanvas === void 0 ? false : _ref_recordCanvas; var _ref_maskAllInputs = _ref.maskAllInputs; var maskAllInputs = _ref_maskAllInputs === void 0 ? false : _ref_maskAllInputs; var maskTextFn = _ref.maskTextFn; var maskInputFn = _ref.maskInputFn; var _ref_slimDOM = _ref.slimDOM; var slimDOM = _ref_slimDOM === void 0 ? false : _ref_slimDOM; var dataURLOptions = _ref.dataURLOptions; var preserveWhiteSpace = _ref.preserveWhiteSpace; var onSerialize = _ref.onSerialize; var onIframeLoad = _ref.onIframeLoad; var iframeLoadTimeout = _ref.iframeLoadTimeout; var onStylesheetLoad = _ref.onStylesheetLoad; var stylesheetLoadTimeout = _ref.stylesheetLoadTimeout; var _ref_keepIframeSrcFn = _ref.keepIframeSrcFn; return serializeNodeWithId(n2, { doc: n2, mirror: mirror2, blockClass, blockSelector, maskTextClass, maskTextSelector, skipChild: false, inlineStylesheet, maskInputOptions: maskAllInputs === true ? { color: true, date: true, "datetime-local": true, email: true, month: true, number: true, range: true, search: true, tel: true, text: true, time: true, url: true, week: true, textarea: true, select: true, password: true, hidden: true } : maskAllInputs === false ? { password: true } : maskAllInputs, maskTextFn, maskInputFn, slimDOMOptions: slimDOM === true || slimDOM === "all" ? { script: true, comment: true, headFavicon: true, headWhitespace: true, headMetaDescKeywords: slimDOM === "all", headMetaSocial: true, headMetaRobots: true, headMetaHttpEquiv: true, headMetaAuthorship: true, headMetaVerification: true } : slimDOM === false ? {} : slimDOM, dataURLOptions, inlineImages, recordCanvas, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn: _ref_keepIframeSrcFn === void 0 ? function() { return false; } : _ref_keepIframeSrcFn, newlyAddedElement: false }); } function getDefaultExportFromCjs$1(x2) { return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2; } function getAugmentedNamespace$1(n2) { if (n2.__esModule) return n2; var f2 = n2.default; if (typeof f2 == "function") { var a2 = function a22() { if (_instanceof(this, a22)) return Reflect.construct(f2, arguments, this.constructor); return f2.apply(this, arguments); }; a2.prototype = f2.prototype; } else a2 = {}; Object.defineProperty(a2, "__esModule", { value: true }); Object.keys(n2).forEach(function(k) { var d = Object.getOwnPropertyDescriptor(n2, k); Object.defineProperty(a2, k, d.get ? d : { enumerable: true, get: function get() { return n2[k]; } }); }); return a2; } function capitalize$1(str) { return str[0].toUpperCase() + str.slice(1); } function stringify$4$1(node2, builder) { new Stringifier$1$1(builder).stringify(node2); } function cloneNode$1(obj, parent) { var cloned = new obj.constructor(); for (var i2 in obj) { if (!Object.prototype.hasOwnProperty.call(obj, i2)) continue; if (i2 === "proxyCache") continue; var value = obj[i2]; var type = typeof value === "undefined" ? "undefined" : _type_of(value); if (i2 === "parent" && type === "object") { if (parent) cloned[i2] = parent; } else if (i2 === "source") cloned[i2] = value; else if (Array.isArray(value)) cloned[i2] = value.map(function(j) { return cloneNode$1(j, cloned); }); else { if (type === "object" && value !== null) value = cloneNode$1(value); cloned[i2] = value; } } return cloned; } function fromBase64$1(str) { if (Buffer) return Buffer.from(str, "base64").toString(); else return window.atob(str); } function cleanSource$1(nodes) { return nodes.map(function(i2) { if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes); delete i2.source; return i2; }); } function markDirtyUp$1(node2) { node2[isClean$1$1] = false; if (node2.proxyOf.nodes) for (var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;) { var i2 = _step.value; markDirtyUp$1(i2); } } function findLastWithPosition$1(tokens) { for (var i2 = tokens.length - 1; i2 >= 0; i2--) { var token = tokens[i2]; var pos = token[3] || token[2]; if (pos) return pos; } } function parse$3$1(css, opts) { var parser2 = new Parser2$1(new Input$2$1(css, opts)); try { parser2.parse(); } catch (e2) { if (e2.name === "CssSyntaxError" && opts && opts.from) { if (/\.scss$/i.test(opts.from)) e2.message += "\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser"; else if (/\.sass/i.test(opts.from)) e2.message += "\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser"; else if (/\.less$/i.test(opts.from)) e2.message += "\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser"; } throw e2; } return parser2.root; } function isPromise$1(obj) { return (typeof obj === "undefined" ? "undefined" : _type_of(obj)) === "object" && typeof obj.then === "function"; } function getEvents$1(node2) { var key = false; var type = TYPE_TO_CLASS_NAME$1[node2.type]; if (node2.type === "decl") key = node2.prop.toLowerCase(); else if (node2.type === "atrule") key = node2.name.toLowerCase(); if (key && node2.append) return [ type, type + "-" + key, CHILDREN$1, type + "Exit", type + "Exit-" + key ]; else if (key) return [ type, type + "-" + key, type + "Exit", type + "Exit-" + key ]; else if (node2.append) return [ type, CHILDREN$1, type + "Exit" ]; else return [type, type + "Exit"]; } function toStack$1(node2) { var events; if (node2.type === "document") events = [ "Document", CHILDREN$1, "DocumentExit" ]; else if (node2.type === "root") events = [ "Root", CHILDREN$1, "RootExit" ]; else events = getEvents$1(node2); return { eventIndex: 0, events, iterator: 0, node: node2, visitorIndex: 0, visitors: [] }; } function cleanMarks$1(node2) { node2[isClean$3] = false; if (node2.nodes) node2.nodes.forEach(function(i2) { return cleanMarks$1(i2); }); return node2; } function fromJSON$1$1(json, inputs) { if (Array.isArray(json)) return json.map(function(n2) { return fromJSON$1$1(n2); }); var ownInputs = json.inputs; var defaults = _object_without_properties_loose(json, ["inputs"]); if (ownInputs) { inputs = []; for (var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;) { var input2 = _step.value; var inputHydrated = _extends({}, input2, { __proto__: Input$1$1.prototype }); if (inputHydrated.map) inputHydrated.map = _extends({}, inputHydrated.map, { __proto__: PreviousMap2$1.prototype }); inputs.push(inputHydrated); } } if (defaults.nodes) defaults.nodes = json.nodes.map(function(n2) { return fromJSON$1$1(n2, inputs); }); if (defaults.source) { var _defaults_source = defaults.source; var inputId = _defaults_source.inputId; defaults.source = _object_without_properties_loose(_defaults_source, ["inputId"]); if (inputId != null) defaults.source.input = inputs[inputId]; } if (defaults.type === "root") return new Root$1$1(defaults); else if (defaults.type === "decl") return new Declaration$1$1(defaults); else if (defaults.type === "rule") return new Rule$1$1(defaults); else if (defaults.type === "comment") return new Comment$1$1(defaults); else if (defaults.type === "atrule") return new AtRule$1$1(defaults); else throw new Error("Unknown node type: " + json.type); } function postcss$3() { for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) plugins[_key] = arguments[_key]; if (plugins.length === 1 && Array.isArray(plugins[0])) plugins = plugins[0]; return new Processor2$1(plugins); } function getDefaultExportFromCjs(x2) { return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2; } function getAugmentedNamespace(n2) { if (n2.__esModule) return n2; var f2 = n2.default; if (typeof f2 == "function") { var a2 = function a22() { if (_instanceof(this, a22)) return Reflect.construct(f2, arguments, this.constructor); return f2.apply(this, arguments); }; a2.prototype = f2.prototype; } else a2 = {}; Object.defineProperty(a2, "__esModule", { value: true }); Object.keys(n2).forEach(function(k) { var d = Object.getOwnPropertyDescriptor(n2, k); Object.defineProperty(a2, k, d.get ? d : { enumerable: true, get: function get() { return n2[k]; } }); }); return a2; } function capitalize(str) { return str[0].toUpperCase() + str.slice(1); } function stringify$4(node2, builder) { new Stringifier$1(builder).stringify(node2); } function cloneNode(obj, parent) { var cloned = new obj.constructor(); for (var i2 in obj) { if (!Object.prototype.hasOwnProperty.call(obj, i2)) continue; if (i2 === "proxyCache") continue; var value = obj[i2]; var type = typeof value === "undefined" ? "undefined" : _type_of(value); if (i2 === "parent" && type === "object") { if (parent) cloned[i2] = parent; } else if (i2 === "source") cloned[i2] = value; else if (Array.isArray(value)) cloned[i2] = value.map(function(j) { return cloneNode(j, cloned); }); else { if (type === "object" && value !== null) value = cloneNode(value); cloned[i2] = value; } } return cloned; } function fromBase64(str) { if (Buffer) return Buffer.from(str, "base64").toString(); else return window.atob(str); } function cleanSource(nodes) { return nodes.map(function(i2) { if (i2.nodes) i2.nodes = cleanSource(i2.nodes); delete i2.source; return i2; }); } function markDirtyUp(node2) { node2[isClean$1] = false; if (node2.proxyOf.nodes) for (var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;) { var i2 = _step.value; markDirtyUp(i2); } } function findLastWithPosition(tokens) { for (var i2 = tokens.length - 1; i2 >= 0; i2--) { var token = tokens[i2]; var pos = token[3] || token[2]; if (pos) return pos; } } function parse$3(css, opts) { var parser2 = new Parser22(new Input$2(css, opts)); try { parser2.parse(); } catch (e2) { if (e2.name === "CssSyntaxError" && opts && opts.from) { if (/\.scss$/i.test(opts.from)) e2.message += "\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser"; else if (/\.sass/i.test(opts.from)) e2.message += "\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser"; else if (/\.less$/i.test(opts.from)) e2.message += "\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser"; } throw e2; } return parser2.root; } function isPromise(obj) { return (typeof obj === "undefined" ? "undefined" : _type_of(obj)) === "object" && typeof obj.then === "function"; } function getEvents(node2) { var key = false; var type = TYPE_TO_CLASS_NAME[node2.type]; if (node2.type === "decl") key = node2.prop.toLowerCase(); else if (node2.type === "atrule") key = node2.name.toLowerCase(); if (key && node2.append) return [ type, type + "-" + key, CHILDREN, type + "Exit", type + "Exit-" + key ]; else if (key) return [ type, type + "-" + key, type + "Exit", type + "Exit-" + key ]; else if (node2.append) return [ type, CHILDREN, type + "Exit" ]; else return [type, type + "Exit"]; } function toStack(node2) { var events; if (node2.type === "document") events = [ "Document", CHILDREN, "DocumentExit" ]; else if (node2.type === "root") events = [ "Root", CHILDREN, "RootExit" ]; else events = getEvents(node2); return { eventIndex: 0, events, iterator: 0, node: node2, visitorIndex: 0, visitors: [] }; } function cleanMarks(node2) { node2[isClean] = false; if (node2.nodes) node2.nodes.forEach(function(i2) { return cleanMarks(i2); }); return node2; } function fromJSON$1(json, inputs) { if (Array.isArray(json)) return json.map(function(n2) { return fromJSON$1(n2); }); var ownInputs = json.inputs; var defaults = _object_without_properties_loose(json, ["inputs"]); if (ownInputs) { inputs = []; for (var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;) { var input2 = _step.value; var inputHydrated = _extends({}, input2, { __proto__: Input$1.prototype }); if (inputHydrated.map) inputHydrated.map = _extends({}, inputHydrated.map, { __proto__: PreviousMap22.prototype }); inputs.push(inputHydrated); } } if (defaults.nodes) defaults.nodes = json.nodes.map(function(n2) { return fromJSON$1(n2, inputs); }); if (defaults.source) { var _defaults_source = defaults.source; var inputId = _defaults_source.inputId; defaults.source = _object_without_properties_loose(_defaults_source, ["inputId"]); if (inputId != null) defaults.source.input = inputs[inputId]; } if (defaults.type === "root") return new Root$1(defaults); else if (defaults.type === "decl") return new Declaration$1(defaults); else if (defaults.type === "rule") return new Rule$1(defaults); else if (defaults.type === "comment") return new Comment$1(defaults); else if (defaults.type === "atrule") return new AtRule$1(defaults); else throw new Error("Unknown node type: " + json.type); } function postcss() { for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) plugins[_key] = arguments[_key]; if (plugins.length === 1 && Array.isArray(plugins[0])) plugins = plugins[0]; return new Processor22(plugins); } function getUntaintedPrototype(key) { if (untaintedBasePrototype[key]) return untaintedBasePrototype[key]; var defaultObj = globalThis[key]; var defaultPrototype = defaultObj.prototype; var accessorNames = key in testableAccessors ? testableAccessors[key] : void 0; var isUntaintedAccessors = Boolean(accessorNames && accessorNames.every(function(accessor) { var _a2; var _b; return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes("[native code]")); })); var methodNames = key in testableMethods ? testableMethods[key] : void 0; var isUntaintedMethods = Boolean(methodNames && methodNames.every(function(method) { var _a2; return typeof defaultPrototype[method] === "function" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes("[native code]")); })); if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) { untaintedBasePrototype[key] = defaultObj.prototype; return defaultObj.prototype; } try { var iframeEl = document.createElement("iframe"); document.body.appendChild(iframeEl); var win = iframeEl.contentWindow; if (!win) return defaultObj.prototype; var untaintedObject = win[key].prototype; document.body.removeChild(iframeEl); if (!untaintedObject) return defaultPrototype; return untaintedBasePrototype[key] = untaintedObject; } catch (e) { return defaultPrototype; } } function getUntaintedAccessor(key, instance, accessor) { var _a2; var cacheKey = key + "." + String(accessor); if (untaintedAccessorCache[cacheKey]) return untaintedAccessorCache[cacheKey].call(instance); var untaintedPrototype = getUntaintedPrototype(key); var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get; if (!untaintedAccessor) return instance[accessor]; untaintedAccessorCache[cacheKey] = untaintedAccessor; return untaintedAccessor.call(instance); } function getUntaintedMethod(key, instance, method) { var cacheKey = key + "." + String(method); if (untaintedMethodCache[cacheKey]) return untaintedMethodCache[cacheKey].bind(instance); var untaintedMethod = getUntaintedPrototype(key)[method]; if (typeof untaintedMethod !== "function") return instance[method]; untaintedMethodCache[cacheKey] = untaintedMethod; return untaintedMethod.bind(instance); } function childNodes(n2) { return getUntaintedAccessor("Node", n2, "childNodes"); } function parentNode(n2) { return getUntaintedAccessor("Node", n2, "parentNode"); } function parentElement(n2) { return getUntaintedAccessor("Node", n2, "parentElement"); } function textContent(n2) { return getUntaintedAccessor("Node", n2, "textContent"); } function contains(n2, other) { return getUntaintedMethod("Node", n2, "contains")(other); } function getRootNode(n2) { return getUntaintedMethod("Node", n2, "getRootNode")(); } function host(n2) { if (!n2 || !("host" in n2)) return null; return getUntaintedAccessor("ShadowRoot", n2, "host"); } function styleSheets(n2) { return n2.styleSheets; } function shadowRoot(n2) { if (!n2 || !("shadowRoot" in n2)) return null; return getUntaintedAccessor("Element", n2, "shadowRoot"); } function querySelector(n2, selectors) { return getUntaintedAccessor("Element", n2, "querySelector")(selectors); } function querySelectorAll(n2, selectors) { return getUntaintedAccessor("Element", n2, "querySelectorAll")(selectors); } function mutationObserverCtor() { return getUntaintedPrototype("MutationObserver").constructor; } function patch(source, name, replacement) { try { if (!(name in source)) return function() {}; var original = source[name]; var wrapped = replacement(original); if (typeof wrapped === "function") { wrapped.prototype = wrapped.prototype || {}; Object.defineProperties(wrapped, { __rrweb_original__: { enumerable: false, value: original } }); } source[name] = wrapped; return function() { source[name] = original; }; } catch (e) { return function() {}; } } function on(type, fn, target) { if (target === void 0) target = document; var options = { capture: true, passive: true }; target.addEventListener(type, fn, options); return function() { return target.removeEventListener(type, fn, options); }; } function throttle(func, wait, options) { if (options === void 0) options = {}; var timeout = null; var previous = 0; return function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; var now = Date.now(); if (!previous && options.leading === false) previous = now; var remaining = wait - (now - previous); var context = this; if (remaining <= 0 || remaining > wait) { if (timeout) { clearTimeout(timeout); timeout = null; } previous = now; func.apply(context, args); } else if (!timeout && options.trailing !== false) timeout = setTimeout(function() { previous = options.leading === false ? 0 : Date.now(); timeout = null; func.apply(context, args); }, remaining); }; } function hookSetter(target, key, d, isRevoked, win) { if (win === void 0) win = window; var original = win.Object.getOwnPropertyDescriptor(target, key); win.Object.defineProperty(target, key, isRevoked ? d : { set: function set(value) { var _this = this; setTimeout(function() { d.set.call(_this, value); }, 0); if (original && original.set) original.set.call(this, value); } }); return function() { return hookSetter(target, key, original || {}, true); }; } function getWindowScroll(win) { var _a2; var _b; var _c; var _d; var doc = win.document; return { left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0, top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0 }; } function getWindowHeight() { return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight; } function getWindowWidth() { return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth; } function closestElementOfNode(node2) { if (!node2) return null; return node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2); } function isBlocked(node2, blockClass, blockSelector, checkAncestors) { if (!node2) return false; var el = closestElementOfNode(node2); if (!el) return false; try { if (typeof blockClass === "string") { if (el.classList.contains(blockClass)) return true; if (checkAncestors && el.closest("." + blockClass) !== null) return true; } else if (classMatchesRegex(el, blockClass, checkAncestors)) return true; } catch (e2) {} if (blockSelector) { if (el.matches(blockSelector)) return true; if (checkAncestors && el.closest(blockSelector) !== null) return true; } return false; } function isSerialized(n2, mirror2) { return mirror2.getId(n2) !== -1; } function isIgnored(n2, mirror2, slimDOMOptions) { if (n2.tagName === "TITLE" && slimDOMOptions.headTitleMutations) return true; return mirror2.getId(n2) === IGNORED_NODE; } function isAncestorRemoved(target, mirror2) { if (isShadowRoot(target)) return false; var id = mirror2.getId(target); if (!mirror2.has(id)) return true; var parent = index.parentNode(target); if (parent && parent.nodeType === target.DOCUMENT_NODE) return false; if (!parent) return true; return isAncestorRemoved(parent, mirror2); } function legacy_isTouchEvent(event) { return Boolean(event.changedTouches); } function polyfill$1(win) { if (win === void 0) win = window; if ("NodeList" in win && !win.NodeList.prototype.forEach) win.NodeList.prototype.forEach = Array.prototype.forEach; if ("DOMTokenList" in win && !win.DOMTokenList.prototype.forEach) win.DOMTokenList.prototype.forEach = Array.prototype.forEach; } function isSerializedIframe(n2, mirror2) { return Boolean(n2.nodeName === "IFRAME" && mirror2.getMeta(n2)); } function isSerializedStylesheet(n2, mirror2) { return Boolean(n2.nodeName === "LINK" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute("rel") === "stylesheet" && mirror2.getMeta(n2)); } function hasShadowRoot(n2) { if (!n2) return false; if (_instanceof(n2, BaseRRNode) && "shadowRoot" in n2) return Boolean(n2.shadowRoot); return Boolean(index.shadowRoot(n2)); } function getShadowHost(n2) { var _a2; var shadowHost = null; if ("getRootNode" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2))) shadowHost = index.host(index.getRootNode(n2)); return shadowHost; } function getRootShadowHost(n2) { var rootShadowHost = n2; var shadowHost; while (shadowHost = getShadowHost(rootShadowHost)) rootShadowHost = shadowHost; return rootShadowHost; } function shadowHostInDom(n2) { var doc = n2.ownerDocument; if (!doc) return false; var shadowHost = getRootShadowHost(n2); return index.contains(doc, shadowHost); } function inDom(n2) { var doc = n2.ownerDocument; if (!doc) return false; return index.contains(doc, n2) || shadowHostInDom(n2); } function isNodeInLinkedList(n2) { return "__ln" in n2; } function deepDelete(addsSet, n2) { addsSet.delete(n2); index.childNodes(n2).forEach(function(childN) { return deepDelete(addsSet, childN); }); } function processRemoves(n2, cache) { var queue = [n2]; while (queue.length) { var next = queue.pop(); if (cache.has(next)) continue; cache.add(next); index.childNodes(next).forEach(function(n22) { return queue.push(n22); }); } } function isParentRemoved(removes, n2, mirror2) { if (removes.size === 0) return false; return _isParentRemoved(removes, n2); } function _isParentRemoved(removes, n2, _mirror2) { var node2 = index.parentNode(n2); if (!node2) return false; return removes.has(node2); } function isAncestorInSet(set, n2) { if (set.size === 0) return false; return _isAncestorInSet(set, n2); } function _isAncestorInSet(set, n2) { var parent = index.parentNode(n2); if (!parent) return false; if (set.has(parent)) return true; return _isAncestorInSet(set, parent); } function registerErrorHandler(handler) { errorHandler = handler; } function unregisterErrorHandler() { errorHandler = void 0; } function getEventTarget(event) { try { if ("composedPath" in event) { var path = event.composedPath(); if (path.length) return path[0]; } else if ("path" in event && event.path.length) return event.path[0]; } catch (e) {} return event && event.target; } function initMutationObserver(options, rootEl) { var mutationBuffer = new MutationBuffer(); mutationBuffers.push(mutationBuffer); mutationBuffer.init(options); var observer = new (mutationObserverCtor())(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))); observer.observe(rootEl, { attributes: true, attributeOldValue: true, characterData: true, characterDataOldValue: true, childList: true, subtree: true }); return observer; } function initMoveObserver(param) { var mousemoveCb = param.mousemoveCb; var sampling = param.sampling; var doc = param.doc; var mirror2 = param.mirror; if (sampling.mousemove === false) return function() {}; var threshold = typeof sampling.mousemove === "number" ? sampling.mousemove : 50; var callbackThreshold = typeof sampling.mousemoveCallback === "number" ? sampling.mousemoveCallback : 500; var positions = []; var timeBaseline; var wrappedCb = throttle(callbackWrapper(function(source) { var totalOffset = Date.now() - timeBaseline; mousemoveCb(positions.map(function(p) { p.timeOffset -= totalOffset; return p; }), source); positions = []; timeBaseline = null; }), callbackThreshold); var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) { var target = getEventTarget(evt); var _ref = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt; var clientX = _ref.clientX; var clientY = _ref.clientY; if (!timeBaseline) timeBaseline = nowTimestamp(); positions.push({ x: clientX, y: clientY, id: mirror2.getId(target), timeOffset: nowTimestamp() - timeBaseline }); wrappedCb(typeof DragEvent !== "undefined" && _instanceof(evt, DragEvent) ? IncrementalSource.Drag : _instanceof(evt, MouseEvent) ? IncrementalSource.MouseMove : IncrementalSource.TouchMove); }), threshold, { trailing: false })); var handlers = [ on("mousemove", updatePosition, doc), on("touchmove", updatePosition, doc), on("drag", updatePosition, doc) ]; return callbackWrapper(function() { handlers.forEach(function(h) { return h(); }); }); } function initMouseInteractionObserver(param) { var mouseInteractionCb = param.mouseInteractionCb; var doc = param.doc; var mirror2 = param.mirror; var blockClass = param.blockClass; var blockSelector = param.blockSelector; var sampling = param.sampling; if (sampling.mouseInteraction === false) return function() {}; var disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction; var handlers = []; var currentPointerType = null; var getHandler = function(eventKey) { return function(event) { var target = getEventTarget(event); if (isBlocked(target, blockClass, blockSelector, true)) return; var pointerType = null; var thisEventKey = eventKey; if ("pointerType" in event) { switch (event.pointerType) { case "mouse": pointerType = PointerTypes.Mouse; break; case "touch": pointerType = PointerTypes.Touch; break; case "pen": pointerType = PointerTypes.Pen; break; } if (pointerType === PointerTypes.Touch) { if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) thisEventKey = "TouchStart"; else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) thisEventKey = "TouchEnd"; } else if (pointerType === PointerTypes.Pen); } else if (legacy_isTouchEvent(event)) pointerType = PointerTypes.Touch; if (pointerType !== null) { currentPointerType = pointerType; if (thisEventKey.startsWith("Touch") && pointerType === PointerTypes.Touch || thisEventKey.startsWith("Mouse") && pointerType === PointerTypes.Mouse) pointerType = null; } else if (MouseInteractions[eventKey] === MouseInteractions.Click) { pointerType = currentPointerType; currentPointerType = null; } var e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event; if (!e2) return; var id = mirror2.getId(target); var clientX = e2.clientX; var clientY = e2.clientY; callbackWrapper(mouseInteractionCb)(_extends({ type: MouseInteractions[thisEventKey], id, x: clientX, y: clientY }, pointerType !== null && { pointerType })); }; }; Object.keys(MouseInteractions).filter(function(key) { return Number.isNaN(Number(key)) && !key.endsWith("_Departed") && disableMap[key] !== false; }).forEach(function(eventKey) { var eventName = toLowerCase(eventKey); var handler = getHandler(eventKey); if (window.PointerEvent) switch (MouseInteractions[eventKey]) { case MouseInteractions.MouseDown: case MouseInteractions.MouseUp: eventName = eventName.replace("mouse", "pointer"); break; case MouseInteractions.TouchStart: case MouseInteractions.TouchEnd: return; } handlers.push(on(eventName, handler, doc)); }); return callbackWrapper(function() { handlers.forEach(function(h) { return h(); }); }); } function initScrollObserver(param) { var scrollCb = param.scrollCb; var doc = param.doc; var mirror2 = param.mirror; var blockClass = param.blockClass; var blockSelector = param.blockSelector; var sampling = param.sampling; return on("scroll", callbackWrapper(throttle(callbackWrapper(function(evt) { var target = getEventTarget(evt); if (!target || isBlocked(target, blockClass, blockSelector, true)) return; var id = mirror2.getId(target); if (target === doc && doc.defaultView) { var scrollLeftTop = getWindowScroll(doc.defaultView); scrollCb({ id, x: scrollLeftTop.left, y: scrollLeftTop.top }); } else scrollCb({ id, x: target.scrollLeft, y: target.scrollTop }); }), sampling.scroll || 100)), doc); } function initViewportResizeObserver(param, param1) { var viewportResizeCb = param.viewportResizeCb; var win = param1.win; var lastH = -1; var lastW = -1; return on("resize", callbackWrapper(throttle(callbackWrapper(function() { var height = getWindowHeight(); var width = getWindowWidth(); if (lastH !== height || lastW !== width) { viewportResizeCb({ width: Number(width), height: Number(height) }); lastH = height; lastW = width; } }), 200)), win); } function initInputObserver(param) { var inputCb = param.inputCb; var doc = param.doc; var mirror2 = param.mirror; var blockClass = param.blockClass; var blockSelector = param.blockSelector; var ignoreClass = param.ignoreClass; var ignoreSelector = param.ignoreSelector; var maskInputOptions = param.maskInputOptions; var maskInputFn = param.maskInputFn; var sampling = param.sampling; var userTriggeredOnInput = param.userTriggeredOnInput; function eventHandler(event) { var target = getEventTarget(event); var userTriggered = event.isTrusted; var tagName = target && target.tagName; if (target && tagName === "OPTION") target = index.parentElement(target); if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) return; if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) return; var text = target.value; var isChecked = false; var type = getInputType(target) || ""; if (type === "radio" || type === "checkbox") isChecked = target.checked; else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) text = maskInputValue({ element: target, maskInputOptions, tagName, type, value: text, maskInputFn }); cbWithDedup(target, userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }); var name = target.name; if (type === "radio" && name && isChecked) doc.querySelectorAll("input[type=\"radio\"][name=\"" + name + "\"]").forEach(function(el) { if (el !== target) { var text2 = el.value; cbWithDedup(el, userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }); } }); } function cbWithDedup(target, v2) { var lastInputValue = lastInputValueMap.get(target); if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) { lastInputValueMap.set(target, v2); var id = mirror2.getId(target); callbackWrapper(inputCb)(_extends({}, v2, { id })); } } var handlers = (sampling.input === "last" ? ["change"] : ["input", "change"]).map(function(eventName) { return on(eventName, callbackWrapper(eventHandler), doc); }); var currentWindow = doc.defaultView; if (!currentWindow) return function() { handlers.forEach(function(h) { return h(); }); }; var propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, "value"); var hookProperties = [ [currentWindow.HTMLInputElement.prototype, "value"], [currentWindow.HTMLInputElement.prototype, "checked"], [currentWindow.HTMLSelectElement.prototype, "value"], [currentWindow.HTMLTextAreaElement.prototype, "value"], [currentWindow.HTMLSelectElement.prototype, "selectedIndex"], [currentWindow.HTMLOptionElement.prototype, "selected"] ]; if (propertyDescriptor && propertyDescriptor.set) { var _handlers; (_handlers = handlers).push.apply(_handlers, [].concat(hookProperties.map(function(p) { return hookSetter(p[0], p[1], { set: function set() { callbackWrapper(eventHandler)({ target: this, isTrusted: false }); } }, false, currentWindow); }))); } return callbackWrapper(function() { handlers.forEach(function(h) { return h(); }); }); } function getNestedCSSRulePositions(rule2) { var positions = []; function recurse(childRule, pos) { if (hasNestedCSSRule("CSSGroupingRule") && _instanceof(childRule.parentRule, CSSGroupingRule) || hasNestedCSSRule("CSSMediaRule") && _instanceof(childRule.parentRule, CSSMediaRule) || hasNestedCSSRule("CSSSupportsRule") && _instanceof(childRule.parentRule, CSSSupportsRule) || hasNestedCSSRule("CSSConditionRule") && _instanceof(childRule.parentRule, CSSConditionRule)) { var index2 = Array.from(childRule.parentRule.cssRules).indexOf(childRule); pos.unshift(index2); } else if (childRule.parentStyleSheet) { var index21 = Array.from(childRule.parentStyleSheet.cssRules).indexOf(childRule); pos.unshift(index21); } return pos; } return recurse(rule2, positions); } function getIdAndStyleId(sheet, mirror2, styleMirror) { var id; var styleId; if (!sheet) return {}; if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode); else styleId = styleMirror.getId(sheet); return { styleId, id }; } function initStyleSheetObserver(param, param1) { var styleSheetRuleCb = param.styleSheetRuleCb; var mirror2 = param.mirror; var stylesheetManager = param.stylesheetManager; var win = param1.win; if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) return function() {}; var insertRule = win.CSSStyleSheet.prototype.insertRule; win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, { apply: callbackWrapper(function(target, thisArg, argumentsList) { var rule2 = argumentsList[0]; var index2 = argumentsList[1]; var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror); var id = _getIdAndStyleId.id; var styleId = _getIdAndStyleId.styleId; if (id && id !== -1 || styleId && styleId !== -1) styleSheetRuleCb({ id, styleId, adds: [{ rule: rule2, index: index2 }] }); return target.apply(thisArg, argumentsList); }) }); win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2) { if (index2 === void 0) index2 = this.cssRules.length; var rule2 = selector + " { " + styleBlock + " }"; return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]); }; var deleteRule = win.CSSStyleSheet.prototype.deleteRule; win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, { apply: callbackWrapper(function(target, thisArg, argumentsList) { var index2 = argumentsList[0]; var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror); var id = _getIdAndStyleId.id; var styleId = _getIdAndStyleId.styleId; if (id && id !== -1 || styleId && styleId !== -1) styleSheetRuleCb({ id, styleId, removes: [{ index: index2 }] }); return target.apply(thisArg, argumentsList); }) }); win.CSSStyleSheet.prototype.removeRule = function(index2) { return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]); }; var replace; if (win.CSSStyleSheet.prototype.replace) { replace = win.CSSStyleSheet.prototype.replace; win.CSSStyleSheet.prototype.replace = new Proxy(replace, { apply: callbackWrapper(function(target, thisArg, argumentsList) { var text = argumentsList[0]; var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror); var id = _getIdAndStyleId.id; var styleId = _getIdAndStyleId.styleId; if (id && id !== -1 || styleId && styleId !== -1) styleSheetRuleCb({ id, styleId, replace: text }); return target.apply(thisArg, argumentsList); }) }); } var replaceSync; if (win.CSSStyleSheet.prototype.replaceSync) { replaceSync = win.CSSStyleSheet.prototype.replaceSync; win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, { apply: callbackWrapper(function(target, thisArg, argumentsList) { var text = argumentsList[0]; var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror); var id = _getIdAndStyleId.id; var styleId = _getIdAndStyleId.styleId; if (id && id !== -1 || styleId && styleId !== -1) styleSheetRuleCb({ id, styleId, replaceSync: text }); return target.apply(thisArg, argumentsList); }) }); } var supportedNestedCSSRuleTypes = {}; if (canMonkeyPatchNestedCSSRule("CSSGroupingRule")) supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule; else { if (canMonkeyPatchNestedCSSRule("CSSMediaRule")) supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule; if (canMonkeyPatchNestedCSSRule("CSSConditionRule")) supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule; if (canMonkeyPatchNestedCSSRule("CSSSupportsRule")) supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule; } var unmodifiedFunctions = {}; Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) { var typeKey = param[0]; var type = param[1]; unmodifiedFunctions[typeKey] = { insertRule: type.prototype.insertRule, deleteRule: type.prototype.deleteRule }; type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, { apply: callbackWrapper(function(target, thisArg, argumentsList) { var rule2 = argumentsList[0]; var index2 = argumentsList[1]; var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror); var id = _getIdAndStyleId.id; var styleId = _getIdAndStyleId.styleId; if (id && id !== -1 || styleId && styleId !== -1) styleSheetRuleCb({ id, styleId, adds: [{ rule: rule2, index: [].concat(getNestedCSSRulePositions(thisArg), [index2 || 0]) }] }); return target.apply(thisArg, argumentsList); }) }); type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, { apply: callbackWrapper(function(target, thisArg, argumentsList) { var index2 = argumentsList[0]; var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror); var id = _getIdAndStyleId.id; var styleId = _getIdAndStyleId.styleId; if (id && id !== -1 || styleId && styleId !== -1) styleSheetRuleCb({ id, styleId, removes: [{ index: [].concat(getNestedCSSRulePositions(thisArg), [index2]) }] }); return target.apply(thisArg, argumentsList); }) }); }); return callbackWrapper(function() { win.CSSStyleSheet.prototype.insertRule = insertRule; win.CSSStyleSheet.prototype.deleteRule = deleteRule; replace && (win.CSSStyleSheet.prototype.replace = replace); replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync); Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) { var typeKey = param[0]; var type = param[1]; type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule; type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule; }); }); } function initAdoptedStyleSheetObserver(param, host2) { var mirror2 = param.mirror; var stylesheetManager = param.stylesheetManager; var _a2; var _b; var _c; var hostId = null; if (host2.nodeName === "#document") hostId = mirror2.getId(host2); else hostId = mirror2.getId(index.host(host2)); var patchTarget = host2.nodeName === "#document" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot; var originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(patchTarget == null ? void 0 : patchTarget.prototype, "adoptedStyleSheets") : void 0; if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor) return function() {}; Object.defineProperty(host2, "adoptedStyleSheets", { configurable: originalPropertyDescriptor.configurable, enumerable: originalPropertyDescriptor.enumerable, get: function get() { var _a3; return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this); }, set: function set(sheets) { var _a3; var result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets); if (hostId !== null && hostId !== -1) try { stylesheetManager.adoptStyleSheets(sheets, hostId); } catch (e2) {} return result2; } }); return callbackWrapper(function() { Object.defineProperty(host2, "adoptedStyleSheets", { configurable: originalPropertyDescriptor.configurable, enumerable: originalPropertyDescriptor.enumerable, get: originalPropertyDescriptor.get, set: originalPropertyDescriptor.set }); }); } function initStyleDeclarationObserver(param, param1) { var styleDeclarationCb = param.styleDeclarationCb; var mirror2 = param.mirror; var ignoreCSSAttributes = param.ignoreCSSAttributes; var stylesheetManager = param.stylesheetManager; var win = param1.win; var setProperty = win.CSSStyleDeclaration.prototype.setProperty; win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, { apply: callbackWrapper(function(target, thisArg, argumentsList) { var _a2; var property = argumentsList[0]; var value = argumentsList[1]; var priority = argumentsList[2]; if (ignoreCSSAttributes.has(property)) return setProperty.apply(thisArg, [ property, value, priority ]); var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror); var id = _getIdAndStyleId.id; var styleId = _getIdAndStyleId.styleId; if (id && id !== -1 || styleId && styleId !== -1) styleDeclarationCb({ id, styleId, set: { property, value, priority }, index: getNestedCSSRulePositions(thisArg.parentRule) }); return target.apply(thisArg, argumentsList); }) }); var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty; win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, { apply: callbackWrapper(function(target, thisArg, argumentsList) { var _a2; var property = argumentsList[0]; if (ignoreCSSAttributes.has(property)) return removeProperty.apply(thisArg, [property]); var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror); var id = _getIdAndStyleId.id; var styleId = _getIdAndStyleId.styleId; if (id && id !== -1 || styleId && styleId !== -1) styleDeclarationCb({ id, styleId, remove: { property }, index: getNestedCSSRulePositions(thisArg.parentRule) }); return target.apply(thisArg, argumentsList); }) }); return callbackWrapper(function() { win.CSSStyleDeclaration.prototype.setProperty = setProperty; win.CSSStyleDeclaration.prototype.removeProperty = removeProperty; }); } function initMediaInteractionObserver(param) { var mediaInteractionCb = param.mediaInteractionCb; var blockClass = param.blockClass; var blockSelector = param.blockSelector; var mirror2 = param.mirror; var sampling = param.sampling; var doc = param.doc; var handler = callbackWrapper(function(type) { return throttle(callbackWrapper(function(event) { var target = getEventTarget(event); if (!target || isBlocked(target, blockClass, blockSelector, true)) return; var currentTime = target.currentTime; var volume = target.volume; var muted = target.muted; var playbackRate = target.playbackRate; var loop = target.loop; mediaInteractionCb({ type, id: mirror2.getId(target), currentTime, volume, muted, playbackRate, loop }); }), sampling.media || 500); }); var handlers = [ on("play", handler(MediaInteractions.Play), doc), on("pause", handler(MediaInteractions.Pause), doc), on("seeked", handler(MediaInteractions.Seeked), doc), on("volumechange", handler(MediaInteractions.VolumeChange), doc), on("ratechange", handler(MediaInteractions.RateChange), doc) ]; return callbackWrapper(function() { handlers.forEach(function(h) { return h(); }); }); } function initFontObserver(param) { var fontCb = param.fontCb; var doc = param.doc; var win = doc.defaultView; if (!win) return function() {}; var handlers = []; var fontMap = /* @__PURE__ */ new WeakMap(); var originalFontFace = win.FontFace; win.FontFace = function FontFace2(family, source, descriptors) { var fontFace = new originalFontFace(family, source, descriptors); fontMap.set(fontFace, { family, buffer: typeof source !== "string", descriptors, fontSource: typeof source === "string" ? source : JSON.stringify(Array.from(new Uint8Array(source))) }); return fontFace; }; var restoreHandler = patch(doc.fonts, "add", function(original) { return function(fontFace) { setTimeout(callbackWrapper(function() { var p = fontMap.get(fontFace); if (p) { fontCb(p); fontMap.delete(fontFace); } }), 0); return original.apply(this, [fontFace]); }; }); handlers.push(function() { win.FontFace = originalFontFace; }); handlers.push(restoreHandler); return callbackWrapper(function() { handlers.forEach(function(h) { return h(); }); }); } function initSelectionObserver(param) { var doc = param.doc; var mirror2 = param.mirror; var blockClass = param.blockClass; var blockSelector = param.blockSelector; var selectionCb = param.selectionCb; var collapsed = true; var updateSelection = callbackWrapper(function() { var selection = doc.getSelection(); if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return; collapsed = selection.isCollapsed || false; var ranges = []; var count = selection.rangeCount || 0; for (var i2 = 0; i2 < count; i2++) { var range = selection.getRangeAt(i2); var startContainer = range.startContainer; var startOffset = range.startOffset; var endContainer = range.endContainer; var endOffset = range.endOffset; if (isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true)) continue; ranges.push({ start: mirror2.getId(startContainer), startOffset, end: mirror2.getId(endContainer), endOffset }); } selectionCb({ ranges }); }); updateSelection(); return on("selectionchange", updateSelection); } function initCustomElementObserver(param) { var doc = param.doc; var customElementCb = param.customElementCb; var win = doc.defaultView; if (!win || !win.customElements) return function() {}; return patch(win.customElements, "define", function(original) { return function(name, constructor, options) { try { customElementCb({ define: { name } }); } catch (e2) { console.warn("Custom element callback failed for " + name); } return original.apply(this, [ name, constructor, options ]); }; }); } function mergeHooks(o2, hooks) { var mutationCb = o2.mutationCb; var mousemoveCb = o2.mousemoveCb; var mouseInteractionCb = o2.mouseInteractionCb; var scrollCb = o2.scrollCb; var viewportResizeCb = o2.viewportResizeCb; var inputCb = o2.inputCb; var mediaInteractionCb = o2.mediaInteractionCb; var styleSheetRuleCb = o2.styleSheetRuleCb; var styleDeclarationCb = o2.styleDeclarationCb; var canvasMutationCb = o2.canvasMutationCb; var fontCb = o2.fontCb; var selectionCb = o2.selectionCb; var customElementCb = o2.customElementCb; o2.mutationCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.mutation) { var _hooks; (_hooks = hooks).mutation.apply(_hooks, [].concat(p)); } mutationCb.apply(void 0, [].concat(p)); }; o2.mousemoveCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.mousemove) { var _hooks; (_hooks = hooks).mousemove.apply(_hooks, [].concat(p)); } mousemoveCb.apply(void 0, [].concat(p)); }; o2.mouseInteractionCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.mouseInteraction) { var _hooks; (_hooks = hooks).mouseInteraction.apply(_hooks, [].concat(p)); } mouseInteractionCb.apply(void 0, [].concat(p)); }; o2.scrollCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.scroll) { var _hooks; (_hooks = hooks).scroll.apply(_hooks, [].concat(p)); } scrollCb.apply(void 0, [].concat(p)); }; o2.viewportResizeCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.viewportResize) { var _hooks; (_hooks = hooks).viewportResize.apply(_hooks, [].concat(p)); } viewportResizeCb.apply(void 0, [].concat(p)); }; o2.inputCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.input) { var _hooks; (_hooks = hooks).input.apply(_hooks, [].concat(p)); } inputCb.apply(void 0, [].concat(p)); }; o2.mediaInteractionCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.mediaInteaction) { var _hooks; (_hooks = hooks).mediaInteaction.apply(_hooks, [].concat(p)); } mediaInteractionCb.apply(void 0, [].concat(p)); }; o2.styleSheetRuleCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.styleSheetRule) { var _hooks; (_hooks = hooks).styleSheetRule.apply(_hooks, [].concat(p)); } styleSheetRuleCb.apply(void 0, [].concat(p)); }; o2.styleDeclarationCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.styleDeclaration) { var _hooks; (_hooks = hooks).styleDeclaration.apply(_hooks, [].concat(p)); } styleDeclarationCb.apply(void 0, [].concat(p)); }; o2.canvasMutationCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.canvasMutation) { var _hooks; (_hooks = hooks).canvasMutation.apply(_hooks, [].concat(p)); } canvasMutationCb.apply(void 0, [].concat(p)); }; o2.fontCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.font) { var _hooks; (_hooks = hooks).font.apply(_hooks, [].concat(p)); } fontCb.apply(void 0, [].concat(p)); }; o2.selectionCb = function() { for (var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++) p[_key] = arguments[_key]; if (hooks.selection) { var _hooks; (_hooks = hooks).selection.apply(_hooks, [].concat(p)); } selectionCb.apply(void 0, [].concat(p)); }; o2.customElementCb = function() { for (var _len = arguments.length, c2 = new Array(_len), _key = 0; _key < _len; _key++) c2[_key] = arguments[_key]; if (hooks.customElement) { var _hooks; (_hooks = hooks).customElement.apply(_hooks, [].concat(c2)); } customElementCb.apply(void 0, [].concat(c2)); }; } function initObservers(o2, hooks) { if (hooks === void 0) hooks = {}; var currentWindow = o2.doc.defaultView; if (!currentWindow) return function() {}; mergeHooks(o2, hooks); var mutationObserver; if (o2.recordDOM) mutationObserver = initMutationObserver(o2, o2.doc); var mousemoveHandler = initMoveObserver(o2); var mouseInteractionHandler = initMouseInteractionObserver(o2); var scrollHandler = initScrollObserver(o2); var viewportResizeHandler = initViewportResizeObserver(o2, { win: currentWindow }); var inputHandler = initInputObserver(o2); var mediaInteractionHandler = initMediaInteractionObserver(o2); var styleSheetObserver = function() {}; var adoptedStyleSheetObserver = function() {}; var styleDeclarationObserver = function() {}; var fontObserver = function() {}; if (o2.recordDOM) { styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow }); adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc); styleDeclarationObserver = initStyleDeclarationObserver(o2, { win: currentWindow }); if (o2.collectFonts) fontObserver = initFontObserver(o2); } var selectionObserver = initSelectionObserver(o2); var customElementObserver = initCustomElementObserver(o2); var pluginHandlers = []; for (var _iterator = _create_for_of_iterator_helper_loose(o2.plugins), _step; !(_step = _iterator()).done;) { var plugin3 = _step.value; pluginHandlers.push(plugin3.observer(plugin3.callback, currentWindow, plugin3.options)); } return callbackWrapper(function() { mutationBuffers.forEach(function(b) { return b.reset(); }); mutationObserver == null || mutationObserver.disconnect(); mousemoveHandler(); mouseInteractionHandler(); scrollHandler(); viewportResizeHandler(); inputHandler(); mediaInteractionHandler(); styleSheetObserver(); adoptedStyleSheetObserver(); styleDeclarationObserver(); fontObserver(); selectionObserver(); customElementObserver(); pluginHandlers.forEach(function(h) { return h(); }); }); } function hasNestedCSSRule(prop) { return typeof window[prop] !== "undefined"; } function canMonkeyPatchNestedCSSRule(prop) { return Boolean(typeof window[prop] !== "undefined" && window[prop].prototype && "insertRule" in window[prop].prototype && "deleteRule" in window[prop].prototype); } function variableListFor$1(ctx, ctor) { var contextMap = canvasVarMap.get(ctx); if (!contextMap) { contextMap = /* @__PURE__ */ new Map(); canvasVarMap.set(ctx, contextMap); } if (!contextMap.has(ctor)) contextMap.set(ctor, []); return contextMap.get(ctor); } function serializeArg(value, win, ctx) { if (_instanceof(value, Array)) return value.map(function(arg) { return serializeArg(arg, win, ctx); }); else if (value === null) return value; else if (_instanceof(value, Float32Array) || _instanceof(value, Float64Array) || _instanceof(value, Int32Array) || _instanceof(value, Uint32Array) || _instanceof(value, Uint8Array) || _instanceof(value, Uint16Array) || _instanceof(value, Int16Array) || _instanceof(value, Int8Array) || _instanceof(value, Uint8ClampedArray)) return { rr_type: value.constructor.name, args: [Object.values(value)] }; else if (_instanceof(value, ArrayBuffer)) return { rr_type: value.constructor.name, base64: encode(value) }; else if (_instanceof(value, DataView)) return { rr_type: value.constructor.name, args: [ serializeArg(value.buffer, win, ctx), value.byteOffset, value.byteLength ] }; else if (_instanceof(value, HTMLImageElement)) return { rr_type: value.constructor.name, src: value.src }; else if (_instanceof(value, HTMLCanvasElement)) return { rr_type: "HTMLImageElement", src: value.toDataURL() }; else if (_instanceof(value, ImageData)) return { rr_type: value.constructor.name, args: [ serializeArg(value.data, win, ctx), value.width, value.height ] }; else if (isInstanceOfWebGLObject(value, win) || (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object") return { rr_type: value.constructor.name, index: saveWebGLVar(value, win, ctx) }; return value; } function initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) { var _loop = function() { var prop = _step.value; try { if (typeof win.CanvasRenderingContext2D.prototype[prop] !== "function") return "continue"; var restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function(original) { return function() { var _this = this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; if (!isBlocked(this.canvas, blockClass, blockSelector, true)) setTimeout(function() { var recordArgs = serializeArgs(args, win, _this); cb(_this.canvas, { type: CanvasContext["2D"], property: prop, args: recordArgs }); }, 0); return original.apply(this, args); }; }); handlers.push(restoreHandler); } catch (e) { var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, { set: function set(v2) { cb(this.canvas, { type: CanvasContext["2D"], property: prop, args: [v2], setter: true }); } }); handlers.push(hookHandler); } }; var handlers = []; for (var _iterator = _create_for_of_iterator_helper_loose(Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype)), _step; !(_step = _iterator()).done;) _loop(); return function() { handlers.forEach(function(h) { return h(); }); }; } function getNormalizedContextName(contextType) { return contextType === "experimental-webgl" ? "webgl" : contextType; } function initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) { var handlers = []; try { var restoreHandler = patch(win.HTMLCanvasElement.prototype, "getContext", function(original) { return function(contextType) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) args[_key - 1] = arguments[_key]; if (!isBlocked(this, blockClass, blockSelector, true)) { var ctxName = getNormalizedContextName(contextType); if (!("__context" in this)) this.__context = ctxName; if (setPreserveDrawingBufferToTrue && ["webgl", "webgl2"].includes(ctxName)) if (args[0] && _type_of(args[0]) === "object") { var contextAttributes = args[0]; if (!contextAttributes.preserveDrawingBuffer) contextAttributes.preserveDrawingBuffer = true; } else args.splice(0, 1, { preserveDrawingBuffer: true }); } return original.apply(this, [].concat([contextType], args)); }; }); handlers.push(restoreHandler); } catch (e) { console.error("failed to patch HTMLCanvasElement.prototype.getContext"); } return function() { handlers.forEach(function(h) { return h(); }); }; } function patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) { var _loop = function() { var prop = _step.value; if ([ "isContextLost", "canvas", "drawingBufferWidth", "drawingBufferHeight" ].includes(prop)) return "continue"; try { if (typeof prototype[prop] !== "function") return "continue"; var restoreHandler = patch(prototype, prop, function(original) { return function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; var result2 = original.apply(this, args); saveWebGLVar(result2, win, this); if ("tagName" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) { var mutation = { type, property: prop, args: serializeArgs(args, win, this) }; cb(this.canvas, mutation); } return result2; }; }); handlers.push(restoreHandler); } catch (e) { var hookHandler = hookSetter(prototype, prop, { set: function set(v2) { cb(this.canvas, { type, property: prop, args: [v2], setter: true }); } }); handlers.push(hookHandler); } }; var handlers = []; for (var _iterator = _create_for_of_iterator_helper_loose(Object.getOwnPropertyNames(prototype)), _step; !(_step = _iterator()).done;) _loop(); return handlers; } function initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) { var _handlers; var handlers = []; (_handlers = handlers).push.apply(_handlers, [].concat(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, win))); if (typeof win.WebGL2RenderingContext !== "undefined") { var _handlers1; (_handlers1 = handlers).push.apply(_handlers1, [].concat(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, win))); } return function() { handlers.forEach(function(h) { return h(); }); }; } function WorkerWrapper(options) { var objURL; try { objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob); if (!objURL) throw ""; var worker = new Worker(objURL, { name: options == null ? void 0 : options.name }); worker.addEventListener("error", function() { (window.URL || window.webkitURL).revokeObjectURL(objURL); }); return worker; } catch (e2) { return new Worker("data:text/javascript;base64," + encodedJs, { name: options == null ? void 0 : options.name }); } finally { objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL); } } function record(options) { if (options === void 0) options = {}; var emit = options.emit; var checkoutEveryNms = options.checkoutEveryNms; var checkoutEveryNth = options.checkoutEveryNth; var _options_blockClass = options.blockClass; var blockClass = _options_blockClass === void 0 ? "rr-block" : _options_blockClass; var _options_blockSelector = options.blockSelector; var blockSelector = _options_blockSelector === void 0 ? null : _options_blockSelector; var _options_ignoreClass = options.ignoreClass; var ignoreClass = _options_ignoreClass === void 0 ? "rr-ignore" : _options_ignoreClass; var _options_ignoreSelector = options.ignoreSelector; var ignoreSelector = _options_ignoreSelector === void 0 ? null : _options_ignoreSelector; var _options_maskTextClass = options.maskTextClass; var maskTextClass = _options_maskTextClass === void 0 ? "rr-mask" : _options_maskTextClass; var _options_maskTextSelector = options.maskTextSelector; var maskTextSelector = _options_maskTextSelector === void 0 ? null : _options_maskTextSelector; var _options_inlineStylesheet = options.inlineStylesheet; var inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet; var maskAllInputs = options.maskAllInputs; var _maskInputOptions = options.maskInputOptions; var _slimDOMOptions = options.slimDOMOptions; var maskInputFn = options.maskInputFn; var maskTextFn = options.maskTextFn; var hooks = options.hooks; var packFn = options.packFn; var _options_sampling = options.sampling; var sampling = _options_sampling === void 0 ? {} : _options_sampling; var _options_dataURLOptions = options.dataURLOptions; var dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions; var mousemoveWait = options.mousemoveWait; var _options_recordDOM = options.recordDOM; var recordDOM = _options_recordDOM === void 0 ? true : _options_recordDOM; var _options_recordCanvas = options.recordCanvas; var recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas; var _options_recordCrossOriginIframes = options.recordCrossOriginIframes; var recordCrossOriginIframes = _options_recordCrossOriginIframes === void 0 ? false : _options_recordCrossOriginIframes; var _options_recordAfter = options.recordAfter; var recordAfter = _options_recordAfter === void 0 ? options.recordAfter === "DOMContentLoaded" ? options.recordAfter : "load" : _options_recordAfter; var _options_userTriggeredOnInput = options.userTriggeredOnInput; var userTriggeredOnInput = _options_userTriggeredOnInput === void 0 ? false : _options_userTriggeredOnInput; var _options_collectFonts = options.collectFonts; var collectFonts = _options_collectFonts === void 0 ? false : _options_collectFonts; var _options_inlineImages = options.inlineImages; var inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages; var plugins = options.plugins; var _options_keepIframeSrcFn = options.keepIframeSrcFn; var keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() { return false; } : _options_keepIframeSrcFn; var _options_ignoreCSSAttributes = options.ignoreCSSAttributes; var ignoreCSSAttributes = _options_ignoreCSSAttributes === void 0 ? /* @__PURE__ */ new Set([]) : _options_ignoreCSSAttributes; var errorHandler2 = options.errorHandler; registerErrorHandler(errorHandler2); var inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true; var passEmitsToParent = false; if (!inEmittingFrame) try { if (window.parent.document) passEmitsToParent = false; } catch (e2) { passEmitsToParent = true; } if (inEmittingFrame && !emit) throw new Error("emit function is required"); if (!inEmittingFrame && !passEmitsToParent) return function() {}; if (mousemoveWait !== void 0 && sampling.mousemove === void 0) sampling.mousemove = mousemoveWait; mirror.reset(); var maskInputOptions = maskAllInputs === true ? { color: true, date: true, "datetime-local": true, email: true, month: true, number: true, range: true, search: true, tel: true, text: true, time: true, url: true, week: true, textarea: true, select: true, password: true, hidden: true } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true }; var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === "all" ? { script: true, comment: true, headFavicon: true, headWhitespace: true, headMetaSocial: true, headMetaRobots: true, headMetaHttpEquiv: true, headMetaVerification: true, headMetaAuthorship: _slimDOMOptions === "all", headMetaDescKeywords: _slimDOMOptions === "all", headTitleMutations: _slimDOMOptions === "all" } : _slimDOMOptions ? _slimDOMOptions : {}; polyfill$1(); var lastFullSnapshotEvent; var incrementalSnapshotCount = 0; var eventProcessor = function(e2) { for (var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;) { var plugin3 = _step.value; if (plugin3.eventProcessor) e2 = plugin3.eventProcessor(e2); } if (packFn && !passEmitsToParent) e2 = packFn(e2); return e2; }; wrappedEmit = function(r2, isCheckout) { var _a2; var e2 = r2; e2.timestamp = nowTimestamp(); if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) mutationBuffers.forEach(function(buf) { return buf.unfreeze(); }); if (inEmittingFrame) emit == null || emit(eventProcessor(e2), isCheckout); else if (passEmitsToParent) { var message = { type: "rrweb", event: eventProcessor(e2), origin: window.location.origin, isCheckout }; window.parent.postMessage(message, "*"); } if (e2.type === EventType.FullSnapshot) { lastFullSnapshotEvent = e2; incrementalSnapshotCount = 0; } else if (e2.type === EventType.IncrementalSnapshot) { if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) return; incrementalSnapshotCount++; var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth; var exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms; if (exceedCount || exceedTime) takeFullSnapshot$1(true); } }; var wrappedMutationEmit = function(m) { wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.Mutation }, m) }); }; var wrappedScrollEmit = function(p) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.Scroll }, p) }); }; var wrappedCanvasMutationEmit = function(p) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.CanvasMutation }, p) }); }; var wrappedAdoptedStyleSheetEmit = function(a2) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.AdoptedStyleSheet }, a2) }); }; var stylesheetManager = new StylesheetManager({ mutationCb: wrappedMutationEmit, adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit }); var iframeManager = new IframeManager({ mirror, mutationCb: wrappedMutationEmit, stylesheetManager, recordCrossOriginIframes, wrappedEmit }); for (var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;) { var plugin3 = _step.value; if (plugin3.getMirror) plugin3.getMirror({ nodeMirror: mirror, crossOriginIframeMirror: iframeManager.crossOriginIframeMirror, crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror }); } var processedNodeManager = new ProcessedNodeManager(); canvasManager = new CanvasManager({ recordCanvas, mutationCb: wrappedCanvasMutationEmit, win: window, blockClass, blockSelector, mirror, sampling: sampling.canvas, dataURLOptions }); var shadowDomManager = new ShadowDomManager({ mutationCb: wrappedMutationEmit, scrollCb: wrappedScrollEmit, bypassOptions: { blockClass, blockSelector, maskTextClass, maskTextSelector, inlineStylesheet, maskInputOptions, dataURLOptions, maskTextFn, maskInputFn, recordCanvas, inlineImages, sampling, slimDOMOptions, iframeManager, stylesheetManager, canvasManager, keepIframeSrcFn, processedNodeManager }, mirror }); takeFullSnapshot$1 = function(isCheckout) { if (isCheckout === void 0) isCheckout = false; if (!recordDOM) return; wrappedEmit({ type: EventType.Meta, data: { href: window.location.href, width: getWindowWidth(), height: getWindowHeight() } }, isCheckout); stylesheetManager.reset(); shadowDomManager.init(); mutationBuffers.forEach(function(buf) { return buf.lock(); }); var node2 = snapshot(document, { mirror, blockClass, blockSelector, maskTextClass, maskTextSelector, inlineStylesheet, maskAllInputs: maskInputOptions, maskTextFn, maskInputFn, slimDOM: slimDOMOptions, dataURLOptions, recordCanvas, inlineImages, onSerialize: function(n2) { if (isSerializedIframe(n2, mirror)) iframeManager.addIframe(n2); if (isSerializedStylesheet(n2, mirror)) stylesheetManager.trackLinkElement(n2); if (hasShadowRoot(n2)) shadowDomManager.addShadowRoot(index.shadowRoot(n2), document); }, onIframeLoad: function(iframe, childSn) { iframeManager.attachIframe(iframe, childSn); shadowDomManager.observeAttachShadow(iframe); }, onStylesheetLoad: function(linkEl, childSn) { stylesheetManager.attachLinkElement(linkEl, childSn); }, keepIframeSrcFn }); if (!node2) return console.warn("Failed to snapshot the document"); wrappedEmit({ type: EventType.FullSnapshot, data: { node: node2, initialOffset: getWindowScroll(window) } }, isCheckout); mutationBuffers.forEach(function(buf) { return buf.unlock(); }); if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0) stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document)); }; try { var handlers = []; var observe = function(doc) { var _a2; return callbackWrapper(initObservers)({ mutationCb: wrappedMutationEmit, mousemoveCb: function(positions, source) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: { source, positions } }); }, mouseInteractionCb: function(d) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.MouseInteraction }, d) }); }, scrollCb: wrappedScrollEmit, viewportResizeCb: function(d) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.ViewportResize }, d) }); }, inputCb: function(v2) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.Input }, v2) }); }, mediaInteractionCb: function(p) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.MediaInteraction }, p) }); }, styleSheetRuleCb: function(r2) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.StyleSheetRule }, r2) }); }, styleDeclarationCb: function(r2) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.StyleDeclaration }, r2) }); }, canvasMutationCb: wrappedCanvasMutationEmit, fontCb: function(p) { return wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.Font }, p) }); }, selectionCb: function(p) { wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.Selection }, p) }); }, customElementCb: function(c2) { wrappedEmit({ type: EventType.IncrementalSnapshot, data: _extends({ source: IncrementalSource.CustomElement }, c2) }); }, blockClass, ignoreClass, ignoreSelector, maskTextClass, maskTextSelector, maskInputOptions, inlineStylesheet, sampling, recordDOM, recordCanvas, inlineImages, userTriggeredOnInput, collectFonts, doc, maskInputFn, maskTextFn, keepIframeSrcFn, blockSelector, slimDOMOptions, dataURLOptions, mirror, iframeManager, stylesheetManager, shadowDomManager, processedNodeManager, canvasManager, ignoreCSSAttributes, plugins: ((_a2 = plugins == null ? void 0 : plugins.filter(function(p) { return p.observer; })) == null ? void 0 : _a2.map(function(p) { return { observer: p.observer, options: p.options, callback: function(payload) { return wrappedEmit({ type: EventType.Plugin, data: { plugin: p.name, payload } }); } }; })) || [] }, hooks); }; iframeManager.addLoadListener(function(iframeEl) { try { handlers.push(observe(iframeEl.contentDocument)); } catch (error) { console.warn(error); } }); var init = function() { takeFullSnapshot$1(); handlers.push(observe(document)); recording = true; }; if (document.readyState === "interactive" || document.readyState === "complete") init(); else { handlers.push(on("DOMContentLoaded", function() { wrappedEmit({ type: EventType.DomContentLoaded, data: {} }); if (recordAfter === "DOMContentLoaded") init(); })); handlers.push(on("load", function() { wrappedEmit({ type: EventType.Load, data: {} }); if (recordAfter === "load") init(); }, window)); } return function() { handlers.forEach(function(handler) { try { handler(); } catch (error) { if (!String(error).toLowerCase().includes("cross-origin")) console.warn(error); } }); processedNodeManager.destroy(); recording = false; unregisterErrorHandler(); }; } catch (error) { console.warn(error); } } function schedule(fn, self) { schedulingQueue.add(fn, self); if (!cycle) cycle = timer(schedulingQueue.drain); } function isThenable(o) { var _then; var oType = typeof o; if (o !== null && (oType === "object" || oType === "function")) _then = o.then; return typeof _then === "function" ? _then : false; } function notify() { for (var i = 0; i < this.chain.length; i++) notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]); this.chain.length = 0; } function notifyIsolated(self, cb, chain) { var ret; var _then; try { if (cb === false) chain.reject(self.msg); else { if (cb === true) ret = self.msg; else ret = cb.call(void 0, self.msg); if (ret === chain.promise) chain.reject(TypeError("Promise-chain cycle")); else if (_then = isThenable(ret)) _then.call(ret, chain.resolve, chain.reject); else chain.resolve(ret); } } catch (err) { chain.reject(err); } } function resolve(msg) { var _then; var self = this; if (self.triggered) return; self.triggered = true; if (self.def) self = self.def; try { if (_then = isThenable(msg)) schedule(function() { var defWrapper = new MakeDefWrapper(self); try { _then.call(msg, function $resolve$() { resolve.apply(defWrapper, arguments); }, function $reject$() { reject.apply(defWrapper, arguments); }); } catch (err) { reject.call(defWrapper, err); } }); else { self.msg = msg; self.state = 1; if (self.chain.length > 0) schedule(notify, self); } } catch (err) { reject.call(new MakeDefWrapper(self), err); } } function reject(msg) { var self = this; if (self.triggered) return; self.triggered = true; if (self.def) self = self.def; self.msg = msg; self.state = 2; if (self.chain.length > 0) schedule(notify, self); } function iteratePromises(Constructor, arr, resolver, rejecter) { for (var idx = 0; idx < arr.length; idx++) (function IIFE(idx) { Constructor.resolve(arr[idx]).then(function $resolver$(msg) { resolver(idx, msg); }, rejecter); })(idx); } function MakeDefWrapper(self) { this.def = self; this.triggered = false; } function MakeDef(self) { this.promise = self; this.state = 0; this.triggered = false; this.chain = []; this.msg = void 0; } function NpoPromise(executor) { if (typeof executor !== "function") throw TypeError("Not a function"); if (this["__NPO__"] !== 0) throw TypeError("Not a promise"); this["__NPO__"] = 1; var def = new MakeDef(this); this["then"] = function then(success, failure) { var o = { success: typeof success === "function" ? success : true, failure: typeof failure === "function" ? failure : false }; o.promise = new this.constructor(function extractChain(resolve, reject) { if (typeof resolve !== "function" || typeof reject !== "function") throw TypeError("Not a function"); o.resolve = resolve; o.reject = reject; }); def.chain.push(o); if (def.state !== 0) schedule(notify, def); return o.promise; }; this["catch"] = function $catch$(failure) { return this.then(void 0, failure); }; try { executor.call(void 0, function publicResolve(msg) { resolve.call(def, msg); }, function publicReject(msg) { reject.call(def, msg); }); } catch (err) { reject.call(def, err); } } function _storageWrapper(storage, name, is_supported_fn) { var log_error = function(msg) { console$1.error(name + " error: " + msg); }; return { is_supported: function(forceCheck) { var supported = is_supported_fn(storage, forceCheck); if (!supported) console$1.error(name + " unsupported"); return supported; }, error: log_error, get: function(key) { try { return storage.getItem(key); } catch (err) { log_error(err); } return null; }, parse: function(key) { try { return _.JSONDecode(storage.getItem(key)) || {}; } catch (err) {} return null; }, set: function(key, value) { try { storage.setItem(key, value); } catch (err) { log_error(err); } }, remove: function(key) { try { storage.removeItem(key); } catch (err) { log_error(err); } } }; } /** * Opt the user in to data tracking and cookies/localstorage for the given token * @param {string} token - Mixpanel project tracking token * @param {Object} [options] * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires * @param {string} [options.cookieDomain] - custom cookie domain * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not */ function optIn(token, options) { _optInOut(true, token, options); } /** * Opt the user out of data tracking and cookies/localstorage for the given token * @param {string} token - Mixpanel project tracking token * @param {Object} [options] * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires * @param {string} [options.cookieDomain] - custom cookie domain * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not */ function optOut(token, options) { _optInOut(false, token, options); } /** * Check whether the user has opted in to data tracking and cookies/localstorage for the given token * @param {string} token - Mixpanel project tracking token * @param {Object} [options] * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name * @returns {boolean} whether the user has opted in to the given opt type */ function hasOptedIn(token, options) { return _getStorageValue(token, options) === "1"; } /** * Check whether the user has opted out of data tracking and cookies/localstorage for the given token * @param {string} token - Mixpanel project tracking token * @param {Object} [options] * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false * @returns {boolean} whether the user has opted out of the given opt type */ function hasOptedOut(token, options) { if (_hasDoNotTrackFlagOn(options)) { console$1.warn("This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\""); return true; } var optedOut = _getStorageValue(token, options) === "0"; if (optedOut) console$1.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."); return optedOut; } /** * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token * If the user has opted out, return early instead of executing the method. * If a callback argument was provided, execute it passing the 0 error code. * @param {function} method - wrapped method to be executed if the user has not opted out * @returns {*} the result of executing method OR undefined if the user has opted out */ function addOptOutCheckMixpanelLib(method) { return _addOptOutCheck(method, function(name) { return this.get_config(name); }); } /** * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token * If the user has opted out, return early instead of executing the method. * If a callback argument was provided, execute it passing the 0 error code. * @param {function} method - wrapped method to be executed if the user has not opted out * @returns {*} the result of executing method OR undefined if the user has opted out */ function addOptOutCheckMixpanelPeople(method) { return _addOptOutCheck(method, function(name) { return this._get_config(name); }); } /** * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token * If the user has opted out, return early instead of executing the method. * If a callback argument was provided, execute it passing the 0 error code. * @param {function} method - wrapped method to be executed if the user has not opted out * @returns {*} the result of executing method OR undefined if the user has opted out */ function addOptOutCheckMixpanelGroup(method) { return _addOptOutCheck(method, function(name) { return this._get_config(name); }); } /** * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token * @param {string} token - Mixpanel project tracking token * @param {Object} [options] * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires * @param {string} [options.cookieDomain] - custom cookie domain * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not */ function clearOptInOut(token, options) { options = options || {}; _getStorage(options).remove(_getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain); } /** Private **/ /** * Get storage util * @param {Object} [options] * @param {string} [options.persistenceType] * @returns {object} either _.cookie or _.localstorage */ function _getStorage(options) { options = options || {}; return options.persistenceType === "localStorage" ? _.localStorage : _.cookie; } /** * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.) * @param {string} token - Mixpanel project tracking token * @param {Object} [options] * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name * @returns {string} the name of the cookie for the given opt type */ function _getStorageKey(token, options) { options = options || {}; return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token; } /** * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.) * @param {string} token - Mixpanel project tracking token * @param {Object} [options] * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name * @returns {string} the value of the cookie for the given opt type */ function _getStorageValue(token, options) { return _getStorage(options).get(_getStorageKey(token, options)); } /** * Check whether the user has set the DNT/doNotTrack setting to true in their browser * @param {Object} [options] * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false * @returns {boolean} whether the DNT setting is true */ function _hasDoNotTrackFlagOn(options) { if (options && options.ignoreDnt) return false; var win$1 = options && options.window || win; var nav = win$1["navigator"] || {}; var hasDntOn = false; _.each([ nav["doNotTrack"], nav["msDoNotTrack"], win$1["doNotTrack"] ], function(dntValue) { if (_.includes([ true, 1, "1", "yes" ], dntValue)) hasDntOn = true; }); return hasDntOn; } /** * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type * @param {boolean} optValue - whether to opt the user in or out for the given opt type * @param {string} token - Mixpanel project tracking token * @param {Object} [options] * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires * @param {string} [options.cookieDomain] - custom cookie domain * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not */ function _optInOut(optValue, token, options) { if (!_.isString(token) || !token.length) { console$1.error("gdpr." + (optValue ? "optIn" : "optOut") + " called with an invalid token"); return; } options = options || {}; _getStorage(options).set(_getStorageKey(token, options), optValue ? 1 : 0, _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null, !!options.crossSubdomainCookie, !!options.secureCookie, !!options.crossSiteCookie, options.cookieDomain); if (options.track && optValue) options.track(options.trackEventName || "$opt_in", options.trackProperties, { "send_immediately": true }); } /** * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token * If the user has opted out, return early instead of executing the method. * If a callback argument was provided, execute it passing the 0 error code. * @param {function} method - wrapped method to be executed if the user has not opted out * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check * @returns {*} the result of executing method OR undefined if the user has opted out */ function _addOptOutCheck(method, getConfigValue) { return function() { var optedOut = false; try { var token = getConfigValue.call(this, "token"); var ignoreDnt = getConfigValue.call(this, "ignore_dnt"); var persistenceType = getConfigValue.call(this, "opt_out_tracking_persistence_type"); var persistencePrefix = getConfigValue.call(this, "opt_out_tracking_cookie_prefix"); var win = getConfigValue.call(this, "window"); if (token) optedOut = hasOptedOut(token, { ignoreDnt, persistenceType, persistencePrefix, window: win }); } catch (err) { console$1.error("Unexpected error when checking tracking opt-out status: " + err); } if (!optedOut) return method.apply(this, arguments); var callback = arguments[arguments.length - 1]; if (typeof callback === "function") callback(0); }; } function isUserEvent(ev) { return ev.type === EventType.IncrementalSnapshot && ACTIVE_SOURCES.has(ev.data.source); } function getClasses(el) { var classes = {}; var classList = getClassName(el).split(" "); for (var i = 0; i < classList.length; i++) { var cls = classList[i]; if (cls) classes[cls] = true; } return classes; } function getClassName(el) { switch (typeof el.className) { case "string": return el.className; case "object": return el.className.baseVal || el.getAttribute("class") || ""; default: return ""; } } function getPreviousElementSibling(el) { if (el.previousElementSibling) return el.previousElementSibling; else { do el = el.previousSibling; while (el && !isElementNode(el)); return el; } } function getPropertiesFromElement(el, ev, blockAttrsSet, extraAttrs, allowElementCallback, allowSelectors) { var props = { "$classes": getClassName(el).split(" "), "$tag_name": el.tagName.toLowerCase() }; var elId = el.id; if (elId) props["$id"] = elId; if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors)) _.each(TRACKED_ATTRS.concat(extraAttrs), function(attr) { if (el.hasAttribute(attr) && !blockAttrsSet[attr]) { var attrVal = el.getAttribute(attr); if (shouldTrackValue(attrVal)) props["$attr-" + attr] = attrVal; } }); var nthChild = 1; var nthOfType = 1; var currentElem = el; while (currentElem = getPreviousElementSibling(currentElem)) { nthChild++; if (currentElem.tagName === el.tagName) nthOfType++; } props["$nth_child"] = nthChild; props["$nth_of_type"] = nthOfType; return props; } function getPropsForDOMEvent(ev, config) { var allowElementCallback = config.allowElementCallback; var allowSelectors = config.allowSelectors || []; var blockAttrs = config.blockAttrs || []; var blockElementCallback = config.blockElementCallback; var blockSelectors = config.blockSelectors || []; var captureTextContent = config.captureTextContent || false; var captureExtraAttrs = config.captureExtraAttrs || []; var capturedForHeatMap = config.capturedForHeatMap || false; var blockAttrsSet = {}; _.each(blockAttrs, function(attr) { blockAttrsSet[attr] = true; }); var props = null; var target = typeof ev.target === "undefined" ? ev.srcElement : ev.target; if (isTextNode(target)) target = target.parentNode; if (shouldTrackDomEvent(target, ev) && isElementAllowed(target, ev, allowElementCallback, allowSelectors) && !isElementBlocked(target, ev, blockElementCallback, blockSelectors)) { var targetElementList = [target]; var curEl = target; while (curEl.parentNode && !isTag(curEl, "body")) { targetElementList.push(curEl.parentNode); curEl = curEl.parentNode; } var elementsJson = []; var href; var explicitNoTrack = false; _.each(targetElementList, function(el) { var shouldTrackDetails = shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors); if (!blockAttrsSet["href"] && el.tagName.toLowerCase() === "a") { href = el.getAttribute("href"); href = shouldTrackDetails && shouldTrackValue(href) && href; } if (isElementBlocked(el, ev, blockElementCallback, blockSelectors)) explicitNoTrack = true; elementsJson.push(getPropertiesFromElement(el, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors)); }, this); if (!explicitNoTrack) { var docElement = document$1["documentElement"]; props = { "$event_type": ev.type, "$host": win.location.host, "$pathname": win.location.pathname, "$elements": elementsJson, "$el_attr__href": href, "$viewportHeight": Math.max(docElement["clientHeight"], win["innerHeight"] || 0), "$viewportWidth": Math.max(docElement["clientWidth"], win["innerWidth"] || 0), "$pageHeight": document$1["body"]["offsetHeight"] || 0, "$pageWidth": document$1["body"]["offsetWidth"] || 0 }; _.each(captureExtraAttrs, function(attr) { if (!blockAttrsSet[attr] && target.hasAttribute(attr)) { var attrVal = target.getAttribute(attr); if (shouldTrackValue(attrVal)) props["$el_attr__" + attr] = attrVal; } }); if (captureTextContent) { elementText = getSafeText(target, ev, allowElementCallback, allowSelectors); if (elementText && elementText.length) props["$el_text"] = elementText; } if (ev.type === EV_CLICK) { _.each(CLICK_EVENT_PROPS, function(prop) { if (prop in ev) props["$" + prop] = ev[prop]; }); if (capturedForHeatMap) props["$captured_for_heatmap"] = true; target = guessRealClickTarget(ev); } if (captureTextContent) { var elementText = getSafeText(target, ev, allowElementCallback, allowSelectors); if (elementText && elementText.length) props["$el_text"] = elementText; } if (target) { if (!isElementAllowed(target, ev, allowElementCallback, allowSelectors) || isElementBlocked(target, ev, blockElementCallback, blockSelectors)) return null; var targetProps = getPropertiesFromElement(target, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors); props["$target"] = targetProps; props["$el_classes"] = targetProps["$classes"]; _.extend(props, _.strip_empty_properties({ "$el_id": targetProps["$id"], "$el_tag_name": targetProps["$tag_name"] })); } } } return props; } /** * Get the direct text content of an element, protecting against sensitive data collection. * Concats textContent of each of the element's text node children; this avoids potential * collection of sensitive data that could happen if we used element.textContent and the * element had sensitive child elements, since element.textContent includes child content. * Scrubs values that look like they could be sensitive (i.e. cc or ssn number). * @param {Element} el - element to get the text of * @param {Array} allowSelectors - CSS selectors for elements that should be included * @returns {string} the element's direct text content */ function getSafeText(el, ev, allowElementCallback, allowSelectors) { var elText = ""; if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) && el.childNodes && el.childNodes.length) _.each(el.childNodes, function(child) { if (isTextNode(child) && child.textContent) elText += _.trim(child.textContent).split(/(\s+)/).filter(shouldTrackValue).join("").replace(/[\r\n]/g, " ").replace(/[ ]+/g, " ").substring(0, 255); }); return _.trim(elText); } function guessRealClickTarget(ev) { var target = ev.target; var composedPath = ev["composedPath"](); for (var i = 0; i < composedPath.length; i++) { var node = composedPath[i]; if (isTag(node, "a") || isTag(node, "button") || isTag(node, "input") || isTag(node, "select") || node.getAttribute && node.getAttribute("role") === "button") { target = node; break; } if (node === target) break; } return target; } function isElementAllowed(el, ev, allowElementCallback, allowSelectors) { if (allowElementCallback) try { if (!allowElementCallback(el, ev)) return false; } catch (err) { logger$1.critical("Error while checking element in allowElementCallback", err); return false; } if (!allowSelectors.length) return true; for (var i = 0; i < allowSelectors.length; i++) { var sel = allowSelectors[i]; try { if (el["matches"](sel)) return true; } catch (err) { logger$1.critical("Error while checking selector: " + sel, err); } } return false; } function isElementBlocked(el, ev, blockElementCallback, blockSelectors) { var i; if (blockElementCallback) try { if (blockElementCallback(el, ev)) return true; } catch (err) { logger$1.critical("Error while checking element in blockElementCallback", err); return true; } if (blockSelectors && blockSelectors.length) for (i = 0; i < blockSelectors.length; i++) { var sel = blockSelectors[i]; try { if (el["matches"](sel)) return true; } catch (err) { logger$1.critical("Error while checking selector: " + sel, err); } } var classes = getClasses(el); for (i = 0; i < OPT_OUT_CLASSES.length; i++) if (classes[OPT_OUT_CLASSES[i]]) return true; return false; } function isElementNode(node) { return node && node.nodeType === 1; } function isTag(el, tag) { return el && el.tagName && el.tagName.toLowerCase() === tag.toLowerCase(); } function isTextNode(node) { return node && node.nodeType === 3; } function minDOMApisSupported() { try { return !!document$1.createElement("div")["matches"]; } catch (err) { return false; } } function weakSetSupported() { return typeof WeakSet !== "undefined"; } function shouldTrackDomEvent(el, ev) { if (!el || isTag(el, "html") || !isElementNode(el)) return false; switch (el.tagName.toLowerCase()) { case "form": return ev.type === EV_SUBMIT; case "input": if (["button", "submit"].indexOf(el.getAttribute("type")) === -1) return ev.type === EV_CHANGE; else return ev.type === EV_CLICK; case "select": case "textarea": return ev.type === EV_CHANGE; default: return ev.type === EV_CLICK; } } function shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) { var i; if (!isElementAllowed(el, ev, allowElementCallback, allowSelectors)) return false; for (var curEl = el; curEl.parentNode && !isTag(curEl, "body"); curEl = curEl.parentNode) { var classes = getClasses(curEl); for (i = 0; i < SENSITIVE_DATA_CLASSES.length; i++) if (classes[SENSITIVE_DATA_CLASSES[i]]) return false; } var elClasses = getClasses(el); for (i = 0; i < OPT_IN_CLASSES.length; i++) if (elClasses[OPT_IN_CLASSES[i]]) return true; if (isTag(el, "input") || isTag(el, "select") || isTag(el, "textarea") || el.getAttribute("contenteditable") === "true") return false; var type = el.type || ""; if (typeof type === "string") switch (type.toLowerCase()) { case "hidden": return false; case "password": return false; } var name = el.name || el.id || ""; if (typeof name === "string") { if (/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(name.replace(/[^a-zA-Z0-9]/g, ""))) return false; } return true; } function shouldTrackValue(value) { if (value === null || _.isUndefined(value)) return false; if (typeof value === "string") { value = _.trim(value); if (/^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/.test((value || "").replace(/[- ]/g, ""))) return false; if (/(^\d{3}-?\d{2}-?\d{4}$)/.test(value)) return false; } return true; } /** * Creates a cross-browser compatible scroll end function with appropriate event listener. * For browsers that support scrollend, returns the original function with scrollend event. * For browsers without scrollend support, returns a debounced function that triggers * 100ms after the last scroll event to simulate scrollend behavior. * @param {Function} originalFunction - The function to call when scrolling ends * @returns {Object} Object containing listener function and eventType string * @returns {Function} returns.listener - The wrapped function to use as event listener * @returns {string} returns.eventType - The event type to listen for ('scrollend' or 'scroll') */ function getPolyfillScrollEndFunction(originalFunction) { var supportsScrollEnd = "onscrollend" in win; var polyfillFunction = safewrap(originalFunction); var polyfillEvent = EV_SCROLLEND; if (!supportsScrollEnd) { var scrollTimer = null; var scrollDelayMs = 100; polyfillFunction = safewrap(function() { clearTimeout(scrollTimer); scrollTimer = setTimeout(originalFunction, scrollDelayMs); }); polyfillEvent = EV_SCROLL; } return { listener: polyfillFunction, eventType: polyfillEvent }; } function hasInlineEventHandlers(element) { for (var i = 0; i < EVENT_HANDLER_ATTRIBUTES.length; i++) if (element.hasAttribute(EVENT_HANDLER_ATTRIBUTES[i])) return true; return false; } function hasInteractiveAriaRole(element) { var role = element.getAttribute("role"); if (!role) return false; return INTERACTIVE_ARIA_ROLES[role.trim().split(/\s+/)[0].toLowerCase()]; } function hasAnyInteractivityIndicators(element) { var tagName = element.tagName.toLowerCase(); if (tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "details" || tagName === "dialog") return true; if (element.isContentEditable) return true; if (element.onclick || element.onmousedown || element.onmouseup || element.ontouchstart || element.ontouchend) return true; if (hasInlineEventHandlers(element)) return true; if (hasInteractiveAriaRole(element)) return true; if (tagName === "a" && element.hasAttribute("href")) return true; if (element.hasAttribute("tabindex")) return true; return false; } function isDefinitelyNonInteractive(element) { if (!element || !element.tagName) return true; var tagName = element.tagName.toLowerCase(); if (ALWAYS_NON_INTERACTIVE_TAGS[tagName]) return true; if (hasAnyInteractivityIndicators(element)) return false; var parent = element.parentElement; var depth = 0; while (parent && depth < MAX_DEPTH) { if (hasAnyInteractivityIndicators(parent)) return false; if (parent.getRootNode && parent.getRootNode() !== document$1) { var root = parent.getRootNode(); if (root.host && hasAnyInteractivityIndicators(root.host)) return false; } parent = parent.parentElement; depth++; } if (TEXT_CONTAINER_TAGS[tagName]) return true; return false; } function RageClickTracker() { this.clicks = []; } function ShadowDOMObserver(changeCallback, observerConfig) { this.changeCallback = changeCallback || function() {}; this.observerConfig = observerConfig; this.observedShadowRoots = null; this.shadowObservers = []; } function DeadClickTracker(onDeadClickCallback) { this.eventListeners = []; this.mutationObserver = null; this.shadowDOMObserver = null; this.isTracking = false; this.lastChangeEventTimestamp = 0; this.pendingClicks = []; this.onDeadClickCallback = onDeadClickCallback; this.processingActive = false; this.processingTimeout = null; } function init_as_module(bundle_loader) { load_extra_bundle = bundle_loader; init_type = INIT_MODULE; mixpanel_master = new MixpanelLib(); override_mp_init_func(); mixpanel_master["init"](); add_dom_loaded_handler(); return mixpanel_master; } function loadNoop(_src, onload) { onload(); } var win, loc, __defProp, __defNormalProp, __publicField, _a, __defProp$1, __defNormalProp$1, __publicField$1, NodeType$3, testableAccessors$1, testableMethods$1, untaintedBasePrototype$1, isAngularZonePresent$1, untaintedAccessorCache$1, untaintedMethodCache$1, index$1, Mirror, ORIGINAL_ATTRIBUTE_NAME, URL_IN_CSS_REF, URL_PROTOCOL_MATCH, URL_WWW_MATCH, DATA_URI, _id, tagNameRegex, IGNORED_NODE, canvasService, canvasCtx, SRCSET_NOT_SPACES, SRCSET_COMMAS_OR_SPACES, cachedDocument, picocolors_browser$1, x$1, create$1, picocolors_browserExports$1, require$$2$1, pico$1, terminalHighlight$1$1, CssSyntaxError$3$1, cssSyntaxError$1, symbols$1, DEFAULT_RAW$1, Stringifier$2$1, stringifier$1, Stringifier$1$1, stringify_1$1, isClean$2$1, my$2$1, CssSyntaxError$2$1, Stringifier2$1, stringify$3$1, Node$4$1, node$1, Declaration$4$1, declaration$1, urlAlphabet$1, nanoid$1$1, nonSecure$1, SourceMapConsumer$2$1, SourceMapGenerator$2$1, existsSync$1, readFileSync$1, dirname$1$1, join$1, PreviousMap$2$1, previousMap$1, SourceMapConsumer$1$1, SourceMapGenerator$1$1, fileURLToPath$1, pathToFileURL$1$1, isAbsolute$1, resolve$1$1, nanoid$2, terminalHighlight$2, CssSyntaxError$1$1, PreviousMap$1$1, fromOffsetCache$1, sourceMapAvailable$1$1, pathAvailable$1$1, Input$4$1, input$1, SourceMapConsumer$3, SourceMapGenerator$3, dirname$2, relative$1, resolve$2, sep$1, pathToFileURL$2, Input$3$1, sourceMapAvailable$2, pathAvailable$2, mapGenerator$1, Comment$4$1, comment$1, isClean$1$1, my$1$1, Declaration$3$1, Comment$3$1, Node$1$1, parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1, Container$7$1, container$1, Container$6$1, LazyResult$4$1, Processor$3$1, Document$3$1, document$1$1, printed$1, warnOnce$2$1, Warning$2$1, warning$1, Warning$1$1, Result$3$1, result$1, SINGLE_QUOTE$1, DOUBLE_QUOTE$1, BACKSLASH$1, SLASH$1, NEWLINE$1, SPACE$1, FEED$1, TAB$1, CR$1, OPEN_SQUARE$1, CLOSE_SQUARE$1, OPEN_PARENTHESES$1, CLOSE_PARENTHESES$1, OPEN_CURLY$1, CLOSE_CURLY$1, SEMICOLON$1, ASTERISK$1, COLON$1, AT$1, RE_AT_END$1, RE_WORD_END$1, RE_BAD_BRACKET$1, RE_HEX_ESCAPE$1, tokenize$1, Container$5$1, AtRule$3$1, atRule$1, Container$4$1, LazyResult$3$1, Processor$2$1, Root$5$1, root$1, list$2$1, list_1$1, Container$3$1, list$1$1, Rule$3$1, rule$1, Declaration$2$1, tokenizer2$1, Comment$2$1, AtRule$2$1, Root$4$1, Rule$2$1, SAFE_COMMENT_NEIGHBOR$1, parser$1, Container$2$1, Parser2$1, Input$2$1, parse_1$1, isClean$3, my$3, MapGenerator$1$1, stringify$2$1, Container$1$1, Document$2$1, warnOnce$1$1, Result$2$1, parse$2$1, Root$3$1, TYPE_TO_CLASS_NAME$1, PLUGIN_PROPS$1, NOT_VISITORS$1, CHILDREN$1, postcss$2$1, LazyResult$2$1, lazyResult$1, MapGenerator2$1, stringify$1$1, warnOnce2$1, parse$1$1, Result$1$1, NoWorkResult$1$1, noWorkResult$1, NoWorkResult2$1, LazyResult$1$1, Document$1$1, Root$2$1, Processor$1$1, processor$1, Declaration$1$1, PreviousMap2$1, Comment$1$1, AtRule$1$1, Input$1$1, Root$1$1, Rule$1$1, fromJSON_1$1, CssSyntaxError2$1, Declaration2$1, LazyResult2$1, Container2$1, Processor2$1, stringify$5, fromJSON$2, Document22, Warning2$1, Comment2$1, AtRule2$1, Result2$1, Input2$1, parse$5, list$3, Rule2$1, Root2$1, Node2$1, postcss_1$1, postcss$1$1, __defProp2, __defNormalProp2, __publicField2, picocolors_browser, x, create, picocolors_browserExports, require$$2, pico, terminalHighlight$1, CssSyntaxError$3, cssSyntaxError, symbols, DEFAULT_RAW, Stringifier$2, stringifier, Stringifier$1, stringify_1, isClean$2, my$2, CssSyntaxError$2, Stringifier22, stringify$3, Node$4, node, Declaration$4, declaration, urlAlphabet, nanoid$1, nonSecure, SourceMapConsumer$2, SourceMapGenerator$2, existsSync, readFileSync, dirname$1, join, PreviousMap$2, previousMap, SourceMapConsumer$1, SourceMapGenerator$1, fileURLToPath, pathToFileURL$1, isAbsolute, resolve$1, nanoid, terminalHighlight, CssSyntaxError$1, PreviousMap$1, fromOffsetCache, sourceMapAvailable$1, pathAvailable$1, Input$4, input, SourceMapConsumer, SourceMapGenerator, dirname, relative, resolve$3, sep, pathToFileURL, Input$3, sourceMapAvailable, pathAvailable, mapGenerator, Comment$4, comment, isClean$1, my$1, Declaration$3, Comment$3, Node$1, parse$4, Rule$4, AtRule$4, Root$6, Container$7, container, Container$6, LazyResult$4, Processor$3, Document$3, document$1$2, printed, warnOnce$2, Warning$2, warning, Warning$1, Result$3, result, SINGLE_QUOTE, DOUBLE_QUOTE, BACKSLASH, SLASH, NEWLINE, SPACE, FEED, TAB, CR, OPEN_SQUARE, CLOSE_SQUARE, OPEN_PARENTHESES, CLOSE_PARENTHESES, OPEN_CURLY, CLOSE_CURLY, SEMICOLON, ASTERISK, COLON, AT, RE_AT_END, RE_WORD_END, RE_BAD_BRACKET, RE_HEX_ESCAPE, tokenize, Container$5, AtRule$3, atRule, Container$4, LazyResult$3, Processor$2, Root$5, root, list$2, list_1, Container$3, list$1, Rule$3, rule, Declaration$2, tokenizer22, Comment$2, AtRule$2, Root$4, Rule$2, SAFE_COMMENT_NEIGHBOR, parser, Container$2, Parser22, Input$2, parse_1, isClean, my, MapGenerator$1, stringify$2, Container$1, Document$2, warnOnce$1, Result$2, parse$2, Root$3, TYPE_TO_CLASS_NAME, PLUGIN_PROPS, NOT_VISITORS, CHILDREN, postcss$2, LazyResult$2, lazyResult, MapGenerator22, stringify$1, warnOnce22, parse$1, Result$1, NoWorkResult$1, noWorkResult, NoWorkResult22, LazyResult$1, Document$1, Root$2, Processor$1, processor, Declaration$1, PreviousMap22, Comment$1, AtRule$1, Input$1, Root$1, Rule$1, fromJSON_1, CssSyntaxError22, Declaration22, LazyResult22, Container22, Processor22, stringify, fromJSON, Document222, Warning22, Comment22, AtRule22, Result22, Input22, parse, list, Rule22, Root22, Node22, postcss_1, postcss$1, BaseRRNode, testableAccessors, testableMethods, untaintedBasePrototype, isAngularZonePresent, untaintedAccessorCache, untaintedMethodCache, index, DEPARTED_MIRROR_ACCESS_WARNING, _mirror, nowTimestamp, StyleSheetMirror, EventType, IncrementalSource, MouseInteractions, PointerTypes, CanvasContext, MediaInteractions, NodeType, DoubleLinkedList, moveKey, MutationBuffer, errorHandler, callbackWrapper, mutationBuffers, INPUT_TAGS, lastInputValueMap, CrossOriginIframeMirror, IframeManager, ShadowDomManager, chars, lookup, i$1, encode, canvasVarMap, saveWebGLVar, serializeArgs, isInstanceOfWebGLObject, encodedJs, decodeBase64, blob, CanvasManager, StylesheetManager, ProcessedNodeManager, wrappedEmit, takeFullSnapshot$1, canvasManager, recording, cleanFrame, mirror, n, setImmediate, builtInProp, cycle, schedulingQueue, ToString, timer, PromisePrototype, PromisePolyfill, Config, MAX_RECORDING_MS, MAX_VALUE_FOR_MIN_RECORDING_MS, ArrayProto, FuncProto, ObjProto, slice, toString, hasOwnProperty, windowConsole, navigator$1, document$1, windowOpera, screen, userAgent, nativeBind, nativeForEach, nativeIndexOf, nativeMap, nativeIsArray, breaker, _, console$1, log_func_with_prefix, console_with_prefix, safewrap, safewrapClass, BLOCKED_UA_STRS, _testStorageSupported, _localStorageSupported, localStorageSupported, _sessionStorageSupported, sessionStorageSupported, TOKEN_MATCH_REGEX, CAMPAIGN_KEYWORDS, CLICK_IDS, batchedThrottle, cheap_guid, generateTraceparent, SIMPLE_DOMAIN_MATCH_REGEX, DOMAIN_MATCH_REGEX, extract_domain, isOnline, NOOP_FUNC, JSONStringify, JSONParse, MIXPANEL_DB_NAME, RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME, DB_VERSION, OBJECT_STORES, IDBStorageWrapper, GDPR_DEFAULT_PERSISTENCE_PREFIX, logger$6, SharedLock, LocalStorageWrapper, logger$5, RequestQueue, filterOutIDsAndInvalid, updatePayloads, MAX_RETRY_INTERVAL_MS, logger$4, RequestBatcher, isRecordingExpired, RECORD_ENQUEUE_THROTTLE_MS, logger$3, CompressionStream, RECORDER_BATCHER_LIB_CONFIG, ACTIVE_SOURCES, SessionRecording, RecordingRegistry, logger$2, MixpanelRecorder, EV_CHANGE, EV_CLICK, EV_HASHCHANGE, EV_INPUT, EV_LOAD, EV_MP_LOCATION_CHANGE, EV_POPSTATE, EV_SCROLLEND, EV_SCROLL, EV_SELECT, EV_SUBMIT, EV_TOGGLE, EV_VISIBILITYCHANGE, CLICK_EVENT_PROPS, OPT_IN_CLASSES, OPT_OUT_CLASSES, SENSITIVE_DATA_CLASSES, TRACKED_ATTRS, INTERACTIVE_ARIA_ROLES, ALWAYS_NON_INTERACTIVE_TAGS, TEXT_CONTAINER_TAGS, EVENT_HANDLER_ATTRIBUTES, MAX_DEPTH, logger$1, DEFAULT_RAGE_CLICK_THRESHOLD_PX, DEFAULT_RAGE_CLICK_TIMEOUT_MS, DEFAULT_RAGE_CLICK_CLICK_COUNT, DEFAULT_DEAD_CLICK_TIMEOUT_MS, INTERACTION_EVENTS, LAYOUT_EVENTS, NAVIGATION_EVENTS, MUTATION_OBSERVER_CONFIG, AUTOCAPTURE_CONFIG_KEY, LEGACY_PAGEVIEW_CONFIG_KEY, PAGEVIEW_OPTION_FULL_URL, PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING, PAGEVIEW_OPTION_URL_WITH_PATH, CONFIG_ALLOW_ELEMENT_CALLBACK, CONFIG_ALLOW_SELECTORS, CONFIG_ALLOW_URL_REGEXES, CONFIG_BLOCK_ATTRS, CONFIG_BLOCK_ELEMENT_CALLBACK, CONFIG_BLOCK_SELECTORS, CONFIG_BLOCK_URL_REGEXES, CONFIG_CAPTURE_EXTRA_ATTRS, CONFIG_CAPTURE_TEXT_CONTENT, CONFIG_SCROLL_CAPTURE_ALL, CONFIG_SCROLL_CHECKPOINTS, CONFIG_TRACK_CLICK, CONFIG_TRACK_DEAD_CLICK, CONFIG_TRACK_INPUT, CONFIG_TRACK_PAGEVIEW, CONFIG_TRACK_RAGE_CLICK, CONFIG_TRACK_SCROLL, CONFIG_TRACK_PAGE_LEAVE, CONFIG_TRACK_SUBMIT, CONFIG_DEFAULTS$1, DEFAULT_PROPS, MP_EV_CLICK, MP_EV_DEAD_CLICK, MP_EV_INPUT, MP_EV_RAGE_CLICK, MP_EV_SCROLL, MP_EV_SUBMIT, MP_EV_PAGE_LEAVE, Autocapture, logger, FLAGS_CONFIG_KEY, CONFIG_CONTEXT, CONFIG_DEFAULTS, FeatureFlagManager, DomTracker, LinkTracker, FormTracker, SET_ACTION, SET_ONCE_ACTION, UNSET_ACTION, ADD_ACTION, APPEND_ACTION, UNION_ACTION, REMOVE_ACTION, DELETE_ACTION, apiActions, MixpanelGroup, MixpanelPeople, SET_QUEUE_KEY, SET_ONCE_QUEUE_KEY, UNSET_QUEUE_KEY, ADD_QUEUE_KEY, APPEND_QUEUE_KEY, REMOVE_QUEUE_KEY, UNION_QUEUE_KEY, PEOPLE_DISTINCT_ID_KEY, ALIAS_ID_KEY, EVENT_TIMERS_KEY, RESERVED_PROPERTIES, MixpanelPersistence, init_type, load_extra_bundle, mixpanel_master, INIT_MODULE, INIT_SNIPPET, IDENTITY_FUNC, PRIMARY_INSTANCE_NAME, PAYLOAD_TYPE_BASE64, PAYLOAD_TYPE_JSON, DEVICE_ID_PREFIX, USE_XHR, ENQUEUE_REQUESTS, sendBeacon, DEFAULT_API_ROUTES, DEFAULT_CONFIG, DOM_LOADED, MixpanelLib, create_mplib, REGISTER_DEFAULTS, options_for_register, instances, extend_mp, override_mp_init_func, add_dom_loaded_handler, mixpanel; var init_mixpanel_module = __esmMin((() => { ; if (typeof window === "undefined") { loc = { hostname: "" }; win = { crypto: { randomUUID: function() { throw Error("unsupported"); } }, navigator: { userAgent: "", onLine: true }, document: { createElement: function() { return {}; }, location: loc, referrer: "" }, screen: { width: 0, height: 0 }, location: loc, addEventListener: function() {}, removeEventListener: function() {} }; } else win = window; __defProp = Object.defineProperty; __defNormalProp = function(obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; }; __publicField = function(obj, key, value) { return __defNormalProp(obj, (typeof key === "undefined" ? "undefined" : _type_of(key)) !== "symbol" ? key + "" : key, value); }; ; __defProp$1 = Object.defineProperty; __defNormalProp$1 = function(obj, key, value) { return key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; }; __publicField$1 = function(obj, key, value) { return __defNormalProp$1(obj, (typeof key === "undefined" ? "undefined" : _type_of(key)) !== "symbol" ? key + "" : key, value); }; NodeType$3 = /* @__PURE__ */ function(NodeType2) { NodeType2[NodeType2["Document"] = 0] = "Document"; NodeType2[NodeType2["DocumentType"] = 1] = "DocumentType"; NodeType2[NodeType2["Element"] = 2] = "Element"; NodeType2[NodeType2["Text"] = 3] = "Text"; NodeType2[NodeType2["CDATA"] = 4] = "CDATA"; NodeType2[NodeType2["Comment"] = 5] = "Comment"; return NodeType2; }(NodeType$3 || {}); testableAccessors$1 = { Node: [ "childNodes", "parentNode", "parentElement", "textContent" ], ShadowRoot: ["host", "styleSheets"], Element: [ "shadowRoot", "querySelector", "querySelectorAll" ], MutationObserver: [] }; testableMethods$1 = { Node: ["contains", "getRootNode"], ShadowRoot: ["getSelection"], Element: [], MutationObserver: ["constructor"] }; untaintedBasePrototype$1 = {}; isAngularZonePresent$1 = function() { return !!globalThis.Zone; }; untaintedAccessorCache$1 = {}; untaintedMethodCache$1 = {}; index$1 = { childNodes: childNodes$1, parentNode: parentNode$1, parentElement: parentElement$1, textContent: textContent$1, contains: contains$1, getRootNode: getRootNode$1, host: host$1, styleSheets: styleSheets$1, shadowRoot: shadowRoot$1, querySelector: querySelector$1, querySelectorAll: querySelectorAll$1, mutationObserver: mutationObserverCtor$1, patch: patch$1 }; Mirror = /*#__PURE__*/ function() { function Mirror() { __publicField$1(this, "idNodeMap", /* @__PURE__ */ new Map()); __publicField$1(this, "nodeMetaMap", /* @__PURE__ */ new WeakMap()); } var _proto = Mirror.prototype; _proto.getId = function getId(n2) { var _a2; if (!n2) return -1; var id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id; return id != null ? id : -1; }; _proto.getNode = function getNode(id) { return this.idNodeMap.get(id) || null; }; _proto.getIds = function getIds() { return Array.from(this.idNodeMap.keys()); }; _proto.getMeta = function getMeta(n2) { return this.nodeMetaMap.get(n2) || null; }; _proto.removeNodeFromMap = function removeNodeFromMap(n2) { var _this = this; var id = this.getId(n2); this.idNodeMap.delete(id); if (n2.childNodes) n2.childNodes.forEach(function(childNode) { return _this.removeNodeFromMap(childNode); }); }; _proto.has = function has(id) { return this.idNodeMap.has(id); }; _proto.hasNode = function hasNode(node2) { return this.nodeMetaMap.has(node2); }; _proto.add = function add(n2, meta) { var id = meta.id; this.idNodeMap.set(id, n2); this.nodeMetaMap.set(n2, meta); }; _proto.replace = function replace(id, n2) { var oldNode = this.getNode(id); if (oldNode) { var meta = this.nodeMetaMap.get(oldNode); if (meta) this.nodeMetaMap.set(n2, meta); } this.idNodeMap.set(id, n2); }; _proto.reset = function reset() { this.idNodeMap = /* @__PURE__ */ new Map(); this.nodeMetaMap = /* @__PURE__ */ new WeakMap(); }; return Mirror; }(); ORIGINAL_ATTRIBUTE_NAME = "__rrweb_original__"; URL_IN_CSS_REF = /url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm; URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\/\//i; URL_WWW_MATCH = /^www\..*/i; DATA_URI = /^(data:)([^,]*),(.*)/i; _id = 1; tagNameRegex = /* @__PURE__ */ new RegExp("[^a-z0-9-_:]"); IGNORED_NODE = -2; ; ; SRCSET_NOT_SPACES = /^[^ \t\n\r\u000c]+/; SRCSET_COMMAS_OR_SPACES = /^[, \t\n\r\u000c]+/; cachedDocument = /* @__PURE__ */ new WeakMap(); picocolors_browser$1 = { exports: {} }; x$1 = String; create$1 = function create$1() { return { isColorSupported: false, reset: x$1, bold: x$1, dim: x$1, italic: x$1, underline: x$1, inverse: x$1, hidden: x$1, strikethrough: x$1, black: x$1, red: x$1, green: x$1, yellow: x$1, blue: x$1, magenta: x$1, cyan: x$1, white: x$1, gray: x$1, bgBlack: x$1, bgRed: x$1, bgGreen: x$1, bgYellow: x$1, bgBlue: x$1, bgMagenta: x$1, bgCyan: x$1, bgWhite: x$1 }; }; picocolors_browser$1.exports = create$1(); picocolors_browser$1.exports.createColors = create$1; picocolors_browserExports$1 = picocolors_browser$1.exports; require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(/* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: {} }, Symbol.toStringTag, { value: "Module" }))); pico$1 = picocolors_browserExports$1; terminalHighlight$1$1 = require$$2$1; CssSyntaxError$3$1 = /*#__PURE__*/ function(Error1) { _inherits(CssSyntaxError, Error1); function CssSyntaxError(message, line, column, source, file, plugin22) { var _this = Error1.call(this, message) || this; _this.name = "CssSyntaxError"; _this.reason = message; if (file) _this.file = file; if (source) _this.source = source; if (plugin22) _this.plugin = plugin22; if (typeof line !== "undefined" && typeof column !== "undefined") if (typeof line === "number") { _this.line = line; _this.column = column; } else { _this.line = line.line; _this.column = line.column; _this.endLine = column.line; _this.endColumn = column.column; } _this.setMessage(); if (Error.captureStackTrace) Error.captureStackTrace(_this, CssSyntaxError); return _this; } var _proto = CssSyntaxError.prototype; _proto.setMessage = function setMessage() { this.message = this.plugin ? this.plugin + ": " : ""; this.message += this.file ? this.file : ""; if (typeof this.line !== "undefined") this.message += ":" + this.line + ":" + this.column; this.message += ": " + this.reason; }; _proto.showSourceCode = function showSourceCode(color) { var _this = this; if (!this.source) return ""; var css = this.source; if (color == null) color = pico$1.isColorSupported; if (terminalHighlight$1$1) { if (color) css = terminalHighlight$1$1(css); } var lines = css.split(/\r?\n/); var start = Math.max(this.line - 3, 0); var end = Math.min(this.line + 2, lines.length); var maxWidth = String(end).length; var mark; var aside; if (color) { var _pico$1_createColors = pico$1.createColors(true); var bold = _pico$1_createColors.bold; var gray = _pico$1_createColors.gray; var red = _pico$1_createColors.red; mark = function(text) { return bold(red(text)); }; aside = function(text) { return gray(text); }; } else mark = aside = function(str) { return str; }; return lines.slice(start, end).map(function(line, index2) { var number = start + 1 + index2; var gutter = " " + (" " + number).slice(-maxWidth) + " | "; if (number === _this.line) { var spacing = aside(gutter.replace(/\d/g, " ")) + line.slice(0, _this.column - 1).replace(/[^\t]/g, " "); return mark(">") + aside(gutter) + line + "\n " + spacing + mark("^"); } return " " + aside(gutter) + line; }).join("\n"); }; _proto.toString = function toString() { var code = this.showSourceCode(); if (code) code = "\n\n" + code + "\n"; return this.name + ": " + this.message + code; }; return CssSyntaxError; }(_wrap_native_super(Error)); cssSyntaxError$1 = CssSyntaxError$3$1; CssSyntaxError$3$1.default = CssSyntaxError$3$1; symbols$1 = {}; symbols$1.isClean = Symbol("isClean"); symbols$1.my = Symbol("my"); DEFAULT_RAW$1 = { after: "\n", beforeClose: "\n", beforeComment: "\n", beforeDecl: "\n", beforeOpen: " ", beforeRule: "\n", colon: ": ", commentLeft: " ", commentRight: " ", emptyBody: "", indent: " ", semicolon: false }; Stringifier$2$1 = /*#__PURE__*/ function() { function Stringifier(builder) { this.builder = builder; } var _proto = Stringifier.prototype; _proto.atrule = function atrule(node2, semicolon) { var name = "@" + node2.name; var params = node2.params ? this.rawValue(node2, "params") : ""; if (typeof node2.raws.afterName !== "undefined") name += node2.raws.afterName; else if (params) name += " "; if (node2.nodes) this.block(node2, name + params); else { var end = (node2.raws.between || "") + (semicolon ? ";" : ""); this.builder(name + params + end, node2); } }; _proto.beforeAfter = function beforeAfter(node2, detect) { var value; if (node2.type === "decl") value = this.raw(node2, null, "beforeDecl"); else if (node2.type === "comment") value = this.raw(node2, null, "beforeComment"); else if (detect === "before") value = this.raw(node2, null, "beforeRule"); else value = this.raw(node2, null, "beforeClose"); var buf = node2.parent; var depth = 0; while (buf && buf.type !== "root") { depth += 1; buf = buf.parent; } if (value.includes("\n")) { var indent = this.raw(node2, null, "indent"); if (indent.length) for (var step = 0; step < depth; step++) value += indent; } return value; }; _proto.block = function block(node2, start) { var between = this.raw(node2, "between", "beforeOpen"); this.builder(start + between + "{", node2, "start"); var after; if (node2.nodes && node2.nodes.length) { this.body(node2); after = this.raw(node2, "after"); } else after = this.raw(node2, "after", "emptyBody"); if (after) this.builder(after); this.builder("}", node2, "end"); }; _proto.body = function body(node2) { var last = node2.nodes.length - 1; while (last > 0) { if (node2.nodes[last].type !== "comment") break; last -= 1; } var semicolon = this.raw(node2, "semicolon"); for (var i2 = 0; i2 < node2.nodes.length; i2++) { var child = node2.nodes[i2]; var before = this.raw(child, "before"); if (before) this.builder(before); this.stringify(child, last !== i2 || semicolon); } }; _proto.comment = function comment(node2) { var left = this.raw(node2, "left", "commentLeft"); var right = this.raw(node2, "right", "commentRight"); this.builder("/*" + left + node2.text + right + "*/", node2); }; _proto.decl = function decl(node2, semicolon) { var between = this.raw(node2, "between", "colon"); var string = node2.prop + between + this.rawValue(node2, "value"); if (node2.important) string += node2.raws.important || " !important"; if (semicolon) string += ";"; this.builder(string, node2); }; _proto.document = function document1(node2) { this.body(node2); }; _proto.raw = function raw(node2, own, detect) { var value; if (!detect) detect = own; if (own) { value = node2.raws[own]; if (typeof value !== "undefined") return value; } var parent = node2.parent; if (detect === "before") { if (!parent || parent.type === "root" && parent.first === node2) return ""; if (parent && parent.type === "document") return ""; } if (!parent) return DEFAULT_RAW$1[detect]; var root2 = node2.root(); if (!root2.rawCache) root2.rawCache = {}; if (typeof root2.rawCache[detect] !== "undefined") return root2.rawCache[detect]; if (detect === "before" || detect === "after") return this.beforeAfter(node2, detect); else { var method = "raw" + capitalize$1(detect); if (this[method]) value = this[method](root2, node2); else root2.walk(function(i2) { value = i2.raws[own]; if (typeof value !== "undefined") return false; }); } if (typeof value === "undefined") value = DEFAULT_RAW$1[detect]; root2.rawCache[detect] = value; return value; }; _proto.rawBeforeClose = function rawBeforeClose(root2) { var value; root2.walk(function(i2) { if (i2.nodes && i2.nodes.length > 0) { if (typeof i2.raws.after !== "undefined") { value = i2.raws.after; if (value.includes("\n")) value = value.replace(/[^\n]+$/, ""); return false; } } }); if (value) value = value.replace(/\S/g, ""); return value; }; _proto.rawBeforeComment = function rawBeforeComment(root2, node2) { var value; root2.walkComments(function(i2) { if (typeof i2.raws.before !== "undefined") { value = i2.raws.before; if (value.includes("\n")) value = value.replace(/[^\n]+$/, ""); return false; } }); if (typeof value === "undefined") value = this.raw(node2, null, "beforeDecl"); else if (value) value = value.replace(/\S/g, ""); return value; }; _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) { var value; root2.walkDecls(function(i2) { if (typeof i2.raws.before !== "undefined") { value = i2.raws.before; if (value.includes("\n")) value = value.replace(/[^\n]+$/, ""); return false; } }); if (typeof value === "undefined") value = this.raw(node2, null, "beforeRule"); else if (value) value = value.replace(/\S/g, ""); return value; }; _proto.rawBeforeOpen = function rawBeforeOpen(root2) { var value; root2.walk(function(i2) { if (i2.type !== "decl") { value = i2.raws.between; if (typeof value !== "undefined") return false; } }); return value; }; _proto.rawBeforeRule = function rawBeforeRule(root2) { var value; root2.walk(function(i2) { if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) { if (typeof i2.raws.before !== "undefined") { value = i2.raws.before; if (value.includes("\n")) value = value.replace(/[^\n]+$/, ""); return false; } } }); if (value) value = value.replace(/\S/g, ""); return value; }; _proto.rawColon = function rawColon(root2) { var value; root2.walkDecls(function(i2) { if (typeof i2.raws.between !== "undefined") { value = i2.raws.between.replace(/[^\s:]/g, ""); return false; } }); return value; }; _proto.rawEmptyBody = function rawEmptyBody(root2) { var value; root2.walk(function(i2) { if (i2.nodes && i2.nodes.length === 0) { value = i2.raws.after; if (typeof value !== "undefined") return false; } }); return value; }; _proto.rawIndent = function rawIndent(root2) { if (root2.raws.indent) return root2.raws.indent; var value; root2.walk(function(i2) { var p = i2.parent; if (p && p !== root2 && p.parent && p.parent === root2) { if (typeof i2.raws.before !== "undefined") { var parts = i2.raws.before.split("\n"); value = parts[parts.length - 1]; value = value.replace(/\S/g, ""); return false; } } }); return value; }; _proto.rawSemicolon = function rawSemicolon(root2) { var value; root2.walk(function(i2) { if (i2.nodes && i2.nodes.length && i2.last.type === "decl") { value = i2.raws.semicolon; if (typeof value !== "undefined") return false; } }); return value; }; _proto.rawValue = function rawValue(node2, prop) { var value = node2[prop]; var raw = node2.raws[prop]; if (raw && raw.value === value) return raw.raw; return value; }; _proto.root = function root(node2) { this.body(node2); if (node2.raws.after) this.builder(node2.raws.after); }; _proto.rule = function rule(node2) { this.block(node2, this.rawValue(node2, "selector")); if (node2.raws.ownSemicolon) this.builder(node2.raws.ownSemicolon, node2, "end"); }; _proto.stringify = function stringify(node2, semicolon) { if (!this[node2.type]) throw new Error("Unknown AST node type " + node2.type + ". Maybe you need to change PostCSS stringifier."); this[node2.type](node2, semicolon); }; return Stringifier; }(); stringifier$1 = Stringifier$2$1; Stringifier$2$1.default = Stringifier$2$1; Stringifier$1$1 = stringifier$1; stringify_1$1 = stringify$4$1; stringify$4$1.default = stringify$4$1; isClean$2$1 = symbols$1.isClean; my$2$1 = symbols$1.my; CssSyntaxError$2$1 = cssSyntaxError$1; Stringifier2$1 = stringifier$1; stringify$3$1 = stringify_1$1; Node$4$1 = /*#__PURE__*/ function() { function Node2(defaults) { if (defaults === void 0) defaults = {}; this.raws = {}; this[isClean$2$1] = false; this[my$2$1] = true; for (var name in defaults) if (name === "nodes") { this.nodes = []; for (var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;) { var node2 = _step.value; if (typeof node2.clone === "function") this.append(node2.clone()); else this.append(node2); } } else this[name] = defaults[name]; } var _proto = Node2.prototype; _proto.addToError = function addToError(error) { error.postcssNode = this; if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { var s2 = this.source; error.stack = error.stack.replace(/\n\s{4}at /, "$&" + s2.input.from + ":" + s2.start.line + ":" + s2.start.column + "$&"); } return error; }; _proto.after = function after(add) { this.parent.insertAfter(this, add); return this; }; _proto.assign = function assign(overrides) { if (overrides === void 0) overrides = {}; for (var name in overrides) this[name] = overrides[name]; return this; }; _proto.before = function before(add) { this.parent.insertBefore(this, add); return this; }; _proto.cleanRaws = function cleanRaws(keepBetween) { delete this.raws.before; delete this.raws.after; if (!keepBetween) delete this.raws.between; }; _proto.clone = function clone(overrides) { if (overrides === void 0) overrides = {}; var cloned = cloneNode$1(this); for (var name in overrides) cloned[name] = overrides[name]; return cloned; }; _proto.cloneAfter = function cloneAfter(overrides) { if (overrides === void 0) overrides = {}; var cloned = this.clone(overrides); this.parent.insertAfter(this, cloned); return cloned; }; _proto.cloneBefore = function cloneBefore(overrides) { if (overrides === void 0) overrides = {}; var cloned = this.clone(overrides); this.parent.insertBefore(this, cloned); return cloned; }; _proto.error = function error(message, opts) { if (opts === void 0) opts = {}; if (this.source) { var _this_rangeBy = this.rangeBy(opts); var end = _this_rangeBy.end; var start = _this_rangeBy.start; return this.source.input.error(message, { column: start.column, line: start.line }, { column: end.column, line: end.line }, opts); } return new CssSyntaxError$2$1(message); }; _proto.getProxyProcessor = function getProxyProcessor() { return { get: function get(node2, prop) { if (prop === "proxyOf") return node2; else if (prop === "root") return function() { return node2.root().toProxy(); }; else return node2[prop]; }, set: function set(node2, prop, value) { if (node2[prop] === value) return true; node2[prop] = value; if (prop === "prop" || prop === "value" || prop === "name" || prop === "params" || prop === "important" || prop === "text") node2.markDirty(); return true; } }; }; _proto.markDirty = function markDirty() { if (this[isClean$2$1]) { this[isClean$2$1] = false; var next = this; while (next = next.parent) next[isClean$2$1] = false; } }; _proto.next = function next() { if (!this.parent) return void 0; var index2 = this.parent.index(this); return this.parent.nodes[index2 + 1]; }; _proto.positionBy = function positionBy(opts, stringRepresentation) { var pos = this.source.start; if (opts.index) pos = this.positionInside(opts.index, stringRepresentation); else if (opts.word) { stringRepresentation = this.toString(); var index2 = stringRepresentation.indexOf(opts.word); if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation); } return pos; }; _proto.positionInside = function positionInside(index2, stringRepresentation) { var string = stringRepresentation || this.toString(); var column = this.source.start.column; var line = this.source.start.line; for (var i2 = 0; i2 < index2; i2++) if (string[i2] === "\n") { column = 1; line += 1; } else column += 1; return { column, line }; }; _proto.prev = function prev() { if (!this.parent) return void 0; var index2 = this.parent.index(this); return this.parent.nodes[index2 - 1]; }; _proto.rangeBy = function rangeBy(opts) { var start = { column: this.source.start.column, line: this.source.start.line }; var end = this.source.end ? { column: this.source.end.column + 1, line: this.source.end.line } : { column: start.column + 1, line: start.line }; if (opts.word) { var stringRepresentation = this.toString(); var index2 = stringRepresentation.indexOf(opts.word); if (index2 !== -1) { start = this.positionInside(index2, stringRepresentation); end = this.positionInside(index2 + opts.word.length, stringRepresentation); } } else { if (opts.start) start = { column: opts.start.column, line: opts.start.line }; else if (opts.index) start = this.positionInside(opts.index); if (opts.end) end = { column: opts.end.column, line: opts.end.line }; else if (typeof opts.endIndex === "number") end = this.positionInside(opts.endIndex); else if (opts.index) end = this.positionInside(opts.index + 1); } if (end.line < start.line || end.line === start.line && end.column <= start.column) end = { column: start.column + 1, line: start.line }; return { end, start }; }; _proto.raw = function raw(prop, defaultType) { return new Stringifier2$1().raw(this, prop, defaultType); }; _proto.remove = function remove() { if (this.parent) this.parent.removeChild(this); this.parent = void 0; return this; }; _proto.replaceWith = function replaceWith() { for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) nodes[_key] = arguments[_key]; if (this.parent) { var bookmark = this; var foundSelf = false; for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; if (node2 === this) foundSelf = true; else if (foundSelf) { this.parent.insertAfter(bookmark, node2); bookmark = node2; } else this.parent.insertBefore(bookmark, node2); } if (!foundSelf) this.remove(); } return this; }; _proto.root = function root() { var result2 = this; while (result2.parent && result2.parent.type !== "document") result2 = result2.parent; return result2; }; _proto.toJSON = function toJSON(_, inputs) { var fixed = {}; var emitInputs = inputs == null; inputs = inputs || /* @__PURE__ */ new Map(); var inputsNextIndex = 0; for (var name in this) { if (!Object.prototype.hasOwnProperty.call(this, name)) continue; if (name === "parent" || name === "proxyCache") continue; var value = this[name]; if (Array.isArray(value)) fixed[name] = value.map(function(i2) { if ((typeof i2 === "undefined" ? "undefined" : _type_of(i2)) === "object" && i2.toJSON) return i2.toJSON(null, inputs); else return i2; }); else if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && value.toJSON) fixed[name] = value.toJSON(null, inputs); else if (name === "source") { var inputId = inputs.get(value.input); if (inputId == null) { inputId = inputsNextIndex; inputs.set(value.input, inputsNextIndex); inputsNextIndex++; } fixed[name] = { end: value.end, inputId, start: value.start }; } else fixed[name] = value; } if (emitInputs) fixed.inputs = [].concat(inputs.keys()).map(function(input2) { return input2.toJSON(); }); return fixed; }; _proto.toProxy = function toProxy() { if (!this.proxyCache) this.proxyCache = new Proxy(this, this.getProxyProcessor()); return this.proxyCache; }; _proto.toString = function toString(stringifier2) { if (stringifier2 === void 0) stringifier2 = stringify$3$1; if (stringifier2.stringify) stringifier2 = stringifier2.stringify; var result2 = ""; stringifier2(this, function(i2) { result2 += i2; }); return result2; }; _proto.warn = function warn(result2, text, opts) { var data = { node: this }; for (var i2 in opts) data[i2] = opts[i2]; return result2.warn(text, data); }; _create_class(Node2, [{ key: "proxyOf", get: function get() { return this; } }]); return Node2; }(); node$1 = Node$4$1; Node$4$1.default = Node$4$1; Declaration$4$1 = /*#__PURE__*/ function(Node$3$1) { _inherits(Declaration, Node$3$1); function Declaration(defaults) { var _this; if (defaults && typeof defaults.value !== "undefined" && typeof defaults.value !== "string") defaults = _extends({}, defaults, { value: String(defaults.value) }); _this = Node$3$1.call(this, defaults) || this; _this.type = "decl"; return _this; } _create_class(Declaration, [{ key: "variable", get: function get() { return this.prop.startsWith("--") || this.prop[0] === "$"; } }]); return Declaration; }(node$1); declaration$1 = Declaration$4$1; Declaration$4$1.default = Declaration$4$1; urlAlphabet$1 = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"; nanoid$1$1 = function(size) { if (size === void 0) size = 21; var id = ""; var i2 = size; while (i2--) id += urlAlphabet$1[Math.random() * 64 | 0]; return id; }; nonSecure$1 = { nanoid: nanoid$1$1 }; SourceMapConsumer$2$1 = require$$2$1.SourceMapConsumer; SourceMapGenerator$2$1 = require$$2$1.SourceMapGenerator; existsSync$1 = require$$2$1.existsSync; readFileSync$1 = require$$2$1.readFileSync; dirname$1$1 = require$$2$1.dirname; join$1 = require$$2$1.join; PreviousMap$2$1 = /*#__PURE__*/ function() { function PreviousMap(css, opts) { if (opts.map === false) return; this.loadAnnotation(css); this.inline = this.startWith(this.annotation, "data:"); var prev = opts.map ? opts.map.prev : void 0; var text = this.loadMap(opts.from, prev); if (!this.mapFile && opts.from) this.mapFile = opts.from; if (this.mapFile) this.root = dirname$1$1(this.mapFile); if (text) this.text = text; } var _proto = PreviousMap.prototype; _proto.consumer = function consumer() { if (!this.consumerCache) this.consumerCache = new SourceMapConsumer$2$1(this.text); return this.consumerCache; }; _proto.decodeInline = function decodeInline(text) { var baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/; var baseUri = /^data:application\/json;base64,/; if (/^data:application\/json;charset=utf-?8,/.test(text) || /^data:application\/json,/.test(text)) return decodeURIComponent(text.substr(RegExp.lastMatch.length)); if (baseCharsetUri.test(text) || baseUri.test(text)) return fromBase64$1(text.substr(RegExp.lastMatch.length)); var encoding = text.match(/data:application\/json;([^,]+),/)[1]; throw new Error("Unsupported source map encoding " + encoding); }; _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) { return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, "").trim(); }; _proto.isMap = function isMap(map) { if ((typeof map === "undefined" ? "undefined" : _type_of(map)) !== "object") return false; return typeof map.mappings === "string" || typeof map._mappings === "string" || Array.isArray(map.sections); }; _proto.loadAnnotation = function loadAnnotation(css) { var comments = css.match(/\/\*\s*# sourceMappingURL=/gm); if (!comments) return; var start = css.lastIndexOf(comments.pop()); var end = css.indexOf("*/", start); if (start > -1 && end > -1) this.annotation = this.getAnnotationURL(css.substring(start, end)); }; _proto.loadFile = function loadFile(path) { this.root = dirname$1$1(path); if (existsSync$1(path)) { this.mapFile = path; return readFileSync$1(path, "utf-8").toString().trim(); } }; _proto.loadMap = function loadMap(file, prev) { if (prev === false) return false; if (prev) if (typeof prev === "string") return prev; else if (typeof prev === "function") { var prevPath = prev(file); if (prevPath) { var map = this.loadFile(prevPath); if (!map) throw new Error("Unable to load previous source map: " + prevPath.toString()); return map; } } else if (_instanceof(prev, SourceMapConsumer$2$1)) return SourceMapGenerator$2$1.fromSourceMap(prev).toString(); else if (_instanceof(prev, SourceMapGenerator$2$1)) return prev.toString(); else if (this.isMap(prev)) return JSON.stringify(prev); else throw new Error("Unsupported previous source map format: " + prev.toString()); else if (this.inline) return this.decodeInline(this.annotation); else if (this.annotation) { var map1 = this.annotation; if (file) map1 = join$1(dirname$1$1(file), map1); return this.loadFile(map1); } }; _proto.startWith = function startWith(string, start) { if (!string) return false; return string.substr(0, start.length) === start; }; _proto.withContent = function withContent() { return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0); }; return PreviousMap; }(); previousMap$1 = PreviousMap$2$1; PreviousMap$2$1.default = PreviousMap$2$1; SourceMapConsumer$1$1 = require$$2$1.SourceMapConsumer; SourceMapGenerator$1$1 = require$$2$1.SourceMapGenerator; fileURLToPath$1 = require$$2$1.fileURLToPath; pathToFileURL$1$1 = require$$2$1.pathToFileURL; isAbsolute$1 = require$$2$1.isAbsolute; resolve$1$1 = require$$2$1.resolve; nanoid$2 = nonSecure$1.nanoid; terminalHighlight$2 = require$$2$1; CssSyntaxError$1$1 = cssSyntaxError$1; PreviousMap$1$1 = previousMap$1; fromOffsetCache$1 = Symbol("fromOffsetCache"); sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1); pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1); Input$4$1 = /*#__PURE__*/ function() { function Input(css, opts) { if (opts === void 0) opts = {}; if (css === null || typeof css === "undefined" || (typeof css === "undefined" ? "undefined" : _type_of(css)) === "object" && !css.toString) throw new Error("PostCSS received " + css + " instead of CSS string"); this.css = css.toString(); if (this.css[0] === "" || this.css[0] === "￾") { this.hasBOM = true; this.css = this.css.slice(1); } else this.hasBOM = false; if (opts.from) if (!pathAvailable$1$1 || /^\w+:\/\//.test(opts.from) || isAbsolute$1(opts.from)) this.file = opts.from; else this.file = resolve$1$1(opts.from); if (pathAvailable$1$1 && sourceMapAvailable$1$1) { var map = new PreviousMap$1$1(this.css, opts); if (map.text) { this.map = map; var file = map.consumer().file; if (!this.file && file) this.file = this.mapResolve(file); } } if (!this.file) this.id = ""; if (this.map) this.map.file = this.from; } var _proto = Input.prototype; _proto.error = function error(message, line, column, opts) { if (opts === void 0) opts = {}; var result2; var endLine; var endColumn; if (line && (typeof line === "undefined" ? "undefined" : _type_of(line)) === "object") { var start = line; var end = column; if (typeof start.offset === "number") { var pos = this.fromOffset(start.offset); line = pos.line; column = pos.col; } else { line = start.line; column = start.column; } if (typeof end.offset === "number") { var pos1 = this.fromOffset(end.offset); endLine = pos1.line; endColumn = pos1.col; } else { endLine = end.line; endColumn = end.column; } } else if (!column) { var pos2 = this.fromOffset(line); line = pos2.line; column = pos2.col; } var origin = this.origin(line, column, endLine, endColumn); if (origin) result2 = new CssSyntaxError$1$1(message, origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line }, origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine }, origin.source, origin.file, opts.plugin); else result2 = new CssSyntaxError$1$1(message, endLine === void 0 ? line : { column, line }, endLine === void 0 ? column : { column: endColumn, line: endLine }, this.css, this.file, opts.plugin); result2.input = { column, endColumn, endLine, line, source: this.css }; if (this.file) { if (pathToFileURL$1$1) result2.input.url = pathToFileURL$1$1(this.file).toString(); result2.input.file = this.file; } return result2; }; _proto.fromOffset = function fromOffset(offset) { var lastLine; var lineToIndex; if (!this[fromOffsetCache$1]) { var lines = this.css.split("\n"); lineToIndex = new Array(lines.length); var prevIndex = 0; for (var i2 = 0, l2 = lines.length; i2 < l2; i2++) { lineToIndex[i2] = prevIndex; prevIndex += lines[i2].length + 1; } this[fromOffsetCache$1] = lineToIndex; } else lineToIndex = this[fromOffsetCache$1]; lastLine = lineToIndex[lineToIndex.length - 1]; var min = 0; if (offset >= lastLine) min = lineToIndex.length - 1; else { var max = lineToIndex.length - 2; var mid; while (min < max) { mid = min + (max - min >> 1); if (offset < lineToIndex[mid]) max = mid - 1; else if (offset >= lineToIndex[mid + 1]) min = mid + 1; else { min = mid; break; } } } return { col: offset - lineToIndex[min] + 1, line: min + 1 }; }; _proto.mapResolve = function mapResolve(file) { if (/^\w+:\/\//.test(file)) return file; return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || ".", file); }; _proto.origin = function origin(line, column, endLine, endColumn) { if (!this.map) return false; var consumer = this.map.consumer(); var from = consumer.originalPositionFor({ column, line }); if (!from.source) return false; var to; if (typeof endLine === "number") to = consumer.originalPositionFor({ column: endColumn, line: endLine }); var fromUrl; if (isAbsolute$1(from.source)) fromUrl = pathToFileURL$1$1(from.source); else fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile)); var result2 = { column: from.column, endColumn: to && to.column, endLine: to && to.line, line: from.line, url: fromUrl.toString() }; if (fromUrl.protocol === "file:") if (fileURLToPath$1) result2.file = fileURLToPath$1(fromUrl); else throw new Error("file: protocol is not available in this PostCSS build"); var source = consumer.sourceContentFor(from.source); if (source) result2.source = source; return result2; }; _proto.toJSON = function toJSON() { var json = {}; for (var _i = 0, _iter = [ "hasBOM", "css", "file", "id" ]; _i < _iter.length; _i++) { var name = _iter[_i]; if (this[name] != null) json[name] = this[name]; } if (this.map) { json.map = _extends({}, this.map); if (json.map.consumerCache) json.map.consumerCache = void 0; } return json; }; _create_class(Input, [{ key: "from", get: function get() { return this.file || this.id; } }]); return Input; }(); input$1 = Input$4$1; Input$4$1.default = Input$4$1; if (terminalHighlight$2 && terminalHighlight$2.registerInput) terminalHighlight$2.registerInput(Input$4$1); SourceMapConsumer$3 = require$$2$1.SourceMapConsumer; SourceMapGenerator$3 = require$$2$1.SourceMapGenerator; dirname$2 = require$$2$1.dirname; relative$1 = require$$2$1.relative; resolve$2 = require$$2$1.resolve; sep$1 = require$$2$1.sep; pathToFileURL$2 = require$$2$1.pathToFileURL; Input$3$1 = input$1; sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3); pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1); mapGenerator$1 = /* @__PURE__ */ function() { function MapGenerator(stringify2, root2, opts, cssString) { this.stringify = stringify2; this.mapOpts = opts.map || {}; this.root = root2; this.opts = opts; this.css = cssString; this.originalCSS = cssString; this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute; this.memoizedFileURLs = /* @__PURE__ */ new Map(); this.memoizedPaths = /* @__PURE__ */ new Map(); this.memoizedURLs = /* @__PURE__ */ new Map(); } var _proto = MapGenerator.prototype; _proto.addAnnotation = function addAnnotation() { var content; if (this.isInline()) content = "data:application/json;base64," + this.toBase64(this.map.toString()); else if (typeof this.mapOpts.annotation === "string") content = this.mapOpts.annotation; else if (typeof this.mapOpts.annotation === "function") content = this.mapOpts.annotation(this.opts.to, this.root); else content = this.outputFile() + ".map"; var eol = "\n"; if (this.css.includes("\r\n")) eol = "\r\n"; this.css += eol + "/*# sourceMappingURL=" + content + " */"; }; _proto.applyPrevMaps = function applyPrevMaps() { for (var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;) { var prev = _step.value; var from = this.toUrl(this.path(prev.file)); var root2 = prev.root || dirname$2(prev.file); var map = void 0; if (this.mapOpts.sourcesContent === false) { map = new SourceMapConsumer$3(prev.text); if (map.sourcesContent) map.sourcesContent = null; } else map = prev.consumer(); this.map.applySourceMap(map, from, this.toUrl(this.path(root2))); } }; _proto.clearAnnotation = function clearAnnotation() { if (this.mapOpts.annotation === false) return; if (this.root) { var node2; for (var i2 = this.root.nodes.length - 1; i2 >= 0; i2--) { node2 = this.root.nodes[i2]; if (node2.type !== "comment") continue; if (node2.text.indexOf("# sourceMappingURL=") === 0) this.root.removeChild(i2); } } else if (this.css) this.css = this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm, ""); }; _proto.generate = function generate() { this.clearAnnotation(); if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) return this.generateMap(); else { var result2 = ""; this.stringify(this.root, function(i2) { result2 += i2; }); return [result2]; } }; _proto.generateMap = function generateMap() { if (this.root) this.generateString(); else if (this.previous().length === 1) { var prev = this.previous()[0].consumer(); prev.file = this.outputFile(); this.map = SourceMapGenerator$3.fromSourceMap(prev, { ignoreInvalidMapping: true }); } else { this.map = new SourceMapGenerator$3({ file: this.outputFile(), ignoreInvalidMapping: true }); this.map.addMapping({ generated: { column: 0, line: 1 }, original: { column: 0, line: 1 }, source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : "" }); } if (this.isSourcesContent()) this.setSourcesContent(); if (this.root && this.previous().length > 0) this.applyPrevMaps(); if (this.isAnnotation()) this.addAnnotation(); if (this.isInline()) return [this.css]; else return [this.css, this.map]; }; _proto.generateString = function generateString() { var _this = this; this.css = ""; this.map = new SourceMapGenerator$3({ file: this.outputFile(), ignoreInvalidMapping: true }); var line = 1; var column = 1; var noSource = ""; var mapping = { generated: { column: 0, line: 0 }, original: { column: 0, line: 0 }, source: "" }; var lines; var last; this.stringify(this.root, function(str, node2, type) { _this.css += str; if (node2 && type !== "end") { mapping.generated.line = line; mapping.generated.column = column - 1; if (node2.source && node2.source.start) { mapping.source = _this.sourcePath(node2); mapping.original.line = node2.source.start.line; mapping.original.column = node2.source.start.column - 1; _this.map.addMapping(mapping); } else { mapping.source = noSource; mapping.original.line = 1; mapping.original.column = 0; _this.map.addMapping(mapping); } } lines = str.match(/\n/g); if (lines) { line += lines.length; last = str.lastIndexOf("\n"); column = str.length - last; } else column += str.length; if (node2 && type !== "start") { var p = node2.parent || { raws: {} }; if (!(node2.type === "decl" || node2.type === "atrule" && !node2.nodes) || node2 !== p.last || p.raws.semicolon) if (node2.source && node2.source.end) { mapping.source = _this.sourcePath(node2); mapping.original.line = node2.source.end.line; mapping.original.column = node2.source.end.column - 1; mapping.generated.line = line; mapping.generated.column = column - 2; _this.map.addMapping(mapping); } else { mapping.source = noSource; mapping.original.line = 1; mapping.original.column = 0; mapping.generated.line = line; mapping.generated.column = column - 1; _this.map.addMapping(mapping); } } }); }; _proto.isAnnotation = function isAnnotation() { if (this.isInline()) return true; if (typeof this.mapOpts.annotation !== "undefined") return this.mapOpts.annotation; if (this.previous().length) return this.previous().some(function(i2) { return i2.annotation; }); return true; }; _proto.isInline = function isInline() { if (typeof this.mapOpts.inline !== "undefined") return this.mapOpts.inline; var annotation = this.mapOpts.annotation; if (typeof annotation !== "undefined" && annotation !== true) return false; if (this.previous().length) return this.previous().some(function(i2) { return i2.inline; }); return true; }; _proto.isMap = function isMap() { if (typeof this.opts.map !== "undefined") return !!this.opts.map; return this.previous().length > 0; }; _proto.isSourcesContent = function isSourcesContent() { if (typeof this.mapOpts.sourcesContent !== "undefined") return this.mapOpts.sourcesContent; if (this.previous().length) return this.previous().some(function(i2) { return i2.withContent(); }); return true; }; _proto.outputFile = function outputFile() { if (this.opts.to) return this.path(this.opts.to); else if (this.opts.from) return this.path(this.opts.from); else return "to.css"; }; _proto.path = function path(file) { if (this.mapOpts.absolute) return file; if (file.charCodeAt(0) === 60) return file; if (/^\w+:\/\//.test(file)) return file; var cached = this.memoizedPaths.get(file); if (cached) return cached; var from = this.opts.to ? dirname$2(this.opts.to) : "."; if (typeof this.mapOpts.annotation === "string") from = dirname$2(resolve$2(from, this.mapOpts.annotation)); var path = relative$1(from, file); this.memoizedPaths.set(file, path); return path; }; _proto.previous = function previous() { var _this = this; if (!this.previousMaps) { this.previousMaps = []; if (this.root) this.root.walk(function(node2) { if (node2.source && node2.source.input.map) { var map = node2.source.input.map; if (!_this.previousMaps.includes(map)) _this.previousMaps.push(map); } }); else { var input2 = new Input$3$1(this.originalCSS, this.opts); if (input2.map) this.previousMaps.push(input2.map); } } return this.previousMaps; }; _proto.setSourcesContent = function setSourcesContent() { var _this = this; var already = {}; if (this.root) this.root.walk(function(node2) { if (node2.source) { var from = node2.source.input.from; if (from && !already[from]) { already[from] = true; var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from)); _this.map.setSourceContent(fromUrl, node2.source.input.css); } } }); else if (this.css) { var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : ""; this.map.setSourceContent(from, this.css); } }; _proto.sourcePath = function sourcePath(node2) { if (this.mapOpts.from) return this.toUrl(this.mapOpts.from); else if (this.usesFileUrls) return this.toFileUrl(node2.source.input.from); else return this.toUrl(this.path(node2.source.input.from)); }; _proto.toBase64 = function toBase64(str) { if (Buffer) return Buffer.from(str).toString("base64"); else return window.btoa(unescape(encodeURIComponent(str))); }; _proto.toFileUrl = function toFileUrl(path) { var cached = this.memoizedFileURLs.get(path); if (cached) return cached; if (pathToFileURL$2) { var fileURL = pathToFileURL$2(path).toString(); this.memoizedFileURLs.set(path, fileURL); return fileURL; } else throw new Error("`map.absolute` option is not available in this PostCSS build"); }; _proto.toUrl = function toUrl(path) { var cached = this.memoizedURLs.get(path); if (cached) return cached; if (sep$1 === "\\") path = path.replace(/\\/g, "/"); var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent); this.memoizedURLs.set(path, url); return url; }; return MapGenerator; }(); Comment$4$1 = /*#__PURE__*/ function(Node$2$1) { _inherits(Comment, Node$2$1); function Comment(defaults) { var _this = Node$2$1.call(this, defaults) || this; _this.type = "comment"; return _this; } return Comment; }(node$1); comment$1 = Comment$4$1; Comment$4$1.default = Comment$4$1; isClean$1$1 = symbols$1.isClean; my$1$1 = symbols$1.my; Declaration$3$1 = declaration$1; Comment$3$1 = comment$1; Node$1$1 = node$1; ; ; ; ; Container$7$1 = /*#__PURE__*/ function(Node$1$1) { _inherits(Container, Node$1$1); function Container() { return Node$1$1.apply(this, arguments) || this; } var _proto = Container.prototype; _proto.append = function append() { for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) children[_key] = arguments[_key]; for (var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;) { var child = _step.value; for (var _iterator1 = _create_for_of_iterator_helper_loose(this.normalize(child, this.last)), _step1; !(_step1 = _iterator1()).done;) { var node2 = _step1.value; this.proxyOf.nodes.push(node2); } } this.markDirty(); return this; }; _proto.cleanRaws = function cleanRaws(keepBetween) { Node$1$1.prototype.cleanRaws.call(this, keepBetween); if (this.nodes) for (var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;) _step.value.cleanRaws(keepBetween); }; _proto.each = function each(callback) { if (!this.proxyOf.nodes) return void 0; var iterator = this.getIterator(); var index2; var result2; while (this.indexes[iterator] < this.proxyOf.nodes.length) { index2 = this.indexes[iterator]; result2 = callback(this.proxyOf.nodes[index2], index2); if (result2 === false) break; this.indexes[iterator] += 1; } delete this.indexes[iterator]; return result2; }; _proto.every = function every(condition) { return this.nodes.every(condition); }; _proto.getIterator = function getIterator() { if (!this.lastEach) this.lastEach = 0; if (!this.indexes) this.indexes = {}; this.lastEach += 1; var iterator = this.lastEach; this.indexes[iterator] = 0; return iterator; }; _proto.getProxyProcessor = function getProxyProcessor() { return { get: function get(node2, prop) { if (prop === "proxyOf") return node2; else if (!node2[prop]) return node2[prop]; else if (prop === "each" || typeof prop === "string" && prop.startsWith("walk")) return function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; var _node2; return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) { if (typeof i2 === "function") return function(child, index2) { return i2(child.toProxy(), index2); }; else return i2; }))); }; else if (prop === "every" || prop === "some") return function(cb) { return node2[prop](function(child) { for (var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) other[_key - 1] = arguments[_key]; return cb.apply(void 0, [].concat([child.toProxy()], other)); }); }; else if (prop === "root") return function() { return node2.root().toProxy(); }; else if (prop === "nodes") return node2.nodes.map(function(i2) { return i2.toProxy(); }); else if (prop === "first" || prop === "last") return node2[prop].toProxy(); else return node2[prop]; }, set: function set(node2, prop, value) { if (node2[prop] === value) return true; node2[prop] = value; if (prop === "name" || prop === "params" || prop === "selector") node2.markDirty(); return true; } }; }; _proto.index = function index(child) { if (typeof child === "number") return child; if (child.proxyOf) child = child.proxyOf; return this.proxyOf.nodes.indexOf(child); }; _proto.insertAfter = function insertAfter(exist, add) { var existIndex = this.index(exist); var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse(); existIndex = this.index(exist); for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; this.proxyOf.nodes.splice(existIndex + 1, 0, node2); } var index2; for (var id in this.indexes) { index2 = this.indexes[id]; if (existIndex < index2) this.indexes[id] = index2 + nodes.length; } this.markDirty(); return this; }; _proto.insertBefore = function insertBefore(exist, add) { var existIndex = this.index(exist); var type = existIndex === 0 ? "prepend" : false; var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse(); existIndex = this.index(exist); for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; this.proxyOf.nodes.splice(existIndex, 0, node2); } var index2; for (var id in this.indexes) { index2 = this.indexes[id]; if (existIndex <= index2) this.indexes[id] = index2 + nodes.length; } this.markDirty(); return this; }; _proto.normalize = function normalize(nodes, sample) { var _this = this; if (typeof nodes === "string") nodes = cleanSource$1(parse$4$1(nodes).nodes); else if (typeof nodes === "undefined") nodes = []; else if (Array.isArray(nodes)) { nodes = nodes.slice(0); for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var i2 = _step.value; if (i2.parent) i2.parent.removeChild(i2, "ignore"); } } else if (nodes.type === "root" && this.type !== "document") { nodes = nodes.nodes.slice(0); for (var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;) { var i21 = _step1.value; if (i21.parent) i21.parent.removeChild(i21, "ignore"); } } else if (nodes.type) nodes = [nodes]; else if (nodes.prop) { if (typeof nodes.value === "undefined") throw new Error("Value field is missed in node creation"); else if (typeof nodes.value !== "string") nodes.value = String(nodes.value); nodes = [new Declaration$3$1(nodes)]; } else if (nodes.selector) nodes = [new Rule$4$1(nodes)]; else if (nodes.name) nodes = [new AtRule$4$1(nodes)]; else if (nodes.text) nodes = [new Comment$3$1(nodes)]; else throw new Error("Unknown node type in node creation"); return nodes.map(function(i2) { if (!i2[my$1$1]) Container.rebuild(i2); i2 = i2.proxyOf; if (i2.parent) i2.parent.removeChild(i2); if (i2[isClean$1$1]) markDirtyUp$1(i2); if (typeof i2.raws.before === "undefined") { if (sample && typeof sample.raws.before !== "undefined") i2.raws.before = sample.raws.before.replace(/\S/g, ""); } i2.parent = _this.proxyOf; return i2; }); }; _proto.prepend = function prepend() { for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) children[_key] = arguments[_key]; children = children.reverse(); for (var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;) { var child = _step.value; var nodes = this.normalize(child, this.first, "prepend").reverse(); for (var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;) { var node2 = _step1.value; this.proxyOf.nodes.unshift(node2); } for (var id in this.indexes) this.indexes[id] = this.indexes[id] + nodes.length; } this.markDirty(); return this; }; _proto.push = function push(child) { child.parent = this; this.proxyOf.nodes.push(child); return this; }; _proto.removeAll = function removeAll() { for (var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; node2.parent = void 0; } this.proxyOf.nodes = []; this.markDirty(); return this; }; _proto.removeChild = function removeChild(child) { child = this.index(child); this.proxyOf.nodes[child].parent = void 0; this.proxyOf.nodes.splice(child, 1); var index2; for (var id in this.indexes) { index2 = this.indexes[id]; if (index2 >= child) this.indexes[id] = index2 - 1; } this.markDirty(); return this; }; _proto.replaceValues = function replaceValues(pattern, opts, callback) { if (!callback) { callback = opts; opts = {}; } this.walkDecls(function(decl) { if (opts.props && !opts.props.includes(decl.prop)) return; if (opts.fast && !decl.value.includes(opts.fast)) return; decl.value = decl.value.replace(pattern, callback); }); this.markDirty(); return this; }; _proto.some = function some(condition) { return this.nodes.some(condition); }; _proto.walk = function walk(callback) { return this.each(function(child, i2) { var result2; try { result2 = callback(child, i2); } catch (e2) { throw child.addToError(e2); } if (result2 !== false && child.walk) result2 = child.walk(callback); return result2; }); }; _proto.walkAtRules = function walkAtRules(name, callback) { if (!callback) { callback = name; return this.walk(function(child, i2) { if (child.type === "atrule") return callback(child, i2); }); } if (_instanceof(name, RegExp)) return this.walk(function(child, i2) { if (child.type === "atrule" && name.test(child.name)) return callback(child, i2); }); return this.walk(function(child, i2) { if (child.type === "atrule" && child.name === name) return callback(child, i2); }); }; _proto.walkComments = function walkComments(callback) { return this.walk(function(child, i2) { if (child.type === "comment") return callback(child, i2); }); }; _proto.walkDecls = function walkDecls(prop, callback) { if (!callback) { callback = prop; return this.walk(function(child, i2) { if (child.type === "decl") return callback(child, i2); }); } if (_instanceof(prop, RegExp)) return this.walk(function(child, i2) { if (child.type === "decl" && prop.test(child.prop)) return callback(child, i2); }); return this.walk(function(child, i2) { if (child.type === "decl" && child.prop === prop) return callback(child, i2); }); }; _proto.walkRules = function walkRules(selector, callback) { if (!callback) { callback = selector; return this.walk(function(child, i2) { if (child.type === "rule") return callback(child, i2); }); } if (_instanceof(selector, RegExp)) return this.walk(function(child, i2) { if (child.type === "rule" && selector.test(child.selector)) return callback(child, i2); }); return this.walk(function(child, i2) { if (child.type === "rule" && child.selector === selector) return callback(child, i2); }); }; _create_class(Container, [{ key: "first", get: function get() { if (!this.proxyOf.nodes) return void 0; return this.proxyOf.nodes[0]; } }, { key: "last", get: function get() { if (!this.proxyOf.nodes) return void 0; return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]; } }]); return Container; }(Node$1$1); Container$7$1.registerParse = function(dependant) { parse$4$1 = dependant; }; Container$7$1.registerRule = function(dependant) { Rule$4$1 = dependant; }; Container$7$1.registerAtRule = function(dependant) { AtRule$4$1 = dependant; }; Container$7$1.registerRoot = function(dependant) { Root$6$1 = dependant; }; container$1 = Container$7$1; Container$7$1.default = Container$7$1; Container$7$1.rebuild = function(node2) { if (node2.type === "atrule") Object.setPrototypeOf(node2, AtRule$4$1.prototype); else if (node2.type === "rule") Object.setPrototypeOf(node2, Rule$4$1.prototype); else if (node2.type === "decl") Object.setPrototypeOf(node2, Declaration$3$1.prototype); else if (node2.type === "comment") Object.setPrototypeOf(node2, Comment$3$1.prototype); else if (node2.type === "root") Object.setPrototypeOf(node2, Root$6$1.prototype); node2[my$1$1] = true; if (node2.nodes) node2.nodes.forEach(function(child) { Container$7$1.rebuild(child); }); }; Container$6$1 = container$1; ; ; Document$3$1 = /*#__PURE__*/ function(Container$6$1) { _inherits(Document2, Container$6$1); function Document2(defaults) { var _this = Container$6$1.call(this, _extends({ type: "document" }, defaults)) || this; if (!_this.nodes) _this.nodes = []; return _this; } var _proto = Document2.prototype; _proto.toResult = function toResult(opts) { if (opts === void 0) opts = {}; return new LazyResult$4$1(new Processor$3$1(), this, opts).stringify(); }; return Document2; }(Container$6$1); Document$3$1.registerLazyResult = function(dependant) { LazyResult$4$1 = dependant; }; Document$3$1.registerProcessor = function(dependant) { Processor$3$1 = dependant; }; document$1$1 = Document$3$1; Document$3$1.default = Document$3$1; printed$1 = {}; warnOnce$2$1 = function warnOnce(message) { if (printed$1[message]) return; printed$1[message] = true; if (typeof console !== "undefined" && console.warn) console.warn(message); }; Warning$2$1 = /*#__PURE__*/ function() { function Warning(text, opts) { if (opts === void 0) opts = {}; this.type = "warning"; this.text = text; if (opts.node && opts.node.source) { var range = opts.node.rangeBy(opts); this.line = range.start.line; this.column = range.start.column; this.endLine = range.end.line; this.endColumn = range.end.column; } for (var opt in opts) this[opt] = opts[opt]; } var _proto = Warning.prototype; _proto.toString = function toString() { if (this.node) return this.node.error(this.text, { index: this.index, plugin: this.plugin, word: this.word }).message; if (this.plugin) return this.plugin + ": " + this.text; return this.text; }; return Warning; }(); warning$1 = Warning$2$1; Warning$2$1.default = Warning$2$1; Warning$1$1 = warning$1; Result$3$1 = /*#__PURE__*/ function() { function Result(processor2, root2, opts) { this.processor = processor2; this.messages = []; this.root = root2; this.opts = opts; this.css = void 0; this.map = void 0; } var _proto = Result.prototype; _proto.toString = function toString() { return this.css; }; _proto.warn = function warn(text, opts) { if (opts === void 0) opts = {}; if (!opts.plugin) { if (this.lastPlugin && this.lastPlugin.postcssPlugin) opts.plugin = this.lastPlugin.postcssPlugin; } var warning2 = new Warning$1$1(text, opts); this.messages.push(warning2); return warning2; }; _proto.warnings = function warnings() { return this.messages.filter(function(i2) { return i2.type === "warning"; }); }; _create_class(Result, [{ key: "content", get: function get() { return this.css; } }]); return Result; }(); result$1 = Result$3$1; Result$3$1.default = Result$3$1; SINGLE_QUOTE$1 = "'".charCodeAt(0); DOUBLE_QUOTE$1 = "\"".charCodeAt(0); BACKSLASH$1 = "\\".charCodeAt(0); SLASH$1 = "/".charCodeAt(0); NEWLINE$1 = "\n".charCodeAt(0); SPACE$1 = " ".charCodeAt(0); FEED$1 = "\f".charCodeAt(0); TAB$1 = " ".charCodeAt(0); CR$1 = "\r".charCodeAt(0); OPEN_SQUARE$1 = "[".charCodeAt(0); CLOSE_SQUARE$1 = "]".charCodeAt(0); OPEN_PARENTHESES$1 = "(".charCodeAt(0); CLOSE_PARENTHESES$1 = ")".charCodeAt(0); OPEN_CURLY$1 = "{".charCodeAt(0); CLOSE_CURLY$1 = "}".charCodeAt(0); SEMICOLON$1 = ";".charCodeAt(0); ASTERISK$1 = "*".charCodeAt(0); COLON$1 = ":".charCodeAt(0); AT$1 = "@".charCodeAt(0); RE_AT_END$1 = /[\t\n\f\r "#'()/;[\\\]{}]/g; RE_WORD_END$1 = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g; RE_BAD_BRACKET$1 = /.[\r\n"'(/\\]/; RE_HEX_ESCAPE$1 = /[\da-f]/i; tokenize$1 = function tokenizer(input2, options) { if (options === void 0) options = {}; var css = input2.css.valueOf(); var ignore = options.ignoreErrors; var code; var next; var quote; var content; var escape; var escaped; var escapePos; var prev; var n2; var currentToken; var length = css.length; var pos = 0; var buffer = []; var returned = []; function position() { return pos; } function unclosed(what) { throw input2.error("Unclosed " + what, pos); } function endOfFile() { return returned.length === 0 && pos >= length; } function nextToken(opts) { if (returned.length) return returned.pop(); if (pos >= length) return; var ignoreUnclosed = opts ? opts.ignoreUnclosed : false; code = css.charCodeAt(pos); switch (code) { case NEWLINE$1: case SPACE$1: case TAB$1: case CR$1: case FEED$1: next = pos; do { next += 1; code = css.charCodeAt(next); } while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1); currentToken = ["space", css.slice(pos, next)]; pos = next - 1; break; case OPEN_SQUARE$1: case CLOSE_SQUARE$1: case OPEN_CURLY$1: case CLOSE_CURLY$1: case COLON$1: case SEMICOLON$1: case CLOSE_PARENTHESES$1: var controlChar = String.fromCharCode(code); currentToken = [ controlChar, controlChar, pos ]; break; case OPEN_PARENTHESES$1: prev = buffer.length ? buffer.pop()[1] : ""; n2 = css.charCodeAt(pos + 1); if (prev === "url" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) { next = pos; do { escaped = false; next = css.indexOf(")", next + 1); if (next === -1) if (ignore || ignoreUnclosed) { next = pos; break; } else unclosed("bracket"); escapePos = next; while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) { escapePos -= 1; escaped = !escaped; } } while (escaped); currentToken = [ "brackets", css.slice(pos, next + 1), pos, next ]; pos = next; } else { next = css.indexOf(")", pos + 1); content = css.slice(pos, next + 1); if (next === -1 || RE_BAD_BRACKET$1.test(content)) currentToken = [ "(", "(", pos ]; else { currentToken = [ "brackets", content, pos, next ]; pos = next; } } break; case SINGLE_QUOTE$1: case DOUBLE_QUOTE$1: quote = code === SINGLE_QUOTE$1 ? "'" : "\""; next = pos; do { escaped = false; next = css.indexOf(quote, next + 1); if (next === -1) if (ignore || ignoreUnclosed) { next = pos + 1; break; } else unclosed("string"); escapePos = next; while (css.charCodeAt(escapePos - 1) === BACKSLASH$1) { escapePos -= 1; escaped = !escaped; } } while (escaped); currentToken = [ "string", css.slice(pos, next + 1), pos, next ]; pos = next; break; case AT$1: RE_AT_END$1.lastIndex = pos + 1; RE_AT_END$1.test(css); if (RE_AT_END$1.lastIndex === 0) next = css.length - 1; else next = RE_AT_END$1.lastIndex - 2; currentToken = [ "at-word", css.slice(pos, next + 1), pos, next ]; pos = next; break; case BACKSLASH$1: next = pos; escape = true; while (css.charCodeAt(next + 1) === BACKSLASH$1) { next += 1; escape = !escape; } code = css.charCodeAt(next + 1); if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) { next += 1; if (RE_HEX_ESCAPE$1.test(css.charAt(next))) { while (RE_HEX_ESCAPE$1.test(css.charAt(next + 1))) next += 1; if (css.charCodeAt(next + 1) === SPACE$1) next += 1; } } currentToken = [ "word", css.slice(pos, next + 1), pos, next ]; pos = next; break; default: if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) { next = css.indexOf("*/", pos + 2) + 1; if (next === 0) if (ignore || ignoreUnclosed) next = css.length; else unclosed("comment"); currentToken = [ "comment", css.slice(pos, next + 1), pos, next ]; pos = next; } else { RE_WORD_END$1.lastIndex = pos + 1; RE_WORD_END$1.test(css); if (RE_WORD_END$1.lastIndex === 0) next = css.length - 1; else next = RE_WORD_END$1.lastIndex - 2; currentToken = [ "word", css.slice(pos, next + 1), pos, next ]; buffer.push(currentToken); pos = next; } break; } pos++; return currentToken; } function back(token) { returned.push(token); } return { back, endOfFile, nextToken, position }; }; Container$5$1 = container$1; AtRule$3$1 = /*#__PURE__*/ function(Container$5$1) { _inherits(AtRule, Container$5$1); function AtRule(defaults) { var _this = Container$5$1.call(this, defaults) || this; _this.type = "atrule"; return _this; } var _proto = AtRule.prototype; _proto.append = function append() { for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) children[_key] = arguments[_key]; var _Container$5$1_prototype_append; if (!this.proxyOf.nodes) this.nodes = []; return (_Container$5$1_prototype_append = Container$5$1.prototype.append).call.apply(_Container$5$1_prototype_append, [].concat([this], children)); }; _proto.prepend = function prepend() { for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) children[_key] = arguments[_key]; var _Container$5$1_prototype_prepend; if (!this.proxyOf.nodes) this.nodes = []; return (_Container$5$1_prototype_prepend = Container$5$1.prototype.prepend).call.apply(_Container$5$1_prototype_prepend, [].concat([this], children)); }; return AtRule; }(Container$5$1); atRule$1 = AtRule$3$1; AtRule$3$1.default = AtRule$3$1; Container$5$1.registerAtRule(AtRule$3$1); Container$4$1 = container$1; ; ; Root$5$1 = /*#__PURE__*/ function(Container$4$1) { _inherits(Root, Container$4$1); function Root(defaults) { var _this = Container$4$1.call(this, defaults) || this; _this.type = "root"; if (!_this.nodes) _this.nodes = []; return _this; } var _proto = Root.prototype; _proto.normalize = function normalize(child, sample, type) { var nodes = Container$4$1.prototype.normalize.call(this, child); if (sample) { if (type === "prepend") if (this.nodes.length > 1) sample.raws.before = this.nodes[1].raws.before; else delete sample.raws.before; else if (this.first !== sample) for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; node2.raws.before = sample.raws.before; } } return nodes; }; _proto.removeChild = function removeChild(child, ignore) { var index2 = this.index(child); if (!ignore && index2 === 0 && this.nodes.length > 1) this.nodes[1].raws.before = this.nodes[index2].raws.before; return Container$4$1.prototype.removeChild.call(this, child); }; _proto.toResult = function toResult(opts) { if (opts === void 0) opts = {}; return new LazyResult$3$1(new Processor$2$1(), this, opts).stringify(); }; return Root; }(Container$4$1); Root$5$1.registerLazyResult = function(dependant) { LazyResult$3$1 = dependant; }; Root$5$1.registerProcessor = function(dependant) { Processor$2$1 = dependant; }; root$1 = Root$5$1; Root$5$1.default = Root$5$1; Container$4$1.registerRoot(Root$5$1); list$2$1 = { comma: function comma(string) { return list$2$1.split(string, [","], true); }, space: function space(string) { return list$2$1.split(string, [ " ", "\n", " " ]); }, split: function split(string, separators, last) { var array = []; var current = ""; var split = false; var func = 0; var inQuote = false; var prevQuote = ""; var escape = false; for (var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;) { var letter = _step.value; if (escape) escape = false; else if (letter === "\\") escape = true; else if (inQuote) { if (letter === prevQuote) inQuote = false; } else if (letter === "\"" || letter === "'") { inQuote = true; prevQuote = letter; } else if (letter === "(") func += 1; else if (letter === ")") { if (func > 0) func -= 1; } else if (func === 0) { if (separators.includes(letter)) split = true; } if (split) { if (current !== "") array.push(current.trim()); current = ""; split = false; } else current += letter; } if (last || current !== "") array.push(current.trim()); return array; } }; list_1$1 = list$2$1; list$2$1.default = list$2$1; Container$3$1 = container$1; list$1$1 = list_1$1; Rule$3$1 = /*#__PURE__*/ function(Container$3$1) { _inherits(Rule, Container$3$1); function Rule(defaults) { var _this = Container$3$1.call(this, defaults) || this; _this.type = "rule"; if (!_this.nodes) _this.nodes = []; return _this; } _create_class(Rule, [{ key: "selectors", get: function get() { return list$1$1.comma(this.selector); }, set: function set(values) { var match = this.selector ? this.selector.match(/,\s*/) : null; var sep2 = match ? match[0] : "," + this.raw("between", "beforeOpen"); this.selector = values.join(sep2); } }]); return Rule; }(Container$3$1); rule$1 = Rule$3$1; Rule$3$1.default = Rule$3$1; Container$3$1.registerRule(Rule$3$1); Declaration$2$1 = declaration$1; tokenizer2$1 = tokenize$1; Comment$2$1 = comment$1; AtRule$2$1 = atRule$1; Root$4$1 = root$1; Rule$2$1 = rule$1; SAFE_COMMENT_NEIGHBOR$1 = { empty: true, space: true }; parser$1 = /* @__PURE__ */ function() { function Parser(input2) { this.input = input2; this.root = new Root$4$1(); this.current = this.root; this.spaces = ""; this.semicolon = false; this.createTokenizer(); this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } }; } var _proto = Parser.prototype; _proto.atrule = function atrule(token) { var node2 = new AtRule$2$1(); node2.name = token[1].slice(1); if (node2.name === "") this.unnamedAtrule(node2, token); this.init(node2, token[2]); var type; var prev; var shift; var last = false; var open = false; var params = []; var brackets = []; while (!this.tokenizer.endOfFile()) { token = this.tokenizer.nextToken(); type = token[0]; if (type === "(" || type === "[") brackets.push(type === "(" ? ")" : "]"); else if (type === "{" && brackets.length > 0) brackets.push("}"); else if (type === brackets[brackets.length - 1]) brackets.pop(); if (brackets.length === 0) if (type === ";") { node2.source.end = this.getPosition(token[2]); node2.source.end.offset++; this.semicolon = true; break; } else if (type === "{") { open = true; break; } else if (type === "}") { if (params.length > 0) { shift = params.length - 1; prev = params[shift]; while (prev && prev[0] === "space") prev = params[--shift]; if (prev) { node2.source.end = this.getPosition(prev[3] || prev[2]); node2.source.end.offset++; } } this.end(token); break; } else params.push(token); else params.push(token); if (this.tokenizer.endOfFile()) { last = true; break; } } node2.raws.between = this.spacesAndCommentsFromEnd(params); if (params.length) { node2.raws.afterName = this.spacesAndCommentsFromStart(params); this.raw(node2, "params", params); if (last) { token = params[params.length - 1]; node2.source.end = this.getPosition(token[3] || token[2]); node2.source.end.offset++; this.spaces = node2.raws.between; node2.raws.between = ""; } } else { node2.raws.afterName = ""; node2.params = ""; } if (open) { node2.nodes = []; this.current = node2; } }; _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) { var colon = this.colon(tokens); if (colon === false) return; var founded = 0; var token; for (var j = colon - 1; j >= 0; j--) { token = tokens[j]; if (token[0] !== "space") { founded += 1; if (founded === 2) break; } } throw this.input.error("Missed semicolon", token[0] === "word" ? token[3] + 1 : token[2]); }; _proto.colon = function colon(tokens) { var brackets = 0; var token; var type; var prev; for (var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;) { var _step_value = _step.value; var i2 = _step_value[0]; token = _step_value[1]; type = token[0]; if (type === "(") brackets += 1; if (type === ")") brackets -= 1; if (brackets === 0 && type === ":") if (!prev) this.doubleColon(token); else if (prev[0] === "word" && prev[1] === "progid") continue; else return i2; prev = token; } return false; }; _proto.comment = function comment(token) { var node2 = new Comment$2$1(); this.init(node2, token[2]); node2.source.end = this.getPosition(token[3] || token[2]); node2.source.end.offset++; var text = token[1].slice(2, -2); if (/^\s*$/.test(text)) { node2.text = ""; node2.raws.left = text; node2.raws.right = ""; } else { var match = text.match(/^(\s*)([^]*\S)(\s*)$/); node2.text = match[2]; node2.raws.left = match[1]; node2.raws.right = match[3]; } }; _proto.createTokenizer = function createTokenizer() { this.tokenizer = tokenizer2$1(this.input); }; _proto.decl = function decl(tokens, customProperty) { var node2 = new Declaration$2$1(); this.init(node2, tokens[0][2]); var last = tokens[tokens.length - 1]; if (last[0] === ";") { this.semicolon = true; tokens.pop(); } node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition$1(tokens)); node2.source.end.offset++; while (tokens[0][0] !== "word") { if (tokens.length === 1) this.unknownWord(tokens); node2.raws.before += tokens.shift()[1]; } node2.source.start = this.getPosition(tokens[0][2]); node2.prop = ""; while (tokens.length) { var type = tokens[0][0]; if (type === ":" || type === "space" || type === "comment") break; node2.prop += tokens.shift()[1]; } node2.raws.between = ""; var token; while (tokens.length) { token = tokens.shift(); if (token[0] === ":") { node2.raws.between += token[1]; break; } else { if (token[0] === "word" && /\w/.test(token[1])) this.unknownWord([token]); node2.raws.between += token[1]; } } if (node2.prop[0] === "_" || node2.prop[0] === "*") { node2.raws.before += node2.prop[0]; node2.prop = node2.prop.slice(1); } var firstSpaces = []; var next; while (tokens.length) { next = tokens[0][0]; if (next !== "space" && next !== "comment") break; firstSpaces.push(tokens.shift()); } this.precheckMissedSemicolon(tokens); for (var i2 = tokens.length - 1; i2 >= 0; i2--) { token = tokens[i2]; if (token[1].toLowerCase() === "!important") { node2.important = true; var string = this.stringFrom(tokens, i2); string = this.spacesFromEnd(tokens) + string; if (string !== " !important") node2.raws.important = string; break; } else if (token[1].toLowerCase() === "important") { var cache = tokens.slice(0); var str = ""; for (var j = i2; j > 0; j--) { var type1 = cache[j][0]; if (str.trim().indexOf("!") === 0 && type1 !== "space") break; str = cache.pop()[1] + str; } if (str.trim().indexOf("!") === 0) { node2.important = true; node2.raws.important = str; tokens = cache; } } if (token[0] !== "space" && token[0] !== "comment") break; } if (tokens.some(function(i2) { return i2[0] !== "space" && i2[0] !== "comment"; })) { node2.raws.between += firstSpaces.map(function(i2) { return i2[1]; }).join(""); firstSpaces = []; } this.raw(node2, "value", firstSpaces.concat(tokens), customProperty); if (node2.value.includes(":") && !customProperty) this.checkMissedSemicolon(tokens); }; _proto.doubleColon = function doubleColon(token) { throw this.input.error("Double colon", { offset: token[2] }, { offset: token[2] + token[1].length }); }; _proto.emptyRule = function emptyRule(token) { var node2 = new Rule$2$1(); this.init(node2, token[2]); node2.selector = ""; node2.raws.between = ""; this.current = node2; }; _proto.end = function end(token) { if (this.current.nodes && this.current.nodes.length) this.current.raws.semicolon = this.semicolon; this.semicolon = false; this.current.raws.after = (this.current.raws.after || "") + this.spaces; this.spaces = ""; if (this.current.parent) { this.current.source.end = this.getPosition(token[2]); this.current.source.end.offset++; this.current = this.current.parent; } else this.unexpectedClose(token); }; _proto.endFile = function endFile() { if (this.current.parent) this.unclosedBlock(); if (this.current.nodes && this.current.nodes.length) this.current.raws.semicolon = this.semicolon; this.current.raws.after = (this.current.raws.after || "") + this.spaces; this.root.source.end = this.getPosition(this.tokenizer.position()); }; _proto.freeSemicolon = function freeSemicolon(token) { this.spaces += token[1]; if (this.current.nodes) { var prev = this.current.nodes[this.current.nodes.length - 1]; if (prev && prev.type === "rule" && !prev.raws.ownSemicolon) { prev.raws.ownSemicolon = this.spaces; this.spaces = ""; } } }; _proto.getPosition = function getPosition(offset) { var pos = this.input.fromOffset(offset); return { column: pos.col, line: pos.line, offset }; }; _proto.init = function init(node2, offset) { this.current.push(node2); node2.source = { input: this.input, start: this.getPosition(offset) }; node2.raws.before = this.spaces; this.spaces = ""; if (node2.type !== "comment") this.semicolon = false; }; _proto.other = function other(start) { var end = false; var type = null; var colon = false; var bracket = null; var brackets = []; var customProperty = start[1].startsWith("--"); var tokens = []; var token = start; while (token) { type = token[0]; tokens.push(token); if (type === "(" || type === "[") { if (!bracket) bracket = token; brackets.push(type === "(" ? ")" : "]"); } else if (customProperty && colon && type === "{") { if (!bracket) bracket = token; brackets.push("}"); } else if (brackets.length === 0) { if (type === ";") if (colon) { this.decl(tokens, customProperty); return; } else break; else if (type === "{") { this.rule(tokens); return; } else if (type === "}") { this.tokenizer.back(tokens.pop()); end = true; break; } else if (type === ":") colon = true; } else if (type === brackets[brackets.length - 1]) { brackets.pop(); if (brackets.length === 0) bracket = null; } token = this.tokenizer.nextToken(); } if (this.tokenizer.endOfFile()) end = true; if (brackets.length > 0) this.unclosedBracket(bracket); if (end && colon) { if (!customProperty) while (tokens.length) { token = tokens[tokens.length - 1][0]; if (token !== "space" && token !== "comment") break; this.tokenizer.back(tokens.pop()); } this.decl(tokens, customProperty); } else this.unknownWord(tokens); }; _proto.parse = function parse() { var token; while (!this.tokenizer.endOfFile()) { token = this.tokenizer.nextToken(); switch (token[0]) { case "space": this.spaces += token[1]; break; case ";": this.freeSemicolon(token); break; case "}": this.end(token); break; case "comment": this.comment(token); break; case "at-word": this.atrule(token); break; case "{": this.emptyRule(token); break; default: this.other(token); break; } } this.endFile(); }; _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {}; _proto.raw = function raw(node2, prop, tokens, customProperty) { var token; var type; var length = tokens.length; var value = ""; var clean = true; var next; var prev; for (var i2 = 0; i2 < length; i2 += 1) { token = tokens[i2]; type = token[0]; if (type === "space" && i2 === length - 1 && !customProperty) clean = false; else if (type === "comment") { prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : "empty"; next = tokens[i2 + 1] ? tokens[i2 + 1][0] : "empty"; if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) if (value.slice(-1) === ",") clean = false; else value += token[1]; else clean = false; } else value += token[1]; } if (!clean) { var raw = tokens.reduce(function(all, i2) { return all + i2[1]; }, ""); node2.raws[prop] = { raw, value }; } node2[prop] = value; }; _proto.rule = function rule(tokens) { tokens.pop(); var node2 = new Rule$2$1(); this.init(node2, tokens[0][2]); node2.raws.between = this.spacesAndCommentsFromEnd(tokens); this.raw(node2, "selector", tokens); this.current = node2; }; _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) { var lastTokenType; var spaces = ""; while (tokens.length) { lastTokenType = tokens[tokens.length - 1][0]; if (lastTokenType !== "space" && lastTokenType !== "comment") break; spaces = tokens.pop()[1] + spaces; } return spaces; }; _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) { var next; var spaces = ""; while (tokens.length) { next = tokens[0][0]; if (next !== "space" && next !== "comment") break; spaces += tokens.shift()[1]; } return spaces; }; _proto.spacesFromEnd = function spacesFromEnd(tokens) { var lastTokenType; var spaces = ""; while (tokens.length) { lastTokenType = tokens[tokens.length - 1][0]; if (lastTokenType !== "space") break; spaces = tokens.pop()[1] + spaces; } return spaces; }; _proto.stringFrom = function stringFrom(tokens, from) { var result2 = ""; for (var i2 = from; i2 < tokens.length; i2++) result2 += tokens[i2][1]; tokens.splice(from, tokens.length - from); return result2; }; _proto.unclosedBlock = function unclosedBlock() { var pos = this.current.source.start; throw this.input.error("Unclosed block", pos.line, pos.column); }; _proto.unclosedBracket = function unclosedBracket(bracket) { throw this.input.error("Unclosed bracket", { offset: bracket[2] }, { offset: bracket[2] + 1 }); }; _proto.unexpectedClose = function unexpectedClose(token) { throw this.input.error("Unexpected }", { offset: token[2] }, { offset: token[2] + 1 }); }; _proto.unknownWord = function unknownWord(tokens) { throw this.input.error("Unknown word", { offset: tokens[0][2] }, { offset: tokens[0][2] + tokens[0][1].length }); }; _proto.unnamedAtrule = function unnamedAtrule(node2, token) { throw this.input.error("At-rule without name", { offset: token[2] }, { offset: token[2] + token[1].length }); }; return Parser; }(); Container$2$1 = container$1; Parser2$1 = parser$1; Input$2$1 = input$1; parse_1$1 = parse$3$1; parse$3$1.default = parse$3$1; Container$2$1.registerParse(parse$3$1); isClean$3 = symbols$1.isClean; my$3 = symbols$1.my; MapGenerator$1$1 = mapGenerator$1; stringify$2$1 = stringify_1$1; Container$1$1 = container$1; Document$2$1 = document$1$1; warnOnce$1$1 = warnOnce$2$1; Result$2$1 = result$1; parse$2$1 = parse_1$1; Root$3$1 = root$1; TYPE_TO_CLASS_NAME$1 = { atrule: "AtRule", comment: "Comment", decl: "Declaration", document: "Document", root: "Root", rule: "Rule" }; PLUGIN_PROPS$1 = { AtRule: true, AtRuleExit: true, Comment: true, CommentExit: true, Declaration: true, DeclarationExit: true, Document: true, DocumentExit: true, Once: true, OnceExit: true, postcssPlugin: true, prepare: true, Root: true, RootExit: true, Rule: true, RuleExit: true }; NOT_VISITORS$1 = { Once: true, postcssPlugin: true, prepare: true }; CHILDREN$1 = 0; postcss$2$1 = {}; LazyResult$2$1 = /*#__PURE__*/ function() { function LazyResult(processor2, css, opts) { var _this = this; this.stringified = false; this.processed = false; var root2; if ((typeof css === "undefined" ? "undefined" : _type_of(css)) === "object" && css !== null && (css.type === "root" || css.type === "document")) root2 = cleanMarks$1(css); else if (_instanceof(css, LazyResult) || _instanceof(css, Result$2$1)) { root2 = cleanMarks$1(css.root); if (css.map) { if (typeof opts.map === "undefined") opts.map = {}; if (!opts.map.inline) opts.map.inline = false; opts.map.prev = css.map; } } else { var parser2 = parse$2$1; if (opts.syntax) parser2 = opts.syntax.parse; if (opts.parser) parser2 = opts.parser; if (parser2.parse) parser2 = parser2.parse; try { root2 = parser2(css, opts); } catch (error) { this.processed = true; this.error = error; } if (root2 && !root2[my$3]) Container$1$1.rebuild(root2); } this.result = new Result$2$1(processor2, root2, opts); this.helpers = _extends({}, postcss$2$1, { postcss: postcss$2$1, result: this.result }); this.plugins = this.processor.plugins.map(function(plugin22) { if ((typeof plugin22 === "undefined" ? "undefined" : _type_of(plugin22)) === "object" && plugin22.prepare) return _extends({}, plugin22, plugin22.prepare(_this.result)); else return plugin22; }); } var _proto = LazyResult.prototype; _proto.async = function async() { if (this.error) return Promise.reject(this.error); if (this.processed) return Promise.resolve(this.result); if (!this.processing) this.processing = this.runAsync(); return this.processing; }; _proto.catch = function _catch(onRejected) { return this.async().catch(onRejected); }; _proto.finally = function _finally(onFinally) { return this.async().then(onFinally, onFinally); }; _proto.getAsyncError = function getAsyncError() { throw new Error("Use process(css).then(cb) to work with async plugins"); }; _proto.handleError = function handleError(error, node2) { var plugin22 = this.result.lastPlugin; try { if (node2) node2.addToError(error); this.error = error; if (error.name === "CssSyntaxError" && !error.plugin) { error.plugin = plugin22.postcssPlugin; error.setMessage(); } else if (plugin22.postcssVersion) { var pluginName = plugin22.postcssPlugin; var pluginVer = plugin22.postcssVersion; var runtimeVer = this.result.processor.version; var a2 = pluginVer.split("."); var b = runtimeVer.split("."); if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) console.error("Unknown error from PostCSS plugin. Your current PostCSS version is " + runtimeVer + ", but " + pluginName + " uses " + pluginVer + ". Perhaps this is the source of the error below."); } } catch (err) { if (console && console.error) console.error(err); } return error; }; _proto.prepareVisitors = function prepareVisitors() { var _this = this; this.listeners = {}; var add = function(plugin22, type, cb) { if (!_this.listeners[type]) _this.listeners[type] = []; _this.listeners[type].push([plugin22, cb]); }; for (var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;) { var plugin22 = _step.value; if ((typeof plugin22 === "undefined" ? "undefined" : _type_of(plugin22)) === "object") for (var event in plugin22) { if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) throw new Error("Unknown event " + event + " in " + plugin22.postcssPlugin + ". Try to update PostCSS (" + this.processor.version + " now)."); if (!NOT_VISITORS$1[event]) { if (_type_of(plugin22[event]) === "object") for (var filter in plugin22[event]) if (filter === "*") add(plugin22, event, plugin22[event][filter]); else add(plugin22, event + "-" + filter.toLowerCase(), plugin22[event][filter]); else if (typeof plugin22[event] === "function") add(plugin22, event, plugin22[event]); } } } this.hasListener = Object.keys(this.listeners).length > 0; }; _proto.runAsync = function runAsync() { var _this = this; return _async_to_generator(function() { var i2; var plugin22; var promise; var error; var root2; var stack; var promise1; var e2; var node2; var _loop; var _iterator; var _step; return _ts_generator(this, function(_state) { switch (_state.label) { case 0: _this.plugin = 0; i2 = 0; _state.label = 1; case 1: if (!(i2 < _this.plugins.length)) return [3, 6]; plugin22 = _this.plugins[i2]; promise = _this.runOnRoot(plugin22); if (!isPromise$1(promise)) return [3, 5]; _state.label = 2; case 2: _state.trys.push([ 2, 4, , 5 ]); return [4, promise]; case 3: _state.sent(); return [3, 5]; case 4: error = _state.sent(); throw _this.handleError(error); case 5: i2++; return [3, 1]; case 6: _this.prepareVisitors(); if (!_this.hasListener) return [3, 18]; root2 = _this.result.root; _state.label = 7; case 7: if (!!root2[isClean$3]) return [3, 14]; root2[isClean$3] = true; stack = [toStack$1(root2)]; _state.label = 8; case 8: if (!(stack.length > 0)) return [3, 13]; promise1 = _this.visitTick(stack); if (!isPromise$1(promise1)) return [3, 12]; _state.label = 9; case 9: _state.trys.push([ 9, 11, , 12 ]); return [4, promise1]; case 10: _state.sent(); return [3, 12]; case 11: e2 = _state.sent(); node2 = stack[stack.length - 1].node; throw _this.handleError(e2, node2); case 12: return [3, 8]; case 13: return [3, 7]; case 14: if (!_this.listeners.OnceExit) return [3, 18]; _loop = function() { var _step_value; var plugin22; var visitor; var roots; var e2; return _ts_generator(this, function(_state) { switch (_state.label) { case 0: _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1]; _this.result.lastPlugin = plugin22; _state.label = 1; case 1: _state.trys.push([ 1, 6, , 7 ]); if (!(root2.type === "document")) return [3, 3]; roots = root2.nodes.map(function(subRoot) { return visitor(subRoot, _this.helpers); }); return [4, Promise.all(roots)]; case 2: _state.sent(); return [3, 5]; case 3: return [4, visitor(root2, _this.helpers)]; case 4: _state.sent(); _state.label = 5; case 5: return [3, 7]; case 6: e2 = _state.sent(); throw _this.handleError(e2); case 7: return [2]; } }); }; _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit); _state.label = 15; case 15: if (!!(_step = _iterator()).done) return [3, 18]; return [5, _ts_values(_loop())]; case 16: _state.sent(); _state.label = 17; case 17: return [3, 15]; case 18: _this.processed = true; return [2, _this.stringify()]; } }); })(); }; _proto.runOnRoot = function runOnRoot(plugin22) { var _this = this; this.result.lastPlugin = plugin22; try { if ((typeof plugin22 === "undefined" ? "undefined" : _type_of(plugin22)) === "object" && plugin22.Once) { if (this.result.root.type === "document") { var roots = this.result.root.nodes.map(function(root2) { return plugin22.Once(root2, _this.helpers); }); if (isPromise$1(roots[0])) return Promise.all(roots); return roots; } return plugin22.Once(this.result.root, this.helpers); } else if (typeof plugin22 === "function") return plugin22(this.result.root, this.result); } catch (error) { throw this.handleError(error); } }; _proto.stringify = function stringify() { if (this.error) throw this.error; if (this.stringified) return this.result; this.stringified = true; this.sync(); var opts = this.result.opts; var str = stringify$2$1; if (opts.syntax) str = opts.syntax.stringify; if (opts.stringifier) str = opts.stringifier; if (str.stringify) str = str.stringify; var data = new MapGenerator$1$1(str, this.result.root, this.result.opts).generate(); this.result.css = data[0]; this.result.map = data[1]; return this.result; }; _proto.sync = function sync() { if (this.error) throw this.error; if (this.processed) return this.result; this.processed = true; if (this.processing) throw this.getAsyncError(); for (var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;) { var plugin22 = _step.value; if (isPromise$1(this.runOnRoot(plugin22))) throw this.getAsyncError(); } this.prepareVisitors(); if (this.hasListener) { var root2 = this.result.root; while (!root2[isClean$3]) { root2[isClean$3] = true; this.walkSync(root2); } if (this.listeners.OnceExit) if (root2.type === "document") for (var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;) { var subRoot = _step1.value; this.visitSync(this.listeners.OnceExit, subRoot); } else this.visitSync(this.listeners.OnceExit, root2); } return this.result; }; _proto.then = function then(onFulfilled, onRejected) { if (!("from" in this.opts)) warnOnce$1$1("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."); return this.async().then(onFulfilled, onRejected); }; _proto.toString = function toString() { return this.css; }; _proto.visitSync = function visitSync(visitors, node2) { for (var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;) { var _step_value = _step.value; var plugin22 = _step_value[0]; var visitor = _step_value[1]; this.result.lastPlugin = plugin22; var promise = void 0; try { promise = visitor(node2, this.helpers); } catch (e2) { throw this.handleError(e2, node2.proxyOf); } if (node2.type !== "root" && node2.type !== "document" && !node2.parent) return true; if (isPromise$1(promise)) throw this.getAsyncError(); } }; _proto.visitTick = function visitTick(stack) { var visit2 = stack[stack.length - 1]; var node2 = visit2.node; var visitors = visit2.visitors; if (node2.type !== "root" && node2.type !== "document" && !node2.parent) { stack.pop(); return; } if (visitors.length > 0 && visit2.visitorIndex < visitors.length) { var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex]; var plugin22 = _visitors_visit2_visitorIndex[0]; var visitor = _visitors_visit2_visitorIndex[1]; visit2.visitorIndex += 1; if (visit2.visitorIndex === visitors.length) { visit2.visitors = []; visit2.visitorIndex = 0; } this.result.lastPlugin = plugin22; try { return visitor(node2.toProxy(), this.helpers); } catch (e2) { throw this.handleError(e2, node2); } } if (visit2.iterator !== 0) { var iterator = visit2.iterator; var child; while (child = node2.nodes[node2.indexes[iterator]]) { node2.indexes[iterator] += 1; if (!child[isClean$3]) { child[isClean$3] = true; stack.push(toStack$1(child)); return; } } visit2.iterator = 0; delete node2.indexes[iterator]; } var events = visit2.events; while (visit2.eventIndex < events.length) { var event = events[visit2.eventIndex]; visit2.eventIndex += 1; if (event === CHILDREN$1) { if (node2.nodes && node2.nodes.length) { node2[isClean$3] = true; visit2.iterator = node2.getIterator(); } return; } else if (this.listeners[event]) { visit2.visitors = this.listeners[event]; return; } } stack.pop(); }; _proto.walkSync = function walkSync(node2) { var _this = this; node2[isClean$3] = true; for (var _iterator = _create_for_of_iterator_helper_loose(getEvents$1(node2)), _step; !(_step = _iterator()).done;) { var event = _step.value; if (event === CHILDREN$1) { if (node2.nodes) node2.each(function(child) { if (!child[isClean$3]) _this.walkSync(child); }); } else { var visitors = this.listeners[event]; if (visitors) { if (this.visitSync(visitors, node2.toProxy())) return; } } } }; _proto.warnings = function warnings() { return this.sync().warnings(); }; _create_class(LazyResult, [ { key: "content", get: function get() { return this.stringify().content; } }, { key: "css", get: function get() { return this.stringify().css; } }, { key: "map", get: function get() { return this.stringify().map; } }, { key: "messages", get: function get() { return this.sync().messages; } }, { key: "opts", get: function get() { return this.result.opts; } }, { key: "processor", get: function get() { return this.result.processor; } }, { key: "root", get: function get() { return this.sync().root; } }, { key: Symbol.toStringTag, get: function get() { return "LazyResult"; } } ]); return LazyResult; }(); LazyResult$2$1.registerPostcss = function(dependant) { postcss$2$1 = dependant; }; lazyResult$1 = LazyResult$2$1; LazyResult$2$1.default = LazyResult$2$1; Root$3$1.registerLazyResult(LazyResult$2$1); Document$2$1.registerLazyResult(LazyResult$2$1); MapGenerator2$1 = mapGenerator$1; stringify$1$1 = stringify_1$1; warnOnce2$1 = warnOnce$2$1; parse$1$1 = parse_1$1; Result$1$1 = result$1; NoWorkResult$1$1 = /*#__PURE__*/ function() { function NoWorkResult(processor2, css, opts) { css = css.toString(); this.stringified = false; this._processor = processor2; this._css = css; this._opts = opts; this._map = void 0; var root2; var str = stringify$1$1; this.result = new Result$1$1(this._processor, root2, this._opts); this.result.css = css; var self = this; Object.defineProperty(this.result, "root", { get: function get() { return self.root; } }); var map = new MapGenerator2$1(str, root2, this._opts, css); if (map.isMap()) { var _map_generate = map.generate(); var generatedCSS = _map_generate[0]; var generatedMap = _map_generate[1]; if (generatedCSS) this.result.css = generatedCSS; if (generatedMap) this.result.map = generatedMap; } else { map.clearAnnotation(); this.result.css = map.css; } } var _proto = NoWorkResult.prototype; _proto.async = function async() { if (this.error) return Promise.reject(this.error); return Promise.resolve(this.result); }; _proto.catch = function _catch(onRejected) { return this.async().catch(onRejected); }; _proto.finally = function _finally(onFinally) { return this.async().then(onFinally, onFinally); }; _proto.sync = function sync() { if (this.error) throw this.error; return this.result; }; _proto.then = function then(onFulfilled, onRejected) { if (!("from" in this._opts)) warnOnce2$1("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."); return this.async().then(onFulfilled, onRejected); }; _proto.toString = function toString() { return this._css; }; _proto.warnings = function warnings() { return []; }; _create_class(NoWorkResult, [ { key: "content", get: function get() { return this.result.css; } }, { key: "css", get: function get() { return this.result.css; } }, { key: "map", get: function get() { return this.result.map; } }, { key: "messages", get: function get() { return []; } }, { key: "opts", get: function get() { return this.result.opts; } }, { key: "processor", get: function get() { return this.result.processor; } }, { key: "root", get: function get() { if (this._root) return this._root; var root2; var parser2 = parse$1$1; try { root2 = parser2(this._css, this._opts); } catch (error) { this.error = error; } if (this.error) throw this.error; else { this._root = root2; return root2; } } }, { key: Symbol.toStringTag, get: function get() { return "NoWorkResult"; } } ]); return NoWorkResult; }(); noWorkResult$1 = NoWorkResult$1$1; NoWorkResult$1$1.default = NoWorkResult$1$1; NoWorkResult2$1 = noWorkResult$1; LazyResult$1$1 = lazyResult$1; Document$1$1 = document$1$1; Root$2$1 = root$1; Processor$1$1 = /*#__PURE__*/ function() { function Processor(plugins) { if (plugins === void 0) plugins = []; this.version = "8.4.38"; this.plugins = this.normalize(plugins); } var _proto = Processor.prototype; _proto.normalize = function normalize(plugins) { var normalized = []; for (var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;) { var i2 = _step.value; if (i2.postcss === true) i2 = i2(); else if (i2.postcss) i2 = i2.postcss; if ((typeof i2 === "undefined" ? "undefined" : _type_of(i2)) === "object" && Array.isArray(i2.plugins)) normalized = normalized.concat(i2.plugins); else if ((typeof i2 === "undefined" ? "undefined" : _type_of(i2)) === "object" && i2.postcssPlugin) normalized.push(i2); else if (typeof i2 === "function") normalized.push(i2); else if ((typeof i2 === "undefined" ? "undefined" : _type_of(i2)) === "object" && (i2.parse || i2.stringify)) throw new Error("PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation."); else throw new Error(i2 + " is not a PostCSS plugin"); } return normalized; }; _proto.process = function process1(css, opts) { if (opts === void 0) opts = {}; if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) return new NoWorkResult2$1(this, css, opts); else return new LazyResult$1$1(this, css, opts); }; _proto.use = function use(plugin22) { this.plugins = this.plugins.concat(this.normalize([plugin22])); return this; }; return Processor; }(); processor$1 = Processor$1$1; Processor$1$1.default = Processor$1$1; Root$2$1.registerProcessor(Processor$1$1); Document$1$1.registerProcessor(Processor$1$1); Declaration$1$1 = declaration$1; PreviousMap2$1 = previousMap$1; Comment$1$1 = comment$1; AtRule$1$1 = atRule$1; Input$1$1 = input$1; Root$1$1 = root$1; Rule$1$1 = rule$1; fromJSON_1$1 = fromJSON$1$1; fromJSON$1$1.default = fromJSON$1$1; CssSyntaxError2$1 = cssSyntaxError$1; Declaration2$1 = declaration$1; LazyResult2$1 = lazyResult$1; Container2$1 = container$1; Processor2$1 = processor$1; stringify$5 = stringify_1$1; fromJSON$2 = fromJSON_1$1; Document22 = document$1$1; Warning2$1 = warning$1; Comment2$1 = comment$1; AtRule2$1 = atRule$1; Result2$1 = result$1; Input2$1 = input$1; parse$5 = parse_1$1; list$3 = list_1$1; Rule2$1 = rule$1; Root2$1 = root$1; Node2$1 = node$1; postcss$3.plugin = function plugin(name, initializer) { var warningPrinted = false; function creator() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; if (console && console.warn && !warningPrinted) { warningPrinted = true; console.warn(name + ": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"); if ({}.LANG && {}.LANG.startsWith("cn")) console.warn(name + ": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"); } var transformer = initializer.apply(void 0, [].concat(args)); transformer.postcssPlugin = name; transformer.postcssVersion = new Processor2$1().version; return transformer; } var cache; Object.defineProperty(creator, "postcss", { get: function get() { if (!cache) cache = creator(); return cache; } }); creator.process = function(css, processOpts, pluginOpts) { return postcss$3([creator(pluginOpts)]).process(css, processOpts); }; return creator; }; postcss$3.stringify = stringify$5; postcss$3.parse = parse$5; postcss$3.fromJSON = fromJSON$2; postcss$3.list = list$3; postcss$3.comment = function(defaults) { return new Comment2$1(defaults); }; postcss$3.atRule = function(defaults) { return new AtRule2$1(defaults); }; postcss$3.decl = function(defaults) { return new Declaration2$1(defaults); }; postcss$3.rule = function(defaults) { return new Rule2$1(defaults); }; postcss$3.root = function(defaults) { return new Root2$1(defaults); }; postcss$3.document = function(defaults) { return new Document22(defaults); }; postcss$3.CssSyntaxError = CssSyntaxError2$1; postcss$3.Declaration = Declaration2$1; postcss$3.Container = Container2$1; postcss$3.Processor = Processor2$1; postcss$3.Document = Document22; postcss$3.Comment = Comment2$1; postcss$3.Warning = Warning2$1; postcss$3.AtRule = AtRule2$1; postcss$3.Result = Result2$1; postcss$3.Input = Input2$1; postcss$3.Rule = Rule2$1; postcss$3.Root = Root2$1; postcss$3.Node = Node2$1; LazyResult2$1.registerPostcss(postcss$3); postcss_1$1 = postcss$3; postcss$3.default = postcss$3; postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1); postcss$1$1.stringify; postcss$1$1.fromJSON; postcss$1$1.plugin; postcss$1$1.parse; postcss$1$1.list; postcss$1$1.document; postcss$1$1.comment; postcss$1$1.atRule; postcss$1$1.rule; postcss$1$1.decl; postcss$1$1.root; postcss$1$1.CssSyntaxError; postcss$1$1.Declaration; postcss$1$1.Container; postcss$1$1.Processor; postcss$1$1.Document; postcss$1$1.Comment; postcss$1$1.Warning; postcss$1$1.AtRule; postcss$1$1.Result; postcss$1$1.Input; postcss$1$1.Rule; postcss$1$1.Root; postcss$1$1.Node; __defProp2 = Object.defineProperty; __defNormalProp2 = function(obj, key, value) { return key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; }; __publicField2 = function(obj, key, value) { return __defNormalProp2(obj, (typeof key === "undefined" ? "undefined" : _type_of(key)) !== "symbol" ? key + "" : key, value); }; picocolors_browser = { exports: {} }; x = String; create = function create() { return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x }; }; picocolors_browser.exports = create(); picocolors_browser.exports.createColors = create; picocolors_browserExports = picocolors_browser.exports; require$$2 = /* @__PURE__ */ getAugmentedNamespace(/* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: {} }, Symbol.toStringTag, { value: "Module" }))); pico = picocolors_browserExports; terminalHighlight$1 = require$$2; CssSyntaxError$3 = /*#__PURE__*/ function(Error1) { _inherits(CssSyntaxError2, Error1); function CssSyntaxError2(message, line, column, source, file, plugin22) { var _this = Error1.call(this, message) || this; _this.name = "CssSyntaxError"; _this.reason = message; if (file) _this.file = file; if (source) _this.source = source; if (plugin22) _this.plugin = plugin22; if (typeof line !== "undefined" && typeof column !== "undefined") if (typeof line === "number") { _this.line = line; _this.column = column; } else { _this.line = line.line; _this.column = line.column; _this.endLine = column.line; _this.endColumn = column.column; } _this.setMessage(); if (Error.captureStackTrace) Error.captureStackTrace(_this, CssSyntaxError2); return _this; } var _proto = CssSyntaxError2.prototype; _proto.setMessage = function setMessage() { this.message = this.plugin ? this.plugin + ": " : ""; this.message += this.file ? this.file : ""; if (typeof this.line !== "undefined") this.message += ":" + this.line + ":" + this.column; this.message += ": " + this.reason; }; _proto.showSourceCode = function showSourceCode(color) { var _this = this; if (!this.source) return ""; var css = this.source; if (color == null) color = pico.isColorSupported; if (terminalHighlight$1) { if (color) css = terminalHighlight$1(css); } var lines = css.split(/\r?\n/); var start = Math.max(this.line - 3, 0); var end = Math.min(this.line + 2, lines.length); var maxWidth = String(end).length; var mark; var aside; if (color) { var _pico_createColors = pico.createColors(true); var bold = _pico_createColors.bold; var gray = _pico_createColors.gray; var red = _pico_createColors.red; mark = function(text) { return bold(red(text)); }; aside = function(text) { return gray(text); }; } else mark = aside = function(str) { return str; }; return lines.slice(start, end).map(function(line, index2) { var number = start + 1 + index2; var gutter = " " + (" " + number).slice(-maxWidth) + " | "; if (number === _this.line) { var spacing = aside(gutter.replace(/\d/g, " ")) + line.slice(0, _this.column - 1).replace(/[^\t]/g, " "); return mark(">") + aside(gutter) + line + "\n " + spacing + mark("^"); } return " " + aside(gutter) + line; }).join("\n"); }; _proto.toString = function toString() { var code = this.showSourceCode(); if (code) code = "\n\n" + code + "\n"; return this.name + ": " + this.message + code; }; return CssSyntaxError2; }(_wrap_native_super(Error)); cssSyntaxError = CssSyntaxError$3; CssSyntaxError$3.default = CssSyntaxError$3; symbols = {}; symbols.isClean = Symbol("isClean"); symbols.my = Symbol("my"); DEFAULT_RAW = { after: "\n", beforeClose: "\n", beforeComment: "\n", beforeDecl: "\n", beforeOpen: " ", beforeRule: "\n", colon: ": ", commentLeft: " ", commentRight: " ", emptyBody: "", indent: " ", semicolon: false }; Stringifier$2 = /*#__PURE__*/ function() { function Stringifier2(builder) { this.builder = builder; } var _proto = Stringifier2.prototype; _proto.atrule = function atrule(node2, semicolon) { var name = "@" + node2.name; var params = node2.params ? this.rawValue(node2, "params") : ""; if (typeof node2.raws.afterName !== "undefined") name += node2.raws.afterName; else if (params) name += " "; if (node2.nodes) this.block(node2, name + params); else { var end = (node2.raws.between || "") + (semicolon ? ";" : ""); this.builder(name + params + end, node2); } }; _proto.beforeAfter = function beforeAfter(node2, detect) { var value; if (node2.type === "decl") value = this.raw(node2, null, "beforeDecl"); else if (node2.type === "comment") value = this.raw(node2, null, "beforeComment"); else if (detect === "before") value = this.raw(node2, null, "beforeRule"); else value = this.raw(node2, null, "beforeClose"); var buf = node2.parent; var depth = 0; while (buf && buf.type !== "root") { depth += 1; buf = buf.parent; } if (value.includes("\n")) { var indent = this.raw(node2, null, "indent"); if (indent.length) for (var step = 0; step < depth; step++) value += indent; } return value; }; _proto.block = function block(node2, start) { var between = this.raw(node2, "between", "beforeOpen"); this.builder(start + between + "{", node2, "start"); var after; if (node2.nodes && node2.nodes.length) { this.body(node2); after = this.raw(node2, "after"); } else after = this.raw(node2, "after", "emptyBody"); if (after) this.builder(after); this.builder("}", node2, "end"); }; _proto.body = function body(node2) { var last = node2.nodes.length - 1; while (last > 0) { if (node2.nodes[last].type !== "comment") break; last -= 1; } var semicolon = this.raw(node2, "semicolon"); for (var i2 = 0; i2 < node2.nodes.length; i2++) { var child = node2.nodes[i2]; var before = this.raw(child, "before"); if (before) this.builder(before); this.stringify(child, last !== i2 || semicolon); } }; _proto.comment = function comment(node2) { var left = this.raw(node2, "left", "commentLeft"); var right = this.raw(node2, "right", "commentRight"); this.builder("/*" + left + node2.text + right + "*/", node2); }; _proto.decl = function decl(node2, semicolon) { var between = this.raw(node2, "between", "colon"); var string = node2.prop + between + this.rawValue(node2, "value"); if (node2.important) string += node2.raws.important || " !important"; if (semicolon) string += ";"; this.builder(string, node2); }; _proto.document = function document1(node2) { this.body(node2); }; _proto.raw = function raw(node2, own, detect) { var value; if (!detect) detect = own; if (own) { value = node2.raws[own]; if (typeof value !== "undefined") return value; } var parent = node2.parent; if (detect === "before") { if (!parent || parent.type === "root" && parent.first === node2) return ""; if (parent && parent.type === "document") return ""; } if (!parent) return DEFAULT_RAW[detect]; var root2 = node2.root(); if (!root2.rawCache) root2.rawCache = {}; if (typeof root2.rawCache[detect] !== "undefined") return root2.rawCache[detect]; if (detect === "before" || detect === "after") return this.beforeAfter(node2, detect); else { var method = "raw" + capitalize(detect); if (this[method]) value = this[method](root2, node2); else root2.walk(function(i2) { value = i2.raws[own]; if (typeof value !== "undefined") return false; }); } if (typeof value === "undefined") value = DEFAULT_RAW[detect]; root2.rawCache[detect] = value; return value; }; _proto.rawBeforeClose = function rawBeforeClose(root2) { var value; root2.walk(function(i2) { if (i2.nodes && i2.nodes.length > 0) { if (typeof i2.raws.after !== "undefined") { value = i2.raws.after; if (value.includes("\n")) value = value.replace(/[^\n]+$/, ""); return false; } } }); if (value) value = value.replace(/\S/g, ""); return value; }; _proto.rawBeforeComment = function rawBeforeComment(root2, node2) { var value; root2.walkComments(function(i2) { if (typeof i2.raws.before !== "undefined") { value = i2.raws.before; if (value.includes("\n")) value = value.replace(/[^\n]+$/, ""); return false; } }); if (typeof value === "undefined") value = this.raw(node2, null, "beforeDecl"); else if (value) value = value.replace(/\S/g, ""); return value; }; _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) { var value; root2.walkDecls(function(i2) { if (typeof i2.raws.before !== "undefined") { value = i2.raws.before; if (value.includes("\n")) value = value.replace(/[^\n]+$/, ""); return false; } }); if (typeof value === "undefined") value = this.raw(node2, null, "beforeRule"); else if (value) value = value.replace(/\S/g, ""); return value; }; _proto.rawBeforeOpen = function rawBeforeOpen(root2) { var value; root2.walk(function(i2) { if (i2.type !== "decl") { value = i2.raws.between; if (typeof value !== "undefined") return false; } }); return value; }; _proto.rawBeforeRule = function rawBeforeRule(root2) { var value; root2.walk(function(i2) { if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) { if (typeof i2.raws.before !== "undefined") { value = i2.raws.before; if (value.includes("\n")) value = value.replace(/[^\n]+$/, ""); return false; } } }); if (value) value = value.replace(/\S/g, ""); return value; }; _proto.rawColon = function rawColon(root2) { var value; root2.walkDecls(function(i2) { if (typeof i2.raws.between !== "undefined") { value = i2.raws.between.replace(/[^\s:]/g, ""); return false; } }); return value; }; _proto.rawEmptyBody = function rawEmptyBody(root2) { var value; root2.walk(function(i2) { if (i2.nodes && i2.nodes.length === 0) { value = i2.raws.after; if (typeof value !== "undefined") return false; } }); return value; }; _proto.rawIndent = function rawIndent(root2) { if (root2.raws.indent) return root2.raws.indent; var value; root2.walk(function(i2) { var p = i2.parent; if (p && p !== root2 && p.parent && p.parent === root2) { if (typeof i2.raws.before !== "undefined") { var parts = i2.raws.before.split("\n"); value = parts[parts.length - 1]; value = value.replace(/\S/g, ""); return false; } } }); return value; }; _proto.rawSemicolon = function rawSemicolon(root2) { var value; root2.walk(function(i2) { if (i2.nodes && i2.nodes.length && i2.last.type === "decl") { value = i2.raws.semicolon; if (typeof value !== "undefined") return false; } }); return value; }; _proto.rawValue = function rawValue(node2, prop) { var value = node2[prop]; var raw = node2.raws[prop]; if (raw && raw.value === value) return raw.raw; return value; }; _proto.root = function root(node2) { this.body(node2); if (node2.raws.after) this.builder(node2.raws.after); }; _proto.rule = function rule(node2) { this.block(node2, this.rawValue(node2, "selector")); if (node2.raws.ownSemicolon) this.builder(node2.raws.ownSemicolon, node2, "end"); }; _proto.stringify = function stringify(node2, semicolon) { if (!this[node2.type]) throw new Error("Unknown AST node type " + node2.type + ". Maybe you need to change PostCSS stringifier."); this[node2.type](node2, semicolon); }; return Stringifier2; }(); stringifier = Stringifier$2; Stringifier$2.default = Stringifier$2; Stringifier$1 = stringifier; stringify_1 = stringify$4; stringify$4.default = stringify$4; isClean$2 = symbols.isClean; my$2 = symbols.my; CssSyntaxError$2 = cssSyntaxError; Stringifier22 = stringifier; stringify$3 = stringify_1; Node$4 = /*#__PURE__*/ function() { function Node3(defaults) { if (defaults === void 0) defaults = {}; this.raws = {}; this[isClean$2] = false; this[my$2] = true; for (var name in defaults) if (name === "nodes") { this.nodes = []; for (var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;) { var node2 = _step.value; if (typeof node2.clone === "function") this.append(node2.clone()); else this.append(node2); } } else this[name] = defaults[name]; } var _proto = Node3.prototype; _proto.addToError = function addToError(error) { error.postcssNode = this; if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { var s2 = this.source; error.stack = error.stack.replace(/\n\s{4}at /, "$&" + s2.input.from + ":" + s2.start.line + ":" + s2.start.column + "$&"); } return error; }; _proto.after = function after(add) { this.parent.insertAfter(this, add); return this; }; _proto.assign = function assign(overrides) { if (overrides === void 0) overrides = {}; for (var name in overrides) this[name] = overrides[name]; return this; }; _proto.before = function before(add) { this.parent.insertBefore(this, add); return this; }; _proto.cleanRaws = function cleanRaws(keepBetween) { delete this.raws.before; delete this.raws.after; if (!keepBetween) delete this.raws.between; }; _proto.clone = function clone(overrides) { if (overrides === void 0) overrides = {}; var cloned = cloneNode(this); for (var name in overrides) cloned[name] = overrides[name]; return cloned; }; _proto.cloneAfter = function cloneAfter(overrides) { if (overrides === void 0) overrides = {}; var cloned = this.clone(overrides); this.parent.insertAfter(this, cloned); return cloned; }; _proto.cloneBefore = function cloneBefore(overrides) { if (overrides === void 0) overrides = {}; var cloned = this.clone(overrides); this.parent.insertBefore(this, cloned); return cloned; }; _proto.error = function error(message, opts) { if (opts === void 0) opts = {}; if (this.source) { var _this_rangeBy = this.rangeBy(opts); var end = _this_rangeBy.end; var start = _this_rangeBy.start; return this.source.input.error(message, { column: start.column, line: start.line }, { column: end.column, line: end.line }, opts); } return new CssSyntaxError$2(message); }; _proto.getProxyProcessor = function getProxyProcessor() { return { get: function get(node2, prop) { if (prop === "proxyOf") return node2; else if (prop === "root") return function() { return node2.root().toProxy(); }; else return node2[prop]; }, set: function set(node2, prop, value) { if (node2[prop] === value) return true; node2[prop] = value; if (prop === "prop" || prop === "value" || prop === "name" || prop === "params" || prop === "important" || prop === "text") node2.markDirty(); return true; } }; }; _proto.markDirty = function markDirty() { if (this[isClean$2]) { this[isClean$2] = false; var next = this; while (next = next.parent) next[isClean$2] = false; } }; _proto.next = function next() { if (!this.parent) return void 0; var index2 = this.parent.index(this); return this.parent.nodes[index2 + 1]; }; _proto.positionBy = function positionBy(opts, stringRepresentation) { var pos = this.source.start; if (opts.index) pos = this.positionInside(opts.index, stringRepresentation); else if (opts.word) { stringRepresentation = this.toString(); var index2 = stringRepresentation.indexOf(opts.word); if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation); } return pos; }; _proto.positionInside = function positionInside(index2, stringRepresentation) { var string = stringRepresentation || this.toString(); var column = this.source.start.column; var line = this.source.start.line; for (var i2 = 0; i2 < index2; i2++) if (string[i2] === "\n") { column = 1; line += 1; } else column += 1; return { column, line }; }; _proto.prev = function prev() { if (!this.parent) return void 0; var index2 = this.parent.index(this); return this.parent.nodes[index2 - 1]; }; _proto.rangeBy = function rangeBy(opts) { var start = { column: this.source.start.column, line: this.source.start.line }; var end = this.source.end ? { column: this.source.end.column + 1, line: this.source.end.line } : { column: start.column + 1, line: start.line }; if (opts.word) { var stringRepresentation = this.toString(); var index2 = stringRepresentation.indexOf(opts.word); if (index2 !== -1) { start = this.positionInside(index2, stringRepresentation); end = this.positionInside(index2 + opts.word.length, stringRepresentation); } } else { if (opts.start) start = { column: opts.start.column, line: opts.start.line }; else if (opts.index) start = this.positionInside(opts.index); if (opts.end) end = { column: opts.end.column, line: opts.end.line }; else if (typeof opts.endIndex === "number") end = this.positionInside(opts.endIndex); else if (opts.index) end = this.positionInside(opts.index + 1); } if (end.line < start.line || end.line === start.line && end.column <= start.column) end = { column: start.column + 1, line: start.line }; return { end, start }; }; _proto.raw = function raw(prop, defaultType) { return new Stringifier22().raw(this, prop, defaultType); }; _proto.remove = function remove() { if (this.parent) this.parent.removeChild(this); this.parent = void 0; return this; }; _proto.replaceWith = function replaceWith() { for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) nodes[_key] = arguments[_key]; if (this.parent) { var bookmark = this; var foundSelf = false; for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; if (node2 === this) foundSelf = true; else if (foundSelf) { this.parent.insertAfter(bookmark, node2); bookmark = node2; } else this.parent.insertBefore(bookmark, node2); } if (!foundSelf) this.remove(); } return this; }; _proto.root = function root() { var result2 = this; while (result2.parent && result2.parent.type !== "document") result2 = result2.parent; return result2; }; _proto.toJSON = function toJSON(_, inputs) { var fixed = {}; var emitInputs = inputs == null; inputs = inputs || /* @__PURE__ */ new Map(); var inputsNextIndex = 0; for (var name in this) { if (!Object.prototype.hasOwnProperty.call(this, name)) continue; if (name === "parent" || name === "proxyCache") continue; var value = this[name]; if (Array.isArray(value)) fixed[name] = value.map(function(i2) { if ((typeof i2 === "undefined" ? "undefined" : _type_of(i2)) === "object" && i2.toJSON) return i2.toJSON(null, inputs); else return i2; }); else if ((typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && value.toJSON) fixed[name] = value.toJSON(null, inputs); else if (name === "source") { var inputId = inputs.get(value.input); if (inputId == null) { inputId = inputsNextIndex; inputs.set(value.input, inputsNextIndex); inputsNextIndex++; } fixed[name] = { end: value.end, inputId, start: value.start }; } else fixed[name] = value; } if (emitInputs) fixed.inputs = [].concat(inputs.keys()).map(function(input2) { return input2.toJSON(); }); return fixed; }; _proto.toProxy = function toProxy() { if (!this.proxyCache) this.proxyCache = new Proxy(this, this.getProxyProcessor()); return this.proxyCache; }; _proto.toString = function toString(stringifier2) { if (stringifier2 === void 0) stringifier2 = stringify$3; if (stringifier2.stringify) stringifier2 = stringifier2.stringify; var result2 = ""; stringifier2(this, function(i2) { result2 += i2; }); return result2; }; _proto.warn = function warn(result2, text, opts) { var data = { node: this }; for (var i2 in opts) data[i2] = opts[i2]; return result2.warn(text, data); }; _create_class(Node3, [{ key: "proxyOf", get: function get() { return this; } }]); return Node3; }(); node = Node$4; Node$4.default = Node$4; Declaration$4 = /*#__PURE__*/ function(Node$3) { _inherits(Declaration2, Node$3); function Declaration2(defaults) { var _this; if (defaults && typeof defaults.value !== "undefined" && typeof defaults.value !== "string") defaults = _extends({}, defaults, { value: String(defaults.value) }); _this = Node$3.call(this, defaults) || this; _this.type = "decl"; return _this; } _create_class(Declaration2, [{ key: "variable", get: function get() { return this.prop.startsWith("--") || this.prop[0] === "$"; } }]); return Declaration2; }(node); declaration = Declaration$4; Declaration$4.default = Declaration$4; urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"; nanoid$1 = function(size) { if (size === void 0) size = 21; var id = ""; var i2 = size; while (i2--) id += urlAlphabet[Math.random() * 64 | 0]; return id; }; nonSecure = { nanoid: nanoid$1 }; SourceMapConsumer$2 = require$$2.SourceMapConsumer; SourceMapGenerator$2 = require$$2.SourceMapGenerator; existsSync = require$$2.existsSync; readFileSync = require$$2.readFileSync; dirname$1 = require$$2.dirname; join = require$$2.join; PreviousMap$2 = /*#__PURE__*/ function() { function PreviousMap2(css, opts) { if (opts.map === false) return; this.loadAnnotation(css); this.inline = this.startWith(this.annotation, "data:"); var prev = opts.map ? opts.map.prev : void 0; var text = this.loadMap(opts.from, prev); if (!this.mapFile && opts.from) this.mapFile = opts.from; if (this.mapFile) this.root = dirname$1(this.mapFile); if (text) this.text = text; } var _proto = PreviousMap2.prototype; _proto.consumer = function consumer() { if (!this.consumerCache) this.consumerCache = new SourceMapConsumer$2(this.text); return this.consumerCache; }; _proto.decodeInline = function decodeInline(text) { var baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/; var baseUri = /^data:application\/json;base64,/; if (/^data:application\/json;charset=utf-?8,/.test(text) || /^data:application\/json,/.test(text)) return decodeURIComponent(text.substr(RegExp.lastMatch.length)); if (baseCharsetUri.test(text) || baseUri.test(text)) return fromBase64(text.substr(RegExp.lastMatch.length)); var encoding = text.match(/data:application\/json;([^,]+),/)[1]; throw new Error("Unsupported source map encoding " + encoding); }; _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) { return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, "").trim(); }; _proto.isMap = function isMap(map) { if ((typeof map === "undefined" ? "undefined" : _type_of(map)) !== "object") return false; return typeof map.mappings === "string" || typeof map._mappings === "string" || Array.isArray(map.sections); }; _proto.loadAnnotation = function loadAnnotation(css) { var comments = css.match(/\/\*\s*# sourceMappingURL=/gm); if (!comments) return; var start = css.lastIndexOf(comments.pop()); var end = css.indexOf("*/", start); if (start > -1 && end > -1) this.annotation = this.getAnnotationURL(css.substring(start, end)); }; _proto.loadFile = function loadFile(path) { this.root = dirname$1(path); if (existsSync(path)) { this.mapFile = path; return readFileSync(path, "utf-8").toString().trim(); } }; _proto.loadMap = function loadMap(file, prev) { if (prev === false) return false; if (prev) if (typeof prev === "string") return prev; else if (typeof prev === "function") { var prevPath = prev(file); if (prevPath) { var map = this.loadFile(prevPath); if (!map) throw new Error("Unable to load previous source map: " + prevPath.toString()); return map; } } else if (_instanceof(prev, SourceMapConsumer$2)) return SourceMapGenerator$2.fromSourceMap(prev).toString(); else if (_instanceof(prev, SourceMapGenerator$2)) return prev.toString(); else if (this.isMap(prev)) return JSON.stringify(prev); else throw new Error("Unsupported previous source map format: " + prev.toString()); else if (this.inline) return this.decodeInline(this.annotation); else if (this.annotation) { var map1 = this.annotation; if (file) map1 = join(dirname$1(file), map1); return this.loadFile(map1); } }; _proto.startWith = function startWith(string, start) { if (!string) return false; return string.substr(0, start.length) === start; }; _proto.withContent = function withContent() { return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0); }; return PreviousMap2; }(); previousMap = PreviousMap$2; PreviousMap$2.default = PreviousMap$2; SourceMapConsumer$1 = require$$2.SourceMapConsumer; SourceMapGenerator$1 = require$$2.SourceMapGenerator; fileURLToPath = require$$2.fileURLToPath; pathToFileURL$1 = require$$2.pathToFileURL; isAbsolute = require$$2.isAbsolute; resolve$1 = require$$2.resolve; nanoid = nonSecure.nanoid; terminalHighlight = require$$2; CssSyntaxError$1 = cssSyntaxError; PreviousMap$1 = previousMap; fromOffsetCache = Symbol("fromOffsetCache"); sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1); pathAvailable$1 = Boolean(resolve$1 && isAbsolute); Input$4 = /*#__PURE__*/ function() { function Input2(css, opts) { if (opts === void 0) opts = {}; if (css === null || typeof css === "undefined" || (typeof css === "undefined" ? "undefined" : _type_of(css)) === "object" && !css.toString) throw new Error("PostCSS received " + css + " instead of CSS string"); this.css = css.toString(); if (this.css[0] === "" || this.css[0] === "￾") { this.hasBOM = true; this.css = this.css.slice(1); } else this.hasBOM = false; if (opts.from) if (!pathAvailable$1 || /^\w+:\/\//.test(opts.from) || isAbsolute(opts.from)) this.file = opts.from; else this.file = resolve$1(opts.from); if (pathAvailable$1 && sourceMapAvailable$1) { var map = new PreviousMap$1(this.css, opts); if (map.text) { this.map = map; var file = map.consumer().file; if (!this.file && file) this.file = this.mapResolve(file); } } if (!this.file) this.id = ""; if (this.map) this.map.file = this.from; } var _proto = Input2.prototype; _proto.error = function error(message, line, column, opts) { if (opts === void 0) opts = {}; var result2; var endLine; var endColumn; if (line && (typeof line === "undefined" ? "undefined" : _type_of(line)) === "object") { var start = line; var end = column; if (typeof start.offset === "number") { var pos = this.fromOffset(start.offset); line = pos.line; column = pos.col; } else { line = start.line; column = start.column; } if (typeof end.offset === "number") { var pos1 = this.fromOffset(end.offset); endLine = pos1.line; endColumn = pos1.col; } else { endLine = end.line; endColumn = end.column; } } else if (!column) { var pos2 = this.fromOffset(line); line = pos2.line; column = pos2.col; } var origin = this.origin(line, column, endLine, endColumn); if (origin) result2 = new CssSyntaxError$1(message, origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line }, origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine }, origin.source, origin.file, opts.plugin); else result2 = new CssSyntaxError$1(message, endLine === void 0 ? line : { column, line }, endLine === void 0 ? column : { column: endColumn, line: endLine }, this.css, this.file, opts.plugin); result2.input = { column, endColumn, endLine, line, source: this.css }; if (this.file) { if (pathToFileURL$1) result2.input.url = pathToFileURL$1(this.file).toString(); result2.input.file = this.file; } return result2; }; _proto.fromOffset = function fromOffset(offset) { var lastLine; var lineToIndex; if (!this[fromOffsetCache]) { var lines = this.css.split("\n"); lineToIndex = new Array(lines.length); var prevIndex = 0; for (var i2 = 0, l2 = lines.length; i2 < l2; i2++) { lineToIndex[i2] = prevIndex; prevIndex += lines[i2].length + 1; } this[fromOffsetCache] = lineToIndex; } else lineToIndex = this[fromOffsetCache]; lastLine = lineToIndex[lineToIndex.length - 1]; var min = 0; if (offset >= lastLine) min = lineToIndex.length - 1; else { var max = lineToIndex.length - 2; var mid; while (min < max) { mid = min + (max - min >> 1); if (offset < lineToIndex[mid]) max = mid - 1; else if (offset >= lineToIndex[mid + 1]) min = mid + 1; else { min = mid; break; } } } return { col: offset - lineToIndex[min] + 1, line: min + 1 }; }; _proto.mapResolve = function mapResolve(file) { if (/^\w+:\/\//.test(file)) return file; return resolve$1(this.map.consumer().sourceRoot || this.map.root || ".", file); }; _proto.origin = function origin(line, column, endLine, endColumn) { if (!this.map) return false; var consumer = this.map.consumer(); var from = consumer.originalPositionFor({ column, line }); if (!from.source) return false; var to; if (typeof endLine === "number") to = consumer.originalPositionFor({ column: endColumn, line: endLine }); var fromUrl; if (isAbsolute(from.source)) fromUrl = pathToFileURL$1(from.source); else fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile)); var result2 = { column: from.column, endColumn: to && to.column, endLine: to && to.line, line: from.line, url: fromUrl.toString() }; if (fromUrl.protocol === "file:") if (fileURLToPath) result2.file = fileURLToPath(fromUrl); else throw new Error("file: protocol is not available in this PostCSS build"); var source = consumer.sourceContentFor(from.source); if (source) result2.source = source; return result2; }; _proto.toJSON = function toJSON() { var json = {}; for (var _i = 0, _iter = [ "hasBOM", "css", "file", "id" ]; _i < _iter.length; _i++) { var name = _iter[_i]; if (this[name] != null) json[name] = this[name]; } if (this.map) { json.map = _extends({}, this.map); if (json.map.consumerCache) json.map.consumerCache = void 0; } return json; }; _create_class(Input2, [{ key: "from", get: function get() { return this.file || this.id; } }]); return Input2; }(); input = Input$4; Input$4.default = Input$4; if (terminalHighlight && terminalHighlight.registerInput) terminalHighlight.registerInput(Input$4); SourceMapConsumer = require$$2.SourceMapConsumer; SourceMapGenerator = require$$2.SourceMapGenerator; dirname = require$$2.dirname; relative = require$$2.relative; resolve$3 = require$$2.resolve; sep = require$$2.sep; pathToFileURL = require$$2.pathToFileURL; Input$3 = input; sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator); pathAvailable = Boolean(dirname && resolve$3 && relative && sep); mapGenerator = /* @__PURE__ */ function() { function MapGenerator2(stringify2, root2, opts, cssString) { this.stringify = stringify2; this.mapOpts = opts.map || {}; this.root = root2; this.opts = opts; this.css = cssString; this.originalCSS = cssString; this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute; this.memoizedFileURLs = /* @__PURE__ */ new Map(); this.memoizedPaths = /* @__PURE__ */ new Map(); this.memoizedURLs = /* @__PURE__ */ new Map(); } var _proto = MapGenerator2.prototype; _proto.addAnnotation = function addAnnotation() { var content; if (this.isInline()) content = "data:application/json;base64," + this.toBase64(this.map.toString()); else if (typeof this.mapOpts.annotation === "string") content = this.mapOpts.annotation; else if (typeof this.mapOpts.annotation === "function") content = this.mapOpts.annotation(this.opts.to, this.root); else content = this.outputFile() + ".map"; var eol = "\n"; if (this.css.includes("\r\n")) eol = "\r\n"; this.css += eol + "/*# sourceMappingURL=" + content + " */"; }; _proto.applyPrevMaps = function applyPrevMaps() { for (var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;) { var prev = _step.value; var from = this.toUrl(this.path(prev.file)); var root2 = prev.root || dirname(prev.file); var map = void 0; if (this.mapOpts.sourcesContent === false) { map = new SourceMapConsumer(prev.text); if (map.sourcesContent) map.sourcesContent = null; } else map = prev.consumer(); this.map.applySourceMap(map, from, this.toUrl(this.path(root2))); } }; _proto.clearAnnotation = function clearAnnotation() { if (this.mapOpts.annotation === false) return; if (this.root) { var node2; for (var i2 = this.root.nodes.length - 1; i2 >= 0; i2--) { node2 = this.root.nodes[i2]; if (node2.type !== "comment") continue; if (node2.text.indexOf("# sourceMappingURL=") === 0) this.root.removeChild(i2); } } else if (this.css) this.css = this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm, ""); }; _proto.generate = function generate() { this.clearAnnotation(); if (pathAvailable && sourceMapAvailable && this.isMap()) return this.generateMap(); else { var result2 = ""; this.stringify(this.root, function(i2) { result2 += i2; }); return [result2]; } }; _proto.generateMap = function generateMap() { if (this.root) this.generateString(); else if (this.previous().length === 1) { var prev = this.previous()[0].consumer(); prev.file = this.outputFile(); this.map = SourceMapGenerator.fromSourceMap(prev, { ignoreInvalidMapping: true }); } else { this.map = new SourceMapGenerator({ file: this.outputFile(), ignoreInvalidMapping: true }); this.map.addMapping({ generated: { column: 0, line: 1 }, original: { column: 0, line: 1 }, source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : "" }); } if (this.isSourcesContent()) this.setSourcesContent(); if (this.root && this.previous().length > 0) this.applyPrevMaps(); if (this.isAnnotation()) this.addAnnotation(); if (this.isInline()) return [this.css]; else return [this.css, this.map]; }; _proto.generateString = function generateString() { var _this = this; this.css = ""; this.map = new SourceMapGenerator({ file: this.outputFile(), ignoreInvalidMapping: true }); var line = 1; var column = 1; var noSource = ""; var mapping = { generated: { column: 0, line: 0 }, original: { column: 0, line: 0 }, source: "" }; var lines; var last; this.stringify(this.root, function(str, node2, type) { _this.css += str; if (node2 && type !== "end") { mapping.generated.line = line; mapping.generated.column = column - 1; if (node2.source && node2.source.start) { mapping.source = _this.sourcePath(node2); mapping.original.line = node2.source.start.line; mapping.original.column = node2.source.start.column - 1; _this.map.addMapping(mapping); } else { mapping.source = noSource; mapping.original.line = 1; mapping.original.column = 0; _this.map.addMapping(mapping); } } lines = str.match(/\n/g); if (lines) { line += lines.length; last = str.lastIndexOf("\n"); column = str.length - last; } else column += str.length; if (node2 && type !== "start") { var p = node2.parent || { raws: {} }; if (!(node2.type === "decl" || node2.type === "atrule" && !node2.nodes) || node2 !== p.last || p.raws.semicolon) if (node2.source && node2.source.end) { mapping.source = _this.sourcePath(node2); mapping.original.line = node2.source.end.line; mapping.original.column = node2.source.end.column - 1; mapping.generated.line = line; mapping.generated.column = column - 2; _this.map.addMapping(mapping); } else { mapping.source = noSource; mapping.original.line = 1; mapping.original.column = 0; mapping.generated.line = line; mapping.generated.column = column - 1; _this.map.addMapping(mapping); } } }); }; _proto.isAnnotation = function isAnnotation() { if (this.isInline()) return true; if (typeof this.mapOpts.annotation !== "undefined") return this.mapOpts.annotation; if (this.previous().length) return this.previous().some(function(i2) { return i2.annotation; }); return true; }; _proto.isInline = function isInline() { if (typeof this.mapOpts.inline !== "undefined") return this.mapOpts.inline; var annotation = this.mapOpts.annotation; if (typeof annotation !== "undefined" && annotation !== true) return false; if (this.previous().length) return this.previous().some(function(i2) { return i2.inline; }); return true; }; _proto.isMap = function isMap() { if (typeof this.opts.map !== "undefined") return !!this.opts.map; return this.previous().length > 0; }; _proto.isSourcesContent = function isSourcesContent() { if (typeof this.mapOpts.sourcesContent !== "undefined") return this.mapOpts.sourcesContent; if (this.previous().length) return this.previous().some(function(i2) { return i2.withContent(); }); return true; }; _proto.outputFile = function outputFile() { if (this.opts.to) return this.path(this.opts.to); else if (this.opts.from) return this.path(this.opts.from); else return "to.css"; }; _proto.path = function path(file) { if (this.mapOpts.absolute) return file; if (file.charCodeAt(0) === 60) return file; if (/^\w+:\/\//.test(file)) return file; var cached = this.memoizedPaths.get(file); if (cached) return cached; var from = this.opts.to ? dirname(this.opts.to) : "."; if (typeof this.mapOpts.annotation === "string") from = dirname(resolve$3(from, this.mapOpts.annotation)); var path = relative(from, file); this.memoizedPaths.set(file, path); return path; }; _proto.previous = function previous() { var _this = this; if (!this.previousMaps) { this.previousMaps = []; if (this.root) this.root.walk(function(node2) { if (node2.source && node2.source.input.map) { var map = node2.source.input.map; if (!_this.previousMaps.includes(map)) _this.previousMaps.push(map); } }); else { var input2 = new Input$3(this.originalCSS, this.opts); if (input2.map) this.previousMaps.push(input2.map); } } return this.previousMaps; }; _proto.setSourcesContent = function setSourcesContent() { var _this = this; var already = {}; if (this.root) this.root.walk(function(node2) { if (node2.source) { var from = node2.source.input.from; if (from && !already[from]) { already[from] = true; var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from)); _this.map.setSourceContent(fromUrl, node2.source.input.css); } } }); else if (this.css) { var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : ""; this.map.setSourceContent(from, this.css); } }; _proto.sourcePath = function sourcePath(node2) { if (this.mapOpts.from) return this.toUrl(this.mapOpts.from); else if (this.usesFileUrls) return this.toFileUrl(node2.source.input.from); else return this.toUrl(this.path(node2.source.input.from)); }; _proto.toBase64 = function toBase64(str) { if (Buffer) return Buffer.from(str).toString("base64"); else return window.btoa(unescape(encodeURIComponent(str))); }; _proto.toFileUrl = function toFileUrl(path) { var cached = this.memoizedFileURLs.get(path); if (cached) return cached; if (pathToFileURL) { var fileURL = pathToFileURL(path).toString(); this.memoizedFileURLs.set(path, fileURL); return fileURL; } else throw new Error("`map.absolute` option is not available in this PostCSS build"); }; _proto.toUrl = function toUrl(path) { var cached = this.memoizedURLs.get(path); if (cached) return cached; if (sep === "\\") path = path.replace(/\\/g, "/"); var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent); this.memoizedURLs.set(path, url); return url; }; return MapGenerator2; }(); Comment$4 = /*#__PURE__*/ function(Node$2) { _inherits(Comment2, Node$2); function Comment2(defaults) { var _this = Node$2.call(this, defaults) || this; _this.type = "comment"; return _this; } return Comment2; }(node); comment = Comment$4; Comment$4.default = Comment$4; isClean$1 = symbols.isClean; my$1 = symbols.my; Declaration$3 = declaration; Comment$3 = comment; Node$1 = node; ; ; ; ; Container$7 = /*#__PURE__*/ function(Node$1) { _inherits(Container2, Node$1); function Container2() { return Node$1.apply(this, arguments) || this; } var _proto = Container2.prototype; _proto.append = function append() { for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) children[_key] = arguments[_key]; for (var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;) { var child = _step.value; for (var _iterator1 = _create_for_of_iterator_helper_loose(this.normalize(child, this.last)), _step1; !(_step1 = _iterator1()).done;) { var node2 = _step1.value; this.proxyOf.nodes.push(node2); } } this.markDirty(); return this; }; _proto.cleanRaws = function cleanRaws(keepBetween) { Node$1.prototype.cleanRaws.call(this, keepBetween); if (this.nodes) for (var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;) _step.value.cleanRaws(keepBetween); }; _proto.each = function each(callback) { if (!this.proxyOf.nodes) return void 0; var iterator = this.getIterator(); var index2; var result2; while (this.indexes[iterator] < this.proxyOf.nodes.length) { index2 = this.indexes[iterator]; result2 = callback(this.proxyOf.nodes[index2], index2); if (result2 === false) break; this.indexes[iterator] += 1; } delete this.indexes[iterator]; return result2; }; _proto.every = function every(condition) { return this.nodes.every(condition); }; _proto.getIterator = function getIterator() { if (!this.lastEach) this.lastEach = 0; if (!this.indexes) this.indexes = {}; this.lastEach += 1; var iterator = this.lastEach; this.indexes[iterator] = 0; return iterator; }; _proto.getProxyProcessor = function getProxyProcessor() { return { get: function get(node2, prop) { if (prop === "proxyOf") return node2; else if (!node2[prop]) return node2[prop]; else if (prop === "each" || typeof prop === "string" && prop.startsWith("walk")) return function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; var _node2; return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) { if (typeof i2 === "function") return function(child, index2) { return i2(child.toProxy(), index2); }; else return i2; }))); }; else if (prop === "every" || prop === "some") return function(cb) { return node2[prop](function(child) { for (var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) other[_key - 1] = arguments[_key]; return cb.apply(void 0, [].concat([child.toProxy()], other)); }); }; else if (prop === "root") return function() { return node2.root().toProxy(); }; else if (prop === "nodes") return node2.nodes.map(function(i2) { return i2.toProxy(); }); else if (prop === "first" || prop === "last") return node2[prop].toProxy(); else return node2[prop]; }, set: function set(node2, prop, value) { if (node2[prop] === value) return true; node2[prop] = value; if (prop === "name" || prop === "params" || prop === "selector") node2.markDirty(); return true; } }; }; _proto.index = function index(child) { if (typeof child === "number") return child; if (child.proxyOf) child = child.proxyOf; return this.proxyOf.nodes.indexOf(child); }; _proto.insertAfter = function insertAfter(exist, add) { var existIndex = this.index(exist); var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse(); existIndex = this.index(exist); for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; this.proxyOf.nodes.splice(existIndex + 1, 0, node2); } var index2; for (var id in this.indexes) { index2 = this.indexes[id]; if (existIndex < index2) this.indexes[id] = index2 + nodes.length; } this.markDirty(); return this; }; _proto.insertBefore = function insertBefore(exist, add) { var existIndex = this.index(exist); var type = existIndex === 0 ? "prepend" : false; var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse(); existIndex = this.index(exist); for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; this.proxyOf.nodes.splice(existIndex, 0, node2); } var index2; for (var id in this.indexes) { index2 = this.indexes[id]; if (existIndex <= index2) this.indexes[id] = index2 + nodes.length; } this.markDirty(); return this; }; _proto.normalize = function normalize(nodes, sample) { var _this = this; if (typeof nodes === "string") nodes = cleanSource(parse$4(nodes).nodes); else if (typeof nodes === "undefined") nodes = []; else if (Array.isArray(nodes)) { nodes = nodes.slice(0); for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var i2 = _step.value; if (i2.parent) i2.parent.removeChild(i2, "ignore"); } } else if (nodes.type === "root" && this.type !== "document") { nodes = nodes.nodes.slice(0); for (var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;) { var i21 = _step1.value; if (i21.parent) i21.parent.removeChild(i21, "ignore"); } } else if (nodes.type) nodes = [nodes]; else if (nodes.prop) { if (typeof nodes.value === "undefined") throw new Error("Value field is missed in node creation"); else if (typeof nodes.value !== "string") nodes.value = String(nodes.value); nodes = [new Declaration$3(nodes)]; } else if (nodes.selector) nodes = [new Rule$4(nodes)]; else if (nodes.name) nodes = [new AtRule$4(nodes)]; else if (nodes.text) nodes = [new Comment$3(nodes)]; else throw new Error("Unknown node type in node creation"); return nodes.map(function(i2) { if (!i2[my$1]) Container2.rebuild(i2); i2 = i2.proxyOf; if (i2.parent) i2.parent.removeChild(i2); if (i2[isClean$1]) markDirtyUp(i2); if (typeof i2.raws.before === "undefined") { if (sample && typeof sample.raws.before !== "undefined") i2.raws.before = sample.raws.before.replace(/\S/g, ""); } i2.parent = _this.proxyOf; return i2; }); }; _proto.prepend = function prepend() { for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) children[_key] = arguments[_key]; children = children.reverse(); for (var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;) { var child = _step.value; var nodes = this.normalize(child, this.first, "prepend").reverse(); for (var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;) { var node2 = _step1.value; this.proxyOf.nodes.unshift(node2); } for (var id in this.indexes) this.indexes[id] = this.indexes[id] + nodes.length; } this.markDirty(); return this; }; _proto.push = function push(child) { child.parent = this; this.proxyOf.nodes.push(child); return this; }; _proto.removeAll = function removeAll() { for (var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; node2.parent = void 0; } this.proxyOf.nodes = []; this.markDirty(); return this; }; _proto.removeChild = function removeChild(child) { child = this.index(child); this.proxyOf.nodes[child].parent = void 0; this.proxyOf.nodes.splice(child, 1); var index2; for (var id in this.indexes) { index2 = this.indexes[id]; if (index2 >= child) this.indexes[id] = index2 - 1; } this.markDirty(); return this; }; _proto.replaceValues = function replaceValues(pattern, opts, callback) { if (!callback) { callback = opts; opts = {}; } this.walkDecls(function(decl) { if (opts.props && !opts.props.includes(decl.prop)) return; if (opts.fast && !decl.value.includes(opts.fast)) return; decl.value = decl.value.replace(pattern, callback); }); this.markDirty(); return this; }; _proto.some = function some(condition) { return this.nodes.some(condition); }; _proto.walk = function walk(callback) { return this.each(function(child, i2) { var result2; try { result2 = callback(child, i2); } catch (e2) { throw child.addToError(e2); } if (result2 !== false && child.walk) result2 = child.walk(callback); return result2; }); }; _proto.walkAtRules = function walkAtRules(name, callback) { if (!callback) { callback = name; return this.walk(function(child, i2) { if (child.type === "atrule") return callback(child, i2); }); } if (_instanceof(name, RegExp)) return this.walk(function(child, i2) { if (child.type === "atrule" && name.test(child.name)) return callback(child, i2); }); return this.walk(function(child, i2) { if (child.type === "atrule" && child.name === name) return callback(child, i2); }); }; _proto.walkComments = function walkComments(callback) { return this.walk(function(child, i2) { if (child.type === "comment") return callback(child, i2); }); }; _proto.walkDecls = function walkDecls(prop, callback) { if (!callback) { callback = prop; return this.walk(function(child, i2) { if (child.type === "decl") return callback(child, i2); }); } if (_instanceof(prop, RegExp)) return this.walk(function(child, i2) { if (child.type === "decl" && prop.test(child.prop)) return callback(child, i2); }); return this.walk(function(child, i2) { if (child.type === "decl" && child.prop === prop) return callback(child, i2); }); }; _proto.walkRules = function walkRules(selector, callback) { if (!callback) { callback = selector; return this.walk(function(child, i2) { if (child.type === "rule") return callback(child, i2); }); } if (_instanceof(selector, RegExp)) return this.walk(function(child, i2) { if (child.type === "rule" && selector.test(child.selector)) return callback(child, i2); }); return this.walk(function(child, i2) { if (child.type === "rule" && child.selector === selector) return callback(child, i2); }); }; _create_class(Container2, [{ key: "first", get: function get() { if (!this.proxyOf.nodes) return void 0; return this.proxyOf.nodes[0]; } }, { key: "last", get: function get() { if (!this.proxyOf.nodes) return void 0; return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]; } }]); return Container2; }(Node$1); Container$7.registerParse = function(dependant) { parse$4 = dependant; }; Container$7.registerRule = function(dependant) { Rule$4 = dependant; }; Container$7.registerAtRule = function(dependant) { AtRule$4 = dependant; }; Container$7.registerRoot = function(dependant) { Root$6 = dependant; }; container = Container$7; Container$7.default = Container$7; Container$7.rebuild = function(node2) { if (node2.type === "atrule") Object.setPrototypeOf(node2, AtRule$4.prototype); else if (node2.type === "rule") Object.setPrototypeOf(node2, Rule$4.prototype); else if (node2.type === "decl") Object.setPrototypeOf(node2, Declaration$3.prototype); else if (node2.type === "comment") Object.setPrototypeOf(node2, Comment$3.prototype); else if (node2.type === "root") Object.setPrototypeOf(node2, Root$6.prototype); node2[my$1] = true; if (node2.nodes) node2.nodes.forEach(function(child) { Container$7.rebuild(child); }); }; Container$6 = container; ; ; Document$3 = /*#__PURE__*/ function(Container$6) { _inherits(Document23, Container$6); function Document23(defaults) { var _this = Container$6.call(this, _extends({ type: "document" }, defaults)) || this; if (!_this.nodes) _this.nodes = []; return _this; } var _proto = Document23.prototype; _proto.toResult = function toResult(opts) { if (opts === void 0) opts = {}; return new LazyResult$4(new Processor$3(), this, opts).stringify(); }; return Document23; }(Container$6); Document$3.registerLazyResult = function(dependant) { LazyResult$4 = dependant; }; Document$3.registerProcessor = function(dependant) { Processor$3 = dependant; }; document$1$2 = Document$3; Document$3.default = Document$3; printed = {}; warnOnce$2 = function warnOnce2(message) { if (printed[message]) return; printed[message] = true; if (typeof console !== "undefined" && console.warn) console.warn(message); }; Warning$2 = /*#__PURE__*/ function() { function Warning2(text, opts) { if (opts === void 0) opts = {}; this.type = "warning"; this.text = text; if (opts.node && opts.node.source) { var range = opts.node.rangeBy(opts); this.line = range.start.line; this.column = range.start.column; this.endLine = range.end.line; this.endColumn = range.end.column; } for (var opt in opts) this[opt] = opts[opt]; } var _proto = Warning2.prototype; _proto.toString = function toString() { if (this.node) return this.node.error(this.text, { index: this.index, plugin: this.plugin, word: this.word }).message; if (this.plugin) return this.plugin + ": " + this.text; return this.text; }; return Warning2; }(); warning = Warning$2; Warning$2.default = Warning$2; Warning$1 = warning; Result$3 = /*#__PURE__*/ function() { function Result2(processor2, root2, opts) { this.processor = processor2; this.messages = []; this.root = root2; this.opts = opts; this.css = void 0; this.map = void 0; } var _proto = Result2.prototype; _proto.toString = function toString() { return this.css; }; _proto.warn = function warn(text, opts) { if (opts === void 0) opts = {}; if (!opts.plugin) { if (this.lastPlugin && this.lastPlugin.postcssPlugin) opts.plugin = this.lastPlugin.postcssPlugin; } var warning2 = new Warning$1(text, opts); this.messages.push(warning2); return warning2; }; _proto.warnings = function warnings() { return this.messages.filter(function(i2) { return i2.type === "warning"; }); }; _create_class(Result2, [{ key: "content", get: function get() { return this.css; } }]); return Result2; }(); result = Result$3; Result$3.default = Result$3; SINGLE_QUOTE = "'".charCodeAt(0); DOUBLE_QUOTE = "\"".charCodeAt(0); BACKSLASH = "\\".charCodeAt(0); SLASH = "/".charCodeAt(0); NEWLINE = "\n".charCodeAt(0); SPACE = " ".charCodeAt(0); FEED = "\f".charCodeAt(0); TAB = " ".charCodeAt(0); CR = "\r".charCodeAt(0); OPEN_SQUARE = "[".charCodeAt(0); CLOSE_SQUARE = "]".charCodeAt(0); OPEN_PARENTHESES = "(".charCodeAt(0); CLOSE_PARENTHESES = ")".charCodeAt(0); OPEN_CURLY = "{".charCodeAt(0); CLOSE_CURLY = "}".charCodeAt(0); SEMICOLON = ";".charCodeAt(0); ASTERISK = "*".charCodeAt(0); COLON = ":".charCodeAt(0); AT = "@".charCodeAt(0); RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g; RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g; RE_BAD_BRACKET = /.[\r\n"'(/\\]/; RE_HEX_ESCAPE = /[\da-f]/i; tokenize = function tokenizer2(input2, options) { if (options === void 0) options = {}; var css = input2.css.valueOf(); var ignore = options.ignoreErrors; var code; var next; var quote; var content; var escape; var escaped; var escapePos; var prev; var n2; var currentToken; var length = css.length; var pos = 0; var buffer = []; var returned = []; function position() { return pos; } function unclosed(what) { throw input2.error("Unclosed " + what, pos); } function endOfFile() { return returned.length === 0 && pos >= length; } function nextToken(opts) { if (returned.length) return returned.pop(); if (pos >= length) return; var ignoreUnclosed = opts ? opts.ignoreUnclosed : false; code = css.charCodeAt(pos); switch (code) { case NEWLINE: case SPACE: case TAB: case CR: case FEED: next = pos; do { next += 1; code = css.charCodeAt(next); } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED); currentToken = ["space", css.slice(pos, next)]; pos = next - 1; break; case OPEN_SQUARE: case CLOSE_SQUARE: case OPEN_CURLY: case CLOSE_CURLY: case COLON: case SEMICOLON: case CLOSE_PARENTHESES: var controlChar = String.fromCharCode(code); currentToken = [ controlChar, controlChar, pos ]; break; case OPEN_PARENTHESES: prev = buffer.length ? buffer.pop()[1] : ""; n2 = css.charCodeAt(pos + 1); if (prev === "url" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) { next = pos; do { escaped = false; next = css.indexOf(")", next + 1); if (next === -1) if (ignore || ignoreUnclosed) { next = pos; break; } else unclosed("bracket"); escapePos = next; while (css.charCodeAt(escapePos - 1) === BACKSLASH) { escapePos -= 1; escaped = !escaped; } } while (escaped); currentToken = [ "brackets", css.slice(pos, next + 1), pos, next ]; pos = next; } else { next = css.indexOf(")", pos + 1); content = css.slice(pos, next + 1); if (next === -1 || RE_BAD_BRACKET.test(content)) currentToken = [ "(", "(", pos ]; else { currentToken = [ "brackets", content, pos, next ]; pos = next; } } break; case SINGLE_QUOTE: case DOUBLE_QUOTE: quote = code === SINGLE_QUOTE ? "'" : "\""; next = pos; do { escaped = false; next = css.indexOf(quote, next + 1); if (next === -1) if (ignore || ignoreUnclosed) { next = pos + 1; break; } else unclosed("string"); escapePos = next; while (css.charCodeAt(escapePos - 1) === BACKSLASH) { escapePos -= 1; escaped = !escaped; } } while (escaped); currentToken = [ "string", css.slice(pos, next + 1), pos, next ]; pos = next; break; case AT: RE_AT_END.lastIndex = pos + 1; RE_AT_END.test(css); if (RE_AT_END.lastIndex === 0) next = css.length - 1; else next = RE_AT_END.lastIndex - 2; currentToken = [ "at-word", css.slice(pos, next + 1), pos, next ]; pos = next; break; case BACKSLASH: next = pos; escape = true; while (css.charCodeAt(next + 1) === BACKSLASH) { next += 1; escape = !escape; } code = css.charCodeAt(next + 1); if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) { next += 1; if (RE_HEX_ESCAPE.test(css.charAt(next))) { while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) next += 1; if (css.charCodeAt(next + 1) === SPACE) next += 1; } } currentToken = [ "word", css.slice(pos, next + 1), pos, next ]; pos = next; break; default: if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) { next = css.indexOf("*/", pos + 2) + 1; if (next === 0) if (ignore || ignoreUnclosed) next = css.length; else unclosed("comment"); currentToken = [ "comment", css.slice(pos, next + 1), pos, next ]; pos = next; } else { RE_WORD_END.lastIndex = pos + 1; RE_WORD_END.test(css); if (RE_WORD_END.lastIndex === 0) next = css.length - 1; else next = RE_WORD_END.lastIndex - 2; currentToken = [ "word", css.slice(pos, next + 1), pos, next ]; buffer.push(currentToken); pos = next; } break; } pos++; return currentToken; } function back(token) { returned.push(token); } return { back, endOfFile, nextToken, position }; }; Container$5 = container; AtRule$3 = /*#__PURE__*/ function(Container$5) { _inherits(AtRule2, Container$5); function AtRule2(defaults) { var _this = Container$5.call(this, defaults) || this; _this.type = "atrule"; return _this; } var _proto = AtRule2.prototype; _proto.append = function append() { for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) children[_key] = arguments[_key]; var _Container$5_prototype_append; if (!this.proxyOf.nodes) this.nodes = []; return (_Container$5_prototype_append = Container$5.prototype.append).call.apply(_Container$5_prototype_append, [].concat([this], children)); }; _proto.prepend = function prepend() { for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) children[_key] = arguments[_key]; var _Container$5_prototype_prepend; if (!this.proxyOf.nodes) this.nodes = []; return (_Container$5_prototype_prepend = Container$5.prototype.prepend).call.apply(_Container$5_prototype_prepend, [].concat([this], children)); }; return AtRule2; }(Container$5); atRule = AtRule$3; AtRule$3.default = AtRule$3; Container$5.registerAtRule(AtRule$3); Container$4 = container; ; ; Root$5 = /*#__PURE__*/ function(Container$4) { _inherits(Root2, Container$4); function Root2(defaults) { var _this = Container$4.call(this, defaults) || this; _this.type = "root"; if (!_this.nodes) _this.nodes = []; return _this; } var _proto = Root2.prototype; _proto.normalize = function normalize(child, sample, type) { var nodes = Container$4.prototype.normalize.call(this, child); if (sample) { if (type === "prepend") if (this.nodes.length > 1) sample.raws.before = this.nodes[1].raws.before; else delete sample.raws.before; else if (this.first !== sample) for (var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;) { var node2 = _step.value; node2.raws.before = sample.raws.before; } } return nodes; }; _proto.removeChild = function removeChild(child, ignore) { var index2 = this.index(child); if (!ignore && index2 === 0 && this.nodes.length > 1) this.nodes[1].raws.before = this.nodes[index2].raws.before; return Container$4.prototype.removeChild.call(this, child); }; _proto.toResult = function toResult(opts) { if (opts === void 0) opts = {}; return new LazyResult$3(new Processor$2(), this, opts).stringify(); }; return Root2; }(Container$4); Root$5.registerLazyResult = function(dependant) { LazyResult$3 = dependant; }; Root$5.registerProcessor = function(dependant) { Processor$2 = dependant; }; root = Root$5; Root$5.default = Root$5; Container$4.registerRoot(Root$5); list$2 = { comma: function comma(string) { return list$2.split(string, [","], true); }, space: function space(string) { return list$2.split(string, [ " ", "\n", " " ]); }, split: function split(string, separators, last) { var array = []; var current = ""; var split = false; var func = 0; var inQuote = false; var prevQuote = ""; var escape = false; for (var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;) { var letter = _step.value; if (escape) escape = false; else if (letter === "\\") escape = true; else if (inQuote) { if (letter === prevQuote) inQuote = false; } else if (letter === "\"" || letter === "'") { inQuote = true; prevQuote = letter; } else if (letter === "(") func += 1; else if (letter === ")") { if (func > 0) func -= 1; } else if (func === 0) { if (separators.includes(letter)) split = true; } if (split) { if (current !== "") array.push(current.trim()); current = ""; split = false; } else current += letter; } if (last || current !== "") array.push(current.trim()); return array; } }; list_1 = list$2; list$2.default = list$2; Container$3 = container; list$1 = list_1; Rule$3 = /*#__PURE__*/ function(Container$3) { _inherits(Rule2, Container$3); function Rule2(defaults) { var _this = Container$3.call(this, defaults) || this; _this.type = "rule"; if (!_this.nodes) _this.nodes = []; return _this; } _create_class(Rule2, [{ key: "selectors", get: function get() { return list$1.comma(this.selector); }, set: function set(values) { var match = this.selector ? this.selector.match(/,\s*/) : null; var sep2 = match ? match[0] : "," + this.raw("between", "beforeOpen"); this.selector = values.join(sep2); } }]); return Rule2; }(Container$3); rule = Rule$3; Rule$3.default = Rule$3; Container$3.registerRule(Rule$3); Declaration$2 = declaration; tokenizer22 = tokenize; Comment$2 = comment; AtRule$2 = atRule; Root$4 = root; Rule$2 = rule; SAFE_COMMENT_NEIGHBOR = { empty: true, space: true }; parser = /* @__PURE__ */ function() { function Parser2(input2) { this.input = input2; this.root = new Root$4(); this.current = this.root; this.spaces = ""; this.semicolon = false; this.createTokenizer(); this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } }; } var _proto = Parser2.prototype; _proto.atrule = function atrule(token) { var node2 = new AtRule$2(); node2.name = token[1].slice(1); if (node2.name === "") this.unnamedAtrule(node2, token); this.init(node2, token[2]); var type; var prev; var shift; var last = false; var open = false; var params = []; var brackets = []; while (!this.tokenizer.endOfFile()) { token = this.tokenizer.nextToken(); type = token[0]; if (type === "(" || type === "[") brackets.push(type === "(" ? ")" : "]"); else if (type === "{" && brackets.length > 0) brackets.push("}"); else if (type === brackets[brackets.length - 1]) brackets.pop(); if (brackets.length === 0) if (type === ";") { node2.source.end = this.getPosition(token[2]); node2.source.end.offset++; this.semicolon = true; break; } else if (type === "{") { open = true; break; } else if (type === "}") { if (params.length > 0) { shift = params.length - 1; prev = params[shift]; while (prev && prev[0] === "space") prev = params[--shift]; if (prev) { node2.source.end = this.getPosition(prev[3] || prev[2]); node2.source.end.offset++; } } this.end(token); break; } else params.push(token); else params.push(token); if (this.tokenizer.endOfFile()) { last = true; break; } } node2.raws.between = this.spacesAndCommentsFromEnd(params); if (params.length) { node2.raws.afterName = this.spacesAndCommentsFromStart(params); this.raw(node2, "params", params); if (last) { token = params[params.length - 1]; node2.source.end = this.getPosition(token[3] || token[2]); node2.source.end.offset++; this.spaces = node2.raws.between; node2.raws.between = ""; } } else { node2.raws.afterName = ""; node2.params = ""; } if (open) { node2.nodes = []; this.current = node2; } }; _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) { var colon = this.colon(tokens); if (colon === false) return; var founded = 0; var token; for (var j = colon - 1; j >= 0; j--) { token = tokens[j]; if (token[0] !== "space") { founded += 1; if (founded === 2) break; } } throw this.input.error("Missed semicolon", token[0] === "word" ? token[3] + 1 : token[2]); }; _proto.colon = function colon(tokens) { var brackets = 0; var token; var type; var prev; for (var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;) { var _step_value = _step.value; var i2 = _step_value[0]; token = _step_value[1]; type = token[0]; if (type === "(") brackets += 1; if (type === ")") brackets -= 1; if (brackets === 0 && type === ":") if (!prev) this.doubleColon(token); else if (prev[0] === "word" && prev[1] === "progid") continue; else return i2; prev = token; } return false; }; _proto.comment = function comment(token) { var node2 = new Comment$2(); this.init(node2, token[2]); node2.source.end = this.getPosition(token[3] || token[2]); node2.source.end.offset++; var text = token[1].slice(2, -2); if (/^\s*$/.test(text)) { node2.text = ""; node2.raws.left = text; node2.raws.right = ""; } else { var match = text.match(/^(\s*)([^]*\S)(\s*)$/); node2.text = match[2]; node2.raws.left = match[1]; node2.raws.right = match[3]; } }; _proto.createTokenizer = function createTokenizer() { this.tokenizer = tokenizer22(this.input); }; _proto.decl = function decl(tokens, customProperty) { var node2 = new Declaration$2(); this.init(node2, tokens[0][2]); var last = tokens[tokens.length - 1]; if (last[0] === ";") { this.semicolon = true; tokens.pop(); } node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition(tokens)); node2.source.end.offset++; while (tokens[0][0] !== "word") { if (tokens.length === 1) this.unknownWord(tokens); node2.raws.before += tokens.shift()[1]; } node2.source.start = this.getPosition(tokens[0][2]); node2.prop = ""; while (tokens.length) { var type = tokens[0][0]; if (type === ":" || type === "space" || type === "comment") break; node2.prop += tokens.shift()[1]; } node2.raws.between = ""; var token; while (tokens.length) { token = tokens.shift(); if (token[0] === ":") { node2.raws.between += token[1]; break; } else { if (token[0] === "word" && /\w/.test(token[1])) this.unknownWord([token]); node2.raws.between += token[1]; } } if (node2.prop[0] === "_" || node2.prop[0] === "*") { node2.raws.before += node2.prop[0]; node2.prop = node2.prop.slice(1); } var firstSpaces = []; var next; while (tokens.length) { next = tokens[0][0]; if (next !== "space" && next !== "comment") break; firstSpaces.push(tokens.shift()); } this.precheckMissedSemicolon(tokens); for (var i2 = tokens.length - 1; i2 >= 0; i2--) { token = tokens[i2]; if (token[1].toLowerCase() === "!important") { node2.important = true; var string = this.stringFrom(tokens, i2); string = this.spacesFromEnd(tokens) + string; if (string !== " !important") node2.raws.important = string; break; } else if (token[1].toLowerCase() === "important") { var cache = tokens.slice(0); var str = ""; for (var j = i2; j > 0; j--) { var type1 = cache[j][0]; if (str.trim().indexOf("!") === 0 && type1 !== "space") break; str = cache.pop()[1] + str; } if (str.trim().indexOf("!") === 0) { node2.important = true; node2.raws.important = str; tokens = cache; } } if (token[0] !== "space" && token[0] !== "comment") break; } if (tokens.some(function(i2) { return i2[0] !== "space" && i2[0] !== "comment"; })) { node2.raws.between += firstSpaces.map(function(i2) { return i2[1]; }).join(""); firstSpaces = []; } this.raw(node2, "value", firstSpaces.concat(tokens), customProperty); if (node2.value.includes(":") && !customProperty) this.checkMissedSemicolon(tokens); }; _proto.doubleColon = function doubleColon(token) { throw this.input.error("Double colon", { offset: token[2] }, { offset: token[2] + token[1].length }); }; _proto.emptyRule = function emptyRule(token) { var node2 = new Rule$2(); this.init(node2, token[2]); node2.selector = ""; node2.raws.between = ""; this.current = node2; }; _proto.end = function end(token) { if (this.current.nodes && this.current.nodes.length) this.current.raws.semicolon = this.semicolon; this.semicolon = false; this.current.raws.after = (this.current.raws.after || "") + this.spaces; this.spaces = ""; if (this.current.parent) { this.current.source.end = this.getPosition(token[2]); this.current.source.end.offset++; this.current = this.current.parent; } else this.unexpectedClose(token); }; _proto.endFile = function endFile() { if (this.current.parent) this.unclosedBlock(); if (this.current.nodes && this.current.nodes.length) this.current.raws.semicolon = this.semicolon; this.current.raws.after = (this.current.raws.after || "") + this.spaces; this.root.source.end = this.getPosition(this.tokenizer.position()); }; _proto.freeSemicolon = function freeSemicolon(token) { this.spaces += token[1]; if (this.current.nodes) { var prev = this.current.nodes[this.current.nodes.length - 1]; if (prev && prev.type === "rule" && !prev.raws.ownSemicolon) { prev.raws.ownSemicolon = this.spaces; this.spaces = ""; } } }; _proto.getPosition = function getPosition(offset) { var pos = this.input.fromOffset(offset); return { column: pos.col, line: pos.line, offset }; }; _proto.init = function init(node2, offset) { this.current.push(node2); node2.source = { input: this.input, start: this.getPosition(offset) }; node2.raws.before = this.spaces; this.spaces = ""; if (node2.type !== "comment") this.semicolon = false; }; _proto.other = function other(start) { var end = false; var type = null; var colon = false; var bracket = null; var brackets = []; var customProperty = start[1].startsWith("--"); var tokens = []; var token = start; while (token) { type = token[0]; tokens.push(token); if (type === "(" || type === "[") { if (!bracket) bracket = token; brackets.push(type === "(" ? ")" : "]"); } else if (customProperty && colon && type === "{") { if (!bracket) bracket = token; brackets.push("}"); } else if (brackets.length === 0) { if (type === ";") if (colon) { this.decl(tokens, customProperty); return; } else break; else if (type === "{") { this.rule(tokens); return; } else if (type === "}") { this.tokenizer.back(tokens.pop()); end = true; break; } else if (type === ":") colon = true; } else if (type === brackets[brackets.length - 1]) { brackets.pop(); if (brackets.length === 0) bracket = null; } token = this.tokenizer.nextToken(); } if (this.tokenizer.endOfFile()) end = true; if (brackets.length > 0) this.unclosedBracket(bracket); if (end && colon) { if (!customProperty) while (tokens.length) { token = tokens[tokens.length - 1][0]; if (token !== "space" && token !== "comment") break; this.tokenizer.back(tokens.pop()); } this.decl(tokens, customProperty); } else this.unknownWord(tokens); }; _proto.parse = function parse() { var token; while (!this.tokenizer.endOfFile()) { token = this.tokenizer.nextToken(); switch (token[0]) { case "space": this.spaces += token[1]; break; case ";": this.freeSemicolon(token); break; case "}": this.end(token); break; case "comment": this.comment(token); break; case "at-word": this.atrule(token); break; case "{": this.emptyRule(token); break; default: this.other(token); break; } } this.endFile(); }; _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {}; _proto.raw = function raw(node2, prop, tokens, customProperty) { var token; var type; var length = tokens.length; var value = ""; var clean = true; var next; var prev; for (var i2 = 0; i2 < length; i2 += 1) { token = tokens[i2]; type = token[0]; if (type === "space" && i2 === length - 1 && !customProperty) clean = false; else if (type === "comment") { prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : "empty"; next = tokens[i2 + 1] ? tokens[i2 + 1][0] : "empty"; if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) if (value.slice(-1) === ",") clean = false; else value += token[1]; else clean = false; } else value += token[1]; } if (!clean) { var raw = tokens.reduce(function(all, i2) { return all + i2[1]; }, ""); node2.raws[prop] = { raw, value }; } node2[prop] = value; }; _proto.rule = function rule(tokens) { tokens.pop(); var node2 = new Rule$2(); this.init(node2, tokens[0][2]); node2.raws.between = this.spacesAndCommentsFromEnd(tokens); this.raw(node2, "selector", tokens); this.current = node2; }; _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) { var lastTokenType; var spaces = ""; while (tokens.length) { lastTokenType = tokens[tokens.length - 1][0]; if (lastTokenType !== "space" && lastTokenType !== "comment") break; spaces = tokens.pop()[1] + spaces; } return spaces; }; _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) { var next; var spaces = ""; while (tokens.length) { next = tokens[0][0]; if (next !== "space" && next !== "comment") break; spaces += tokens.shift()[1]; } return spaces; }; _proto.spacesFromEnd = function spacesFromEnd(tokens) { var lastTokenType; var spaces = ""; while (tokens.length) { lastTokenType = tokens[tokens.length - 1][0]; if (lastTokenType !== "space") break; spaces = tokens.pop()[1] + spaces; } return spaces; }; _proto.stringFrom = function stringFrom(tokens, from) { var result2 = ""; for (var i2 = from; i2 < tokens.length; i2++) result2 += tokens[i2][1]; tokens.splice(from, tokens.length - from); return result2; }; _proto.unclosedBlock = function unclosedBlock() { var pos = this.current.source.start; throw this.input.error("Unclosed block", pos.line, pos.column); }; _proto.unclosedBracket = function unclosedBracket(bracket) { throw this.input.error("Unclosed bracket", { offset: bracket[2] }, { offset: bracket[2] + 1 }); }; _proto.unexpectedClose = function unexpectedClose(token) { throw this.input.error("Unexpected }", { offset: token[2] }, { offset: token[2] + 1 }); }; _proto.unknownWord = function unknownWord(tokens) { throw this.input.error("Unknown word", { offset: tokens[0][2] }, { offset: tokens[0][2] + tokens[0][1].length }); }; _proto.unnamedAtrule = function unnamedAtrule(node2, token) { throw this.input.error("At-rule without name", { offset: token[2] }, { offset: token[2] + token[1].length }); }; return Parser2; }(); Container$2 = container; Parser22 = parser; Input$2 = input; parse_1 = parse$3; parse$3.default = parse$3; Container$2.registerParse(parse$3); isClean = symbols.isClean; my = symbols.my; MapGenerator$1 = mapGenerator; stringify$2 = stringify_1; Container$1 = container; Document$2 = document$1$2; warnOnce$1 = warnOnce$2; Result$2 = result; parse$2 = parse_1; Root$3 = root; TYPE_TO_CLASS_NAME = { atrule: "AtRule", comment: "Comment", decl: "Declaration", document: "Document", root: "Root", rule: "Rule" }; PLUGIN_PROPS = { AtRule: true, AtRuleExit: true, Comment: true, CommentExit: true, Declaration: true, DeclarationExit: true, Document: true, DocumentExit: true, Once: true, OnceExit: true, postcssPlugin: true, prepare: true, Root: true, RootExit: true, Rule: true, RuleExit: true }; NOT_VISITORS = { Once: true, postcssPlugin: true, prepare: true }; CHILDREN = 0; postcss$2 = {}; LazyResult$2 = /*#__PURE__*/ function() { function LazyResult2(processor2, css, opts) { var _this = this; this.stringified = false; this.processed = false; var root2; if ((typeof css === "undefined" ? "undefined" : _type_of(css)) === "object" && css !== null && (css.type === "root" || css.type === "document")) root2 = cleanMarks(css); else if (_instanceof(css, LazyResult2) || _instanceof(css, Result$2)) { root2 = cleanMarks(css.root); if (css.map) { if (typeof opts.map === "undefined") opts.map = {}; if (!opts.map.inline) opts.map.inline = false; opts.map.prev = css.map; } } else { var parser2 = parse$2; if (opts.syntax) parser2 = opts.syntax.parse; if (opts.parser) parser2 = opts.parser; if (parser2.parse) parser2 = parser2.parse; try { root2 = parser2(css, opts); } catch (error) { this.processed = true; this.error = error; } if (root2 && !root2[my]) Container$1.rebuild(root2); } this.result = new Result$2(processor2, root2, opts); this.helpers = _extends({}, postcss$2, { postcss: postcss$2, result: this.result }); this.plugins = this.processor.plugins.map(function(plugin22) { if ((typeof plugin22 === "undefined" ? "undefined" : _type_of(plugin22)) === "object" && plugin22.prepare) return _extends({}, plugin22, plugin22.prepare(_this.result)); else return plugin22; }); } var _proto = LazyResult2.prototype; _proto.async = function async() { if (this.error) return Promise.reject(this.error); if (this.processed) return Promise.resolve(this.result); if (!this.processing) this.processing = this.runAsync(); return this.processing; }; _proto.catch = function _catch(onRejected) { return this.async().catch(onRejected); }; _proto.finally = function _finally(onFinally) { return this.async().then(onFinally, onFinally); }; _proto.getAsyncError = function getAsyncError() { throw new Error("Use process(css).then(cb) to work with async plugins"); }; _proto.handleError = function handleError(error, node2) { var plugin22 = this.result.lastPlugin; try { if (node2) node2.addToError(error); this.error = error; if (error.name === "CssSyntaxError" && !error.plugin) { error.plugin = plugin22.postcssPlugin; error.setMessage(); } else if (plugin22.postcssVersion) { var pluginName = plugin22.postcssPlugin; var pluginVer = plugin22.postcssVersion; var runtimeVer = this.result.processor.version; var a2 = pluginVer.split("."); var b = runtimeVer.split("."); if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) console.error("Unknown error from PostCSS plugin. Your current PostCSS version is " + runtimeVer + ", but " + pluginName + " uses " + pluginVer + ". Perhaps this is the source of the error below."); } } catch (err) { if (console && console.error) console.error(err); } return error; }; _proto.prepareVisitors = function prepareVisitors() { var _this = this; this.listeners = {}; var add = function(plugin22, type, cb) { if (!_this.listeners[type]) _this.listeners[type] = []; _this.listeners[type].push([plugin22, cb]); }; for (var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;) { var plugin22 = _step.value; if ((typeof plugin22 === "undefined" ? "undefined" : _type_of(plugin22)) === "object") for (var event in plugin22) { if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) throw new Error("Unknown event " + event + " in " + plugin22.postcssPlugin + ". Try to update PostCSS (" + this.processor.version + " now)."); if (!NOT_VISITORS[event]) { if (_type_of(plugin22[event]) === "object") for (var filter in plugin22[event]) if (filter === "*") add(plugin22, event, plugin22[event][filter]); else add(plugin22, event + "-" + filter.toLowerCase(), plugin22[event][filter]); else if (typeof plugin22[event] === "function") add(plugin22, event, plugin22[event]); } } } this.hasListener = Object.keys(this.listeners).length > 0; }; _proto.runAsync = function runAsync() { var _this = this; return _async_to_generator(function() { var i2; var plugin22; var promise; var error; var root2; var stack; var promise1; var e2; var node2; var _loop; var _iterator; var _step; return _ts_generator(this, function(_state) { switch (_state.label) { case 0: _this.plugin = 0; i2 = 0; _state.label = 1; case 1: if (!(i2 < _this.plugins.length)) return [3, 6]; plugin22 = _this.plugins[i2]; promise = _this.runOnRoot(plugin22); if (!isPromise(promise)) return [3, 5]; _state.label = 2; case 2: _state.trys.push([ 2, 4, , 5 ]); return [4, promise]; case 3: _state.sent(); return [3, 5]; case 4: error = _state.sent(); throw _this.handleError(error); case 5: i2++; return [3, 1]; case 6: _this.prepareVisitors(); if (!_this.hasListener) return [3, 18]; root2 = _this.result.root; _state.label = 7; case 7: if (!!root2[isClean]) return [3, 14]; root2[isClean] = true; stack = [toStack(root2)]; _state.label = 8; case 8: if (!(stack.length > 0)) return [3, 13]; promise1 = _this.visitTick(stack); if (!isPromise(promise1)) return [3, 12]; _state.label = 9; case 9: _state.trys.push([ 9, 11, , 12 ]); return [4, promise1]; case 10: _state.sent(); return [3, 12]; case 11: e2 = _state.sent(); node2 = stack[stack.length - 1].node; throw _this.handleError(e2, node2); case 12: return [3, 8]; case 13: return [3, 7]; case 14: if (!_this.listeners.OnceExit) return [3, 18]; _loop = function() { var _step_value; var plugin22; var visitor; var roots; var e2; return _ts_generator(this, function(_state) { switch (_state.label) { case 0: _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1]; _this.result.lastPlugin = plugin22; _state.label = 1; case 1: _state.trys.push([ 1, 6, , 7 ]); if (!(root2.type === "document")) return [3, 3]; roots = root2.nodes.map(function(subRoot) { return visitor(subRoot, _this.helpers); }); return [4, Promise.all(roots)]; case 2: _state.sent(); return [3, 5]; case 3: return [4, visitor(root2, _this.helpers)]; case 4: _state.sent(); _state.label = 5; case 5: return [3, 7]; case 6: e2 = _state.sent(); throw _this.handleError(e2); case 7: return [2]; } }); }; _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit); _state.label = 15; case 15: if (!!(_step = _iterator()).done) return [3, 18]; return [5, _ts_values(_loop())]; case 16: _state.sent(); _state.label = 17; case 17: return [3, 15]; case 18: _this.processed = true; return [2, _this.stringify()]; } }); })(); }; _proto.runOnRoot = function runOnRoot(plugin22) { var _this = this; this.result.lastPlugin = plugin22; try { if ((typeof plugin22 === "undefined" ? "undefined" : _type_of(plugin22)) === "object" && plugin22.Once) { if (this.result.root.type === "document") { var roots = this.result.root.nodes.map(function(root2) { return plugin22.Once(root2, _this.helpers); }); if (isPromise(roots[0])) return Promise.all(roots); return roots; } return plugin22.Once(this.result.root, this.helpers); } else if (typeof plugin22 === "function") return plugin22(this.result.root, this.result); } catch (error) { throw this.handleError(error); } }; _proto.stringify = function stringify() { if (this.error) throw this.error; if (this.stringified) return this.result; this.stringified = true; this.sync(); var opts = this.result.opts; var str = stringify$2; if (opts.syntax) str = opts.syntax.stringify; if (opts.stringifier) str = opts.stringifier; if (str.stringify) str = str.stringify; var data = new MapGenerator$1(str, this.result.root, this.result.opts).generate(); this.result.css = data[0]; this.result.map = data[1]; return this.result; }; _proto.sync = function sync() { if (this.error) throw this.error; if (this.processed) return this.result; this.processed = true; if (this.processing) throw this.getAsyncError(); for (var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;) { var plugin22 = _step.value; if (isPromise(this.runOnRoot(plugin22))) throw this.getAsyncError(); } this.prepareVisitors(); if (this.hasListener) { var root2 = this.result.root; while (!root2[isClean]) { root2[isClean] = true; this.walkSync(root2); } if (this.listeners.OnceExit) if (root2.type === "document") for (var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;) { var subRoot = _step1.value; this.visitSync(this.listeners.OnceExit, subRoot); } else this.visitSync(this.listeners.OnceExit, root2); } return this.result; }; _proto.then = function then(onFulfilled, onRejected) { if (!("from" in this.opts)) warnOnce$1("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."); return this.async().then(onFulfilled, onRejected); }; _proto.toString = function toString() { return this.css; }; _proto.visitSync = function visitSync(visitors, node2) { for (var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;) { var _step_value = _step.value; var plugin22 = _step_value[0]; var visitor = _step_value[1]; this.result.lastPlugin = plugin22; var promise = void 0; try { promise = visitor(node2, this.helpers); } catch (e2) { throw this.handleError(e2, node2.proxyOf); } if (node2.type !== "root" && node2.type !== "document" && !node2.parent) return true; if (isPromise(promise)) throw this.getAsyncError(); } }; _proto.visitTick = function visitTick(stack) { var visit2 = stack[stack.length - 1]; var node2 = visit2.node; var visitors = visit2.visitors; if (node2.type !== "root" && node2.type !== "document" && !node2.parent) { stack.pop(); return; } if (visitors.length > 0 && visit2.visitorIndex < visitors.length) { var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex]; var plugin22 = _visitors_visit2_visitorIndex[0]; var visitor = _visitors_visit2_visitorIndex[1]; visit2.visitorIndex += 1; if (visit2.visitorIndex === visitors.length) { visit2.visitors = []; visit2.visitorIndex = 0; } this.result.lastPlugin = plugin22; try { return visitor(node2.toProxy(), this.helpers); } catch (e2) { throw this.handleError(e2, node2); } } if (visit2.iterator !== 0) { var iterator = visit2.iterator; var child; while (child = node2.nodes[node2.indexes[iterator]]) { node2.indexes[iterator] += 1; if (!child[isClean]) { child[isClean] = true; stack.push(toStack(child)); return; } } visit2.iterator = 0; delete node2.indexes[iterator]; } var events = visit2.events; while (visit2.eventIndex < events.length) { var event = events[visit2.eventIndex]; visit2.eventIndex += 1; if (event === CHILDREN) { if (node2.nodes && node2.nodes.length) { node2[isClean] = true; visit2.iterator = node2.getIterator(); } return; } else if (this.listeners[event]) { visit2.visitors = this.listeners[event]; return; } } stack.pop(); }; _proto.walkSync = function walkSync(node2) { var _this = this; node2[isClean] = true; for (var _iterator = _create_for_of_iterator_helper_loose(getEvents(node2)), _step; !(_step = _iterator()).done;) { var event = _step.value; if (event === CHILDREN) { if (node2.nodes) node2.each(function(child) { if (!child[isClean]) _this.walkSync(child); }); } else { var visitors = this.listeners[event]; if (visitors) { if (this.visitSync(visitors, node2.toProxy())) return; } } } }; _proto.warnings = function warnings() { return this.sync().warnings(); }; _create_class(LazyResult2, [ { key: "content", get: function get() { return this.stringify().content; } }, { key: "css", get: function get() { return this.stringify().css; } }, { key: "map", get: function get() { return this.stringify().map; } }, { key: "messages", get: function get() { return this.sync().messages; } }, { key: "opts", get: function get() { return this.result.opts; } }, { key: "processor", get: function get() { return this.result.processor; } }, { key: "root", get: function get() { return this.sync().root; } }, { key: Symbol.toStringTag, get: function get() { return "LazyResult"; } } ]); return LazyResult2; }(); LazyResult$2.registerPostcss = function(dependant) { postcss$2 = dependant; }; lazyResult = LazyResult$2; LazyResult$2.default = LazyResult$2; Root$3.registerLazyResult(LazyResult$2); Document$2.registerLazyResult(LazyResult$2); MapGenerator22 = mapGenerator; stringify$1 = stringify_1; warnOnce22 = warnOnce$2; parse$1 = parse_1; Result$1 = result; NoWorkResult$1 = /*#__PURE__*/ function() { function NoWorkResult2(processor2, css, opts) { css = css.toString(); this.stringified = false; this._processor = processor2; this._css = css; this._opts = opts; this._map = void 0; var root2; var str = stringify$1; this.result = new Result$1(this._processor, root2, this._opts); this.result.css = css; var self = this; Object.defineProperty(this.result, "root", { get: function get() { return self.root; } }); var map = new MapGenerator22(str, root2, this._opts, css); if (map.isMap()) { var _map_generate = map.generate(); var generatedCSS = _map_generate[0]; var generatedMap = _map_generate[1]; if (generatedCSS) this.result.css = generatedCSS; if (generatedMap) this.result.map = generatedMap; } else { map.clearAnnotation(); this.result.css = map.css; } } var _proto = NoWorkResult2.prototype; _proto.async = function async() { if (this.error) return Promise.reject(this.error); return Promise.resolve(this.result); }; _proto.catch = function _catch(onRejected) { return this.async().catch(onRejected); }; _proto.finally = function _finally(onFinally) { return this.async().then(onFinally, onFinally); }; _proto.sync = function sync() { if (this.error) throw this.error; return this.result; }; _proto.then = function then(onFulfilled, onRejected) { if (!("from" in this._opts)) warnOnce22("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning."); return this.async().then(onFulfilled, onRejected); }; _proto.toString = function toString() { return this._css; }; _proto.warnings = function warnings() { return []; }; _create_class(NoWorkResult2, [ { key: "content", get: function get() { return this.result.css; } }, { key: "css", get: function get() { return this.result.css; } }, { key: "map", get: function get() { return this.result.map; } }, { key: "messages", get: function get() { return []; } }, { key: "opts", get: function get() { return this.result.opts; } }, { key: "processor", get: function get() { return this.result.processor; } }, { key: "root", get: function get() { if (this._root) return this._root; var root2; var parser2 = parse$1; try { root2 = parser2(this._css, this._opts); } catch (error) { this.error = error; } if (this.error) throw this.error; else { this._root = root2; return root2; } } }, { key: Symbol.toStringTag, get: function get() { return "NoWorkResult"; } } ]); return NoWorkResult2; }(); noWorkResult = NoWorkResult$1; NoWorkResult$1.default = NoWorkResult$1; NoWorkResult22 = noWorkResult; LazyResult$1 = lazyResult; Document$1 = document$1$2; Root$2 = root; Processor$1 = /*#__PURE__*/ function() { function Processor2(plugins) { if (plugins === void 0) plugins = []; this.version = "8.4.38"; this.plugins = this.normalize(plugins); } var _proto = Processor2.prototype; _proto.normalize = function normalize(plugins) { var normalized = []; for (var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;) { var i2 = _step.value; if (i2.postcss === true) i2 = i2(); else if (i2.postcss) i2 = i2.postcss; if ((typeof i2 === "undefined" ? "undefined" : _type_of(i2)) === "object" && Array.isArray(i2.plugins)) normalized = normalized.concat(i2.plugins); else if ((typeof i2 === "undefined" ? "undefined" : _type_of(i2)) === "object" && i2.postcssPlugin) normalized.push(i2); else if (typeof i2 === "function") normalized.push(i2); else if ((typeof i2 === "undefined" ? "undefined" : _type_of(i2)) === "object" && (i2.parse || i2.stringify)) throw new Error("PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation."); else throw new Error(i2 + " is not a PostCSS plugin"); } return normalized; }; _proto.process = function process1(css, opts) { if (opts === void 0) opts = {}; if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) return new NoWorkResult22(this, css, opts); else return new LazyResult$1(this, css, opts); }; _proto.use = function use(plugin22) { this.plugins = this.plugins.concat(this.normalize([plugin22])); return this; }; return Processor2; }(); processor = Processor$1; Processor$1.default = Processor$1; Root$2.registerProcessor(Processor$1); Document$1.registerProcessor(Processor$1); Declaration$1 = declaration; PreviousMap22 = previousMap; Comment$1 = comment; AtRule$1 = atRule; Input$1 = input; Root$1 = root; Rule$1 = rule; fromJSON_1 = fromJSON$1; fromJSON$1.default = fromJSON$1; CssSyntaxError22 = cssSyntaxError; Declaration22 = declaration; LazyResult22 = lazyResult; Container22 = container; Processor22 = processor; stringify = stringify_1; fromJSON = fromJSON_1; Document222 = document$1$2; Warning22 = warning; Comment22 = comment; AtRule22 = atRule; Result22 = result; Input22 = input; parse = parse_1; list = list_1; Rule22 = rule; Root22 = root; Node22 = node; postcss.plugin = function plugin2(name, initializer) { var warningPrinted = false; function creator() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key]; if (console && console.warn && !warningPrinted) { warningPrinted = true; console.warn(name + ": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"); if ({}.LANG && {}.LANG.startsWith("cn")) console.warn(name + ": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226"); } var transformer = initializer.apply(void 0, [].concat(args)); transformer.postcssPlugin = name; transformer.postcssVersion = new Processor22().version; return transformer; } var cache; Object.defineProperty(creator, "postcss", { get: function get() { if (!cache) cache = creator(); return cache; } }); creator.process = function(css, processOpts, pluginOpts) { return postcss([creator(pluginOpts)]).process(css, processOpts); }; return creator; }; postcss.stringify = stringify; postcss.parse = parse; postcss.fromJSON = fromJSON; postcss.list = list; postcss.comment = function(defaults) { return new Comment22(defaults); }; postcss.atRule = function(defaults) { return new AtRule22(defaults); }; postcss.decl = function(defaults) { return new Declaration22(defaults); }; postcss.rule = function(defaults) { return new Rule22(defaults); }; postcss.root = function(defaults) { return new Root22(defaults); }; postcss.document = function(defaults) { return new Document222(defaults); }; postcss.CssSyntaxError = CssSyntaxError22; postcss.Declaration = Declaration22; postcss.Container = Container22; postcss.Processor = Processor22; postcss.Document = Document222; postcss.Comment = Comment22; postcss.Warning = Warning22; postcss.AtRule = AtRule22; postcss.Result = Result22; postcss.Input = Input22; postcss.Rule = Rule22; postcss.Root = Root22; postcss.Node = Node22; LazyResult22.registerPostcss(postcss); postcss_1 = postcss; postcss.default = postcss; postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1); postcss$1.stringify; postcss$1.fromJSON; postcss$1.plugin; postcss$1.parse; postcss$1.list; postcss$1.document; postcss$1.comment; postcss$1.atRule; postcss$1.rule; postcss$1.decl; postcss$1.root; postcss$1.CssSyntaxError; postcss$1.Declaration; postcss$1.Container; postcss$1.Processor; postcss$1.Document; postcss$1.Comment; postcss$1.Warning; postcss$1.AtRule; postcss$1.Result; postcss$1.Input; postcss$1.Rule; postcss$1.Root; postcss$1.Node; BaseRRNode = /*#__PURE__*/ function() { function BaseRRNode() { for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) _args[_key] = arguments[_key]; __publicField2(this, "parentElement", null); __publicField2(this, "parentNode", null); __publicField2(this, "ownerDocument"); __publicField2(this, "firstChild", null); __publicField2(this, "lastChild", null); __publicField2(this, "previousSibling", null); __publicField2(this, "nextSibling", null); __publicField2(this, "ELEMENT_NODE", 1); __publicField2(this, "TEXT_NODE", 3); __publicField2(this, "nodeType"); __publicField2(this, "nodeName"); __publicField2(this, "RRNodeType"); } var _proto = BaseRRNode.prototype; _proto.contains = function contains(node2) { if (!_instanceof(node2, BaseRRNode)) return false; else if (node2.ownerDocument !== this.ownerDocument) return false; else if (node2 === this) return true; while (node2.parentNode) { if (node2.parentNode === this) return true; node2 = node2.parentNode; } return false; }; _proto.appendChild = function appendChild(_newChild) { throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method."); }; _proto.insertBefore = function insertBefore(_newChild, _refChild) { throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method."); }; _proto.removeChild = function removeChild(_node) { throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method."); }; _proto.toString = function toString() { return "RRNode"; }; _create_class(BaseRRNode, [{ key: "childNodes", get: function get() { var childNodes2 = []; var childIterator = this.firstChild; while (childIterator) { childNodes2.push(childIterator); childIterator = childIterator.nextSibling; } return childNodes2; } }]); return BaseRRNode; }(); testableAccessors = { Node: [ "childNodes", "parentNode", "parentElement", "textContent" ], ShadowRoot: ["host", "styleSheets"], Element: [ "shadowRoot", "querySelector", "querySelectorAll" ], MutationObserver: [] }; testableMethods = { Node: ["contains", "getRootNode"], ShadowRoot: ["getSelection"], Element: [], MutationObserver: ["constructor"] }; untaintedBasePrototype = {}; isAngularZonePresent = function() { return !!globalThis.Zone; }; untaintedAccessorCache = {}; untaintedMethodCache = {}; index = { childNodes, parentNode, parentElement, textContent, contains, getRootNode, host, styleSheets, shadowRoot, querySelector, querySelectorAll, mutationObserver: mutationObserverCtor, patch }; DEPARTED_MIRROR_ACCESS_WARNING = "Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording."; _mirror = { map: {}, getId: function getId() { console.error(DEPARTED_MIRROR_ACCESS_WARNING); return -1; }, getNode: function getNode() { console.error(DEPARTED_MIRROR_ACCESS_WARNING); return null; }, removeNodeFromMap: function removeNodeFromMap() { console.error(DEPARTED_MIRROR_ACCESS_WARNING); }, has: function has() { console.error(DEPARTED_MIRROR_ACCESS_WARNING); return false; }, reset: function reset() { console.error(DEPARTED_MIRROR_ACCESS_WARNING); } }; if (typeof window !== "undefined" && window.Proxy && window.Reflect) _mirror = new Proxy(_mirror, { get: function get(target, prop, receiver) { if (prop === "map") console.error(DEPARTED_MIRROR_ACCESS_WARNING); return Reflect.get(target, prop, receiver); } }); nowTimestamp = Date.now; if (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) nowTimestamp = function() { return /* @__PURE__ */ (/* @__PURE__ */ new Date()).getTime(); }; StyleSheetMirror = /*#__PURE__*/ function() { function StyleSheetMirror() { __publicField(this, "id", 1); __publicField(this, "styleIDMap", /* @__PURE__ */ new WeakMap()); __publicField(this, "idStyleMap", /* @__PURE__ */ new Map()); } var _proto = StyleSheetMirror.prototype; _proto.getId = function getId(stylesheet) { var _this_styleIDMap_get; return (_this_styleIDMap_get = this.styleIDMap.get(stylesheet)) != null ? _this_styleIDMap_get : -1; }; _proto.has = function has(stylesheet) { return this.styleIDMap.has(stylesheet); }; /** * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id. */ _proto.add = function add(stylesheet, id) { if (this.has(stylesheet)) return this.getId(stylesheet); var newId; if (id === void 0) newId = this.id++; else newId = id; this.styleIDMap.set(stylesheet, newId); this.idStyleMap.set(newId, stylesheet); return newId; }; _proto.getStyle = function getStyle(id) { return this.idStyleMap.get(id) || null; }; _proto.reset = function reset() { this.styleIDMap = /* @__PURE__ */ new WeakMap(); this.idStyleMap = /* @__PURE__ */ new Map(); this.id = 1; }; _proto.generateId = function generateId() { return this.id++; }; return StyleSheetMirror; }(); EventType = /* @__PURE__ */ function(EventType2) { EventType2[EventType2["DomContentLoaded"] = 0] = "DomContentLoaded"; EventType2[EventType2["Load"] = 1] = "Load"; EventType2[EventType2["FullSnapshot"] = 2] = "FullSnapshot"; EventType2[EventType2["IncrementalSnapshot"] = 3] = "IncrementalSnapshot"; EventType2[EventType2["Meta"] = 4] = "Meta"; EventType2[EventType2["Custom"] = 5] = "Custom"; EventType2[EventType2["Plugin"] = 6] = "Plugin"; return EventType2; }(EventType || {}); IncrementalSource = /* @__PURE__ */ function(IncrementalSource2) { IncrementalSource2[IncrementalSource2["Mutation"] = 0] = "Mutation"; IncrementalSource2[IncrementalSource2["MouseMove"] = 1] = "MouseMove"; IncrementalSource2[IncrementalSource2["MouseInteraction"] = 2] = "MouseInteraction"; IncrementalSource2[IncrementalSource2["Scroll"] = 3] = "Scroll"; IncrementalSource2[IncrementalSource2["ViewportResize"] = 4] = "ViewportResize"; IncrementalSource2[IncrementalSource2["Input"] = 5] = "Input"; IncrementalSource2[IncrementalSource2["TouchMove"] = 6] = "TouchMove"; IncrementalSource2[IncrementalSource2["MediaInteraction"] = 7] = "MediaInteraction"; IncrementalSource2[IncrementalSource2["StyleSheetRule"] = 8] = "StyleSheetRule"; IncrementalSource2[IncrementalSource2["CanvasMutation"] = 9] = "CanvasMutation"; IncrementalSource2[IncrementalSource2["Font"] = 10] = "Font"; IncrementalSource2[IncrementalSource2["Log"] = 11] = "Log"; IncrementalSource2[IncrementalSource2["Drag"] = 12] = "Drag"; IncrementalSource2[IncrementalSource2["StyleDeclaration"] = 13] = "StyleDeclaration"; IncrementalSource2[IncrementalSource2["Selection"] = 14] = "Selection"; IncrementalSource2[IncrementalSource2["AdoptedStyleSheet"] = 15] = "AdoptedStyleSheet"; IncrementalSource2[IncrementalSource2["CustomElement"] = 16] = "CustomElement"; return IncrementalSource2; }(IncrementalSource || {}); MouseInteractions = /* @__PURE__ */ function(MouseInteractions2) { MouseInteractions2[MouseInteractions2["MouseUp"] = 0] = "MouseUp"; MouseInteractions2[MouseInteractions2["MouseDown"] = 1] = "MouseDown"; MouseInteractions2[MouseInteractions2["Click"] = 2] = "Click"; MouseInteractions2[MouseInteractions2["ContextMenu"] = 3] = "ContextMenu"; MouseInteractions2[MouseInteractions2["DblClick"] = 4] = "DblClick"; MouseInteractions2[MouseInteractions2["Focus"] = 5] = "Focus"; MouseInteractions2[MouseInteractions2["Blur"] = 6] = "Blur"; MouseInteractions2[MouseInteractions2["TouchStart"] = 7] = "TouchStart"; MouseInteractions2[MouseInteractions2["TouchMove_Departed"] = 8] = "TouchMove_Departed"; MouseInteractions2[MouseInteractions2["TouchEnd"] = 9] = "TouchEnd"; MouseInteractions2[MouseInteractions2["TouchCancel"] = 10] = "TouchCancel"; return MouseInteractions2; }(MouseInteractions || {}); PointerTypes = /* @__PURE__ */ function(PointerTypes2) { PointerTypes2[PointerTypes2["Mouse"] = 0] = "Mouse"; PointerTypes2[PointerTypes2["Pen"] = 1] = "Pen"; PointerTypes2[PointerTypes2["Touch"] = 2] = "Touch"; return PointerTypes2; }(PointerTypes || {}); CanvasContext = /* @__PURE__ */ function(CanvasContext2) { CanvasContext2[CanvasContext2["2D"] = 0] = "2D"; CanvasContext2[CanvasContext2["WebGL"] = 1] = "WebGL"; CanvasContext2[CanvasContext2["WebGL2"] = 2] = "WebGL2"; return CanvasContext2; }(CanvasContext || {}); MediaInteractions = /* @__PURE__ */ function(MediaInteractions2) { MediaInteractions2[MediaInteractions2["Play"] = 0] = "Play"; MediaInteractions2[MediaInteractions2["Pause"] = 1] = "Pause"; MediaInteractions2[MediaInteractions2["Seeked"] = 2] = "Seeked"; MediaInteractions2[MediaInteractions2["VolumeChange"] = 3] = "VolumeChange"; MediaInteractions2[MediaInteractions2["RateChange"] = 4] = "RateChange"; return MediaInteractions2; }(MediaInteractions || {}); NodeType = /* @__PURE__ */ function(NodeType2) { NodeType2[NodeType2["Document"] = 0] = "Document"; NodeType2[NodeType2["DocumentType"] = 1] = "DocumentType"; NodeType2[NodeType2["Element"] = 2] = "Element"; NodeType2[NodeType2["Text"] = 3] = "Text"; NodeType2[NodeType2["CDATA"] = 4] = "CDATA"; NodeType2[NodeType2["Comment"] = 5] = "Comment"; return NodeType2; }(NodeType || {}); DoubleLinkedList = /*#__PURE__*/ function() { function DoubleLinkedList() { __publicField(this, "length", 0); __publicField(this, "head", null); __publicField(this, "tail", null); } var _proto = DoubleLinkedList.prototype; _proto.get = function get(position) { if (position >= this.length) throw new Error("Position outside of list range"); var current = this.head; for (var index2 = 0; index2 < position; index2++) current = (current == null ? void 0 : current.next) || null; return current; }; _proto.addNode = function addNode(n2) { var node2 = { value: n2, previous: null, next: null }; n2.__ln = node2; if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) { var current = n2.previousSibling.__ln.next; node2.next = current; node2.previous = n2.previousSibling.__ln; n2.previousSibling.__ln.next = node2; if (current) current.previous = node2; } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) { var current1 = n2.nextSibling.__ln.previous; node2.previous = current1; node2.next = n2.nextSibling.__ln; n2.nextSibling.__ln.previous = node2; if (current1) current1.next = node2; } else { if (this.head) this.head.previous = node2; node2.next = this.head; this.head = node2; } if (node2.next === null) this.tail = node2; this.length++; }; _proto.removeNode = function removeNode(n2) { var current = n2.__ln; if (!this.head) return; if (!current.previous) { this.head = current.next; if (this.head) this.head.previous = null; else this.tail = null; } else { current.previous.next = current.next; if (current.next) current.next.previous = current.previous; else this.tail = current.previous; } if (n2.__ln) delete n2.__ln; this.length--; }; return DoubleLinkedList; }(); moveKey = function(id, parentId) { return id + "@" + parentId; }; MutationBuffer = /*#__PURE__*/ function() { function MutationBuffer() { var _this = this; __publicField(this, "frozen", false); __publicField(this, "locked", false); __publicField(this, "texts", []); __publicField(this, "attributes", []); __publicField(this, "attributeMap", /* @__PURE__ */ new WeakMap()); __publicField(this, "removes", []); __publicField(this, "mapRemoves", []); __publicField(this, "movedMap", {}); /** * the browser MutationObserver emits multiple mutations after * a delay for performance reasons, making tracing added nodes hard * in our `processMutations` callback function. * For example, if we append an element el_1 into body, and then append * another element el_2 into el_1, these two mutations may be passed to the * callback function together when the two operations were done. * Generally we need to trace child nodes of newly added nodes, but in this * case if we count el_2 as el_1's child node in the first mutation record, * then we will count el_2 again in the second mutation record which was * duplicated. * To avoid of duplicate counting added nodes, we use a Set to store * added nodes and its child nodes during iterate mutation records. Then * collect added nodes from the Set which have no duplicate copy. But * this also causes newly added nodes will not be serialized with id ASAP, * which means all the id related calculation should be lazy too. */ __publicField(this, "addedSet", /* @__PURE__ */ new Set()); __publicField(this, "movedSet", /* @__PURE__ */ new Set()); __publicField(this, "droppedSet", /* @__PURE__ */ new Set()); __publicField(this, "removesSubTreeCache", /* @__PURE__ */ new Set()); __publicField(this, "mutationCb"); __publicField(this, "blockClass"); __publicField(this, "blockSelector"); __publicField(this, "maskTextClass"); __publicField(this, "maskTextSelector"); __publicField(this, "inlineStylesheet"); __publicField(this, "maskInputOptions"); __publicField(this, "maskTextFn"); __publicField(this, "maskInputFn"); __publicField(this, "keepIframeSrcFn"); __publicField(this, "recordCanvas"); __publicField(this, "inlineImages"); __publicField(this, "slimDOMOptions"); __publicField(this, "dataURLOptions"); __publicField(this, "doc"); __publicField(this, "mirror"); __publicField(this, "iframeManager"); __publicField(this, "stylesheetManager"); __publicField(this, "shadowDomManager"); __publicField(this, "canvasManager"); __publicField(this, "processedNodeManager"); __publicField(this, "unattachedDoc"); __publicField(this, "processMutations", function(mutations) { mutations.forEach(_this.processMutation); _this.emit(); }); __publicField(this, "emit", function() { if (_this.frozen || _this.locked) return; var adds = []; var addedIds = /* @__PURE__ */ new Set(); var addList = new DoubleLinkedList(); var getNextId = function(n2) { var ns = n2; var nextId = IGNORED_NODE; while (nextId === IGNORED_NODE) { ns = ns && ns.nextSibling; nextId = ns && _this.mirror.getId(ns); } return nextId; }; var pushAdd = function(n2) { var parent = index.parentNode(n2); if (!parent || !inDom(n2)) return; var cssCaptured = false; if (n2.nodeType === Node.TEXT_NODE) { var parentTag = parent.tagName; if (parentTag === "TEXTAREA") return; else if (parentTag === "STYLE" && _this.addedSet.has(parent)) cssCaptured = true; } var parentId = isShadowRoot(parent) ? _this.mirror.getId(getShadowHost(n2)) : _this.mirror.getId(parent); var nextId = getNextId(n2); if (parentId === -1 || nextId === -1) return addList.addNode(n2); var sn = serializeNodeWithId(n2, { doc: _this.doc, mirror: _this.mirror, blockClass: _this.blockClass, blockSelector: _this.blockSelector, maskTextClass: _this.maskTextClass, maskTextSelector: _this.maskTextSelector, skipChild: true, newlyAddedElement: true, inlineStylesheet: _this.inlineStylesheet, maskInputOptions: _this.maskInputOptions, maskTextFn: _this.maskTextFn, maskInputFn: _this.maskInputFn, slimDOMOptions: _this.slimDOMOptions, dataURLOptions: _this.dataURLOptions, recordCanvas: _this.recordCanvas, inlineImages: _this.inlineImages, onSerialize: function(currentN) { if (isSerializedIframe(currentN, _this.mirror)) _this.iframeManager.addIframe(currentN); if (isSerializedStylesheet(currentN, _this.mirror)) _this.stylesheetManager.trackLinkElement(currentN); if (hasShadowRoot(n2)) _this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), _this.doc); }, onIframeLoad: function(iframe, childSn) { _this.iframeManager.attachIframe(iframe, childSn); _this.shadowDomManager.observeAttachShadow(iframe); }, onStylesheetLoad: function(link, childSn) { _this.stylesheetManager.attachLinkElement(link, childSn); }, cssCaptured }); if (sn) { adds.push({ parentId, nextId, node: sn }); addedIds.add(sn.id); } }; while (_this.mapRemoves.length) _this.mirror.removeNodeFromMap(_this.mapRemoves.shift()); for (var _iterator = _create_for_of_iterator_helper_loose(_this.movedSet), _step; !(_step = _iterator()).done;) { var n2 = _step.value; if (isParentRemoved(_this.removesSubTreeCache, n2, _this.mirror) && !_this.movedSet.has(index.parentNode(n2))) continue; pushAdd(n2); } for (var _iterator1 = _create_for_of_iterator_helper_loose(_this.addedSet), _step1; !(_step1 = _iterator1()).done;) { var n21 = _step1.value; if (!isAncestorInSet(_this.droppedSet, n21) && !isParentRemoved(_this.removesSubTreeCache, n21, _this.mirror)) pushAdd(n21); else if (isAncestorInSet(_this.movedSet, n21)) pushAdd(n21); else _this.droppedSet.add(n21); } var candidate = null; while (addList.length) { var node2 = null; if (candidate) { var parentId = _this.mirror.getId(index.parentNode(candidate.value)); var nextId = getNextId(candidate.value); if (parentId !== -1 && nextId !== -1) node2 = candidate; } if (!node2) { var tailNode = addList.tail; while (tailNode) { var _node = tailNode; tailNode = tailNode.previous; if (_node) { var parentId1 = _this.mirror.getId(index.parentNode(_node.value)); if (getNextId(_node.value) === -1) continue; else if (parentId1 !== -1) { node2 = _node; break; } else { var unhandledNode = _node.value; var parent = index.parentNode(unhandledNode); if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { var shadowHost = index.host(parent); if (_this.mirror.getId(shadowHost) !== -1) { node2 = _node; break; } } } } } } if (!node2) { while (addList.head) addList.removeNode(addList.head.value); break; } candidate = node2.previous; addList.removeNode(node2.value); pushAdd(node2.value); } var payload = { texts: _this.texts.map(function(text) { var n2 = text.node; var parent = index.parentNode(n2); if (parent && parent.tagName === "TEXTAREA") _this.genTextAreaValueMutation(parent); return { id: _this.mirror.getId(n2), value: text.value }; }).filter(function(text) { return !addedIds.has(text.id); }).filter(function(text) { return _this.mirror.has(text.id); }), attributes: _this.attributes.map(function(attribute) { var attributes = attribute.attributes; if (typeof attributes.style === "string") { var diffAsStr = JSON.stringify(attribute.styleDiff); var unchangedAsStr = JSON.stringify(attribute._unchangedStyles); if (diffAsStr.length < attributes.style.length) { if ((diffAsStr + unchangedAsStr).split("var(").length === attributes.style.split("var(").length) attributes.style = attribute.styleDiff; } } return { id: _this.mirror.getId(attribute.node), attributes }; }).filter(function(attribute) { return !addedIds.has(attribute.id); }).filter(function(attribute) { return _this.mirror.has(attribute.id); }), removes: _this.removes, adds }; if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) return; _this.texts = []; _this.attributes = []; _this.attributeMap = /* @__PURE__ */ new WeakMap(); _this.removes = []; _this.addedSet = /* @__PURE__ */ new Set(); _this.movedSet = /* @__PURE__ */ new Set(); _this.droppedSet = /* @__PURE__ */ new Set(); _this.removesSubTreeCache = /* @__PURE__ */ new Set(); _this.movedMap = {}; _this.mutationCb(payload); }); __publicField(this, "genTextAreaValueMutation", function(textarea) { var item = _this.attributeMap.get(textarea); if (!item) { item = { node: textarea, attributes: {}, styleDiff: {}, _unchangedStyles: {} }; _this.attributes.push(item); _this.attributeMap.set(textarea, item); } var value = Array.from(index.childNodes(textarea), function(cn) { return index.textContent(cn) || ""; }).join(""); item.attributes.value = maskInputValue({ element: textarea, maskInputOptions: _this.maskInputOptions, tagName: textarea.tagName, type: getInputType(textarea), value, maskInputFn: _this.maskInputFn }); }); __publicField(this, "processMutation", function(m) { if (isIgnored(m.target, _this.mirror, _this.slimDOMOptions)) return; switch (m.type) { case "characterData": var value = index.textContent(m.target); if (!isBlocked(m.target, _this.blockClass, _this.blockSelector, false) && value !== m.oldValue) _this.texts.push({ value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector, true) && value ? _this.maskTextFn ? _this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\S]/g, "*") : value, node: m.target }); break; case "attributes": var target = m.target; var attributeName = m.attributeName; var value1 = m.target.getAttribute(attributeName); if (attributeName === "value") { var type = getInputType(target); value1 = maskInputValue({ element: target, maskInputOptions: _this.maskInputOptions, tagName: target.tagName, type, value: value1, maskInputFn: _this.maskInputFn }); } if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || value1 === m.oldValue) return; var item = _this.attributeMap.get(m.target); if (target.tagName === "IFRAME" && attributeName === "src" && !_this.keepIframeSrcFn(value1)) if (!target.contentDocument) attributeName = "rr_src"; else return; if (!item) { item = { node: m.target, attributes: {}, styleDiff: {}, _unchangedStyles: {} }; _this.attributes.push(item); _this.attributeMap.set(m.target, item); } if (attributeName === "type" && target.tagName === "INPUT" && (m.oldValue || "").toLowerCase() === "password") target.setAttribute("data-rr-is-password", "true"); if (!ignoreAttribute(target.tagName, attributeName)) { item.attributes[attributeName] = transformAttribute(_this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value1); if (attributeName === "style") { if (!_this.unattachedDoc) try { _this.unattachedDoc = document.implementation.createHTMLDocument(); } catch (e2) { _this.unattachedDoc = _this.doc; } var old = _this.unattachedDoc.createElement("span"); if (m.oldValue) old.setAttribute("style", m.oldValue); for (var _iterator = _create_for_of_iterator_helper_loose(Array.from(target.style)), _step; !(_step = _iterator()).done;) { var pname = _step.value; var newValue = target.style.getPropertyValue(pname); var newPriority = target.style.getPropertyPriority(pname); if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) if (newPriority === "") item.styleDiff[pname] = newValue; else item.styleDiff[pname] = [newValue, newPriority]; else item._unchangedStyles[pname] = [newValue, newPriority]; } for (var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(old.style)), _step1; !(_step1 = _iterator1()).done;) { var pname1 = _step1.value; if (target.style.getPropertyValue(pname1) === "") item.styleDiff[pname1] = false; } } else if (attributeName === "open" && target.tagName === "DIALOG") if (target.matches("dialog:modal")) item.attributes["rr_open_mode"] = "modal"; else item.attributes["rr_open_mode"] = "non-modal"; } break; case "childList": if (isBlocked(m.target, _this.blockClass, _this.blockSelector, true)) return; if (m.target.tagName === "TEXTAREA") { _this.genTextAreaValueMutation(m.target); return; } m.addedNodes.forEach(function(n2) { return _this.genAdds(n2, m.target); }); m.removedNodes.forEach(function(n2) { var nodeId = _this.mirror.getId(n2); var parentId = isShadowRoot(m.target) ? _this.mirror.getId(index.host(m.target)) : _this.mirror.getId(m.target); if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || isIgnored(n2, _this.mirror, _this.slimDOMOptions) || !isSerialized(n2, _this.mirror)) return; if (_this.addedSet.has(n2)) { deepDelete(_this.addedSet, n2); _this.droppedSet.add(n2); } else if (_this.addedSet.has(m.target) && nodeId === -1); else if (isAncestorRemoved(m.target, _this.mirror)); else if (_this.movedSet.has(n2) && _this.movedMap[moveKey(nodeId, parentId)]) deepDelete(_this.movedSet, n2); else { _this.removes.push({ parentId, id: nodeId, isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0 }); processRemoves(n2, _this.removesSubTreeCache); } _this.mapRemoves.push(n2); }); break; } }); /** * Make sure you check if `n`'s parent is blocked before calling this function * */ __publicField(this, "genAdds", function(n2, target) { if (_this.processedNodeManager.inOtherBuffer(n2, _this)) return; if (_this.addedSet.has(n2) || _this.movedSet.has(n2)) return; if (_this.mirror.hasNode(n2)) { if (isIgnored(n2, _this.mirror, _this.slimDOMOptions)) return; _this.movedSet.add(n2); var targetId = null; if (target && _this.mirror.hasNode(target)) targetId = _this.mirror.getId(target); if (targetId && targetId !== -1) _this.movedMap[moveKey(_this.mirror.getId(n2), targetId)] = true; } else { _this.addedSet.add(n2); _this.droppedSet.delete(n2); } if (!isBlocked(n2, _this.blockClass, _this.blockSelector, false)) { index.childNodes(n2).forEach(function(childN) { return _this.genAdds(childN); }); if (hasShadowRoot(n2)) index.childNodes(index.shadowRoot(n2)).forEach(function(childN) { _this.processedNodeManager.add(childN, _this); _this.genAdds(childN, n2); }); } }); } var _proto = MutationBuffer.prototype; _proto.init = function init(options) { var _this = this; [ "mutationCb", "blockClass", "blockSelector", "maskTextClass", "maskTextSelector", "inlineStylesheet", "maskInputOptions", "maskTextFn", "maskInputFn", "keepIframeSrcFn", "recordCanvas", "inlineImages", "slimDOMOptions", "dataURLOptions", "doc", "mirror", "iframeManager", "stylesheetManager", "shadowDomManager", "canvasManager", "processedNodeManager" ].forEach(function(key) { _this[key] = options[key]; }); }; _proto.freeze = function freeze() { this.frozen = true; this.canvasManager.freeze(); }; _proto.unfreeze = function unfreeze() { this.frozen = false; this.canvasManager.unfreeze(); this.emit(); }; _proto.isFrozen = function isFrozen() { return this.frozen; }; _proto.lock = function lock() { this.locked = true; this.canvasManager.lock(); }; _proto.unlock = function unlock() { this.locked = false; this.canvasManager.unlock(); this.emit(); }; _proto.reset = function reset() { this.shadowDomManager.reset(); this.canvasManager.reset(); }; return MutationBuffer; }(); ; callbackWrapper = function(cb) { if (!errorHandler) return cb; var rrwebWrapped = function() { for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) rest[_key] = arguments[_key]; try { return cb.apply(void 0, [].concat(rest)); } catch (error) { if (errorHandler && errorHandler(error) === true) return; throw error; } }; return rrwebWrapped; }; mutationBuffers = []; INPUT_TAGS = [ "INPUT", "TEXTAREA", "SELECT" ]; lastInputValueMap = /* @__PURE__ */ new WeakMap(); CrossOriginIframeMirror = /*#__PURE__*/ function() { function CrossOriginIframeMirror(generateIdFn) { __publicField(this, "iframeIdToRemoteIdMap", /* @__PURE__ */ new WeakMap()); __publicField(this, "iframeRemoteIdToIdMap", /* @__PURE__ */ new WeakMap()); this.generateIdFn = generateIdFn; } var _proto = CrossOriginIframeMirror.prototype; _proto.getId = function getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) { var idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe); var remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe); var id = idToRemoteIdMap.get(remoteId); if (!id) { id = this.generateIdFn(); idToRemoteIdMap.set(remoteId, id); remoteIdToIdMap.set(id, remoteId); } return id; }; _proto.getIds = function getIds(iframe, remoteId) { var _this = this; var idToRemoteIdMap = this.getIdToRemoteIdMap(iframe); var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe); return remoteId.map(function(id) { return _this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap); }); }; _proto.getRemoteId = function getRemoteId(iframe, id, map) { var remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe); if (typeof id !== "number") return id; var remoteId = remoteIdToIdMap.get(id); if (!remoteId) return -1; return remoteId; }; _proto.getRemoteIds = function getRemoteIds(iframe, ids) { var _this = this; var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe); return ids.map(function(id) { return _this.getRemoteId(iframe, id, remoteIdToIdMap); }); }; _proto.reset = function reset(iframe) { if (!iframe) { this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap(); this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap(); return; } this.iframeIdToRemoteIdMap.delete(iframe); this.iframeRemoteIdToIdMap.delete(iframe); }; _proto.getIdToRemoteIdMap = function getIdToRemoteIdMap(iframe) { var idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe); if (!idToRemoteIdMap) { idToRemoteIdMap = /* @__PURE__ */ new Map(); this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap); } return idToRemoteIdMap; }; _proto.getRemoteIdToIdMap = function getRemoteIdToIdMap(iframe) { var remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe); if (!remoteIdToIdMap) { remoteIdToIdMap = /* @__PURE__ */ new Map(); this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap); } return remoteIdToIdMap; }; return CrossOriginIframeMirror; }(); IframeManager = /*#__PURE__*/ function() { function IframeManager(options) { __publicField(this, "iframes", /* @__PURE__ */ new WeakMap()); __publicField(this, "crossOriginIframeMap", /* @__PURE__ */ new WeakMap()); __publicField(this, "crossOriginIframeMirror", new CrossOriginIframeMirror(genId)); __publicField(this, "crossOriginIframeStyleMirror"); __publicField(this, "crossOriginIframeRootIdMap", /* @__PURE__ */ new WeakMap()); __publicField(this, "mirror"); __publicField(this, "mutationCb"); __publicField(this, "wrappedEmit"); __publicField(this, "loadListener"); __publicField(this, "stylesheetManager"); __publicField(this, "recordCrossOriginIframes"); this.mutationCb = options.mutationCb; this.wrappedEmit = options.wrappedEmit; this.stylesheetManager = options.stylesheetManager; this.recordCrossOriginIframes = options.recordCrossOriginIframes; this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)); this.mirror = options.mirror; if (this.recordCrossOriginIframes) window.addEventListener("message", this.handleMessage.bind(this)); } var _proto = IframeManager.prototype; _proto.addIframe = function addIframe(iframeEl) { this.iframes.set(iframeEl, true); if (iframeEl.contentWindow) this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl); }; _proto.addLoadListener = function addLoadListener(cb) { this.loadListener = cb; }; _proto.attachIframe = function attachIframe(iframeEl, childSn) { var _a2; var _b; this.mutationCb({ adds: [{ parentId: this.mirror.getId(iframeEl), nextId: null, node: childSn }], removes: [], texts: [], attributes: [], isAttachIframe: true }); if (this.recordCrossOriginIframes) (_a2 = iframeEl.contentWindow) == null || _a2.addEventListener("message", this.handleMessage.bind(this)); (_b = this.loadListener) == null || _b.call(this, iframeEl); if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0) this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument)); }; _proto.handleMessage = function handleMessage(message) { var crossOriginMessageEvent = message; if (crossOriginMessageEvent.data.type !== "rrweb" || crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin) return; if (!message.source) return; var iframeEl = this.crossOriginIframeMap.get(message.source); if (!iframeEl) return; var transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event); if (transformedEvent) this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout); }; _proto.transformCrossOriginEvent = function transformCrossOriginEvent(iframeEl, e2) { var _this = this; var _a2; switch (e2.type) { case EventType.FullSnapshot: this.crossOriginIframeMirror.reset(iframeEl); this.crossOriginIframeStyleMirror.reset(iframeEl); this.replaceIdOnNode(e2.data.node, iframeEl); var rootId = e2.data.node.id; this.crossOriginIframeRootIdMap.set(iframeEl, rootId); this.patchRootIdOnNode(e2.data.node, rootId); return { timestamp: e2.timestamp, type: EventType.IncrementalSnapshot, data: { source: IncrementalSource.Mutation, adds: [{ parentId: this.mirror.getId(iframeEl), nextId: null, node: e2.data.node }], removes: [], texts: [], attributes: [], isAttachIframe: true } }; case EventType.Meta: case EventType.Load: case EventType.DomContentLoaded: return false; case EventType.Plugin: return e2; case EventType.Custom: this.replaceIds(e2.data.payload, iframeEl, [ "id", "parentId", "previousId", "nextId" ]); return e2; case EventType.IncrementalSnapshot: switch (e2.data.source) { case IncrementalSource.Mutation: e2.data.adds.forEach(function(n2) { _this.replaceIds(n2, iframeEl, [ "parentId", "nextId", "previousId" ]); _this.replaceIdOnNode(n2.node, iframeEl); var rootId = _this.crossOriginIframeRootIdMap.get(iframeEl); rootId && _this.patchRootIdOnNode(n2.node, rootId); }); e2.data.removes.forEach(function(n2) { _this.replaceIds(n2, iframeEl, ["parentId", "id"]); }); e2.data.attributes.forEach(function(n2) { _this.replaceIds(n2, iframeEl, ["id"]); }); e2.data.texts.forEach(function(n2) { _this.replaceIds(n2, iframeEl, ["id"]); }); return e2; case IncrementalSource.Drag: case IncrementalSource.TouchMove: case IncrementalSource.MouseMove: e2.data.positions.forEach(function(p) { _this.replaceIds(p, iframeEl, ["id"]); }); return e2; case IncrementalSource.ViewportResize: return false; case IncrementalSource.MediaInteraction: case IncrementalSource.MouseInteraction: case IncrementalSource.Scroll: case IncrementalSource.CanvasMutation: case IncrementalSource.Input: this.replaceIds(e2.data, iframeEl, ["id"]); return e2; case IncrementalSource.StyleSheetRule: case IncrementalSource.StyleDeclaration: this.replaceIds(e2.data, iframeEl, ["id"]); this.replaceStyleIds(e2.data, iframeEl, ["styleId"]); return e2; case IncrementalSource.Font: return e2; case IncrementalSource.Selection: e2.data.ranges.forEach(function(range) { _this.replaceIds(range, iframeEl, ["start", "end"]); }); return e2; case IncrementalSource.AdoptedStyleSheet: this.replaceIds(e2.data, iframeEl, ["id"]); this.replaceStyleIds(e2.data, iframeEl, ["styleIds"]); (_a2 = e2.data.styles) == null || _a2.forEach(function(style) { _this.replaceStyleIds(style, iframeEl, ["styleId"]); }); return e2; } } return false; }; _proto.replace = function replace(iframeMirror, obj, iframeEl, keys) { for (var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;) { var key = _step.value; if (!Array.isArray(obj[key]) && typeof obj[key] !== "number") continue; if (Array.isArray(obj[key])) obj[key] = iframeMirror.getIds(iframeEl, obj[key]); else obj[key] = iframeMirror.getId(iframeEl, obj[key]); } return obj; }; _proto.replaceIds = function replaceIds(obj, iframeEl, keys) { return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys); }; _proto.replaceStyleIds = function replaceStyleIds(obj, iframeEl, keys) { return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys); }; _proto.replaceIdOnNode = function replaceIdOnNode(node2, iframeEl) { var _this = this; this.replaceIds(node2, iframeEl, ["id", "rootId"]); if ("childNodes" in node2) node2.childNodes.forEach(function(child) { _this.replaceIdOnNode(child, iframeEl); }); }; _proto.patchRootIdOnNode = function patchRootIdOnNode(node2, rootId) { var _this = this; if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId; if ("childNodes" in node2) node2.childNodes.forEach(function(child) { _this.patchRootIdOnNode(child, rootId); }); }; return IframeManager; }(); ShadowDomManager = /*#__PURE__*/ function() { function ShadowDomManager(options) { __publicField(this, "shadowDoms", /* @__PURE__ */ new WeakSet()); __publicField(this, "mutationCb"); __publicField(this, "scrollCb"); __publicField(this, "bypassOptions"); __publicField(this, "mirror"); __publicField(this, "restoreHandlers", []); this.mutationCb = options.mutationCb; this.scrollCb = options.scrollCb; this.bypassOptions = options.bypassOptions; this.mirror = options.mirror; this.init(); } var _proto = ShadowDomManager.prototype; _proto.init = function init() { this.reset(); this.patchAttachShadow(Element, document); }; _proto.addShadowRoot = function addShadowRoot(shadowRoot2, doc) { var _this = this; if (!isNativeShadowDom(shadowRoot2)) return; if (this.shadowDoms.has(shadowRoot2)) return; this.shadowDoms.add(shadowRoot2); var observer = initMutationObserver(_extends({}, this.bypassOptions, { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot2); this.restoreHandlers.push(function() { return observer.disconnect(); }); this.restoreHandlers.push(initScrollObserver(_extends({}, this.bypassOptions, { scrollCb: this.scrollCb, doc: shadowRoot2, mirror: this.mirror }))); setTimeout(function() { if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0) _this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot2.adoptedStyleSheets, _this.mirror.getId(index.host(shadowRoot2))); _this.restoreHandlers.push(initAdoptedStyleSheetObserver({ mirror: _this.mirror, stylesheetManager: _this.bypassOptions.stylesheetManager }, shadowRoot2)); }, 0); }; /** * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms. */ _proto.observeAttachShadow = function observeAttachShadow(iframeElement) { if (!iframeElement.contentWindow || !iframeElement.contentDocument) return; this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument); }; /** * Patch 'attachShadow' to observe newly added shadow doms. */ _proto.patchAttachShadow = function patchAttachShadow(element, doc) { var manager = this; this.restoreHandlers.push(patch(element.prototype, "attachShadow", function(original) { return function(option) { var sRoot = original.call(this, option); var shadowRootEl = index.shadowRoot(this); if (shadowRootEl && inDom(this)) manager.addShadowRoot(shadowRootEl, doc); return sRoot; }; })); }; _proto.reset = function reset() { this.restoreHandlers.forEach(function(handler) { try { handler(); } catch (e2) {} }); this.restoreHandlers = []; this.shadowDoms = /* @__PURE__ */ new WeakSet(); }; return ShadowDomManager; }(); chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; lookup = typeof Uint8Array === "undefined" ? [] : /* @__PURE__ */ new Uint8Array(256); for (i$1 = 0; i$1 < chars.length; i$1++) lookup[chars.charCodeAt(i$1)] = i$1; encode = function encode(arraybuffer) { var bytes = new Uint8Array(arraybuffer); var i2; var len = bytes.length; var base64 = ""; for (i2 = 0; i2 < len; i2 += 3) { base64 += chars[bytes[i2] >> 2]; base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4]; base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6]; base64 += chars[bytes[i2 + 2] & 63]; } if (len % 3 === 2) base64 = base64.substring(0, base64.length - 1) + "="; else if (len % 3 === 1) base64 = base64.substring(0, base64.length - 2) + "=="; return base64; }; canvasVarMap = /* @__PURE__ */ new Map(); saveWebGLVar = function(value, win, ctx) { if (!value || !(isInstanceOfWebGLObject(value, win) || (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object")) return; var name = value.constructor.name; var list2 = variableListFor$1(ctx, name); var index2 = list2.indexOf(value); if (index2 === -1) { index2 = list2.length; list2.push(value); } return index2; }; serializeArgs = function(args, win, ctx) { return args.map(function(arg) { return serializeArg(arg, win, ctx); }); }; isInstanceOfWebGLObject = function(value, win) { var supportedWebGLConstructorNames = [ "WebGLActiveInfo", "WebGLBuffer", "WebGLFramebuffer", "WebGLProgram", "WebGLRenderbuffer", "WebGLShader", "WebGLShaderPrecisionFormat", "WebGLTexture", "WebGLUniformLocation", "WebGLVertexArrayObject", "WebGLVertexArrayObjectOES" ].filter(function(name) { return typeof win[name] === "function"; }); return Boolean(supportedWebGLConstructorNames.find(function(name) { return _instanceof(value, win[name]); })); }; encodedJs = "KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo="; decodeBase64 = function(base64) { return Uint8Array.from(atob(base64), function(c2) { return c2.charCodeAt(0); }); }; blob = typeof window !== "undefined" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: "text/javascript;charset=utf-8" }); CanvasManager = /*#__PURE__*/ function() { function CanvasManager(options) { var _this = this; __publicField(this, "pendingCanvasMutations", /* @__PURE__ */ new Map()); __publicField(this, "rafStamps", { latestId: 0, invokeId: null }); __publicField(this, "mirror"); __publicField(this, "mutationCb"); __publicField(this, "resetObservers"); __publicField(this, "frozen", false); __publicField(this, "locked", false); __publicField(this, "processMutation", function(target, mutation) { if (_this.rafStamps.invokeId && _this.rafStamps.latestId !== _this.rafStamps.invokeId || !_this.rafStamps.invokeId) _this.rafStamps.invokeId = _this.rafStamps.latestId; if (!_this.pendingCanvasMutations.has(target)) _this.pendingCanvasMutations.set(target, []); _this.pendingCanvasMutations.get(target).push(mutation); }); var _options_sampling = options.sampling; var sampling = _options_sampling === void 0 ? "all" : _options_sampling; var win = options.win; var blockClass = options.blockClass; var blockSelector = options.blockSelector; var recordCanvas = options.recordCanvas; var dataURLOptions = options.dataURLOptions; this.mutationCb = options.mutationCb; this.mirror = options.mirror; if (recordCanvas && sampling === "all") this.initCanvasMutationObserver(win, blockClass, blockSelector); if (recordCanvas && typeof sampling === "number") this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, { dataURLOptions }); } var _proto = CanvasManager.prototype; _proto.reset = function reset() { this.pendingCanvasMutations.clear(); this.resetObservers && this.resetObservers(); }; _proto.freeze = function freeze() { this.frozen = true; }; _proto.unfreeze = function unfreeze() { this.frozen = false; }; _proto.lock = function lock() { this.locked = true; }; _proto.unlock = function unlock() { this.locked = false; }; _proto.initCanvasFPSObserver = function initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) { var _this = this; var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true); var snapshotInProgressMap = /* @__PURE__ */ new Map(); var worker = new WorkerWrapper(); worker.onmessage = function(e2) { var id = e2.data.id; snapshotInProgressMap.set(id, false); if (!("base64" in e2.data)) return; var _e2_data = e2.data; var base64 = _e2_data.base64; var type = _e2_data.type; var width = _e2_data.width; var height = _e2_data.height; _this.mutationCb({ id, type: CanvasContext["2D"], commands: [{ property: "clearRect", args: [ 0, 0, width, height ] }, { property: "drawImage", args: [ { rr_type: "ImageBitmap", args: [{ rr_type: "Blob", data: [{ rr_type: "ArrayBuffer", base64 }], type }] }, 0, 0 ] }] }); }; var timeBetweenSnapshots = 1e3 / fps; var lastSnapshotTime = 0; var rafId; var getCanvas = function() { var matchedCanvas = []; win.document.querySelectorAll("canvas").forEach(function(canvas) { if (!isBlocked(canvas, blockClass, blockSelector, true)) matchedCanvas.push(canvas); }); return matchedCanvas; }; var takeCanvasSnapshots = function(timestamp) { if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) { rafId = requestAnimationFrame(takeCanvasSnapshots); return; } lastSnapshotTime = timestamp; var _this1 = _this; getCanvas().forEach(/*#__PURE__*/ _async_to_generator(function(canvas) { var _a2; var id; var context; var bitmap; return _ts_generator(this, function(_state) { switch (_state.label) { case 0: id = _this1.mirror.getId(canvas); if (snapshotInProgressMap.get(id)) return [2]; if (canvas.width === 0 || canvas.height === 0) return [2]; snapshotInProgressMap.set(id, true); if (["webgl", "webgl2"].includes(canvas.__context)) { context = canvas.getContext(canvas.__context); if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) context.clear(context.COLOR_BUFFER_BIT); } return [4, createImageBitmap(canvas)]; case 1: bitmap = _state.sent(); worker.postMessage({ id, bitmap, width: canvas.width, height: canvas.height, dataURLOptions: options.dataURLOptions }, [bitmap]); return [2]; } }); })); rafId = requestAnimationFrame(takeCanvasSnapshots); }; rafId = requestAnimationFrame(takeCanvasSnapshots); this.resetObservers = function() { canvasContextReset(); cancelAnimationFrame(rafId); }; }; _proto.initCanvasMutationObserver = function initCanvasMutationObserver(win, blockClass, blockSelector) { this.startRAFTimestamping(); this.startPendingCanvasMutationFlusher(); var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false); var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector); var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector); this.resetObservers = function() { canvasContextReset(); canvas2DReset(); canvasWebGL1and2Reset(); }; }; _proto.startPendingCanvasMutationFlusher = function startPendingCanvasMutationFlusher() { var _this = this; requestAnimationFrame(function() { return _this.flushPendingCanvasMutations(); }); }; _proto.startRAFTimestamping = function startRAFTimestamping() { var _this = this; var setLatestRAFTimestamp = function(timestamp) { _this.rafStamps.latestId = timestamp; requestAnimationFrame(setLatestRAFTimestamp); }; requestAnimationFrame(setLatestRAFTimestamp); }; _proto.flushPendingCanvasMutations = function flushPendingCanvasMutations() { var _this = this; this.pendingCanvasMutations.forEach(function(_values, canvas) { var id = _this.mirror.getId(canvas); _this.flushPendingCanvasMutationFor(canvas, id); }); requestAnimationFrame(function() { return _this.flushPendingCanvasMutations(); }); }; _proto.flushPendingCanvasMutationFor = function flushPendingCanvasMutationFor(canvas, id) { if (this.frozen || this.locked) return; var valuesWithType = this.pendingCanvasMutations.get(canvas); if (!valuesWithType || id === -1) return; var values = valuesWithType.map(function(value) { value.type; return _object_without_properties_loose(value, ["type"]); }); var type = valuesWithType[0].type; this.mutationCb({ id, type, commands: values }); this.pendingCanvasMutations.delete(canvas); }; return CanvasManager; }(); StylesheetManager = /*#__PURE__*/ function() { function StylesheetManager(options) { __publicField(this, "trackedLinkElements", /* @__PURE__ */ new WeakSet()); __publicField(this, "mutationCb"); __publicField(this, "adoptedStyleSheetCb"); __publicField(this, "styleMirror", new StyleSheetMirror()); this.mutationCb = options.mutationCb; this.adoptedStyleSheetCb = options.adoptedStyleSheetCb; } var _proto = StylesheetManager.prototype; _proto.attachLinkElement = function attachLinkElement(linkEl, childSn) { if ("_cssText" in childSn.attributes) this.mutationCb({ adds: [], removes: [], texts: [], attributes: [{ id: childSn.id, attributes: childSn.attributes }] }); this.trackLinkElement(linkEl); }; _proto.trackLinkElement = function trackLinkElement(linkEl) { if (this.trackedLinkElements.has(linkEl)) return; this.trackedLinkElements.add(linkEl); this.trackStylesheetInLinkElement(linkEl); }; _proto.adoptStyleSheets = function adoptStyleSheets(sheets, hostId) { var _this; var _loop = function() { var sheet = _step.value; var styleId = void 0; if (!_this.styleMirror.has(sheet)) { styleId = _this.styleMirror.add(sheet); styles.push({ styleId, rules: Array.from(sheet.rules || CSSRule, function(r2, index2) { return { rule: stringifyRule(r2, sheet.href), index: index2 }; }) }); } else styleId = _this.styleMirror.getId(sheet); adoptedStyleSheetData.styleIds.push(styleId); }; if (sheets.length === 0) return; var adoptedStyleSheetData = { id: hostId, styleIds: [] }; var styles = []; for (var _iterator = _create_for_of_iterator_helper_loose(sheets), _step; !(_step = _iterator()).done;) _this = this, _loop(); if (styles.length > 0) adoptedStyleSheetData.styles = styles; this.adoptedStyleSheetCb(adoptedStyleSheetData); }; _proto.reset = function reset() { this.styleMirror.reset(); this.trackedLinkElements = /* @__PURE__ */ new WeakSet(); }; _proto.trackStylesheetInLinkElement = function trackStylesheetInLinkElement(_linkEl) {}; return StylesheetManager; }(); ProcessedNodeManager = /*#__PURE__*/ function() { function ProcessedNodeManager() { __publicField(this, "nodeMap", /* @__PURE__ */ new WeakMap()); __publicField(this, "active", false); } var _proto = ProcessedNodeManager.prototype; _proto.inOtherBuffer = function inOtherBuffer(node2, thisBuffer) { var buffers = this.nodeMap.get(node2); return buffers && Array.from(buffers).some(function(buffer) { return buffer !== thisBuffer; }); }; _proto.add = function add(node2, buffer) { var _this = this; if (!this.active) { this.active = true; requestAnimationFrame(function() { _this.nodeMap = /* @__PURE__ */ new WeakMap(); _this.active = false; }); } this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer)); }; _proto.destroy = function destroy() {}; return ProcessedNodeManager; }(); ; ; ; recording = false; try { if (Array.from([1], function(x2) { return x2 * 2; })[0] !== 2) { cleanFrame = document.createElement("iframe"); document.body.appendChild(cleanFrame); Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from; document.body.removeChild(cleanFrame); } } catch (err) { console.debug("Unable to override Array.from", err); } mirror = createMirror$2(); record.addCustomEvent = function(tag, payload) { if (!recording) throw new Error("please add custom event after start recording"); wrappedEmit({ type: EventType.Custom, data: { tag, payload } }); }; record.freezePage = function() { mutationBuffers.forEach(function(buf) { return buf.freeze(); }); }; record.takeFullSnapshot = function(isCheckout) { if (!recording) throw new Error("please take full snapshot after start recording"); takeFullSnapshot$1(isCheckout); }; record.mirror = mirror; ; (function(t2) { t2[t2.NotStarted = 0] = "NotStarted", t2[t2.Running = 1] = "Running", t2[t2.Stopped = 2] = "Stopped"; })(n || (n = {})); record.addCustomEvent; record.freezePage; record.takeFullSnapshot; setImmediate = win["setImmediate"]; ; ; ; ToString = Object.prototype.toString; timer = typeof setImmediate !== "undefined" ? function timer(fn) { return setImmediate(fn); } : setTimeout; try { Object.defineProperty({}, "x", {}); builtInProp = function builtInProp(obj, name, val, config) { return Object.defineProperty(obj, name, { value: val, writable: true, configurable: config !== false }); }; } catch (err) { builtInProp = function builtInProp(obj, name, val) { obj[name] = val; return obj; }; } schedulingQueue = (function Queue() { var first; var last; var item; function Item(fn, self) { this.fn = fn; this.self = self; this.next = void 0; } return { add: function add(fn, self) { item = new Item(fn, self); if (last) last.next = item; else first = item; last = item; item = void 0; }, drain: function drain() { var f = first; first = last = cycle = void 0; while (f) { f.fn.call(f.self); f = f.next; } } }; })(); PromisePrototype = builtInProp({}, "constructor", NpoPromise, false); NpoPromise.prototype = PromisePrototype; builtInProp(PromisePrototype, "__NPO__", 0, false); builtInProp(NpoPromise, "resolve", function Promise$resolve(msg) { var Constructor = this; if (msg && typeof msg === "object" && msg["__NPO__"] === 1) return msg; return new Constructor(function executor(resolve, reject) { if (typeof resolve !== "function" || typeof reject !== "function") throw TypeError("Not a function"); resolve(msg); }); }); builtInProp(NpoPromise, "reject", function Promise$reject(msg) { return new this(function executor(resolve, reject) { if (typeof resolve !== "function" || typeof reject !== "function") throw TypeError("Not a function"); reject(msg); }); }); builtInProp(NpoPromise, "all", function Promise$all(arr) { var Constructor = this; if (ToString.call(arr) !== "[object Array]") return Constructor.reject(TypeError("Not an array")); if (arr.length === 0) return Constructor.resolve([]); return new Constructor(function executor(resolve, reject) { if (typeof resolve !== "function" || typeof reject !== "function") throw TypeError("Not a function"); var len = arr.length; var msgs = Array(len); var count = 0; iteratePromises(Constructor, arr, function resolver(idx, msg) { msgs[idx] = msg; if (++count === len) resolve(msgs); }, reject); }); }); builtInProp(NpoPromise, "race", function Promise$race(arr) { var Constructor = this; if (ToString.call(arr) !== "[object Array]") return Constructor.reject(TypeError("Not an array")); return new Constructor(function executor(resolve, reject) { if (typeof resolve !== "function" || typeof reject !== "function") throw TypeError("Not a function"); iteratePromises(Constructor, arr, function resolver(idx, msg) { resolve(msg); }, reject); }); }); ; if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1) PromisePolyfill = Promise; else PromisePolyfill = NpoPromise; Config = { DEBUG: false, LIB_VERSION: "2.71.1" }; MAX_RECORDING_MS = 1440 * 60 * 1e3; MAX_VALUE_FOR_MIN_RECORDING_MS = 8 * 1e3; ArrayProto = Array.prototype; FuncProto = Function.prototype; ObjProto = Object.prototype; slice = ArrayProto.slice; toString = ObjProto.toString; hasOwnProperty = ObjProto.hasOwnProperty; windowConsole = win.console; navigator$1 = win.navigator; document$1 = win.document; windowOpera = win.opera; screen = win.screen; userAgent = navigator$1.userAgent; nativeBind = FuncProto.bind; nativeForEach = ArrayProto.forEach; nativeIndexOf = ArrayProto.indexOf; nativeMap = ArrayProto.map; nativeIsArray = Array.isArray; breaker = {}; _ = { trim: function(str) { return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); } }; console$1 = { /** @type {function(...*)} */ log: function() { if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) try { windowConsole.log.apply(windowConsole, arguments); } catch (err) { _.each(arguments, function(arg) { windowConsole.log(arg); }); } }, /** @type {function(...*)} */ warn: function() { if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) { var args = ["Mixpanel warning:"].concat(_.toArray(arguments)); try { windowConsole.warn.apply(windowConsole, args); } catch (err) { _.each(args, function(arg) { windowConsole.warn(arg); }); } } }, /** @type {function(...*)} */ error: function() { if (Config.DEBUG && !_.isUndefined(windowConsole) && windowConsole) { var args = ["Mixpanel error:"].concat(_.toArray(arguments)); try { windowConsole.error.apply(windowConsole, args); } catch (err) { _.each(args, function(arg) { windowConsole.error(arg); }); } } }, /** @type {function(...*)} */ critical: function() { if (!_.isUndefined(windowConsole) && windowConsole) { var args = ["Mixpanel error:"].concat(_.toArray(arguments)); try { windowConsole.error.apply(windowConsole, args); } catch (err) { _.each(args, function(arg) { windowConsole.error(arg); }); } } } }; log_func_with_prefix = function(func, prefix) { return function() { arguments[0] = "[" + prefix + "] " + arguments[0]; return func.apply(console$1, arguments); }; }; console_with_prefix = function(prefix) { return { log: log_func_with_prefix(console$1.log, prefix), error: log_func_with_prefix(console$1.error, prefix), critical: log_func_with_prefix(console$1.critical, prefix) }; }; safewrap = function(f) { return function() { try { return f.apply(this, arguments); } catch (e) { console$1.critical("Implementation error. Please turn on debug and contact support@mixpanel.com."); if (Config.DEBUG) console$1.critical(e); } }; }; safewrapClass = function(klass) { var proto = klass.prototype; for (var func in proto) if (typeof proto[func] === "function") proto[func] = safewrap(proto[func]); }; _.bind = function(func, context) { var args; var bound; if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); if (!_.isFunction(func)) throw new TypeError(); args = slice.call(arguments, 2); bound = function() { if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); var ctor = {}; ctor.prototype = func.prototype; var self = new ctor(); ctor.prototype = null; var result = func.apply(self, args.concat(slice.call(arguments))); if (Object(result) === result) return result; return self; }; return bound; }; /** * @param {*=} obj * @param {function(...*)=} iterator * @param {Object=} context */ _.each = function(obj, iterator, context) { if (obj === null || obj === void 0) return; if (nativeForEach && obj.forEach === nativeForEach) obj.forEach(iterator, context); else if (obj.length === +obj.length) { for (var i = 0, l = obj.length; i < l; i++) if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return; } else for (var key in obj) if (hasOwnProperty.call(obj, key)) { if (iterator.call(context, obj[key], key, obj) === breaker) return; } }; _.extend = function(obj) { _.each(slice.call(arguments, 1), function(source) { for (var prop in source) if (source[prop] !== void 0) obj[prop] = source[prop]; }); return obj; }; _.isArray = nativeIsArray || function(obj) { return toString.call(obj) === "[object Array]"; }; _.isFunction = function(f) { try { return /^\s*\bfunction\b/.test(f); } catch (x) { return false; } }; _.isArguments = function(obj) { return !!(obj && hasOwnProperty.call(obj, "callee")); }; _.toArray = function(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); if (_.isArray(iterable)) return slice.call(iterable); if (_.isArguments(iterable)) return slice.call(iterable); return _.values(iterable); }; _.map = function(arr, callback, context) { if (nativeMap && arr.map === nativeMap) return arr.map(callback, context); else { var results = []; _.each(arr, function(item) { results.push(callback.call(context, item)); }); return results; } }; _.keys = function(obj) { var results = []; if (obj === null) return results; _.each(obj, function(value, key) { results[results.length] = key; }); return results; }; _.values = function(obj) { var results = []; if (obj === null) return results; _.each(obj, function(value) { results[results.length] = value; }); return results; }; _.include = function(obj, target) { var found = false; if (obj === null) return found; if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; _.each(obj, function(value) { if (found || (found = value === target)) return breaker; }); return found; }; _.includes = function(str, needle) { return str.indexOf(needle) !== -1; }; _.inherit = function(subclass, superclass) { subclass.prototype = new superclass(); subclass.prototype.constructor = subclass; subclass.superclass = superclass.prototype; return subclass; }; _.isObject = function(obj) { return obj === Object(obj) && !_.isArray(obj); }; _.isEmptyObject = function(obj) { if (_.isObject(obj)) { for (var key in obj) if (hasOwnProperty.call(obj, key)) return false; return true; } return false; }; _.isUndefined = function(obj) { return obj === void 0; }; _.isString = function(obj) { return toString.call(obj) == "[object String]"; }; _.isDate = function(obj) { return toString.call(obj) == "[object Date]"; }; _.isNumber = function(obj) { return toString.call(obj) == "[object Number]"; }; _.isElement = function(obj) { return !!(obj && obj.nodeType === 1); }; _.encodeDates = function(obj) { _.each(obj, function(v, k) { if (_.isDate(v)) obj[k] = _.formatDate(v); else if (_.isObject(v)) obj[k] = _.encodeDates(v); }); return obj; }; _.timestamp = function() { Date.now = Date.now || function() { return +/* @__PURE__ */ new Date(); }; return Date.now(); }; _.formatDate = function(d) { function pad(n) { return n < 10 ? "0" + n : n; } return d.getUTCFullYear() + "-" + pad(d.getUTCMonth() + 1) + "-" + pad(d.getUTCDate()) + "T" + pad(d.getUTCHours()) + ":" + pad(d.getUTCMinutes()) + ":" + pad(d.getUTCSeconds()); }; _.strip_empty_properties = function(p) { var ret = {}; _.each(p, function(v, k) { if (_.isString(v) && v.length > 0) ret[k] = v; }); return ret; }; _.truncate = function(obj, length) { var ret; if (typeof obj === "string") ret = obj.slice(0, length); else if (_.isArray(obj)) { ret = []; _.each(obj, function(val) { ret.push(_.truncate(val, length)); }); } else if (_.isObject(obj)) { ret = {}; _.each(obj, function(val, key) { ret[key] = _.truncate(val, length); }); } else ret = obj; return ret; }; _.JSONEncode = (function() { return function(mixed_val) { var value = mixed_val; var quote = function(string) { var escapable = /[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; var meta = { "\b": "\\b", " ": "\\t", "\n": "\\n", "\f": "\\f", "\r": "\\r", "\"": "\\\"", "\\": "\\\\" }; escapable.lastIndex = 0; return escapable.test(string) ? "\"" + string.replace(escapable, function(a) { var c = meta[a]; return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4); }) + "\"" : "\"" + string + "\""; }; var str = function(key, holder) { var gap = ""; var indent = " "; var i = 0; var k = ""; var v = ""; var length = 0; var mind = gap; var partial = []; var value = holder[key]; if (value && typeof value === "object" && typeof value.toJSON === "function") value = value.toJSON(key); switch (typeof value) { case "string": return quote(value); case "number": return isFinite(value) ? String(value) : "null"; case "boolean": case "null": return String(value); case "object": if (!value) return "null"; gap += indent; partial = []; if (toString.apply(value) === "[object Array]") { length = value.length; for (i = 0; i < length; i += 1) partial[i] = str(i, value) || "null"; v = partial.length === 0 ? "[]" : gap ? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]" : "[" + partial.join(",") + "]"; gap = mind; return v; } for (k in value) if (hasOwnProperty.call(value, k)) { v = str(k, value); if (v) partial.push(quote(k) + (gap ? ": " : ":") + v); } v = partial.length === 0 ? "{}" : gap ? "{" + partial.join(",") + mind + "}" : "{" + partial.join(",") + "}"; gap = mind; return v; } }; return str("", { "": value }); }; })(); /** * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js * Slightly modified to throw a real Error rather than a POJO */ _.JSONDecode = (function() { var at; var ch; var escapee = { "\"": "\"", "\\": "\\", "/": "/", "b": "\b", "f": "\f", "n": "\n", "r": "\r", "t": " " }; var text; var error = function(m) { var e = new SyntaxError(m); e.at = at; e.text = text; throw e; }; var next = function(c) { if (c && c !== ch) error("Expected '" + c + "' instead of '" + ch + "'"); ch = text.charAt(at); at += 1; return ch; }; var number = function() { var number; var string = ""; if (ch === "-") { string = "-"; next("-"); } while (ch >= "0" && ch <= "9") { string += ch; next(); } if (ch === ".") { string += "."; while (next() && ch >= "0" && ch <= "9") string += ch; } if (ch === "e" || ch === "E") { string += ch; next(); if (ch === "-" || ch === "+") { string += ch; next(); } while (ch >= "0" && ch <= "9") { string += ch; next(); } } number = +string; if (!isFinite(number)) error("Bad number"); else return number; }; var string = function() { var hex; var i; var string = ""; var uffff; if (ch === "\"") while (next()) { if (ch === "\"") { next(); return string; } if (ch === "\\") { next(); if (ch === "u") { uffff = 0; for (i = 0; i < 4; i += 1) { hex = parseInt(next(), 16); if (!isFinite(hex)) break; uffff = uffff * 16 + hex; } string += String.fromCharCode(uffff); } else if (typeof escapee[ch] === "string") string += escapee[ch]; else break; } else string += ch; } error("Bad string"); }; var white = function() { while (ch && ch <= " ") next(); }; var word = function() { switch (ch) { case "t": next("t"); next("r"); next("u"); next("e"); return true; case "f": next("f"); next("a"); next("l"); next("s"); next("e"); return false; case "n": next("n"); next("u"); next("l"); next("l"); return null; } error("Unexpected \"" + ch + "\""); }; var value; var array = function() { var array = []; if (ch === "[") { next("["); white(); if (ch === "]") { next("]"); return array; } while (ch) { array.push(value()); white(); if (ch === "]") { next("]"); return array; } next(","); white(); } } error("Bad array"); }; var object = function() { var key; var object = {}; if (ch === "{") { next("{"); white(); if (ch === "}") { next("}"); return object; } while (ch) { key = string(); white(); next(":"); if (Object.hasOwnProperty.call(object, key)) error("Duplicate key \"" + key + "\""); object[key] = value(); white(); if (ch === "}") { next("}"); return object; } next(","); white(); } } error("Bad object"); }; value = function() { white(); switch (ch) { case "{": return object(); case "[": return array(); case "\"": return string(); case "-": return number(); default: return ch >= "0" && ch <= "9" ? number() : word(); } }; return function(source) { var result; text = source; at = 0; ch = " "; result = value(); white(); if (ch) error("Syntax error"); return result; }; })(); _.base64Encode = function(data) { var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1; var o2; var o3; var h1; var h2; var h3; var h4; var bits; var i = 0; var ac = 0; var enc = ""; var tmp_arr = []; if (!data) return data; data = _.utf8Encode(data); do { o1 = data.charCodeAt(i++); o2 = data.charCodeAt(i++); o3 = data.charCodeAt(i++); bits = o1 << 16 | o2 << 8 | o3; h1 = bits >> 18 & 63; h2 = bits >> 12 & 63; h3 = bits >> 6 & 63; h4 = bits & 63; tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); } while (i < data.length); enc = tmp_arr.join(""); switch (data.length % 3) { case 1: enc = enc.slice(0, -2) + "=="; break; case 2: enc = enc.slice(0, -1) + "="; break; } return enc; }; _.utf8Encode = function(string) { string = (string + "").replace(/\r\n/g, "\n").replace(/\r/g, "\n"); var utftext = ""; var start; var end; var stringl = 0; var n; start = end = 0; stringl = string.length; for (n = 0; n < stringl; n++) { var c1 = string.charCodeAt(n); var enc = null; if (c1 < 128) end++; else if (c1 > 127 && c1 < 2048) enc = String.fromCharCode(c1 >> 6 | 192, c1 & 63 | 128); else enc = String.fromCharCode(c1 >> 12 | 224, c1 >> 6 & 63 | 128, c1 & 63 | 128); if (enc !== null) { if (end > start) utftext += string.substring(start, end); utftext += enc; start = end = n + 1; } } if (end > start) utftext += string.substring(start, string.length); return utftext; }; _.UUID = function() { try { return win["crypto"]["randomUUID"](); } catch (err) { var uuid = new Array(36); for (var i = 0; i < 36; i++) uuid[i] = Math.floor(Math.random() * 16); uuid[14] = 4; uuid[19] = uuid[19] &= -5; uuid[19] = uuid[19] |= 8; uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-"; return _.map(uuid, function(x) { return x.toString(16); }).join(""); } }; BLOCKED_UA_STRS = [ "ahrefsbot", "ahrefssiteaudit", "amazonbot", "baiduspider", "bingbot", "bingpreview", "chrome-lighthouse", "facebookexternal", "petalbot", "pinterest", "screaming frog", "yahoo! slurp", "yandex", "adsbot-google", "apis-google", "duplexweb-google", "feedfetcher-google", "google favicon", "google web preview", "google-read-aloud", "googlebot", "googleweblight", "mediapartners-google", "storebot-google" ]; _.isBlockedUA = function(ua) { var i; ua = ua.toLowerCase(); for (i = 0; i < BLOCKED_UA_STRS.length; i++) if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) return true; return false; }; /** * @param {Object=} formdata * @param {string=} arg_separator */ _.HTTPBuildQuery = function(formdata, arg_separator) { var use_val; var use_key; var tmp_arr = []; if (_.isUndefined(arg_separator)) arg_separator = "&"; _.each(formdata, function(val, key) { use_val = encodeURIComponent(val.toString()); use_key = encodeURIComponent(key); tmp_arr[tmp_arr.length] = use_key + "=" + use_val; }); return tmp_arr.join(arg_separator); }; _.getQueryParam = function(url, param) { param = param.replace(/[[]/g, "\\[").replace(/[\]]/g, "\\]"); var regexS = "[\\?&]" + param + "=([^&#]*)"; var results = new RegExp(regexS).exec(url); if (results === null || results && typeof results[1] !== "string" && results[1].length) return ""; else { var result = results[1]; try { result = decodeURIComponent(result); } catch (err) { console$1.error("Skipping decoding for malformed query param: " + result); } return result.replace(/\+/g, " "); } }; _.cookie = { get: function(name) { var nameEQ = name + "="; var ca = document$1.cookie.split(";"); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == " ") c = c.substring(1, c.length); if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); } return null; }, parse: function(name) { var cookie; try { cookie = _.JSONDecode(_.cookie.get(name)) || {}; } catch (err) {} return cookie; }, set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) { var cdomain = ""; var expires = ""; var secure = ""; if (domain_override) cdomain = "; domain=" + domain_override; else if (is_cross_subdomain) { var domain = extract_domain(document$1.location.hostname); cdomain = domain ? "; domain=." + domain : ""; } if (seconds) { var date = /* @__PURE__ */ new Date(); date.setTime(date.getTime() + seconds * 1e3); expires = "; expires=" + date.toGMTString(); } if (is_cross_site) { is_secure = true; secure = "; SameSite=None"; } if (is_secure) secure += "; secure"; document$1.cookie = name + "=" + encodeURIComponent(value) + expires + "; path=/" + cdomain + secure; }, set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) { var cdomain = ""; var expires = ""; var secure = ""; if (domain_override) cdomain = "; domain=" + domain_override; else if (is_cross_subdomain) { var domain = extract_domain(document$1.location.hostname); cdomain = domain ? "; domain=." + domain : ""; } if (days) { var date = /* @__PURE__ */ new Date(); date.setTime(date.getTime() + days * 24 * 60 * 60 * 1e3); expires = "; expires=" + date.toGMTString(); } if (is_cross_site) { is_secure = true; secure = "; SameSite=None"; } if (is_secure) secure += "; secure"; var new_cookie_val = name + "=" + encodeURIComponent(value) + expires + "; path=/" + cdomain + secure; document$1.cookie = new_cookie_val; return new_cookie_val; }, remove: function(name, is_cross_subdomain, domain_override) { _.cookie.set(name, "", -1, is_cross_subdomain, false, false, domain_override); } }; _testStorageSupported = function(storage) { var supported = true; try { var key = "__mplss_" + cheap_guid(8); var val = "xyz"; storage.setItem(key, val); if (storage.getItem(key) !== val) supported = false; storage.removeItem(key); } catch (err) { supported = false; } return supported; }; _localStorageSupported = null; localStorageSupported = function(storage, forceCheck) { if (_localStorageSupported !== null && !forceCheck) return _localStorageSupported; return _localStorageSupported = _testStorageSupported(storage || win.localStorage); }; _sessionStorageSupported = null; sessionStorageSupported = function(storage, forceCheck) { if (_sessionStorageSupported !== null && !forceCheck) return _sessionStorageSupported; return _sessionStorageSupported = _testStorageSupported(storage || win.sessionStorage); }; _.localStorage = _storageWrapper(win.localStorage, "localStorage", localStorageSupported); _.sessionStorage = _storageWrapper(win.sessionStorage, "sessionStorage", sessionStorageSupported); _.register_event = (function() { /** * @param {Object} element * @param {string} type * @param {function(...*)} handler * @param {boolean=} oldSchool * @param {boolean=} useCapture */ var register_event = function(element, type, handler, oldSchool, useCapture) { if (!element) { console$1.error("No valid element provided to register_event"); return; } if (element.addEventListener && !oldSchool) element.addEventListener(type, handler, !!useCapture); else { var ontype = "on" + type; var old_handler = element[ontype]; element[ontype] = makeHandler(element, handler, old_handler); } }; function makeHandler(element, new_handler, old_handlers) { var handler = function(event) { event = event || fixEvent(win.event); if (!event) return; var ret = true; var old_result; var new_result; if (_.isFunction(old_handlers)) old_result = old_handlers(event); new_result = new_handler.call(element, event); if (false === old_result || false === new_result) ret = false; return ret; }; return handler; } function fixEvent(event) { if (event) { event.preventDefault = fixEvent.preventDefault; event.stopPropagation = fixEvent.stopPropagation; } return event; } fixEvent.preventDefault = function() { this.returnValue = false; }; fixEvent.stopPropagation = function() { this.cancelBubble = true; }; return register_event; })(); TOKEN_MATCH_REGEX = /* @__PURE__ */ new RegExp("^(\\w*)\\[(\\w+)([=~\\|\\^\\$\\*]?)=?\"?([^\\]\"]*)\"?\\]$"); _.dom_query = (function() { function getAllChildren(e) { return e.all ? e.all : e.getElementsByTagName("*"); } var bad_whitespace = /[\t\r\n]/g; function hasClass(elem, selector) { var className = " " + selector + " "; return (" " + elem.className + " ").replace(bad_whitespace, " ").indexOf(className) >= 0; } function getElementsBySelector(selector) { if (!document$1.getElementsByTagName) return []; var tokens = selector.split(" "); var token; var bits; var tagName; var found; var foundCount; var i; var j; var k; var elements; var currentContextIndex; var currentContext = [document$1]; for (i = 0; i < tokens.length; i++) { token = tokens[i].replace(/^\s+/, "").replace(/\s+$/, ""); if (token.indexOf("#") > -1) { bits = token.split("#"); tagName = bits[0]; var id = bits[1]; var element = document$1.getElementById(id); if (!element || tagName && element.nodeName.toLowerCase() != tagName) return []; currentContext = [element]; continue; } if (token.indexOf(".") > -1) { bits = token.split("."); tagName = bits[0]; var className = bits[1]; if (!tagName) tagName = "*"; found = []; foundCount = 0; for (j = 0; j < currentContext.length; j++) { if (tagName == "*") elements = getAllChildren(currentContext[j]); else elements = currentContext[j].getElementsByTagName(tagName); for (k = 0; k < elements.length; k++) found[foundCount++] = elements[k]; } currentContext = []; currentContextIndex = 0; for (j = 0; j < found.length; j++) if (found[j].className && _.isString(found[j].className) && hasClass(found[j], className)) currentContext[currentContextIndex++] = found[j]; continue; } var token_match = token.match(TOKEN_MATCH_REGEX); if (token_match) { tagName = token_match[1]; var attrName = token_match[2]; var attrOperator = token_match[3]; var attrValue = token_match[4]; if (!tagName) tagName = "*"; found = []; foundCount = 0; for (j = 0; j < currentContext.length; j++) { if (tagName == "*") elements = getAllChildren(currentContext[j]); else elements = currentContext[j].getElementsByTagName(tagName); for (k = 0; k < elements.length; k++) found[foundCount++] = elements[k]; } currentContext = []; currentContextIndex = 0; var checkFunction; switch (attrOperator) { case "=": checkFunction = function(e) { return e.getAttribute(attrName) == attrValue; }; break; case "~": checkFunction = function(e) { return e.getAttribute(attrName).match(new RegExp("\\b" + attrValue + "\\b")); }; break; case "|": checkFunction = function(e) { return e.getAttribute(attrName).match(new RegExp("^" + attrValue + "-?")); }; break; case "^": checkFunction = function(e) { return e.getAttribute(attrName).indexOf(attrValue) === 0; }; break; case "$": checkFunction = function(e) { return e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length; }; break; case "*": checkFunction = function(e) { return e.getAttribute(attrName).indexOf(attrValue) > -1; }; break; default: checkFunction = function(e) { return e.getAttribute(attrName); }; } currentContext = []; currentContextIndex = 0; for (j = 0; j < found.length; j++) if (checkFunction(found[j])) currentContext[currentContextIndex++] = found[j]; continue; } tagName = token; found = []; foundCount = 0; for (j = 0; j < currentContext.length; j++) { elements = currentContext[j].getElementsByTagName(tagName); for (k = 0; k < elements.length; k++) found[foundCount++] = elements[k]; } currentContext = found; } return currentContext; } return function(query) { if (_.isElement(query)) return [query]; else if (_.isObject(query) && !_.isUndefined(query.length)) return query; else return getElementsBySelector.call(this, query); }; })(); CAMPAIGN_KEYWORDS = [ "utm_source", "utm_medium", "utm_campaign", "utm_content", "utm_term", "utm_id", "utm_source_platform", "utm_campaign_id", "utm_creative_format", "utm_marketing_tactic" ]; CLICK_IDS = [ "dclid", "fbclid", "gclid", "ko_click_id", "li_fat_id", "msclkid", "sccid", "ttclid", "twclid", "wbraid" ]; _.info = { campaignParams: function(default_value) { var kw = ""; var params = {}; _.each(CAMPAIGN_KEYWORDS, function(kwkey) { kw = _.getQueryParam(document$1.URL, kwkey); if (kw.length) params[kwkey] = kw; else if (default_value !== void 0) params[kwkey] = default_value; }); return params; }, clickParams: function() { var id = ""; var params = {}; _.each(CLICK_IDS, function(idkey) { id = _.getQueryParam(document$1.URL, idkey); if (id.length) params[idkey] = id; }); return params; }, marketingParams: function() { return _.extend(_.info.campaignParams(), _.info.clickParams()); }, searchEngine: function(referrer) { if (referrer.search("https?://(.*)google.([^/?]*)") === 0) return "google"; else if (referrer.search("https?://(.*)bing.com") === 0) return "bing"; else if (referrer.search("https?://(.*)yahoo.com") === 0) return "yahoo"; else if (referrer.search("https?://(.*)duckduckgo.com") === 0) return "duckduckgo"; else return null; }, searchInfo: function(referrer) { var search = _.info.searchEngine(referrer); var param = search != "yahoo" ? "q" : "p"; var ret = {}; if (search !== null) { ret["$search_engine"] = search; var keyword = _.getQueryParam(referrer, param); if (keyword.length) ret["mp_keyword"] = keyword; } return ret; }, /** * This function detects which browser is running this script. * The order of the checks are important since many user agents * include key words used in later checks. */ browser: function(user_agent, vendor, opera) { vendor = vendor || ""; if (opera || _.includes(user_agent, " OPR/")) { if (_.includes(user_agent, "Mini")) return "Opera Mini"; return "Opera"; } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) return "BlackBerry"; else if (_.includes(user_agent, "IEMobile") || _.includes(user_agent, "WPDesktop")) return "Internet Explorer Mobile"; else if (_.includes(user_agent, "SamsungBrowser/")) return "Samsung Internet"; else if (_.includes(user_agent, "Edge") || _.includes(user_agent, "Edg/")) return "Microsoft Edge"; else if (_.includes(user_agent, "FBIOS")) return "Facebook Mobile"; else if (_.includes(user_agent, "Whale/")) return "Whale Browser"; else if (_.includes(user_agent, "Chrome")) return "Chrome"; else if (_.includes(user_agent, "CriOS")) return "Chrome iOS"; else if (_.includes(user_agent, "UCWEB") || _.includes(user_agent, "UCBrowser")) return "UC Browser"; else if (_.includes(user_agent, "FxiOS")) return "Firefox iOS"; else if (_.includes(vendor, "Apple")) { if (_.includes(user_agent, "Mobile")) return "Mobile Safari"; return "Safari"; } else if (_.includes(user_agent, "Android")) return "Android Mobile"; else if (_.includes(user_agent, "Konqueror")) return "Konqueror"; else if (_.includes(user_agent, "Firefox")) return "Firefox"; else if (_.includes(user_agent, "MSIE") || _.includes(user_agent, "Trident/")) return "Internet Explorer"; else if (_.includes(user_agent, "Gecko")) return "Mozilla"; else return ""; }, /** * This function detects which browser version is running this script, * parsing major and minor version (e.g., 42.1). User agent strings from: * http://www.useragentstring.com/pages/useragentstring.php */ browserVersion: function(userAgent, vendor, opera) { var regex = { "Internet Explorer Mobile": /rv:(\d+(\.\d+)?)/, "Microsoft Edge": /Edge?\/(\d+(\.\d+)?)/, "Chrome": /Chrome\/(\d+(\.\d+)?)/, "Chrome iOS": /CriOS\/(\d+(\.\d+)?)/, "UC Browser": /(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/, "Safari": /Version\/(\d+(\.\d+)?)/, "Mobile Safari": /Version\/(\d+(\.\d+)?)/, "Opera": /(Opera|OPR)\/(\d+(\.\d+)?)/, "Firefox": /Firefox\/(\d+(\.\d+)?)/, "Firefox iOS": /FxiOS\/(\d+(\.\d+)?)/, "Konqueror": /Konqueror:(\d+(\.\d+)?)/, "BlackBerry": /BlackBerry (\d+(\.\d+)?)/, "Android Mobile": /android\s(\d+(\.\d+)?)/, "Samsung Internet": /SamsungBrowser\/(\d+(\.\d+)?)/, "Internet Explorer": /(rv:|MSIE )(\d+(\.\d+)?)/, "Mozilla": /rv:(\d+(\.\d+)?)/, "Whale Browser": /Whale\/(\d+(\.\d+)?)/ }[_.info.browser(userAgent, vendor, opera)]; if (regex === void 0) return null; var matches = userAgent.match(regex); if (!matches) return null; return parseFloat(matches[matches.length - 2]); }, os: function() { var a = userAgent; if (/Windows/i.test(a)) { if (/Phone/.test(a) || /WPDesktop/.test(a)) return "Windows Phone"; return "Windows"; } else if (/(iPhone|iPad|iPod)/.test(a)) return "iOS"; else if (/Android/.test(a)) return "Android"; else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) return "BlackBerry"; else if (/Mac/i.test(a)) return "Mac OS X"; else if (/Linux/.test(a)) return "Linux"; else if (/CrOS/.test(a)) return "Chrome OS"; else return ""; }, device: function(user_agent) { if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) return "Windows Phone"; else if (/iPad/.test(user_agent)) return "iPad"; else if (/iPod/.test(user_agent)) return "iPod Touch"; else if (/iPhone/.test(user_agent)) return "iPhone"; else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) return "BlackBerry"; else if (/Android/.test(user_agent)) return "Android"; else return ""; }, referringDomain: function(referrer) { var split = referrer.split("/"); if (split.length >= 3) return split[2]; return ""; }, currentUrl: function() { return win.location.href; }, properties: function(extra_props) { if (typeof extra_props !== "object") extra_props = {}; return _.extend(_.strip_empty_properties({ "$os": _.info.os(), "$browser": _.info.browser(userAgent, navigator$1.vendor, windowOpera), "$referrer": document$1.referrer, "$referring_domain": _.info.referringDomain(document$1.referrer), "$device": _.info.device(userAgent) }), { "$current_url": _.info.currentUrl(), "$browser_version": _.info.browserVersion(userAgent, navigator$1.vendor, windowOpera), "$screen_height": screen.height, "$screen_width": screen.width, "mp_lib": "web", "$lib_version": Config.LIB_VERSION, "$insert_id": cheap_guid(), "time": _.timestamp() / 1e3 }, _.strip_empty_properties(extra_props)); }, people_properties: function() { return _.extend(_.strip_empty_properties({ "$os": _.info.os(), "$browser": _.info.browser(userAgent, navigator$1.vendor, windowOpera) }), { "$browser_version": _.info.browserVersion(userAgent, navigator$1.vendor, windowOpera) }); }, mpPageViewProperties: function() { return _.strip_empty_properties({ "current_page_title": document$1.title, "current_domain": win.location.hostname, "current_url_path": win.location.pathname, "current_url_protocol": win.location.protocol, "current_url_search": win.location.search }); } }; batchedThrottle = function(fn, waitMs) { var timeoutPromise = null; var throttledItems = []; return function(item) { var self = this; throttledItems.push(item); if (!timeoutPromise) timeoutPromise = new PromisePolyfill(function(resolve) { setTimeout(function() { var returnValue = fn.apply(self, [throttledItems]); timeoutPromise = null; throttledItems = []; resolve(returnValue); }, waitMs); }); return timeoutPromise; }; }; cheap_guid = function(maxlen) { var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10); return maxlen ? guid.substring(0, maxlen) : guid; }; generateTraceparent = function() { var traceID = _.UUID().replace(/-/g, ""); var parentID = _.UUID().replace(/-/g, "").substring(0, 16); return "00-" + traceID + "-" + parentID + "-01"; }; SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\.[a-z]+$/i; DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i; extract_domain = function(hostname) { var domain_regex = DOMAIN_MATCH_REGEX; var parts = hostname.split("."); var tld = parts[parts.length - 1]; if (tld.length > 4 || tld === "com" || tld === "org") domain_regex = SIMPLE_DOMAIN_MATCH_REGEX; var matches = hostname.match(domain_regex); return matches ? matches[0] : ""; }; isOnline = function() { var onLine = win.navigator["onLine"]; return _.isUndefined(onLine) || onLine; }; NOOP_FUNC = function() {}; JSONStringify = null; JSONParse = null; if (typeof JSON !== "undefined") { JSONStringify = JSON.stringify; JSONParse = JSON.parse; } JSONStringify = JSONStringify || _.JSONEncode; JSONParse = JSONParse || _.JSONDecode; _["info"] = _.info; _["info"]["browser"] = _.info.browser; _["info"]["browserVersion"] = _.info.browserVersion; _["info"]["device"] = _.info.device; _["info"]["properties"] = _.info.properties; _["isBlockedUA"] = _.isBlockedUA; _["isEmptyObject"] = _.isEmptyObject; _["isObject"] = _.isObject; _["JSONDecode"] = _.JSONDecode; _["JSONEncode"] = _.JSONEncode; _["toArray"] = _.toArray; _["NPO"] = NpoPromise; MIXPANEL_DB_NAME = "mixpanelBrowserDb"; RECORDING_EVENTS_STORE_NAME = "mixpanelRecordingEvents"; RECORDING_REGISTRY_STORE_NAME = "mixpanelRecordingRegistry"; DB_VERSION = 1; OBJECT_STORES = [RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME]; IDBStorageWrapper = function(storeName) { /** * @type {Promise|null} */ this.dbPromise = null; this.storeName = storeName; }; IDBStorageWrapper.prototype._openDb = function() { return new PromisePolyfill(function(resolve, reject) { var openRequest = win.indexedDB.open(MIXPANEL_DB_NAME, DB_VERSION); openRequest["onerror"] = function() { reject(openRequest.error); }; openRequest["onsuccess"] = function() { resolve(openRequest.result); }; openRequest["onupgradeneeded"] = function(ev) { var db = ev.target.result; OBJECT_STORES.forEach(function(storeName) { db.createObjectStore(storeName); }); }; }); }; IDBStorageWrapper.prototype.init = function() { if (!win.indexedDB) return PromisePolyfill.reject("indexedDB is not supported in this browser"); if (!this.dbPromise) this.dbPromise = this._openDb(); return this.dbPromise.then(function(dbOrError) { if (dbOrError instanceof win["IDBDatabase"]) return PromisePolyfill.resolve(); else return PromisePolyfill.reject(dbOrError); }); }; IDBStorageWrapper.prototype.isInitialized = function() { return !!this.dbPromise; }; /** * @param {IDBTransactionMode} mode * @param {function(IDBObjectStore): void} storeCb */ IDBStorageWrapper.prototype.makeTransaction = function(mode, storeCb) { var storeName = this.storeName; var doTransaction = function(db) { return new PromisePolyfill(function(resolve, reject) { var transaction = db.transaction(storeName, mode); transaction.oncomplete = function() { resolve(transaction); }; transaction.onabort = transaction.onerror = function() { reject(transaction.error); }; storeCb(transaction.objectStore(storeName)); }); }; return this.dbPromise.then(doTransaction).catch(function(err) { if (err && err["name"] === "InvalidStateError") { this.dbPromise = this._openDb(); return this.dbPromise.then(doTransaction); } else return PromisePolyfill.reject(err); }.bind(this)); }; IDBStorageWrapper.prototype.setItem = function(key, value) { return this.makeTransaction("readwrite", function(objectStore) { objectStore.put(value, key); }); }; IDBStorageWrapper.prototype.getItem = function(key) { var req; return this.makeTransaction("readonly", function(objectStore) { req = objectStore.get(key); }).then(function() { return req.result; }); }; IDBStorageWrapper.prototype.removeItem = function(key) { return this.makeTransaction("readwrite", function(objectStore) { objectStore.delete(key); }); }; IDBStorageWrapper.prototype.getAll = function() { var req; return this.makeTransaction("readonly", function(objectStore) { req = objectStore.getAll(); }).then(function() { return req.result; }); }; GDPR_DEFAULT_PERSISTENCE_PREFIX = "__mp_opt_in_out_"; logger$6 = console_with_prefix("lock"); SharedLock = function(key, options) { options = options || {}; this.storageKey = key; this.storage = options.storage || win.localStorage; this.pollIntervalMS = options.pollIntervalMS || 100; this.timeoutMS = options.timeoutMS || 2e3; this.promiseImpl = options.promiseImpl || PromisePolyfill; }; SharedLock.prototype.withLock = function(lockedCB, pid) { var Promise = this.promiseImpl; return new Promise(_.bind(function(resolve, reject) { var i = pid || (/* @__PURE__ */ new Date()).getTime() + "|" + Math.random(); var startTime = (/* @__PURE__ */ new Date()).getTime(); var key = this.storageKey; var pollIntervalMS = this.pollIntervalMS; var timeoutMS = this.timeoutMS; var storage = this.storage; var keyX = key + ":X"; var keyY = key + ":Y"; var keyZ = key + ":Z"; var delay = function(cb) { if ((/* @__PURE__ */ new Date()).getTime() - startTime > timeoutMS) { logger$6.error("Timeout waiting for mutex on " + key + "; clearing lock. [" + i + "]"); storage.removeItem(keyZ); storage.removeItem(keyY); loop(); return; } setTimeout(function() { try { cb(); } catch (err) { reject(err); } }, pollIntervalMS * (Math.random() + .1)); }; var waitFor = function(predicate, cb) { if (predicate()) cb(); else delay(function() { waitFor(predicate, cb); }); }; var getSetY = function() { var valY = storage.getItem(keyY); if (valY && valY !== i) return false; else { storage.setItem(keyY, i); if (storage.getItem(keyY) === i) return true; else { if (!localStorageSupported(storage, true)) reject(/* @__PURE__ */ new Error("localStorage support dropped while acquiring lock")); return false; } } }; var loop = function() { storage.setItem(keyX, i); waitFor(getSetY, function() { if (storage.getItem(keyX) === i) { criticalSection(); return; } delay(function() { if (storage.getItem(keyY) !== i) { loop(); return; } waitFor(function() { return !storage.getItem(keyZ); }, criticalSection); }); }); }; var criticalSection = function() { storage.setItem(keyZ, "1"); var removeLock = function() { storage.removeItem(keyZ); if (storage.getItem(keyY) === i) storage.removeItem(keyY); if (storage.getItem(keyX) === i) storage.removeItem(keyX); }; lockedCB().then(function(ret) { removeLock(); resolve(ret); }).catch(function(err) { removeLock(); reject(err); }); }; try { if (localStorageSupported(storage, true)) loop(); else throw new Error("localStorage support check failed"); } catch (err) { reject(err); } }, this)); }; LocalStorageWrapper = function(storageOverride) { this.storage = storageOverride || win.localStorage; }; LocalStorageWrapper.prototype.init = function() { return PromisePolyfill.resolve(); }; LocalStorageWrapper.prototype.isInitialized = function() { return true; }; LocalStorageWrapper.prototype.setItem = function(key, value) { return new PromisePolyfill(_.bind(function(resolve, reject) { try { this.storage.setItem(key, JSONStringify(value)); } catch (e) { reject(e); } resolve(); }, this)); }; LocalStorageWrapper.prototype.getItem = function(key) { return new PromisePolyfill(_.bind(function(resolve, reject) { var item; try { item = JSONParse(this.storage.getItem(key)); } catch (e) { reject(e); } resolve(item); }, this)); }; LocalStorageWrapper.prototype.removeItem = function(key) { return new PromisePolyfill(_.bind(function(resolve, reject) { try { this.storage.removeItem(key); } catch (e) { reject(e); } resolve(); }, this)); }; logger$5 = console_with_prefix("batch"); RequestQueue = function(storageKey, options) { options = options || {}; this.storageKey = storageKey; this.usePersistence = options.usePersistence; if (this.usePersistence) { this.queueStorage = options.queueStorage || new LocalStorageWrapper(); this.lock = new SharedLock(storageKey, { storage: options.sharedLockStorage || win.localStorage, timeoutMS: options.sharedLockTimeoutMS }); } this.reportError = options.errorReporter || _.bind(logger$5.error, logger$5); this.pid = options.pid || null; this.memQueue = []; this.initialized = false; if (options.enqueueThrottleMs) this.enqueuePersisted = batchedThrottle(_.bind(this._enqueuePersisted, this), options.enqueueThrottleMs); else this.enqueuePersisted = _.bind(function(queueEntry) { return this._enqueuePersisted([queueEntry]); }, this); }; RequestQueue.prototype.ensureInit = function() { if (this.initialized || !this.usePersistence) return PromisePolyfill.resolve(); return this.queueStorage.init().then(_.bind(function() { this.initialized = true; }, this)).catch(_.bind(function(err) { this.reportError("Error initializing queue persistence. Disabling persistence", err); this.initialized = true; this.usePersistence = false; }, this)); }; /** * Add one item to queues (memory and localStorage). The queued entry includes * the given item along with an auto-generated ID and a "flush-after" timestamp. * It is expected that the item will be sent over the network and dequeued * before the flush-after time; if this doesn't happen it is considered orphaned * (e.g., the original tab where it was enqueued got closed before it could be * sent) and the item can be sent by any tab that finds it in localStorage. * * The final callback param is called with a param indicating success or * failure of the enqueue operation; it is asynchronous because the localStorage * lock is asynchronous. */ RequestQueue.prototype.enqueue = function(item, flushInterval) { var queueEntry = { "id": cheap_guid(), "flushAfter": (/* @__PURE__ */ new Date()).getTime() + flushInterval * 2, "payload": item }; if (!this.usePersistence) { this.memQueue.push(queueEntry); return PromisePolyfill.resolve(true); } else return this.enqueuePersisted(queueEntry); }; RequestQueue.prototype._enqueuePersisted = function(queueEntries) { var enqueueItem = _.bind(function() { return this.ensureInit().then(_.bind(function() { return this.readFromStorage(); }, this)).then(_.bind(function(storedQueue) { return this.saveToStorage(storedQueue.concat(queueEntries)); }, this)).then(_.bind(function(succeeded) { if (succeeded) this.memQueue = this.memQueue.concat(queueEntries); return succeeded; }, this)).catch(_.bind(function(err) { this.reportError("Error enqueueing items", err, queueEntries); return false; }, this)); }, this); return this.lock.withLock(enqueueItem, this.pid).catch(_.bind(function(err) { this.reportError("Error acquiring storage lock", err); return false; }, this)); }; /** * Read out the given number of queue entries. If this.memQueue * has fewer than batchSize items, then look for "orphaned" items * in the persisted queue (items where the 'flushAfter' time has * already passed). */ RequestQueue.prototype.fillBatch = function(batchSize) { var batch = this.memQueue.slice(0, batchSize); if (this.usePersistence && batch.length < batchSize) return this.ensureInit().then(_.bind(function() { return this.readFromStorage(); }, this)).then(_.bind(function(storedQueue) { if (storedQueue.length) { var idsInBatch = {}; _.each(batch, function(item) { idsInBatch[item["id"]] = true; }); for (var i = 0; i < storedQueue.length; i++) { var item = storedQueue[i]; if ((/* @__PURE__ */ new Date()).getTime() > item["flushAfter"] && !idsInBatch[item["id"]]) { item.orphaned = true; batch.push(item); if (batch.length >= batchSize) break; } } } return batch; }, this)); else return PromisePolyfill.resolve(batch); }; filterOutIDsAndInvalid = function(items, idSet) { var filteredItems = []; _.each(items, function(item) { if (item["id"] && !idSet[item["id"]]) filteredItems.push(item); }); return filteredItems; }; /** * Remove items with matching IDs from both in-memory queue * and persisted queue */ RequestQueue.prototype.removeItemsByID = function(ids) { var idSet = {}; _.each(ids, function(id) { idSet[id] = true; }); this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet); if (!this.usePersistence) return PromisePolyfill.resolve(true); else { var removeFromStorage = _.bind(function() { return this.ensureInit().then(_.bind(function() { return this.readFromStorage(); }, this)).then(_.bind(function(storedQueue) { storedQueue = filterOutIDsAndInvalid(storedQueue, idSet); return this.saveToStorage(storedQueue); }, this)).then(_.bind(function() { return this.readFromStorage(); }, this)).then(_.bind(function(storedQueue) { for (var i = 0; i < storedQueue.length; i++) { var item = storedQueue[i]; if (item["id"] && !!idSet[item["id"]]) throw new Error("Item not removed from storage"); } return true; }, this)).catch(_.bind(function(err) { this.reportError("Error removing items", err, ids); return false; }, this)); }, this); return this.lock.withLock(removeFromStorage, this.pid).catch(_.bind(function(err) { this.reportError("Error acquiring storage lock", err); if (!localStorageSupported(this.lock.storage, true)) return removeFromStorage().then(_.bind(function(success) { if (!success) return this.queueStorage.removeItem(this.storageKey).then(function() { return success; }); return success; }, this)).catch(_.bind(function(err) { this.reportError("Error clearing queue", err); return false; }, this)); else return false; }, this)); } }; updatePayloads = function(existingItems, itemsToUpdate) { var newItems = []; _.each(existingItems, function(item) { var id = item["id"]; if (id in itemsToUpdate) { var newPayload = itemsToUpdate[id]; if (newPayload !== null) { item["payload"] = newPayload; newItems.push(item); } } else newItems.push(item); }); return newItems; }; /** * Update payloads of given items in both in-memory queue and * persisted queue. Items set to null are removed from queues. */ RequestQueue.prototype.updatePayloads = function(itemsToUpdate) { this.memQueue = updatePayloads(this.memQueue, itemsToUpdate); if (!this.usePersistence) return PromisePolyfill.resolve(true); else return this.lock.withLock(_.bind(function lockAcquired() { return this.ensureInit().then(_.bind(function() { return this.readFromStorage(); }, this)).then(_.bind(function(storedQueue) { storedQueue = updatePayloads(storedQueue, itemsToUpdate); return this.saveToStorage(storedQueue); }, this)).catch(_.bind(function(err) { this.reportError("Error updating items", itemsToUpdate, err); return false; }, this)); }, this), this.pid).catch(_.bind(function(err) { this.reportError("Error acquiring storage lock", err); return false; }, this)); }; /** * Read and parse items array from localStorage entry, handling * malformed/missing data if necessary. */ RequestQueue.prototype.readFromStorage = function() { return this.ensureInit().then(_.bind(function() { return this.queueStorage.getItem(this.storageKey); }, this)).then(_.bind(function(storageEntry) { if (storageEntry) { if (!_.isArray(storageEntry)) { this.reportError("Invalid storage entry:", storageEntry); storageEntry = null; } } return storageEntry || []; }, this)).catch(_.bind(function(err) { this.reportError("Error retrieving queue", err); return []; }, this)); }; /** * Serialize the given items array to localStorage. */ RequestQueue.prototype.saveToStorage = function(queue) { return this.ensureInit().then(_.bind(function() { return this.queueStorage.setItem(this.storageKey, queue); }, this)).then(function() { return true; }).catch(_.bind(function(err) { this.reportError("Error saving queue", err); return false; }, this)); }; /** * Clear out queues (memory and localStorage). */ RequestQueue.prototype.clear = function() { this.memQueue = []; if (this.usePersistence) return this.ensureInit().then(_.bind(function() { return this.queueStorage.removeItem(this.storageKey); }, this)); else return PromisePolyfill.resolve(); }; MAX_RETRY_INTERVAL_MS = 600 * 1e3; logger$4 = console_with_prefix("batch"); RequestBatcher = function(storageKey, options) { this.errorReporter = options.errorReporter; this.queue = new RequestQueue(storageKey, { errorReporter: _.bind(this.reportError, this), queueStorage: options.queueStorage, sharedLockStorage: options.sharedLockStorage, sharedLockTimeoutMS: options.sharedLockTimeoutMS, usePersistence: options.usePersistence, enqueueThrottleMs: options.enqueueThrottleMs }); this.libConfig = options.libConfig; this.sendRequest = options.sendRequestFunc; this.beforeSendHook = options.beforeSendHook; this.stopAllBatching = options.stopAllBatchingFunc; this.batchSize = this.libConfig["batch_size"]; this.flushInterval = this.libConfig["batch_flush_interval_ms"]; this.stopped = !this.libConfig["batch_autostart"]; this.consecutiveRemovalFailures = 0; this.itemIdsSentSuccessfully = {}; this.flushOnlyOnInterval = options.flushOnlyOnInterval || false; this._flushPromise = null; }; /** * Add one item to queue. */ RequestBatcher.prototype.enqueue = function(item) { return this.queue.enqueue(item, this.flushInterval); }; /** * Start flushing batches at the configured time interval. Must call * this method upon SDK init in order to send anything over the network. */ RequestBatcher.prototype.start = function() { this.stopped = false; this.consecutiveRemovalFailures = 0; return this.flush(); }; /** * Stop flushing batches. Can be restarted by calling start(). */ RequestBatcher.prototype.stop = function() { this.stopped = true; if (this.timeoutID) { clearTimeout(this.timeoutID); this.timeoutID = null; } }; /** * Clear out queue. */ RequestBatcher.prototype.clear = function() { return this.queue.clear(); }; /** * Restore batch size configuration to whatever is set in the main SDK. */ RequestBatcher.prototype.resetBatchSize = function() { this.batchSize = this.libConfig["batch_size"]; }; /** * Restore flush interval time configuration to whatever is set in the main SDK. */ RequestBatcher.prototype.resetFlush = function() { this.scheduleFlush(this.libConfig["batch_flush_interval_ms"]); }; /** * Schedule the next flush in the given number of milliseconds. */ RequestBatcher.prototype.scheduleFlush = function(flushMS) { this.flushInterval = flushMS; if (!this.stopped) this.timeoutID = setTimeout(_.bind(function() { if (!this.stopped) this._flushPromise = this.flush(); }, this), this.flushInterval); }; /** * Send a request using the sendRequest callback, but promisified. * TODO: sendRequest should be promisified in the first place. */ RequestBatcher.prototype.sendRequestPromise = function(data, options) { return new PromisePolyfill(_.bind(function(resolve) { this.sendRequest(data, options, resolve); }, this)); }; /** * Flush one batch to network. Depending on success/failure modes, it will either * remove the batch from the queue or leave it in for retry, and schedule the next * flush. In cases of most network or API failures, it will back off exponentially * when retrying. * @param {Object} [options] * @param {boolean} [options.sendBeacon] - whether to send batch with * navigator.sendBeacon (only useful for sending batches before page unloads, as * sendBeacon offers no callbacks or status indications) */ RequestBatcher.prototype.flush = function(options) { if (this.requestInProgress) { logger$4.log("Flush: Request already in progress"); return PromisePolyfill.resolve(); } this.requestInProgress = true; options = options || {}; var timeoutMS = this.libConfig["batch_request_timeout_ms"]; var startTime = (/* @__PURE__ */ new Date()).getTime(); var currentBatchSize = this.batchSize; return this.queue.fillBatch(currentBatchSize).then(_.bind(function(batch) { var attemptSecondaryFlush = batch.length === currentBatchSize; var dataForRequest = []; var transformedItems = {}; _.each(batch, function(item) { var payload = item["payload"]; if (this.beforeSendHook && !item.orphaned) payload = this.beforeSendHook(payload); if (payload) { if (payload["event"] && payload["properties"]) payload["properties"] = _.extend({}, payload["properties"], { "mp_sent_by_lib_version": Config.LIB_VERSION }); var addPayload = true; var itemId = item["id"]; if (itemId) { if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) { this.reportError("[dupe] item ID sent too many times, not sending", { item, batchSize: batch.length, timesSent: this.itemIdsSentSuccessfully[itemId] }); addPayload = false; } } else this.reportError("[dupe] found item with no ID", { item }); if (addPayload) dataForRequest.push(payload); } transformedItems[item["id"]] = payload; }, this); if (dataForRequest.length < 1) { this.requestInProgress = false; this.resetFlush(); return PromisePolyfill.resolve(); } var removeItemsFromQueue = _.bind(function() { return this.queue.removeItemsByID(_.map(batch, function(item) { return item["id"]; })).then(_.bind(function(succeeded) { _.each(batch, _.bind(function(item) { var itemId = item["id"]; if (itemId) { this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0; this.itemIdsSentSuccessfully[itemId]++; if (this.itemIdsSentSuccessfully[itemId] > 5) this.reportError("[dupe] item ID sent too many times", { item, batchSize: batch.length, timesSent: this.itemIdsSentSuccessfully[itemId] }); } else this.reportError("[dupe] found item with no ID while removing", { item }); }, this)); if (succeeded) { this.consecutiveRemovalFailures = 0; if (this.flushOnlyOnInterval && !attemptSecondaryFlush) { this.resetFlush(); return PromisePolyfill.resolve(); } else return this.flush(); } else { if (++this.consecutiveRemovalFailures > 5) { this.reportError("Too many queue failures; disabling batching system."); this.stopAllBatching(); } else this.resetFlush(); return PromisePolyfill.resolve(); } }, this)); }, this); var batchSendCallback = _.bind(function(res) { this.requestInProgress = false; try { if (options.unloading) return this.queue.updatePayloads(transformedItems); else if (_.isObject(res) && res.error === "timeout" && (/* @__PURE__ */ new Date()).getTime() - startTime >= timeoutMS) { this.reportError("Network timeout; retrying"); return this.flush(); } else if (_.isObject(res) && (res.httpStatusCode >= 500 || res.httpStatusCode === 429 || res.httpStatusCode <= 0 && !isOnline() || res.error === "timeout")) { var retryMS = this.flushInterval * 2; if (res.retryAfter) retryMS = parseInt(res.retryAfter, 10) * 1e3 || retryMS; retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS); this.reportError("Error; retry in " + retryMS + " ms"); this.scheduleFlush(retryMS); return PromisePolyfill.resolve(); } else if (_.isObject(res) && res.httpStatusCode === 413) if (batch.length > 1) { var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2)); this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1); this.reportError("413 response; reducing batch size to " + this.batchSize); this.resetFlush(); return PromisePolyfill.resolve(); } else { this.reportError("Single-event request too large; dropping", batch); this.resetBatchSize(); return removeItemsFromQueue(); } else return removeItemsFromQueue(); } catch (err) { this.reportError("Error handling API response", err); this.resetFlush(); } }, this); var requestOptions = { method: "POST", verbose: true, ignore_json_errors: true, timeout_ms: timeoutMS }; if (options.unloading) requestOptions.transport = "sendBeacon"; logger$4.log("MIXPANEL REQUEST:", dataForRequest); return this.sendRequestPromise(dataForRequest, requestOptions).then(batchSendCallback); }, this)).catch(_.bind(function(err) { this.reportError("Error flushing request queue", err); this.resetFlush(); }, this)); }; /** * Log error to global logger and optional user-defined logger. */ RequestBatcher.prototype.reportError = function(msg, err) { logger$4.error.apply(logger$4.error, arguments); if (this.errorReporter) try { if (!(err instanceof Error)) err = new Error(msg); this.errorReporter(msg, err); } catch (err) { logger$4.error(err); } }; isRecordingExpired = function(serializedRecording) { var now = Date.now(); return !serializedRecording || now > serializedRecording["maxExpires"] || now > serializedRecording["idleExpires"]; }; RECORD_ENQUEUE_THROTTLE_MS = 250; logger$3 = console_with_prefix("recorder"); CompressionStream = win["CompressionStream"]; RECORDER_BATCHER_LIB_CONFIG = { "batch_size": 1e3, "batch_flush_interval_ms": 10 * 1e3, "batch_request_timeout_ms": 90 * 1e3, "batch_autostart": true }; ACTIVE_SOURCES = /* @__PURE__ */ new Set([ IncrementalSource.MouseMove, IncrementalSource.MouseInteraction, IncrementalSource.Scroll, IncrementalSource.ViewportResize, IncrementalSource.Input, IncrementalSource.TouchMove, IncrementalSource.MediaInteraction, IncrementalSource.Drag, IncrementalSource.Selection ]); SessionRecording = function(options) { this._mixpanel = options.mixpanelInstance; this._onIdleTimeout = options.onIdleTimeout || NOOP_FUNC; this._onMaxLengthReached = options.onMaxLengthReached || NOOP_FUNC; this._onBatchSent = options.onBatchSent || NOOP_FUNC; this._rrwebRecord = options.rrwebRecord || null; this._stopRecording = null; this.replayId = options.replayId; this.batchStartUrl = options.batchStartUrl || null; this.replayStartUrl = options.replayStartUrl || null; this.idleExpires = options.idleExpires || null; this.maxExpires = options.maxExpires || null; this.replayStartTime = options.replayStartTime || null; this.seqNo = options.seqNo || 0; this.idleTimeoutId = null; this.maxTimeoutId = null; this.recordMaxMs = MAX_RECORDING_MS; this.recordMinMs = 0; var usePersistence = localStorageSupported(options.sharedLockStorage, true) && !this.getConfig("disable_persistence"); this.batcherKey = "__mprec_" + this.getConfig("name") + "_" + this.getConfig("token") + "_" + this.replayId; this.queueStorage = new IDBStorageWrapper(RECORDING_EVENTS_STORE_NAME); this.batcher = new RequestBatcher(this.batcherKey, { errorReporter: this.reportError.bind(this), flushOnlyOnInterval: true, libConfig: RECORDER_BATCHER_LIB_CONFIG, sendRequestFunc: this.flushEventsWithOptOut.bind(this), queueStorage: this.queueStorage, sharedLockStorage: options.sharedLockStorage, usePersistence, stopAllBatchingFunc: this.stopRecording.bind(this), enqueueThrottleMs: RECORD_ENQUEUE_THROTTLE_MS, sharedLockTimeoutMS: 10 * 1e3 }); }; /** * @returns {UserIdInfo} */ SessionRecording.prototype.getUserIdInfo = function() { if (this.finalFlushUserIdInfo) return this.finalFlushUserIdInfo; var userIdInfo = { "distinct_id": String(this._mixpanel.get_distinct_id()) }; var deviceId = this._mixpanel.get_property("$device_id"); if (deviceId) userIdInfo["$device_id"] = deviceId; var userId = this._mixpanel.get_property("$user_id"); if (userId) userIdInfo["$user_id"] = userId; return userIdInfo; }; SessionRecording.prototype.unloadPersistedData = function() { this.batcher.stop(); return this.batcher.flush().then(function() { return this.queueStorage.removeItem(this.batcherKey); }.bind(this)); }; SessionRecording.prototype.getConfig = function(configVar) { return this._mixpanel.get_config(configVar); }; SessionRecording.prototype.get_config = function(configVar) { return this.getConfig(configVar); }; SessionRecording.prototype.startRecording = function(shouldStopBatcher) { if (this._rrwebRecord === null) { this.reportError("rrweb record function not provided. "); return; } if (this._stopRecording !== null) { logger$3.log("Recording already in progress, skipping startRecording."); return; } this.recordMaxMs = this.getConfig("record_max_ms"); if (this.recordMaxMs > MAX_RECORDING_MS) { this.recordMaxMs = MAX_RECORDING_MS; logger$3.critical("record_max_ms cannot be greater than " + MAX_RECORDING_MS + "ms. Capping value."); } if (!this.maxExpires) this.maxExpires = (/* @__PURE__ */ new Date()).getTime() + this.recordMaxMs; this.recordMinMs = this.getConfig("record_min_ms"); if (this.recordMinMs > MAX_VALUE_FOR_MIN_RECORDING_MS) { this.recordMinMs = MAX_VALUE_FOR_MIN_RECORDING_MS; logger$3.critical("record_min_ms cannot be greater than " + MAX_VALUE_FOR_MIN_RECORDING_MS + "ms. Capping value."); } if (!this.replayStartTime) { this.replayStartTime = (/* @__PURE__ */ new Date()).getTime(); this.batchStartUrl = _.info.currentUrl(); this.replayStartUrl = _.info.currentUrl(); } if (shouldStopBatcher || this.recordMinMs > 0) this.batcher.stop(); else this.batcher.start(); var resetIdleTimeout = function() { clearTimeout(this.idleTimeoutId); var idleTimeoutMs = this.getConfig("record_idle_timeout_ms"); this.idleTimeoutId = setTimeout(this._onIdleTimeout, idleTimeoutMs); this.idleExpires = (/* @__PURE__ */ new Date()).getTime() + idleTimeoutMs; }.bind(this); resetIdleTimeout(); var blockSelector = this.getConfig("record_block_selector"); if (blockSelector === "" || blockSelector === null) blockSelector = void 0; try { this._stopRecording = this._rrwebRecord({ "emit": function(ev) { if (this.idleExpires && this.idleExpires < ev.timestamp) { this._onIdleTimeout(); return; } if (isUserEvent(ev)) { if (this.batcher.stopped && (/* @__PURE__ */ new Date()).getTime() - this.replayStartTime >= this.recordMinMs) this.batcher.start(); resetIdleTimeout(); } this.__enqueuePromise = this.batcher.enqueue(ev); }.bind(this), "blockClass": this.getConfig("record_block_class"), "blockSelector": blockSelector, "collectFonts": this.getConfig("record_collect_fonts"), "dataURLOptions": { "type": "image/webp", "quality": .6 }, "maskAllInputs": true, "maskTextClass": this.getConfig("record_mask_text_class"), "maskTextSelector": this.getConfig("record_mask_text_selector"), "recordCanvas": this.getConfig("record_canvas"), "sampling": { "canvas": 15 } }); } catch (err) { this.reportError("Unexpected error when starting rrweb recording.", err); } if (typeof this._stopRecording !== "function") { this.reportError("rrweb failed to start, skipping this recording."); this._stopRecording = null; this.stopRecording(); return; } var maxTimeoutMs = this.maxExpires - (/* @__PURE__ */ new Date()).getTime(); this.maxTimeoutId = setTimeout(this._onMaxLengthReached.bind(this), maxTimeoutMs); }; SessionRecording.prototype.stopRecording = function(skipFlush) { this.finalFlushUserIdInfo = this.getUserIdInfo(); if (!this.isRrwebStopped()) { try { this._stopRecording(); } catch (err) { this.reportError("Error with rrweb stopRecording", err); } this._stopRecording = null; } var flushPromise; if (this.batcher.stopped) flushPromise = this.batcher.clear(); else if (!skipFlush) flushPromise = this.batcher.flush(); this.batcher.stop(); clearTimeout(this.idleTimeoutId); clearTimeout(this.maxTimeoutId); return flushPromise; }; SessionRecording.prototype.isRrwebStopped = function() { return this._stopRecording === null; }; /** * Flushes the current batch of events to the server, but passes an opt-out callback to make sure * we stop recording and dump any queued events if the user has opted out. */ SessionRecording.prototype.flushEventsWithOptOut = function(data, options, cb) { var onOptOut = function(code) { if (code === 0) { this.stopRecording(); cb({ error: "Tracking has been opted out, stopping recording." }); } }.bind(this); this._flushEvents(data, options, cb, onOptOut); }; /** * @returns {SerializedRecording} */ SessionRecording.prototype.serialize = function() { var tabId; try { tabId = this._mixpanel.get_tab_id(); } catch (e) { this.reportError("Error getting tab ID for serialization ", e); tabId = null; } return { "replayId": this.replayId, "seqNo": this.seqNo, "replayStartTime": this.replayStartTime, "batchStartUrl": this.batchStartUrl, "replayStartUrl": this.replayStartUrl, "idleExpires": this.idleExpires, "maxExpires": this.maxExpires, "tabId": tabId }; }; /** * @static * @param {SerializedRecording} serializedRecording * @param {SessionRecordingOptions} options * @returns {SessionRecording} */ SessionRecording.deserialize = function(serializedRecording, options) { return new SessionRecording(_.extend({}, options, { replayId: serializedRecording["replayId"], batchStartUrl: serializedRecording["batchStartUrl"], replayStartUrl: serializedRecording["replayStartUrl"], idleExpires: serializedRecording["idleExpires"], maxExpires: serializedRecording["maxExpires"], replayStartTime: serializedRecording["replayStartTime"], seqNo: serializedRecording["seqNo"], sharedLockStorage: options.sharedLockStorage })); }; SessionRecording.prototype._sendRequest = function(currentReplayId, reqParams, reqBody, callback) { var onSuccess = function(response, responseBody) { if (response.status === 200 && this.replayId === currentReplayId) { this.seqNo++; this.batchStartUrl = _.info.currentUrl(); } this._onBatchSent(); callback({ status: 0, httpStatusCode: response.status, responseBody, retryAfter: response.headers.get("Retry-After") }); }.bind(this); var apiHost = this._mixpanel.get_api_host && this._mixpanel.get_api_host("record") || this.getConfig("api_host"); win["fetch"](apiHost + "/" + this.getConfig("api_routes")["record"] + "?" + new URLSearchParams(reqParams), { "method": "POST", "headers": { "Authorization": "Basic " + btoa(this.getConfig("token") + ":"), "Content-Type": "application/octet-stream" }, "body": reqBody }).then(function(response) { response.json().then(function(responseBody) { onSuccess(response, responseBody); }).catch(function(error) { callback({ error }); }); }).catch(function(error) { callback({ error, httpStatusCode: 0 }); }); }; SessionRecording.prototype._flushEvents = addOptOutCheckMixpanelLib(function(data, options, callback) { var numEvents = data.length; if (numEvents > 0) { var replayId = this.replayId; var batchStartTime = Infinity; var batchEndTime = -Infinity; var hasFullSnapshot = false; for (var i = 0; i < numEvents; i++) { batchStartTime = Math.min(batchStartTime, data[i].timestamp); batchEndTime = Math.max(batchEndTime, data[i].timestamp); if (data[i].type === EventType.FullSnapshot) hasFullSnapshot = true; } if (this.seqNo === 0) { if (!hasFullSnapshot) { callback({ error: "First batch does not contain a full snapshot. Aborting recording." }); this.stopRecording(true); return; } this.replayStartTime = batchStartTime; } else if (!this.replayStartTime) { this.reportError("Replay start time not set but seqNo is not 0. Using current batch start time as a fallback."); this.replayStartTime = batchStartTime; } var replayLengthMs = batchEndTime - this.replayStartTime; var reqParams = { "$current_url": this.batchStartUrl, "$lib_version": Config.LIB_VERSION, "batch_start_time": batchStartTime / 1e3, "mp_lib": "web", "replay_id": replayId, "replay_length_ms": replayLengthMs, "replay_start_time": this.replayStartTime / 1e3, "replay_start_url": this.replayStartUrl, "seq": this.seqNo }; var eventsJson = JSON.stringify(data); Object.assign(reqParams, this.getUserIdInfo()); if (CompressionStream) { var gzipStream = new Blob([eventsJson], { type: "application/json" }).stream().pipeThrough(new CompressionStream("gzip")); new Response(gzipStream).blob().then(function(compressedBlob) { reqParams["format"] = "gzip"; this._sendRequest(replayId, reqParams, compressedBlob, callback); }.bind(this)); } else { reqParams["format"] = "body"; this._sendRequest(replayId, reqParams, eventsJson, callback); } } }); SessionRecording.prototype.reportError = function(msg, err) { logger$3.error.apply(logger$3.error, arguments); try { if (!err && !(msg instanceof Error)) msg = new Error(msg); this.getConfig("error_reporter")(msg, err); } catch (err) { logger$3.error(err); } }; RecordingRegistry = function(options) { /** @type {IDBStorageWrapper} */ this.idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME); this.errorReporter = options.errorReporter; this.mixpanelInstance = options.mixpanelInstance; this.sharedLockStorage = options.sharedLockStorage; }; RecordingRegistry.prototype.isPersistenceEnabled = function() { return !this.mixpanelInstance.get_config("disable_persistence"); }; RecordingRegistry.prototype.handleError = function(err) { this.errorReporter("IndexedDB error: ", err); }; /** * @param {import('./session-recording').SerializedRecording} serializedRecording */ RecordingRegistry.prototype.setActiveRecording = function(serializedRecording) { if (!this.isPersistenceEnabled()) return PromisePolyfill.resolve(); var tabId = serializedRecording["tabId"]; if (!tabId) { console.warn("No tab ID is set, cannot persist recording metadata."); return PromisePolyfill.resolve(); } return this.idb.init().then(function() { return this.idb.setItem(tabId, serializedRecording); }.bind(this)).catch(this.handleError.bind(this)); }; /** * @returns {Promise} */ RecordingRegistry.prototype.getActiveRecording = function() { if (!this.isPersistenceEnabled()) return PromisePolyfill.resolve(null); return this.idb.init().then(function() { return this.idb.getItem(this.mixpanelInstance.get_tab_id()); }.bind(this)).then(function(serializedRecording) { return isRecordingExpired(serializedRecording) ? null : serializedRecording; }.bind(this)).catch(this.handleError.bind(this)); }; RecordingRegistry.prototype.clearActiveRecording = function() { if (this.isPersistenceEnabled()) return this.markActiveRecordingExpired(); else return this.deleteActiveRecording(); }; RecordingRegistry.prototype.markActiveRecordingExpired = function() { return this.getActiveRecording().then(function(serializedRecording) { if (serializedRecording) { serializedRecording["maxExpires"] = 0; return this.setActiveRecording(serializedRecording); } }.bind(this)).catch(this.handleError.bind(this)); }; RecordingRegistry.prototype.deleteActiveRecording = function() { if (this.idb.isInitialized()) return this.idb.removeItem(this.mixpanelInstance.get_tab_id()).catch(this.handleError.bind(this)); else return PromisePolyfill.resolve(); }; /** * Flush any inactive recordings from the registry to minimize data loss. * The main idea here is that we can flush remaining rrweb events on the next page load if a tab is closed mid-batch. */ RecordingRegistry.prototype.flushInactiveRecordings = function() { if (!this.isPersistenceEnabled()) return PromisePolyfill.resolve([]); return this.idb.init().then(function() { return this.idb.getAll(); }.bind(this)).then(function(serializedRecordings) { var unloadPromises = serializedRecordings.filter(function(serializedRecording) { return isRecordingExpired(serializedRecording); }).map(function(serializedRecording) { return SessionRecording.deserialize(serializedRecording, { mixpanelInstance: this.mixpanelInstance, sharedLockStorage: this.sharedLockStorage }).unloadPersistedData().then(function() { return this.idb.removeItem(serializedRecording["tabId"]); }.bind(this)).catch(this.handleError.bind(this)); }.bind(this)); return PromisePolyfill.all(unloadPromises); }.bind(this)).catch(this.handleError.bind(this)); }; logger$2 = console_with_prefix("recorder"); MixpanelRecorder = function(mixpanelInstance, rrwebRecord, sharedLockStorage) { this.mixpanelInstance = mixpanelInstance; this.rrwebRecord = rrwebRecord || record; this.sharedLockStorage = sharedLockStorage; /** * @member {import('./registry').RecordingRegistry} */ this.recordingRegistry = new RecordingRegistry({ mixpanelInstance: this.mixpanelInstance, errorReporter: logger$2.error, sharedLockStorage }); this._flushInactivePromise = this.recordingRegistry.flushInactiveRecordings(); this.activeRecording = null; this.stopRecordingInProgress = false; }; MixpanelRecorder.prototype.startRecording = function(options) { options = options || {}; if (this.activeRecording && !this.activeRecording.isRrwebStopped()) { logger$2.log("Recording already in progress, skipping startRecording."); return; } var onIdleTimeout = function() { logger$2.log("Idle timeout reached, restarting recording."); this.resetRecording(); }.bind(this); var onMaxLengthReached = function() { logger$2.log("Max recording length reached, stopping recording."); this.resetRecording(); }.bind(this); var onBatchSent = function() { this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()); this["__flushPromise"] = this.activeRecording.batcher._flushPromise; }.bind(this); /** * @type {import('./session-recording').SessionRecordingOptions} */ var sessionRecordingOptions = { mixpanelInstance: this.mixpanelInstance, onBatchSent, onIdleTimeout, onMaxLengthReached, replayId: _.UUID(), rrwebRecord: this.rrwebRecord, sharedLockStorage: this.sharedLockStorage }; if (options.activeSerializedRecording) this.activeRecording = SessionRecording.deserialize(options.activeSerializedRecording, sessionRecordingOptions); else this.activeRecording = new SessionRecording(sessionRecordingOptions); this.activeRecording.startRecording(options.shouldStopBatcher); return this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()); }; MixpanelRecorder.prototype.stopRecording = function() { this.stopRecordingInProgress = true; return this._stopCurrentRecording(false, true).then(function() { return this.recordingRegistry.clearActiveRecording(); }.bind(this)).then(function() { this.stopRecordingInProgress = false; }.bind(this)); }; MixpanelRecorder.prototype.pauseRecording = function() { return this._stopCurrentRecording(false); }; MixpanelRecorder.prototype._stopCurrentRecording = function(skipFlush, disableActiveRecording) { if (this.activeRecording) { var stopRecordingPromise = this.activeRecording.stopRecording(skipFlush); if (disableActiveRecording) this.activeRecording = null; return stopRecordingPromise; } return PromisePolyfill.resolve(); }; MixpanelRecorder.prototype.resumeRecording = function(startNewIfInactive) { if (this.activeRecording && this.activeRecording.isRrwebStopped()) { this.activeRecording.startRecording(false); return PromisePolyfill.resolve(null); } return this.recordingRegistry.getActiveRecording().then(function(activeSerializedRecording) { if (activeSerializedRecording && !this.stopRecordingInProgress) return this.startRecording({ activeSerializedRecording }); else if (startNewIfInactive) return this.startRecording({ shouldStopBatcher: false }); else { logger$2.log("No resumable recording found."); return null; } }.bind(this)); }; MixpanelRecorder.prototype.resetRecording = function() { this.stopRecording(); this.startRecording({ shouldStopBatcher: true }); }; MixpanelRecorder.prototype.getActiveReplayId = function() { if (this.activeRecording && !this.activeRecording.isRrwebStopped()) return this.activeRecording.replayId; else return null; }; Object.defineProperty(MixpanelRecorder.prototype, "replayId", { get: function() { return this.getActiveReplayId(); } }); win["__mp_recorder"] = MixpanelRecorder; EV_CHANGE = "change"; EV_CLICK = "click"; EV_HASHCHANGE = "hashchange"; EV_INPUT = "input"; EV_LOAD = "load"; EV_MP_LOCATION_CHANGE = "mp_locationchange"; EV_POPSTATE = "popstate"; EV_SCROLLEND = "scrollend"; EV_SCROLL = "scroll"; EV_SELECT = "select"; EV_SUBMIT = "submit"; EV_TOGGLE = "toggle"; EV_VISIBILITYCHANGE = "visibilitychange"; CLICK_EVENT_PROPS = [ "clientX", "clientY", "offsetX", "offsetY", "pageX", "pageY", "screenX", "screenY", "x", "y" ]; OPT_IN_CLASSES = ["mp-include"]; OPT_OUT_CLASSES = ["mp-no-track"]; SENSITIVE_DATA_CLASSES = OPT_OUT_CLASSES.concat(["mp-sensitive"]); TRACKED_ATTRS = [ "aria-label", "aria-labelledby", "aria-describedby", "href", "name", "role", "title", "type" ]; INTERACTIVE_ARIA_ROLES = { "button": true, "checkbox": true, "combobox": true, "grid": true, "link": true, "listbox": true, "menu": true, "menubar": true, "menuitem": true, "menuitemcheckbox": true, "menuitemradio": true, "navigation": true, "option": true, "radio": true, "radiogroup": true, "searchbox": true, "slider": true, "spinbutton": true, "switch": true, "tab": true, "tablist": true, "textbox": true, "tree": true, "treegrid": true, "treeitem": true }; ALWAYS_NON_INTERACTIVE_TAGS = { "base": true, "head": true, "html": true, "link": true, "meta": true, "script": true, "style": true, "title": true, "br": true, "hr": true, "wbr": true, "noscript": true, "picture": true, "source": true, "template": true, "track": true }; TEXT_CONTAINER_TAGS = { "article": true, "div": true, "h1": true, "h2": true, "h3": true, "h4": true, "h5": true, "h6": true, "p": true, "section": true, "span": true }; EVENT_HANDLER_ATTRIBUTES = [ "onclick", "onmousedown", "onmouseup", "onpointerdown", "onpointerup", "ontouchend", "ontouchstart" ]; MAX_DEPTH = 5; logger$1 = console_with_prefix("autocapture"); DEFAULT_RAGE_CLICK_THRESHOLD_PX = 30; DEFAULT_RAGE_CLICK_TIMEOUT_MS = 1e3; DEFAULT_RAGE_CLICK_CLICK_COUNT = 4; RageClickTracker.prototype.isRageClick = function(x, y, options) { options = options || {}; var thresholdPx = options["threshold_px"] || DEFAULT_RAGE_CLICK_THRESHOLD_PX; var timeoutMs = options["timeout_ms"] || DEFAULT_RAGE_CLICK_TIMEOUT_MS; var clickCount = options["click_count"] || DEFAULT_RAGE_CLICK_CLICK_COUNT; var timestamp = Date.now(); var lastClick = this.clicks[this.clicks.length - 1]; if (lastClick && timestamp - lastClick.timestamp < timeoutMs && Math.sqrt(Math.pow(x - lastClick.x, 2) + Math.pow(y - lastClick.y, 2)) < thresholdPx) { this.clicks.push({ x, y, timestamp }); if (this.clicks.length >= clickCount) { this.clicks = []; return true; } } else this.clicks = [{ x, y, timestamp }]; return false; }; ShadowDOMObserver.prototype.getEventTarget = function(event) { if (!this.observedShadowRoots) return; var path = this.getComposedPath(event); if (path && path.length) return path[0]; return event["target"] || event["srcElement"]; }; ShadowDOMObserver.prototype.getComposedPath = function(event) { if ("composedPath" in event) return event["composedPath"](); return []; }; ShadowDOMObserver.prototype.observeFromEvent = function(event) { if (!this.observedShadowRoots) return; var path = this.getComposedPath(event); for (var i = 0; i < path.length; i++) { var element = path[i]; if (element && element.shadowRoot) this.observeShadowRoot(element.shadowRoot); } }; ShadowDOMObserver.prototype.observeShadowRoot = function(shadowRoot) { if (!this.observedShadowRoots || this.observedShadowRoots.has(shadowRoot)) return; var self = this; try { this.observedShadowRoots.add(shadowRoot); var observer = new window.MutationObserver(function() { self.changeCallback(); }); observer.observe(shadowRoot, this.observerConfig); this.shadowObservers.push(observer); } catch (e) { logger$1.critical("Error while observing shadow root", e); } }; ShadowDOMObserver.prototype.start = function() { if (this.observedShadowRoots) return; if (!weakSetSupported()) { logger$1.critical("Shadow DOM observation unavailable: WeakSet not supported"); return; } this.observedShadowRoots = /* @__PURE__ */ new WeakSet(); }; ShadowDOMObserver.prototype.stop = function() { if (!this.observedShadowRoots) return; for (var i = 0; i < this.shadowObservers.length; i++) try { this.shadowObservers[i].disconnect(); } catch (e) { logger$1.critical("Error while disconnecting shadow DOM observer", e); } this.shadowObservers = []; this.observedShadowRoots = null; }; DEFAULT_DEAD_CLICK_TIMEOUT_MS = 500; INTERACTION_EVENTS = [ EV_CHANGE, EV_INPUT, EV_SUBMIT, EV_SELECT, EV_TOGGLE ]; LAYOUT_EVENTS = [EV_SCROLLEND]; NAVIGATION_EVENTS = [EV_HASHCHANGE]; MUTATION_OBSERVER_CONFIG = { characterData: true, childList: true, subtree: true, attributes: true, attributeFilter: [ "style", "class", "hidden", "checked", "selected", "value", "display", "visibility" ] }; DeadClickTracker.prototype.addClick = function(event) { var element = this.shadowDOMObserver && this.shadowDOMObserver.getEventTarget(event); if (!element) element = event["target"] || event["srcElement"]; if (!element || isDefinitelyNonInteractive(element)) return false; if (this.shadowDOMObserver) this.shadowDOMObserver.observeFromEvent(event); this.pendingClicks.push({ element, event, timestamp: Date.now() }); return true; }; DeadClickTracker.prototype.trackClick = function(event, config) { if (!this.isTracking) return false; var added = this.addClick(event); if (added) this.triggerProcessing(config); return added; }; DeadClickTracker.prototype.getDeadClicks = function(config) { if (this.pendingClicks.length === 0) return []; var timeoutMs = config["timeout_ms"]; var now = Date.now(); var clicksToEvaluate = this.pendingClicks.slice(); this.pendingClicks = []; var deadClicks = []; for (var i = 0; i < clicksToEvaluate.length; i++) { var click = clicksToEvaluate[i]; if (now - click.timestamp >= timeoutMs) { if (!this.hasChangesAfter(click.timestamp)) deadClicks.push(click); } else this.pendingClicks.push(click); } return deadClicks; }; DeadClickTracker.prototype.hasChangesAfter = function(timestamp) { return this.lastChangeEventTimestamp >= timestamp - 100; }; DeadClickTracker.prototype.recordChangeEvent = function() { this.lastChangeEventTimestamp = Date.now(); }; DeadClickTracker.prototype.triggerProcessing = function(config) { if (this.processingActive) return; this.processingActive = true; this.processRecursively(config); }; DeadClickTracker.prototype.processRecursively = function(config) { if (!this.isTracking || !this.onDeadClickCallback) { this.processingActive = false; return; } var timeoutMs = config["timeout_ms"]; var self = this; this.processingTimeout = setTimeout(function() { if (!self.processingActive) return; var deadClicks = self.getDeadClicks(config); for (var i = 0; i < deadClicks.length; i++) self.onDeadClickCallback(deadClicks[i].event); if (self.pendingClicks.length > 0) self.processRecursively(config); else self.processingActive = false; }, timeoutMs); }; DeadClickTracker.prototype.startTracking = function() { if (this.isTracking) return; this.isTracking = true; var self = this; INTERACTION_EVENTS.forEach(function(event) { var handler = function() { self.recordChangeEvent(); }; document.addEventListener(event, handler, { capture: true, passive: true }); self.eventListeners.push({ target: document, event, handler, options: { capture: true, passive: true } }); }); NAVIGATION_EVENTS.forEach(function(event) { var handler = function() { self.recordChangeEvent(); }; window.addEventListener(event, handler); self.eventListeners.push({ target: window, event, handler }); }); LAYOUT_EVENTS.forEach(function(event) { var handler = function() { self.recordChangeEvent(); }; window.addEventListener(event, handler, { passive: true }); self.eventListeners.push({ target: window, event, handler, options: { passive: true } }); }); var selectionHandler = function() { self.recordChangeEvent(); }; document.addEventListener("selectionchange", selectionHandler); self.eventListeners.push({ target: document, event: "selectionchange", handler: selectionHandler }); if (window.MutationObserver) try { this.mutationObserver = new window.MutationObserver(function() { self.recordChangeEvent(); }); this.mutationObserver.observe(document.body || document.documentElement, MUTATION_OBSERVER_CONFIG); } catch (e) { logger$1.critical("Error while setting up mutation observer", e); } if (window.customElements) try { this.shadowDOMObserver = new ShadowDOMObserver(function() { self.recordChangeEvent(); }, MUTATION_OBSERVER_CONFIG); this.shadowDOMObserver.start(); } catch (e) { logger$1.critical("Error while setting up shadow DOM observer", e); this.shadowDOMObserver = null; } }; DeadClickTracker.prototype.stopTracking = function() { if (!this.isTracking) return; this.isTracking = false; this.pendingClicks = []; this.lastChangeEventTimestamp = 0; this.processingActive = false; if (this.processingTimeout) { clearTimeout(this.processingTimeout); this.processingTimeout = null; } for (var i = 0; i < this.eventListeners.length; i++) { var listener = this.eventListeners[i]; try { listener.target.removeEventListener(listener.event, listener.handler, listener.options); } catch (e) { logger$1.critical("Error while removing event listener", e); } } this.eventListeners = []; if (this.mutationObserver) { try { this.mutationObserver.disconnect(); } catch (e) { logger$1.critical("Error while disconnecting mutation observer", e); } this.mutationObserver = null; } if (this.shadowDOMObserver) { try { this.shadowDOMObserver.stop(); } catch (e) { logger$1.critical("Error while stopping shadow DOM observer", e); } this.shadowDOMObserver = null; } }; AUTOCAPTURE_CONFIG_KEY = "autocapture"; LEGACY_PAGEVIEW_CONFIG_KEY = "track_pageview"; PAGEVIEW_OPTION_FULL_URL = "full-url"; PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING = "url-with-path-and-query-string"; PAGEVIEW_OPTION_URL_WITH_PATH = "url-with-path"; CONFIG_ALLOW_ELEMENT_CALLBACK = "allow_element_callback"; CONFIG_ALLOW_SELECTORS = "allow_selectors"; CONFIG_ALLOW_URL_REGEXES = "allow_url_regexes"; CONFIG_BLOCK_ATTRS = "block_attrs"; CONFIG_BLOCK_ELEMENT_CALLBACK = "block_element_callback"; CONFIG_BLOCK_SELECTORS = "block_selectors"; CONFIG_BLOCK_URL_REGEXES = "block_url_regexes"; CONFIG_CAPTURE_EXTRA_ATTRS = "capture_extra_attrs"; CONFIG_CAPTURE_TEXT_CONTENT = "capture_text_content"; CONFIG_SCROLL_CAPTURE_ALL = "scroll_capture_all"; CONFIG_SCROLL_CHECKPOINTS = "scroll_depth_percent_checkpoints"; CONFIG_TRACK_CLICK = "click"; CONFIG_TRACK_DEAD_CLICK = "dead_click"; CONFIG_TRACK_INPUT = "input"; CONFIG_TRACK_PAGEVIEW = "pageview"; CONFIG_TRACK_RAGE_CLICK = "rage_click"; CONFIG_TRACK_SCROLL = "scroll"; CONFIG_TRACK_PAGE_LEAVE = "page_leave"; CONFIG_TRACK_SUBMIT = "submit"; CONFIG_DEFAULTS$1 = {}; CONFIG_DEFAULTS$1[CONFIG_ALLOW_SELECTORS] = []; CONFIG_DEFAULTS$1[CONFIG_ALLOW_URL_REGEXES] = []; CONFIG_DEFAULTS$1[CONFIG_BLOCK_ATTRS] = []; CONFIG_DEFAULTS$1[CONFIG_BLOCK_ELEMENT_CALLBACK] = null; CONFIG_DEFAULTS$1[CONFIG_BLOCK_SELECTORS] = []; CONFIG_DEFAULTS$1[CONFIG_BLOCK_URL_REGEXES] = []; CONFIG_DEFAULTS$1[CONFIG_CAPTURE_EXTRA_ATTRS] = []; CONFIG_DEFAULTS$1[CONFIG_CAPTURE_TEXT_CONTENT] = false; CONFIG_DEFAULTS$1[CONFIG_SCROLL_CAPTURE_ALL] = false; CONFIG_DEFAULTS$1[CONFIG_SCROLL_CHECKPOINTS] = [ 25, 50, 75, 100 ]; CONFIG_DEFAULTS$1[CONFIG_TRACK_CLICK] = true; CONFIG_DEFAULTS$1[CONFIG_TRACK_DEAD_CLICK] = true; CONFIG_DEFAULTS$1[CONFIG_TRACK_INPUT] = true; CONFIG_DEFAULTS$1[CONFIG_TRACK_PAGEVIEW] = PAGEVIEW_OPTION_FULL_URL; CONFIG_DEFAULTS$1[CONFIG_TRACK_RAGE_CLICK] = true; CONFIG_DEFAULTS$1[CONFIG_TRACK_SCROLL] = true; CONFIG_DEFAULTS$1[CONFIG_TRACK_PAGE_LEAVE] = false; CONFIG_DEFAULTS$1[CONFIG_TRACK_SUBMIT] = true; DEFAULT_PROPS = { "$mp_autocapture": true }; MP_EV_CLICK = "$mp_click"; MP_EV_DEAD_CLICK = "$mp_dead_click"; MP_EV_INPUT = "$mp_input_change"; MP_EV_RAGE_CLICK = "$mp_rage_click"; MP_EV_SCROLL = "$mp_scroll"; MP_EV_SUBMIT = "$mp_submit"; MP_EV_PAGE_LEAVE = "$mp_page_leave"; Autocapture = function(mp) { this.mp = mp; this.maxScrollViewDepth = 0; this.hasTrackedScrollSession = false; this.previousScrollHeight = 0; }; Autocapture.prototype.init = function() { if (!minDOMApisSupported()) { logger$1.critical("Autocapture unavailable: missing required DOM APIs"); return; } this.initPageListeners(); this.initPageviewTracking(); this.initClickTracking(); this.initDeadClickTracking(); this.initInputTracking(); this.initScrollTracking(); this.initSubmitTracking(); this.initRageClickTracking(); this.initPageLeaveTracking(); }; Autocapture.prototype.getFullConfig = function() { var autocaptureConfig = this.mp.get_config(AUTOCAPTURE_CONFIG_KEY); if (!autocaptureConfig) return {}; else if (_.isObject(autocaptureConfig)) return _.extend({}, CONFIG_DEFAULTS$1, autocaptureConfig); else return CONFIG_DEFAULTS$1; }; Autocapture.prototype.getConfig = function(key) { return this.getFullConfig()[key]; }; Autocapture.prototype.currentUrlBlocked = function() { var i; var currentUrl = _.info.currentUrl(); var allowUrlRegexes = this.getConfig(CONFIG_ALLOW_URL_REGEXES) || []; if (allowUrlRegexes.length) { var allowed = false; for (i = 0; i < allowUrlRegexes.length; i++) { var allowRegex = allowUrlRegexes[i]; try { if (currentUrl.match(allowRegex)) { allowed = true; break; } } catch (err) { logger$1.critical("Error while checking block URL regex: " + allowRegex, err); return true; } } if (!allowed) return true; } var blockUrlRegexes = this.getConfig(CONFIG_BLOCK_URL_REGEXES) || []; if (!blockUrlRegexes || !blockUrlRegexes.length) return false; for (i = 0; i < blockUrlRegexes.length; i++) try { if (currentUrl.match(blockUrlRegexes[i])) return true; } catch (err) { logger$1.critical("Error while checking block URL regex: " + blockUrlRegexes[i], err); return true; } return false; }; Autocapture.prototype.pageviewTrackingConfig = function() { if (this.mp.get_config(AUTOCAPTURE_CONFIG_KEY)) return this.getConfig(CONFIG_TRACK_PAGEVIEW); else return this.mp.get_config(LEGACY_PAGEVIEW_CONFIG_KEY); }; Autocapture.prototype.trackDomEvent = function(ev, mpEventName) { if (this.currentUrlBlocked()) return; var isCapturedForHeatMap = this.mp.is_recording_heatmap_data() && (mpEventName === MP_EV_CLICK && !this.getConfig(CONFIG_TRACK_CLICK) || mpEventName === MP_EV_RAGE_CLICK && !this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK) || mpEventName === MP_EV_DEAD_CLICK && !this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK)); var props = getPropsForDOMEvent(ev, { allowElementCallback: this.getConfig(CONFIG_ALLOW_ELEMENT_CALLBACK), allowSelectors: this.getConfig(CONFIG_ALLOW_SELECTORS), blockAttrs: this.getConfig(CONFIG_BLOCK_ATTRS), blockElementCallback: this.getConfig(CONFIG_BLOCK_ELEMENT_CALLBACK), blockSelectors: this.getConfig(CONFIG_BLOCK_SELECTORS), captureExtraAttrs: this.getConfig(CONFIG_CAPTURE_EXTRA_ATTRS), captureTextContent: this.getConfig(CONFIG_CAPTURE_TEXT_CONTENT), capturedForHeatMap: isCapturedForHeatMap }); if (props) { _.extend(props, DEFAULT_PROPS); this.mp.track(mpEventName, props); } }; Autocapture.prototype.initPageListeners = function() { win.removeEventListener(EV_POPSTATE, this.listenerPopstate); win.removeEventListener(EV_HASHCHANGE, this.listenerHashchange); if (!this.pageviewTrackingConfig() && !this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.get_config("record_heatmap_data")) return; this.listenerPopstate = function() { win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE)); }; this.listenerHashchange = function() { win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE)); }; win.addEventListener(EV_POPSTATE, this.listenerPopstate); win.addEventListener(EV_HASHCHANGE, this.listenerHashchange); var nativePushState = win.history.pushState; if (typeof nativePushState === "function") win.history.pushState = function(state, unused, url) { nativePushState.call(win.history, state, unused, url); win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE)); }; var nativeReplaceState = win.history.replaceState; if (typeof nativeReplaceState === "function") win.history.replaceState = function(state, unused, url) { nativeReplaceState.call(win.history, state, unused, url); win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE)); }; }; Autocapture.prototype._getClickTrackingConfig = function(configKey) { var config = this.getConfig(configKey); if (!config) return null; if (config === true) return {}; if (typeof config === "object") return config; return {}; }; Autocapture.prototype._trackPageLeave = function(ev, currentUrl, currentScrollHeight) { if (this.hasTrackedScrollSession) return; if (!this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.is_recording_heatmap_data()) return; this.hasTrackedScrollSession = true; var viewportHeight = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0); var scrollPercentage = Math.round(Math.max(this.maxScrollViewDepth - viewportHeight, 0) / (currentScrollHeight - viewportHeight) * 100); var foldLinePercentage = Math.round(viewportHeight / currentScrollHeight * 100); if (currentScrollHeight <= viewportHeight) { scrollPercentage = 100; foldLinePercentage = 100; } var props = _.extend({ "$max_scroll_view_depth": this.maxScrollViewDepth, "$max_scroll_percentage": scrollPercentage, "$fold_line_percentage": foldLinePercentage, "$scroll_height": currentScrollHeight, "$event_type": ev.type, "$current_url": currentUrl || _.info.currentUrl(), "$viewportHeight": viewportHeight, "$viewportWidth": Math.max(document$1.documentElement.clientWidth, win.innerWidth || 0), "$captured_for_heatmap": this.mp.is_recording_heatmap_data() }, DEFAULT_PROPS); this.mp.track(MP_EV_PAGE_LEAVE, props, { transport: "sendBeacon" }); }; Autocapture.prototype._initScrollDepthTracking = function() { win.removeEventListener(EV_SCROLL, this.listenerScrollDepth); win.removeEventListener(EV_SCROLLEND, this.listenerScrollDepth); if (!this.mp.get_config("record_heatmap_data")) return; logger$1.log("Initializing scroll depth tracking"); this.maxScrollViewDepth = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0); var scrollEndPolyfill = getPolyfillScrollEndFunction(function() { if (this.currentUrlBlocked()) return; var scrollViewHeight = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0) + win.scrollY; if (scrollViewHeight > this.maxScrollViewDepth) this.maxScrollViewDepth = scrollViewHeight; this.previousScrollHeight = document$1.body.scrollHeight; }.bind(this)); this.listenerScrollDepth = scrollEndPolyfill.listener; win.addEventListener(scrollEndPolyfill.eventType, this.listenerScrollDepth); }; Autocapture.prototype.initClickTracking = function() { win.removeEventListener(EV_CLICK, this.listenerClick); if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.get_config("record_heatmap_data")) return; logger$1.log("Initializing click tracking"); this.listenerClick = function(ev) { if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.is_recording_heatmap_data()) return; this.trackDomEvent(ev, MP_EV_CLICK); }.bind(this); win.addEventListener(EV_CLICK, this.listenerClick); }; Autocapture.prototype.initDeadClickTracking = function() { if (!this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK) && !this.mp.get_config("record_heatmap_data")) { this.stopDeadClickTracking(); return; } logger$1.log("Initializing dead click tracking"); if (!this._deadClickTracker) { this._deadClickTracker = new DeadClickTracker(function(deadClickEvent) { this.trackDomEvent(deadClickEvent, MP_EV_DEAD_CLICK); }.bind(this)); this._deadClickTracker.startTracking(); } if (!this.listenerDeadClick) { this.listenerDeadClick = function(ev) { var currentDeadClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK); if (!currentDeadClickConfig && !this.mp.is_recording_heatmap_data()) return; if (this.currentUrlBlocked()) return; var normalizedConfig = currentDeadClickConfig || {}; if (!normalizedConfig["timeout_ms"]) normalizedConfig["timeout_ms"] = DEFAULT_DEAD_CLICK_TIMEOUT_MS; this._deadClickTracker.trackClick(ev, normalizedConfig); }.bind(this); win.addEventListener(EV_CLICK, this.listenerDeadClick); } }; Autocapture.prototype.initInputTracking = function() { win.removeEventListener(EV_CHANGE, this.listenerChange); if (!this.getConfig(CONFIG_TRACK_INPUT)) return; logger$1.log("Initializing input tracking"); this.listenerChange = function(ev) { if (!this.getConfig(CONFIG_TRACK_INPUT)) return; this.trackDomEvent(ev, MP_EV_INPUT); }.bind(this); win.addEventListener(EV_CHANGE, this.listenerChange); }; Autocapture.prototype.initPageviewTracking = function() { win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange); if (!this.pageviewTrackingConfig()) return; logger$1.log("Initializing pageview tracking"); var previousTrackedUrl = ""; var tracked = false; if (!this.currentUrlBlocked()) tracked = this.mp.track_pageview(DEFAULT_PROPS); if (tracked) previousTrackedUrl = _.info.currentUrl(); this.listenerLocationchange = safewrap(function() { if (this.currentUrlBlocked()) return; var currentUrl = _.info.currentUrl(); var shouldTrack = false; var didPathChange = currentUrl.split("#")[0].split("?")[0] !== previousTrackedUrl.split("#")[0].split("?")[0]; var trackPageviewOption = this.pageviewTrackingConfig(); if (trackPageviewOption === PAGEVIEW_OPTION_FULL_URL) shouldTrack = currentUrl !== previousTrackedUrl; else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING) shouldTrack = currentUrl.split("#")[0] !== previousTrackedUrl.split("#")[0]; else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH) shouldTrack = didPathChange; if (shouldTrack) { if (this.mp.track_pageview(DEFAULT_PROPS)) previousTrackedUrl = currentUrl; if (didPathChange) { this.lastScrollCheckpoint = 0; logger$1.log("Path change: re-initializing scroll depth checkpoints"); } } }.bind(this)); win.addEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange); }; Autocapture.prototype.initRageClickTracking = function() { win.removeEventListener(EV_CLICK, this.listenerRageClick); if (!this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK) && !this.mp.get_config("record_heatmap_data")) return; logger$1.log("Initializing rage click tracking"); if (!this._rageClickTracker) this._rageClickTracker = new RageClickTracker(); this.listenerRageClick = function(ev) { var currentRageClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK); if (!currentRageClickConfig && !this.mp.is_recording_heatmap_data()) return; if (this.currentUrlBlocked()) return; if (this._rageClickTracker.isRageClick(ev["pageX"], ev["pageY"], currentRageClickConfig)) this.trackDomEvent(ev, MP_EV_RAGE_CLICK); }.bind(this); win.addEventListener(EV_CLICK, this.listenerRageClick); }; Autocapture.prototype.initScrollTracking = function() { win.removeEventListener(EV_SCROLLEND, this.listenerScroll); win.removeEventListener(EV_SCROLL, this.listenerScroll); if (!this.getConfig(CONFIG_TRACK_SCROLL)) return; logger$1.log("Initializing scroll tracking"); this.lastScrollCheckpoint = 0; var scrollEndPolyfill = getPolyfillScrollEndFunction(function() { if (!this.getConfig(CONFIG_TRACK_SCROLL)) return; if (this.currentUrlBlocked()) return; var shouldTrack = this.getConfig(CONFIG_SCROLL_CAPTURE_ALL); var scrollCheckpoints = (this.getConfig(CONFIG_SCROLL_CHECKPOINTS) || []).slice().sort(function(a, b) { return a - b; }); var scrollTop = win.scrollY; var props = _.extend({ "$scroll_top": scrollTop }, DEFAULT_PROPS); try { var scrollHeight = document$1.body.scrollHeight; var scrollPercentage = Math.round(scrollTop / (scrollHeight - win.innerHeight) * 100); props["$scroll_height"] = scrollHeight; props["$scroll_percentage"] = scrollPercentage; if (scrollPercentage > this.lastScrollCheckpoint) for (var i = 0; i < scrollCheckpoints.length; i++) { var checkpoint = scrollCheckpoints[i]; if (scrollPercentage >= checkpoint && this.lastScrollCheckpoint < checkpoint) { props["$scroll_checkpoint"] = checkpoint; this.lastScrollCheckpoint = checkpoint; shouldTrack = true; } } } catch (err) { logger$1.critical("Error while calculating scroll percentage", err); } if (shouldTrack) this.mp.track(MP_EV_SCROLL, props); }.bind(this)); this.listenerScroll = scrollEndPolyfill.listener; win.addEventListener(scrollEndPolyfill.eventType, this.listenerScroll); }; Autocapture.prototype.initSubmitTracking = function() { win.removeEventListener(EV_SUBMIT, this.listenerSubmit); if (!this.getConfig(CONFIG_TRACK_SUBMIT)) return; logger$1.log("Initializing submit tracking"); this.listenerSubmit = function(ev) { if (!this.getConfig(CONFIG_TRACK_SUBMIT)) return; this.trackDomEvent(ev, MP_EV_SUBMIT); }.bind(this); win.addEventListener(EV_SUBMIT, this.listenerSubmit); }; Autocapture.prototype.initPageLeaveTracking = function() { document$1.removeEventListener(EV_VISIBILITYCHANGE, this.listenerPageLeaveVisibilitychange); win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerPageLeaveLocationchange); win.removeEventListener(EV_LOAD, this.listenerPageLoad); if (!this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.get_config("record_heatmap_data")) return; logger$1.log("Initializing page visibility tracking."); this._initScrollDepthTracking(); var previousTrackedUrl = _.info.currentUrl(); this.listenerPageLoad = function() { this.previousScrollHeight = document$1.body.scrollHeight; }.bind(this); win.addEventListener(EV_LOAD, this.listenerPageLoad); this.listenerPageLeaveLocationchange = safewrap(function(ev) { if (this.currentUrlBlocked()) return; var currentUrl = _.info.currentUrl(); if (currentUrl !== previousTrackedUrl) { this._trackPageLeave(ev, previousTrackedUrl, this.previousScrollHeight); previousTrackedUrl = currentUrl; this.maxScrollViewDepth = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0); this.previousScrollHeight = document$1.body.scrollHeight; this.hasTrackedScrollSession = false; } }.bind(this)); win.addEventListener(EV_MP_LOCATION_CHANGE, this.listenerPageLeaveLocationchange); this.listenerPageLeaveVisibilitychange = function(ev) { if (document$1.hidden) this._trackPageLeave(ev, previousTrackedUrl, this.previousScrollHeight); }.bind(this); document$1.addEventListener(EV_VISIBILITYCHANGE, this.listenerPageLeaveVisibilitychange); }; Autocapture.prototype.stopDeadClickTracking = function() { if (this.listenerDeadClick) { win.removeEventListener(EV_CLICK, this.listenerDeadClick); this.listenerDeadClick = null; } if (this._deadClickTracker) { this._deadClickTracker.stopTracking(); this._deadClickTracker = null; } }; safewrapClass(Autocapture); logger = console_with_prefix("flags"); FLAGS_CONFIG_KEY = "flags"; CONFIG_CONTEXT = "context"; CONFIG_DEFAULTS = {}; CONFIG_DEFAULTS[CONFIG_CONTEXT] = {}; FeatureFlagManager = function(initOptions) { this.fetch = win["fetch"]; this.getFullApiRoute = initOptions.getFullApiRoute; this.getMpConfig = initOptions.getConfigFunc; this.setMpConfig = initOptions.setConfigFunc; this.getMpProperty = initOptions.getPropertyFunc; this.track = initOptions.trackingFunc; }; FeatureFlagManager.prototype.init = function() { if (!this.minApisSupported()) { logger.critical("Feature Flags unavailable: missing minimum required APIs"); return; } this.flags = null; this.fetchFlags(); this.trackedFeatures = /* @__PURE__ */ new Set(); }; FeatureFlagManager.prototype.getFullConfig = function() { var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY); if (!ffConfig) return {}; else if (_.isObject(ffConfig)) return _.extend({}, CONFIG_DEFAULTS, ffConfig); else return CONFIG_DEFAULTS; }; FeatureFlagManager.prototype.getConfig = function(key) { return this.getFullConfig()[key]; }; FeatureFlagManager.prototype.isSystemEnabled = function() { return !!this.getMpConfig(FLAGS_CONFIG_KEY); }; FeatureFlagManager.prototype.updateContext = function(newContext, options) { if (!this.isSystemEnabled()) { logger.critical("Feature Flags not enabled, cannot update context"); return Promise.resolve(); } var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY); if (!_.isObject(ffConfig)) ffConfig = {}; var oldContext = options && options["replace"] ? {} : this.getConfig(CONFIG_CONTEXT); ffConfig[CONFIG_CONTEXT] = _.extend({}, oldContext, newContext); this.setMpConfig(FLAGS_CONFIG_KEY, ffConfig); return this.fetchFlags(); }; FeatureFlagManager.prototype.areFlagsReady = function() { if (!this.isSystemEnabled()) logger.error("Feature Flags not enabled"); return !!this.flags; }; FeatureFlagManager.prototype.fetchFlags = function() { if (!this.isSystemEnabled()) return Promise.resolve(); var distinctId = this.getMpProperty("distinct_id"); var deviceId = this.getMpProperty("$device_id"); var traceparent = generateTraceparent(); logger.log("Fetching flags for distinct ID: " + distinctId); var context = _.extend({ "distinct_id": distinctId, "device_id": deviceId }, this.getConfig(CONFIG_CONTEXT)); var searchParams = new URLSearchParams(); searchParams.set("context", JSON.stringify(context)); searchParams.set("token", this.getMpConfig("token")); searchParams.set("mp_lib", "web"); searchParams.set("$lib_version", Config.LIB_VERSION); var url = this.getFullApiRoute() + "?" + searchParams.toString(); this._fetchInProgressStartTime = Date.now(); this.fetchPromise = this.fetch.call(win, url, { "method": "GET", "headers": { "Authorization": "Basic " + btoa(this.getMpConfig("token") + ":"), "traceparent": traceparent } }).then(function(response) { this.markFetchComplete(); return response.json().then(function(responseBody) { var responseFlags = responseBody["flags"]; if (!responseFlags) throw new Error("No flags in API response"); var flags = /* @__PURE__ */ new Map(); _.each(responseFlags, function(data, key) { flags.set(key, { "key": data["variant_key"], "value": data["variant_value"], "experiment_id": data["experiment_id"], "is_experiment_active": data["is_experiment_active"], "is_qa_tester": data["is_qa_tester"] }); }); this.flags = flags; this._traceparent = traceparent; }.bind(this)).catch(function(error) { this.markFetchComplete(); logger.error(error); }.bind(this)); }.bind(this)).catch(function(error) { this.markFetchComplete(); logger.error(error); }.bind(this)); return this.fetchPromise; }; FeatureFlagManager.prototype.markFetchComplete = function() { if (!this._fetchInProgressStartTime) { logger.error("Fetch in progress started time not set, cannot mark fetch complete"); return; } this._fetchStartTime = this._fetchInProgressStartTime; this._fetchCompleteTime = Date.now(); this._fetchLatency = this._fetchCompleteTime - this._fetchStartTime; this._fetchInProgressStartTime = null; }; FeatureFlagManager.prototype.getVariant = function(featureName, fallback) { if (!this.fetchPromise) return new Promise(function(resolve) { logger.critical("Feature Flags not initialized"); resolve(fallback); }); return this.fetchPromise.then(function() { return this.getVariantSync(featureName, fallback); }.bind(this)).catch(function(error) { logger.error(error); return fallback; }); }; FeatureFlagManager.prototype.getVariantSync = function(featureName, fallback) { if (!this.areFlagsReady()) { logger.log("Flags not loaded yet"); return fallback; } var feature = this.flags.get(featureName); if (!feature) { logger.log("No flag found: \"" + featureName + "\""); return fallback; } this.trackFeatureCheck(featureName, feature); return feature; }; FeatureFlagManager.prototype.getVariantValue = function(featureName, fallbackValue) { return this.getVariant(featureName, { "value": fallbackValue }).then(function(feature) { return feature["value"]; }).catch(function(error) { logger.error(error); return fallbackValue; }); }; FeatureFlagManager.prototype.getFeatureData = function(featureName, fallbackValue) { logger.critical("mixpanel.flags.get_feature_data() is deprecated and will be removed in a future release. Use mixpanel.flags.get_variant_value() instead."); return this.getVariantValue(featureName, fallbackValue); }; FeatureFlagManager.prototype.getVariantValueSync = function(featureName, fallbackValue) { return this.getVariantSync(featureName, { "value": fallbackValue })["value"]; }; FeatureFlagManager.prototype.isEnabled = function(featureName, fallbackValue) { return this.getVariantValue(featureName).then(function() { return this.isEnabledSync(featureName, fallbackValue); }.bind(this)).catch(function(error) { logger.error(error); return fallbackValue; }); }; FeatureFlagManager.prototype.isEnabledSync = function(featureName, fallbackValue) { fallbackValue = fallbackValue || false; var val = this.getVariantValueSync(featureName, fallbackValue); if (val !== true && val !== false) { logger.error("Feature flag \"" + featureName + "\" value: " + val + " is not a boolean; returning fallback value: " + fallbackValue); val = fallbackValue; } return val; }; FeatureFlagManager.prototype.trackFeatureCheck = function(featureName, feature) { if (this.trackedFeatures.has(featureName)) return; this.trackedFeatures.add(featureName); var trackingProperties = { "Experiment name": featureName, "Variant name": feature["key"], "$experiment_type": "feature_flag", "Variant fetch start time": new Date(this._fetchStartTime).toISOString(), "Variant fetch complete time": new Date(this._fetchCompleteTime).toISOString(), "Variant fetch latency (ms)": this._fetchLatency, "Variant fetch traceparent": this._traceparent }; if (feature["experiment_id"] !== "undefined") trackingProperties["$experiment_id"] = feature["experiment_id"]; if (feature["is_experiment_active"] !== "undefined") trackingProperties["$is_experiment_active"] = feature["is_experiment_active"]; if (feature["is_qa_tester"] !== "undefined") trackingProperties["$is_qa_tester"] = feature["is_qa_tester"]; this.track("$experiment_started", trackingProperties); }; FeatureFlagManager.prototype.minApisSupported = function() { return !!this.fetch && typeof Promise !== "undefined" && typeof Map !== "undefined" && typeof Set !== "undefined"; }; safewrapClass(FeatureFlagManager); FeatureFlagManager.prototype["are_flags_ready"] = FeatureFlagManager.prototype.areFlagsReady; FeatureFlagManager.prototype["get_variant"] = FeatureFlagManager.prototype.getVariant; FeatureFlagManager.prototype["get_variant_sync"] = FeatureFlagManager.prototype.getVariantSync; FeatureFlagManager.prototype["get_variant_value"] = FeatureFlagManager.prototype.getVariantValue; FeatureFlagManager.prototype["get_variant_value_sync"] = FeatureFlagManager.prototype.getVariantValueSync; FeatureFlagManager.prototype["is_enabled"] = FeatureFlagManager.prototype.isEnabled; FeatureFlagManager.prototype["is_enabled_sync"] = FeatureFlagManager.prototype.isEnabledSync; FeatureFlagManager.prototype["update_context"] = FeatureFlagManager.prototype.updateContext; FeatureFlagManager.prototype["get_feature_data"] = FeatureFlagManager.prototype.getFeatureData; DomTracker = function() {}; DomTracker.prototype.create_properties = function() {}; DomTracker.prototype.event_handler = function() {}; DomTracker.prototype.after_track_handler = function() {}; DomTracker.prototype.init = function(mixpanel_instance) { this.mp = mixpanel_instance; return this; }; /** * @param {Object|string} query * @param {string} event_name * @param {Object=} properties * @param {function=} user_callback */ DomTracker.prototype.track = function(query, event_name, properties, user_callback) { var that = this; var elements = _.dom_query(query); if (elements.length === 0) { console$1.error("The DOM query (" + query + ") returned 0 elements"); return; } _.each(elements, function(element) { _.register_event(element, this.override_event, function(e) { var options = {}; var props = that.create_properties(properties, this); var timeout = that.mp.get_config("track_links_timeout"); that.event_handler(e, this, options); window.setTimeout(that.track_callback(user_callback, props, options, true), timeout); that.mp.track(event_name, props, that.track_callback(user_callback, props, options)); }); }, this); return true; }; /** * @param {function} user_callback * @param {Object} props * @param {boolean=} timeout_occured */ DomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) { timeout_occured = timeout_occured || false; var that = this; return function() { if (options.callback_fired) return; options.callback_fired = true; if (user_callback && user_callback(timeout_occured, props) === false) return; that.after_track_handler(props, options, timeout_occured); }; }; DomTracker.prototype.create_properties = function(properties, element) { var props; if (typeof properties === "function") props = properties(element); else props = _.extend({}, properties); return props; }; LinkTracker = function() { this.override_event = "click"; }; _.inherit(LinkTracker, DomTracker); LinkTracker.prototype.create_properties = function(properties, element) { var props = LinkTracker.superclass.create_properties.apply(this, arguments); if (element.href) props["url"] = element.href; return props; }; LinkTracker.prototype.event_handler = function(evt, element, options) { options.new_tab = evt.which === 2 || evt.metaKey || evt.ctrlKey || element.target === "_blank"; options.href = element.href; if (!options.new_tab) evt.preventDefault(); }; LinkTracker.prototype.after_track_handler = function(props, options) { if (options.new_tab) return; setTimeout(function() { window.location = options.href; }, 0); }; FormTracker = function() { this.override_event = "submit"; }; _.inherit(FormTracker, DomTracker); FormTracker.prototype.event_handler = function(evt, element, options) { options.element = element; evt.preventDefault(); }; FormTracker.prototype.after_track_handler = function(props, options) { setTimeout(function() { options.element.submit(); }, 0); }; SET_ACTION = "$set"; SET_ONCE_ACTION = "$set_once"; UNSET_ACTION = "$unset"; ADD_ACTION = "$add"; APPEND_ACTION = "$append"; UNION_ACTION = "$union"; REMOVE_ACTION = "$remove"; DELETE_ACTION = "$delete"; apiActions = { set_action: function(prop, to) { var data = {}; var $set = {}; if (_.isObject(prop)) _.each(prop, function(v, k) { if (!this._is_reserved_property(k)) $set[k] = v; }, this); else $set[prop] = to; data[SET_ACTION] = $set; return data; }, unset_action: function(prop) { var data = {}; var $unset = []; if (!_.isArray(prop)) prop = [prop]; _.each(prop, function(k) { if (!this._is_reserved_property(k)) $unset.push(k); }, this); data[UNSET_ACTION] = $unset; return data; }, set_once_action: function(prop, to) { var data = {}; var $set_once = {}; if (_.isObject(prop)) _.each(prop, function(v, k) { if (!this._is_reserved_property(k)) $set_once[k] = v; }, this); else $set_once[prop] = to; data[SET_ONCE_ACTION] = $set_once; return data; }, union_action: function(list_name, values) { var data = {}; var $union = {}; if (_.isObject(list_name)) _.each(list_name, function(v, k) { if (!this._is_reserved_property(k)) $union[k] = _.isArray(v) ? v : [v]; }, this); else $union[list_name] = _.isArray(values) ? values : [values]; data[UNION_ACTION] = $union; return data; }, append_action: function(list_name, value) { var data = {}; var $append = {}; if (_.isObject(list_name)) _.each(list_name, function(v, k) { if (!this._is_reserved_property(k)) $append[k] = v; }, this); else $append[list_name] = value; data[APPEND_ACTION] = $append; return data; }, remove_action: function(list_name, value) { var data = {}; var $remove = {}; if (_.isObject(list_name)) _.each(list_name, function(v, k) { if (!this._is_reserved_property(k)) $remove[k] = v; }, this); else $remove[list_name] = value; data[REMOVE_ACTION] = $remove; return data; }, delete_action: function() { var data = {}; data[DELETE_ACTION] = ""; return data; } }; MixpanelGroup = function() {}; _.extend(MixpanelGroup.prototype, apiActions); MixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) { this._mixpanel = mixpanel_instance; this._group_key = group_key; this._group_id = group_id; }; /** * Set properties on a group. * * ### Usage: * * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard'); * * // or set multiple properties at once * mixpanel.get_group('company', 'mixpanel').set({ * 'Location': '405 Howard', * 'Founded' : 2009, * }); * // properties can be strings, integers, dates, or lists * * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values. * @param {*} [to] A value to set on the given property name * @param {Function} [callback] If provided, the callback will be called after the tracking event */ MixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) { var data = this.set_action(prop, to); if (_.isObject(prop)) callback = to; return this._send_request(data, callback); }); /** * Set properties on a group, only if they do not yet exist. * This will not overwrite previous group property values, unlike * group.set(). * * ### Usage: * * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard'); * * // or set multiple properties at once * mixpanel.get_group('company', 'mixpanel').set_once({ * 'Location': '405 Howard', * 'Founded' : 2009, * }); * // properties can be strings, integers, lists or dates * * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values. * @param {*} [to] A value to set on the given property name * @param {Function} [callback] If provided, the callback will be called after the tracking event */ MixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) { var data = this.set_once_action(prop, to); if (_.isObject(prop)) callback = to; return this._send_request(data, callback); }); /** * Unset properties on a group permanently. * * ### Usage: * * mixpanel.get_group('company', 'mixpanel').unset('Founded'); * * @param {String} prop The name of the property. * @param {Function} [callback] If provided, the callback will be called after the tracking event */ MixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) { var data = this.unset_action(prop); return this._send_request(data, callback); }); /** * Merge a given list with a list-valued group property, excluding duplicate values. * * ### Usage: * * // merge a value to a list, creating it if needed * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']); * * @param {String} list_name Name of the property. * @param {Array} values Values to merge with the given property * @param {Function} [callback] If provided, the callback will be called after the tracking event */ MixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) { if (_.isObject(list_name)) callback = values; var data = this.union_action(list_name, values); return this._send_request(data, callback); }); /** * Permanently delete a group. * * ### Usage: * * mixpanel.get_group('company', 'mixpanel').delete(); * * @param {Function} [callback] If provided, the callback will be called after the tracking event */ MixpanelGroup.prototype["delete"] = addOptOutCheckMixpanelGroup(function(callback) { var data = this.delete_action(); return this._send_request(data, callback); }); /** * Remove a property from a group. The value will be ignored if doesn't exist. * * ### Usage: * * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London'); * * @param {String} list_name Name of the property. * @param {Object} value Value to remove from the given group property * @param {Function} [callback] If provided, the callback will be called after the tracking event */ MixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) { var data = this.remove_action(list_name, value); return this._send_request(data, callback); }); MixpanelGroup.prototype._send_request = function(data, callback) { data["$group_key"] = this._group_key; data["$group_id"] = this._group_id; data["$token"] = this._get_config("token"); var date_encoded_data = _.encodeDates(data); return this._mixpanel._track_or_batch({ type: "groups", data: date_encoded_data, endpoint: this._mixpanel.get_api_host("groups") + "/" + this._get_config("api_routes")["groups"], batcher: this._mixpanel.request_batchers.groups }, callback); }; MixpanelGroup.prototype._is_reserved_property = function(prop) { return prop === "$group_key" || prop === "$group_id"; }; MixpanelGroup.prototype._get_config = function(conf) { return this._mixpanel.get_config(conf); }; MixpanelGroup.prototype.toString = function() { return this._mixpanel.toString() + ".group." + this._group_key + "." + this._group_id; }; MixpanelGroup.prototype["remove"] = MixpanelGroup.prototype.remove; MixpanelGroup.prototype["set"] = MixpanelGroup.prototype.set; MixpanelGroup.prototype["set_once"] = MixpanelGroup.prototype.set_once; MixpanelGroup.prototype["union"] = MixpanelGroup.prototype.union; MixpanelGroup.prototype["unset"] = MixpanelGroup.prototype.unset; MixpanelGroup.prototype["toString"] = MixpanelGroup.prototype.toString; MixpanelPeople = function() {}; _.extend(MixpanelPeople.prototype, apiActions); MixpanelPeople.prototype._init = function(mixpanel_instance) { this._mixpanel = mixpanel_instance; }; MixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) { var data = this.set_action(prop, to); if (_.isObject(prop)) callback = to; if (this._get_config("save_referrer")) this._mixpanel["persistence"].update_referrer_info(document.referrer); data[SET_ACTION] = _.extend({}, _.info.people_properties(), data[SET_ACTION]); return this._send_request(data, callback); }); MixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) { var data = this.set_once_action(prop, to); if (_.isObject(prop)) callback = to; return this._send_request(data, callback); }); MixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) { var data = this.unset_action(prop); return this._send_request(data, callback); }); MixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) { var data = {}; var $add = {}; if (_.isObject(prop)) { _.each(prop, function(v, k) { if (!this._is_reserved_property(k)) if (isNaN(parseFloat(v))) { console$1.error("Invalid increment value passed to mixpanel.people.increment - must be a number"); return; } else $add[k] = v; }, this); callback = by; } else { if (_.isUndefined(by)) by = 1; $add[prop] = by; } data[ADD_ACTION] = $add; return this._send_request(data, callback); }); MixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) { if (_.isObject(list_name)) callback = value; var data = this.append_action(list_name, value); return this._send_request(data, callback); }); MixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) { if (_.isObject(list_name)) callback = value; var data = this.remove_action(list_name, value); return this._send_request(data, callback); }); MixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) { if (_.isObject(list_name)) callback = values; var data = this.union_action(list_name, values); return this._send_request(data, callback); }); MixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function() { console$1.error("mixpanel.people.track_charge() is deprecated and no longer has any effect."); }); MixpanelPeople.prototype.clear_charges = function(callback) { return this.set("$transactions", [], callback); }; MixpanelPeople.prototype.delete_user = function() { if (!this._identify_called()) { console$1.error("mixpanel.people.delete_user() requires you to call identify() first"); return; } var data = { "$delete": this._mixpanel.get_distinct_id() }; return this._send_request(data); }; MixpanelPeople.prototype.toString = function() { return this._mixpanel.toString() + ".people"; }; MixpanelPeople.prototype._send_request = function(data, callback) { data["$token"] = this._get_config("token"); data["$distinct_id"] = this._mixpanel.get_distinct_id(); var device_id = this._mixpanel.get_property("$device_id"); var user_id = this._mixpanel.get_property("$user_id"); var had_persisted_distinct_id = this._mixpanel.get_property("$had_persisted_distinct_id"); if (device_id) data["$device_id"] = device_id; if (user_id) data["$user_id"] = user_id; if (had_persisted_distinct_id) data["$had_persisted_distinct_id"] = had_persisted_distinct_id; var date_encoded_data = _.encodeDates(data); if (!this._identify_called()) { this._enqueue(data); if (!_.isUndefined(callback)) if (this._get_config("verbose")) callback({ status: -1, error: null }); else callback(-1); return _.truncate(date_encoded_data, 255); } return this._mixpanel._track_or_batch({ type: "people", data: date_encoded_data, endpoint: this._mixpanel.get_api_host("people") + "/" + this._get_config("api_routes")["engage"], batcher: this._mixpanel.request_batchers.people }, callback); }; MixpanelPeople.prototype._get_config = function(conf_var) { return this._mixpanel.get_config(conf_var); }; MixpanelPeople.prototype._identify_called = function() { return this._mixpanel._flags.identify_called === true; }; MixpanelPeople.prototype._enqueue = function(data) { if (SET_ACTION in data) this._mixpanel["persistence"]._add_to_people_queue(SET_ACTION, data); else if (SET_ONCE_ACTION in data) this._mixpanel["persistence"]._add_to_people_queue(SET_ONCE_ACTION, data); else if (UNSET_ACTION in data) this._mixpanel["persistence"]._add_to_people_queue(UNSET_ACTION, data); else if (ADD_ACTION in data) this._mixpanel["persistence"]._add_to_people_queue(ADD_ACTION, data); else if (APPEND_ACTION in data) this._mixpanel["persistence"]._add_to_people_queue(APPEND_ACTION, data); else if (REMOVE_ACTION in data) this._mixpanel["persistence"]._add_to_people_queue(REMOVE_ACTION, data); else if (UNION_ACTION in data) this._mixpanel["persistence"]._add_to_people_queue(UNION_ACTION, data); else console$1.error("Invalid call to _enqueue():", data); }; MixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) { var _this = this; var queued_data = _.extend({}, this._mixpanel["persistence"].load_queue(action)); var action_params = queued_data; if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) { _this._mixpanel["persistence"]._pop_from_people_queue(action, queued_data); _this._mixpanel["persistence"].save(); if (queue_to_params_fn) action_params = queue_to_params_fn(queued_data); action_method.call(_this, action_params, function(response, data) { if (response === 0) _this._mixpanel["persistence"]._add_to_people_queue(action, queued_data); if (!_.isUndefined(callback)) callback(response, data); }); } }; MixpanelPeople.prototype._flush = function(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback) { var _this = this; this._flush_one_queue(SET_ACTION, this.set, _set_callback); this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback); this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); }); this._flush_one_queue(ADD_ACTION, this.increment, _add_callback); this._flush_one_queue(UNION_ACTION, this.union, _union_callback); var $append_queue = this._mixpanel["persistence"].load_queue(APPEND_ACTION); if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) { var $append_item; var append_callback = function(response, data) { if (response === 0) _this._mixpanel["persistence"]._add_to_people_queue(APPEND_ACTION, $append_item); if (!_.isUndefined(_append_callback)) _append_callback(response, data); }; for (var i = $append_queue.length - 1; i >= 0; i--) { $append_queue = this._mixpanel["persistence"].load_queue(APPEND_ACTION); $append_item = $append_queue.pop(); _this._mixpanel["persistence"].save(); if (!_.isEmptyObject($append_item)) _this.append($append_item, append_callback); } } var $remove_queue = this._mixpanel["persistence"].load_queue(REMOVE_ACTION); if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) { var $remove_item; var remove_callback = function(response, data) { if (response === 0) _this._mixpanel["persistence"]._add_to_people_queue(REMOVE_ACTION, $remove_item); if (!_.isUndefined(_remove_callback)) _remove_callback(response, data); }; for (var j = $remove_queue.length - 1; j >= 0; j--) { $remove_queue = this._mixpanel["persistence"].load_queue(REMOVE_ACTION); $remove_item = $remove_queue.pop(); _this._mixpanel["persistence"].save(); if (!_.isEmptyObject($remove_item)) _this.remove($remove_item, remove_callback); } } }; MixpanelPeople.prototype._is_reserved_property = function(prop) { return prop === "$distinct_id" || prop === "$token" || prop === "$device_id" || prop === "$user_id" || prop === "$had_persisted_distinct_id"; }; MixpanelPeople.prototype["set"] = MixpanelPeople.prototype.set; MixpanelPeople.prototype["set_once"] = MixpanelPeople.prototype.set_once; MixpanelPeople.prototype["unset"] = MixpanelPeople.prototype.unset; MixpanelPeople.prototype["increment"] = MixpanelPeople.prototype.increment; MixpanelPeople.prototype["append"] = MixpanelPeople.prototype.append; MixpanelPeople.prototype["remove"] = MixpanelPeople.prototype.remove; MixpanelPeople.prototype["union"] = MixpanelPeople.prototype.union; MixpanelPeople.prototype["track_charge"] = MixpanelPeople.prototype.track_charge; MixpanelPeople.prototype["clear_charges"] = MixpanelPeople.prototype.clear_charges; MixpanelPeople.prototype["delete_user"] = MixpanelPeople.prototype.delete_user; MixpanelPeople.prototype["toString"] = MixpanelPeople.prototype.toString; SET_QUEUE_KEY = "__mps"; SET_ONCE_QUEUE_KEY = "__mpso"; UNSET_QUEUE_KEY = "__mpus"; ADD_QUEUE_KEY = "__mpa"; APPEND_QUEUE_KEY = "__mpap"; REMOVE_QUEUE_KEY = "__mpr"; UNION_QUEUE_KEY = "__mpu"; PEOPLE_DISTINCT_ID_KEY = "$people_distinct_id"; ALIAS_ID_KEY = "__alias"; EVENT_TIMERS_KEY = "__timers"; RESERVED_PROPERTIES = [ SET_QUEUE_KEY, SET_ONCE_QUEUE_KEY, UNSET_QUEUE_KEY, ADD_QUEUE_KEY, APPEND_QUEUE_KEY, REMOVE_QUEUE_KEY, UNION_QUEUE_KEY, PEOPLE_DISTINCT_ID_KEY, ALIAS_ID_KEY, EVENT_TIMERS_KEY ]; MixpanelPersistence = function(config) { this["props"] = {}; this.campaign_params_saved = false; if (config["persistence_name"]) this.name = "mp_" + config["persistence_name"]; else this.name = "mp_" + config["token"] + "_mixpanel"; var storage_type = config["persistence"]; if (storage_type !== "cookie" && storage_type !== "localStorage") { console$1.critical("Unknown persistence type " + storage_type + "; falling back to cookie"); storage_type = config["persistence"] = "cookie"; } if (storage_type === "localStorage" && _.localStorage.is_supported()) this.storage = _.localStorage; else this.storage = _.cookie; this.load(); this.update_config(config); this.upgrade(); this.save(); }; MixpanelPersistence.prototype.properties = function() { var p = {}; this.load(); _.each(this["props"], function(v, k) { if (!_.include(RESERVED_PROPERTIES, k)) p[k] = v; }); return p; }; MixpanelPersistence.prototype.load = function() { if (this.disabled) return; var entry = this.storage.parse(this.name); if (entry) this["props"] = _.extend({}, entry); }; MixpanelPersistence.prototype.upgrade = function() { var old_cookie; var old_localstorage; if (this.storage === _.localStorage) { old_cookie = _.cookie.parse(this.name); _.cookie.remove(this.name); _.cookie.remove(this.name, true); if (old_cookie) this.register_once(old_cookie); } else if (this.storage === _.cookie) { old_localstorage = _.localStorage.parse(this.name); _.localStorage.remove(this.name); if (old_localstorage) this.register_once(old_localstorage); } }; MixpanelPersistence.prototype.save = function() { if (this.disabled) return; this.storage.set(this.name, JSONStringify(this["props"]), this.expire_days, this.cross_subdomain, this.secure, this.cross_site, this.cookie_domain); }; MixpanelPersistence.prototype.load_prop = function(key) { this.load(); return this["props"][key]; }; MixpanelPersistence.prototype.remove = function() { this.storage.remove(this.name, false, this.cookie_domain); this.storage.remove(this.name, true, this.cookie_domain); }; MixpanelPersistence.prototype.clear = function() { this.remove(); this["props"] = {}; }; /** * @param {Object} props * @param {*=} default_value * @param {number=} days */ MixpanelPersistence.prototype.register_once = function(props, default_value, days) { if (_.isObject(props)) { if (typeof default_value === "undefined") default_value = "None"; this.expire_days = typeof days === "undefined" ? this.default_expiry : days; this.load(); _.each(props, function(val, prop) { if (!this["props"].hasOwnProperty(prop) || this["props"][prop] === default_value) this["props"][prop] = val; }, this); this.save(); return true; } return false; }; /** * @param {Object} props * @param {number=} days */ MixpanelPersistence.prototype.register = function(props, days) { if (_.isObject(props)) { this.expire_days = typeof days === "undefined" ? this.default_expiry : days; this.load(); _.extend(this["props"], props); this.save(); return true; } return false; }; MixpanelPersistence.prototype.unregister = function(prop) { this.load(); if (prop in this["props"]) { delete this["props"][prop]; this.save(); } }; MixpanelPersistence.prototype.update_search_keyword = function(referrer) { this.register(_.info.searchInfo(referrer)); }; MixpanelPersistence.prototype.update_referrer_info = function(referrer) { this.register_once({ "$initial_referrer": referrer || "$direct", "$initial_referring_domain": _.info.referringDomain(referrer) || "$direct" }, ""); }; MixpanelPersistence.prototype.get_referrer_info = function() { return _.strip_empty_properties({ "$initial_referrer": this["props"]["$initial_referrer"], "$initial_referring_domain": this["props"]["$initial_referring_domain"] }); }; MixpanelPersistence.prototype.update_config = function(config) { this.default_expiry = this.expire_days = config["cookie_expiration"]; this.set_disabled(config["disable_persistence"]); this.set_cookie_domain(config["cookie_domain"]); this.set_cross_site(config["cross_site_cookie"]); this.set_cross_subdomain(config["cross_subdomain_cookie"]); this.set_secure(config["secure_cookie"]); }; MixpanelPersistence.prototype.set_disabled = function(disabled) { this.disabled = disabled; if (this.disabled) this.remove(); else this.save(); }; MixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) { if (cookie_domain !== this.cookie_domain) { this.remove(); this.cookie_domain = cookie_domain; this.save(); } }; MixpanelPersistence.prototype.set_cross_site = function(cross_site) { if (cross_site !== this.cross_site) { this.cross_site = cross_site; this.remove(); this.save(); } }; MixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) { if (cross_subdomain !== this.cross_subdomain) { this.cross_subdomain = cross_subdomain; this.remove(); this.save(); } }; MixpanelPersistence.prototype.get_cross_subdomain = function() { return this.cross_subdomain; }; MixpanelPersistence.prototype.set_secure = function(secure) { if (secure !== this.secure) { this.secure = secure ? true : false; this.remove(); this.save(); } }; MixpanelPersistence.prototype._add_to_people_queue = function(queue, data) { var q_key = this._get_queue_key(queue); var q_data = data[queue]; var set_q = this._get_or_create_queue(SET_ACTION); var set_once_q = this._get_or_create_queue(SET_ONCE_ACTION); var unset_q = this._get_or_create_queue(UNSET_ACTION); var add_q = this._get_or_create_queue(ADD_ACTION); var union_q = this._get_or_create_queue(UNION_ACTION); var remove_q = this._get_or_create_queue(REMOVE_ACTION, []); var append_q = this._get_or_create_queue(APPEND_ACTION, []); if (q_key === SET_QUEUE_KEY) { _.extend(set_q, q_data); this._pop_from_people_queue(ADD_ACTION, q_data); this._pop_from_people_queue(UNION_ACTION, q_data); this._pop_from_people_queue(UNSET_ACTION, q_data); } else if (q_key === SET_ONCE_QUEUE_KEY) { _.each(q_data, function(v, k) { if (!(k in set_once_q)) set_once_q[k] = v; }); this._pop_from_people_queue(UNSET_ACTION, q_data); } else if (q_key === UNSET_QUEUE_KEY) _.each(q_data, function(prop) { _.each([ set_q, set_once_q, add_q, union_q ], function(enqueued_obj) { if (prop in enqueued_obj) delete enqueued_obj[prop]; }); _.each(append_q, function(append_obj) { if (prop in append_obj) delete append_obj[prop]; }); unset_q[prop] = true; }); else if (q_key === ADD_QUEUE_KEY) { _.each(q_data, function(v, k) { if (k in set_q) set_q[k] += v; else { if (!(k in add_q)) add_q[k] = 0; add_q[k] += v; } }, this); this._pop_from_people_queue(UNSET_ACTION, q_data); } else if (q_key === UNION_QUEUE_KEY) { _.each(q_data, function(v, k) { if (_.isArray(v)) { if (!(k in union_q)) union_q[k] = []; _.each(v, function(item) { if (!_.include(union_q[k], item)) union_q[k].push(item); }); } }); this._pop_from_people_queue(UNSET_ACTION, q_data); } else if (q_key === REMOVE_QUEUE_KEY) { remove_q.push(q_data); this._pop_from_people_queue(APPEND_ACTION, q_data); } else if (q_key === APPEND_QUEUE_KEY) { append_q.push(q_data); this._pop_from_people_queue(UNSET_ACTION, q_data); } console$1.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"); console$1.log(data); this.save(); }; MixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) { var q = this["props"][this._get_queue_key(queue)]; if (!_.isUndefined(q)) _.each(data, function(v, k) { if (queue === APPEND_ACTION || queue === REMOVE_ACTION) _.each(q, function(queued_action) { if (queued_action[k] === v) delete queued_action[k]; }); else delete q[k]; }, this); }; MixpanelPersistence.prototype.load_queue = function(queue) { return this.load_prop(this._get_queue_key(queue)); }; MixpanelPersistence.prototype._get_queue_key = function(queue) { if (queue === SET_ACTION) return SET_QUEUE_KEY; else if (queue === SET_ONCE_ACTION) return SET_ONCE_QUEUE_KEY; else if (queue === UNSET_ACTION) return UNSET_QUEUE_KEY; else if (queue === ADD_ACTION) return ADD_QUEUE_KEY; else if (queue === APPEND_ACTION) return APPEND_QUEUE_KEY; else if (queue === REMOVE_ACTION) return REMOVE_QUEUE_KEY; else if (queue === UNION_ACTION) return UNION_QUEUE_KEY; else console$1.error("Invalid queue:", queue); }; MixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) { var key = this._get_queue_key(queue); default_val = _.isUndefined(default_val) ? {} : default_val; return this["props"][key] || (this["props"][key] = default_val); }; MixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) { var timers = this.load_prop(EVENT_TIMERS_KEY) || {}; timers[event_name] = timestamp; this["props"][EVENT_TIMERS_KEY] = timers; this.save(); }; MixpanelPersistence.prototype.remove_event_timer = function(event_name) { var timestamp = (this.load_prop(EVENT_TIMERS_KEY) || {})[event_name]; if (!_.isUndefined(timestamp)) { delete this["props"][EVENT_TIMERS_KEY][event_name]; this.save(); } return timestamp; }; ; load_extra_bundle = function(src, _onload) { throw new Error(src + " not available in this build."); }; ; INIT_MODULE = 0; INIT_SNIPPET = 1; IDENTITY_FUNC = function(x) { return x; }; PRIMARY_INSTANCE_NAME = "mixpanel"; PAYLOAD_TYPE_BASE64 = "base64"; PAYLOAD_TYPE_JSON = "json"; DEVICE_ID_PREFIX = "$device:"; USE_XHR = win.XMLHttpRequest && "withCredentials" in new XMLHttpRequest(); ENQUEUE_REQUESTS = !USE_XHR && userAgent.indexOf("MSIE") === -1 && userAgent.indexOf("Mozilla") === -1; sendBeacon = null; if (navigator$1["sendBeacon"]) sendBeacon = function() { return navigator$1["sendBeacon"].apply(navigator$1, arguments); }; DEFAULT_API_ROUTES = { "track": "track/", "engage": "engage/", "groups": "groups/", "record": "record/", "flags": "flags/" }; DEFAULT_CONFIG = { "api_host": "https://api-js.mixpanel.com", "api_hosts": {}, "api_routes": DEFAULT_API_ROUTES, "api_extra_query_params": {}, "api_method": "POST", "api_transport": "XHR", "api_payload_format": PAYLOAD_TYPE_BASE64, "app_host": "https://mixpanel.com", "autocapture": false, "cdn": "https://cdn.mxpnl.com", "cross_site_cookie": false, "cross_subdomain_cookie": true, "error_reporter": NOOP_FUNC, "flags": false, "persistence": "cookie", "persistence_name": "", "cookie_domain": "", "cookie_name": "", "loaded": NOOP_FUNC, "mp_loader": null, "track_marketing": true, "track_pageview": false, "skip_first_touch_marketing": false, "store_google": true, "stop_utm_persistence": false, "save_referrer": true, "test": false, "verbose": false, "img": false, "debug": false, "track_links_timeout": 300, "cookie_expiration": 365, "upgrade": false, "disable_persistence": false, "disable_cookie": false, "secure_cookie": false, "ip": true, "opt_out_tracking_by_default": false, "opt_out_persistence_by_default": false, "opt_out_tracking_persistence_type": "localStorage", "opt_out_tracking_cookie_prefix": null, "property_blacklist": [], "xhr_headers": {}, "ignore_dnt": false, "batch_requests": true, "batch_size": 50, "batch_flush_interval_ms": 5e3, "batch_request_timeout_ms": 9e4, "batch_autostart": true, "hooks": {}, "record_block_class": /* @__PURE__ */ new RegExp("^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$"), "record_block_selector": "img, video, audio", "record_canvas": false, "record_collect_fonts": false, "record_heatmap_data": false, "record_idle_timeout_ms": 1800 * 1e3, "record_mask_text_class": /* @__PURE__ */ new RegExp("^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$"), "record_mask_text_selector": "*", "record_max_ms": MAX_RECORDING_MS, "record_min_ms": 0, "record_sessions_percent": 0, "recorder_src": "https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js" }; DOM_LOADED = false; MixpanelLib = function() {}; create_mplib = function(token, config, name) { var instance; var target = name === PRIMARY_INSTANCE_NAME ? mixpanel_master : mixpanel_master[name]; if (target && init_type === INIT_MODULE) instance = target; else { if (target && !_.isArray(target)) { console$1.error("You have already initialized " + name); return; } instance = new MixpanelLib(); } instance._cached_groups = {}; instance._init(token, config, name); instance["people"] = new MixpanelPeople(); instance["people"]._init(instance); if (!instance.get_config("skip_first_touch_marketing")) { var utm_params = _.info.campaignParams(null); var initial_utm_params = {}; var has_utm = false; _.each(utm_params, function(utm_value, utm_key) { initial_utm_params["initial_" + utm_key] = utm_value; if (utm_value) has_utm = true; }); if (has_utm) instance["people"].set_once(initial_utm_params); } Config.DEBUG = Config.DEBUG || instance.get_config("debug"); if (!_.isUndefined(target) && _.isArray(target)) { instance._execute_array.call(instance["people"], target["people"]); instance._execute_array(target); } return instance; }; /** * This function initializes a new instance of the Mixpanel tracking object. * All new instances are added to the main mixpanel object as sub properties (such as * mixpanel.library_name) and also returned by this function. To define a * second instance on the page, you would call: * * mixpanel.init('new token', { your: 'config' }, 'library_name'); * * and use it like so: * * mixpanel.library_name.track(...); * * @param {String} token Your Mixpanel API token * @param {Object} [config] A dictionary of config options to override. See a list of default config options. * @param {String} [name] The name for the new mixpanel instance that you want created */ MixpanelLib.prototype.init = function(token, config, name) { if (_.isUndefined(name)) { this.report_error("You must name your new library: init(token, config, name)"); return; } if (name === PRIMARY_INSTANCE_NAME) { this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet"); return; } var instance = create_mplib(token, config, name); mixpanel_master[name] = instance; instance._loaded(); return instance; }; MixpanelLib.prototype._init = function(token, config, name) { config = config || {}; this["__loaded"] = true; this["config"] = {}; var variable_features = {}; if (!("api_payload_format" in config)) { if ((config["api_host"] || DEFAULT_CONFIG["api_host"]).match(/\.mixpanel\.com/)) variable_features["api_payload_format"] = PAYLOAD_TYPE_JSON; } this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, { "name": name, "token": token, "callback_fn": (name === PRIMARY_INSTANCE_NAME ? name : PRIMARY_INSTANCE_NAME + "." + name) + "._jsc" })); this["_jsc"] = NOOP_FUNC; this.__dom_loaded_queue = []; this.__request_queue = []; this.__disabled_events = []; this._flags = { "disable_all_events": false, "identify_called": false }; this.request_batchers = {}; this._batch_requests = this.get_config("batch_requests"); if (this._batch_requests) if (!_.localStorage.is_supported(true) || !USE_XHR) { this._batch_requests = false; console$1.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"); _.each(this.get_batcher_configs(), function(batcher_config) { console$1.log("Clearing batch queue " + batcher_config.queue_key); _.localStorage.remove(batcher_config.queue_key); }); } else { this.init_batchers(); if (sendBeacon && win.addEventListener) { var flush_on_unload = _.bind(function() { if (!this.request_batchers.events.stopped) this.request_batchers.events.flush({ unloading: true }); }, this); win.addEventListener("pagehide", function(ev) { if (ev["persisted"]) flush_on_unload(); }); win.addEventListener("visibilitychange", function() { if (document$1["visibilityState"] === "hidden") flush_on_unload(); }); } } this["persistence"] = this["cookie"] = new MixpanelPersistence(this["config"]); this.unpersisted_superprops = {}; this._gdpr_init(); var uuid = _.UUID(); if (!this.get_distinct_id()) this.register_once({ "distinct_id": DEVICE_ID_PREFIX + uuid, "$device_id": uuid }, ""); this.flags = new FeatureFlagManager({ getFullApiRoute: _.bind(function() { return this.get_api_host("flags") + "/" + this.get_config("api_routes")["flags"]; }, this), getConfigFunc: _.bind(this.get_config, this), setConfigFunc: _.bind(this.set_config, this), getPropertyFunc: _.bind(this.get_property, this), trackingFunc: _.bind(this.track, this) }); this.flags.init(); this["flags"] = this.flags; this.autocapture = new Autocapture(this); this.autocapture.init(); this._init_tab_id(); this._check_and_start_session_recording(); }; /** * Assigns a unique UUID to this tab / window by leveraging sessionStorage. * This is primarily used for session recording, where data must be isolated to the current tab. */ MixpanelLib.prototype._init_tab_id = function() { if (this.get_config("disable_persistence")) console$1.log("Tab ID initialization skipped due to disable_persistence config"); else if (_.sessionStorage.is_supported()) try { var key_suffix = this.get_config("name") + "_" + this.get_config("token"); var tab_id_key = "mp_tab_id_" + key_suffix; var should_generate_new_tab_id_key = "mp_gen_new_tab_id_" + key_suffix; if (_.sessionStorage.get(should_generate_new_tab_id_key) || !_.sessionStorage.get(tab_id_key)) _.sessionStorage.set(tab_id_key, "$tab-" + _.UUID()); _.sessionStorage.set(should_generate_new_tab_id_key, "1"); this.tab_id = _.sessionStorage.get(tab_id_key); win.addEventListener("beforeunload", function() { _.sessionStorage.remove(should_generate_new_tab_id_key); }); } catch (err) { this.report_error("Error initializing tab id", err); } else this.report_error("Session storage is not supported, cannot keep track of unique tab ID."); }; MixpanelLib.prototype.get_tab_id = function() { return this.tab_id || null; }; MixpanelLib.prototype._should_load_recorder = function() { if (this.get_config("disable_persistence")) { console$1.log("Load recorder check skipped due to disable_persistence config"); return Promise.resolve(false); } var recording_registry_idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME); var tab_id = this.get_tab_id(); return recording_registry_idb.init().then(function() { return recording_registry_idb.getAll(); }).then(function(recordings) { for (var i = 0; i < recordings.length; i++) if (isRecordingExpired(recordings[i]) || recordings[i]["tabId"] === tab_id) return true; return false; }).catch(_.bind(function(err) { this.report_error("Error checking recording registry", err); }, this)); }; MixpanelLib.prototype._check_and_start_session_recording = addOptOutCheckMixpanelLib(function(force_start) { if (!win["MutationObserver"]) { console$1.critical("Browser does not support MutationObserver; skipping session recording"); return; } var loadRecorder = _.bind(function(startNewIfInactive) { var handleLoadedRecorder = _.bind(function() { this._recorder = this._recorder || new win["__mp_recorder"](this); this._recorder["resumeRecording"](startNewIfInactive); }, this); if (_.isUndefined(win["__mp_recorder"])) load_extra_bundle(this.get_config("recorder_src"), handleLoadedRecorder); else handleLoadedRecorder(); }, this); /** * If the user is sampled or start_session_recording is called, we always load the recorder since it's guaranteed a recording should start. * Otherwise, if the recording registry has any records then it's likely there's a recording in progress or orphaned data that needs to be flushed. */ var is_sampled = this.get_config("record_sessions_percent") > 0 && Math.random() * 100 <= this.get_config("record_sessions_percent"); if (force_start || is_sampled) loadRecorder(true); else this._should_load_recorder().then(function(shouldLoad) { if (shouldLoad) loadRecorder(false); }); }); MixpanelLib.prototype.start_session_recording = function() { this._check_and_start_session_recording(true); }; MixpanelLib.prototype.stop_session_recording = function() { if (this._recorder) return this._recorder["stopRecording"](); return Promise.resolve(); }; MixpanelLib.prototype.pause_session_recording = function() { if (this._recorder) return this._recorder["pauseRecording"](); return Promise.resolve(); }; MixpanelLib.prototype.resume_session_recording = function() { if (this._recorder) return this._recorder["resumeRecording"](); return Promise.resolve(); }; MixpanelLib.prototype.is_recording_heatmap_data = function() { return this._get_session_replay_id() && this.get_config("record_heatmap_data"); }; MixpanelLib.prototype.get_session_recording_properties = function() { var props = {}; var replay_id = this._get_session_replay_id(); if (replay_id) props["$mp_replay_id"] = replay_id; return props; }; MixpanelLib.prototype.get_session_replay_url = function() { var replay_url = null; var replay_id = this._get_session_replay_id(); if (replay_id) replay_url = "https://mixpanel.com/projects/replay-redirect?" + _.HTTPBuildQuery({ "replay_id": replay_id, "distinct_id": this.get_distinct_id(), "token": this.get_config("token") }); return replay_url; }; MixpanelLib.prototype._get_session_replay_id = function() { var replay_id = null; if (this._recorder) replay_id = this._recorder["replayId"]; return replay_id || null; }; MixpanelLib.prototype.__get_recorder = function() { return this._recorder; }; MixpanelLib.prototype._loaded = function() { this.get_config("loaded")(this); this._set_default_superprops(); this["people"].set_once(this["persistence"].get_referrer_info()); if (this.get_config("store_google") && this.get_config("stop_utm_persistence")) { var utm_params = _.info.campaignParams(null); _.each(utm_params, function(_utm_value, utm_key) { this.unregister(utm_key); }.bind(this)); } }; MixpanelLib.prototype._set_default_superprops = function() { this["persistence"].update_search_keyword(document$1.referrer); if (this.get_config("store_google") && !this.get_config("stop_utm_persistence")) this.register(_.info.campaignParams()); if (this.get_config("save_referrer")) this["persistence"].update_referrer_info(document$1.referrer); }; MixpanelLib.prototype._dom_loaded = function() { _.each(this.__dom_loaded_queue, function(item) { this._track_dom.apply(this, item); }, this); if (!this.has_opted_out_tracking()) _.each(this.__request_queue, function(item) { this._send_request.apply(this, item); }, this); delete this.__dom_loaded_queue; delete this.__request_queue; }; MixpanelLib.prototype._track_dom = function(DomClass, args) { if (this.get_config("img")) { this.report_error("You can't use DOM tracking functions with img = true."); return false; } if (!DOM_LOADED) { this.__dom_loaded_queue.push([DomClass, args]); return false; } var dt = new DomClass().init(this); return dt.track.apply(dt, args); }; /** * _prepare_callback() should be called by callers of _send_request for use * as the callback argument. * * If there is no callback, this returns null. * If we are going to make XHR/XDR requests, this returns a function. * If we are going to use script tags, this returns a string to use as the * callback GET param. */ MixpanelLib.prototype._prepare_callback = function(callback, data) { if (_.isUndefined(callback)) return null; if (USE_XHR) { var callback_function = function(response) { callback(response, data); }; return callback_function; } else { var jsc = this["_jsc"]; var randomized_cb = "" + Math.floor(Math.random() * 1e8); var callback_string = this.get_config("callback_fn") + "[" + randomized_cb + "]"; jsc[randomized_cb] = function(response) { delete jsc[randomized_cb]; callback(response, data); }; return callback_string; } }; MixpanelLib.prototype._send_request = function(url, data, options, callback) { var succeeded = true; if (ENQUEUE_REQUESTS) { this.__request_queue.push(arguments); return succeeded; } var DEFAULT_OPTIONS = { method: this.get_config("api_method"), transport: this.get_config("api_transport"), verbose: this.get_config("verbose") }; var body_data = null; if (!callback && (_.isFunction(options) || typeof options === "string")) { callback = options; options = null; } options = _.extend(DEFAULT_OPTIONS, options || {}); if (!USE_XHR) options.method = "GET"; var use_post = options.method === "POST"; var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === "sendbeacon"; var verbose_mode = options.verbose; if (data["verbose"]) verbose_mode = true; if (this.get_config("test")) data["test"] = 1; if (verbose_mode) data["verbose"] = 1; if (this.get_config("img")) data["img"] = 1; if (!USE_XHR) { if (callback) data["callback"] = callback; else if (verbose_mode || this.get_config("test")) data["callback"] = "(function(){})"; } data["ip"] = this.get_config("ip") ? 1 : 0; data["_"] = (/* @__PURE__ */ new Date()).getTime().toString(); if (use_post) { body_data = "data=" + encodeURIComponent(data["data"]); delete data["data"]; } _.extend(data, this.get_config("api_extra_query_params")); url += "?" + _.HTTPBuildQuery(data); var lib = this; if ("img" in data) { var img = document$1.createElement("img"); img.src = url; document$1.body.appendChild(img); } else if (use_sendBeacon) { try { succeeded = sendBeacon(url, body_data); } catch (e) { lib.report_error(e); succeeded = false; } try { if (callback) callback(succeeded ? 1 : 0); } catch (e) { lib.report_error(e); } } else if (USE_XHR) try { var req = new XMLHttpRequest(); req.open(options.method, url, true); var headers = this.get_config("xhr_headers"); if (use_post) headers["Content-Type"] = "application/x-www-form-urlencoded"; _.each(headers, function(headerValue, headerName) { req.setRequestHeader(headerName, headerValue); }); if (options.timeout_ms && typeof req.timeout !== "undefined") { req.timeout = options.timeout_ms; var start_time = (/* @__PURE__ */ new Date()).getTime(); } req.withCredentials = true; req.onreadystatechange = function() { if (req.readyState === 4) if (req.status === 200) { if (callback) if (verbose_mode) { var response; try { response = _.JSONDecode(req.responseText); } catch (e) { lib.report_error(e); if (options.ignore_json_errors) response = req.responseText; else return; } callback(response); } else callback(Number(req.responseText)); } else { var error; if (req.timeout && !req.status && (/* @__PURE__ */ new Date()).getTime() - start_time >= req.timeout) error = "timeout"; else error = "Bad HTTP status: " + req.status + " " + req.statusText; lib.report_error(error); if (callback) if (verbose_mode) { var response_headers = req["responseHeaders"] || {}; callback({ status: 0, httpStatusCode: req["status"], error, retryAfter: response_headers["Retry-After"] }); } else callback(0); } }; req.send(body_data); } catch (e) { lib.report_error(e); succeeded = false; } else { var script = document$1.createElement("script"); script.type = "text/javascript"; script.async = true; script.defer = true; script.src = url; var s = document$1.getElementsByTagName("script")[0]; s.parentNode.insertBefore(script, s); } return succeeded; }; /** * _execute_array() deals with processing any mixpanel function * calls that were called before the Mixpanel library were loaded * (and are thus stored in an array so they can be called later) * * Note: we fire off all the mixpanel function calls && user defined * functions BEFORE we fire off mixpanel tracking calls. This is so * identify/register/set_config calls can properly modify early * tracking calls. * * @param {Array} array */ MixpanelLib.prototype._execute_array = function(array) { var fn_name; var alias_calls = []; var other_calls = []; var tracking_calls = []; _.each(array, function(item) { if (item) { fn_name = item[0]; if (_.isArray(fn_name)) tracking_calls.push(item); else if (typeof item === "function") item.call(this); else if (_.isArray(item) && fn_name === "alias") alias_calls.push(item); else if (_.isArray(item) && fn_name.indexOf("track") !== -1 && typeof this[fn_name] === "function") tracking_calls.push(item); else other_calls.push(item); } }, this); var execute = function(calls, context) { _.each(calls, function(item) { if (_.isArray(item[0])) { var caller = context; _.each(item, function(call) { caller = caller[call[0]].apply(caller, call.slice(1)); }); } else this[item[0]].apply(this, item.slice(1)); }, context); }; execute(alias_calls, this); execute(other_calls, this); execute(tracking_calls, this); }; MixpanelLib.prototype.are_batchers_initialized = function() { return !!this.request_batchers.events; }; MixpanelLib.prototype.get_batcher_configs = function() { var queue_prefix = "__mpq_" + this.get_config("token"); this._batcher_configs = this._batcher_configs || { events: { type: "events", api_name: "track", queue_key: queue_prefix + "_ev" }, people: { type: "people", api_name: "engage", queue_key: queue_prefix + "_pp" }, groups: { type: "groups", api_name: "groups", queue_key: queue_prefix + "_gr" } }; return this._batcher_configs; }; MixpanelLib.prototype.init_batchers = function() { if (!this.are_batchers_initialized()) { var batcher_for = _.bind(function(attrs) { return new RequestBatcher(attrs.queue_key, { libConfig: this["config"], errorReporter: this.get_config("error_reporter"), sendRequestFunc: _.bind(function(data, options, cb) { var api_routes = this.get_config("api_routes"); this._send_request(this.get_api_host(attrs.api_name) + "/" + api_routes[attrs.api_name], this._encode_data_for_request(data), options, this._prepare_callback(cb, data)); }, this), beforeSendHook: _.bind(function(item) { return this._run_hook("before_send_" + attrs.type, item); }, this), stopAllBatchingFunc: _.bind(this.stop_batch_senders, this), usePersistence: true }); }, this); var batcher_configs = this.get_batcher_configs(); this.request_batchers = { events: batcher_for(batcher_configs.events), people: batcher_for(batcher_configs.people), groups: batcher_for(batcher_configs.groups) }; } if (this.get_config("batch_autostart")) this.start_batch_senders(); }; MixpanelLib.prototype.start_batch_senders = function() { this._batchers_were_started = true; if (this.are_batchers_initialized()) { this._batch_requests = true; _.each(this.request_batchers, function(batcher) { batcher.start(); }); } }; MixpanelLib.prototype.stop_batch_senders = function() { this._batch_requests = false; _.each(this.request_batchers, function(batcher) { batcher.stop(); batcher.clear(); }); }; /** * push() keeps the standard async-array-push * behavior around after the lib is loaded. * This is only useful for external integrations that * do not wish to rely on our convenience methods * (created in the snippet). * * ### Usage: * mixpanel.push(['register', { a: 'b' }]); * * @param {Array} item A [function_name, args...] array to be executed */ MixpanelLib.prototype.push = function(item) { this._execute_array([item]); }; /** * Disable events on the Mixpanel object. If passed no arguments, * this function disables tracking of any event. If passed an * array of event names, those events will be disabled, but other * events will continue to be tracked. * * Note: this function does not stop other mixpanel functions from * firing, such as register() or people.set(). * * @param {Array} [events] An array of event names to disable */ MixpanelLib.prototype.disable = function(events) { if (typeof events === "undefined") this._flags.disable_all_events = true; else this.__disabled_events = this.__disabled_events.concat(events); }; MixpanelLib.prototype._encode_data_for_request = function(data) { var encoded_data = JSONStringify(data); if (this.get_config("api_payload_format") === PAYLOAD_TYPE_BASE64) encoded_data = _.base64Encode(encoded_data); return { "data": encoded_data }; }; MixpanelLib.prototype._track_or_batch = function(options, callback) { var truncated_data = _.truncate(options.data, 255); var endpoint = options.endpoint; var batcher = options.batcher; var should_send_immediately = options.should_send_immediately; var send_request_options = options.send_request_options || {}; callback = callback || NOOP_FUNC; var request_enqueued_or_initiated = true; var send_request_immediately = _.bind(function() { if (!send_request_options.skip_hooks) truncated_data = this._run_hook("before_send_" + options.type, truncated_data); if (truncated_data) { console$1.log("MIXPANEL REQUEST:"); console$1.log(truncated_data); return this._send_request(endpoint, this._encode_data_for_request(truncated_data), send_request_options, this._prepare_callback(callback, truncated_data)); } else return null; }, this); if (this._batch_requests && !should_send_immediately) batcher.enqueue(truncated_data).then(function(succeeded) { if (succeeded) callback(1, truncated_data); else send_request_immediately(); }); else request_enqueued_or_initiated = send_request_immediately(); return request_enqueued_or_initiated && truncated_data; }; /** * Track an event. This is the most important and * frequently used Mixpanel function. * * ### Usage: * * // track an event named 'Registered' * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21}); * * // track an event using navigator.sendBeacon * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'}); * * To track link clicks or form submissions, see track_links() or track_forms(). * * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc. * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself. * @param {Object} [options] Optional configuration for this track request. * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon'). * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately. * @param {Function} [callback] If provided, the callback function will be called after tracking the event. * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object * with the tracking payload sent to the API server is returned; otherwise false. */ MixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) { if (!callback && typeof options === "function") { callback = options; options = null; } options = options || {}; var transport = options["transport"]; if (transport) options.transport = transport; var should_send_immediately = options["send_immediately"]; if (typeof callback !== "function") callback = NOOP_FUNC; if (_.isUndefined(event_name)) { this.report_error("No event name provided to mixpanel.track"); return; } if (this._event_is_disabled(event_name)) { callback(0); return; } properties = _.extend({}, properties); properties["token"] = this.get_config("token"); var start_timestamp = this["persistence"].remove_event_timer(event_name); if (!_.isUndefined(start_timestamp)) { var duration_in_ms = (/* @__PURE__ */ new Date()).getTime() - start_timestamp; properties["$duration"] = parseFloat((duration_in_ms / 1e3).toFixed(3)); } this._set_default_superprops(); var marketing_properties = this.get_config("track_marketing") ? _.info.marketingParams() : {}; properties = _.extend({}, _.info.properties({ "mp_loader": this.get_config("mp_loader") }), marketing_properties, this["persistence"].properties(), this.unpersisted_superprops, this.get_session_recording_properties(), properties); var property_blacklist = this.get_config("property_blacklist"); if (_.isArray(property_blacklist)) _.each(property_blacklist, function(blacklisted_prop) { delete properties[blacklisted_prop]; }); else this.report_error("Invalid value for property_blacklist config: " + property_blacklist); var data = { "event": event_name, "properties": properties }; return this._track_or_batch({ type: "events", data, endpoint: this.get_api_host("events") + "/" + this.get_config("api_routes")["track"], batcher: this.request_batchers.events, should_send_immediately, send_request_options: options }, callback); }); /** * Register the current user into one/many groups. * * ### Usage: * * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs * mixpanel.set_group('company', 'mixpanel') * mixpanel.set_group('company', 128746312) * * @param {String} group_key Group key * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID * @param {Function} [callback] If provided, the callback will be called after tracking the event. * */ MixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) { if (!_.isArray(group_ids)) group_ids = [group_ids]; var prop = {}; prop[group_key] = group_ids; this.register(prop); return this["people"].set(group_key, group_ids, callback); }); /** * Add a new group for this user. * * ### Usage: * * mixpanel.add_group('company', 'mixpanel') * * @param {String} group_key Group key * @param {*} group_id A valid Mixpanel property type * @param {Function} [callback] If provided, the callback will be called after tracking the event. */ MixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) { var old_values = this.get_property(group_key); var prop = {}; if (old_values === void 0) { prop[group_key] = [group_id]; this.register(prop); } else if (old_values.indexOf(group_id) === -1) { old_values.push(group_id); prop[group_key] = old_values; this.register(prop); } return this["people"].union(group_key, group_id, callback); }); /** * Remove a group from this user. * * ### Usage: * * mixpanel.remove_group('company', 'mixpanel') * * @param {String} group_key Group key * @param {*} group_id A valid Mixpanel property type * @param {Function} [callback] If provided, the callback will be called after tracking the event. */ MixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) { var old_value = this.get_property(group_key); if (old_value !== void 0) { var idx = old_value.indexOf(group_id); if (idx > -1) { old_value.splice(idx, 1); this.register({ group_key: old_value }); } if (old_value.length === 0) this.unregister(group_key); } return this["people"].remove(group_key, group_id, callback); }); /** * Track an event with specific groups. * * ### Usage: * * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']}) * * @param {String} event_name The name of the event (see `mixpanel.track()`) * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`) * @param {Object=} groups An object mapping group name keys to one or more values * @param {Function} [callback] If provided, the callback will be called after tracking the event. */ MixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) { var tracking_props = _.extend({}, properties || {}); _.each(groups, function(v, k) { if (v !== null && v !== void 0) tracking_props[k] = v; }); return this.track(event_name, tracking_props, callback); }); MixpanelLib.prototype._create_map_key = function(group_key, group_id) { return group_key + "_" + JSON.stringify(group_id); }; MixpanelLib.prototype._remove_group_from_cache = function(group_key, group_id) { delete this._cached_groups[this._create_map_key(group_key, group_id)]; }; /** * Look up reference to a Mixpanel group * * ### Usage: * * mixpanel.get_group(group_key, group_id) * * @param {String} group_key Group key * @param {Object} group_id A valid Mixpanel property type * @returns {Object} A MixpanelGroup identifier */ MixpanelLib.prototype.get_group = function(group_key, group_id) { var map_key = this._create_map_key(group_key, group_id); var group = this._cached_groups[map_key]; if (group === void 0 || group._group_key !== group_key || group._group_id !== group_id) { group = new MixpanelGroup(); group._init(this, group_key, group_id); this._cached_groups[map_key] = group; } return group; }; /** * Track a default Mixpanel page view event, which includes extra default event properties to * improve page view data. * * ### Usage: * * // track a default $mp_web_page_view event * mixpanel.track_pageview(); * * // track a page view event with additional event properties * mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'}); * * // example approach to track page views on different page types as event properties * mixpanel.track_pageview({'page': 'pricing'}); * mixpanel.track_pageview({'page': 'homepage'}); * * // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for * // individual pages on the same site or product. Use cases for custom event_name may be page * // views on different products or internal applications that are considered completely separate * mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'}); * * ### Notes: * * The `config.track_pageview` option for mixpanel.init() * may be turned on for tracking page loads automatically. * * // track only page loads * mixpanel.init(PROJECT_TOKEN, {track_pageview: true}); * * // track when the URL changes in any manner * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'full-url'}); * * // track when the URL changes, ignoring any changes in the hash part * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path-and-query-string'}); * * // track when the path changes, ignoring any query parameter or hash changes * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path'}); * * @param {Object} [properties] An optional set of additional properties to send with the page view event * @param {Object} [options] Page view tracking options * @param {String} [options.event_name] - Alternate name for the tracking event * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object * with the tracking payload sent to the API server is returned; otherwise false. */ MixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) { if (typeof properties !== "object") properties = {}; options = options || {}; var event_name = options["event_name"] || "$mp_web_page_view"; var default_page_properties = _.extend(_.info.mpPageViewProperties(), _.info.campaignParams(), _.info.clickParams()); var event_properties = _.extend({}, default_page_properties, properties); return this.track(event_name, event_properties); }); /** * Track clicks on a set of document elements. Selector must be a * valid query. Elements must exist on the page at the time track_links is called. * * ### Usage: * * // track click for link id #nav * mixpanel.track_links('#nav', 'Clicked Nav Link'); * * ### Notes: * * This function will wait up to 300 ms for the Mixpanel * servers to respond. If they have not responded by that time * it will head to the link without ensuring that your event * has been tracked. To configure this timeout please see the * set_config() documentation below. * * If you pass a function in as the properties argument, the * function will receive the DOMElement that triggered the * event as an argument. You are expected to return an object * from the function; any properties defined on this object * will be sent to mixpanel as event properties. * * @type {Function} * @param {Object|String} query A valid DOM query, element or jQuery-esque list * @param {String} event_name The name of the event to track * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement */ MixpanelLib.prototype.track_links = function() { return this._track_dom.call(this, LinkTracker, arguments); }; /** * Track form submissions. Selector must be a valid query. * * ### Usage: * * // track submission for form id 'register' * mixpanel.track_forms('#register', 'Created Account'); * * ### Notes: * * This function will wait up to 300 ms for the mixpanel * servers to respond, if they have not responded by that time * it will head to the link without ensuring that your event * has been tracked. To configure this timeout please see the * set_config() documentation below. * * If you pass a function in as the properties argument, the * function will receive the DOMElement that triggered the * event as an argument. You are expected to return an object * from the function; any properties defined on this object * will be sent to mixpanel as event properties. * * @type {Function} * @param {Object|String} query A valid DOM query, element or jQuery-esque list * @param {String} event_name The name of the event to track * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement */ MixpanelLib.prototype.track_forms = function() { return this._track_dom.call(this, FormTracker, arguments); }; /** * Time an event by including the time between this call and a * later 'track' call for the same event in the properties sent * with the event. * * ### Usage: * * // time an event named 'Registered' * mixpanel.time_event('Registered'); * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21}); * * When called for a particular event name, the next track call for that event * name will include the elapsed time between the 'time_event' and 'track' * calls. This value is stored as seconds in the '$duration' property. * * @param {String} event_name The name of the event. */ MixpanelLib.prototype.time_event = function(event_name) { if (_.isUndefined(event_name)) { this.report_error("No event name provided to mixpanel.time_event"); return; } if (this._event_is_disabled(event_name)) return; this["persistence"].set_event_timer(event_name, (/* @__PURE__ */ new Date()).getTime()); }; REGISTER_DEFAULTS = { "persistent": true }; options_for_register = function(days_or_options) { var options; if (_.isObject(days_or_options)) options = days_or_options; else if (!_.isUndefined(days_or_options)) options = { "days": days_or_options }; else options = {}; return _.extend({}, REGISTER_DEFAULTS, options); }; /** * Register a set of super properties, which are included with all * events. This will overwrite previous super property values. * * ### Usage: * * // register 'Gender' as a super property * mixpanel.register({'Gender': 'Female'}); * * // register several super properties when a user signs up * mixpanel.register({ * 'Email': 'jdoe@example.com', * 'Account Type': 'Free' * }); * * // register only for the current pageload * mixpanel.register({'Name': 'Pat'}, {persistent: false}); * * @param {Object} properties An associative array of properties to store about the user * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props) * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props) * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage) */ MixpanelLib.prototype.register = function(props, days_or_options) { var options = options_for_register(days_or_options); if (options["persistent"]) this["persistence"].register(props, options["days"]); else _.extend(this.unpersisted_superprops, props); }; /** * Register a set of super properties only once. This will not * overwrite previous super property values, unlike register(). * * ### Usage: * * // register a super property for the first time only * mixpanel.register_once({ * 'First Login Date': new Date().toISOString() * }); * * // register once, only for the current pageload * mixpanel.register_once({ * 'First interaction time': new Date().toISOString() * }, 'None', {persistent: false}); * * ### Notes: * * If default_value is specified, current super properties * with that value will be overwritten. * * @param {Object} properties An associative array of properties to store about the user * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None' * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props) * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props) * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage) */ MixpanelLib.prototype.register_once = function(props, default_value, days_or_options) { var options = options_for_register(days_or_options); if (options["persistent"]) this["persistence"].register_once(props, default_value, options["days"]); else { if (typeof default_value === "undefined") default_value = "None"; _.each(props, function(val, prop) { if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) this.unpersisted_superprops[prop] = val; }, this); } }; /** * Delete a super property stored with the current user. * * @param {String} property The name of the super property to remove * @param {Object} [options] * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage) */ MixpanelLib.prototype.unregister = function(property, options) { options = options_for_register(options); if (options["persistent"]) this["persistence"].unregister(property); else delete this.unpersisted_superprops[property]; }; MixpanelLib.prototype._register_single = function(prop, value) { var props = {}; props[prop] = value; this.register(props); }; /** * Identify a user with a unique ID to track user activity across * devices, tie a user to their events, and create a user profile. * If you never call this method, unique visitors are tracked using * a UUID generated the first time they visit the site. * * Call identify when you know the identity of the current user, * typically after login or signup. We recommend against using * identify for anonymous visitors to your site. * * ### Notes: * If your project has * ID Merge * enabled, the identify method will connect pre- and * post-authentication events when appropriate. * * If your project does not have ID Merge enabled, identify will * change the user's local distinct_id to the unique ID you pass. * Events tracked prior to authentication will not be connected * to the same user identity. If ID Merge is disabled, alias can * be used to connect pre- and post-registration events. * * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used. */ MixpanelLib.prototype.identify = function(new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback) { var previous_distinct_id = this.get_distinct_id(); if (new_distinct_id && previous_distinct_id !== new_distinct_id) { if (typeof new_distinct_id === "string" && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) { this.report_error("distinct_id cannot have $device: prefix"); return -1; } this.register({ "$user_id": new_distinct_id }); } if (!this.get_property("$device_id")) { var device_id = previous_distinct_id; this.register_once({ "$had_persisted_distinct_id": true, "$device_id": device_id }, ""); } if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) { this.unregister(ALIAS_ID_KEY); this.register({ "distinct_id": new_distinct_id }); } this._flags.identify_called = true; this["people"]._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback); if (new_distinct_id !== previous_distinct_id) this.track("$identify", { "distinct_id": new_distinct_id, "$anon_distinct_id": previous_distinct_id }, { skip_hooks: true }); if (new_distinct_id !== previous_distinct_id) this.flags.fetchFlags(); }; /** * Clears super properties and generates a new random distinct_id for this instance. * Useful for clearing data when a user logs out. */ MixpanelLib.prototype.reset = function() { this.stop_session_recording(); this["persistence"].clear(); this._flags.identify_called = false; var uuid = _.UUID(); this.register_once({ "distinct_id": DEVICE_ID_PREFIX + uuid, "$device_id": uuid }, ""); this._check_and_start_session_recording(); }; /** * Returns the current distinct id of the user. This is either the id automatically * generated by the library or the id that has been passed by a call to identify(). * * ### Notes: * * get_distinct_id() can only be called after the Mixpanel library has finished loading. * init() has a loaded function available to handle this automatically. For example: * * // set distinct_id after the mixpanel library has loaded * mixpanel.init('YOUR PROJECT TOKEN', { * loaded: function(mixpanel) { * distinct_id = mixpanel.get_distinct_id(); * } * }); */ MixpanelLib.prototype.get_distinct_id = function() { return this.get_property("distinct_id"); }; /** * The alias method creates an alias which Mixpanel will use to * remap one id to another. Multiple aliases can point to the * same identifier. * * The following is a valid use of alias: * * mixpanel.alias('new_id', 'existing_id'); * // You can add multiple id aliases to the existing ID * mixpanel.alias('newer_id', 'existing_id'); * * Aliases can also be chained - the following is a valid example: * * mixpanel.alias('new_id', 'existing_id'); * // chain newer_id - new_id - existing_id * mixpanel.alias('newer_id', 'new_id'); * * Aliases cannot point to multiple identifiers - the following * example will not work: * * mixpanel.alias('new_id', 'existing_id'); * // this is invalid as 'new_id' already points to 'existing_id' * mixpanel.alias('new_id', 'newer_id'); * * ### Notes: * * If your project does not have * ID Merge * enabled, the best practice is to call alias once when a unique * ID is first created for a user (e.g., when a user first registers * for an account). Do not use alias multiple times for a single * user without ID Merge enabled. * * @param {String} alias A unique identifier that you want to use for this user in the future. * @param {String} [original] The current identifier being used for this user. */ MixpanelLib.prototype.alias = function(alias, original) { if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) { this.report_error("Attempting to create alias for existing People user - aborting."); return -2; } var _this = this; if (_.isUndefined(original)) original = this.get_distinct_id(); if (alias !== original) { this._register_single(ALIAS_ID_KEY, alias); return this.track("$create_alias", { "alias": alias, "distinct_id": original }, { skip_hooks: true }, function() { _this.identify(alias); }); } else { this.report_error("alias matches current distinct_id - skipping api call."); this.identify(alias); return -1; } }; /** * Provide a string to recognize the user by. The string passed to * this method will appear in the Mixpanel Streams product rather * than an automatically generated name. Name tags do not have to * be unique. * * This value will only be included in Streams data. * * @param {String} name_tag A human readable name for the user * @deprecated */ MixpanelLib.prototype.name_tag = function(name_tag) { this._register_single("mp_name_tag", name_tag); }; /** * Update the configuration of a mixpanel library instance. * * The default config is: * * { * // host for requests (customizable for e.g. a local proxy) * api_host: 'https://api-js.mixpanel.com', * * // endpoints for different types of requests * api_routes: { * track: 'track/', * engage: 'engage/', * groups: 'groups/', * } * * // HTTP method for tracking requests * api_method: 'POST' * * // transport for sending requests ('XHR' or 'sendBeacon') * // NB: sendBeacon should only be used for scenarios such as * // page unload where a "best-effort" attempt to send is * // acceptable; the sendBeacon API does not support callbacks * // or any way to know the result of the request. Mixpanel * // tracking via sendBeacon will not support any event- * // batching or retry mechanisms. * api_transport: 'XHR' * * // request-batching/queueing/retry * batch_requests: true, * * // maximum number of events/updates to send in a single * // network request * batch_size: 50, * * // milliseconds to wait between sending batch requests * batch_flush_interval_ms: 5000, * * // milliseconds to wait for network responses to batch requests * // before they are considered timed-out and retried * batch_request_timeout_ms: 90000, * * // override value for cookie domain, only useful for ensuring * // correct cross-subdomain cookies on unusual domains like * // subdomain.mainsite.avocat.fr; NB this cannot be used to * // set cookies on a different domain than the current origin * cookie_domain: '' * * // super properties cookie expiration (in days) * cookie_expiration: 365 * * // if true, cookie will be set with SameSite=None; Secure * // this is only useful in special situations, like embedded * // 3rd-party iframes that set up a Mixpanel instance * cross_site_cookie: false * * // super properties span subdomains * cross_subdomain_cookie: true * * // debug mode * debug: false * * // if this is true, the mixpanel cookie or localStorage entry * // will be deleted, and no user persistence will take place * disable_persistence: false * * // if this is true, Mixpanel will automatically determine * // City, Region and Country data using the IP address of * //the client * ip: true * * // opt users out of tracking by this Mixpanel instance by default * opt_out_tracking_by_default: false * * // opt users out of browser data storage by this Mixpanel instance by default * opt_out_persistence_by_default: false * * // persistence mechanism used by opt-in/opt-out methods - cookie * // or localStorage - falls back to cookie if localStorage is unavailable * opt_out_tracking_persistence_type: 'localStorage' * * // customize the name of cookie/localStorage set by opt-in/opt-out methods * opt_out_tracking_cookie_prefix: null * * // type of persistent store for super properties (cookie/ * // localStorage) if set to 'localStorage', any existing * // mixpanel cookie value with the same persistence_name * // will be transferred to localStorage and deleted * persistence: 'cookie' * * // name for super properties persistent store * persistence_name: '' * * // names of properties/superproperties which should never * // be sent with track() calls * property_blacklist: [] * * // if this is true, mixpanel cookies will be marked as * // secure, meaning they will only be transmitted over https * secure_cookie: false * * // disables enriching user profiles with first touch marketing data * skip_first_touch_marketing: false * * // the amount of time track_links will * // wait for Mixpanel's servers to respond * track_links_timeout: 300 * * // adds any UTM parameters and click IDs present on the page to any events fired * track_marketing: true * * // enables automatic page view tracking using default page view events through * // the track_pageview() method * track_pageview: false * * // if you set upgrade to be true, the library will check for * // a cookie from our old js library and import super * // properties from it, then the old cookie is deleted * // The upgrade config option only works in the initialization, * // so make sure you set it when you create the library. * upgrade: false * * // extra HTTP request headers to set for each API request, in * // the format {'Header-Name': value} * xhr_headers: {} * * // whether to ignore or respect the web browser's Do Not Track setting * ignore_dnt: false * } * * * @param {Object} config A dictionary of new configuration values to update */ MixpanelLib.prototype.set_config = function(config) { if (_.isObject(config)) { _.extend(this["config"], config); if (config["batch_size"]) _.each(this.request_batchers, function(batcher) { batcher.resetBatchSize(); }); if (!this.get_config("persistence_name")) this["config"]["persistence_name"] = this["config"]["cookie_name"]; if (!this.get_config("disable_persistence")) this["config"]["disable_persistence"] = this["config"]["disable_cookie"]; if (this["persistence"]) this["persistence"].update_config(this["config"]); Config.DEBUG = Config.DEBUG || this.get_config("debug"); if (("autocapture" in config || "record_heatmap_data" in config) && this.autocapture) this.autocapture.init(); } }; /** * returns the current config object for the library. */ MixpanelLib.prototype.get_config = function(prop_name) { return this["config"][prop_name]; }; /** * Fetch a hook function from config, with safe default, and run it * against the given arguments * @param {string} hook_name which hook to retrieve * @returns {any|null} return value of user-provided hook, or null if nothing was returned */ MixpanelLib.prototype._run_hook = function(hook_name) { var ret = (this["config"]["hooks"][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1)); if (typeof ret === "undefined") { this.report_error(hook_name + " hook did not return a value"); ret = null; } return ret; }; /** * Returns the value of the super property named property_name. If no such * property is set, get_property() will return the undefined value. * * ### Notes: * * get_property() can only be called after the Mixpanel library has finished loading. * init() has a loaded function available to handle this automatically. For example: * * // grab value for 'user_id' after the mixpanel library has loaded * mixpanel.init('YOUR PROJECT TOKEN', { * loaded: function(mixpanel) { * user_id = mixpanel.get_property('user_id'); * } * }); * * @param {String} property_name The name of the super property you want to retrieve */ MixpanelLib.prototype.get_property = function(property_name) { return this["persistence"].load_prop([property_name]); }; /** * Get the API host for a specific endpoint type, falling back to the default api_host if not specified * * @param {String} endpoint_type The type of endpoint (e.g., "events", "people", "groups") * @returns {String} The API host to use for this endpoint */ MixpanelLib.prototype.get_api_host = function(endpoint_type) { return this.get_config("api_hosts")[endpoint_type] || this.get_config("api_host"); }; MixpanelLib.prototype.toString = function() { var name = this.get_config("name"); if (name !== PRIMARY_INSTANCE_NAME) name = PRIMARY_INSTANCE_NAME + "." + name; return name; }; MixpanelLib.prototype._event_is_disabled = function(event_name) { return _.isBlockedUA(userAgent) || this._flags.disable_all_events || _.include(this.__disabled_events, event_name); }; MixpanelLib.prototype._gdpr_init = function() { if (this.get_config("opt_out_tracking_persistence_type") === "localStorage" && _.localStorage.is_supported()) { if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({ "persistence_type": "cookie" })) this.opt_in_tracking({ "enable_persistence": false }); if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({ "persistence_type": "cookie" })) this.opt_out_tracking({ "clear_persistence": false }); this.clear_opt_in_out_tracking({ "persistence_type": "cookie", "enable_persistence": false }); } if (this.has_opted_out_tracking()) this._gdpr_update_persistence({ "clear_persistence": true }); else if (!this.has_opted_in_tracking() && (this.get_config("opt_out_tracking_by_default") || _.cookie.get("mp_optout"))) { _.cookie.remove("mp_optout"); this.opt_out_tracking({ "clear_persistence": this.get_config("opt_out_persistence_by_default") }); } }; /** * Enable or disable persistence based on options * only enable/disable if persistence is not already in this state * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence */ MixpanelLib.prototype._gdpr_update_persistence = function(options) { var disabled; if (options && options["clear_persistence"]) disabled = true; else if (options && options["enable_persistence"]) disabled = false; else return; if (!this.get_config("disable_persistence") && this["persistence"].disabled !== disabled) this["persistence"].set_disabled(disabled); if (disabled) { this.stop_batch_senders(); this.stop_session_recording(); } else if (this._batchers_were_started) this.start_batch_senders(); }; MixpanelLib.prototype._gdpr_call_func = function(func, options) { options = _.extend({ "track": _.bind(this.track, this), "persistence_type": this.get_config("opt_out_tracking_persistence_type"), "cookie_prefix": this.get_config("opt_out_tracking_cookie_prefix"), "cookie_expiration": this.get_config("cookie_expiration"), "cross_site_cookie": this.get_config("cross_site_cookie"), "cross_subdomain_cookie": this.get_config("cross_subdomain_cookie"), "cookie_domain": this.get_config("cookie_domain"), "secure_cookie": this.get_config("secure_cookie"), "ignore_dnt": this.get_config("ignore_dnt") }, options); if (!_.localStorage.is_supported()) options["persistence_type"] = "cookie"; return func(this.get_config("token"), { track: options["track"], trackEventName: options["track_event_name"], trackProperties: options["track_properties"], persistenceType: options["persistence_type"], persistencePrefix: options["cookie_prefix"], cookieDomain: options["cookie_domain"], cookieExpiration: options["cookie_expiration"], crossSiteCookie: options["cross_site_cookie"], crossSubdomainCookie: options["cross_subdomain_cookie"], secureCookie: options["secure_cookie"], ignoreDnt: options["ignore_dnt"] }); }; /** * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance * * ### Usage: * * // opt user in * mixpanel.opt_in_tracking(); * * // opt user in with specific event name, properties, cookie configuration * mixpanel.opt_in_tracking({ * track_event_name: 'User opted in', * track_event_properties: { * 'Email': 'jdoe@example.com' * }, * cookie_expiration: 30, * secure_cookie: true * }); * * @param {Object} [options] A dictionary of config options to override * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method) * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config) * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config) */ MixpanelLib.prototype.opt_in_tracking = function(options) { options = _.extend({ "enable_persistence": true }, options); this._gdpr_call_func(optIn, options); this._gdpr_update_persistence(options); }; /** * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance * * ### Usage: * * // opt user out * mixpanel.opt_out_tracking(); * * // opt user out with different cookie configuration from Mixpanel instance * mixpanel.opt_out_tracking({ * cookie_expiration: 30, * secure_cookie: true * }); * * @param {Object} [options] A dictionary of config options to override * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config) * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config) */ MixpanelLib.prototype.opt_out_tracking = function(options) { options = _.extend({ "clear_persistence": true, "delete_user": true }, options); if (options["delete_user"] && this["people"] && this["people"]._identify_called()) { this["people"].delete_user(); this["people"].clear_charges(); } this._gdpr_call_func(optOut, options); this._gdpr_update_persistence(options); }; /** * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance * * ### Usage: * * var has_opted_in = mixpanel.has_opted_in_tracking(); * // use has_opted_in value * * @param {Object} [options] A dictionary of config options to override * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name * @returns {boolean} current opt-in status */ MixpanelLib.prototype.has_opted_in_tracking = function(options) { return this._gdpr_call_func(hasOptedIn, options); }; /** * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance * * ### Usage: * * var has_opted_out = mixpanel.has_opted_out_tracking(); * // use has_opted_out value * * @param {Object} [options] A dictionary of config options to override * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name * @returns {boolean} current opt-out status */ MixpanelLib.prototype.has_opted_out_tracking = function(options) { return this._gdpr_call_func(hasOptedOut, options); }; /** * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance * * ### Usage: * * // clear user's opt-in/out status * mixpanel.clear_opt_in_out_tracking(); * * // clear user's opt-in/out status with specific cookie configuration - should match * // configuration used when opt_in_tracking/opt_out_tracking methods were called. * mixpanel.clear_opt_in_out_tracking({ * cookie_expiration: 30, * secure_cookie: true * }); * * @param {Object} [options] A dictionary of config options to override * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config) * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config) * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config) */ MixpanelLib.prototype.clear_opt_in_out_tracking = function(options) { options = _.extend({ "enable_persistence": true }, options); this._gdpr_call_func(clearOptInOut, options); this._gdpr_update_persistence(options); }; MixpanelLib.prototype.report_error = function(msg, err) { console$1.error.apply(console$1.error, arguments); try { if (!err && !(msg instanceof Error)) msg = new Error(msg); this.get_config("error_reporter")(msg, err); } catch (err) { console$1.error(err); } }; MixpanelLib.prototype["init"] = MixpanelLib.prototype.init; MixpanelLib.prototype["reset"] = MixpanelLib.prototype.reset; MixpanelLib.prototype["disable"] = MixpanelLib.prototype.disable; MixpanelLib.prototype["time_event"] = MixpanelLib.prototype.time_event; MixpanelLib.prototype["track"] = MixpanelLib.prototype.track; MixpanelLib.prototype["track_links"] = MixpanelLib.prototype.track_links; MixpanelLib.prototype["track_forms"] = MixpanelLib.prototype.track_forms; MixpanelLib.prototype["track_pageview"] = MixpanelLib.prototype.track_pageview; MixpanelLib.prototype["register"] = MixpanelLib.prototype.register; MixpanelLib.prototype["register_once"] = MixpanelLib.prototype.register_once; MixpanelLib.prototype["unregister"] = MixpanelLib.prototype.unregister; MixpanelLib.prototype["identify"] = MixpanelLib.prototype.identify; MixpanelLib.prototype["alias"] = MixpanelLib.prototype.alias; MixpanelLib.prototype["name_tag"] = MixpanelLib.prototype.name_tag; MixpanelLib.prototype["set_config"] = MixpanelLib.prototype.set_config; MixpanelLib.prototype["get_config"] = MixpanelLib.prototype.get_config; MixpanelLib.prototype["get_api_host"] = MixpanelLib.prototype.get_api_host; MixpanelLib.prototype["get_property"] = MixpanelLib.prototype.get_property; MixpanelLib.prototype["get_distinct_id"] = MixpanelLib.prototype.get_distinct_id; MixpanelLib.prototype["toString"] = MixpanelLib.prototype.toString; MixpanelLib.prototype["opt_out_tracking"] = MixpanelLib.prototype.opt_out_tracking; MixpanelLib.prototype["opt_in_tracking"] = MixpanelLib.prototype.opt_in_tracking; MixpanelLib.prototype["has_opted_out_tracking"] = MixpanelLib.prototype.has_opted_out_tracking; MixpanelLib.prototype["has_opted_in_tracking"] = MixpanelLib.prototype.has_opted_in_tracking; MixpanelLib.prototype["clear_opt_in_out_tracking"] = MixpanelLib.prototype.clear_opt_in_out_tracking; MixpanelLib.prototype["get_group"] = MixpanelLib.prototype.get_group; MixpanelLib.prototype["set_group"] = MixpanelLib.prototype.set_group; MixpanelLib.prototype["add_group"] = MixpanelLib.prototype.add_group; MixpanelLib.prototype["remove_group"] = MixpanelLib.prototype.remove_group; MixpanelLib.prototype["track_with_groups"] = MixpanelLib.prototype.track_with_groups; MixpanelLib.prototype["start_batch_senders"] = MixpanelLib.prototype.start_batch_senders; MixpanelLib.prototype["stop_batch_senders"] = MixpanelLib.prototype.stop_batch_senders; MixpanelLib.prototype["start_session_recording"] = MixpanelLib.prototype.start_session_recording; MixpanelLib.prototype["stop_session_recording"] = MixpanelLib.prototype.stop_session_recording; MixpanelLib.prototype["pause_session_recording"] = MixpanelLib.prototype.pause_session_recording; MixpanelLib.prototype["resume_session_recording"] = MixpanelLib.prototype.resume_session_recording; MixpanelLib.prototype["get_session_recording_properties"] = MixpanelLib.prototype.get_session_recording_properties; MixpanelLib.prototype["get_session_replay_url"] = MixpanelLib.prototype.get_session_replay_url; MixpanelLib.prototype["get_tab_id"] = MixpanelLib.prototype.get_tab_id; MixpanelLib.prototype["DEFAULT_API_ROUTES"] = DEFAULT_API_ROUTES; MixpanelLib.prototype["__get_recorder"] = MixpanelLib.prototype.__get_recorder; MixpanelPersistence.prototype["properties"] = MixpanelPersistence.prototype.properties; MixpanelPersistence.prototype["update_search_keyword"] = MixpanelPersistence.prototype.update_search_keyword; MixpanelPersistence.prototype["update_referrer_info"] = MixpanelPersistence.prototype.update_referrer_info; MixpanelPersistence.prototype["get_cross_subdomain"] = MixpanelPersistence.prototype.get_cross_subdomain; MixpanelPersistence.prototype["clear"] = MixpanelPersistence.prototype.clear; instances = {}; extend_mp = function() { _.each(instances, function(instance, name) { if (name !== PRIMARY_INSTANCE_NAME) mixpanel_master[name] = instance; }); mixpanel_master["_"] = _; }; override_mp_init_func = function() { mixpanel_master["init"] = function(token, config, name) { if (name) { if (!mixpanel_master[name]) { mixpanel_master[name] = instances[name] = create_mplib(token, config, name); mixpanel_master[name]._loaded(); } return mixpanel_master[name]; } else { var instance = mixpanel_master; if (instances[PRIMARY_INSTANCE_NAME]) instance = instances[PRIMARY_INSTANCE_NAME]; else if (token) { instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME); instance._loaded(); instances[PRIMARY_INSTANCE_NAME] = instance; } mixpanel_master = instance; if (init_type === INIT_SNIPPET) win[PRIMARY_INSTANCE_NAME] = mixpanel_master; extend_mp(); } }; }; add_dom_loaded_handler = function() { function dom_loaded_handler() { if (dom_loaded_handler.done) return; dom_loaded_handler.done = true; DOM_LOADED = true; ENQUEUE_REQUESTS = false; _.each(instances, function(inst) { inst._dom_loaded(); }); } function do_scroll_check() { try { document$1.documentElement.doScroll("left"); } catch (e) { setTimeout(do_scroll_check, 1); return; } dom_loaded_handler(); } if (document$1.addEventListener) if (document$1.readyState === "complete") dom_loaded_handler(); else document$1.addEventListener("DOMContentLoaded", dom_loaded_handler, false); else if (document$1.attachEvent) { document$1.attachEvent("onreadystatechange", dom_loaded_handler); var toplevel = false; try { toplevel = win.frameElement === null; } catch (e) {} if (document$1.documentElement.doScroll && toplevel) do_scroll_check(); } _.register_event(win, "load", dom_loaded_handler, true); }; mixpanel = init_as_module(loadNoop); })); //#endregion //#region app/modules/onboarding/assets/js/utils/modules/event-dispatcher.js function ownKeys$5(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; } function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function canSendEvents() { var _elementorCommon; return ((_elementorCommon = elementorCommon) === null || _elementorCommon === void 0 || (_elementorCommon = _elementorCommon.config) === null || _elementorCommon === void 0 || (_elementorCommon = _elementorCommon.editor_events) === null || _elementorCommon === void 0 ? void 0 : _elementorCommon.can_send_events) || false; } function isEventsManagerAvailable() { var _elementorCommon2; return ((_elementorCommon2 = elementorCommon) === null || _elementorCommon2 === void 0 ? void 0 : _elementorCommon2.eventsManager) && "function" === typeof elementorCommon.eventsManager.dispatchEvent; } function isMixpanelInitialized() { if ("undefined" === typeof mixpanel || !mixpanel) return false; try { var distinctId = mixpanel.get_distinct_id(); return distinctId !== void 0 && distinctId !== null; } catch (error) { return false; } } function initializeAndEnableTracking() { if (!isEventsManagerAvailable()) return; if (!isMixpanelInitialized()) elementorCommon.eventsManager.initializeMixpanel(); if (!elementorCommon.eventsManager.trackingEnabled) elementorCommon.eventsManager.enableTracking(); } function dispatch(eventName) { var payload = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; if (!isEventsManagerAvailable()) return false; if (!canSendEvents()) return false; try { return elementorCommon.eventsManager.dispatchEvent(eventName, payload); } catch (error) { return false; } } function dispatchIfAllowed(eventName) { var payload = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; if (canSendEvents()) return dispatch(eventName, payload); return false; } function createEventPayload() { return _objectSpread$5({ location: "plugin_onboarding" }, arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}); } function createStepEventPayload(stepNumber, stepName) { var additionalData = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; return createEventPayload(_objectSpread$5({ step_number: stepNumber, step_name: stepName }, additionalData)); } function createEditorEventPayload() { return _objectSpread$5({ location: "editor" }, arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}); } function dispatchStepEvent(eventName, stepNumber, stepName) { return dispatch(eventName, createStepEventPayload(stepNumber, stepName, arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {})); } function dispatchVariantAwareEvent(eventName, payload) { return dispatch(eventName, payload); } function dispatchEditorEvent(eventName) { return dispatch(eventName, createEditorEventPayload(arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {})); } function getClickEventName(clickCount) { return { 1: ONBOARDING_EVENTS_MAP.POST_ONBOARDING_1ST_CLICK, 2: ONBOARDING_EVENTS_MAP.POST_ONBOARDING_2ND_CLICK, 3: ONBOARDING_EVENTS_MAP.POST_ONBOARDING_3RD_CLICK }[clickCount] || null; } function formatClickAction(title, selector) { if (!title && !selector) return ""; if (!title) return selector; if (!selector) return title; return "".concat(title, " / ").concat(selector); } function dispatchClickEvent(clickCount, clickData) { var siteStarterChoice = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; var eventName = getClickEventName(clickCount); if (!eventName) return false; var clickNumber = getClickNumber(clickCount); var eventData = createEditorEventPayload({ editor_loaded_from_onboarding_source: siteStarterChoice }); var formattedAction = formatClickAction(clickData.title, clickData.selector); eventData["post_onboarding_".concat(clickNumber, "_click_action")] = formattedAction; return dispatch(eventName, eventData); } function getClickNumber(clickCount) { return { 1: "first", 2: "second", 3: "third" }[clickCount] || "unknown"; } function addTimeSpentToPayload(payload, totalTimeSpent) { var stepTimeSpent = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; if (totalTimeSpent !== null && totalTimeSpent !== void 0) payload.time_spent = "".concat(totalTimeSpent, "s"); if (stepTimeSpent !== null && stepTimeSpent !== void 0) payload.step_time_spent = "".concat(stepTimeSpent, "s"); return payload; } var ONBOARDING_EVENTS_MAP, ONBOARDING_STEP_NAMES, EventDispatcher; var init_event_dispatcher = __esmMin((() => { init_defineProperty$1(); init_mixpanel_module(); __name(ownKeys$5, "ownKeys"); __name(_objectSpread$5, "_objectSpread"); ONBOARDING_EVENTS_MAP = { UPGRADE_NOW_S3: "core_onboarding_s3_upgrade_now", THEME_INSTALLED: "core_onboarding_s2_theme_installed", THEME_MARKED: "core_onboarding_s2_theme_marked", CORE_ONBOARDING: "core_onboarding", CONNECT_STATUS: "core_onboarding_connect_status", STEP1_END_STATE: "core_onboarding_s1_end_state", STEP2_END_STATE: "core_onboarding_s2_end_state", STEP2_THEMES_LOADED: "core_onboarding_s2_themes_loaded", STEP3_END_STATE: "core_onboarding_s3_end_state", STEP4_END_STATE: "core_onboarding_s4_end_state", STEP4_LOADED: "core_onboarding_s4_loaded", STEP4_SITE_STARTER: "core_onboarding_s4_site_starter", STEP4_RETURN_STEP4: "core_onboarding_s4_return", EDITOR_LOADED_FROM_ONBOARDING: "editor_loaded_from_onboarding", POST_ONBOARDING_1ST_CLICK: "post_onboarding_1st_click", POST_ONBOARDING_2ND_CLICK: "post_onboarding_2nd_click", POST_ONBOARDING_3RD_CLICK: "post_onboarding_3rd_click", EXIT: "core_onboarding_exit", SKIP: "core_onboarding_skip", TOP_UPGRADE: "core_onboarding_top_upgrade", CREATE_MY_ACCOUNT: "core_onboarding_s1_create_my_account", CREATE_ACCOUNT_STATUS: "core_onboarding_create_account_status", STEP1_CLICKED_CONNECT: "core_onboarding_s1_clicked_connect", AB_101_START_AS_FREE_USER: "ab_101_start_as_free_user", SESSION_REPLAY_START: "onboarding_session_replay_start" }; ONBOARDING_STEP_NAMES = { CONNECT: "connect", HELLO_BIZ: "hello_biz", PRO_FEATURES: "pro_features", SITE_STARTER: "site_starter", SITE_NAME: "site_name", SITE_LOGO: "site_logo", ONBOARDING_START: "onboarding_start" }; EventDispatcher = { canSendEvents, isEventsManagerAvailable, initializeAndEnableTracking, dispatch, dispatchIfAllowed, createEventPayload, createStepEventPayload, createEditorEventPayload, dispatchStepEvent, dispatchVariantAwareEvent, dispatchEditorEvent, getClickEventName, dispatchClickEvent, getClickNumber, addTimeSpentToPayload }; })); //#endregion //#region app/modules/onboarding/assets/js/utils/modules/timing-manager.js function ownKeys$4(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; } function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function getCurrentTime() { return Date.now(); } function initializeOnboardingStartTime() { var startTime = getCurrentTime(); setNumber(ONBOARDING_STORAGE_KEYS.START_TIME, startTime); setString(ONBOARDING_STORAGE_KEYS.INITIATED, "true"); return startTime; } function getOnboardingStartTime() { return getNumber(ONBOARDING_STORAGE_KEYS.START_TIME); } function hasOnboardingStarted() { return exists(ONBOARDING_STORAGE_KEYS.START_TIME); } function trackStepStartTime(stepNumber) { var existingStartTime = getStepStartTime(stepNumber); if (existingStartTime) return existingStartTime; var currentTime = getCurrentTime(); setStepStartTime(stepNumber, currentTime); return currentTime; } function calculateStepTimeSpent(stepNumber) { var stepStartTime = getStepStartTime(stepNumber); if (!stepStartTime) return null; var currentTime = getCurrentTime(); return Math.round((currentTime - stepStartTime) / 1e3); } function clearStepStartTime(stepNumber) { clearStepStartTime$1(stepNumber); } function calculateTotalTimeSpent() { var startTime = getOnboardingStartTime(); if (!startTime) return null; var currentTime = getCurrentTime(); return { startTime, currentTime, timeSpent: Math.round((currentTime - startTime) / 1e3) }; } function formatTimeForEvent(timeInSeconds) { if (null === timeInSeconds || timeInSeconds === void 0) return null; return "".concat(timeInSeconds, "s"); } function createTimeSpentData() { var stepNumber = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; var totalTimeData = calculateTotalTimeSpent(); var result = {}; if (totalTimeData) { result.time_spent = formatTimeForEvent(totalTimeData.timeSpent); result.onboarding_start_time = totalTimeData.startTime; } if (stepNumber) { var stepTimeSpent = calculateStepTimeSpent(stepNumber); if (stepTimeSpent !== null) result.step_time_spent = formatTimeForEvent(stepTimeSpent); } return Object.keys(result).length > 0 ? result : null; } function addTimingToEventData(eventData) { var timingData = createTimeSpentData(arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null); if (timingData) return _objectSpread$4(_objectSpread$4({}, eventData), timingData); return eventData; } function clearStaleSessionData() { var recentStepStartTimes = []; var currentTime = getCurrentTime(); var recentStepStartTimeThresholdMs = 5e3; [ ONBOARDING_STORAGE_KEYS.STEP1_START_TIME, ONBOARDING_STORAGE_KEYS.STEP2_START_TIME, ONBOARDING_STORAGE_KEYS.STEP3_START_TIME, ONBOARDING_STORAGE_KEYS.STEP4_START_TIME ].forEach(function(key) { var value = getString(key); if (value) { if (currentTime - parseInt(value, 10) < recentStepStartTimeThresholdMs) recentStepStartTimes.push(key); } }); [ ONBOARDING_STORAGE_KEYS.START_TIME, ONBOARDING_STORAGE_KEYS.INITIATED, ONBOARDING_STORAGE_KEYS.STEP1_ACTIONS, ONBOARDING_STORAGE_KEYS.STEP2_ACTIONS, ONBOARDING_STORAGE_KEYS.STEP3_ACTIONS, ONBOARDING_STORAGE_KEYS.STEP4_ACTIONS, ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE, ONBOARDING_STORAGE_KEYS.STEP4_HAS_PREVIOUS_CLICK, ONBOARDING_STORAGE_KEYS.EDITOR_LOAD_TRACKED, ONBOARDING_STORAGE_KEYS.POST_ONBOARDING_CLICK_COUNT, ONBOARDING_STORAGE_KEYS.PENDING_SKIP, ONBOARDING_STORAGE_KEYS.PENDING_CONNECT_STATUS, ONBOARDING_STORAGE_KEYS.PENDING_CREATE_ACCOUNT_STATUS, ONBOARDING_STORAGE_KEYS.PENDING_CREATE_MY_ACCOUNT, ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE, ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE_NO_CLICK, ONBOARDING_STORAGE_KEYS.PENDING_STEP1_CLICKED_CONNECT, ONBOARDING_STORAGE_KEYS.PENDING_STEP1_END_STATE, ONBOARDING_STORAGE_KEYS.PENDING_EXIT, ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE_MOUSEOVER ].forEach(function(key) { if (!recentStepStartTimes.includes(key)) remove(key); }); [ ONBOARDING_STORAGE_KEYS.STEP1_START_TIME, ONBOARDING_STORAGE_KEYS.STEP2_START_TIME, ONBOARDING_STORAGE_KEYS.STEP3_START_TIME, ONBOARDING_STORAGE_KEYS.STEP4_START_TIME ].forEach(function(key) { if (!recentStepStartTimes.includes(key)) remove(key); }); } function isWithinTimeThreshold(timestamp) { var thresholdMs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5e3; return getCurrentTime() - timestamp < thresholdMs; } var TimingManager; var init_timing_manager = __esmMin((() => { init_defineProperty$1(); init_storage_manager(); __name(ownKeys$4, "ownKeys"); __name(_objectSpread$4, "_objectSpread"); TimingManager = { getCurrentTime, initializeOnboardingStartTime, getOnboardingStartTime, hasOnboardingStarted, trackStepStartTime, calculateStepTimeSpent, clearStepStartTime, calculateTotalTimeSpent, formatTimeForEvent, createTimeSpentData, addTimingToEventData, clearStaleSessionData, isWithinTimeThreshold }; })); //#endregion //#region app/modules/onboarding/assets/js/utils/modules/click-tracker.js function ownKeys$3(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; } function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var clickTracker; var init_click_tracker = __esmMin((() => { init_defineProperty$1(); init_classCallCheck(); init_createClass(); init_storage_manager(); init_event_dispatcher(); __name(ownKeys$3, "ownKeys"); __name(_objectSpread$3, "_objectSpread"); clickTracker = new (/* @__PURE__ */ function() { function ClickTracker() { _classCallCheck(this, ClickTracker); this.DEDUPLICATION_WINDOW_MS = 150; this.MAX_CLICKS = 3; this.lastClickTime = 0; this.lastClickElement = null; this.clickHandler = null; this.selectTimeoutWindow = 100; this.lastSelectClickTime = 0; } return _createClass(ClickTracker, [ { key: "setupClickTracking", value: function setupClickTracking() { var _this = this; if ("undefined" === typeof document) return; if (this.clickHandler) return; this.clickHandler = function(event) { _this.trackClick(event); }; document.addEventListener("click", this.clickHandler, true); } }, { key: "trackClick", value: function trackClick(event) { var _target$tagName; if (StorageManager.getNumber(ONBOARDING_STORAGE_KEYS.POST_ONBOARDING_CLICK_COUNT) >= this.MAX_CLICKS) return; var target = event.target; if (!this.shouldTrackClick(target)) return; var currentTime = Date.now(); var timeSinceLastClick = currentTime - this.lastClickTime; if (this.isDuplicateClick(target, timeSinceLastClick)) return; this.lastClickTime = currentTime; this.lastClickElement = target; if ("select" === ((_target$tagName = target.tagName) === null || _target$tagName === void 0 ? void 0 : _target$tagName.toLowerCase())) this.lastSelectClickTime = currentTime; var newCount = StorageManager.incrementNumber(ONBOARDING_STORAGE_KEYS.POST_ONBOARDING_CLICK_COUNT); var clickData = this.extractClickData(target); this.storeClickData(newCount, clickData); this.dispatchClickEvent(newCount); if (newCount >= this.MAX_CLICKS) this.cleanup(); } }, { key: "shouldTrackClick", value: function shouldTrackClick(element) { var _element$tagName; var _element$tagName2; if ("option" === ((_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toLowerCase())) return false; if (element.closest("select") && "select" !== ((_element$tagName2 = element.tagName) === null || _element$tagName2 === void 0 ? void 0 : _element$tagName2.toLowerCase())) return false; if (this.isWithinSelectTimeout(element)) return false; if (this.isSelectRelatedRecentClick(element)) return false; var excludedSelectors = [ ".announcements-container", ".announcements-screen-overlay", ".announcements-screen", ".notifications-container", ".notifications-overlay", ".close-button" ]; for (var _i = 0, _excludedSelectors = excludedSelectors; _i < _excludedSelectors.length; _i++) { var selector = _excludedSelectors[_i]; if (element.closest(selector)) return false; } return true; } }, { key: "isWithinSelectTimeout", value: function isWithinSelectTimeout(element) { if (!this.lastSelectClickTime) return false; if (Date.now() - this.lastSelectClickTime <= this.selectTimeoutWindow) { var _element$tagName3; var isSelectElement = "select" === ((_element$tagName3 = element.tagName) === null || _element$tagName3 === void 0 ? void 0 : _element$tagName3.toLowerCase()); var isInSelectControl = !!element.closest(".elementor-control-input-wrapper select"); if (isSelectElement || isInSelectControl) return true; } return false; } }, { key: "isSelectRelatedRecentClick", value: function isSelectRelatedRecentClick(element) { var _this$lastClickElemen; var _element$tagName4; if (!this.lastClickElement || !this.lastClickTime) return false; if (Date.now() - this.lastClickTime > 500) return false; var wasLastClickSelect = "select" === ((_this$lastClickElemen = this.lastClickElement.tagName) === null || _this$lastClickElemen === void 0 ? void 0 : _this$lastClickElemen.toLowerCase()); var isCurrentClickSelect = "select" === ((_element$tagName4 = element.tagName) === null || _element$tagName4 === void 0 ? void 0 : _element$tagName4.toLowerCase()); if (wasLastClickSelect && isCurrentClickSelect) { var lastSelectControl = this.lastClickElement.closest(".elementor-control"); var currentSelectControl = element.closest(".elementor-control"); if (lastSelectControl && currentSelectControl && lastSelectControl === currentSelectControl) return true; } return false; } }, { key: "isDuplicateClick", value: function isDuplicateClick(target, timeSinceLastClick) { if (timeSinceLastClick > (this.shouldUseExtendedWindow(this.lastClickElement, target) ? this.DEDUPLICATION_WINDOW_MS * 3 : this.DEDUPLICATION_WINDOW_MS)) return false; if (!this.lastClickElement) return false; var isSameElement = this.lastClickElement === target; var isRelatedElement = this.areElementsRelated(this.lastClickElement, target); return isSameElement || isRelatedElement; } }, { key: "shouldUseExtendedWindow", value: function shouldUseExtendedWindow(element1, element2) { var _element1$tagName; var _element2$tagName; if (!element1 || !element2) return false; var isElement1Select = "select" === ((_element1$tagName = element1.tagName) === null || _element1$tagName === void 0 ? void 0 : _element1$tagName.toLowerCase()); var isElement2Select = "select" === ((_element2$tagName = element2.tagName) === null || _element2$tagName === void 0 ? void 0 : _element2$tagName.toLowerCase()); return isElement1Select || isElement2Select; } }, { key: "areElementsRelated", value: function areElementsRelated(element1, element2) { if (!element1 || !element2) return false; var isSelectRelated = this.areSelectRelated(element1, element2); var isParentChild = element1.contains(element2) || element2.contains(element1); var shareCommonParent = element1.parentElement === element2.parentElement; var bothInSameControl = element1.closest(".elementor-control") === element2.closest(".elementor-control"); return isSelectRelated || isParentChild || shareCommonParent || bothInSameControl; } }, { key: "areSelectRelated", value: function areSelectRelated(element1, element2) { var _element1$tagName2; var _element2$tagName2; var _element1$tagName3; var _element2$tagName3; var isElement1Select = "select" === ((_element1$tagName2 = element1.tagName) === null || _element1$tagName2 === void 0 ? void 0 : _element1$tagName2.toLowerCase()); var isElement2Select = "select" === ((_element2$tagName2 = element2.tagName) === null || _element2$tagName2 === void 0 ? void 0 : _element2$tagName2.toLowerCase()); var isElement1Option = "option" === ((_element1$tagName3 = element1.tagName) === null || _element1$tagName3 === void 0 ? void 0 : _element1$tagName3.toLowerCase()); var isElement2Option = "option" === ((_element2$tagName3 = element2.tagName) === null || _element2$tagName3 === void 0 ? void 0 : _element2$tagName3.toLowerCase()); if (isElement1Select && isElement2Select && element1 === element2) return true; if (isElement1Select && isElement2Option || isElement1Option && isElement2Select) return true; var element1SelectParent = element1.closest("select"); var element2SelectParent = element2.closest("select"); if (element1SelectParent && element2SelectParent && element1SelectParent === element2SelectParent) return true; if (element1SelectParent && element1SelectParent === element2) return true; if (element2SelectParent && element2SelectParent === element1) return true; return false; } }, { key: "extractClickData", value: function extractClickData(element) { var title = this.findMeaningfulTitle(element); var selector = this.generateSelector(element); return { title: title.substring(0, 100), selector }; } }, { key: "findMeaningfulTitle", value: function findMeaningfulTitle(element) { var directTitle = this.extractTitleFromElement(element); if (directTitle && directTitle.trim().length > 0) return directTitle.trim(); var currentElement = element.parentElement; var attempts = 0; var maxAttempts = 3; while (currentElement && attempts < maxAttempts) { var title = this.extractTitleFromElement(currentElement); if (title && title.trim().length > 0) return title.trim(); currentElement = currentElement.parentElement; attempts++; } return this.generateFallbackTitle(element); } }, { key: "extractTitleFromElement", value: function extractTitleFromElement(element) { var _element$tagName5; var _element$textContent; var _element$tagName6; var _element$innerText; var _element$querySelecto; var _element$querySelecto2; var _element$querySelecto3; var controlFieldContainer = element.closest(".elementor-control-field"); if (controlFieldContainer) { var labelElement = controlFieldContainer.querySelector("label"); if (labelElement && labelElement.textContent) return labelElement.textContent.trim(); } var sources = [ element.getAttribute("placeholder"), element.getAttribute("aria-label"), element.title, element.getAttribute("data-title"), "select" === ((_element$tagName5 = element.tagName) === null || _element$tagName5 === void 0 ? void 0 : _element$tagName5.toLowerCase()) ? "" : (_element$textContent = element.textContent) === null || _element$textContent === void 0 ? void 0 : _element$textContent.trim(), "select" === ((_element$tagName6 = element.tagName) === null || _element$tagName6 === void 0 ? void 0 : _element$tagName6.toLowerCase()) ? "" : (_element$innerText = element.innerText) === null || _element$innerText === void 0 ? void 0 : _element$innerText.trim(), (_element$querySelecto = element.querySelector(".elementor-widget-title")) === null || _element$querySelecto === void 0 || (_element$querySelecto = _element$querySelecto.textContent) === null || _element$querySelecto === void 0 ? void 0 : _element$querySelecto.trim(), (_element$querySelecto2 = element.querySelector(".elementor-heading-title")) === null || _element$querySelecto2 === void 0 || (_element$querySelecto2 = _element$querySelecto2.textContent) === null || _element$querySelecto2 === void 0 ? void 0 : _element$querySelecto2.trim(), (_element$querySelecto3 = element.querySelector(".elementor-button-text")) === null || _element$querySelecto3 === void 0 || (_element$querySelecto3 = _element$querySelecto3.textContent) === null || _element$querySelecto3 === void 0 ? void 0 : _element$querySelecto3.trim() ]; for (var _i2 = 0, _sources = sources; _i2 < _sources.length; _i2++) { var source = _sources[_i2]; if (source && source.length > 0 && source !== "undefined") return source; } return ""; } }, { key: "generateFallbackTitle", value: function generateFallbackTitle(element) { var _element$tagName7; var tagName = ((_element$tagName7 = element.tagName) === null || _element$tagName7 === void 0 ? void 0 : _element$tagName7.toLowerCase()) || "element"; var className = element.className || ""; if (className.includes("eicon-")) { var iconClass = className.split(" ").find(function(cls) { return cls.startsWith("eicon-"); }); if (iconClass) return iconClass.replace("eicon-", "").replace("-", " "); } if (className.includes("elementor-button")) return "Elementor Button"; if (className.includes("elementor-widget")) return "Elementor Widget"; return "".concat(tagName, " element"); } }, { key: "generateSelector", value: function generateSelector(element) { var selectorParts = []; var currentElement = element; for (var i = 0; i < 4 && currentElement && currentElement !== document.body; i++) { var selector = currentElement.tagName.toLowerCase(); if (0 === i && currentElement.id) selector += "#".concat(currentElement.id); else if (currentElement.classList.length > 0) { var classes = Array.from(currentElement.classList).slice(0, 3); selector += ".".concat(classes.join(".")); } selectorParts.unshift(selector); currentElement = currentElement.parentElement; } return selectorParts.join(" > "); } }, { key: "storeClickData", value: function storeClickData(clickCount, clickData) { var dataKey = "elementor_onboarding_click_".concat(clickCount, "_data"); var dataToStore = _objectSpread$3(_objectSpread$3({}, clickData), {}, { timestamp: Date.now(), clickCount }); StorageManager.setObject(dataKey, dataToStore); } }, { key: "getStoredClickData", value: function getStoredClickData(clickCount) { var dataKey = "elementor_onboarding_click_".concat(clickCount, "_data"); return StorageManager.getObject(dataKey); } }, { key: "dispatchClickEvent", value: function dispatchClickEvent(clickCount) { var storedClickData = this.getStoredClickData(clickCount); if (!storedClickData) return; var siteStarterChoiceString = StorageManager.getString(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE); var siteStarterChoice = null; if (siteStarterChoiceString) { var choiceData = StorageManager.getObject(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE); siteStarterChoice = (choiceData === null || choiceData === void 0 ? void 0 : choiceData.site_starter) || null; } EventDispatcher.dispatchClickEvent(clickCount, storedClickData, siteStarterChoice); } }, { key: "cleanup", value: function cleanup() { if (this.clickHandler) { document.removeEventListener("click", this.clickHandler, true); this.clickHandler = null; } this.lastSelectClickTime = 0; StorageManager.clearAllOnboardingData(); StorageManager.clearExperimentData(); } } ]); }())(); })); //#endregion //#region app/modules/onboarding/assets/js/utils/modules/post-onboarding-tracker.js var postOnboardingTracker; var init_post_onboarding_tracker = __esmMin((() => { init_classCallCheck(); init_createClass(); init_storage_manager(); init_event_dispatcher(); init_click_tracker(); postOnboardingTracker = new (/* @__PURE__ */ function() { function PostOnboardingTracker() { _classCallCheck(this, PostOnboardingTracker); } return _createClass(PostOnboardingTracker, [ { key: "checkAndSendEditorLoadedFromOnboarding", value: function checkAndSendEditorLoadedFromOnboarding() { if (!StorageManager.getString(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE)) return; if (StorageManager.exists(ONBOARDING_STORAGE_KEYS.EDITOR_LOAD_TRACKED)) { this.setupPostOnboardingClickTracking(); return; } this.sendEditorLoadedEvent(); StorageManager.setString(ONBOARDING_STORAGE_KEYS.EDITOR_LOAD_TRACKED, "true"); this.setupPostOnboardingClickTracking(); } }, { key: "sendEditorLoadedEvent", value: function sendEditorLoadedEvent() { var choiceData = StorageManager.getObject(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE); var siteStarterChoice = choiceData === null || choiceData === void 0 ? void 0 : choiceData.site_starter; if (!siteStarterChoice) return; if (EventDispatcher.canSendEvents()) EventDispatcher.dispatchEditorEvent("editor_loaded_from_onboarding", { editor_loaded_from_onboarding_source: siteStarterChoice }); } }, { key: "setupPostOnboardingClickTracking", value: function setupPostOnboardingClickTracking() { if (!StorageManager.exists(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE)) return; if (StorageManager.getNumber(ONBOARDING_STORAGE_KEYS.POST_ONBOARDING_CLICK_COUNT) >= clickTracker.MAX_CLICKS) return; clickTracker.setupClickTracking(); } }, { key: "cleanupPostOnboardingTracking", value: function cleanupPostOnboardingTracking() { clickTracker.cleanup(); } }, { key: "clearAllOnboardingStorage", value: function clearAllOnboardingStorage() { StorageManager.clearAllOnboardingData(); StorageManager.clearExperimentData(); } } ]); }())(); })); //#endregion //#region app/modules/onboarding/assets/js/utils/modules/onboarding-tracker.js function ownKeys$2(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; } function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); } function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); } function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; } function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); } function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); } var _hasAttemptedSessionRecording, onboardingTracker; var init_onboarding_tracker = __esmMin((() => { init_toConsumableArray(); init_typeof$1(); init_defineProperty$1(); init_classCallCheck(); init_createClass(); init_events_config(); init_storage_manager(); init_event_dispatcher(); init_timing_manager(); init_post_onboarding_tracker(); __name(ownKeys$2, "ownKeys"); __name(_objectSpread$2, "_objectSpread"); _hasAttemptedSessionRecording = /*#__PURE__*/ new WeakMap(); onboardingTracker = new (/* @__PURE__ */ function() { function OnboardingTracker() { _classCallCheck(this, OnboardingTracker); _classPrivateFieldInitSpec(this, _hasAttemptedSessionRecording, false); this.initializeEventConfigs(); this.initializeEventListeners(); } return _createClass(OnboardingTracker, [ { key: "initializeEventConfigs", value: function initializeEventConfigs() { var _this = this; this.EVENT_CONFIGS = { SKIP: { eventName: ONBOARDING_EVENTS_MAP.SKIP, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_SKIP, basePayload: { location: "plugin_onboarding" }, payloadBuilder: function payloadBuilder(eventData) { return { action_step: eventData.currentStep, skip_timestamp: eventData.timestamp }; }, excludeFields: ["step_number", "trigger"] }, TOP_UPGRADE: { eventName: ONBOARDING_EVENTS_MAP.TOP_UPGRADE, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE, isArray: true, basePayload: { location: "plugin_onboarding", trigger: "upgrade_interaction" }, payloadBuilder: function payloadBuilder(eventData) { return { action_step: eventData.currentStep, upgrade_clicked: eventData.upgradeClicked }; }, excludeFields: [ "event_timestamp", "upgrade_location", "trigger", "step_number" ] }, CREATE_MY_ACCOUNT: { eventName: ONBOARDING_EVENTS_MAP.CREATE_MY_ACCOUNT, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_CREATE_MY_ACCOUNT, basePayload: { location: "plugin_onboarding", trigger: "upgrade_interaction" }, payloadBuilder: function payloadBuilder(eventData) { return { action_step: eventData.currentStep, create_account_clicked: _this.validateCreateAccountClicked(eventData.createAccountClicked) }; }, excludeFields: ["trigger", "step_number"] }, CREATE_ACCOUNT_STATUS: { eventName: ONBOARDING_EVENTS_MAP.CREATE_ACCOUNT_STATUS, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_CREATE_ACCOUNT_STATUS, basePayload: { location: "plugin_onboarding", trigger: "create_flow_returns_status" }, payloadBuilder: function payloadBuilder(eventData) { return { onboarding_create_account_status: _this.validateCreateAccountStatus(eventData.status) }; }, excludeFields: ["trigger"] }, CONNECT_STATUS: { eventName: ONBOARDING_EVENTS_MAP.CONNECT_STATUS, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_CONNECT_STATUS, basePayload: { location: "plugin_onboarding", trigger: "connect_flow_returns_status" }, payloadBuilder: function payloadBuilder(eventData) { return { onboarding_connect_status: _this.validateConnectStatus(eventData.status), tracking_opted_in: eventData.trackingOptedIn, user_tier: eventData.userTier }; }, stepOverride: 1, stepNameOverride: ONBOARDING_STEP_NAMES.CONNECT, excludeFields: ["trigger"] }, STEP1_CLICKED_CONNECT: { eventName: ONBOARDING_EVENTS_MAP.STEP1_CLICKED_CONNECT, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_STEP1_CLICKED_CONNECT, basePayload: { location: "plugin_onboarding", trigger: eventsConfig.triggers.click }, payloadBuilder: function payloadBuilder() { return {}; }, stepOverride: 1, stepNameOverride: ONBOARDING_STEP_NAMES.CONNECT, excludeFields: ["trigger"] }, STEP1_END_STATE: { eventName: ONBOARDING_EVENTS_MAP.STEP1_END_STATE, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_STEP1_END_STATE, isRawPayload: true, payloadBuilder: function payloadBuilder(eventData) { return eventData; } }, EXIT: { eventName: ONBOARDING_EVENTS_MAP.EXIT, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_EXIT, basePayload: { location: "plugin_onboarding", trigger: "user_action" }, payloadBuilder: function payloadBuilder(eventData) { var stepNumber = _this.getStepNumber(eventData.currentStep); var stepName = _this.getStepName(stepNumber); return { action_step: "".concat(stepNumber, "/").concat(stepName), exit_type: eventData.exitType || "x_button" }; }, excludeFields: ["trigger", "step_number"] }, AB_101_START_AS_FREE_USER: { eventName: ONBOARDING_EVENTS_MAP.AB_101_START_AS_FREE_USER, storageKey: ONBOARDING_STORAGE_KEYS.PENDING_AB_101_START_AS_FREE_USER, basePayload: { location: "plugin_onboarding", trigger: "continue_as_guest_clicked" }, payloadBuilder: function payloadBuilder(eventData) { return { action_step: eventData.currentStep }; }, stepOverride: 1, stepNameOverride: ONBOARDING_STEP_NAMES.CONNECT, excludeFields: ["trigger", "step_number"] } }; } }, { key: "initializeEventListeners", value: function initializeEventListeners() { var _this2 = this; if ("undefined" === typeof document) return; document.addEventListener("click", function(event) { if (event.target.closest(".e-onboarding__cards-grid")) _this2.handleStep4CardClick(event); }, true); this.setupUrlChangeDetection(); this.setupSessionRecordingCleanup(); } }, { key: "setupSessionRecordingCleanup", value: function setupSessionRecordingCleanup() { this.handleBeforeUnload = this.handleBeforeUnload.bind(this); window.addEventListener("beforeunload", this.handleBeforeUnload); } }, { key: "handleBeforeUnload", value: function handleBeforeUnload() { this.stopSessionRecordingIfNeeded(); } }, { key: "onDestroy", value: function onDestroy() { this.stopSessionRecordingIfNeeded(); window.removeEventListener("beforeunload", this.handleBeforeUnload); } }, { key: "setupUrlChangeDetection", value: function setupUrlChangeDetection() { var _this3 = this; var lastUrl = window.location.href; var urlChangeDetector = function urlChangeDetector() { var currentUrl = window.location.href; if (currentUrl !== lastUrl) { if (currentUrl.includes("goodToGo") || currentUrl.includes("step4") || currentUrl.includes("site_starter")) setTimeout(function() { TimingManager.trackStepStartTime(4); _this3.checkAndSendReturnToStep4(); }, 100); lastUrl = currentUrl; } }; setInterval(urlChangeDetector, 500); window.addEventListener("popstate", function() { setTimeout(urlChangeDetector, 100); }); } }, { key: "dispatchEvent", value: function dispatchEvent(eventName, payload) { return EventDispatcher.dispatch(eventName, payload); } }, { key: "dispatchEventWithoutTrigger", value: function dispatchEventWithoutTrigger(eventName, payload) { var cleanPayload = _objectSpread$2({}, payload); delete cleanPayload.trigger; return EventDispatcher.dispatch(eventName, cleanPayload); } }, { key: "sendEventOrStore", value: function sendEventOrStore(eventType, eventData) { if ("TOP_UPGRADE" === eventType && "no_click" !== eventData.upgradeClicked) { var stepNumber = this.getStepNumber(eventData.currentStep); this.markUpgradeClickSent(stepNumber); } if (EventDispatcher.canSendEvents()) return this.sendEventDirect(eventType, eventData); this.storeEventForLater(eventType, eventData); } }, { key: "sendEventDirect", value: function sendEventDirect(eventType, eventData) { var config = this.EVENT_CONFIGS[eventType]; if (!config) return; if (config.isRawPayload) return this.dispatchEvent(config.eventName, eventData); var stepNumber = config.stepOverride || this.getStepNumber(eventData.currentStep); var stepName = config.stepNameOverride || this.getStepName(stepNumber); var eventPayload = EventDispatcher.createStepEventPayload(stepNumber, stepName, _objectSpread$2(_objectSpread$2({}, config.basePayload), config.payloadBuilder(eventData))); if (config.excludeFields) config.excludeFields.forEach(function(field) { delete eventPayload[field]; }); return this.dispatchEvent(config.eventName, eventPayload); } }, { key: "storeEventForLater", value: function storeEventForLater(eventType, eventData) { var config = this.EVENT_CONFIGS[eventType]; if (!config) return; var dataWithTimestamp = _objectSpread$2(_objectSpread$2({}, eventData), {}, { timestamp: TimingManager.getCurrentTime() }); if (config.isArray) { var existingEvents = StorageManager.getArray(config.storageKey); existingEvents.push(dataWithTimestamp); StorageManager.setObject(config.storageKey, existingEvents); } else StorageManager.setObject(config.storageKey, dataWithTimestamp); } }, { key: "sendStoredEvent", value: function sendStoredEvent(eventType) { var _this4 = this; var config = this.EVENT_CONFIGS[eventType]; if (!config) return; var storedData = config.isArray ? StorageManager.getArray(config.storageKey) : StorageManager.getObject(config.storageKey); if (!storedData || config.isArray && 0 === storedData.length) return; if ("CONNECT_STATUS" === eventType && storedData && !storedData.status) storedData.status = "fail"; if ("CREATE_ACCOUNT_STATUS" === eventType && storedData && !storedData.status) storedData.status = "fail"; if ("CREATE_MY_ACCOUNT" === eventType && storedData && !storedData.createAccountClicked) storedData.createAccountClicked = "main_cta"; var processEvent = function processEvent(eventData) { if (config.isRawPayload) { _this4.dispatchEvent(config.eventName, eventData); return; } var stepNumber = config.stepOverride || _this4.getStepNumber(eventData.currentStep); var stepName = config.stepNameOverride || _this4.getStepName(stepNumber); var eventPayload = EventDispatcher.createStepEventPayload(stepNumber, stepName, _objectSpread$2(_objectSpread$2({}, config.basePayload), config.payloadBuilder(eventData))); if (config.excludeFields) config.excludeFields.forEach(function(field) { delete eventPayload[field]; }); _this4.dispatchEvent(config.eventName, eventPayload); }; if (config.isArray) storedData.forEach(processEvent); else processEvent(storedData); StorageManager.remove(config.storageKey); } }, { key: "updateLibraryConnectConfig", value: function updateLibraryConnectConfig(data) { if (!elementorCommon.config.library_connect) return; elementorCommon.config.library_connect.is_connected = true; elementorCommon.config.library_connect.current_access_level = data.kits_access_level || data.access_level || 0; elementorCommon.config.library_connect.current_access_tier = data.access_tier; elementorCommon.config.library_connect.plan_type = data.plan_type; elementorCommon.config.library_connect.user_id = data.user_id || null; } }, { key: "sendUpgradeNowStep3", value: function sendUpgradeNowStep3(selectedFeatures, currentStep) { var proFeaturesChecked = this.extractSelectedFeatureKeys(selectedFeatures); return EventDispatcher.dispatchStepEvent(ONBOARDING_EVENTS_MAP.UPGRADE_NOW_S3, currentStep, ONBOARDING_STEP_NAMES.PRO_FEATURES, { location: "plugin_onboarding", pro_features_checked: proFeaturesChecked }); } }, { key: "extractSelectedFeatureKeys", value: function extractSelectedFeatureKeys(selectedFeatures) { if (!selectedFeatures || _typeof$1(selectedFeatures) !== "object") return []; if (Array.isArray(selectedFeatures)) return this.extractFromLegacyArrayFormat(selectedFeatures); return this.extractFromObjectFormat(selectedFeatures); } }, { key: "extractFromLegacyArrayFormat", value: function extractFromLegacyArrayFormat(selectedFeatures) { return selectedFeatures.filter(function(feature) { return feature && feature.is_checked; }).map(function(feature) { return feature.key; }).filter(function(key) { return key; }); } }, { key: "extractFromObjectFormat", value: function extractFromObjectFormat(selectedFeatures) { var allFeatures = []; if (Array.isArray(selectedFeatures.one)) allFeatures.push.apply(allFeatures, _toConsumableArray(selectedFeatures.one)); if (Array.isArray(selectedFeatures.essential)) allFeatures.push.apply(allFeatures, _toConsumableArray(selectedFeatures.essential)); if (Array.isArray(selectedFeatures.advanced)) allFeatures.push.apply(allFeatures, _toConsumableArray(selectedFeatures.advanced)); return allFeatures; } }, { key: "sendTopUpgrade", value: function sendTopUpgrade(currentStep, upgradeClicked) { var stepNumber = this.getStepNumber(currentStep); if (stepNumber) this.trackStepAction(stepNumber, "top_upgrade", { upgrade_clicked: upgradeClicked }); return this.sendEventOrStore("TOP_UPGRADE", { currentStep, upgradeClicked }); } }, { key: "cancelDelayedNoClickEvent", value: function cancelDelayedNoClickEvent() { StorageManager.remove(ONBOARDING_STORAGE_KEYS.PENDING_TOP_UPGRADE_NO_CLICK); } }, { key: "initiateCoreOnboarding", value: function initiateCoreOnboarding() { StorageManager.clearAllOnboardingData(); TimingManager.clearStaleSessionData(); TimingManager.initializeOnboardingStartTime(); } }, { key: "sendCoreOnboardingInitiated", value: function sendCoreOnboardingInitiated() { var startTime = TimingManager.initializeOnboardingStartTime(); var eventData = { location: "plugin_onboarding", step_name: ONBOARDING_STEP_NAMES.ONBOARDING_START, onboarding_start_time: startTime }; this.dispatchEvent(ONBOARDING_EVENTS_MAP.CORE_ONBOARDING, eventData); StorageManager.remove(ONBOARDING_STORAGE_KEYS.INITIATED); } }, { key: "storeSiteStarterChoice", value: function storeSiteStarterChoice(siteStarter) { var existingChoice = StorageManager.getObject(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE); if (this.isReturnScenario(existingChoice, siteStarter)) this.sendReturnEventAndUpdateChoice(existingChoice, siteStarter); else this.storeInitialChoice(siteStarter); } }, { key: "isReturnScenario", value: function isReturnScenario(existingChoice, siteStarter) { return existingChoice && existingChoice.site_starter !== siteStarter; } }, { key: "sendReturnEventAndUpdateChoice", value: function sendReturnEventAndUpdateChoice(existingChoice, siteStarter) { var returnEventPayload = this.createReturnEventPayload(existingChoice, siteStarter); this.dispatchEventWithoutTrigger(ONBOARDING_EVENTS_MAP.STEP4_RETURN_STEP4, returnEventPayload); this.updateChoiceWithReturnTracking(existingChoice, siteStarter); } }, { key: "createReturnEventPayload", value: function createReturnEventPayload(existingChoice, siteStarter) { return EventDispatcher.createStepEventPayload(4, ONBOARDING_STEP_NAMES.SITE_STARTER, { location: "plugin_onboarding", trigger: "user_returns_to_onboarding", return_to_onboarding: existingChoice.site_starter, original_choice_timestamp: existingChoice.timestamp, new_choice: siteStarter }); } }, { key: "updateChoiceWithReturnTracking", value: function updateChoiceWithReturnTracking(existingChoice, siteStarter) { var choiceData = { site_starter: siteStarter, original_choice: existingChoice.site_starter, timestamp: TimingManager.getCurrentTime(), return_event_sent: true }; StorageManager.setObject(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE, choiceData); } }, { key: "storeInitialChoice", value: function storeInitialChoice(siteStarter) { var choiceData = { site_starter: siteStarter, timestamp: TimingManager.getCurrentTime(), return_event_sent: false }; StorageManager.setObject(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE, choiceData); } }, { key: "checkAndSendReturnToStep4", value: function checkAndSendReturnToStep4() { var choiceData = StorageManager.getObject(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE); if (!choiceData) return; if (this.shouldSendReturnEvent(choiceData)) { var returnEventPayload = this.createReturnEventPayloadFromStoredData(choiceData); this.dispatchEventWithoutTrigger(ONBOARDING_EVENTS_MAP.STEP4_RETURN_STEP4, returnEventPayload); this.markReturnEventAsSent(choiceData); } this.resetStep4EndStateTracking(); } }, { key: "resetStep4EndStateTracking", value: function resetStep4EndStateTracking() { StorageManager.remove(ONBOARDING_STORAGE_KEYS.STEP4_END_STATE_SENT); StorageManager.remove(ONBOARDING_STORAGE_KEYS.STEP4_ACTIONS); this.trackStepAction(4, "returned_to_step4", { return_detected: true, timestamp: TimingManager.getCurrentTime() }); } }, { key: "shouldSendReturnEvent", value: function shouldSendReturnEvent(choiceData) { return !choiceData.return_event_sent && choiceData.original_choice && choiceData.original_choice !== choiceData.site_starter; } }, { key: "createReturnEventPayloadFromStoredData", value: function createReturnEventPayloadFromStoredData(choiceData) { return EventDispatcher.createStepEventPayload(4, ONBOARDING_STEP_NAMES.SITE_STARTER, { location: "plugin_onboarding", trigger: "user_returns_to_onboarding", return_to_onboarding: choiceData.original_choice, original_choice_timestamp: choiceData.timestamp, new_choice: choiceData.site_starter }); } }, { key: "markReturnEventAsSent", value: function markReturnEventAsSent(choiceData) { choiceData.return_event_sent = true; StorageManager.setObject(ONBOARDING_STORAGE_KEYS.STEP4_SITE_STARTER_CHOICE, choiceData); } }, { key: "handleSiteStarterChoice", value: function handleSiteStarterChoice(siteStarter) { TimingManager.trackStepStartTime(4); this.storeSiteStarterChoice(siteStarter); this.trackStepAction(4, "site_starter", { source_type: siteStarter }); this.sendStep4SiteStarter(siteStarter); this.sendStepEndState(4); } }, { key: "sendStep4SiteStarter", value: function sendStep4SiteStarter(siteStarter) { if (EventDispatcher.canSendEvents()) return EventDispatcher.dispatchStepEvent(ONBOARDING_EVENTS_MAP.STEP4_SITE_STARTER, 4, ONBOARDING_STEP_NAMES.SITE_STARTER, { location: "plugin_onboarding", site_starter: siteStarter }); } }, { key: "checkAndSendEditorLoadedFromOnboarding", value: function checkAndSendEditorLoadedFromOnboarding() { return postOnboardingTracker.checkAndSendEditorLoadedFromOnboarding(); } }, { key: "sendExitButtonEvent", value: function sendExitButtonEvent(currentStep) { var stepNumber = this.getStepNumber(currentStep); this.trackStepAction(stepNumber, "exit:x_button", { exit_type: "x_button" }); this.sendStepEndState(stepNumber); return this.sendEventOrStore("EXIT", { currentStep, exitType: "x_button" }); } }, { key: "trackStepAction", value: function trackStepAction(stepNumber, action) { var additionalData = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; var stepConfig = this.getStepConfig(stepNumber); if (stepConfig) this.trackStepActionInternal(stepNumber, action, stepConfig.storageKey, additionalData); } }, { key: "sendStepEndState", value: function sendStepEndState(stepNumber) { var stepConfig = this.getStepConfig(stepNumber); if (stepConfig) this.sendStepEndStateInternal(stepNumber, stepConfig.storageKey, stepConfig.eventName, stepConfig.stepName, stepConfig.endStateProperty); } }, { key: "trackStepActionInternal", value: function trackStepActionInternal(stepNumber, action, storageKey) { var additionalData = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {}; var stepConfig = this.getStepConfig(stepNumber); var actualStorageKey = storageKey || (stepConfig ? stepConfig.storageKey : null); if (!actualStorageKey) return; var existingActions = StorageManager.getArray(actualStorageKey); var actionData = _objectSpread$2({ action, timestamp: TimingManager.getCurrentTime() }, additionalData); existingActions.push(actionData); StorageManager.setObject(actualStorageKey, existingActions); } }, { key: "getEndStateSentKey", value: function getEndStateSentKey(stepNumber) { return { 1: ONBOARDING_STORAGE_KEYS.STEP1_END_STATE_SENT, 2: ONBOARDING_STORAGE_KEYS.STEP2_END_STATE_SENT, 3: ONBOARDING_STORAGE_KEYS.STEP3_END_STATE_SENT, 4: ONBOARDING_STORAGE_KEYS.STEP4_END_STATE_SENT }[stepNumber]; } }, { key: "sendStepEndStateInternal", value: function sendStepEndStateInternal(stepNumber, storageKey, eventName, stepName, endStateProperty) { var initialActions = StorageManager.getArray(storageKey); this.sendHoverEventsFromStepActions(initialActions, stepNumber); var actions = StorageManager.getArray(storageKey); if (0 === actions.length) return; var endStateSentKey = this.getEndStateSentKey(stepNumber); if (StorageManager.exists(endStateSentKey)) return; var eventData = EventDispatcher.createStepEventPayload(stepNumber, stepName, { location: "plugin_onboarding", trigger: "user_redirects_out_of_step" }); eventData = TimingManager.addTimingToEventData(eventData, stepNumber); eventData[endStateProperty] = actions; if (ONBOARDING_STEP_NAMES.SITE_STARTER === stepName) this.stopSessionRecordingIfNeeded(); if (EventDispatcher.canSendEvents()) { this.dispatchEventWithoutTrigger(eventName, eventData); StorageManager.remove(storageKey); StorageManager.setString(endStateSentKey, "true"); TimingManager.clearStepStartTime(stepNumber); this.sendStoredEventsIfConnected(); return; } if (ONBOARDING_STEP_NAMES.CONNECT === stepName) { this.storeStep1EndStateForLater(eventData, storageKey); return; } this.dispatchEventWithoutTrigger(eventName, eventData); StorageManager.remove(storageKey); StorageManager.setString(endStateSentKey, "true"); TimingManager.clearStepStartTime(stepNumber); } }, { key: "getStepNumber", value: function getStepNumber(pageId) { if (this.isNumericPageId(pageId)) return pageId; if (this.isStringNumericPageId(pageId)) return this.convertStringToNumber(pageId); return this.mapPageIdToStepNumber(pageId); } }, { key: "isNumericPageId", value: function isNumericPageId(pageId) { return "number" === typeof pageId; } }, { key: "isStringNumericPageId", value: function isStringNumericPageId(pageId) { return "string" === typeof pageId && !isNaN(pageId); } }, { key: "convertStringToNumber", value: function convertStringToNumber(pageId) { return parseInt(pageId, 10); } }, { key: "mapPageIdToStepNumber", value: function mapPageIdToStepNumber(pageId) { return this.getStepMappings()[pageId] || null; } }, { key: "getStepMappings", value: function getStepMappings() { return { account: 1, connect: 1, hello: 2, hello_biz: 2, chooseFeatures: 3, pro_features: 3, site_starter: 4, goodToGo: 4, siteName: 5, siteLogo: 6 }; } }, { key: "getStepName", value: function getStepName(stepNumber) { return { 1: ONBOARDING_STEP_NAMES.CONNECT, 2: ONBOARDING_STEP_NAMES.HELLO_BIZ, 3: ONBOARDING_STEP_NAMES.PRO_FEATURES, 4: ONBOARDING_STEP_NAMES.SITE_STARTER, 5: ONBOARDING_STEP_NAMES.SITE_NAME, 6: ONBOARDING_STEP_NAMES.SITE_LOGO }[stepNumber] || "unknown"; } }, { key: "getStepConfig", value: function getStepConfig(stepNumber) { return { 1: { storageKey: ONBOARDING_STORAGE_KEYS.STEP1_ACTIONS, eventName: ONBOARDING_EVENTS_MAP.STEP1_END_STATE, stepName: ONBOARDING_STEP_NAMES.CONNECT, endStateProperty: "step1_actions" }, 2: { storageKey: ONBOARDING_STORAGE_KEYS.STEP2_ACTIONS, eventName: ONBOARDING_EVENTS_MAP.STEP2_END_STATE, stepName: ONBOARDING_STEP_NAMES.HELLO_BIZ, endStateProperty: "step2_actions" }, 3: { storageKey: ONBOARDING_STORAGE_KEYS.STEP3_ACTIONS, eventName: ONBOARDING_EVENTS_MAP.STEP3_END_STATE, stepName: ONBOARDING_STEP_NAMES.PRO_FEATURES, endStateProperty: "step3_actions" }, 4: { storageKey: ONBOARDING_STORAGE_KEYS.STEP4_ACTIONS, eventName: ONBOARDING_EVENTS_MAP.STEP4_END_STATE, stepName: ONBOARDING_STEP_NAMES.SITE_STARTER, endStateProperty: "step4_actions" } }[stepNumber] || null; } }, { key: "sendConnectionSuccessEvents", value: function sendConnectionSuccessEvents(data) { this.sendCoreOnboardingInitiated(); this.sendAppropriateStatusEvent("success", data); this.sendAllStoredEvents(); } }, { key: "sendConnectionFailureEvents", value: function sendConnectionFailureEvents() { this.sendAppropriateStatusEvent("fail"); } }, { key: "validateConnectStatus", value: function validateConnectStatus(status) { if ("success" === status || "fail" === status) return status; return "fail"; } }, { key: "validateCreateAccountStatus", value: function validateCreateAccountStatus(status) { if ("success" === status || "fail" === status) return status; return "fail"; } }, { key: "validateCreateAccountClicked", value: function validateCreateAccountClicked(clickedValue) { if ("topbar" === clickedValue || "main_cta" === clickedValue) return clickedValue; return "main_cta"; } }, { key: "sendAppropriateStatusEvent", value: function sendAppropriateStatusEvent(status) { var data = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; if (StorageManager.exists(ONBOARDING_STORAGE_KEYS.PENDING_CREATE_MY_ACCOUNT)) this.sendEventDirect("CREATE_ACCOUNT_STATUS", { status, currentStep: 1 }); var trackingOptedIn = (data === null || data === void 0 ? void 0 : data.tracking_opted_in) || false; var userTier = (data === null || data === void 0 ? void 0 : data.access_tier) || null; this.sendEventDirect("CONNECT_STATUS", { status, trackingOptedIn, userTier }); } }, { key: "sendAllStoredEvents", value: function sendAllStoredEvents() { this.sendStoredExperimentData(); this.sendStoredEvent("SKIP"); this.sendStoredEvent("TOP_UPGRADE"); this.sendStoredEvent("CREATE_MY_ACCOUNT"); this.sendStoredEvent("CREATE_ACCOUNT_STATUS"); this.sendStoredEvent("CONNECT_STATUS"); this.sendStoredEvent("STEP1_CLICKED_CONNECT"); this.sendStoredEvent("STEP1_END_STATE"); this.sendStoredEvent("EXIT"); this.sendStoredEvent("AB_101_START_AS_FREE_USER"); } }, { key: "sendStoredEventsIfConnected", value: function sendStoredEventsIfConnected() { if (EventDispatcher.canSendEvents()) this.sendAllStoredEvents(); } }, { key: "handleStep4CardClick", value: function handleStep4CardClick() { if (StorageManager.exists(ONBOARDING_STORAGE_KEYS.STEP4_HAS_PREVIOUS_CLICK)) this.checkAndSendReturnToStep4(); else StorageManager.setString(ONBOARDING_STORAGE_KEYS.STEP4_HAS_PREVIOUS_CLICK, "true"); } }, { key: "setupAllUpgradeButtons", value: function setupAllUpgradeButtons(currentStep) { var _this5 = this; var upgradeButtons = document.querySelectorAll(".elementor-button[href*=\"upgrade\"], .e-btn[href*=\"upgrade\"], .eps-button[href*=\"upgrade\"]"); upgradeButtons.forEach(function(button) { _this5.setupSingleUpgradeButton(button, currentStep); }); return upgradeButtons.length; } }, { key: "setupSingleUpgradeButton", value: function setupSingleUpgradeButton(buttonElement, currentStep) { var _this6 = this; if (!this.isValidButtonElement(buttonElement)) return null; this.cleanupButtonTracking(buttonElement); if (this.isButtonAlreadyTrackedForStep(buttonElement, currentStep)) return null; this.markButtonAsTracked(buttonElement, currentStep); var eventHandlers = this.createUpgradeButtonEventHandlers(buttonElement, currentStep); this.attachEventHandlersToButton(buttonElement, eventHandlers); return function() { _this6.cleanupButtonTracking(buttonElement); }; } }, { key: "isValidButtonElement", value: function isValidButtonElement(buttonElement) { return !!buttonElement; } }, { key: "isButtonAlreadyTrackedForStep", value: function isButtonAlreadyTrackedForStep(buttonElement, currentStep) { var existingStep = buttonElement.dataset.onboardingStep; return buttonElement.dataset.onboardingTracked && existingStep === currentStep; } }, { key: "markButtonAsTracked", value: function markButtonAsTracked(buttonElement, currentStep) { buttonElement.dataset.onboardingTracked = "true"; buttonElement.dataset.onboardingStep = currentStep; } }, { key: "createUpgradeButtonEventHandlers", value: function createUpgradeButtonEventHandlers(buttonElement, currentStep) { var _this7 = this; var hasClicked = false; var hasHovered = false; return { handleMouseEnter: function handleMouseEnter() { if (!hasHovered) { hasHovered = true; _this7.trackUpgradeHoverAction(currentStep, buttonElement); } }, handleMouseLeave: function handleMouseLeave() {}, handleClick: function handleClick() { if (_this7.preventDuplicateClick(hasClicked)) return; hasClicked = true; _this7.sendUpgradeClickEvent(buttonElement, currentStep); } }; } }, { key: "preventDuplicateClick", value: function preventDuplicateClick(hasClicked) { return hasClicked; } }, { key: "sendUpgradeClickEvent", value: function sendUpgradeClickEvent(buttonElement, currentStep) { var upgradeClickedValue = this.determineUpgradeClickedValue(buttonElement); var stepNumber = this.getStepNumber(currentStep); if (stepNumber) { var stepConfig = this.getStepConfig(stepNumber); var hoverData = this.pendingHoverActions && this.pendingHoverActions[stepNumber]; if (stepConfig) { var actualStorageKey = stepConfig.storageKey; var existingActions = StorageManager.getArray(actualStorageKey); var noClickIndex = existingActions.findIndex(function(action) { return "upgrade_topbar" === action.action && "no_click" === action.upgrade_clicked; }); if (noClickIndex !== -1) { existingActions.splice(noClickIndex, 1); StorageManager.setObject(actualStorageKey, existingActions); } } var actionData = { upgrade_clicked: upgradeClickedValue, click_timestamp: TimingManager.getCurrentTime() }; if (hoverData) { actionData.upgrade_hovered = hoverData.upgrade_hovered; actionData.hover_timestamp = hoverData.hover_timestamp; } this.trackStepAction(stepNumber, "upgrade_topbar", actionData); if (this.pendingHoverActions && this.pendingHoverActions[stepNumber]) delete this.pendingHoverActions[stepNumber]; } this.sendEventOrStore("TOP_UPGRADE", { currentStep, upgradeClicked: upgradeClickedValue }); } }, { key: "trackUpgradeHoverAction", value: function trackUpgradeHoverAction(currentStep, buttonElement) { var stepNumber = this.getStepNumber(currentStep); if (!stepNumber) return; var upgradeHoverValue = this.determineUpgradeClickedValue(buttonElement); if (!this.pendingHoverActions) this.pendingHoverActions = {}; this.pendingHoverActions[stepNumber] = { upgrade_hovered: upgradeHoverValue, hover_timestamp: TimingManager.getCurrentTime() }; } }, { key: "sendHoverEventsFromStepActions", value: function sendHoverEventsFromStepActions(actions, stepNumber) { if (!this.pendingHoverActions || !this.pendingHoverActions[stepNumber]) return; var hasUpgradeTopbarInActions = actions.some(function(action) { return action.action && "upgrade_topbar" === action.action; }); var hasStoredClickEvent = this.hasExistingUpgradeClickEvent(stepNumber); var hasClickBeenSent = this.hasUpgradeClickBeenSent(stepNumber); if (hasUpgradeTopbarInActions || hasStoredClickEvent || hasClickBeenSent) return; var hoverData = this.pendingHoverActions[stepNumber]; var stepConfig = this.getStepConfig(stepNumber); if (stepConfig) this.trackStepActionInternal(stepNumber, "upgrade_topbar", stepConfig.storageKey, { upgrade_clicked: "no_click", upgrade_hovered: hoverData.upgrade_hovered, hover_timestamp: hoverData.hover_timestamp }); this.sendEventOrStore("TOP_UPGRADE", { currentStep: stepNumber, upgradeClicked: "no_click", upgradeHovered: hoverData.upgrade_hovered, hoverTimestamp: hoverData.hover_timestamp }); delete this.pendingHoverActions[stepNumber]; } }, { key: "markUpgradeClickSent", value: function markUpgradeClickSent(stepNumber) { if (!this.sentUpgradeClicks) this.sentUpgradeClicks = /* @__PURE__ */ new Set(); this.sentUpgradeClicks.add(stepNumber); } }, { key: "hasUpgradeClickBeenSent", value: function hasUpgradeClickBeenSent(stepNumber) { return this.sentUpgradeClicks && this.sentUpgradeClicks.has(stepNumber); } }, { key: "hasExistingUpgradeClickEvent", value: function hasExistingUpgradeClickEvent(stepNumber) { var _this8 = this; var config = this.EVENT_CONFIGS.TOP_UPGRADE; return StorageManager.getArray(config.storageKey).some(function(event) { return _this8.getStepNumber(event.currentStep) === stepNumber && event.upgradeClicked && "no_click" !== event.upgradeClicked; }); } }, { key: "attachEventHandlersToButton", value: function attachEventHandlersToButton(buttonElement, eventHandlers) { var handleMouseEnter = eventHandlers.handleMouseEnter; var handleMouseLeave = eventHandlers.handleMouseLeave; var handleClick = eventHandlers.handleClick; buttonElement._onboardingHandlers = { mouseenter: handleMouseEnter, mouseleave: handleMouseLeave, click: handleClick }; buttonElement.addEventListener("mouseenter", handleMouseEnter); buttonElement.addEventListener("mouseleave", handleMouseLeave); buttonElement.addEventListener("click", handleClick); } }, { key: "cleanupButtonTracking", value: function cleanupButtonTracking(buttonElement) { if (!buttonElement) return; this.removeExistingEventHandlers(buttonElement); this.clearTrackingDataAttributes(buttonElement); } }, { key: "removeExistingEventHandlers", value: function removeExistingEventHandlers(buttonElement) { if (buttonElement._onboardingHandlers) { var handlers = buttonElement._onboardingHandlers; buttonElement.removeEventListener("mouseenter", handlers.mouseenter); buttonElement.removeEventListener("mouseleave", handlers.mouseleave); buttonElement.removeEventListener("click", handlers.click); delete buttonElement._onboardingHandlers; } } }, { key: "clearTrackingDataAttributes", value: function clearTrackingDataAttributes(buttonElement) { delete buttonElement.dataset.onboardingTracked; delete buttonElement.dataset.onboardingStep; } }, { key: "determineUpgradeClickedValue", value: function determineUpgradeClickedValue(buttonElement) { var _elementorCommon$conf; var _elementorCommon$conf2; if ((_elementorCommon$conf = elementorCommon.config.library_connect) !== null && _elementorCommon$conf !== void 0 && _elementorCommon$conf.is_connected && "pro" === ((_elementorCommon$conf2 = elementorCommon.config.library_connect) === null || _elementorCommon$conf2 === void 0 ? void 0 : _elementorCommon$conf2.current_access_tier)) return "already_pro_user"; if (buttonElement.closest(".e-app__popover") || buttonElement.closest(".elementor-tooltip") || buttonElement.closest(".e-onboarding__go-pro-content")) return "on_tooltip"; if (buttonElement.closest(".eps-app__header")) return "on_topbar"; return "on_topbar"; } }, { key: "trackExitAndSendEndState", value: function trackExitAndSendEndState(currentStep) { this.trackStepAction(currentStep, "exit"); this.sendStepEndState(currentStep); } }, { key: "storeStep1EndStateForLater", value: function storeStep1EndStateForLater(eventData, storageKey) { this.storeEventForLater("STEP1_END_STATE", eventData); StorageManager.remove(storageKey); } }, { key: "startSessionRecordingIfNeeded", value: function startSessionRecordingIfNeeded() { var _elementorCommon; var _elementorCommon2; var _elementorCommon2$fea; var _this9 = this; if (_classPrivateFieldGet(_hasAttemptedSessionRecording, this)) return; if (!((_elementorCommon = elementorCommon) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.config) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.editor_events) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.session_replays) !== null && _elementorCommon !== void 0 && _elementorCommon.coreOnboarding)) return; var featureFlagPromise = (_elementorCommon2 = elementorCommon) === null || _elementorCommon2 === void 0 || (_elementorCommon2 = _elementorCommon2.eventsManager) === null || _elementorCommon2 === void 0 || (_elementorCommon2$fea = _elementorCommon2.featureFlagIsActive) === null || _elementorCommon2$fea === void 0 ? void 0 : _elementorCommon2$fea.call(_elementorCommon2, "core-onboarding-session-replays"); if (!featureFlagPromise) return; _classPrivateFieldSet(_hasAttemptedSessionRecording, this, true); featureFlagPromise.then(function(isFeatureFlagActive) { if (!isFeatureFlagActive) return; _this9.startSessionRecording(); }).catch(function() {}); } }, { key: "startSessionRecording", value: function startSessionRecording() { var _elementorCommon3; var _elementorCommon3$isS; var _elementorCommon$even; var _elementorCommon$even2; if (!EventDispatcher.canSendEvents()) return; if ((_elementorCommon3 = elementorCommon) !== null && _elementorCommon3 !== void 0 && (_elementorCommon3 = _elementorCommon3.eventsManager) !== null && _elementorCommon3 !== void 0 && (_elementorCommon3$isS = _elementorCommon3.isSessionRecordingInProgress) !== null && _elementorCommon3$isS !== void 0 && _elementorCommon3$isS.call(_elementorCommon3)) return; (_elementorCommon$even = elementorCommon.eventsManager) === null || _elementorCommon$even === void 0 || _elementorCommon$even.dispatchEvent(ONBOARDING_EVENTS_MAP.SESSION_REPLAY_START, { location: "plugin_onboarding" }); (_elementorCommon$even2 = elementorCommon.eventsManager) === null || _elementorCommon$even2 === void 0 || _elementorCommon$even2.startSessionRecording(); } }, { key: "stopSessionRecordingIfNeeded", value: function stopSessionRecordingIfNeeded() { var _elementorCommon$even3; if (!_classPrivateFieldGet(_hasAttemptedSessionRecording, this)) return; (_elementorCommon$even3 = elementorCommon.eventsManager) === null || _elementorCommon$even3 === void 0 || _elementorCommon$even3.stopSessionRecording(); _classPrivateFieldSet(_hasAttemptedSessionRecording, this, false); } }, { key: "onStepLoad", value: function onStepLoad(currentStep) { var stepNumber = this.getStepNumber(currentStep); TimingManager.trackStepStartTime(stepNumber); if (1 === stepNumber || "account" === currentStep) this.sendExperimentStarted(101); if (2 === stepNumber || "hello" === currentStep || "hello_biz" === currentStep) { this.startSessionRecordingIfNeeded(); this.sendStoredStep1EventsOnStep2(); this.sendExperimentStarted(201); this.sendExperimentStarted(202); this.sendStep2ThemesLoaded(); } if (4 === stepNumber || "goodToGo" === currentStep) { this.checkAndSendReturnToStep4(); this.sendExperimentStarted(401); this.sendExperimentStarted(402); this.sendStep4Loaded(); } } }, { key: "sendStep2ThemesLoaded", value: function sendStep2ThemesLoaded() { if (StorageManager.exists(ONBOARDING_STORAGE_KEYS.STEP2_THEMES_LOADED_SENT)) return; if (EventDispatcher.canSendEvents()) { StorageManager.setString(ONBOARDING_STORAGE_KEYS.STEP2_THEMES_LOADED_SENT, "true"); return EventDispatcher.dispatchStepEvent(ONBOARDING_EVENTS_MAP.STEP2_THEMES_LOADED, 2, ONBOARDING_STEP_NAMES.HELLO_BIZ, { location: "plugin_onboarding" }); } } }, { key: "sendThemeInstalled", value: function sendThemeInstalled(theme) { if (EventDispatcher.canSendEvents()) return EventDispatcher.dispatchStepEvent(ONBOARDING_EVENTS_MAP.THEME_INSTALLED, 2, ONBOARDING_STEP_NAMES.HELLO_BIZ, { location: "plugin_onboarding", theme }); } }, { key: "sendThemeMarked", value: function sendThemeMarked(theme) { if (EventDispatcher.canSendEvents()) return EventDispatcher.dispatchStepEvent(ONBOARDING_EVENTS_MAP.THEME_MARKED, 2, ONBOARDING_STEP_NAMES.HELLO_BIZ, { location: "plugin_onboarding", theme }); } }, { key: "sendStep4Loaded", value: function sendStep4Loaded() { if (EventDispatcher.canSendEvents()) return EventDispatcher.dispatchStepEvent(ONBOARDING_EVENTS_MAP.STEP4_LOADED, 4, ONBOARDING_STEP_NAMES.SITE_STARTER, { location: "plugin_onboarding" }); } }, { key: "sendStoredStep1EventsOnStep2", value: function sendStoredStep1EventsOnStep2() { this.sendStoredEvent("STEP1_CLICKED_CONNECT"); var step1Actions = StorageManager.getArray(ONBOARDING_STORAGE_KEYS.STEP1_ACTIONS); if (step1Actions.length > 0) this.sendHoverEventsFromStepActions(step1Actions, 1); this.sendStoredEvent("STEP1_END_STATE"); this.sendStoredEventsIfConnected(); } }, { key: "setupPostOnboardingClickTracking", value: function setupPostOnboardingClickTracking() { return postOnboardingTracker.setupPostOnboardingClickTracking(); } }, { key: "cleanupPostOnboardingTracking", value: function cleanupPostOnboardingTracking() { return postOnboardingTracker.cleanupPostOnboardingTracking(); } }, { key: "clearAllOnboardingStorage", value: function clearAllOnboardingStorage() { return postOnboardingTracker.clearAllOnboardingStorage(); } }, { key: "getExperimentConfigs", value: function getExperimentConfigs() { return { 101: { name: "core_onboarding_experiment101", enabledKey: "isExperiment101Enabled", variantKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT101_VARIANT, startedKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT101_STARTED }, 201: { name: "core_onboarding_experiment201", enabledKey: "isExperiment201Enabled", variantKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT201_VARIANT, startedKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT201_STARTED }, 202: { name: "core_onboarding_experiment202", enabledKey: "isExperiment202Enabled", variantKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT202_VARIANT, startedKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT202_STARTED }, 401: { name: "core_onboarding_experiment401", enabledKey: "isExperiment401Enabled", variantKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT401_VARIANT, startedKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT401_STARTED }, 402: { name: "core_onboarding_experiment402", enabledKey: "isExperiment402Enabled", variantKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT402_VARIANT, startedKey: ONBOARDING_STORAGE_KEYS.EXPERIMENT402_STARTED } }; } }, { key: "isExperimentEnabled", value: function isExperimentEnabled(experimentId) { var _elementorAppConfig; var config = this.getExperimentConfigs()[experimentId]; if (!config) return false; return ((_elementorAppConfig = elementorAppConfig) === null || _elementorAppConfig === void 0 || (_elementorAppConfig = _elementorAppConfig.onboarding) === null || _elementorAppConfig === void 0 ? void 0 : _elementorAppConfig[config.enabledKey]) || false; } }, { key: "getExperimentVariant", value: function getExperimentVariant(experimentId) { var config = this.getExperimentConfigs()[experimentId]; if (!config) return null; return StorageManager.getString(config.variantKey) || null; } }, { key: "assignExperimentVariant", value: function assignExperimentVariant(experimentId) { var config = this.getExperimentConfigs()[experimentId]; if (!config || !this.isExperimentEnabled(experimentId)) return null; var variant = Math.random() < .5 ? "A" : "B"; StorageManager.setString(config.variantKey, variant); return variant; } }, { key: "sendExperimentStarted", value: function sendExperimentStarted(experimentId) { var config = this.getExperimentConfigs()[experimentId]; if (!config) return; if (StorageManager.exists(config.startedKey)) return; var variant = this.getExperimentVariant(experimentId); if (!variant) { variant = this.assignExperimentVariant(experimentId); if (!variant) return; } var eventData = { "Experiment name": config.name, "Variant name": variant }; if (EventDispatcher.canSendEvents()) { EventDispatcher.dispatch("$experiment_started", eventData); StorageManager.setString(config.startedKey, "true"); } else this.storeExperimentDataForLater(experimentId, eventData); } }, { key: "storeExperimentDataForLater", value: function storeExperimentDataForLater(experimentId, eventData) { var config = this.getExperimentConfigs()[experimentId]; if (!config) return; var experimentEntry = { experimentId, eventData, timestamp: TimingManager.getCurrentTime(), startedKey: config.startedKey }; var existingExperiments = StorageManager.getArray(ONBOARDING_STORAGE_KEYS.PENDING_EXPERIMENT_DATA); existingExperiments.push(experimentEntry); StorageManager.setObject(ONBOARDING_STORAGE_KEYS.PENDING_EXPERIMENT_DATA, existingExperiments); } }, { key: "sendStoredExperimentData", value: function sendStoredExperimentData() { var storedExperiments = StorageManager.getArray(ONBOARDING_STORAGE_KEYS.PENDING_EXPERIMENT_DATA); if (0 === storedExperiments.length) return; storedExperiments.forEach(function(experiment) { EventDispatcher.dispatch("$experiment_started", experiment.eventData); StorageManager.setString(experiment.startedKey, "true"); }); StorageManager.remove(ONBOARDING_STORAGE_KEYS.PENDING_EXPERIMENT_DATA); } } ]); }())(); })); //#endregion //#region app/modules/onboarding/assets/js/utils/onboarding-event-tracking.js var OnboardingEventTracking; var init_onboarding_event_tracking = __esmMin((() => { init_onboarding_tracker(); OnboardingEventTracking = onboardingTracker; })); //#endregion //#region app/modules/onboarding/assets/js/utils/connect.js function Connect(props) { var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var getStateObjectToUpdate = _useContext.getStateObjectToUpdate; var buttonRef = props.buttonRef; var successCallback = props.successCallback; var errorCallback = props.errorCallback; var handleCoreConnectionLogic = (0, react.useCallback)(function(event, data) { var isTrackingOptedInConnect = data.tracking_opted_in && elementorCommon.config.editor_events; OnboardingEventTracking.updateLibraryConnectConfig(data); if (isTrackingOptedInConnect) { elementorCommon.config.editor_events.can_send_events = true; EventDispatcher.initializeAndEnableTracking(); OnboardingEventTracking.sendConnectionSuccessEvents(data); } }, []); var defaultConnectSuccessCallback = (0, react.useCallback)(function() { var stateToUpdate = getStateObjectToUpdate(state, "steps", "account", "completed"); stateToUpdate.isLibraryConnected = true; updateState(stateToUpdate); }, [ state, getStateObjectToUpdate, updateState ]); (0, react.useEffect)(function() { jQuery(buttonRef.current).elementorConnect({ success: function success(event, data) { handleCoreConnectionLogic(event, data); if (successCallback) successCallback(event, data); else defaultConnectSuccessCallback(); }, error: function error() { if (errorCallback) errorCallback(); }, popup: { width: 726, height: 534 } }); }, [ buttonRef, successCallback, errorCallback, handleCoreConnectionLogic, defaultConnectSuccessCallback ]); return null; } var import_prop_types$17; var init_connect = __esmMin((() => { import_prop_types$17 = /* @__PURE__ */ __toESM(require_prop_types()); init_context(); init_onboarding_event_tracking(); init_event_dispatcher(); Connect.propTypes = { buttonRef: import_prop_types$17.default.object.isRequired, successCallback: import_prop_types$17.default.func, errorCallback: import_prop_types$17.default.func }; })); //#endregion //#region app/modules/onboarding/assets/js/components/checklist.js function Checklist(props) { return /*#__PURE__*/ react.default.createElement("ul", { className: "e-onboarding__checklist" }, props.children); } var import_prop_types$16; var init_checklist = __esmMin((() => { import_prop_types$16 = /* @__PURE__ */ __toESM(require_prop_types()); Checklist.propTypes = { children: import_prop_types$16.default.any.isRequired }; })); //#endregion //#region app/modules/onboarding/assets/js/components/checklist-item.js function ChecklistItem(props) { return /*#__PURE__*/ react.default.createElement("li", { className: "e-onboarding__checklist-item" }, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-check-circle" }), props.children); } var import_prop_types$15; var init_checklist_item = __esmMin((() => { import_prop_types$15 = /* @__PURE__ */ __toESM(require_prop_types()); ChecklistItem.propTypes = { children: import_prop_types$15.default.string }; })); //#endregion //#region app/modules/onboarding/assets/js/components/button.js function Button(props) { var buttonSettings = props.buttonSettings; var type = props.type; var buttonClasses = "e-onboarding__button"; if (type) buttonClasses += " e-onboarding__button-".concat(type); if (buttonSettings.className) buttonSettings.className += " " + buttonClasses; else buttonSettings.className = buttonClasses; var elRef = buttonSettings.elRef; var buttonProps = _objectWithoutProperties(buttonSettings, _excluded); if (buttonSettings.href) return /*#__PURE__*/ react.default.createElement("a", _extends$1({ ref: elRef }, buttonProps), buttonSettings.text); return /*#__PURE__*/ react.default.createElement("div", _extends$1({ ref: elRef }, buttonProps), buttonSettings.text); } var import_prop_types$14, _excluded; var init_button = __esmMin((() => { import_prop_types$14 = /* @__PURE__ */ __toESM(require_prop_types()); init_extends(); init_objectWithoutProperties(); _excluded = ["elRef"]; Button.propTypes = { buttonSettings: import_prop_types$14.default.object.isRequired, type: import_prop_types$14.default.string }; })); //#endregion //#region app/modules/onboarding/assets/js/utils/utils.js function ownKeys$1(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; } function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function(r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function(r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var optionsWithoutOne, optionsWithOne, getOptions, setSelectedFeatureList, safeDispatchEvent, getTrackingExperimentName, getActiveExperiment, addExperimentTrackingToUrl; var init_utils = __esmMin((() => { init_toConsumableArray(); init_defineProperty$1(); init_onboarding_event_tracking(); __name(ownKeys$1, "ownKeys"); __name(_objectSpread$1, "_objectSpread"); optionsWithoutOne = [ { plan: "essential", text: (0, _wordpress_i18n.__)("Templates & Theme Builder", "elementor") }, { plan: "advanced", text: (0, _wordpress_i18n.__)("WooCommerce Builder", "elementor") }, { plan: "essential", text: (0, _wordpress_i18n.__)("Lead Collection & Form Builder", "elementor") }, { plan: "essential", text: (0, _wordpress_i18n.__)("Dynamic Content", "elementor") }, { plan: "advanced", text: (0, _wordpress_i18n.__)("Popup Builder", "elementor") }, { plan: "advanced", text: (0, _wordpress_i18n.__)("Custom Code & CSS", "elementor") }, { plan: "essential", text: (0, _wordpress_i18n.__)("Motion Effects & Animations", "elementor") }, { plan: "advanced", text: (0, _wordpress_i18n.__)("Notes & Collaboration", "elementor") } ]; optionsWithOne = [ { plan: "essential", text: (0, _wordpress_i18n.__)("Theme Builder", "elementor") }, { plan: "one", text: (0, _wordpress_i18n.__)("AI for code, images, & layouts", "elementor") }, { plan: "essential", text: (0, _wordpress_i18n.__)("Lead Collection", "elementor") }, { plan: "one", text: (0, _wordpress_i18n.__)("Image optimization", "elementor") }, { plan: "advanced", text: (0, _wordpress_i18n.__)("Custom Code & CSS", "elementor") }, { plan: "one", text: (0, _wordpress_i18n.__)("Accessibility scans and fixes", "elementor") }, { plan: "one", text: (0, _wordpress_i18n.__)("Email deliverability", "elementor") }, { plan: "advanced", text: (0, _wordpress_i18n.__)("WooCommerce Builder", "elementor") } ]; getOptions = function getOptions() { return (arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false) ? optionsWithOne : optionsWithoutOne; }; setSelectedFeatureList = function setSelectedFeatureList(_ref) { var checked = _ref.checked; var id = _ref.id; var text = _ref.text; var selectedFeatures = _ref.selectedFeatures; var setSelectedFeatures = _ref.setSelectedFeatures; var tier = id.split("-")[0]; if (checked) setSelectedFeatures(_objectSpread$1(_objectSpread$1({}, selectedFeatures), {}, _defineProperty$1({}, tier, [].concat(_toConsumableArray(selectedFeatures[tier]), [text])))); else setSelectedFeatures(_objectSpread$1(_objectSpread$1({}, selectedFeatures), {}, _defineProperty$1({}, tier, selectedFeatures[tier].filter(function(item) { return item !== text; })))); }; safeDispatchEvent = function safeDispatchEvent(eventName, eventData) { try { var _elementorCommon; var _elementorCommon$disp; (_elementorCommon = elementorCommon) === null || _elementorCommon === void 0 || (_elementorCommon = _elementorCommon.eventsManager) === null || _elementorCommon === void 0 || (_elementorCommon$disp = _elementorCommon.dispatchEvent) === null || _elementorCommon$disp === void 0 || _elementorCommon$disp.call(_elementorCommon, eventName, eventData); } catch (error) {} }; getTrackingExperimentName = function getTrackingExperimentName(internalName) { var _elementorAppConfig; return (((_elementorAppConfig = elementorAppConfig) === null || _elementorAppConfig === void 0 || (_elementorAppConfig = _elementorAppConfig.onboarding) === null || _elementorAppConfig === void 0 ? void 0 : _elementorAppConfig.experimentNames) || {})[internalName.replace("core_onboarding_experiment", "")] || internalName; }; getActiveExperiment = function getActiveExperiment() { var experimentConfigs = OnboardingEventTracking.getExperimentConfigs(); for (var experimentId in experimentConfigs) { var _elementorAppConfig2; var config = experimentConfigs[experimentId]; if (((_elementorAppConfig2 = elementorAppConfig) === null || _elementorAppConfig2 === void 0 || (_elementorAppConfig2 = _elementorAppConfig2.onboarding) === null || _elementorAppConfig2 === void 0 ? void 0 : _elementorAppConfig2[config.enabledKey]) || false) { var variant = localStorage.getItem(config.variantKey); if (variant) return { name: getTrackingExperimentName(config.name), variant }; } } return null; }; addExperimentTrackingToUrl = function addExperimentTrackingToUrl(url) { var buttonName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; if (!url || typeof url !== "string") return url; var activeExperiment = getActiveExperiment(); if (!activeExperiment) return url; var separator = url.includes("?") ? "&" : "?"; var trackingParams = "e_na=".concat(encodeURIComponent(activeExperiment.name), "&e_va=").concat(encodeURIComponent(activeExperiment.variant)); if (buttonName) trackingParams += "&e_bu=".concat(encodeURIComponent(buttonName)); return url + separator + trackingParams; }; })); //#endregion //#region app/modules/onboarding/assets/js/components/go-pro-popover.js function GoProPopover(props) { var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var upgradeButtonRef = (0, react.useRef)(null); var alreadyHaveProButtonRef = (0, react.useCallback)(function(alreadyHaveProButton) { if (!alreadyHaveProButton) return; if (!state.currentStep || "" === state.currentStep) return; var existingHandler = alreadyHaveProButton._elementorProHandler; if (existingHandler) alreadyHaveProButton.removeEventListener("click", existingHandler); var clickHandler = function clickHandler(event) { event.preventDefault(); if (!state.currentStep || "" === state.currentStep) return; var stepNumber = OnboardingEventTracking.getStepNumber(state.currentStep); OnboardingEventTracking.trackStepAction(stepNumber, "upgrade_already_pro"); OnboardingEventTracking.cancelDelayedNoClickEvent(); if (stepNumber) OnboardingEventTracking.sendTopUpgrade(stepNumber, "already_pro_user"); elementorCommon.events.dispatchEvent({ event: "already have pro", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); window.open(alreadyHaveProButton.href + "&mode=popup", "elementorUploadPro", "toolbar=no, menubar=no, width=728, height=531, top=100, left=100"); elementorCommon.elements.$body.off("elementor/upload-and-install-pro/success").on("elementor/upload-and-install-pro/success", function() { updateState({ hasPro: true, proNotice: { color: "success", children: (0, _wordpress_i18n.__)("Pro is now active! You can continue.", "elementor") } }); }); }; alreadyHaveProButton._elementorProHandler = clickHandler; alreadyHaveProButton.addEventListener("click", clickHandler); }, [state.currentStep, updateState]); var getElProButton = { text: elementorAppConfig.onboarding.experiment ? (0, _wordpress_i18n.__)("Upgrade now", "elementor") : (0, _wordpress_i18n.__)("Upgrade Now", "elementor"), className: "e-onboarding__go-pro-cta", target: "_blank", href: addExperimentTrackingToUrl("https://elementor.com/pro/?utm_source=onboarding-wizard&utm_campaign=gopro&utm_medium=wp-dash&utm_content=top-bar-dropdown&utm_term=" + elementorAppConfig.onboarding.onboardingVersion, "upgrade-popover"), tabIndex: 0, elRef: function elRef(buttonElement) { if (!buttonElement) return; upgradeButtonRef.current = buttonElement; }, onClick: function onClick() { if (!state.currentStep || "" === state.currentStep) return; var stepNumber = OnboardingEventTracking.getStepNumber(state.currentStep); OnboardingEventTracking.cancelDelayedNoClickEvent(); if (stepNumber) OnboardingEventTracking.sendTopUpgrade(stepNumber, "on_tooltip"); elementorCommon.events.dispatchEvent({ event: "get elementor pro", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); } }; var targetRef = props.goProButtonRef || upgradeButtonRef; return /*#__PURE__*/ react.default.createElement(PopoverDialog, { targetRef, wrapperClass: "e-onboarding__go-pro" }, /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__go-pro-content" }, /*#__PURE__*/ react.default.createElement("h2", { className: "e-onboarding__go-pro-title" }, (0, _wordpress_i18n.__)("Ready to Get Elementor Pro?", "elementor")), /*#__PURE__*/ react.default.createElement(Checklist, null, /*#__PURE__*/ react.default.createElement(ChecklistItem, null, (0, _wordpress_i18n.__)("90+ Basic & Pro widgets", "elementor")), /*#__PURE__*/ react.default.createElement(ChecklistItem, null, (0, _wordpress_i18n.__)("300+ Basic & Pro templates", "elementor")), /*#__PURE__*/ react.default.createElement(ChecklistItem, null, (0, _wordpress_i18n.__)("Premium Support", "elementor"))), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__go-pro-paragraph" }, (0, _wordpress_i18n.__)("And so much more!", "elementor")), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__go-pro-paragraph" }, /*#__PURE__*/ react.default.createElement(Button, { buttonSettings: getElProButton })), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__go-pro-paragraph" }, /*#__PURE__*/ react.default.createElement("a", { tabIndex: "0", className: "e-onboarding__go-pro-already-have", ref: alreadyHaveProButtonRef, href: elementorAppConfig.onboarding.urls.uploadPro, rel: "opener" }, (0, _wordpress_i18n.__)("Already have Elementor Pro?", "elementor"))))); } var import_prop_types$13; var init_go_pro_popover = __esmMin((() => { init_context(); init_popover_dialog(); init_checklist(); init_checklist_item(); init_button(); import_prop_types$13 = /* @__PURE__ */ __toESM(require_prop_types()); init_onboarding_event_tracking(); init_utils(); GoProPopover.propTypes = { buttonsConfig: import_prop_types$13.default.array.isRequired, goProButtonRef: import_prop_types$13.default.object }; })); //#endregion //#region app/modules/onboarding/assets/js/components/layout/header.js function Header(props) { usePageTitle({ title: props.title }); var state = (0, react.useContext)(OnboardingContext).state; var trackXButtonExit = function trackXButtonExit() { var stepNumber = OnboardingEventTracking.getStepNumber(state.currentStep); OnboardingEventTracking.sendExitButtonEvent(stepNumber || state.currentStep); }; return /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, alignItems: "center", justify: "space-between", className: "eps-app__header e-onboarding__header" }, /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__logo-title-wrapper e-onboarding__header-logo" }, /*#__PURE__*/ react.default.createElement("i", { className: "eps-app__logo eicon-elementor-circle" }), /*#__PURE__*/ react.default.createElement("img", { src: elementorCommon.config.urls.assets + "images/logo-platform.svg", alt: (0, _wordpress_i18n.__)("Elementor Logo", "elementor") })), /*#__PURE__*/ react.default.createElement(HeaderButtons, { buttons: props.buttons, onClose: function onClose() { trackXButtonExit(); elementorCommon.events.dispatchEvent({ event: "close modal", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); setTimeout(function() { window.top.location = elementorAppConfig.admin_url; }, 100); } }), !state.hasPro && /*#__PURE__*/ react.default.createElement(GoProPopover, { buttonsConfig: props.buttons, goProButtonRef: props.goProButtonRef })); } var import_prop_types$12; var init_header = __esmMin((() => { import_prop_types$12 = /* @__PURE__ */ __toESM(require_prop_types()); init_context(); init_grid(); init_go_pro_popover(); init_header_buttons(); init_use_page_title(); init_onboarding_event_tracking(); Header.propTypes = { title: import_prop_types$12.default.string, buttons: import_prop_types$12.default.arrayOf(import_prop_types$12.default.object), goProButtonRef: import_prop_types$12.default.object }; Header.defaultProps = { buttons: [] }; })); //#endregion //#region app/modules/onboarding/assets/js/components/progress-bar/progress-bar-item.js function ProgressBarItem(props) { var state = (0, react.useContext)(OnboardingContext).state; var stepCompleted = "completed" === state.steps[props.id]; var stepSkipped = "skipped" === state.steps[props.id]; var isExperiment101VariantB = "B" === localStorage.getItem(ONBOARDING_STORAGE_KEYS.EXPERIMENT101_VARIANT); var itemClasses = "e-onboarding__progress-bar-item"; if (props.id === state.currentStep) itemClasses += " e-onboarding__progress-bar-item--active"; else if (stepCompleted) itemClasses += " e-onboarding__progress-bar-item--completed"; else if (stepSkipped) itemClasses += " e-onboarding__progress-bar-item--skipped"; if (isExperiment101VariantB && 0 === props.index) return null; var itemIndex = isExperiment101VariantB ? props.index : props.index + 1; return /*#__PURE__*/ react.default.createElement("div", { onClick: props.onClick, className: itemClasses }, /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__progress-bar-item-icon", "data-item-count": !stepCompleted ? itemIndex : null }, stepCompleted ? /*#__PURE__*/ react.default.createElement("i", { className: "eicon-check" }) : ""), props.title); } var import_prop_types$11; var init_progress_bar_item = __esmMin((() => { import_prop_types$11 = /* @__PURE__ */ __toESM(require_prop_types()); init_context(); init_onboarding_event_tracking(); ProgressBarItem.propTypes = { index: import_prop_types$11.default.number.isRequired, id: import_prop_types$11.default.string.isRequired, title: import_prop_types$11.default.string.isRequired, route: import_prop_types$11.default.string, onClick: import_prop_types$11.default.func }; })); //#endregion //#region app/modules/onboarding/assets/js/components/progress-bar/progress-bar.js function ProgressBar() { var state = (0, react.useContext)(OnboardingContext).state; var navigate = useNavigate(); var isExperiment401VariantB = "B" === localStorage.getItem(ONBOARDING_STORAGE_KEYS.EXPERIMENT401_VARIANT); var isExperiment402VariantB = "B" === localStorage.getItem(ONBOARDING_STORAGE_KEYS.EXPERIMENT402_VARIANT); var progressBarItemsConfig = [{ id: "account", title: (0, _wordpress_i18n.__)("Elementor Account", "elementor"), route: "account" }]; if (!elementorAppConfig.onboarding.helloActivated) progressBarItemsConfig.push({ id: "hello", title: (0, _wordpress_i18n.__)("Hello Theme", "elementor"), route: "hello" }); if (elementorAppConfig.onboarding.experiment) progressBarItemsConfig.push({ id: "chooseFeatures", title: (0, _wordpress_i18n.__)("Choose Features", "elementor"), route: "chooseFeatures" }); else progressBarItemsConfig.push({ id: "siteName", title: (0, _wordpress_i18n.__)("Site Name", "elementor"), route: "site-name" }, { id: "siteLogo", title: (0, _wordpress_i18n.__)("Site Logo", "elementor"), route: "site-logo" }); var goodToGoTitle = isExperiment401VariantB || isExperiment402VariantB ? (0, _wordpress_i18n.__)("Start Creating Site", "elementor") : (0, _wordpress_i18n.__)("Good to Go", "elementor"); progressBarItemsConfig.push({ id: "goodToGo", title: goodToGoTitle, route: "good-to-go" }); var progressBarItems = progressBarItemsConfig.map(function(itemConfig, index) { itemConfig.index = index; if (state.steps[itemConfig.id]) itemConfig.onClick = function() { var currentStepNumber = OnboardingEventTracking.getStepNumber(state.currentStep); var nextStepNumber = OnboardingEventTracking.getStepNumber(itemConfig.id); if (4 === currentStepNumber) { OnboardingEventTracking.trackStepAction(4, "stepper_clicks", { from_step: currentStepNumber, to_step: nextStepNumber }); OnboardingEventTracking.sendStepEndState(4); } elementorCommon.events.dispatchEvent({ event: "step click", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, next_step: itemConfig.id } }); navigate("/onboarding/" + itemConfig.id); }; return /*#__PURE__*/ react.default.createElement(ProgressBarItem, _extends$1({ key: itemConfig.id }, itemConfig)); }); return /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__progress-bar" }, progressBarItems); } var init_progress_bar = __esmMin((() => { init_extends(); init_context(); init_es$1(); init_progress_bar_item(); init_onboarding_event_tracking(); })); //#endregion //#region app/modules/onboarding/assets/js/components/layout/layout.js function getCurrentStepForTracking(pageId, currentStep) { return pageId || currentStep || "account"; } function shouldResetupButtonTracking(buttonRef, pageId, currentStep) { if (!buttonRef) return false; var currentStepForTracking = getCurrentStepForTracking(pageId, currentStep); return buttonRef.dataset.onboardingStep !== currentStepForTracking; } function Layout(props) { var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var stepNumber = (0, react.useMemo)(function() { return OnboardingEventTracking.getStepNumber(props.pageId); }, [props.pageId]); var goProButtonRef = (0, react.useRef)(); var setupTopbarUpgradeTracking = (0, react.useCallback)(function(buttonElement) { if (!buttonElement) return; var currentStep = getCurrentStepForTracking(props.pageId, state.currentStep); goProButtonRef.current = buttonElement; return OnboardingEventTracking.setupSingleUpgradeButton(buttonElement, currentStep); }, [state.currentStep, props.pageId]); var handleTopbarConnectSuccess = (0, react.useCallback)(function() { updateState({ isLibraryConnected: true }); }, [updateState]); (0, react.useEffect)(function() { elementorCommon.events.dispatchEvent({ event: "modal load", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: props.pageId, user_state: elementorCommon.config.library_connect.is_connected ? "logged" : "anon" } }); if (goProButtonRef.current) setupTopbarUpgradeTracking(goProButtonRef.current); updateState({ currentStep: props.pageId, nextStep: props.nextStep || "", proNotice: null }); }, [ setupTopbarUpgradeTracking, stepNumber, props.pageId, props.nextStep, updateState ]); (0, react.useEffect)(function() { if (shouldResetupButtonTracking(goProButtonRef.current, props.pageId, state.currentStep)) setupTopbarUpgradeTracking(goProButtonRef.current); }, [ state.currentStep, props.pageId, setupTopbarUpgradeTracking ]); var headerButtons = []; var createAccountButton = { id: "create-account", text: (0, _wordpress_i18n.__)("Create Account", "elementor"), hideText: false, elRef: (0, react.useRef)(), url: elementorAppConfig.onboarding.urls.signUp + elementorAppConfig.onboarding.utms.connectTopBar, target: "_blank", rel: "opener", onClick: function onClick() { OnboardingEventTracking.sendEventOrStore("CREATE_MY_ACCOUNT", { currentStep: stepNumber, createAccountClicked: "topbar" }); elementorCommon.events.dispatchEvent({ event: "create account", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, source: "header" } }); } }; if (state.isLibraryConnected) headerButtons.push({ id: "my-elementor", text: (0, _wordpress_i18n.__)("My Elementor", "elementor"), hideText: false, icon: "eicon-user-circle-o", url: addExperimentTrackingToUrl("https://my.elementor.com/websites/?utm_source=onboarding-wizard&utm_medium=wp-dash&utm_campaign=my-account&utm_content=top-bar&utm_term=" + elementorAppConfig.onboarding.onboardingVersion, "my-elementor-topbar"), target: "_blank", onClick: function onClick() { elementorCommon.events.dispatchEvent({ event: "my elementor click", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, source: "header" } }); } }); else headerButtons.push(createAccountButton); if (!state.hasPro) headerButtons.push({ id: "go-pro", text: (0, _wordpress_i18n.__)("Upgrade", "elementor"), hideText: false, className: "eps-button__go-pro-btn", url: addExperimentTrackingToUrl("https://elementor.com/pro/?utm_source=onboarding-wizard&utm_campaign=gopro&utm_medium=wp-dash&utm_content=top-bar&utm_term=" + elementorAppConfig.onboarding.onboardingVersion, "upgrade-topbar"), target: "_blank", elRef: setupTopbarUpgradeTracking, onClick: function onClick() { var currentStep = getCurrentStepForTracking(props.pageId, state.currentStep); var currentStepNumber = OnboardingEventTracking.getStepNumber(currentStep); OnboardingEventTracking.trackStepAction(currentStepNumber, "upgrade_topbar"); elementorCommon.events.dispatchEvent({ event: "go pro", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: currentStep } }); } }); return /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__lightbox" }, /*#__PURE__*/ react.default.createElement("div", { className: "eps-app e-onboarding ".concat(props.className || "") }, !state.isLibraryConnected && /*#__PURE__*/ react.default.createElement(Connect, { buttonRef: createAccountButton.elRef, successCallback: handleTopbarConnectSuccess }), /*#__PURE__*/ react.default.createElement(Header, { title: (0, _wordpress_i18n.__)("Getting Started", "elementor"), buttons: headerButtons, goProButtonRef }), /*#__PURE__*/ react.default.createElement("div", { className: "eps-app__main e-onboarding__page-" + props.pageId }, /*#__PURE__*/ react.default.createElement(Content, { className: "e-onboarding__content" }, /*#__PURE__*/ react.default.createElement(ProgressBar, null), props.children)))); } var import_prop_types$10; var init_layout = __esmMin((() => { import_prop_types$10 = /* @__PURE__ */ __toESM(require_prop_types()); init_context(); init_header(); init_progress_bar(); init_content(); init_connect(); init_onboarding_event_tracking(); init_utils(); Layout.propTypes = { pageId: import_prop_types$10.default.string.isRequired, nextStep: import_prop_types$10.default.string, className: import_prop_types$10.default.string, children: import_prop_types$10.default.any.isRequired }; })); //#endregion //#region app/modules/onboarding/assets/js/components/notice.js function Notice(props) { return /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__notice e-onboarding__notice--".concat(props.noticeState.type) }, /*#__PURE__*/ react.default.createElement("i", { className: props.noticeState.icon }), /*#__PURE__*/ react.default.createElement("span", { className: "e-onboarding__notice-text" }, props.noticeState.message)); } var import_prop_types$9; var init_notice = __esmMin((() => { import_prop_types$9 = /* @__PURE__ */ __toESM(require_prop_types()); Notice.propTypes = { noticeState: import_prop_types$9.default.object }; })); //#endregion //#region app/modules/onboarding/assets/js/components/skip-button.js function SkipButton(props) { var button = props.button; var className = props.className; var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var navigate = useNavigate(); var action = button.action || function skipStep() { var mutatedState = JSON.parse(JSON.stringify(state)); mutatedState.steps[state.currentStep] = "skipped"; updateState(mutatedState); if (state.nextStep) navigate("onboarding/" + state.nextStep); }; delete button.action; button.onClick = function(event) { var stepNumber = OnboardingEventTracking.getStepNumber(state.currentStep); OnboardingEventTracking.trackStepAction(stepNumber, "skipped"); OnboardingEventTracking.sendStepEndState(stepNumber); OnboardingEventTracking.sendEventOrStore("SKIP", { currentStep: stepNumber }); if (4 === stepNumber) OnboardingEventTracking.sendEventOrStore("EXIT", { currentStep: stepNumber, exitType: "skip_button" }); elementorCommon.events.dispatchEvent({ event: "skip", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); if (button.href) { event.preventDefault(); setTimeout(function() { window.location.href = button.href; }, 100); } else action(); }; return /*#__PURE__*/ react.default.createElement(Button, { buttonSettings: button, className, type: "skip" }); } var import_prop_types$8; var init_skip_button = __esmMin((() => { import_prop_types$8 = /* @__PURE__ */ __toESM(require_prop_types()); init_context(); init_es$1(); init_button(); init_onboarding_event_tracking(); SkipButton.propTypes = { button: import_prop_types$8.default.object.isRequired, className: import_prop_types$8.default.string }; })); //#endregion //#region app/modules/onboarding/assets/js/components/layout/footer-buttons.js function FooterButtons(_ref) { var actionButton = _ref.actionButton; var skipButton = _ref.skipButton; var className = _ref.className; var classNames = "e-onboarding__footer"; if (className) classNames += " " + className; return /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, alignItems: "center", justify: "space-between", className: classNames }, actionButton && /*#__PURE__*/ react.default.createElement(Button, { buttonSettings: actionButton, type: "action" }), skipButton && /*#__PURE__*/ react.default.createElement(SkipButton, { button: skipButton })); } var import_prop_types$7; var init_footer_buttons = __esmMin((() => { import_prop_types$7 = /* @__PURE__ */ __toESM(require_prop_types()); init_grid(); init_button(); init_skip_button(); FooterButtons.propTypes = { actionButton: import_prop_types$7.default.object, skipButton: import_prop_types$7.default.object, className: import_prop_types$7.default.string }; })); //#endregion //#region app/modules/onboarding/assets/js/components/layout/page-content-layout.js function PageContentLayout(props) { var state = (0, react.useContext)(OnboardingContext).state; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, alignItems: "center", justify: "space-between", className: "e-onboarding__page-content" }, /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__page-content-start" }, /*#__PURE__*/ react.default.createElement("h1", { className: "e-onboarding__page-content-section-title" }, props.title, props.secondLineTitle && /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("br", null), props.secondLineTitle)), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__page-content-section-text" }, props.children)), props.image && /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__page-content-end" }, /*#__PURE__*/ react.default.createElement("img", { src: props.image, alt: "Information" }))), props.noticeState && /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__notice-container" }, props.noticeState || state.proNotice ? function printNotices() { return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, props.noticeState && /*#__PURE__*/ react.default.createElement(Notice, { noticeState: props.noticeState }), state.proNotice && /*#__PURE__*/ react.default.createElement(Notice, { noticeState: state.proNotice })); }() : /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__notice-empty-spacer" })), /*#__PURE__*/ react.default.createElement(FooterButtons, { actionButton: props.actionButton, skipButton: props.skipButton })); } var import_prop_types$6; var init_page_content_layout = __esmMin((() => { import_prop_types$6 = /* @__PURE__ */ __toESM(require_prop_types()); init_context(); init_grid(); init_notice(); init_footer_buttons(); PageContentLayout.propTypes = { title: import_prop_types$6.default.string, secondLineTitle: import_prop_types$6.default.string, children: import_prop_types$6.default.any, image: import_prop_types$6.default.string, actionButton: import_prop_types$6.default.object, skipButton: import_prop_types$6.default.object, noticeState: import_prop_types$6.default.any }; })); //#endregion //#region app/modules/onboarding/assets/js/components/account-content-a.js function AccountContentA(_ref) { var actionButton = _ref.actionButton; var skipButton = _ref.skipButton; var noticeState = _ref.noticeState; var pageTexts = _ref.pageTexts; var state = _ref.state; var connectSuccessCallback = _ref.connectSuccessCallback; var connectFailureCallback = _ref.connectFailureCallback; return /*#__PURE__*/ react.default.createElement(PageContentLayout, { image: elementorCommon.config.urls.assets + "images/app/onboarding/Illustration_Account.svg", title: elementorAppConfig.onboarding.experiment ? (0, _wordpress_i18n.__)("You're here!", "elementor") : (0, _wordpress_i18n.__)("You're here! Let's set things up.", "elementor"), secondLineTitle: elementorAppConfig.onboarding.experiment ? (0, _wordpress_i18n.__)("Let's get connected.", "elementor") : "", actionButton, skipButton, noticeState }, actionButton.ref && !state.isLibraryConnected && /*#__PURE__*/ react.default.createElement(Connect, { buttonRef: actionButton.ref, successCallback: function successCallback(event, data) { return connectSuccessCallback(event, data); }, errorCallback: connectFailureCallback }), /*#__PURE__*/ react.default.createElement("span", null, pageTexts.firstLine), /*#__PURE__*/ react.default.createElement("ul", null, pageTexts.listItems.map(function(listItem, index) { return /*#__PURE__*/ react.default.createElement("li", { key: "listItem" + index }, listItem); }))); } var import_prop_types$5; var init_account_content_a = __esmMin((() => { import_prop_types$5 = /* @__PURE__ */ __toESM(require_prop_types()); init_connect(); init_page_content_layout(); AccountContentA.propTypes = { actionButton: import_prop_types$5.default.shape({ ref: import_prop_types$5.default.object }).isRequired, skipButton: import_prop_types$5.default.object, noticeState: import_prop_types$5.default.object, pageTexts: import_prop_types$5.default.shape({ firstLine: import_prop_types$5.default.node, listItems: import_prop_types$5.default.arrayOf(import_prop_types$5.default.string) }).isRequired, state: import_prop_types$5.default.shape({ isLibraryConnected: import_prop_types$5.default.bool }).isRequired, connectSuccessCallback: import_prop_types$5.default.func.isRequired, connectFailureCallback: import_prop_types$5.default.func.isRequired }; })); //#endregion //#region app/modules/onboarding/assets/js/components/account-content-b.js function AccountContentB(_ref) { var state = _ref.state; var connectSuccessCallback = _ref.connectSuccessCallback; var connectFailureCallback = _ref.connectFailureCallback; var updateState = _ref.updateState; var getStateObjectToUpdate = _ref.getStateObjectToUpdate; var navigate = _ref.navigate; var nextStep = _ref.nextStep; var pageId = _ref.pageId; var handleConnectClick = function handleConnectClick() { OnboardingEventTracking.trackStepAction(1, "create"); OnboardingEventTracking.sendEventOrStore("CREATE_MY_ACCOUNT", { currentStep: 1, createAccountClicked: "main_cta" }); }; var handleGuestClick = function handleGuestClick() { OnboardingEventTracking.trackStepAction(1, "skip"); OnboardingEventTracking.sendEventOrStore("SKIP", { currentStep: 1 }); OnboardingEventTracking.sendStepEndState(1); OnboardingEventTracking.sendEventOrStore("AB_101_START_AS_FREE_USER", { currentStep: 1 }); updateState(getStateObjectToUpdate(state, "steps", pageId, "skipped")); navigate("onboarding/" + nextStep); }; var actionButtonRef = (0, react.useRef)(); return /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding101-variant-b-content" }, /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding101-variant-b-icon" }, /*#__PURE__*/ react.default.createElement("svg", { width: "104", height: "104", viewBox: "0 0 104 104", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /*#__PURE__*/ react.default.createElement("rect", { width: "104", height: "104", rx: "24", fill: "#FE7AE3" }), /*#__PURE__*/ react.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M22.242 71.0334C18.3768 65.2487 16.3137 58.4477 16.3137 51.4904C16.3137 42.1611 20.0198 33.2138 26.6167 26.6169C33.2135 20.0201 42.1609 16.314 51.4902 16.314C58.4474 16.314 65.2484 18.377 71.0332 22.2423C76.8179 26.1075 81.3266 31.6013 83.989 38.029C86.6514 44.4566 87.348 51.5294 85.9907 58.353C84.6334 65.1765 81.2833 71.4444 76.3637 76.3639C71.4442 81.2835 65.1763 84.6337 58.3528 85.991C51.5292 87.3483 44.4564 86.6517 38.0287 83.9892C31.6011 81.3268 26.1073 76.8182 22.242 71.0334ZM42.6974 36.8324H36.8356V66.147H42.6974V36.8324ZM66.1449 36.8324H48.5594V42.6942H66.1449V36.8324ZM66.1449 48.5562H48.5594V54.418H66.1449V48.5562ZM66.1449 60.2852H48.5594V66.147H66.1449V60.2852Z", fill: "#91013B" }))), /*#__PURE__*/ react.default.createElement("p", { className: "e-onboarding101-variant-b-description e-onboarding101-variant-b-welcome" }, (0, _wordpress_i18n.__)("Welcome!", "elementor")), /*#__PURE__*/ react.default.createElement("h1", { className: "e-onboarding101-variant-b-title" }, (0, _wordpress_i18n.__)("Connect your account to enable your full creative workspace", "elementor")), /*#__PURE__*/ react.default.createElement("p", { className: "e-onboarding101-variant-b-description" }, (0, _wordpress_i18n.__)("Access beautiful templates, ready-made blocks, and a single dashboard to manage all your sites in one place", "elementor")), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding101-variant-b-buttons" }, /*#__PURE__*/ react.default.createElement("a", { ref: actionButtonRef, href: elementorAppConfig.onboarding.urls.signUp + elementorAppConfig.onboarding.utms.connectCta, className: "e-onboarding101-variant-b-button e-onboarding101-variant-b-button--primary", onClick: handleConnectClick, role: "button" }, (0, _wordpress_i18n.__)("Connect your account", "elementor")), /*#__PURE__*/ react.default.createElement("button", { className: "e-onboarding101-variant-b-button e-onboarding101-variant-b-button--secondary", onClick: handleGuestClick }, (0, _wordpress_i18n.__)("Continue as a guest", "elementor"))), actionButtonRef && !state.isLibraryConnected && /*#__PURE__*/ react.default.createElement(Connect, { buttonRef: actionButtonRef, successCallback: function successCallback(event, data) { return connectSuccessCallback(event, data); }, errorCallback: connectFailureCallback })); } var import_prop_types$4; var init_account_content_b = __esmMin((() => { import_prop_types$4 = /* @__PURE__ */ __toESM(require_prop_types()); init_connect(); init_onboarding_event_tracking(); AccountContentB.propTypes = { state: import_prop_types$4.default.shape({ isLibraryConnected: import_prop_types$4.default.bool }).isRequired, connectSuccessCallback: import_prop_types$4.default.func.isRequired, connectFailureCallback: import_prop_types$4.default.func.isRequired, updateState: import_prop_types$4.default.func.isRequired, getStateObjectToUpdate: import_prop_types$4.default.func.isRequired, navigate: import_prop_types$4.default.func.isRequired, nextStep: import_prop_types$4.default.string.isRequired, pageId: import_prop_types$4.default.string.isRequired }; })); //#endregion //#region app/modules/onboarding/assets/js/pages/account.js function Account() { var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var getStateObjectToUpdate = _useContext.getStateObjectToUpdate; var _useState2 = _slicedToArray((0, react.useState)(null), 2); var noticeState = _useState2[0]; var setNoticeState = _useState2[1]; var nextStep = getNextStep(); var navigate = useNavigate(); var pageId = "account"; var actionButtonRef = (0, react.useRef)(); var alreadyHaveAccountLinkRef = (0, react.useRef)(); (0, react.useEffect)(function() { if (!state.isLibraryConnected) { var _elementorCommon$even; safeDispatchEvent("view_account_setup", { location: "plugin_onboarding", trigger: ((_elementorCommon$even = elementorCommon.eventsManager) === null || _elementorCommon$even === void 0 || (_elementorCommon$even = _elementorCommon$even.config) === null || _elementorCommon$even === void 0 || (_elementorCommon$even = _elementorCommon$even.triggers) === null || _elementorCommon$even === void 0 ? void 0 : _elementorCommon$even.pageLoaded) || "page_loaded", step_number: 1, step_name: "account_setup", is_library_connected: (state === null || state === void 0 ? void 0 : state.isLibraryConnected) || false }); } OnboardingEventTracking.setupAllUpgradeButtons(state.currentStep); OnboardingEventTracking.onStepLoad(1); }, []); var skipButton; if ("completed" !== state.steps[pageId]) skipButton = { text: (0, _wordpress_i18n.__)("Skip setup", "elementor"), action: function action() { var _elementorCommon$even2; OnboardingEventTracking.trackStepAction(1, "skip"); OnboardingEventTracking.sendEventOrStore("SKIP", { currentStep: 1 }); OnboardingEventTracking.sendStepEndState(1); safeDispatchEvent("skip_setup", { location: "plugin_onboarding", trigger: ((_elementorCommon$even2 = elementorCommon.eventsManager) === null || _elementorCommon$even2 === void 0 || (_elementorCommon$even2 = _elementorCommon$even2.config) === null || _elementorCommon$even2 === void 0 || (_elementorCommon$even2 = _elementorCommon$even2.triggers) === null || _elementorCommon$even2 === void 0 ? void 0 : _elementorCommon$even2.click) || "click", step_number: 1, step_name: "account_setup" }); updateState(getStateObjectToUpdate(state, "steps", pageId, "skipped")); navigate("onboarding/" + nextStep); } }; var pageTexts = {}; if (state.isLibraryConnected) pageTexts = { firstLine: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("To get the most out of Elementor, we'll help you take your", "elementor"), " ", /*#__PURE__*/ react.default.createElement("br", null), " ", (0, _wordpress_i18n.__)("first steps:", "elementor")), listItems: elementorAppConfig.onboarding.experiment ? [ (0, _wordpress_i18n.__)("Set your site's theme", "elementor"), (0, _wordpress_i18n.__)("Choose additional features", "elementor"), (0, _wordpress_i18n.__)("Choose how to start creating", "elementor") ] : [ (0, _wordpress_i18n.__)("Set your site's theme", "elementor"), (0, _wordpress_i18n.__)("Give your site a name & logo", "elementor"), (0, _wordpress_i18n.__)("Choose how to start creating", "elementor") ] }; else pageTexts = elementorAppConfig.onboarding.experiment ? { firstLine: /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, (0, _wordpress_i18n.__)("To get the most of Elementor, we'll connect your account.", "elementor"), " ", /*#__PURE__*/ react.default.createElement("br", null), " ", (0, _wordpress_i18n.__)("Then you can:", "elementor")), listItems: [ (0, _wordpress_i18n.__)("Access dozens of professionally designed templates", "elementor"), (0, _wordpress_i18n.__)("Manage all your sites from the My Elementor dashboard", "elementor"), (0, _wordpress_i18n.__)("Unlock tools that streamline your workflow and site setup", "elementor") ] } : { firstLine: (0, _wordpress_i18n.__)("To get the most out of Elementor, we'll connect your account.", "elementor") + " " + (0, _wordpress_i18n.__)("Then you can:", "elementor"), listItems: [ (0, _wordpress_i18n.__)("Choose from countless professional templates", "elementor"), (0, _wordpress_i18n.__)("Manage your site with our handy dashboard", "elementor"), (0, _wordpress_i18n.__)("Take part in the community forum, share & grow together", "elementor") ] }; var actionButton = { role: "button" }; if (state.isLibraryConnected) { actionButton.text = (0, _wordpress_i18n.__)("Let's do it", "elementor"); actionButton.onClick = function() { elementorCommon.events.dispatchEvent({ event: "next", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); updateState(getStateObjectToUpdate(state, "steps", pageId, "completed")); navigate("onboarding/" + nextStep); }; } else { actionButton.text = (0, _wordpress_i18n.__)("Start setup", "elementor"); actionButton.href = elementorAppConfig.onboarding.urls.signUp + elementorAppConfig.onboarding.utms.connectCta; actionButton.ref = actionButtonRef; actionButton.onClick = function() { var _elementorCommon$even3; OnboardingEventTracking.trackStepAction(1, "create"); OnboardingEventTracking.sendEventOrStore("CREATE_MY_ACCOUNT", { currentStep: 1, createAccountClicked: "main_cta" }); safeDispatchEvent("new_account_connect", { location: "plugin_onboarding", trigger: ((_elementorCommon$even3 = elementorCommon.eventsManager) === null || _elementorCommon$even3 === void 0 || (_elementorCommon$even3 = _elementorCommon$even3.config) === null || _elementorCommon$even3 === void 0 || (_elementorCommon$even3 = _elementorCommon$even3.triggers) === null || _elementorCommon$even3 === void 0 ? void 0 : _elementorCommon$even3.click) || "click", step_number: 1, step_name: "account_setup", button_text: "Start setup" }); }; } var connectSuccessCallback = function connectSuccessCallback() { var stateToUpdate = getStateObjectToUpdate(state, "steps", pageId, "completed"); stateToUpdate.isLibraryConnected = true; updateState(stateToUpdate); elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "success", action: "connect account" } }); setNoticeState({ type: "success", icon: "eicon-check-circle-o", message: "Alrighty - your account is connected." }); OnboardingEventTracking.sendStepEndState(1); navigate("onboarding/" + nextStep); }; function getNextStep() { if (!state.isHelloThemeActivated) return "hello"; return elementorAppConfig.onboarding.experiment ? "chooseFeatures" : "siteName"; } var connectFailureCallback = function connectFailureCallback() { elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "failure", action: "connect account" } }); OnboardingEventTracking.sendConnectionFailureEvents(); setNoticeState({ type: "error", icon: "eicon-warning", message: (0, _wordpress_i18n.__)("Oops, the connection failed. Try again.", "elementor") }); navigate("onboarding/" + nextStep); }; var experiment101Variant = localStorage.getItem(ONBOARDING_STORAGE_KEYS.EXPERIMENT101_VARIANT); var ContentComponent = "B" === experiment101Variant ? AccountContentB : AccountContentA; return /*#__PURE__*/ react.default.createElement(Layout, { pageId, nextStep, className: "B" === experiment101Variant ? "e-onboarding101-variant-b" : "" }, /*#__PURE__*/ react.default.createElement(ContentComponent, { actionButton, skipButton, noticeState, pageTexts, state, connectSuccessCallback, connectFailureCallback, updateState, getStateObjectToUpdate, navigate, nextStep, pageId }), !state.isLibraryConnected && "B" !== experiment101Variant && /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__footnote" }, /*#__PURE__*/ react.default.createElement("p", null, (0, _wordpress_i18n.__)("Already have an account?", "elementor") + " ", /*#__PURE__*/ react.default.createElement("a", { ref: alreadyHaveAccountLinkRef, href: elementorAppConfig.onboarding.urls.connect + elementorAppConfig.onboarding.utms.connectCtaLink, onClick: function onClick() { var _elementorCommon$even4; OnboardingEventTracking.trackStepAction(1, "connect"); OnboardingEventTracking.sendEventOrStore("STEP1_CLICKED_CONNECT", { currentStep: state.currentStep }); safeDispatchEvent("existing_account_connect", { location: "plugin_onboarding", trigger: ((_elementorCommon$even4 = elementorCommon.eventsManager) === null || _elementorCommon$even4 === void 0 || (_elementorCommon$even4 = _elementorCommon$even4.config) === null || _elementorCommon$even4 === void 0 || (_elementorCommon$even4 = _elementorCommon$even4.triggers) === null || _elementorCommon$even4 === void 0 ? void 0 : _elementorCommon$even4.click) || "click", step_number: 1, step_name: "account_setup", button_text: "Click here to connect" }); } }, (0, _wordpress_i18n.__)("Click here to connect", "elementor"))), /*#__PURE__*/ react.default.createElement(Connect, { buttonRef: alreadyHaveAccountLinkRef, successCallback: connectSuccessCallback, errorCallback: connectFailureCallback }))); } var init_account = __esmMin((() => { init_slicedToArray(); init_es$1(); init_context(); init_connect(); init_layout(); init_account_content_a(); init_account_content_b(); init_utils(); init_onboarding_event_tracking(); })); //#endregion //#region app/modules/onboarding/assets/js/components/theme-selection-content-a.js function ThemeSelectionContentA(_ref) { var actionButton = _ref.actionButton; var skipButton = _ref.skipButton; var noticeState = _ref.noticeState; return /*#__PURE__*/ react.default.createElement(PageContentLayout, { image: elementorCommon.config.urls.assets + "images/app/onboarding/Illustration_Hello.svg", title: (0, _wordpress_i18n.__)("Every site starts with a theme.", "elementor"), actionButton, skipButton, noticeState }, /*#__PURE__*/ react.default.createElement("p", null, (0, _wordpress_i18n.__)("Hello is Elementor's official blank canvas theme optimized to build your website exactly the way you want.", "elementor")), !elementorAppConfig.onboarding.experiment && /*#__PURE__*/ react.default.createElement("p", null, (0, _wordpress_i18n.__)("Here's why:", "elementor")), /*#__PURE__*/ react.default.createElement("ul", { className: "e-onboarding__feature-list" }, /*#__PURE__*/ react.default.createElement("li", null, (0, _wordpress_i18n.__)("Light-weight and fast loading", "elementor")), /*#__PURE__*/ react.default.createElement("li", null, (0, _wordpress_i18n.__)("Great for SEO", "elementor")), /*#__PURE__*/ react.default.createElement("li", null, (0, _wordpress_i18n.__)("Already being used by 1M+ web creators", "elementor")))); } var import_prop_types$3; var init_theme_selection_content_a = __esmMin((() => { import_prop_types$3 = /* @__PURE__ */ __toESM(require_prop_types()); init_page_content_layout(); ThemeSelectionContentA.propTypes = { actionButton: import_prop_types$3.default.object.isRequired, skipButton: import_prop_types$3.default.object.isRequired, noticeState: import_prop_types$3.default.object }; })); //#endregion //#region app/modules/onboarding/assets/js/pages/hello-theme.js function HelloTheme() { var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var getStateObjectToUpdate = _useContext.getStateObjectToUpdate; var _useAjax = useAjax(); var activateHelloThemeAjaxState = _useAjax.ajaxState; var setActivateHelloThemeAjaxState = _useAjax.setAjax; var _useState2 = _slicedToArray((0, react.useState)(false), 2); var helloInstalledInOnboarding = _useState2[0]; var setHelloInstalledInOnboarding = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isInstalling = _useState4[0]; var setIsInstalling = _useState4[1]; var noticeStateSuccess = (0, react.useMemo)(function() { return { type: "success", icon: "eicon-check-circle-o", message: (0, _wordpress_i18n.__)("Your site's got Hello theme. High-five!", "elementor") }; }, []); var _useState6 = _slicedToArray((0, react.useState)(state.isHelloThemeActivated ? noticeStateSuccess : null), 2); var noticeState = _useState6[0]; var setNoticeState = _useState6[1]; var _useState8 = _slicedToArray((0, react.useState)([]), 2); var activeTimeouts = _useState8[0]; var setActiveTimeouts = _useState8[1]; var navigate = useNavigate(); var pageId = "hello"; var nextStep = elementorAppConfig.onboarding.experiment ? "chooseFeatures" : "siteName"; var goToNextScreen = (0, react.useCallback)(function() { return navigate("onboarding/" + nextStep); }, [navigate, nextStep]); var _useState0 = _slicedToArray((0, react.useState)(getContinueButtonText(state.isHelloThemeActivated)), 2); var actionButtonText = _useState0[0]; var setActionButtonText = _useState0[1]; /** * Setup * * If Hello Theme is already activated when onboarding starts, This screen is unneeded and is marked as 'completed' * and skipped. */ (0, react.useEffect)(function() { if (!helloInstalledInOnboarding && state.isHelloThemeActivated) { updateState(getStateObjectToUpdate(state, "steps", pageId, "completed")); goToNextScreen(); } OnboardingEventTracking.setupAllUpgradeButtons(state.currentStep); OnboardingEventTracking.onStepLoad(2); }, [ getStateObjectToUpdate, goToNextScreen, helloInstalledInOnboarding, pageId, state, updateState ]); (0, react.useEffect)(function() { setActionButtonText(getContinueButtonText(state.isHelloThemeActivated)); }, [state.isHelloThemeActivated]); var resetScreenContent = function resetScreenContent() { activeTimeouts.forEach(function(timeoutID) { return clearTimeout(timeoutID); }); setActiveTimeouts([]); setIsInstalling(false); setActionButtonText(getContinueButtonText(state.isHelloThemeActivated)); }; /** * Callbacks */ var onHelloThemeActivationSuccess = (0, react.useCallback)(function() { setIsInstalling(false); elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "success", action: "hello theme activation" } }); setNoticeState(noticeStateSuccess); setActionButtonText((0, _wordpress_i18n.__)("Next", "elementor")); var stateToUpdate = getStateObjectToUpdate(state, "steps", pageId, "completed"); stateToUpdate.isHelloThemeActivated = true; updateState(stateToUpdate); setHelloInstalledInOnboarding(true); OnboardingEventTracking.sendThemeInstalled("hello"); OnboardingEventTracking.sendStepEndState(2); goToNextScreen(); }, [ getStateObjectToUpdate, goToNextScreen, noticeStateSuccess, state, updateState ]); var onErrorInstallHelloTheme = function onErrorInstallHelloTheme() { elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "failure", action: "hello theme install" } }); setNoticeState({ type: "error", icon: "eicon-warning", message: (0, _wordpress_i18n.__)("There was a problem installing Hello Theme.", "elementor") }); resetScreenContent(); }; var activateHelloTheme = function activateHelloTheme() { setIsInstalling(true); updateState({ isHelloThemeInstalled: true }); setActivateHelloThemeAjaxState({ data: { action: "elementor_activate_hello_theme", theme_slug: HELLO_THEME_SLUG } }); }; var installHelloTheme = function installHelloTheme() { if (!isInstalling) setIsInstalling(true); wp.updates.ajax("install-theme", { slug: HELLO_THEME_SLUG, success: function success() { return activateHelloTheme(); }, error: function error() { return onErrorInstallHelloTheme(); } }); }; var sendNextButtonEvent = function sendNextButtonEvent() { elementorCommon.events.dispatchEvent({ event: "next", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); }; /** * Action Button */ var actionButton = { text: actionButtonText, role: "button" }; if (isInstalling) actionButton.className = "e-onboarding__button--processing"; if (state.isHelloThemeActivated) actionButton.onClick = function() { sendNextButtonEvent(); OnboardingEventTracking.sendStepEndState(2); goToNextScreen(); }; else actionButton.onClick = function() { sendNextButtonEvent(); if (state.isHelloThemeInstalled && !state.isHelloThemeActivated) activateHelloTheme(); else if (!state.isHelloThemeInstalled) installHelloTheme(); else { OnboardingEventTracking.sendStepEndState(2); goToNextScreen(); } }; /** * Skip Button */ var skipButton = {}; if (isInstalling) skipButton.className = "e-onboarding__button-skip--disabled"; if ("completed" !== state.steps[pageId]) skipButton.text = (0, _wordpress_i18n.__)("Skip", "elementor"); /** * Set timeouts for updating the 'Next' button text if the Hello Theme installation is taking too long. */ (0, react.useEffect)(function() { if (isInstalling) setActionButtonText(/*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-loading eicon-animation-spin", "aria-hidden": "true" }))); var actionTextTimeouts = []; var timeout4 = setTimeout(function() { if (!isInstalling) return; setActionButtonText(/*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-loading eicon-animation-spin", "aria-hidden": "true" }), /*#__PURE__*/ react.default.createElement("span", { className: "e-onboarding__action-button-text" }, (0, _wordpress_i18n.__)("Hold on, this can take a minute...", "elementor")))); }, 4e3); actionTextTimeouts.push(timeout4); var timeout30 = setTimeout(function() { if (!isInstalling) return; setActionButtonText(/*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-loading eicon-animation-spin", "aria-hidden": "true" }), /*#__PURE__*/ react.default.createElement("span", { className: "e-onboarding__action-button-text" }, (0, _wordpress_i18n.__)("Okay, now we're really close...", "elementor")))); }, 3e4); actionTextTimeouts.push(timeout30); setActiveTimeouts(actionTextTimeouts); }, [isInstalling]); (0, react.useEffect)(function() { if ("initial" !== activateHelloThemeAjaxState.status) { var _activateHelloThemeAj; if ("success" === activateHelloThemeAjaxState.status && (_activateHelloThemeAj = activateHelloThemeAjaxState.response) !== null && _activateHelloThemeAj !== void 0 && _activateHelloThemeAj.helloThemeActivated) onHelloThemeActivationSuccess(); else if ("error" === activateHelloThemeAjaxState.status) { elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "failure", action: "hello theme activation" } }); setNoticeState({ type: "error", icon: "eicon-warning", message: (0, _wordpress_i18n.__)("There was a problem activating Hello Theme.", "elementor") }); resetScreenContent(); } } }, [activateHelloThemeAjaxState.status]); return /*#__PURE__*/ react.default.createElement(Layout, { pageId, nextStep }, /*#__PURE__*/ react.default.createElement(ThemeSelectionContentA, { actionButton, skipButton, noticeState }), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__footnote" }, (0, _wordpress_i18n.__)("You can switch your theme later on", "elementor"))); } var HELLO_THEME_SLUG, getContinueButtonText; var init_hello_theme = __esmMin((() => { init_slicedToArray(); init_context(); init_es$1(); init_use_ajax(); init_layout(); init_theme_selection_content_a(); init_onboarding_event_tracking(); HELLO_THEME_SLUG = "hello-elementor"; getContinueButtonText = function getContinueButtonText(isHelloThemeActivated) { if (isHelloThemeActivated) return (0, _wordpress_i18n.__)("Next", "elementor"); return (0, _wordpress_i18n.__)("Continue with Hello Theme", "elementor"); }; })); //#endregion //#region app/modules/onboarding/assets/js/pages/site-name.js function SiteName() { var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var getStateObjectToUpdate = _useContext.getStateObjectToUpdate; var _useAjax = useAjax(); var ajaxState = _useAjax.ajaxState; var setAjax = _useAjax.setAjax; var _useState2 = _slicedToArray((0, react.useState)(null), 2); var noticeState = _useState2[0]; var setNoticeState = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(state.siteName), 2); var siteNameInputValue = _useState4[0]; var setSiteNameInputValue = _useState4[1]; var pageId = "siteName"; var nextStep = "siteLogo"; var navigate = useNavigate(); var nameInputRef = (0, react.useRef)(); var actionButton = { text: (0, _wordpress_i18n.__)("Next", "elementor"), onClick: function onClick() { elementorCommon.events.dispatchEvent({ event: "next", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); if (nameInputRef.current.value !== state.siteName && "" !== nameInputRef.current.value) setAjax({ data: { action: "elementor_update_site_name", data: JSON.stringify({ siteName: nameInputRef.current.value }) } }); else if (nameInputRef.current.value === state.siteName) { updateState(getStateObjectToUpdate(state, "steps", pageId, "completed")); navigate("onboarding/" + nextStep); } else { updateState(getStateObjectToUpdate(state, "steps", pageId, "skipped")); navigate("onboarding/" + nextStep); } } }; var skipButton; if ("completed" !== state.steps[pageId]) skipButton = { text: (0, _wordpress_i18n.__)("Skip", "elementor") }; if (!siteNameInputValue) actionButton.className = "e-onboarding__button--disabled"; (0, react.useEffect)(function() { if ("initial" !== ajaxState.status) { var _ajaxState$response; if ("success" === ajaxState.status && (_ajaxState$response = ajaxState.response) !== null && _ajaxState$response !== void 0 && _ajaxState$response.siteNameUpdated) { var stateToUpdate = getStateObjectToUpdate(state, "steps", pageId, "completed"); stateToUpdate.siteName = nameInputRef.current.value; updateState(stateToUpdate); navigate("onboarding/" + nextStep); } else if ("error" === ajaxState.status) { elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "failure", action: "site name update" } }); setNoticeState({ type: "error", icon: "eicon-warning", message: (0, _wordpress_i18n.__)("Sorry, the name wasn't saved. Try again, or skip for now.", "elementor") }); } } }, [ajaxState.status]); return /*#__PURE__*/ react.default.createElement(Layout, { pageId, nextStep }, /*#__PURE__*/ react.default.createElement(PageContentLayout, { image: elementorCommon.config.urls.assets + "images/app/onboarding/Illustration_Setup.svg", title: (0, _wordpress_i18n.__)("Now, let's give your site a name.", "elementor"), actionButton, skipButton, noticeState }, /*#__PURE__*/ react.default.createElement("p", null, (0, _wordpress_i18n.__)("This is what your site is called on the WP dashboard, and can be changed later from the general settings - it's not your website's URL.", "elementor")), /*#__PURE__*/ react.default.createElement("input", { className: "e-onboarding__text-input e-onboarding__site-name-input", type: "text", placeholder: "e.g. Eric's Space Shuttles", defaultValue: state.siteName || "", ref: nameInputRef, onChange: function onChange(event) { return setSiteNameInputValue(event.target.value); } }))); } var init_site_name = __esmMin((() => { init_slicedToArray(); init_context(); init_es$1(); init_use_ajax(); init_layout(); init_page_content_layout(); })); //#endregion //#region app/modules/onboarding/assets/js/pages/site-logo.js function SiteLogo() { var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var getStateObjectToUpdate = _useContext.getStateObjectToUpdate; var _useState2 = _slicedToArray((0, react.useState)(state.siteLogo.id ? state.siteLogo : null), 2); var file = _useState2[0]; var setFile = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isUploading = _useState4[0]; var setIsUploading = _useState4[1]; var _useState6 = _slicedToArray((0, react.useState)(false), 2); var showUnfilteredFilesDialog = _useState6[0]; var setShowUnfilteredFilesDialog = _useState6[1]; var _useState8 = _slicedToArray((0, react.useState)(), 2); var fileSource = _useState8[0]; var setFileSource = _useState8[1]; var _useState0 = _slicedToArray((0, react.useState)(null), 2); var noticeState = _useState0[0]; var setNoticeState = _useState0[1]; var _useAjax = useAjax(); var updateLogoAjaxState = _useAjax.ajaxState; var setUpdateLogoAjax = _useAjax.setAjax; var _useAjax2 = useAjax(); var uploadImageAjaxState = _useAjax2.ajaxState; var setUploadImageAjax = _useAjax2.setAjax; var pageId = "siteLogo"; var nextStep = "goodToGo"; var navigate = useNavigate(); var actionButton = { role: "button", onClick: function onClick() { elementorCommon.events.dispatchEvent({ event: "next", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); if (file.id) if (file.id !== state.siteLogo.id) updateSiteLogo(); else { updateState(getStateObjectToUpdate(state, "steps", pageId, "completed")); navigate("onboarding/" + nextStep); } } }; var skipButton; if ("completed" !== state.steps[pageId]) skipButton = { text: (0, _wordpress_i18n.__)("Skip", "elementor") }; if (isUploading) actionButton.text = /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-loading eicon-animation-spin", "aria-hidden": "true" })); else actionButton.text = (0, _wordpress_i18n.__)("Next", "elementor"); if (!file) actionButton.className = "e-onboarding__button--disabled"; var updateSiteLogo = (0, react.useCallback)(function() { setIsUploading(true); setUpdateLogoAjax({ data: { action: "elementor_update_site_logo", data: JSON.stringify({ attachmentId: file.id }) } }); }, [file]); var uploadSiteLogo = function uploadSiteLogo(fileToUpload) { setIsUploading(true); setUploadImageAjax({ data: { action: "elementor_upload_site_logo", fileToUpload } }); }; var dismissUnfilteredFilesCallback = function dismissUnfilteredFilesCallback() { setIsUploading(false); setFile(null); setShowUnfilteredFilesDialog(false); }; var _onFileSelect = function onFileSelect(selectedFile) { setFileSource("drop"); if ("image/svg+xml" === selectedFile.type && !elementorAppConfig.onboarding.isUnfilteredFilesEnabled) { setFile(selectedFile); setIsUploading(true); setShowUnfilteredFilesDialog(true); } else { setFile(selectedFile); setNoticeState(null); uploadSiteLogo(selectedFile); } }; var onImageRemoveClick = function onImageRemoveClick() { elementorCommon.events.dispatchEvent({ event: "remove selected logo", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement } }); setFile(null); }; /** * Ajax Callbacks */ (0, react.useEffect)(function() { if ("initial" !== uploadImageAjaxState.status) { var _uploadImageAjaxState; if ("success" === uploadImageAjaxState.status && (_uploadImageAjaxState = uploadImageAjaxState.response) !== null && _uploadImageAjaxState !== void 0 && (_uploadImageAjaxState = _uploadImageAjaxState.imageAttachment) !== null && _uploadImageAjaxState !== void 0 && _uploadImageAjaxState.id) { elementorCommon.events.dispatchEvent({ event: "logo image uploaded", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, source: fileSource } }); setIsUploading(false); setFile(uploadImageAjaxState.response.imageAttachment); if (noticeState) setNoticeState(null); } else if ("error" === uploadImageAjaxState.status) { setIsUploading(false); setFile(null); elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, action_state: "failure", action: "logo image upload" } }); setNoticeState({ type: "error", icon: "eicon-warning", message: "That didn't work. Try uploading your file again." }); } } }, [uploadImageAjaxState.status]); (0, react.useEffect)(function() { if ("initial" !== updateLogoAjaxState.status) { var _updateLogoAjaxState$; if ("success" === updateLogoAjaxState.status && (_updateLogoAjaxState$ = updateLogoAjaxState.response) !== null && _updateLogoAjaxState$ !== void 0 && _updateLogoAjaxState$.siteLogoUpdated) { elementorCommon.events.dispatchEvent({ event: "logo image updated", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, source: fileSource } }); setIsUploading(false); if (noticeState) setNoticeState(null); var stateToUpdate = getStateObjectToUpdate(state, "steps", pageId, "completed"); stateToUpdate.siteLogo = { id: file.id, url: file.url }; updateState(stateToUpdate); navigate("onboarding/" + nextStep); } else if ("error" === updateLogoAjaxState.status) { setIsUploading(false); elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "failure", action: "update site logo" } }); setNoticeState({ type: "error", icon: "eicon-warning", message: "That didn't work. Try uploading your file again." }); } } }, [updateLogoAjaxState.status]); return /*#__PURE__*/ react.default.createElement(Layout, { pageId, nextStep }, /*#__PURE__*/ react.default.createElement(PageContentLayout, { image: elementorCommon.config.urls.assets + "images/app/onboarding/Illustration_Setup.svg", title: (0, _wordpress_i18n.__)("Have a logo? Add it here.", "elementor"), actionButton, skipButton, noticeState }, /*#__PURE__*/ react.default.createElement("span", null, (0, _wordpress_i18n.__)("Otherwise, you can skip this and add one later.", "elementor")), file && !showUnfilteredFilesDialog ? /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__logo-container" + (isUploading ? " e-onboarding__is-uploading" : "") }, /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__logo-remove", onClick: function onClick() { return onImageRemoveClick(); } }, /*#__PURE__*/ react.default.createElement("i", { className: "eicon-trash-o" })), /*#__PURE__*/ react.default.createElement("img", { src: file.url, alt: (0, _wordpress_i18n.__)("Potential Site Logo", "elementor") })) : /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement(DropZone$1, { className: "e-onboarding__drop-zone", heading: (0, _wordpress_i18n.__)("Drop image here", "elementor"), secondaryText: (0, _wordpress_i18n.__)("or", "elementor"), buttonText: (0, _wordpress_i18n.__)("Open Media Library", "elementor"), buttonVariant: "outlined", buttonColor: "cta", icon: "", type: "wp-media", filetypes: [ "jpg", "jpeg", "png", "svg" ], onFileSelect: function onFileSelect(selectedFile) { return _onFileSelect(selectedFile); }, onWpMediaSelect: function onWpMediaSelect(frame) { var attachment = frame.state().get("selection").first().toJSON(); setFileSource("browse"); setFile(attachment); setNoticeState(null); }, onButtonClick: function onButtonClick() { elementorCommon.events.dispatchEvent({ event: "browse file click", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); }, onError: function onError(error) { if ("file_not_allowed" === error.id) { elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "failure", action: "logo upload format" } }); setNoticeState({ type: "error", icon: "eicon-warning", message: (0, _wordpress_i18n.__)("This file type is not supported. Try a different type of file", "elementor") }); } } })), /*#__PURE__*/ react.default.createElement(UnfilteredFilesDialog, { show: showUnfilteredFilesDialog, setShow: setShowUnfilteredFilesDialog, confirmModalText: (0, _wordpress_i18n.__)("This allows Elementor to scan your SVGs for malicious content. If you do not wish to allow this, use a different image format.", "elementor"), errorModalText: (0, _wordpress_i18n.__)("There was a problem with enabling SVG uploads. Try again, or use another image format.", "elementor"), onReady: function onReady() { setShowUnfilteredFilesDialog(false); elementorAppConfig.onboarding.isUnfilteredFilesEnabled = true; uploadSiteLogo(file); }, onDismiss: function onDismiss() { return dismissUnfilteredFilesCallback(); }, onCancel: function onCancel() { return dismissUnfilteredFilesCallback(); } }))); } var init_site_logo = __esmMin((() => { init_slicedToArray(); init_context(); init_es$1(); init_use_ajax(); init_drop_zone(); init_unfiltered_files_dialog(); init_layout(); init_page_content_layout(); })); //#endregion //#region app/modules/onboarding/assets/js/components/card.js function Card(_ref) { var image = _ref.image; var imageAlt = _ref.imageAlt; var title = _ref.title; var text = _ref.text; var link = _ref.link; var clickAction = _ref.clickAction; var _ref$target = _ref.target; var target = _ref$target === void 0 ? "_self" : _ref$target; return /*#__PURE__*/ react.default.createElement("a", { target, className: "e-onboarding__card", href: link, onClick: function onClick() { if (clickAction) clickAction(); } }, /*#__PURE__*/ react.default.createElement("img", { className: "e-onboarding__card-image", src: image, alt: imageAlt }), !!title && /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__card-text" }, title), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__card-text-small" }, text)), !title && /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__card-text" }, text)); } var import_prop_types$2; var init_card = __esmMin((() => { import_prop_types$2 = /* @__PURE__ */ __toESM(require_prop_types()); Card.propTypes = { image: import_prop_types$2.default.string.isRequired, imageAlt: import_prop_types$2.default.string.isRequired, title: import_prop_types$2.default.string, text: import_prop_types$2.default.string.isRequired, link: import_prop_types$2.default.string.isRequired, clickAction: import_prop_types$2.default.func, target: import_prop_types$2.default.string }; })); //#endregion //#region app/modules/onboarding/assets/js/components/good-to-go-content-a.js 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; } 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) { _defineProperty$1(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; } function GoodToGoContentA(_ref) { var skipButton = _ref.skipButton; var kitLibraryLink = elementorAppConfig.onboarding.urls.kitLibrary + "&referrer=onboarding"; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, /*#__PURE__*/ react.default.createElement("h1", { className: "e-onboarding__page-content-section-title" }, elementorAppConfig.onboarding.experiment ? (0, _wordpress_i18n.__)("Welcome aboard! What's next?", "elementor") : (0, _wordpress_i18n.__)("That's a wrap! What's next?", "elementor")), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__page-content-section-text" }, (0, _wordpress_i18n.__)("There are two ways to get started with Elementor:", "elementor")), /*#__PURE__*/ react.default.createElement(Grid$14, { container: true, alignItems: "center", justify: "space-between", className: "e-onboarding__cards-grid e-onboarding__page-content" }, /*#__PURE__*/ react.default.createElement(Card, { name: "blank", image: elementorCommon.config.urls.assets + "images/app/onboarding/Blank_Canvas.svg", imageAlt: (0, _wordpress_i18n.__)("Click here to create a new page and open it in Elementor Editor", "elementor"), text: (0, _wordpress_i18n.__)("Edit a blank canvas with the Elementor Editor", "elementor"), link: elementorAppConfig.onboarding.urls.createNewPage, clickAction: function clickAction() { OnboardingEventTracking.handleSiteStarterChoice("blank_canvas"); } }), /*#__PURE__*/ react.default.createElement(Card, { name: "template", image: elementorCommon.config.urls.assets + "images/app/onboarding/Library.svg", imageAlt: (0, _wordpress_i18n.__)("Click here to go to Elementor's Website Templates", "elementor"), text: (0, _wordpress_i18n.__)("Choose a professionally-designed template or import your own", "elementor"), link: kitLibraryLink, clickAction: function clickAction() { OnboardingEventTracking.handleSiteStarterChoice("kit_library"); location.href = kitLibraryLink; location.reload(); } })), /*#__PURE__*/ react.default.createElement(FooterButtons, { skipButton: _objectSpread(_objectSpread({}, skipButton), {}, { target: "_self" }), className: "e-onboarding__good-to-go-footer" })); } var import_prop_types$1; var init_good_to_go_content_a = __esmMin((() => { init_defineProperty$1(); import_prop_types$1 = /* @__PURE__ */ __toESM(require_prop_types()); init_grid(); init_card(); init_footer_buttons(); init_onboarding_event_tracking(); GoodToGoContentA.propTypes = { skipButton: import_prop_types$1.default.object.isRequired }; })); //#endregion //#region app/modules/onboarding/assets/js/pages/good-to-go.js function GoodToGo() { var pageId = "goodToGo"; (0, react.useEffect)(function() { OnboardingEventTracking.checkAndSendReturnToStep4(); OnboardingEventTracking.onStepLoad(4); }, []); var skipButton = { text: (0, _wordpress_i18n.__)("Skip", "elementor"), href: elementorAppConfig.onboarding.urls.createNewPage }; return /*#__PURE__*/ react.default.createElement(Layout, { pageId }, /*#__PURE__*/ react.default.createElement(GoodToGoContentA, { skipButton })); } var init_good_to_go = __esmMin((() => { init_layout(); init_good_to_go_content_a(); init_onboarding_event_tracking(); })); //#endregion //#region app/modules/onboarding/assets/js/pages/upload-and-install-pro.js function UploadAndInstallPro() { usePageTitle({ title: (0, _wordpress_i18n.__)("Upload and Install Elementor Pro", "elementor") }); var state = (0, react.useContext)(OnboardingContext).state; var _useAjax = useAjax(); var installProZipAjaxState = _useAjax.ajaxState; var setInstallProZipAjaxState = _useAjax.setAjax; var _useState2 = _slicedToArray((0, react.useState)(null), 2); var noticeState = _useState2[0]; var setNoticeState = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(false), 2); var isLoading = _useState4[0]; var setIsLoading = _useState4[1]; var _useState6 = _slicedToArray((0, react.useState)(), 2); var fileSource = _useState6[0]; var setFileSource = _useState6[1]; var uploadProZip = (0, react.useCallback)(function(file) { setIsLoading(true); setInstallProZipAjaxState({ data: { action: "elementor_upload_and_install_pro", fileToUpload: file } }); }, []); var setErrorNotice = function setErrorNotice() { var error = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; var step = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "upload"; var errorMessage = (error === null || error === void 0 ? void 0 : error.message) || "That didn't work. Try uploading your file again."; elementorCommon.events.dispatchEvent({ event: "indication prompt", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, action_state: "failure", action: step + " pro", source: fileSource } }); setNoticeState({ type: "error", icon: "eicon-warning", message: errorMessage }); }; /** * Ajax Callbacks */ (0, react.useEffect)(function() { if ("initial" !== installProZipAjaxState.status) { var _installProZipAjaxSta; setIsLoading(false); if ("success" === installProZipAjaxState.status && (_installProZipAjaxSta = installProZipAjaxState.response) !== null && _installProZipAjaxSta !== void 0 && _installProZipAjaxSta.elementorProInstalled) { elementorCommon.events.dispatchEvent({ event: "pro uploaded", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep, source: fileSource } }); if (opener && opener !== window) { opener.jQuery("body").trigger("elementor/upload-and-install-pro/success"); window.close(); opener.focus(); } } else if ("error" === installProZipAjaxState.status) setErrorNotice("install"); } }, [installProZipAjaxState.status]); var onProUploadHelpLinkClick = function onProUploadHelpLinkClick() { elementorCommon.events.dispatchEvent({ event: "pro plugin upload help", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); }; if (isLoading) return /*#__PURE__*/ react.default.createElement(ElementorLoading, { loadingText: (0, _wordpress_i18n.__)("Uploading", "elementor") }); return /*#__PURE__*/ react.default.createElement("div", { className: "eps-app e-onboarding__upload-pro" }, /*#__PURE__*/ react.default.createElement(Content, null, /*#__PURE__*/ react.default.createElement(DropZone$1, { className: "e-onboarding__upload-pro-drop-zone", onFileSelect: function onFileSelect(file, event, source) { setFileSource(source); uploadProZip(file); }, onError: function onError(error) { return setErrorNotice(error, "upload"); }, filetypes: ["zip"], buttonColor: "cta", buttonVariant: "contained", heading: (0, _wordpress_i18n.__)("Import your Elementor Pro plugin file", "elementor"), text: (0, _wordpress_i18n.__)("Drag & Drop your .zip file here", "elementor"), secondaryText: (0, _wordpress_i18n.__)("or", "elementor"), buttonText: (0, _wordpress_i18n.__)("Browse", "elementor") }), noticeState && /*#__PURE__*/ react.default.createElement(Notice, { noticeState }), /*#__PURE__*/ react.default.createElement("div", { className: "e-onboarding__upload-pro-get-file" }, (0, _wordpress_i18n.__)("Don't know where to get the file from?", "elementor") + " ", /*#__PURE__*/ react.default.createElement("a", { onClick: function onClick() { return onProUploadHelpLinkClick(); }, href: addExperimentTrackingToUrl("https://my.elementor.com/subscriptions/" + elementorAppConfig.onboarding.utms.downloadPro, "get-pro-upload-step"), target: "_blank" }, (0, _wordpress_i18n.__)("Click here", "elementor"))))); } var init_upload_and_install_pro = __esmMin((() => { init_slicedToArray(); init_use_ajax(); init_use_page_title(); init_content(); init_drop_zone(); init_notice(); init_context(); init_elementor_loading(); init_utils(); })); //#endregion //#region app/modules/onboarding/assets/js/components/message.js function Message(_ref) { var tier = _ref.tier; var _translatedString$spl2 = _slicedToArray((0, _wordpress_i18n.__)("Based on the features you chose, we recommend the %s plan, or higher", "elementor").split("%s"), 2); var messageFirstPart = _translatedString$spl2[0]; var messageSecondPart = _translatedString$spl2[1]; return /*#__PURE__*/ react.default.createElement(react.default.Fragment, null, messageFirstPart, /*#__PURE__*/ react.default.createElement("strong", null, tier), messageSecondPart); } var import_prop_types; var init_message = __esmMin((() => { import_prop_types = /* @__PURE__ */ __toESM(require_prop_types()); init_slicedToArray(); Message.propTypes = { tier: import_prop_types.default.string.isRequired }; })); //#endregion //#region app/modules/onboarding/assets/js/utils/use-button-action.js function useButtonAction(pageId, nextPage) { var _useContext = (0, react.useContext)(OnboardingContext); var state = _useContext.state; var updateState = _useContext.updateState; var getStateObjectToUpdate = _useContext.getStateObjectToUpdate; var navigate = useNavigate(); return { state, handleAction: function handleAction(action) { updateState(getStateObjectToUpdate(state, "steps", pageId, action)); navigate("onboarding/" + nextPage); } }; } var init_use_button_action = __esmMin((() => { init_context(); init_es$1(); })); //#endregion //#region app/modules/onboarding/assets/js/pages/choose-features.js function ChooseFeatures() { var _elementorAppConfig$o; var _elementorAppConfig; var isEditorOneActive = (_elementorAppConfig$o = (_elementorAppConfig = elementorAppConfig) === null || _elementorAppConfig === void 0 || (_elementorAppConfig = _elementorAppConfig.onboarding) === null || _elementorAppConfig === void 0 ? void 0 : _elementorAppConfig.isEditorOneActive) !== null && _elementorAppConfig$o !== void 0 ? _elementorAppConfig$o : false; var options = (0, react.useMemo)(function() { return getOptions(isEditorOneActive); }, [isEditorOneActive]); var setAjax = useAjax().setAjax; var tiers = { one: (0, _wordpress_i18n.__)("One", "elementor"), advanced: (0, _wordpress_i18n.__)("Advanced", "elementor"), essential: (0, _wordpress_i18n.__)("Essential", "elementor") }; var _useState2 = _slicedToArray((0, react.useState)({ one: [], essential: [], advanced: [] }), 2); var selectedFeatures = _useState2[0]; var setSelectedFeatures = _useState2[1]; var _useState4 = _slicedToArray((0, react.useState)(tiers.essential), 2); var tierName = _useState4[0]; var setTierName = _useState4[1]; var pageId = "chooseFeatures"; var nextStep = "goodToGo"; var _useButtonAction = useButtonAction(pageId, nextStep); var state = _useButtonAction.state; var handleAction = _useButtonAction.handleAction; var upgradeUrl = elementorAppConfig.onboarding.urls.upgrade; var pageHeading = elementorAppConfig.onboarding.pageHeading; var pageSubheading = elementorAppConfig.onboarding.pageSubheading; var actionButton = { text: (0, _wordpress_i18n.__)("Upgrade Now", "elementor"), href: addExperimentTrackingToUrl(upgradeUrl, "upgrade-step3"), target: "_blank", onClick: function onClick() { OnboardingEventTracking.trackStepAction(3, "upgrade_now", { pro_features_checked: OnboardingEventTracking.extractSelectedFeatureKeys(selectedFeatures) }); elementorCommon.events.dispatchEvent({ event: "next", version: "", details: { placement: elementorAppConfig.onboarding.eventPlacement, step: state.currentStep } }); OnboardingEventTracking.sendUpgradeNowStep3(selectedFeatures, state.currentStep); OnboardingEventTracking.sendStepEndState(3); setAjax({ data: { action: "elementor_save_onboarding_features", data: JSON.stringify({ features: selectedFeatures }) } }); handleAction("completed"); } }; var skipButton; if ("completed" !== state.steps[pageId]) skipButton = { text: (0, _wordpress_i18n.__)("Skip", "elementor"), action: function action() { OnboardingEventTracking.trackStepAction(3, "skipped"); setAjax({ data: { action: "elementor_save_onboarding_features", data: JSON.stringify({ features: selectedFeatures }) } }); handleAction("skipped"); } }; if (!isFeatureSelected(selectedFeatures)) actionButton.className = "e-onboarding__button--disabled"; (0, react.useEffect)(function() { if (isEditorOneActive && selectedFeatures.one && selectedFeatures.one.length > 0) setTierName(tiers.one); else if (selectedFeatures.advanced && selectedFeatures.advanced.length > 0) setTierName(tiers.advanced); else setTierName(tiers.essential); }, [ selectedFeatures, isEditorOneActive, tiers.one, tiers.advanced, tiers.essential ]); (0, react.useEffect)(function() { OnboardingEventTracking.setupAllUpgradeButtons(state.currentStep); OnboardingEventTracking.onStepLoad(3); }, [state.currentStep]); function isFeatureSelected(features) { return !!features.one.length || !!features.advanced.length || !!features.essential.length; } return /*#__PURE__*/ react.default.createElement(Layout, { pageId, nextStep }, /*#__PURE__*/ react.default.createElement(PageContentLayout, { image: elementorCommon.config.urls.assets + "images/app/onboarding/Illustration_Setup.svg", title: pageHeading, actionButton, skipButton }, /*#__PURE__*/ react.default.createElement("p", null, pageSubheading), /*#__PURE__*/ react.default.createElement("form", { className: "e-onboarding__choose-features-section" }, options.map(function(option, index) { var itemId = "".concat(option.plan, "-").concat(index); return /*#__PURE__*/ react.default.createElement("label", { key: itemId, className: "e-onboarding__choose-features-section__label", htmlFor: itemId }, /*#__PURE__*/ react.default.createElement("input", { className: "e-onboarding__choose-features-section__checkbox", type: "checkbox", onChange: function onChange(event) { return setSelectedFeatureList({ checked: event.currentTarget.checked, id: event.target.value, text: option.text, selectedFeatures, setSelectedFeatures }); }, id: itemId, value: itemId }), option.text); })), /*#__PURE__*/ react.default.createElement("p", { className: "e-onboarding__choose-features-section__message" }, isFeatureSelected(selectedFeatures) && /*#__PURE__*/ react.default.createElement(Message, { tier: tierName })))); } var init_choose_features = __esmMin((() => { init_slicedToArray(); init_use_ajax(); init_message(); init_utils(); init_layout(); init_page_content_layout(); init_use_button_action(); init_onboarding_event_tracking(); })); //#endregion //#region app/modules/onboarding/assets/js/app.js var app_exports = /* @__PURE__ */ __exportAll({ default: () => App }); function App() { (0, react.useEffect)(function() { var _elementorAppConfig; OnboardingEventTracking.initiateCoreOnboarding(); var darkThemeClassName = "eps-theme-dark"; var hasDarkMode = document.body.classList.contains(darkThemeClassName); if (hasDarkMode) document.body.classList.remove(darkThemeClassName); if (!((_elementorAppConfig = elementorAppConfig) !== null && _elementorAppConfig !== void 0 && (_elementorAppConfig = _elementorAppConfig.onboarding) !== null && _elementorAppConfig !== void 0 && _elementorAppConfig.onboardingAlreadyRan)) { var formData = new FormData(); formData.append("_nonce", elementorCommon.config.ajax.nonce); formData.append("action", "elementor_update_onboarding_option"); fetch(elementorCommon.config.ajax.url, { method: "POST", body: formData }); } elementorAppConfig.return_url = elementorAppConfig.admin_url; return function() { if (hasDarkMode) document.body.classList.add(darkThemeClassName); }; }, []); return /*#__PURE__*/ react.default.createElement(ContextProvider, null, /*#__PURE__*/ react.default.createElement(LocationProvider, { history: _elementor_router.default.appHistory }, /*#__PURE__*/ react.default.createElement(Router, null, /*#__PURE__*/ react.default.createElement(Account, { default: true }), /*#__PURE__*/ react.default.createElement(HelloTheme, { path: "hello" }), /*#__PURE__*/ react.default.createElement(ChooseFeatures, { path: "chooseFeatures" }), /*#__PURE__*/ react.default.createElement(SiteName, { path: "siteName" }), /*#__PURE__*/ react.default.createElement(SiteLogo, { path: "siteLogo" }), /*#__PURE__*/ react.default.createElement(GoodToGo, { path: "goodToGo" }), /*#__PURE__*/ react.default.createElement(UploadAndInstallPro, { path: "uploadAndInstallPro" })))); } var init_app = __esmMin((() => { init_es$1(); init_context(); init_account(); init_hello_theme(); init_site_name(); init_site_logo(); init_good_to_go(); init_upload_and_install_pro(); init_choose_features(); init_onboarding_event_tracking(); })); //#endregion //#region app/modules/onboarding/assets/js/module.js init_createClass(); init_classCallCheck(); init_preload_helper(); var Onboarding$1 = /*#__PURE__*/ _createClass(function Onboarding() { _classCallCheck(this, Onboarding); _elementor_router.default.addRoute({ path: "/onboarding/*", component: react.default.lazy(function() { return __vitePreload(() => Promise.resolve().then(() => (init_app(), app_exports)), void 0); }) }); }); //#endregion //#region app/modules/onboarding-new/assets/js/module.js init_createClass(); init_classCallCheck(); var LazyApp = react.default.lazy(function() { return Promise.resolve(elementorV2.onboarding).then(function(module) { return { default: module.App }; }); }); var Onboarding = /*#__PURE__*/ _createClass(function Onboarding() { _classCallCheck(this, Onboarding); _elementor_router.default.addRoute({ path: "/onboarding/*", component: LazyApp }); }); //#endregion //#region app/assets/js/index.js var _elementorCommon; var _elementorCommon2; new ImportExport(); new KitLibrary(); new _elementor_site_editor.Module(); if ((_elementorCommon = elementorCommon) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.config) !== null && _elementorCommon !== void 0 && (_elementorCommon = _elementorCommon.experimentalFeatures) !== null && _elementorCommon !== void 0 && _elementorCommon.e_onboarding) new Onboarding(); else new Onboarding$1(); if ((_elementorCommon2 = elementorCommon) !== null && _elementorCommon2 !== void 0 && (_elementorCommon2 = _elementorCommon2.config) !== null && _elementorCommon2 !== void 0 && (_elementorCommon2 = _elementorCommon2.experimentalFeatures) !== null && _elementorCommon2 !== void 0 && _elementorCommon2["import-export-customization"]) new ImportExportCustomization(); var AppWrapper = react.default.Fragment; react_default.render(/*#__PURE__*/ react.default.createElement(AppWrapper, null, /*#__PURE__*/ react.default.createElement(AppProvider, null, /*#__PURE__*/ react.default.createElement(App$2, null))), document.getElementById("e-app")); //#endregion })(React, ReactDOM, elementorAppPackages.router, wp.i18n, elementorAppPackages.hooks, elementorV2.ui, elementorV2.icons, elementorAppPackages.appUi, elementorAppPackages.siteEditor); //# sourceMappingURL=app.js.map