(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) {
var fn = queue.shift();
fn();
}
}
}, true);
return function nextTick(fn) {
queue.push(fn);
window.postMessage('process-tick', '*');
};
}
return function nextTick(fn) {
setTimeout(fn, 0);
};
})();
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.binding = function (name) {
throw new Error('process.binding is not supported');
}
// TODO(shtylman)
process.cwd = function () { return '/' };
process.chdir = function (dir) {
throw new Error('process.chdir is not supported');
};
},{}],2:[function(require,module,exports){
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
'use strict';
/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
function toObject(val) {
if (val === null || val === undefined) {
throw new TypeError('Object.assign cannot be called with null or undefined');
}
return Object(val);
}
function shouldUseNative() {
try {
if (!Object.assign) {
return false;
}
// Detect buggy property enumeration order in older V8 versions.
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
test1[5] = 'de';
if (Object.getOwnPropertyNames(test1)[0] === '5') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test2 = {};
for (var i = 0; i < 10; i++) {
test2['_' + String.fromCharCode(i)] = i;
}
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
return test2[n];
});
if (order2.join('') !== '0123456789') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test3 = {};
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
test3[letter] = letter;
});
if (Object.keys(Object.assign({}, test3)).join('') !==
'abcdefghijklmnopqrst') {
return false;
}
return true;
} catch (err) {
// We don't expect any of the above to throw, but better to be safe.
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;
};
},{}],3:[function(require,module,exports){
(function (process){
/**
* 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.
*/
'use strict';
var printWarning = function() {};
if (process.env.NODE_ENV !== 'production') {
var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');
var loggedTypeFailures = {};
var has = require('./lib/has');
printWarning = function(text) {
var message = 'Warning: ' + text;
if (typeof console !== 'undefined') {
console.error(message);
}
try {
// --- Welcome to debugging React ---
// This error was thrown as a convenience so that you can use this stack
// to find the callsite that caused this warning to fire.
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) {
if (process.env.NODE_ENV !== 'production') {
for (var typeSpecName in typeSpecs) {
if (has(typeSpecs, typeSpecName)) {
var error;
// Prop type validation may throw. In case they do, we don't want to
// fail the render phase where it didn't fail before. So we log it.
// After these have been cleaned up, we'll let them throw.
try {
// This is intentionally an invariant that gets caught. It's the same
// behavior as without this statement except with a better message.
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)) {
// Only monitor this failure once because there tends to be a lot of the
// same error.
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() {
if (process.env.NODE_ENV !== 'production') {
loggedTypeFailures = {};
}
}
module.exports = checkPropTypes;
}).call(this,require("hmr7eR"))
},{"./lib/ReactPropTypesSecret":7,"./lib/has":8,"hmr7eR":1}],4:[function(require,module,exports){
/**
* 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.
*/
'use strict';
var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');
function emptyFunction() {}
function emptyFunctionWithReset() {}
emptyFunctionWithReset.resetWarningCache = emptyFunction;
module.exports = function() {
function shim(props, propName, componentName, location, propFullName, secret) {
if (secret === ReactPropTypesSecret) {
// It is still safe when called from React.
return;
}
var err = 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;
};
shim.isRequired = shim;
function getShim() {
return shim;
};
// Important!
// Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
var ReactPropTypes = {
array: shim,
bigint: shim,
bool: shim,
func: shim,
number: shim,
object: shim,
string: shim,
symbol: shim,
any: shim,
arrayOf: getShim,
element: shim,
elementType: shim,
instanceOf: getShim,
node: shim,
objectOf: getShim,
oneOf: getShim,
oneOfType: getShim,
shape: getShim,
exact: getShim,
checkPropTypes: emptyFunctionWithReset,
resetWarningCache: emptyFunction
};
ReactPropTypes.PropTypes = ReactPropTypes;
return ReactPropTypes;
};
},{"./lib/ReactPropTypesSecret":7}],5:[function(require,module,exports){
(function (process){
/**
* 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.
*/
'use strict';
var ReactIs = require('react-is');
var assign = require('object-assign');
var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');
var has = require('./lib/has');
var checkPropTypes = require('./checkPropTypes');
var printWarning = function() {};
if (process.env.NODE_ENV !== 'production') {
printWarning = function(text) {
var message = 'Warning: ' + text;
if (typeof console !== 'undefined') {
console.error(message);
}
try {
// --- Welcome to debugging React ---
// This error was thrown as a convenience so that you can use this stack
// to find the callsite that caused this warning to fire.
throw new Error(message);
} catch (x) {}
};
}
function emptyFunctionThatReturnsNull() {
return null;
}
module.exports = function(isValidElement, throwOnDirectAccess) {
/* global Symbol */
var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
/**
* 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 = '<>';
// Important!
// Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
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
*/
/*eslint-disable no-self-compare*/
function is(x, y) {
// SameValue algorithm
if (x === y) {
// Steps 1-5, 7-10
// Steps 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
} else {
// Step 6.a: NaN == NaN
return x !== x && y !== y;
}
}
/*eslint-enable no-self-compare*/
/**
* 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 = '';
}
// Make `instanceof Error` still work for returned errors.
PropTypeError.prototype = Error.prototype;
function createChainableTypeChecker(validate) {
if (process.env.NODE_ENV !== 'production') {
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) {
// New behavior only for users of `prop-types` package
var err = 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 (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {
// Old behavior for people using React.PropTypes
var cacheKey = componentName + ':' + propName;
if (
!manualPropTypeCallCache[cacheKey] &&
// Avoid spamming the console because they are often not actionable except for lib authors
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];
var propType = getPropType(propValue);
if (propType !== expectedType) {
// `propValue` being instance of, say, date/regexp, pass the 'object'
// check, but we can offer a more precise error message here rather than
// 'of type `object`'.
var preciseType = getPreciseType(propValue);
return new PropTypeError(
'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),
{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 (process.env.NODE_ENV !== 'production') {
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) {
var type = getPreciseType(value);
if (type === '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)) {
process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
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`.'));
}
// We need to check all keys in case some are required but missing from props.
var allKeys = assign({}, props[propName], shapeTypes);
for (var key in allKeys) {
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 {
// Iterator will provide entry [k,v] tuples rather than values.
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) {
// Native Symbol.
if (propType === 'symbol') {
return true;
}
// falsy value can't be a Symbol
if (!propValue) {
return false;
}
// 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
if (propValue['@@toStringTag'] === 'Symbol') {
return true;
}
// Fallback for non-spec compliant Symbols which are polyfilled.
if (typeof Symbol === 'function' && propValue instanceof Symbol) {
return true;
}
return false;
}
// Equivalent of `typeof` but with special handling for array and regexp.
function getPropType(propValue) {
var propType = typeof propValue;
if (Array.isArray(propValue)) {
return 'array';
}
if (propValue instanceof RegExp) {
// Old webkits (at least until Android 4.0) return 'function' rather than
// 'object' for typeof a RegExp. We'll normalize this here so that /bla/
// passes PropTypes.object.
return 'object';
}
if (isSymbol(propType, propValue)) {
return 'symbol';
}
return propType;
}
// This handles more types than `getPropType`. Only used for error messages.
// See `createPrimitiveTypeChecker`.
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;
}
// Returns a string that is postfixed to a warning about an invalid type.
// For example, "undefined" or "of type array"
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;
}
}
// Returns class name of the object, if any.
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;
};
}).call(this,require("hmr7eR"))
},{"./checkPropTypes":3,"./lib/ReactPropTypesSecret":7,"./lib/has":8,"hmr7eR":1,"object-assign":2,"react-is":11}],6:[function(require,module,exports){
(function (process){
/**
* 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.
*/
if (process.env.NODE_ENV !== 'production') {
var ReactIs = require('react-is');
// By explicitly using `prop-types` you are opting into new development behavior.
// http://fb.me/prop-types-in-prod
var throwOnDirectAccess = true;
module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);
} else {
// By explicitly using `prop-types` you are opting into new production behavior.
// http://fb.me/prop-types-in-prod
module.exports = require('./factoryWithThrowingShims')();
}
}).call(this,require("hmr7eR"))
},{"./factoryWithThrowingShims":4,"./factoryWithTypeCheckers":5,"hmr7eR":1,"react-is":11}],7:[function(require,module,exports){
/**
* 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.
*/
'use strict';
var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
module.exports = ReactPropTypesSecret;
},{}],8:[function(require,module,exports){
module.exports = Function.call.bind(Object.prototype.hasOwnProperty);
},{}],9:[function(require,module,exports){
(function (process){
/** @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.
*/
'use strict';
if (process.env.NODE_ENV !== "production") {
(function() {
'use strict';
// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
// nor polyfill, then a plain number is used for performance.
var hasSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
// (unstable) APIs that have been removed. Can we remove the symbols?
var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
function isValidElementType(type) {
return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
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;
}
}
return undefined;
} // AsyncMode is deprecated along with isAsyncMode
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; // AsyncMode should be deprecated
function isAsyncMode(object) {
{
if (!hasWarnedAboutDeprecatedIsAsyncMode) {
hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
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;
})();
}
}).call(this,require("hmr7eR"))
},{"hmr7eR":1}],10:[function(require,module,exports){
/** @license React v16.13.1
* react-is.production.min.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.
*/
'use strict';var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b?
Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119;
function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;
exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};
exports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};
exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;
},{}],11:[function(require,module,exports){
(function (process){
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./cjs/react-is.production.min.js');
} else {
module.exports = require('./cjs/react-is.development.js');
}
}).call(this,require("hmr7eR"))
},{"./cjs/react-is.development.js":9,"./cjs/react-is.production.min.js":10,"hmr7eR":1}],12:[function(require,module,exports){
"use strict";
var _education = _interopRequireDefault(require("../../../js/integrations/gutenberg/modules/education.js"));
var _common = _interopRequireDefault(require("../../../js/integrations/gutenberg/modules/common.js"));
var _themesPanel = _interopRequireDefault(require("../../../js/integrations/gutenberg/modules/themes-panel.js"));
var _containerStyles = _interopRequireDefault(require("../../../js/integrations/gutenberg/modules/container-styles.js"));
var _backgroundStyles = _interopRequireDefault(require("../../../js/integrations/gutenberg/modules/background-styles.js"));
var _buttonStyles = _interopRequireDefault(require("../../../js/integrations/gutenberg/modules/button-styles.js"));
var _advancedSettings = _interopRequireDefault(require("../../../js/integrations/gutenberg/modules/advanced-settings.js"));
var _fieldStyles = _interopRequireDefault(require("../../../js/integrations/gutenberg/modules/field-styles.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function 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(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 _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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* jshint es3: false, esversion: 6 */
/**
* Gutenberg editor block for Lite.
*
* @since 1.8.8
*/
var WPForms = window.WPForms || {};
WPForms.FormSelector = WPForms.FormSelector || function () {
/**
* Public functions and properties.
*
* @since 1.8.8
*
* @type {Object}
*/
var app = {
/**
* Common module object.
*
* @since 1.8.8
*
* @type {Object}
*/
common: {},
/**
* Panel modules objects.
*
* @since 1.8.8
*
* @type {Object}
*/
panels: {},
/**
* Start the engine.
*
* @since 1.8.8
*/
init: function init() {
app.education = _education.default;
app.common = _common.default;
app.panels.themes = _themesPanel.default;
app.panels.container = _containerStyles.default;
app.panels.background = _backgroundStyles.default;
app.panels.button = _buttonStyles.default;
app.panels.advanced = _advancedSettings.default;
app.panels.field = _fieldStyles.default;
var blockOptions = {
panels: app.panels,
getThemesPanel: app.panels.themes.getThemesPanel,
getFieldStyles: app.panels.field.getFieldStyles,
getContainerStyles: app.panels.container.getContainerStyles,
getBackgroundStyles: app.panels.background.getBackgroundStyles,
getButtonStyles: app.panels.button.getButtonStyles,
getCommonAttributes: app.getCommonAttributes,
setStylesHandlers: app.getStyleHandlers(),
education: app.education
};
// Initialize Advanced Settings module.
app.panels.advanced.init(app.common);
// Initialize block.
app.common.init(blockOptions);
},
/**
* Get style handlers.
*
* @since 1.8.8
*
* @return {Object} Style handlers.
*/
getCommonAttributes: function getCommonAttributes() {
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, app.panels.field.getBlockAttributes()), app.panels.container.getBlockAttributes()), app.panels.background.getBlockAttributes()), app.panels.button.getBlockAttributes());
},
/**
* Get style handlers.
*
* @since 1.8.8
*
* @return {Object} Style handlers.
*/
getStyleHandlers: function getStyleHandlers() {
return {
'background-image': app.panels.background.setContainerBackgroundImage,
'background-position': app.panels.background.setContainerBackgroundPosition,
'background-repeat': app.panels.background.setContainerBackgroundRepeat,
'background-width': app.panels.background.setContainerBackgroundWidth,
'background-height': app.panels.background.setContainerBackgroundHeight,
'background-color': app.panels.background.setBackgroundColor,
'background-url': app.panels.background.setBackgroundUrl
};
}
};
// Provide access to public functions/properties.
return app;
}();
// Initialize.
WPForms.FormSelector.init();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWR1Y2F0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbW9uIiwiX3RoZW1lc1BhbmVsIiwiX2NvbnRhaW5lclN0eWxlcyIsIl9iYWNrZ3JvdW5kU3R5bGVzIiwiX2J1dHRvblN0eWxlcyIsIl9hZHZhbmNlZFNldHRpbmdzIiwiX2ZpZWxkU3R5bGVzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiV1BGb3JtcyIsIndpbmRvdyIsIkZvcm1TZWxlY3RvciIsImFwcCIsImNvbW1vbiIsInBhbmVscyIsImluaXQiLCJlZHVjYXRpb24iLCJ0aGVtZXMiLCJ0aGVtZXNQYW5lbCIsImNvbnRhaW5lciIsImNvbnRhaW5lclN0eWxlcyIsImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kU3R5bGVzIiwiYnV0dG9uIiwiYnV0dG9uU3R5bGVzIiwiYWR2YW5jZWQiLCJhZHZhbmNlZFNldHRpbmdzIiwiZmllbGQiLCJmaWVsZFN0eWxlcyIsImJsb2NrT3B0aW9ucyIsImdldFRoZW1lc1BhbmVsIiwiZ2V0RmllbGRTdHlsZXMiLCJnZXRDb250YWluZXJTdHlsZXMiLCJnZXRCYWNrZ3JvdW5kU3R5bGVzIiwiZ2V0QnV0dG9uU3R5bGVzIiwiZ2V0Q29tbW9uQXR0cmlidXRlcyIsInNldFN0eWxlc0hhbmRsZXJzIiwiZ2V0U3R5bGVIYW5kbGVycyIsImdldEJsb2NrQXR0cmlidXRlcyIsInNldENvbnRhaW5lckJhY2tncm91bmRJbWFnZSIsInNldENvbnRhaW5lckJhY2tncm91bmRQb3NpdGlvbiIsInNldENvbnRhaW5lckJhY2tncm91bmRSZXBlYXQiLCJzZXRDb250YWluZXJCYWNrZ3JvdW5kV2lkdGgiLCJzZXRDb250YWluZXJCYWNrZ3JvdW5kSGVpZ2h0Iiwic2V0QmFja2dyb3VuZENvbG9yIiwic2V0QmFja2dyb3VuZFVybCJdLCJzb3VyY2VzIjpbImZha2VfMWExYzY1ZDguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoganNoaW50IGVzMzogZmFsc2UsIGVzdmVyc2lvbjogNiAqL1xuXG5pbXBvcnQgZWR1Y2F0aW9uIGZyb20gJy4uLy4uLy4uL2pzL2ludGVncmF0aW9ucy9ndXRlbmJlcmcvbW9kdWxlcy9lZHVjYXRpb24uanMnO1xuaW1wb3J0IGNvbW1vbiBmcm9tICcuLi8uLi8uLi9qcy9pbnRlZ3JhdGlvbnMvZ3V0ZW5iZXJnL21vZHVsZXMvY29tbW9uLmpzJztcbmltcG9ydCB0aGVtZXNQYW5lbCBmcm9tICcuLi8uLi8uLi9qcy9pbnRlZ3JhdGlvbnMvZ3V0ZW5iZXJnL21vZHVsZXMvdGhlbWVzLXBhbmVsLmpzJztcbmltcG9ydCBjb250YWluZXJTdHlsZXMgZnJvbSAnLi4vLi4vLi4vanMvaW50ZWdyYXRpb25zL2d1dGVuYmVyZy9tb2R1bGVzL2NvbnRhaW5lci1zdHlsZXMuanMnO1xuaW1wb3J0IGJhY2tncm91bmRTdHlsZXMgZnJvbSAnLi4vLi4vLi4vanMvaW50ZWdyYXRpb25zL2d1dGVuYmVyZy9tb2R1bGVzL2JhY2tncm91bmQtc3R5bGVzLmpzJztcbmltcG9ydCBidXR0b25TdHlsZXMgZnJvbSAnLi4vLi4vLi4vanMvaW50ZWdyYXRpb25zL2d1dGVuYmVyZy9tb2R1bGVzL2J1dHRvbi1zdHlsZXMuanMnO1xuaW1wb3J0IGFkdmFuY2VkU2V0dGluZ3MgZnJvbSAnLi4vLi4vLi4vanMvaW50ZWdyYXRpb25zL2d1dGVuYmVyZy9tb2R1bGVzL2FkdmFuY2VkLXNldHRpbmdzLmpzJztcbmltcG9ydCBmaWVsZFN0eWxlcyBmcm9tICcuLi8uLi8uLi9qcy9pbnRlZ3JhdGlvbnMvZ3V0ZW5iZXJnL21vZHVsZXMvZmllbGQtc3R5bGVzLmpzJztcblxuLyoqXG4gKiBHdXRlbmJlcmcgZWRpdG9yIGJsb2NrIGZvciBMaXRlLlxuICpcbiAqIEBzaW5jZSAxLjguOFxuICovXG5jb25zdCBXUEZvcm1zID0gd2luZG93LldQRm9ybXMgfHwge307XG5cbldQRm9ybXMuRm9ybVNlbGVjdG9yID0gV1BGb3Jtcy5Gb3JtU2VsZWN0b3IgfHwgKCBmdW5jdGlvbigpIHtcblx0LyoqXG5cdCAqIFB1YmxpYyBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBzaW5jZSAxLjguOFxuXHQgKlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0Y29uc3QgYXBwID0ge1xuXHRcdC8qKlxuXHRcdCAqIENvbW1vbiBtb2R1bGUgb2JqZWN0LlxuXHRcdCAqXG5cdFx0ICogQHNpbmNlIDEuOC44XG5cdFx0ICpcblx0XHQgKiBAdHlwZSB7T2JqZWN0fVxuXHRcdCAqL1xuXHRcdGNvbW1vbjoge30sXG5cblx0XHQvKipcblx0XHQgKiBQYW5lbCBtb2R1bGVzIG9iamVjdHMuXG5cdFx0ICpcblx0XHQgKiBAc2luY2UgMS44Ljhcblx0XHQgKlxuXHRcdCAqIEB0eXBlIHtPYmplY3R9XG5cdFx0ICovXG5cdFx0cGFuZWxzOiB7fSxcblxuXHRcdC8qKlxuXHRcdCAqIFN0YXJ0IHRoZSBlbmdpbmUuXG5cdFx0ICpcblx0XHQgKiBAc2luY2UgMS44Ljhcblx0XHQgKi9cblx0XHRpbml0KCkge1xuXHRcdFx0YXBwLmVkdWNhdGlvbiA9IGVkdWNhdGlvbjtcblx0XHRcdGFwcC5jb21tb24gPSBjb21tb247XG5cdFx0XHRhcHAucGFuZWxzLnRoZW1lcyA9IHRoZW1lc1BhbmVsO1xuXHRcdFx0YXBwLnBhbmVscy5jb250YWluZXIgPSBjb250YWluZXJTdHlsZXM7XG5cdFx0XHRhcHAucGFuZWxzLmJhY2tncm91bmQgPSBiYWNrZ3JvdW5kU3R5bGVzO1xuXHRcdFx0YXBwLnBhbmVscy5idXR0b24gPSBidXR0b25TdHlsZXM7XG5cdFx0XHRhcHAucGFuZWxzLmFkdmFuY2VkID0gYWR2YW5jZWRTZXR0aW5ncztcblx0XHRcdGFwcC5wYW5lbHMuZmllbGQgPSBmaWVsZFN0eWxlcztcblxuXHRcdFx0Y29uc3QgYmxvY2tPcHRpb25zID0ge1xuXHRcdFx0XHRwYW5lbHM6IGFwcC5wYW5lbHMsXG5cdFx0XHRcdGdldFRoZW1lc1BhbmVsOiBhcHAucGFuZWxzLnRoZW1lcy5nZXRUaGVtZXNQYW5lbCxcblx0XHRcdFx0Z2V0RmllbGRTdHlsZXM6IGFwcC5wYW5lbHMuZmllbGQuZ2V0RmllbGRTdHlsZXMsXG5cdFx0XHRcdGdldENvbnRhaW5lclN0eWxlczogYXBwLnBhbmVscy5jb250YWluZXIuZ2V0Q29udGFpbmVyU3R5bGVzLFxuXHRcdFx0XHRnZXRCYWNrZ3JvdW5kU3R5bGVzOiBhcHAucGFuZWxzLmJhY2tncm91bmQuZ2V0QmFja2dyb3VuZFN0eWxlcyxcblx0XHRcdFx0Z2V0QnV0dG9uU3R5bGVzOiBhcHAucGFuZWxzLmJ1dHRvbi5nZXRCdXR0b25TdHlsZXMsXG5cdFx0XHRcdGdldENvbW1vbkF0dHJpYnV0ZXM6IGFwcC5nZXRDb21tb25BdHRyaWJ1dGVzLFxuXHRcdFx0XHRzZXRTdHlsZXNIYW5kbGVyczogYXBwLmdldFN0eWxlSGFuZGxlcnMoKSxcblx0XHRcdFx0ZWR1Y2F0aW9uOiBhcHAuZWR1Y2F0aW9uLFxuXHRcdFx0fTtcblxuXHRcdFx0Ly8gSW5pdGlhbGl6ZSBBZHZhbmNlZCBTZXR0aW5ncyBtb2R1bGUuXG5cdFx0XHRhcHAucGFuZWxzLmFkdmFuY2VkLmluaXQoIGFwcC5jb21tb24gKTtcblxuXHRcdFx0Ly8gSW5pdGlhbGl6ZSBibG9jay5cblx0XHRcdGFwcC5jb21tb24uaW5pdCggYmxvY2tPcHRpb25zICk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEdldCBzdHlsZSBoYW5kbGVycy5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHJldHVybiB7T2JqZWN0fSBTdHlsZSBoYW5kbGVycy5cblx0XHQgKi9cblx0XHRnZXRDb21tb25BdHRyaWJ1dGVzKCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0Li4uYXBwLnBhbmVscy5maWVsZC5nZXRCbG9ja0F0dHJpYnV0ZXMoKSxcblx0XHRcdFx0Li4uYXBwLnBhbmVscy5jb250YWluZXIuZ2V0QmxvY2tBdHRyaWJ1dGVzKCksXG5cdFx0XHRcdC4uLmFwcC5wYW5lbHMuYmFja2dyb3VuZC5nZXRCbG9ja0F0dHJpYnV0ZXMoKSxcblx0XHRcdFx0Li4uYXBwLnBhbmVscy5idXR0b24uZ2V0QmxvY2tBdHRyaWJ1dGVzKCksXG5cdFx0XHR9O1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBHZXQgc3R5bGUgaGFuZGxlcnMuXG5cdFx0ICpcblx0XHQgKiBAc2luY2UgMS44Ljhcblx0XHQgKlxuXHRcdCAqIEByZXR1cm4ge09iamVjdH0gU3R5bGUgaGFuZGxlcnMuXG5cdFx0ICovXG5cdFx0Z2V0U3R5bGVIYW5kbGVycygpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdCdiYWNrZ3JvdW5kLWltYWdlJzogYXBwLnBhbmVscy5iYWNrZ3JvdW5kLnNldENvbnRhaW5lckJhY2tncm91bmRJbWFnZSxcblx0XHRcdFx0J2JhY2tncm91bmQtcG9zaXRpb24nOiBhcHAucGFuZWxzLmJhY2tncm91bmQuc2V0Q29udGFpbmVyQmFja2dyb3VuZFBvc2l0aW9uLFxuXHRcdFx0XHQnYmFja2dyb3VuZC1yZXBlYXQnOiBhcHAucGFuZWxzLmJhY2tncm91bmQuc2V0Q29udGFpbmVyQmFja2dyb3VuZFJlcGVhdCxcblx0XHRcdFx0J2JhY2tncm91bmQtd2lkdGgnOiBhcHAucGFuZWxzLmJhY2tncm91bmQuc2V0Q29udGFpbmVyQmFja2dyb3VuZFdpZHRoLFxuXHRcdFx0XHQnYmFja2dyb3VuZC1oZWlnaHQnOiBhcHAucGFuZWxzLmJhY2tncm91bmQuc2V0Q29udGFpbmVyQmFja2dyb3VuZEhlaWdodCxcblx0XHRcdFx0J2JhY2tncm91bmQtY29sb3InOiBhcHAucGFuZWxzLmJhY2tncm91bmQuc2V0QmFja2dyb3VuZENvbG9yLFxuXHRcdFx0XHQnYmFja2dyb3VuZC11cmwnOiBhcHAucGFuZWxzLmJhY2tncm91bmQuc2V0QmFja2dyb3VuZFVybCxcblx0XHRcdH07XG5cdFx0fSxcblx0fTtcblxuXHQvLyBQcm92aWRlIGFjY2VzcyB0byBwdWJsaWMgZnVuY3Rpb25zL3Byb3BlcnRpZXMuXG5cdHJldHVybiBhcHA7XG59KCkgKTtcblxuLy8gSW5pdGlhbGl6ZS5cbldQRm9ybXMuRm9ybVNlbGVjdG9yLmluaXQoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksaUJBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLGlCQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFBcUYsU0FBQUQsdUJBQUFTLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEs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
},{"../../../js/integrations/gutenberg/modules/advanced-settings.js":13,"../../../js/integrations/gutenberg/modules/background-styles.js":15,"../../../js/integrations/gutenberg/modules/button-styles.js":16,"../../../js/integrations/gutenberg/modules/common.js":17,"../../../js/integrations/gutenberg/modules/container-styles.js":18,"../../../js/integrations/gutenberg/modules/education.js":19,"../../../js/integrations/gutenberg/modules/field-styles.js":20,"../../../js/integrations/gutenberg/modules/themes-panel.js":21}],13:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/* global wpforms_gutenberg_form_selector */
/* jshint es3: false, esversion: 6 */
/**
* @param strings.custom_css
* @param strings.custom_css_notice
* @param strings.copy_paste_settings
* @param strings.copy_paste_notice
*/
/**
* Gutenberg editor block.
*
* Advanced Settings module.
*
* @since 1.8.8
*/
var _default = exports.default = function ($) {
/**
* WP core components.
*
* @since 1.8.8
*/
var addFilter = wp.hooks.addFilter;
var createHigherOrderComponent = wp.compose.createHigherOrderComponent;
var Fragment = wp.element.Fragment;
var _ref = wp.blockEditor || wp.editor,
InspectorAdvancedControls = _ref.InspectorAdvancedControls;
var TextareaControl = wp.components.TextareaControl;
/**
* Localized data aliases.
*
* @since 1.8.8
*/
var _wpforms_gutenberg_fo = wpforms_gutenberg_form_selector,
strings = _wpforms_gutenberg_fo.strings;
/**
* Public functions and properties.
*
* @since 1.8.8
*
* @type {Object}
*/
var app = {
/**
* Initialize module.
*
* @since 1.8.8
*
* @param {Object} commonModule Common module.
*/
init: function init(commonModule) {
app.common = commonModule;
app.hooks();
app.events();
},
/**
* Hooks.
*
* @since 1.8.8
*/
hooks: function hooks() {
addFilter('editor.BlockEdit', 'editorskit/custom-advanced-control', app.withAdvancedControls);
},
/**
* Events.
*
* @since 1.8.8
*/
events: function events() {
$(document).on('focus click', 'textarea', app.copyPasteFocus);
},
/**
* Copy / Paste Style Settings textarea focus event.
*
* @since 1.8.8
*/
copyPasteFocus: function copyPasteFocus() {
var $input = $(this);
if ($input.siblings('label').text() === strings.copy_paste_settings) {
// Select all text, so it's easier to copy and paste value.
$input.select();
}
},
/**
* Get fields.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
*
* @return {Object} Inspector advanced controls JSX code.
*/
getFields: function getFields(props) {
var _props$attributes;
// Proceed only for WPForms block and when form ID is set.
if ((props === null || props === void 0 ? void 0 : props.name) !== 'wpforms/form-selector' || !(props !== null && props !== void 0 && (_props$attributes = props.attributes) !== null && _props$attributes !== void 0 && _props$attributes.formId)) {
return null;
}
// Common event handlers.
var handlers = app.common.getSettingsFieldsHandlers(props);
return /*#__PURE__*/React.createElement(InspectorAdvancedControls, null, /*#__PURE__*/React.createElement("div", {
className: app.common.getPanelClass(props) + ' advanced'
}, /*#__PURE__*/React.createElement(TextareaControl, {
className: "wpforms-gutenberg-form-selector-custom-css",
label: strings.custom_css,
rows: "5",
spellCheck: "false",
value: props.attributes.customCss,
onChange: function onChange(value) {
return handlers.attrChange('customCss', value);
}
}), /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-legend",
dangerouslySetInnerHTML: {
__html: strings.custom_css_notice
}
}), /*#__PURE__*/React.createElement(TextareaControl, {
className: "wpforms-gutenberg-form-selector-copy-paste-settings",
label: strings.copy_paste_settings,
rows: "4",
spellCheck: "false",
value: props.attributes.copyPasteJsonValue,
onChange: function onChange(value) {
return handlers.pasteSettings(value);
}
}), /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-legend",
dangerouslySetInnerHTML: {
__html: strings.copy_paste_notice
}
})));
},
/**
* Add controls on Advanced Settings Panel.
*
* @param {Function} BlockEdit Block edit component.
*
* @return {Function} BlockEdit Modified block edit component.
*/
withAdvancedControls: createHigherOrderComponent(function (BlockEdit) {
return function (props) {
return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(BlockEdit, props), app.getFields(props));
};
}, 'withAdvancedControls')
};
// Provide access to public functions/properties.
return app;
}(jQuery);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwiJCIsImFkZEZpbHRlciIsIndwIiwiaG9va3MiLCJjcmVhdGVIaWdoZXJPcmRlckNvbXBvbmVudCIsImNvbXBvc2UiLCJGcmFnbWVudCIsImVsZW1lbnQiLCJfcmVmIiwiYmxvY2tFZGl0b3IiLCJlZGl0b3IiLCJJbnNwZWN0b3JBZHZhbmNlZENvbnRyb2xzIiwiVGV4dGFyZWFDb250cm9sIiwiY29tcG9uZW50cyIsIl93cGZvcm1zX2d1dGVuYmVyZ19mbyIsIndwZm9ybXNfZ3V0ZW5iZXJnX2Zvcm1fc2VsZWN0b3IiLCJzdHJpbmdzIiwiYXBwIiwiaW5pdCIsImNvbW1vbk1vZHVsZSIsImNvbW1vbiIsImV2ZW50cyIsIndpdGhBZHZhbmNlZENvbnRyb2xzIiwiZG9jdW1lbnQiLCJvbiIsImNvcHlQYXN0ZUZvY3VzIiwiJGlucHV0Iiwic2libGluZ3MiLCJ0ZXh0IiwiY29weV9wYXN0ZV9zZXR0aW5ncyIsInNlbGVjdCIsImdldEZpZWxkcyIsInByb3BzIiwiX3Byb3BzJGF0dHJpYnV0ZXMiLCJuYW1lIiwiYXR0cmlidXRlcyIsImZvcm1JZCIsImhhbmRsZXJzIiwiZ2V0U2V0dGluZ3NGaWVsZHNIYW5kbGVycyIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImdldFBhbmVsQ2xhc3MiLCJsYWJlbCIsImN1c3RvbV9jc3MiLCJyb3dzIiwic3BlbGxDaGVjayIsInZhbHVlIiwiY3VzdG9tQ3NzIiwib25DaGFuZ2UiLCJhdHRyQ2hhbmdlIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJjdXN0b21fY3NzX25vdGljZSIsImNvcHlQYXN0ZUpzb25WYWx1ZSIsInBhc3RlU2V0dGluZ3MiLCJjb3B5X3Bhc3RlX25vdGljZSIsIkJsb2NrRWRpdCIsImpRdWVyeSJdLCJzb3VyY2VzIjpbImFkdmFuY2VkLXNldHRpbmdzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCB3cGZvcm1zX2d1dGVuYmVyZ19mb3JtX3NlbGVjdG9yICovXG4vKiBqc2hpbnQgZXMzOiBmYWxzZSwgZXN2ZXJzaW9uOiA2ICovXG5cbi8qKlxuICogQHBhcmFtIHN0cmluZ3MuY3VzdG9tX2Nzc1xuICogQHBhcmFtIHN0cmluZ3MuY3VzdG9tX2Nzc19ub3RpY2VcbiAqIEBwYXJhbSBzdHJpbmdzLmNvcHlfcGFzdGVfc2V0dGluZ3NcbiAqIEBwYXJhbSBzdHJpbmdzLmNvcHlfcGFzdGVfbm90aWNlXG4gKi9cblxuLyoqXG4gKiBHdXRlbmJlcmcgZWRpdG9yIGJsb2NrLlxuICpcbiAqIEFkdmFuY2VkIFNldHRpbmdzIG1vZHVsZS5cbiAqXG4gKiBAc2luY2UgMS44LjhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKCBmdW5jdGlvbiggJCApIHtcblx0LyoqXG5cdCAqIFdQIGNvcmUgY29tcG9uZW50cy5cblx0ICpcblx0ICogQHNpbmNlIDEuOC44XG5cdCAqL1xuXHRjb25zdCB7IGFkZEZpbHRlciB9ID0gd3AuaG9va3M7XG5cdGNvbnN0IHsgY3JlYXRlSGlnaGVyT3JkZXJDb21wb25lbnQgfSA9IHdwLmNvbXBvc2U7XG5cdGNvbnN0IHsgRnJhZ21lbnQgfVx0PSB3cC5lbGVtZW50O1xuXHRjb25zdCB7IEluc3BlY3RvckFkdmFuY2VkQ29udHJvbHMgfSA9IHdwLmJsb2NrRWRpdG9yIHx8IHdwLmVkaXRvcjtcblx0Y29uc3QgeyBUZXh0YXJlYUNvbnRyb2wgfSA9IHdwLmNvbXBvbmVudHM7XG5cblx0LyoqXG5cdCAqIExvY2FsaXplZCBkYXRhIGFsaWFzZXMuXG5cdCAqXG5cdCAqIEBzaW5jZSAxLjguOFxuXHQgKi9cblx0Y29uc3QgeyBzdHJpbmdzIH0gPSB3cGZvcm1zX2d1dGVuYmVyZ19mb3JtX3NlbGVjdG9yO1xuXG5cdC8qKlxuXHQgKiBQdWJsaWMgZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAc2luY2UgMS44Ljhcblx0ICpcblx0ICogQHR5cGUge09iamVjdH1cblx0ICovXG5cdGNvbnN0IGFwcCA9IHtcblx0XHQvKipcblx0XHQgKiBJbml0aWFsaXplIG1vZHVsZS5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGNvbW1vbk1vZHVsZSBDb21tb24gbW9kdWxlLlxuXHRcdCAqL1xuXHRcdGluaXQoIGNvbW1vbk1vZHVsZSApIHtcblx0XHRcdGFwcC5jb21tb24gPSBjb21tb25Nb2R1bGU7XG5cblx0XHRcdGFwcC5ob29rcygpO1xuXHRcdFx0YXBwLmV2ZW50cygpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBIb29rcy5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqL1xuXHRcdGhvb2tzKCkge1xuXHRcdFx0YWRkRmlsdGVyKFxuXHRcdFx0XHQnZWRpdG9yLkJsb2NrRWRpdCcsXG5cdFx0XHRcdCdlZGl0b3Jza2l0L2N1c3RvbS1hZHZhbmNlZC1jb250cm9sJyxcblx0XHRcdFx0YXBwLndpdGhBZHZhbmNlZENvbnRyb2xzXG5cdFx0XHQpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBFdmVudHMuXG5cdFx0ICpcblx0XHQgKiBAc2luY2UgMS44Ljhcblx0XHQgKi9cblx0XHRldmVudHMoKSB7XG5cdFx0XHQkKCBkb2N1bWVudCApXG5cdFx0XHRcdC5vbiggJ2ZvY3VzIGNsaWNrJywgJ3RleHRhcmVhJywgYXBwLmNvcHlQYXN0ZUZvY3VzICk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIENvcHkgLyBQYXN0ZSBTdHlsZSBTZXR0aW5ncyB0ZXh0YXJlYSBmb2N1cyBldmVudC5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqL1xuXHRcdGNvcHlQYXN0ZUZvY3VzKCkge1xuXHRcdFx0Y29uc3QgJGlucHV0ID0gJCggdGhpcyApO1xuXG5cdFx0XHRpZiAoICRpbnB1dC5zaWJsaW5ncyggJ2xhYmVsJyApLnRleHQoKSA9PT0gc3RyaW5ncy5jb3B5X3Bhc3RlX3NldHRpbmdzICkge1xuXHRcdFx0XHQvLyBTZWxlY3QgYWxsIHRleHQsIHNvIGl0J3MgZWFzaWVyIHRvIGNvcHkgYW5kIHBhc3RlIHZhbHVlLlxuXHRcdFx0XHQkaW5wdXQuc2VsZWN0KCk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEdldCBmaWVsZHMuXG5cdFx0ICpcblx0XHQgKiBAc2luY2UgMS44Ljhcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBCbG9jayBwcm9wZXJ0aWVzLlxuXHRcdCAqXG5cdFx0ICogQHJldHVybiB7T2JqZWN0fSBJbnNwZWN0b3IgYWR2YW5jZWQgY29udHJvbHMgSlNYIGNvZGUuXG5cdFx0ICovXG5cdFx0Z2V0RmllbGRzKCBwcm9wcyApIHtcblx0XHRcdC8vIFByb2NlZWQgb25seSBmb3IgV1BGb3JtcyBibG9jayBhbmQgd2hlbiBmb3JtIElEIGlzIHNldC5cblx0XHRcdGlmICggcHJvcHM/Lm5hbWUgIT09ICd3cGZvcm1zL2Zvcm0tc2VsZWN0b3InIHx8ICEgcHJvcHM/LmF0dHJpYnV0ZXM/LmZvcm1JZCApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbW1vbiBldmVudCBoYW5kbGVycy5cblx0XHRcdGNvbnN0IGhhbmRsZXJzID0gYXBwLmNvbW1vbi5nZXRTZXR0aW5nc0ZpZWxkc0hhbmRsZXJzKCBwcm9wcyApO1xuXG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8SW5zcGVjdG9yQWR2YW5jZWRDb250cm9scz5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17IGFwcC5jb21tb24uZ2V0UGFuZWxDbGFzcyggcHJvcHMgKSArICcgYWR2YW5jZWQnIH0+XG5cdFx0XHRcdFx0XHQ8VGV4dGFyZWFDb250cm9sXG5cdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cIndwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItY3VzdG9tLWNzc1wiXG5cdFx0XHRcdFx0XHRcdGxhYmVsPXsgc3RyaW5ncy5jdXN0b21fY3NzIH1cblx0XHRcdFx0XHRcdFx0cm93cz1cIjVcIlxuXHRcdFx0XHRcdFx0XHRzcGVsbENoZWNrPVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0XHR2YWx1ZT17IHByb3BzLmF0dHJpYnV0ZXMuY3VzdG9tQ3NzIH1cblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gaGFuZGxlcnMuYXR0ckNoYW5nZSggJ2N1c3RvbUNzcycsIHZhbHVlICkgfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwid3Bmb3Jtcy1ndXRlbmJlcmctZm9ybS1zZWxlY3Rvci1sZWdlbmRcIiBkYW5nZXJvdXNseVNldElubmVySFRNTD17IHsgX19odG1sOiBzdHJpbmdzLmN1c3RvbV9jc3Nfbm90aWNlIH0gfT48L2Rpdj5cblx0XHRcdFx0XHRcdDxUZXh0YXJlYUNvbnRyb2xcblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwid3Bmb3Jtcy1ndXRlbmJlcmctZm9ybS1zZWxlY3Rvci1jb3B5LXBhc3RlLXNldHRpbmdzXCJcblx0XHRcdFx0XHRcdFx0bGFiZWw9eyBzdHJpbmdzLmNvcHlfcGFzdGVfc2V0dGluZ3MgfVxuXHRcdFx0XHRcdFx0XHRyb3dzPVwiNFwiXG5cdFx0XHRcdFx0XHRcdHNwZWxsQ2hlY2s9XCJmYWxzZVwiXG5cdFx0XHRcdFx0XHRcdHZhbHVlPXsgcHJvcHMuYXR0cmlidXRlcy5jb3B5UGFzdGVKc29uVmFsdWUgfVxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBoYW5kbGVycy5wYXN0ZVNldHRpbmdzKCB2YWx1ZSApIH1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cIndwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItbGVnZW5kXCIgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9eyB7IF9faHRtbDogc3RyaW5ncy5jb3B5X3Bhc3RlX25vdGljZSB9IH0+PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvSW5zcGVjdG9yQWR2YW5jZWRDb250cm9scz5cblx0XHRcdCk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEFkZCBjb250cm9scyBvbiBBZHZhbmNlZCBTZXR0aW5ncyBQYW5lbC5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IEJsb2NrRWRpdCBCbG9jayBlZGl0IGNvbXBvbmVudC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm4ge0Z1bmN0aW9ufSBCbG9ja0VkaXQgTW9kaWZpZWQgYmxvY2sgZWRpdCBjb21wb25lbnQuXG5cdFx0ICovXG5cdFx0d2l0aEFkdmFuY2VkQ29udHJvbHM6IGNyZWF0ZUhpZ2hlck9yZGVyQ29tcG9uZW50KFxuXHRcdFx0KCBCbG9ja0VkaXQgKSA9PiB7XG5cdFx0XHRcdHJldHVybiAoIHByb3BzICkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQ8RnJhZ21lbnQ+XG5cdFx0XHRcdFx0XHRcdDxCbG9ja0VkaXQgeyAuLi5wcm9wcyB9IC8+XG5cdFx0XHRcdFx0XHRcdHsgYXBwLmdldEZpZWxkcyggcHJvcHMgKSB9XG5cdFx0XHRcdFx0XHQ8L0ZyYWdtZW50PlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdFx0J3dpdGhBZHZhbmNlZENvbnRyb2xzJ1xuXHRcdCksXG5cdH07XG5cblx0Ly8gUHJvdmlkZSBhY2Nlc3MgdG8gcHVibGljIGZ1bmN0aW9ucy9wcm9wZXJ0aWVzLlxuXHRyZXR1cm4gYXBwO1xufSggalF1ZXJ5ICkgKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FPaUIsVUFBVUMsQ0FBQyxFQUFHO0VBQzlCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7RUFDQyxJQUFR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R0FBRztRQUNSQyxVQUFVLEVBQUMsT0FBTztRQUNsQkMsS0FBSyxFQUFHZixLQUFLLENBQUNHLFVBQVUsQ0FBQ2EsU0FBVztRQUNwQ0MsUUFBUSxFQUFHLFNBQVhBLFFBQVFBLENBQUtGLEtBQUs7VUFBQSxPQUFNVixRQUFRLENBQUNhLFVBQVUsQ0FBRSxXQUFXLEVBQUVILEtBQU0sQ0FBQztRQUFBO01BQUUsQ0FDbkUsQ0FBQyxlQUNGUixLQUFBLENBQUFDLGFBQUE7UUFBS0MsU0FBUyxFQUFDLHdDQUF3QztRQUFDVSx1QkFBdUIsRUFBRztVQUFFQyxNQUFNLEVBQUVwQyxPQUFPLENBQUNxQztRQUFrQjtNQUFHLENBQU0sQ0FBQyxlQUNoSWQsS0FBQSxDQUFBQyxhQUFBLENBQUM1QixlQUFlO1FBQ2Y2QixTQUFTLEVBQUMscURBQXFEO1FBQy9ERSxLQUFLLEVBQUczQixPQUFPLENBQUNhLG1CQUFxQjtRQUNyQ2dCLElBQUksRUFBQyxHQUFHO1FBQ1JDLFVBQVUsRUFBQyxPQUFPO1FBQ2xCQyxLQUFLLEVBQUdmLEtBQUssQ0FBQ0csVUFBVSxDQUFDbUIsa0JBQW9CO1FBQzdDTCxRQUFRLEVBQUcsU0FBWEEsUUFBUUEsQ0FBS0YsS0FBSztVQUFBLE9BQU1WLFFBQVEsQ0FBQ2tCLGFBQWEsQ0FBRVIsS0FBTSxDQUFDO1FBQUE7TUFBRSxDQUN6RCxDQUFDLGVBQ0ZSLEtBQUEsQ0FBQUMsYUFBQTtRQUFLQyxTQUFTLEVBQUMsd0NBQXdDO1FBQUNVLHVCQUF1QixFQUFHO1VBQUVDLE1BQU0sRUFBRXBDLE9BQU8sQ0FBQ3dDO1FBQWtCO01BQUcsQ0FBTSxDQUMzSCxDQUNxQixDQUFDO0lBRTlCLENBQUM7SUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNFbEMsb0JBQW9CLEVBQUVsQiwwQkFBMEIsQ0FDL0MsVUFBRXFELFNBQVMsRUFBTTtNQUNoQixPQUFPLFVBQUV6QixLQUFLLEVBQU07UUFDbkIsb0JBQ0NPLEtBQUEsQ0FBQUMsYUFBQSxDQUFDbEMsUUFBUSxxQkFDUmlDLEtBQUEsQ0FBQUMsYUFBQSxDQUFDaUIsU0FBUyxFQUFNekIsS0FBUyxDQUFDLEVBQ3hCZixHQUFHLENBQUNjLFNBQVMsQ0FBRUMsS0FBTSxDQUNkLENBQUM7TUFFYixDQUFDO0lBQ0YsQ0FBQyxFQUNELHNCQUNEO0VBQ0QsQ0FBQzs7RUFFRDtFQUNBLE9BQU9mLEdBQUc7QUFDWCxDQUFDLENBQUV5QyxNQUFPLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
},{}],14:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/* global wpforms_gutenberg_form_selector */
/* jshint es3: false, esversion: 6 */
/**
* @param strings.remove_image
*/
/**
* React component for the background preview.
*
* @since 1.8.8
*
* @param {Object} props Component props.
* @param {Object} props.attributes Block attributes.
* @param {Function} props.onRemoveBackground Function to remove the background.
* @param {Function} props.onPreviewClicked Function to handle the preview click.
*
* @return {Object} React component.
*/
var BackgroundPreview = function BackgroundPreview(_ref) {
var attributes = _ref.attributes,
onRemoveBackground = _ref.onRemoveBackground,
onPreviewClicked = _ref.onPreviewClicked;
var Button = wp.components.Button;
var _wpforms_gutenberg_fo = wpforms_gutenberg_form_selector,
strings = _wpforms_gutenberg_fo.strings;
return /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-background-preview"
}, /*#__PURE__*/React.createElement("style", null, "\n\t\t\t\t\t.wpforms-gutenberg-form-selector-background-preview-image {\n\t\t\t\t\t\t--wpforms-background-url: ".concat(attributes.backgroundUrl, ";\n\t\t\t\t\t}\n\t\t\t\t")), /*#__PURE__*/React.createElement("input", {
className: "wpforms-gutenberg-form-selector-background-preview-image",
onClick: onPreviewClicked,
tabIndex: 0,
type: "button",
onKeyDown: function onKeyDown(event) {
if (event.key === 'Enter' || event.key === ' ') {
onPreviewClicked();
}
}
}), /*#__PURE__*/React.createElement(Button, {
isSecondary: true,
className: "is-destructive",
onClick: onRemoveBackground
}, strings.remove_image));
};
BackgroundPreview.propTypes = {
attributes: _propTypes.default.object.isRequired,
onRemoveBackground: _propTypes.default.func.isRequired,
onPreviewClicked: _propTypes.default.func.isRequired
};
var _default = exports.default = BackgroundPreview;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJCYWNrZ3JvdW5kUHJldmlldyIsIl9yZWYiLCJhdHRyaWJ1dGVzIiwib25SZW1vdmVCYWNrZ3JvdW5kIiwib25QcmV2aWV3Q2xpY2tlZCIsIkJ1dHRvbiIsIndwIiwiY29tcG9uZW50cyIsIl93cGZvcm1zX2d1dGVuYmVyZ19mbyIsIndwZm9ybXNfZ3V0ZW5iZXJnX2Zvcm1fc2VsZWN0b3IiLCJzdHJpbmdzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiY29uY2F0IiwiYmFja2dyb3VuZFVybCIsIm9uQ2xpY2siLCJ0YWJJbmRleCIsInR5cGUiLCJvbktleURvd24iLCJldmVudCIsImtleSIsImlzU2Vjb25kYXJ5IiwicmVtb3ZlX2ltYWdlIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyJiYWNrZ3JvdW5kLXByZXZpZXcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdwZm9ybXNfZ3V0ZW5iZXJnX2Zvcm1fc2VsZWN0b3IgKi9cbi8qIGpzaGludCBlczM6IGZhbHNlLCBlc3ZlcnNpb246IDYgKi9cblxuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcblxuLyoqXG4gKiBAcGFyYW0gc3RyaW5ncy5yZW1vdmVfaW1hZ2VcbiAqL1xuXG4vKipcbiAqIFJlYWN0IGNvbXBvbmVudCBmb3IgdGhlIGJhY2tncm91bmQgcHJldmlldy5cbiAqXG4gKiBAc2luY2UgMS44LjhcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gICBwcm9wcyAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50IHByb3BzLlxuICogQHBhcmFtIHtPYmplY3R9ICAgcHJvcHMuYXR0cmlidXRlcyAgICAgICAgIEJsb2NrIGF0dHJpYnV0ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcm9wcy5vblJlbW92ZUJhY2tncm91bmQgRnVuY3Rpb24gdG8gcmVtb3ZlIHRoZSBiYWNrZ3JvdW5kLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJvcHMub25QcmV2aWV3Q2xpY2tlZCAgIEZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgcHJldmlldyBjbGljay5cbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJlYWN0IGNvbXBvbmVudC5cbiAqL1xuY29uc3QgQmFja2dyb3VuZFByZXZpZXcgPSAoIHsgYXR0cmlidXRlcywgb25SZW1vdmVCYWNrZ3JvdW5kLCBvblByZXZpZXdDbGlja2VkIH0gKSA9PiB7XG5cdGNvbnN0IHsgQnV0dG9uIH0gPSB3cC5jb21wb25lbnRzO1xuXHRjb25zdCB7IHN0cmluZ3MgfSA9IHdwZm9ybXNfZ3V0ZW5iZXJnX2Zvcm1fc2VsZWN0b3I7XG5cblx0cmV0dXJuIChcblx0XHQ8ZGl2IGNsYXNzTmFtZT1cIndwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItYmFja2dyb3VuZC1wcmV2aWV3XCI+XG5cdFx0XHQ8c3R5bGU+XG5cdFx0XHRcdHsgYFxuXHRcdFx0XHRcdC53cGZvcm1zLWd1dGVuYmVyZy1mb3JtLXNlbGVjdG9yLWJhY2tncm91bmQtcHJldmlldy1pbWFnZSB7XG5cdFx0XHRcdFx0XHQtLXdwZm9ybXMtYmFja2dyb3VuZC11cmw6ICR7IGF0dHJpYnV0ZXMuYmFja2dyb3VuZFVybCB9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0YCB9XG5cdFx0XHQ8L3N0eWxlPlxuXHRcdFx0PGlucHV0XG5cdFx0XHRcdGNsYXNzTmFtZT1cIndwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItYmFja2dyb3VuZC1wcmV2aWV3LWltYWdlXCJcblx0XHRcdFx0b25DbGljaz17IG9uUHJldmlld0NsaWNrZWQgfVxuXHRcdFx0XHR0YWJJbmRleD17IDAgfVxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0b25LZXlEb3duPXtcblx0XHRcdFx0XHQoIGV2ZW50ICkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKCBldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcgKSB7XG5cdFx0XHRcdFx0XHRcdG9uUHJldmlld0NsaWNrZWQoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdD5cblx0XHRcdDwvaW5wdXQ+XG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdGlzU2Vjb25kYXJ5XG5cdFx0XHRcdGNsYXNzTmFtZT1cImlzLWRlc3RydWN0aXZlXCJcblx0XHRcdFx0b25DbGljaz17IG9uUmVtb3ZlQmFja2dyb3VuZCB9XG5cdFx0XHQ+XG5cdFx0XHRcdHsgc3RyaW5ncy5yZW1vdmVfaW1hZ2UgfVxuXHRcdFx0PC9CdXR0b24+XG5cdFx0PC9kaXY+XG5cdCk7XG59O1xuXG5CYWNrZ3JvdW5kUHJldmlldy5wcm9wVHlwZXMgPSB7XG5cdGF0dHJpYnV0ZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblx0b25SZW1vdmVCYWNrZ3JvdW5kOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXHRvblByZXZpZXdDbGlja2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFja2dyb3VuZFByZXZpZXc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFtQyxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUhuQztBQUNBOztBQUlBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNRyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFBQyxJQUFBLEVBQStEO0VBQUEsSUFBeERDLFVBQVUsR0FBQUQsSUFBQSxDQUFWQyxVQUFVO0lBQUVDLGtCQUFrQixHQUFBRixJQUFBLENBQWxCRSxrQkFBa0I7SUFBRUMsZ0JBQWdCLEdBQUFILElBQUEsQ0FBaEJHLGdCQUFnQjtFQUM3RSxJQUFRQyxNQUFNLEdBQUtDLEVBQUUsQ0FBQ0MsVUFBVSxDQUF4QkYsTUFBTTtFQUNkLElBQUFHLHFCQUFBLEdBQW9CQywrQkFBK0I7SUFBM0NDLE9BQU8sR0FBQUYscUJBQUEsQ0FBUEUsT0FBTztFQUVmLG9CQUNDQyxLQUFBLENBQUFDLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQW9ELGdCQUNsRUYsS0FBQSxDQUFBQyxhQUFBLGtJQUFBRSxNQUFBLENBR2dDWixVQUFVLENBQUNhLGFBQWEsNkJBR2pELENBQUMsZUFDUkosS0FBQSxDQUFBQyxhQUFBO0lBQ0NDLFNBQVMsRUFBQywwREFBMEQ7SUFDcEVHLE9BQU8sRUFBR1osZ0JBQWtCO0lBQzVCYSxRQUFRLEVBQUcsQ0FBRztJQUNkQyxJQUFJLEVBQUMsUUFBUTtJQUNiQyxTQUFTLEVBQ1IsU0FEREEsU0FBU0EsQ0FDTkMsS0FBSyxFQUFNO01BQ1osSUFBS0EsS0FBSyxDQUFDQyxHQUFHLEtBQUssT0FBTyxJQUFJRCxLQUFLLENBQUNDLEdBQUcsS0FBSyxHQUFHLEVBQUc7UUFDakRqQixnQkFBZ0IsQ0FBQyxDQUFDO01BQ25CO0lBQ0Q7RUFDQSxDQUVLLENBQUMsZUFDUk8sS0FBQSxDQUFBQyxhQUFBLENBQUNQLE1BQU07SUFDTmlCLFdBQVc7SUFDWFQsU0FBUyxFQUFDLGdCQUFnQjtJQUMxQkcsT0FBTyxFQUFHYjtFQUFvQixHQUU1Qk8sT0FBTyxDQUFDYSxZQUNILENBQ0osQ0FBQztBQUVSLENBQUM7QUFFRHZCLGlCQUFpQixDQUFDd0IsU0FBUyxHQUFHO0VBQzdCdEIsVUFBVSxFQUFFdUIsa0JBQVMsQ0FBQ0MsTUFBTSxDQUFDQyxVQUFVO0VBQ3ZDeEIsa0JBQWtCLEVBQUVzQixrQkFBUyxDQUFDRyxJQUFJLENBQUNELFVBQVU7RUFDN0N2QixnQkFBZ0IsRUFBRXFCLGtCQUFTLENBQUNHLElBQUksQ0FBQ0Q7QUFDbEMsQ0FBQztBQUFDLElBQUFFLFFBQUEsR0FBQUMsT0FBQSxDQUFBL0IsT0FBQSxHQUVhQyxpQkFBaUIiLCJpZ25vcmVMaXN0IjpbXX0=
},{"prop-types":6}],15:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _backgroundPreview = _interopRequireDefault(require("./background-preview.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/* global wpforms_gutenberg_form_selector */
/* jshint es3: false, esversion: 6 */
/**
* @param strings.background_styles
* @param strings.bottom_center
* @param strings.bottom_left
* @param strings.bottom_right
* @param strings.center_center
* @param strings.center_left
* @param strings.center_right
* @param strings.choose_image
* @param strings.image_url
* @param strings.media_library
* @param strings.no_repeat
* @param strings.repeat_x
* @param strings.repeat_y
* @param strings.select_background_image
* @param strings.select_image
* @param strings.stock_photo
* @param strings.tile
* @param strings.top_center
* @param strings.top_left
* @param strings.top_right
*/
/**
* Gutenberg editor block.
*
* Background styles panel module.
*
* @since 1.8.8
*/
var _default = exports.default = function () {
/**
* WP core components.
*
* @since 1.8.8
*/
var _ref = wp.blockEditor || wp.editor,
PanelColorSettings = _ref.PanelColorSettings;
var _wp$components = wp.components,
SelectControl = _wp$components.SelectControl,
PanelBody = _wp$components.PanelBody,
Flex = _wp$components.Flex,
FlexBlock = _wp$components.FlexBlock,
__experimentalUnitControl = _wp$components.__experimentalUnitControl,
TextControl = _wp$components.TextControl,
Button = _wp$components.Button;
/**
* Localized data aliases.
*
* @since 1.8.8
*/
var _wpforms_gutenberg_fo = wpforms_gutenberg_form_selector,
strings = _wpforms_gutenberg_fo.strings,
defaults = _wpforms_gutenberg_fo.defaults;
/**
* Public functions and properties.
*
* @since 1.8.8
*
* @type {Object}
*/
var app = {
/**
* Get block attributes.
*
* @since 1.8.8
*
* @return {Object} Block attributes.
*/
getBlockAttributes: function getBlockAttributes() {
return {
backgroundImage: {
type: 'string',
default: defaults.backgroundImage
},
backgroundPosition: {
type: 'string',
default: defaults.backgroundPosition
},
backgroundRepeat: {
type: 'string',
default: defaults.backgroundRepeat
},
backgroundSizeMode: {
type: 'string',
default: defaults.backgroundSizeMode
},
backgroundSize: {
type: 'string',
default: defaults.backgroundSize
},
backgroundWidth: {
type: 'string',
default: defaults.backgroundWidth
},
backgroundHeight: {
type: 'string',
default: defaults.backgroundHeight
},
backgroundColor: {
type: 'string',
default: defaults.backgroundColor
},
backgroundUrl: {
type: 'string',
default: defaults.backgroundUrl
}
};
},
/**
* Get Background Styles panel JSX code.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
* @param {Object} handlers Block handlers.
* @param {Object} formSelectorCommon Block properties.
* @param {Object} stockPhotos Stock Photos module.
* @param {Object} uiState UI state.
*
* @return {Object} Field styles JSX code.
*/
getBackgroundStyles: function getBackgroundStyles(props, handlers, formSelectorCommon, stockPhotos, uiState) {
// eslint-disable-line max-lines-per-function, complexity
var isNotDisabled = uiState.isNotDisabled;
var isProEnabled = uiState.isProEnabled;
var showBackgroundPreview = uiState.showBackgroundPreview;
var setShowBackgroundPreview = uiState.setShowBackgroundPreview;
var lastBgImage = uiState.lastBgImage;
var setLastBgImage = uiState.setLastBgImage;
var tabIndex = isNotDisabled ? 0 : -1;
var cssClass = formSelectorCommon.getPanelClass(props) + (isNotDisabled ? '' : ' wpforms-gutenberg-panel-disabled');
return /*#__PURE__*/React.createElement(PanelBody, {
className: cssClass,
title: strings.background_styles
}, /*#__PURE__*/React.createElement("div", {
// eslint-disable-line jsx-a11y/no-static-element-interactions
className: "wpforms-gutenberg-form-selector-panel-body",
onClick: function onClick(event) {
if (isNotDisabled) {
return;
}
event.stopPropagation();
if (!isProEnabled) {
return formSelectorCommon.education.showProModal('background', strings.background_styles);
}
formSelectorCommon.education.showLicenseModal('background', strings.background_styles, 'background-styles');
},
onKeyDown: function onKeyDown(event) {
if (isNotDisabled) {
return;
}
event.stopPropagation();
if (!isProEnabled) {
return formSelectorCommon.education.showProModal('background', strings.background_styles);
}
formSelectorCommon.education.showLicenseModal('background', strings.background_styles, 'background-styles');
}
}, /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(SelectControl, {
label: strings.image,
tabIndex: tabIndex,
value: props.attributes.backgroundImage,
options: [{
label: strings.none,
value: 'none'
}, {
label: strings.media_library,
value: 'library'
}, {
label: strings.stock_photo,
value: 'stock'
}],
onChange: function onChange(value) {
return app.setContainerBackgroundImageWrapper(props, handlers, value, lastBgImage, setLastBgImage);
}
})), /*#__PURE__*/React.createElement(FlexBlock, null, (props.attributes.backgroundImage !== 'none' || !isNotDisabled) && /*#__PURE__*/React.createElement(SelectControl, {
label: strings.position,
value: props.attributes.backgroundPosition,
tabIndex: tabIndex,
options: [{
label: strings.top_left,
value: 'top left'
}, {
label: strings.top_center,
value: 'top center'
}, {
label: strings.top_right,
value: 'top right'
}, {
label: strings.center_left,
value: 'center left'
}, {
label: strings.center_center,
value: 'center center'
}, {
label: strings.center_right,
value: 'center right'
}, {
label: strings.bottom_left,
value: 'bottom left'
}, {
label: strings.bottom_center,
value: 'bottom center'
}, {
label: strings.bottom_right,
value: 'bottom right'
}],
disabled: props.attributes.backgroundImage === 'none' && isNotDisabled,
onChange: function onChange(value) {
return handlers.styleAttrChange('backgroundPosition', value);
}
}))), (props.attributes.backgroundImage !== 'none' || !isNotDisabled) && /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(SelectControl, {
label: strings.repeat,
tabIndex: tabIndex,
value: props.attributes.backgroundRepeat,
options: [{
label: strings.no_repeat,
value: 'no-repeat'
}, {
label: strings.tile,
value: 'repeat'
}, {
label: strings.repeat_x,
value: 'repeat-x'
}, {
label: strings.repeat_y,
value: 'repeat-y'
}],
disabled: props.attributes.backgroundImage === 'none' && isNotDisabled,
onChange: function onChange(value) {
return handlers.styleAttrChange('backgroundRepeat', value);
}
})), /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(SelectControl, {
label: strings.size,
tabIndex: tabIndex,
value: props.attributes.backgroundSizeMode,
options: [{
label: strings.dimensions,
value: 'dimensions'
}, {
label: strings.cover,
value: 'cover'
}],
disabled: props.attributes.backgroundImage === 'none' && isNotDisabled,
onChange: function onChange(value) {
return app.handleSizeFromDimensions(props, handlers, value);
}
}))), (props.attributes.backgroundSizeMode === 'dimensions' && props.attributes.backgroundImage !== 'none' || !isNotDisabled) && /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(__experimentalUnitControl, {
label: strings.width,
tabIndex: tabIndex,
value: props.attributes.backgroundWidth,
isUnitSelectTabbable: isNotDisabled,
onChange: function onChange(value) {
return app.handleSizeFromWidth(props, handlers, value);
}
})), /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(__experimentalUnitControl, {
label: strings.height,
tabIndex: tabIndex,
value: props.attributes.backgroundHeight,
isUnitSelectTabbable: isNotDisabled,
onChange: function onChange(value) {
return app.handleSizeFromHeight(props, handlers, value);
}
}))), (!showBackgroundPreview || props.attributes.backgroundUrl === 'url()') && (props.attributes.backgroundImage === 'library' && /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(Button, {
isSecondary: true,
tabIndex: tabIndex,
className: 'wpforms-gutenberg-form-selector-media-library-button',
onClick: app.openMediaLibrary.bind(null, props, handlers, setShowBackgroundPreview)
}, strings.choose_image))) || props.attributes.backgroundImage === 'stock' && /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(Button, {
isSecondary: true,
tabIndex: tabIndex,
className: 'wpforms-gutenberg-form-selector-media-library-button',
onClick: stockPhotos === null || stockPhotos === void 0 ? void 0 : stockPhotos.openModal.bind(null, props, handlers, 'bg-styles', setShowBackgroundPreview)
}, strings.choose_image)))), (showBackgroundPreview && props.attributes.backgroundImage !== 'none' || props.attributes.backgroundUrl !== 'url()') && /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_backgroundPreview.default, {
attributes: props.attributes,
onRemoveBackground: function onRemoveBackground() {
app.onRemoveBackground(setShowBackgroundPreview, handlers, setLastBgImage);
},
onPreviewClicked: function onPreviewClicked() {
if (props.attributes.backgroundImage === 'library') {
return app.openMediaLibrary(props, handlers, setShowBackgroundPreview);
}
return stockPhotos === null || stockPhotos === void 0 ? void 0 : stockPhotos.openModal(props, handlers, 'bg-styles', setShowBackgroundPreview);
}
})), /*#__PURE__*/React.createElement(TextControl, {
label: strings.image_url,
tabIndex: tabIndex,
value: props.attributes.backgroundImage !== 'none' && props.attributes.backgroundUrl,
className: 'wpforms-gutenberg-form-selector-image-url',
onChange: function onChange(value) {
return handlers.styleAttrChange('backgroundUrl', value);
},
onLoad: function onLoad(value) {
return props.attributes.backgroundImage !== 'none' && handlers.styleAttrChange('backgroundUrl', value);
}
}))), /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-control-label"
}, strings.colors), /*#__PURE__*/React.createElement(PanelColorSettings, {
__experimentalIsRenderedInSidebar: true,
enableAlpha: true,
showTitle: false,
tabIndex: tabIndex,
className: "wpforms-gutenberg-form-selector-color-panel",
colorSettings: [{
value: props.attributes.backgroundColor,
onChange: function onChange(value) {
if (!isNotDisabled) {
return;
}
handlers.styleAttrChange('backgroundColor', value);
},
label: strings.background
}]
})))));
},
/**
* Open media library modal and handle image selection.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
* @param {Object} handlers Block handlers.
* @param {Function} setShowBackgroundPreview Set show background preview.
*/
openMediaLibrary: function openMediaLibrary(props, handlers, setShowBackgroundPreview) {
var frame = wp.media({
title: strings.select_background_image,
multiple: false,
library: {
type: 'image'
},
button: {
text: strings.select_image
}
});
frame.on('select', function () {
var attachment = frame.state().get('selection').first().toJSON();
var setAttr = {};
var attribute = 'backgroundUrl';
if (attachment.url) {
var value = "url(".concat(attachment.url, ")");
setAttr[attribute] = value;
props.setAttributes(setAttr);
handlers.styleAttrChange('backgroundUrl', value);
setShowBackgroundPreview(true);
}
});
frame.open();
},
/**
* Set container background image.
*
* @since 1.8.8
*
* @param {HTMLElement} container Container element.
* @param {string} value Value.
*
* @return {boolean} True if the value was set, false otherwise.
*/
setContainerBackgroundImage: function setContainerBackgroundImage(container, value) {
if (value === 'none') {
container.style.setProperty("--wpforms-background-url", 'url()');
}
return true;
},
/**
* Set container background image.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
* @param {Object} handlers Block event handlers.
* @param {string} value Value.
* @param {string} lastBgImage Last background image.
* @param {Function} setLastBgImage Set last background image.
*/
setContainerBackgroundImageWrapper: function setContainerBackgroundImageWrapper(props, handlers, value, lastBgImage, setLastBgImage) {
if (value === 'none') {
setLastBgImage(props.attributes.backgroundUrl);
props.attributes.backgroundUrl = 'url()';
handlers.styleAttrChange('backgroundUrl', 'url()');
} else if (lastBgImage) {
props.attributes.backgroundUrl = lastBgImage;
handlers.styleAttrChange('backgroundUrl', lastBgImage);
}
handlers.styleAttrChange('backgroundImage', value);
},
/**
* Set container background position.
*
* @since 1.8.8
*
* @param {HTMLElement} container Container element.
* @param {string} value Value.
*
* @return {boolean} True if the value was set, false otherwise.
*/
setContainerBackgroundPosition: function setContainerBackgroundPosition(container, value) {
container.style.setProperty("--wpforms-background-position", value);
return true;
},
/**
* Set container background repeat.
*
* @since 1.8.8
*
* @param {HTMLElement} container Container element.
* @param {string} value Value.
*
* @return {boolean} True if the value was set, false otherwise.
*/
setContainerBackgroundRepeat: function setContainerBackgroundRepeat(container, value) {
container.style.setProperty("--wpforms-background-repeat", value);
return true;
},
/**
* Handle real size from dimensions.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
* @param {Object} handlers Block handlers.
* @param {string} value Value.
*/
handleSizeFromDimensions: function handleSizeFromDimensions(props, handlers, value) {
if (value === 'cover') {
props.attributes.backgroundSize = 'cover';
handlers.styleAttrChange('backgroundWidth', props.attributes.backgroundWidth);
handlers.styleAttrChange('backgroundHeight', props.attributes.backgroundHeight);
handlers.styleAttrChange('backgroundSizeMode', 'cover');
handlers.styleAttrChange('backgroundSize', 'cover');
} else {
props.attributes.backgroundSize = 'dimensions';
handlers.styleAttrChange('backgroundSizeMode', 'dimensions');
handlers.styleAttrChange('backgroundSize', props.attributes.backgroundWidth + ' ' + props.attributes.backgroundHeight);
}
},
/**
* Handle real size from width.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
* @param {Object} handlers Block handlers.
* @param {string} value Value.
*/
handleSizeFromWidth: function handleSizeFromWidth(props, handlers, value) {
props.attributes.backgroundSize = value + ' ' + props.attributes.backgroundHeight;
props.attributes.backgroundWidth = value;
handlers.styleAttrChange('backgroundSize', value + ' ' + props.attributes.backgroundHeight);
handlers.styleAttrChange('backgroundWidth', value);
},
/**
* Handle real size from height.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
* @param {Object} handlers Block handlers.
* @param {string} value Value.
*/
handleSizeFromHeight: function handleSizeFromHeight(props, handlers, value) {
props.attributes.backgroundSize = props.attributes.backgroundWidth + ' ' + value;
props.attributes.backgroundHeight = value;
handlers.styleAttrChange('backgroundSize', props.attributes.backgroundWidth + ' ' + value);
handlers.styleAttrChange('backgroundHeight', value);
},
/**
* Set container background width.
*
* @since 1.8.8
*
* @param {HTMLElement} container Container element.
* @param {string} value Value.
*
* @return {boolean} True if the value was set, false otherwise.
*/
setContainerBackgroundWidth: function setContainerBackgroundWidth(container, value) {
container.style.setProperty("--wpforms-background-width", value);
return true;
},
/**
* Set container background height.
*
* @since 1.8.8
*
* @param {HTMLElement} container Container element.
* @param {string} value Value.
*
* @return {boolean} True if the value was set, false otherwise.
*/
setContainerBackgroundHeight: function setContainerBackgroundHeight(container, value) {
container.style.setProperty("--wpforms-background-height", value);
return true;
},
/**
* Set container background url.
*
* @since 1.8.8
*
* @param {HTMLElement} container Container element.
* @param {string} value Value.
*
* @return {boolean} True if the value was set, false otherwise.
*/
setBackgroundUrl: function setBackgroundUrl(container, value) {
container.style.setProperty("--wpforms-background-url", value);
return true;
},
/**
* Set container background color.
*
* @since 1.8.8
*
* @param {HTMLElement} container Container element.
* @param {string} value Value.
*
* @return {boolean} True if the value was set, false otherwise.
*/
setBackgroundColor: function setBackgroundColor(container, value) {
container.style.setProperty("--wpforms-background-color", value);
return true;
},
_showBackgroundPreview: function _showBackgroundPreview(props) {
return props.attributes.backgroundImage !== 'none' && props.attributes.backgroundUrl && props.attributes.backgroundUrl !== 'url()';
},
/**
* Remove background image.
*
* @since 1.8.8
*
* @param {Function} setShowBackgroundPreview Set show background preview.
* @param {Object} handlers Block handlers.
* @param {Function} setLastBgImage Set last background image.
*/
onRemoveBackground: function onRemoveBackground(setShowBackgroundPreview, handlers, setLastBgImage) {
setShowBackgroundPreview(false);
handlers.styleAttrChange('backgroundUrl', 'url()');
setLastBgImage('');
}
};
return app;
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFja2dyb3VuZFByZXZpZXciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIl9yZWYiLCJ3cCIsImJsb2NrRWRpdG9yIiwiZWRpdG9yIiwiUGFuZWxDb2xvclNldHRpbmdzIiwiX3dwJGNvbXBvbmVudHMiLCJjb21wb25lbnRzIiwiU2VsZWN0Q29udHJvbCIsIlBhbmVsQm9keSIsIkZsZXgiLCJGbGV4QmxvY2siLCJfX2V4cGVyaW1lbnRhbFVuaXRDb250cm9sIiwiVGV4dENvbnRyb2wiLCJCdXR0b24iLCJfd3Bmb3Jtc19ndXRlbmJlcmdfZm8iLCJ3cGZvcm1zX2d1dGVuYmVyZ19mb3JtX3NlbGVjdG9yIiwic3RyaW5ncyIsImRlZmF1bHRzIiwiYXBwIiwiZ2V0QmxvY2tBdHRyaWJ1dGVzIiwiYmFja2dyb3VuZEltYWdlIiwidHlwZSIsImJhY2tncm91bmRQb3NpdGlvbiIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kU2l6ZU1vZGUiLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRXaWR0aCIsImJhY2tncm91bmRIZWlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kVXJsIiwiZ2V0QmFja2dyb3VuZFN0eWxlcyIsInByb3BzIiwiaGFuZGxlcnMiLCJmb3JtU2VsZWN0b3JDb21tb24iLCJzdG9ja1Bob3RvcyIsInVpU3RhdGUiLCJpc05vdERpc2FibGVkIiwiaXNQcm9FbmFibGVkIiwic2hvd0JhY2tncm91bmRQcmV2aWV3Iiwic2V0U2hvd0JhY2tncm91bmRQcmV2aWV3IiwibGFzdEJnSW1hZ2UiLCJzZXRMYXN0QmdJbWFnZSIsInRhYkluZGV4IiwiY3NzQ2xhc3MiLCJnZXRQYW5lbENsYXNzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwidGl0bGUiLCJiYWNrZ3JvdW5kX3N0eWxlcyIsIm9uQ2xpY2siLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsImVkdWNhdGlvbiIsInNob3dQcm9Nb2RhbCIsInNob3dMaWNlbnNlTW9kYWwiLCJvbktleURvd24iLCJnYXAiLCJhbGlnbiIsImp1c3RpZnkiLCJsYWJlbCIsImltYWdlIiwidmFsdWUiLCJhdHRyaWJ1dGVzIiwib3B0aW9ucyIsIm5vbmUiLCJtZWRpYV9saWJyYXJ5Iiwic3RvY2tfcGhvdG8iLCJvbkNoYW5nZSIsInNldENvbnRhaW5lckJhY2tncm91bmRJbWFnZVdyYXBwZXIiLCJwb3NpdGlvbiIsInRvcF9sZWZ0IiwidG9wX2NlbnRlciIsInRvcF9yaWdodCIsImNlbnRlcl9sZWZ0IiwiY2VudGVyX2NlbnRlciIsImNlbnRlcl9yaWdodCIsImJvdHRvbV9sZWZ0IiwiYm90dG9tX2NlbnRlciIsImJvdHRvbV9yaWdodCIsImRpc2FibGVkIiwic3R5bGVBdHRyQ2hhbmdlIiwicmVwZWF0Iiwibm9fcmVwZWF0IiwidGlsZSIsInJlcGVhdF94IiwicmVwZWF0X3kiLCJzaXplIiwiZGltZW5zaW9ucyIsImNvdmVyIiwiaGFuZGxlU2l6ZUZyb21EaW1lbnNpb25zIiwid2lkdGgiLCJpc1VuaXRTZWxlY3RUYWJiYWJsZSIsImhhbmRsZVNpemVGcm9tV2lkdGgiLCJoZWlnaHQiLCJoYW5kbGVTaXplRnJvbUhlaWdodCIsImlzU2Vjb25kYXJ5Iiwib3Blbk1lZGlhTGlicmFyeSIsImJpbmQiLCJjaG9vc2VfaW1hZ2UiLCJvcGVuTW9kYWwiLCJvblJlbW92ZUJhY2tncm91bmQiLCJvblByZXZpZXdDbGlja2VkIiwiaW1hZ2VfdXJsIiwib25Mb2FkIiwiY29sb3JzIiwiX19leHBlcmltZW50YWxJc1JlbmRlcmVkSW5TaWRlYmFyIiwiZW5hYmxlQWxwaGEiLCJzaG93VGl0bGUiLCJjb2xvclNldHRpbmdzIiwiYmFja2dyb3VuZCIsImZyYW1lIiwibWVkaWEiLCJzZWxlY3RfYmFja2dyb3VuZF9pbWFnZSIsIm11bHRpcGxlIiwibGlicmFyeSIsImJ1dHRvbiIsInRleHQiLCJzZWxlY3RfaW1hZ2UiLCJvbiIsImF0dGFjaG1lbnQiLCJzdGF0ZSIsImdldCIsImZpcnN0IiwidG9KU09OIiwic2V0QXR0ciIsImF0dHJpYnV0ZSIsInVybCIsImNvbmNhdCIsInNldEF0dHJpYnV0ZXMiLCJvcGVuIiwic2V0Q29udGFpbmVyQmFja2dyb3VuZEltYWdlIiwiY29udGFpbmVyIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsInNldENvbnRhaW5lckJhY2tncm91bmRQb3NpdGlvbiIsInNldENvbnRhaW5lckJhY2tncm91bmRSZXBlYXQiLCJzZXRDb250YWluZXJCYWNrZ3JvdW5kV2lkdGgiLCJzZXRDb250YWluZXJCYWNrZ3JvdW5kSGVpZ2h0Iiwic2V0QmFja2dyb3VuZFVybCIsInNldEJhY2tncm91bmRDb2xvciIsIl9zaG93QmFja2dyb3VuZFByZXZpZXciXSwic291cmNlcyI6WyJiYWNrZ3JvdW5kLXN0eWxlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgd3Bmb3Jtc19ndXRlbmJlcmdfZm9ybV9zZWxlY3RvciAqL1xuLyoganNoaW50IGVzMzogZmFsc2UsIGVzdmVyc2lvbjogNiAqL1xuXG5pbXBvcnQgQmFja2dyb3VuZFByZXZpZXcgZnJvbSAnLi9iYWNrZ3JvdW5kLXByZXZpZXcuanMnO1xuXG4vKipcbiAqIEBwYXJhbSBzdHJpbmdzLmJhY2tncm91bmRfc3R5bGVzXG4gKiBAcGFyYW0gc3RyaW5ncy5ib3R0b21fY2VudGVyXG4gKiBAcGFyYW0gc3RyaW5ncy5ib3R0b21fbGVmdFxuICogQHBhcmFtIHN0cmluZ3MuYm90dG9tX3JpZ2h0XG4gKiBAcGFyYW0gc3RyaW5ncy5jZW50ZXJfY2VudGVyXG4gKiBAcGFyYW0gc3RyaW5ncy5jZW50ZXJfbGVmdFxuICogQHBhcmFtIHN0cmluZ3MuY2VudGVyX3JpZ2h0XG4gKiBAcGFyYW0gc3RyaW5ncy5jaG9vc2VfaW1hZ2VcbiAqIEBwYXJhbSBzdHJpbmdzLmltYWdlX3VybFxuICogQHBhcmFtIHN0cmluZ3MubWVkaWFfbGlicmFyeVxuICogQHBhcmFtIHN0cmluZ3Mubm9fcmVwZWF0XG4gKiBAcGFyYW0gc3RyaW5ncy5yZXBlYXRfeFxuICogQHBhcmFtIHN0cmluZ3MucmVwZWF0X3lcbiAqIEBwYXJhbSBzdHJpbmdzLnNlbGVjdF9iYWNrZ3JvdW5kX2ltYWdlXG4gKiBAcGFyYW0gc3RyaW5ncy5zZWxlY3RfaW1hZ2VcbiAqIEBwYXJhbSBzdHJpbmdzLnN0b2NrX3Bob3RvXG4gKiBAcGFyYW0gc3RyaW5ncy50aWxlXG4gKiBAcGFyYW0gc3RyaW5ncy50b3BfY2VudGVyXG4gKiBAcGFyYW0gc3RyaW5ncy50b3BfbGVmdFxuICogQHBhcmFtIHN0cmluZ3MudG9wX3JpZ2h0XG4gKi9cblxuLyoqXG4gKiBHdXRlbmJlcmcgZWRpdG9yIGJsb2NrLlxuICpcbiAqIEJhY2tncm91bmQgc3R5bGVzIHBhbmVsIG1vZHVsZS5cbiAqXG4gKiBAc2luY2UgMS44LjhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKCBmdW5jdGlvbigpIHtcblx0LyoqXG5cdCAqIFdQIGNvcmUgY29tcG9uZW50cy5cblx0ICpcblx0ICogQHNpbmNlIDEuOC44XG5cdCAqL1xuXHRjb25zdCB7IFBhbmVsQ29sb3JTZXR0aW5ncyB9ID0gd3AuYmxvY2tFZGl0b3IgfHwgd3AuZWRpdG9yO1xuXHRjb25zdCB7IFNlbGVjdENvbnRyb2wsIFBhbmVsQm9keSwgRmxleCwgRmxleEJsb2NrLCBfX2V4cGVyaW1lbnRhbFVuaXRDb250cm9sLCBUZXh0Q29udHJvbCwgQnV0dG9uIH0gPSB3cC5jb21wb25lbnRzO1xuXG5cdC8qKlxuXHQgKiBMb2NhbGl6ZWQgZGF0YSBhbGlhc2VzLlxuXHQgKlxuXHQgKiBAc2luY2UgMS44Ljhcblx0ICovXG5cdGNvbnN0IHsgc3RyaW5ncywgZGVmYXVsdHMgfSA9IHdwZm9ybXNfZ3V0ZW5iZXJnX2Zvcm1fc2VsZWN0b3I7XG5cblx0LyoqXG5cdCAqIFB1YmxpYyBmdW5jdGlvbnMgYW5kIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBzaW5jZSAxLjguOFxuXHQgKlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0Y29uc3QgYXBwID0ge1xuXG5cdFx0LyoqXG5cdFx0ICogR2V0IGJsb2NrIGF0dHJpYnV0ZXMuXG5cdFx0ICpcblx0XHQgKiBAc2luY2UgMS44Ljhcblx0XHQgKlxuXHRcdCAqIEByZXR1cm4ge09iamVjdH0gQmxvY2sgYXR0cmlidXRlcy5cblx0XHQgKi9cblx0XHRnZXRCbG9ja0F0dHJpYnV0ZXMoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kSW1hZ2U6IHtcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0XHRkZWZhdWx0OiBkZWZhdWx0cy5iYWNrZ3JvdW5kSW1hZ2UsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGJhY2tncm91bmRQb3NpdGlvbjoge1xuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHRcdGRlZmF1bHQ6IGRlZmF1bHRzLmJhY2tncm91bmRQb3NpdGlvbixcblx0XHRcdFx0fSxcblx0XHRcdFx0YmFja2dyb3VuZFJlcGVhdDoge1xuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHRcdGRlZmF1bHQ6IGRlZmF1bHRzLmJhY2tncm91bmRSZXBlYXQsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGJhY2tncm91bmRTaXplTW9kZToge1xuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHRcdGRlZmF1bHQ6IGRlZmF1bHRzLmJhY2tncm91bmRTaXplTW9kZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0YmFja2dyb3VuZFNpemU6IHtcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0XHRkZWZhdWx0OiBkZWZhdWx0cy5iYWNrZ3JvdW5kU2l6ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0YmFja2dyb3VuZFdpZHRoOiB7XG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdFx0ZGVmYXVsdDogZGVmYXVsdHMuYmFja2dyb3VuZFdpZHRoLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRiYWNrZ3JvdW5kSGVpZ2h0OiB7XG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdFx0ZGVmYXVsdDogZGVmYXVsdHMuYmFja2dyb3VuZEhlaWdodCxcblx0XHRcdFx0fSxcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiB7XG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdFx0ZGVmYXVsdDogZGVmYXVsdHMuYmFja2dyb3VuZENvbG9yLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRiYWNrZ3JvdW5kVXJsOiB7XG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdFx0ZGVmYXVsdDogZGVmYXVsdHMuYmFja2dyb3VuZFVybCxcblx0XHRcdFx0fSxcblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEdldCBCYWNrZ3JvdW5kIFN0eWxlcyBwYW5lbCBKU1ggY29kZS5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IHByb3BzICAgICAgICAgICAgICBCbG9jayBwcm9wZXJ0aWVzLlxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBoYW5kbGVycyAgICAgICAgICAgQmxvY2sgaGFuZGxlcnMuXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGZvcm1TZWxlY3RvckNvbW1vbiBCbG9jayBwcm9wZXJ0aWVzLlxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBzdG9ja1Bob3RvcyAgICAgICAgU3RvY2sgUGhvdG9zIG1vZHVsZS5cblx0XHQgKiBAcGFyYW0ge09iamVjdH0gdWlTdGF0ZSAgICAgICAgICAgIFVJIHN0YXRlLlxuXHRcdCAqXG5cdFx0ICogQHJldHVybiB7T2JqZWN0fSBGaWVsZCBzdHlsZXMgSlNYIGNvZGUuXG5cdFx0ICovXG5cdFx0Z2V0QmFja2dyb3VuZFN0eWxlcyggcHJvcHMsIGhhbmRsZXJzLCBmb3JtU2VsZWN0b3JDb21tb24sIHN0b2NrUGhvdG9zLCB1aVN0YXRlICkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1saW5lcy1wZXItZnVuY3Rpb24sIGNvbXBsZXhpdHlcblx0XHRcdGNvbnN0IGlzTm90RGlzYWJsZWQgPSB1aVN0YXRlLmlzTm90RGlzYWJsZWQ7XG5cdFx0XHRjb25zdCBpc1Byb0VuYWJsZWQgPSB1aVN0YXRlLmlzUHJvRW5hYmxlZDtcblx0XHRcdGNvbnN0IHNob3dCYWNrZ3JvdW5kUHJldmlldyA9IHVpU3RhdGUuc2hvd0JhY2tncm91bmRQcmV2aWV3O1xuXHRcdFx0Y29uc3Qgc2V0U2hvd0JhY2tncm91bmRQcmV2aWV3ID0gdWlTdGF0ZS5zZXRTaG93QmFja2dyb3VuZFByZXZpZXc7XG5cdFx0XHRjb25zdCBsYXN0QmdJbWFnZSA9IHVpU3RhdGUubGFzdEJnSW1hZ2U7XG5cdFx0XHRjb25zdCBzZXRMYXN0QmdJbWFnZSA9IHVpU3RhdGUuc2V0TGFzdEJnSW1hZ2U7XG5cdFx0XHRjb25zdCB0YWJJbmRleCA9IGlzTm90RGlzYWJsZWQgPyAwIDogLTE7XG5cdFx0XHRjb25zdCBjc3NDbGFzcyA9IGZvcm1TZWxlY3RvckNvbW1vbi5nZXRQYW5lbENsYXNzKCBwcm9wcyApICsgKCBpc05vdERpc2FibGVkID8gJycgOiAnIHdwZm9ybXMtZ3V0ZW5iZXJnLXBhbmVsLWRpc2FibGVkJyApO1xuXG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8UGFuZWxCb2R5IGNsYXNzTmFtZT17IGNzc0NsYXNzIH0gdGl0bGU9eyBzdHJpbmdzLmJhY2tncm91bmRfc3R5bGVzIH0+XG5cdFx0XHRcdFx0PGRpdiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwid3Bmb3Jtcy1ndXRlbmJlcmctZm9ybS1zZWxlY3Rvci1wYW5lbC1ib2R5XCJcblx0XHRcdFx0XHRcdG9uQ2xpY2s9eyAoIGV2ZW50ICkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoIGlzTm90RGlzYWJsZWQgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCAhIGlzUHJvRW5hYmxlZCApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZm9ybVNlbGVjdG9yQ29tbW9uLmVkdWNhdGlvbi5zaG93UHJvTW9kYWwoICdiYWNrZ3JvdW5kJywgc3RyaW5ncy5iYWNrZ3JvdW5kX3N0eWxlcyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Zm9ybVNlbGVjdG9yQ29tbW9uLmVkdWNhdGlvbi5zaG93TGljZW5zZU1vZGFsKCAnYmFja2dyb3VuZCcsIHN0cmluZ3MuYmFja2dyb3VuZF9zdHlsZXMsICdiYWNrZ3JvdW5kLXN0eWxlcycgKTtcblx0XHRcdFx0XHRcdH0gfVxuXHRcdFx0XHRcdFx0b25LZXlEb3duPXsgKCBldmVudCApID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKCBpc05vdERpc2FibGVkICkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICggISBpc1Byb0VuYWJsZWQgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZvcm1TZWxlY3RvckNvbW1vbi5lZHVjYXRpb24uc2hvd1Byb01vZGFsKCAnYmFja2dyb3VuZCcsIHN0cmluZ3MuYmFja2dyb3VuZF9zdHlsZXMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGZvcm1TZWxlY3RvckNvbW1vbi5lZHVjYXRpb24uc2hvd0xpY2Vuc2VNb2RhbCggJ2JhY2tncm91bmQnLCBzdHJpbmdzLmJhY2tncm91bmRfc3R5bGVzLCAnYmFja2dyb3VuZC1zdHlsZXMnICk7XG5cdFx0XHRcdFx0XHR9IH1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8RmxleCBnYXA9eyA0IH0gYWxpZ249XCJmbGV4LXN0YXJ0XCIgY2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItZmxleCcgfSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuXHRcdFx0XHRcdFx0XHQ8RmxleEJsb2NrPlxuXHRcdFx0XHRcdFx0XHRcdDxTZWxlY3RDb250cm9sXG5cdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17IHN0cmluZ3MuaW1hZ2UgfVxuXHRcdFx0XHRcdFx0XHRcdFx0dGFiSW5kZXg9eyB0YWJJbmRleCB9XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEltYWdlIH1cblx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM9eyBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgbGFiZWw6IHN0cmluZ3Mubm9uZSwgdmFsdWU6ICdub25lJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLm1lZGlhX2xpYnJhcnksIHZhbHVlOiAnbGlicmFyeScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogc3RyaW5ncy5zdG9ja19waG90bywgdmFsdWU6ICdzdG9jaycgfSxcblx0XHRcdFx0XHRcdFx0XHRcdF0gfVxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gYXBwLnNldENvbnRhaW5lckJhY2tncm91bmRJbWFnZVdyYXBwZXIoIHByb3BzLCBoYW5kbGVycywgdmFsdWUsIGxhc3RCZ0ltYWdlLCBzZXRMYXN0QmdJbWFnZSApIH1cblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHQ8L0ZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0PEZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0XHR7ICggcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kSW1hZ2UgIT09ICdub25lJyB8fCAhIGlzTm90RGlzYWJsZWQgKSAmJiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQ8U2VsZWN0Q29udHJvbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17IHN0cmluZ3MucG9zaXRpb24gfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZFBvc2l0aW9uIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGFiSW5kZXg9eyB0YWJJbmRleCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM9eyBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogc3RyaW5ncy50b3BfbGVmdCwgdmFsdWU6ICd0b3AgbGVmdCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLnRvcF9jZW50ZXIsIHZhbHVlOiAndG9wIGNlbnRlcicgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLnRvcF9yaWdodCwgdmFsdWU6ICd0b3AgcmlnaHQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogc3RyaW5ncy5jZW50ZXJfbGVmdCwgdmFsdWU6ICdjZW50ZXIgbGVmdCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLmNlbnRlcl9jZW50ZXIsIHZhbHVlOiAnY2VudGVyIGNlbnRlcicgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLmNlbnRlcl9yaWdodCwgdmFsdWU6ICdjZW50ZXIgcmlnaHQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogc3RyaW5ncy5ib3R0b21fbGVmdCwgdmFsdWU6ICdib3R0b20gbGVmdCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLmJvdHRvbV9jZW50ZXIsIHZhbHVlOiAnYm90dG9tIGNlbnRlcicgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLmJvdHRvbV9yaWdodCwgdmFsdWU6ICdib3R0b20gcmlnaHQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdF0gfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17ICggcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kSW1hZ2UgPT09ICdub25lJyAmJiBpc05vdERpc2FibGVkICkgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdiYWNrZ3JvdW5kUG9zaXRpb24nLCB2YWx1ZSApIH1cblx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0KSB9XG5cdFx0XHRcdFx0XHRcdDwvRmxleEJsb2NrPlxuXHRcdFx0XHRcdFx0PC9GbGV4PlxuXHRcdFx0XHRcdFx0eyAoIHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEltYWdlICE9PSAnbm9uZScgfHwgISBpc05vdERpc2FibGVkICkgJiYgKFxuXHRcdFx0XHRcdFx0XHQ8RmxleCBnYXA9eyA0IH0gYWxpZ249XCJmbGV4LXN0YXJ0XCIgY2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItZmxleCcgfSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuXHRcdFx0XHRcdFx0XHRcdDxGbGV4QmxvY2s+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8U2VsZWN0Q29udHJvbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17IHN0cmluZ3MucmVwZWF0IH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGFiSW5kZXg9eyB0YWJJbmRleCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXsgcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kUmVwZWF0IH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0b3B0aW9ucz17IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLm5vX3JlcGVhdCwgdmFsdWU6ICduby1yZXBlYXQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogc3RyaW5ncy50aWxlLCB2YWx1ZTogJ3JlcGVhdCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLnJlcGVhdF94LCB2YWx1ZTogJ3JlcGVhdC14JyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsgbGFiZWw6IHN0cmluZ3MucmVwZWF0X3ksIHZhbHVlOiAncmVwZWF0LXknIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdF0gfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17ICggcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kSW1hZ2UgPT09ICdub25lJyAmJiBpc05vdERpc2FibGVkICkgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdiYWNrZ3JvdW5kUmVwZWF0JywgdmFsdWUgKSB9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdDwvRmxleEJsb2NrPlxuXHRcdFx0XHRcdFx0XHRcdDxGbGV4QmxvY2s+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8U2VsZWN0Q29udHJvbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17IHN0cmluZ3Muc2l6ZSB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRhYkluZGV4PXsgdGFiSW5kZXggfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZFNpemVNb2RlIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0b3B0aW9ucz17IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLmRpbWVuc2lvbnMsIHZhbHVlOiAnZGltZW5zaW9ucycgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLmNvdmVyLCB2YWx1ZTogJ2NvdmVyJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9eyAoIHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEltYWdlID09PSAnbm9uZScgJiYgaXNOb3REaXNhYmxlZCApIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gYXBwLmhhbmRsZVNpemVGcm9tRGltZW5zaW9ucyggcHJvcHMsIGhhbmRsZXJzLCB2YWx1ZSApIH1cblx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0PC9GbGV4QmxvY2s+XG5cdFx0XHRcdFx0XHRcdDwvRmxleD5cblx0XHRcdFx0XHRcdCkgfVxuXHRcdFx0XHRcdFx0eyAoICggcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kU2l6ZU1vZGUgPT09ICdkaW1lbnNpb25zJyAmJiBwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRJbWFnZSAhPT0gJ25vbmUnICkgfHwgISBpc05vdERpc2FibGVkICkgJiYgKFxuXHRcdFx0XHRcdFx0XHQ8RmxleCBnYXA9eyA0IH0gYWxpZ249XCJmbGV4LXN0YXJ0XCIgY2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItZmxleCcgfSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuXHRcdFx0XHRcdFx0XHRcdDxGbGV4QmxvY2s+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8X19leHBlcmltZW50YWxVbml0Q29udHJvbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17IHN0cmluZ3Mud2lkdGggfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0YWJJbmRleD17IHRhYkluZGV4IH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9eyBwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRXaWR0aCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlzVW5pdFNlbGVjdFRhYmJhYmxlPXsgaXNOb3REaXNhYmxlZCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IGFwcC5oYW5kbGVTaXplRnJvbVdpZHRoKCBwcm9wcywgaGFuZGxlcnMsIHZhbHVlICkgfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0XHQ8RmxleEJsb2NrPlxuXHRcdFx0XHRcdFx0XHRcdFx0PF9fZXhwZXJpbWVudGFsVW5pdENvbnRyb2xcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw9eyBzdHJpbmdzLmhlaWdodCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRhYkluZGV4PXsgdGFiSW5kZXggfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEhlaWdodCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlzVW5pdFNlbGVjdFRhYmJhYmxlPXsgaXNOb3REaXNhYmxlZCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IGFwcC5oYW5kbGVTaXplRnJvbUhlaWdodCggcHJvcHMsIGhhbmRsZXJzLCB2YWx1ZSApIH1cblx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0PC9GbGV4QmxvY2s+XG5cdFx0XHRcdFx0XHRcdDwvRmxleD5cblx0XHRcdFx0XHRcdCkgfVxuXHRcdFx0XHRcdFx0eyAoICEgc2hvd0JhY2tncm91bmRQcmV2aWV3IHx8IHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZFVybCA9PT0gJ3VybCgpJyApICYmIChcblx0XHRcdFx0XHRcdFx0KCBwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRJbWFnZSA9PT0gJ2xpYnJhcnknICYmIChcblx0XHRcdFx0XHRcdFx0XHQ8RmxleCBnYXA9eyA0IH0gYWxpZ249XCJmbGV4LXN0YXJ0XCIgY2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItZmxleCcgfSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlzU2Vjb25kYXJ5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFiSW5kZXg9eyB0YWJJbmRleCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItbWVkaWEtbGlicmFyeS1idXR0b24nIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrPXsgYXBwLm9wZW5NZWRpYUxpYnJhcnkuYmluZCggbnVsbCwgcHJvcHMsIGhhbmRsZXJzLCBzZXRTaG93QmFja2dyb3VuZFByZXZpZXcgKSB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IHN0cmluZ3MuY2hvb3NlX2ltYWdlIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9CdXR0b24+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXg+XG5cdFx0XHRcdFx0XHRcdCkgKSB8fCAoIHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEltYWdlID09PSAnc3RvY2snICYmIChcblx0XHRcdFx0XHRcdFx0XHQ8RmxleCBnYXA9eyA0IH0gYWxpZ249XCJmbGV4LXN0YXJ0XCIgY2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItZmxleCcgfSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlzU2Vjb25kYXJ5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFiSW5kZXg9eyB0YWJJbmRleCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItbWVkaWEtbGlicmFyeS1idXR0b24nIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrPXsgc3RvY2tQaG90b3M/Lm9wZW5Nb2RhbC5iaW5kKCBudWxsLCBwcm9wcywgaGFuZGxlcnMsICdiZy1zdHlsZXMnLCBzZXRTaG93QmFja2dyb3VuZFByZXZpZXcgKSB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IHN0cmluZ3MuY2hvb3NlX2ltYWdlIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9CdXR0b24+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXg+XG5cdFx0XHRcdFx0XHRcdCkgKVxuXHRcdFx0XHRcdFx0KSB9XG5cdFx0XHRcdFx0XHR7ICggKCBzaG93QmFja2dyb3VuZFByZXZpZXcgJiYgcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kSW1hZ2UgIT09ICdub25lJyApIHx8IHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZFVybCAhPT0gJ3VybCgpJyApICYmIChcblx0XHRcdFx0XHRcdFx0PEZsZXggZ2FwPXsgNCB9IGFsaWduPVwiZmxleC1zdGFydFwiIGNsYXNzTmFtZT17ICd3cGZvcm1zLWd1dGVuYmVyZy1mb3JtLXNlbGVjdG9yLWZsZXgnIH0ganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIj5cblx0XHRcdFx0XHRcdFx0XHQ8RmxleEJsb2NrPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PEJhY2tncm91bmRQcmV2aWV3XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cmlidXRlcz17IHByb3BzLmF0dHJpYnV0ZXMgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uUmVtb3ZlQmFja2dyb3VuZD17XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFwcC5vblJlbW92ZUJhY2tncm91bmQoIHNldFNob3dCYWNrZ3JvdW5kUHJldmlldywgaGFuZGxlcnMsIHNldExhc3RCZ0ltYWdlICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uUHJldmlld0NsaWNrZWQ9eyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEltYWdlID09PSAnbGlicmFyeScgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcHAub3Blbk1lZGlhTGlicmFyeSggcHJvcHMsIGhhbmRsZXJzLCBzZXRTaG93QmFja2dyb3VuZFByZXZpZXcgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHN0b2NrUGhvdG9zPy5vcGVuTW9kYWwoIHByb3BzLCBoYW5kbGVycywgJ2JnLXN0eWxlcycsIHNldFNob3dCYWNrZ3JvdW5kUHJldmlldyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dENvbnRyb2xcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw9eyBzdHJpbmdzLmltYWdlX3VybCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRhYkluZGV4PXsgdGFiSW5kZXggfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEltYWdlICE9PSAnbm9uZScgJiYgcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kVXJsIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItaW1hZ2UtdXJsJyB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IGhhbmRsZXJzLnN0eWxlQXR0ckNoYW5nZSggJ2JhY2tncm91bmRVcmwnLCB2YWx1ZSApIH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0b25Mb2FkPXsgKCB2YWx1ZSApID0+IHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEltYWdlICE9PSAnbm9uZScgJiYgaGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYmFja2dyb3VuZFVybCcsIHZhbHVlICkgfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0PC9GbGV4PlxuXHRcdFx0XHRcdFx0KSB9XG5cdFx0XHRcdFx0XHQ8RmxleCBnYXA9eyA0IH0gYWxpZ249XCJmbGV4LXN0YXJ0XCIgY2xhc3NOYW1lPXsgJ3dwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItZmxleCcgfSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuXHRcdFx0XHRcdFx0XHQ8RmxleEJsb2NrPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwid3Bmb3Jtcy1ndXRlbmJlcmctZm9ybS1zZWxlY3Rvci1jb250cm9sLWxhYmVsXCI+eyBzdHJpbmdzLmNvbG9ycyB9PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0PFBhbmVsQ29sb3JTZXR0aW5nc1xuXHRcdFx0XHRcdFx0XHRcdFx0X19leHBlcmltZW50YWxJc1JlbmRlcmVkSW5TaWRlYmFyXG5cdFx0XHRcdFx0XHRcdFx0XHRlbmFibGVBbHBoYVxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd1RpdGxlPXsgZmFsc2UgfVxuXHRcdFx0XHRcdFx0XHRcdFx0dGFiSW5kZXg9eyB0YWJJbmRleCB9XG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJ3cGZvcm1zLWd1dGVuYmVyZy1mb3JtLXNlbGVjdG9yLWNvbG9yLXBhbmVsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbG9yU2V0dGluZ3M9eyBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6ICggdmFsdWUgKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoICEgaXNOb3REaXNhYmxlZCApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdiYWNrZ3JvdW5kQ29sb3InLCB2YWx1ZSApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHN0cmluZ3MuYmFja2dyb3VuZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdF0gfVxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDwvRmxleEJsb2NrPlxuXHRcdFx0XHRcdFx0PC9GbGV4PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L1BhbmVsQm9keT5cblx0XHRcdCk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIE9wZW4gbWVkaWEgbGlicmFyeSBtb2RhbCBhbmQgaGFuZGxlIGltYWdlIHNlbGVjdGlvbi5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9ICAgcHJvcHMgICAgICAgICAgICAgICAgICAgIEJsb2NrIHByb3BlcnRpZXMuXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9ICAgaGFuZGxlcnMgICAgICAgICAgICAgICAgIEJsb2NrIGhhbmRsZXJzLlxuXHRcdCAqIEBwYXJhbSB7RnVuY3Rpb259IHNldFNob3dCYWNrZ3JvdW5kUHJldmlldyBTZXQgc2hvdyBiYWNrZ3JvdW5kIHByZXZpZXcuXG5cdFx0ICovXG5cdFx0b3Blbk1lZGlhTGlicmFyeSggcHJvcHMsIGhhbmRsZXJzLCBzZXRTaG93QmFja2dyb3VuZFByZXZpZXcgKSB7XG5cdFx0XHRjb25zdCBmcmFtZSA9IHdwLm1lZGlhKCB7XG5cdFx0XHRcdHRpdGxlOiBzdHJpbmdzLnNlbGVjdF9iYWNrZ3JvdW5kX2ltYWdlLFxuXHRcdFx0XHRtdWx0aXBsZTogZmFsc2UsXG5cdFx0XHRcdGxpYnJhcnk6IHtcblx0XHRcdFx0XHR0eXBlOiAnaW1hZ2UnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRidXR0b246IHtcblx0XHRcdFx0XHR0ZXh0OiBzdHJpbmdzLnNlbGVjdF9pbWFnZSxcblx0XHRcdFx0fSxcblx0XHRcdH0gKTtcblxuXHRcdFx0ZnJhbWUub24oICdzZWxlY3QnLCAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBmcmFtZS5zdGF0ZSgpLmdldCggJ3NlbGVjdGlvbicgKS5maXJzdCgpLnRvSlNPTigpO1xuXHRcdFx0XHRjb25zdCBzZXRBdHRyID0ge307XG5cdFx0XHRcdGNvbnN0IGF0dHJpYnV0ZSA9ICdiYWNrZ3JvdW5kVXJsJztcblxuXHRcdFx0XHRpZiAoIGF0dGFjaG1lbnQudXJsICkge1xuXHRcdFx0XHRcdGNvbnN0IHZhbHVlID0gYHVybCgkeyBhdHRhY2htZW50LnVybCB9KWA7XG5cblx0XHRcdFx0XHRzZXRBdHRyWyBhdHRyaWJ1dGUgXSA9IHZhbHVlO1xuXG5cdFx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyggc2V0QXR0ciApO1xuXG5cdFx0XHRcdFx0aGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYmFja2dyb3VuZFVybCcsIHZhbHVlICk7XG5cblx0XHRcdFx0XHRzZXRTaG93QmFja2dyb3VuZFByZXZpZXcoIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXG5cdFx0XHRmcmFtZS5vcGVuKCk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNldCBjb250YWluZXIgYmFja2dyb3VuZCBpbWFnZS5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyIENvbnRhaW5lciBlbGVtZW50LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSAgICAgIHZhbHVlICAgICBWYWx1ZS5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIHdhcyBzZXQsIGZhbHNlIG90aGVyd2lzZS5cblx0XHQgKi9cblx0XHRzZXRDb250YWluZXJCYWNrZ3JvdW5kSW1hZ2UoIGNvbnRhaW5lciwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAnbm9uZScgKSB7XG5cdFx0XHRcdGNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eSggYC0td3Bmb3Jtcy1iYWNrZ3JvdW5kLXVybGAsICd1cmwoKScgKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNldCBjb250YWluZXIgYmFja2dyb3VuZCBpbWFnZS5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9ICAgcHJvcHMgICAgICAgICAgQmxvY2sgcHJvcGVydGllcy5cblx0XHQgKiBAcGFyYW0ge09iamVjdH0gICBoYW5kbGVycyAgICAgICBCbG9jayBldmVudCBoYW5kbGVycy5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gICB2YWx1ZSAgICAgICAgICBWYWx1ZS5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gICBsYXN0QmdJbWFnZSAgICBMYXN0IGJhY2tncm91bmQgaW1hZ2UuXG5cdFx0ICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0TGFzdEJnSW1hZ2UgU2V0IGxhc3QgYmFja2dyb3VuZCBpbWFnZS5cblx0XHQgKi9cblx0XHRzZXRDb250YWluZXJCYWNrZ3JvdW5kSW1hZ2VXcmFwcGVyKCBwcm9wcywgaGFuZGxlcnMsIHZhbHVlLCBsYXN0QmdJbWFnZSwgc2V0TGFzdEJnSW1hZ2UgKSB7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAnbm9uZScgKSB7XG5cdFx0XHRcdHNldExhc3RCZ0ltYWdlKCBwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRVcmwgKTtcblx0XHRcdFx0cHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kVXJsID0gJ3VybCgpJztcblxuXHRcdFx0XHRoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdiYWNrZ3JvdW5kVXJsJywgJ3VybCgpJyApO1xuXHRcdFx0fSBlbHNlIGlmICggbGFzdEJnSW1hZ2UgKSB7XG5cdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZFVybCA9IGxhc3RCZ0ltYWdlO1xuXHRcdFx0XHRoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdiYWNrZ3JvdW5kVXJsJywgbGFzdEJnSW1hZ2UgKTtcblx0XHRcdH1cblxuXHRcdFx0aGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYmFja2dyb3VuZEltYWdlJywgdmFsdWUgKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IGNvbnRhaW5lciBiYWNrZ3JvdW5kIHBvc2l0aW9uLlxuXHRcdCAqXG5cdFx0ICogQHNpbmNlIDEuOC44XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBjb250YWluZXIgQ29udGFpbmVyIGVsZW1lbnQuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9ICAgICAgdmFsdWUgICAgIFZhbHVlLlxuXHRcdCAqXG5cdFx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgd2FzIHNldCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHRcdCAqL1xuXHRcdHNldENvbnRhaW5lckJhY2tncm91bmRQb3NpdGlvbiggY29udGFpbmVyLCB2YWx1ZSApIHtcblx0XHRcdGNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eSggYC0td3Bmb3Jtcy1iYWNrZ3JvdW5kLXBvc2l0aW9uYCwgdmFsdWUgKTtcblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNldCBjb250YWluZXIgYmFja2dyb3VuZCByZXBlYXQuXG5cdFx0ICpcblx0XHQgKiBAc2luY2UgMS44Ljhcblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRhaW5lciBDb250YWluZXIgZWxlbWVudC5cblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gICAgICB2YWx1ZSAgICAgVmFsdWUuXG5cdFx0ICpcblx0XHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSB3YXMgc2V0LCBmYWxzZSBvdGhlcndpc2UuXG5cdFx0ICovXG5cdFx0c2V0Q29udGFpbmVyQmFja2dyb3VuZFJlcGVhdCggY29udGFpbmVyLCB2YWx1ZSApIHtcblx0XHRcdGNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eSggYC0td3Bmb3Jtcy1iYWNrZ3JvdW5kLXJlcGVhdGAsIHZhbHVlICk7XG5cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBIYW5kbGUgcmVhbCBzaXplIGZyb20gZGltZW5zaW9ucy5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IHByb3BzICAgIEJsb2NrIHByb3BlcnRpZXMuXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGhhbmRsZXJzIEJsb2NrIGhhbmRsZXJzLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAgICBWYWx1ZS5cblx0XHQgKi9cblx0XHRoYW5kbGVTaXplRnJvbURpbWVuc2lvbnMoIHByb3BzLCBoYW5kbGVycywgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIHZhbHVlID09PSAnY292ZXInICkge1xuXHRcdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRTaXplID0gJ2NvdmVyJztcblxuXHRcdFx0XHRoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdiYWNrZ3JvdW5kV2lkdGgnLCBwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRXaWR0aCApO1xuXHRcdFx0XHRoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdiYWNrZ3JvdW5kSGVpZ2h0JywgcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kSGVpZ2h0ICk7XG5cdFx0XHRcdGhhbmRsZXJzLnN0eWxlQXR0ckNoYW5nZSggJ2JhY2tncm91bmRTaXplTW9kZScsICdjb3ZlcicgKTtcblx0XHRcdFx0aGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYmFja2dyb3VuZFNpemUnLCAnY292ZXInICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRTaXplID0gJ2RpbWVuc2lvbnMnO1xuXG5cdFx0XHRcdGhhbmRsZXJzLnN0eWxlQXR0ckNoYW5nZSggJ2JhY2tncm91bmRTaXplTW9kZScsICdkaW1lbnNpb25zJyApO1xuXHRcdFx0XHRoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdiYWNrZ3JvdW5kU2l6ZScsIHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZFdpZHRoICsgJyAnICsgcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kSGVpZ2h0ICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEhhbmRsZSByZWFsIHNpemUgZnJvbSB3aWR0aC5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IHByb3BzICAgIEJsb2NrIHByb3BlcnRpZXMuXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGhhbmRsZXJzIEJsb2NrIGhhbmRsZXJzLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAgICBWYWx1ZS5cblx0XHQgKi9cblx0XHRoYW5kbGVTaXplRnJvbVdpZHRoKCBwcm9wcywgaGFuZGxlcnMsIHZhbHVlICkge1xuXHRcdFx0cHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kU2l6ZSA9IHZhbHVlICsgJyAnICsgcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kSGVpZ2h0O1xuXHRcdFx0cHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kV2lkdGggPSB2YWx1ZTtcblxuXHRcdFx0aGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYmFja2dyb3VuZFNpemUnLCB2YWx1ZSArICcgJyArIHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZEhlaWdodCApO1xuXHRcdFx0aGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYmFja2dyb3VuZFdpZHRoJywgdmFsdWUgKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogSGFuZGxlIHJlYWwgc2l6ZSBmcm9tIGhlaWdodC5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IHByb3BzICAgIEJsb2NrIHByb3BlcnRpZXMuXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGhhbmRsZXJzIEJsb2NrIGhhbmRsZXJzLlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAgICBWYWx1ZS5cblx0XHQgKi9cblx0XHRoYW5kbGVTaXplRnJvbUhlaWdodCggcHJvcHMsIGhhbmRsZXJzLCB2YWx1ZSApIHtcblx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZFNpemUgPSBwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRXaWR0aCArICcgJyArIHZhbHVlO1xuXHRcdFx0cHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kSGVpZ2h0ID0gdmFsdWU7XG5cblx0XHRcdGhhbmRsZXJzLnN0eWxlQXR0ckNoYW5nZSggJ2JhY2tncm91bmRTaXplJywgcHJvcHMuYXR0cmlidXRlcy5iYWNrZ3JvdW5kV2lkdGggKyAnICcgKyB2YWx1ZSApO1xuXHRcdFx0aGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYmFja2dyb3VuZEhlaWdodCcsIHZhbHVlICk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNldCBjb250YWluZXIgYmFja2dyb3VuZCB3aWR0aC5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyIENvbnRhaW5lciBlbGVtZW50LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSAgICAgIHZhbHVlICAgICBWYWx1ZS5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIHdhcyBzZXQsIGZhbHNlIG90aGVyd2lzZS5cblx0XHQgKi9cblx0XHRzZXRDb250YWluZXJCYWNrZ3JvdW5kV2lkdGgoIGNvbnRhaW5lciwgdmFsdWUgKSB7XG5cdFx0XHRjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoIGAtLXdwZm9ybXMtYmFja2dyb3VuZC13aWR0aGAsIHZhbHVlICk7XG5cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBTZXQgY29udGFpbmVyIGJhY2tncm91bmQgaGVpZ2h0LlxuXHRcdCAqXG5cdFx0ICogQHNpbmNlIDEuOC44XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBjb250YWluZXIgQ29udGFpbmVyIGVsZW1lbnQuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9ICAgICAgdmFsdWUgICAgIFZhbHVlLlxuXHRcdCAqXG5cdFx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgd2FzIHNldCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHRcdCAqL1xuXHRcdHNldENvbnRhaW5lckJhY2tncm91bmRIZWlnaHQoIGNvbnRhaW5lciwgdmFsdWUgKSB7XG5cdFx0XHRjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoIGAtLXdwZm9ybXMtYmFja2dyb3VuZC1oZWlnaHRgLCB2YWx1ZSApO1xuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IGNvbnRhaW5lciBiYWNrZ3JvdW5kIHVybC5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyIENvbnRhaW5lciBlbGVtZW50LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSAgICAgIHZhbHVlICAgICBWYWx1ZS5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIHdhcyBzZXQsIGZhbHNlIG90aGVyd2lzZS5cblx0XHQgKi9cblx0XHRzZXRCYWNrZ3JvdW5kVXJsKCBjb250YWluZXIsIHZhbHVlICkge1xuXHRcdFx0Y29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KCBgLS13cGZvcm1zLWJhY2tncm91bmQtdXJsYCwgdmFsdWUgKTtcblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNldCBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyIENvbnRhaW5lciBlbGVtZW50LlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSAgICAgIHZhbHVlICAgICBWYWx1ZS5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIHdhcyBzZXQsIGZhbHNlIG90aGVyd2lzZS5cblx0XHQgKi9cblx0XHRzZXRCYWNrZ3JvdW5kQ29sb3IoIGNvbnRhaW5lciwgdmFsdWUgKSB7XG5cdFx0XHRjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoIGAtLXdwZm9ybXMtYmFja2dyb3VuZC1jb2xvcmAsIHZhbHVlICk7XG5cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHRfc2hvd0JhY2tncm91bmRQcmV2aWV3KCBwcm9wcyApIHtcblx0XHRcdHJldHVybiBwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRJbWFnZSAhPT0gJ25vbmUnICYmXG5cdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuYmFja2dyb3VuZFVybCAmJlxuXHRcdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLmJhY2tncm91bmRVcmwgIT09ICd1cmwoKSc7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZSBiYWNrZ3JvdW5kIGltYWdlLlxuXHRcdCAqXG5cdFx0ICogQHNpbmNlIDEuOC44XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXRTaG93QmFja2dyb3VuZFByZXZpZXcgU2V0IHNob3cgYmFja2dyb3VuZCBwcmV2aWV3LlxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSAgIGhhbmRsZXJzICAgICAgICAgICAgICAgICBCbG9jayBoYW5kbGVycy5cblx0XHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXRMYXN0QmdJbWFnZSAgICAgICAgICAgU2V0IGxhc3QgYmFja2dyb3VuZCBpbWFnZS5cblx0XHQgKi9cblx0XHRvblJlbW92ZUJhY2tncm91bmQoIHNldFNob3dCYWNrZ3JvdW5kUHJldmlldywgaGFuZGxlcnMsIHNldExhc3RCZ0ltYWdlICkge1xuXHRcdFx0c2V0U2hvd0JhY2tncm91bmRQcmV2aWV3KCBmYWxzZSApO1xuXHRcdFx0aGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYmFja2dyb3VuZFVybCcsICd1cmwoKScgKTtcblx0XHRcdHNldExhc3RCZ0ltYWdlKCAnJyApO1xuXHRcdH0sXG5cdH07XG5cblx0cmV0dXJuIGFwcDtcbn0oKSApO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxrQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQXdELFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBSHhEO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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
},{"./background-preview.js":14}],16:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/* global wpforms_gutenberg_form_selector */
/* jshint es3: false, esversion: 6 */
/**
* @param strings.border_radius
* @param strings.border_size
* @param strings.button_color_notice
* @param strings.button_styles
* @param strings.dashed
* @param strings.solid
*/
/**
* Gutenberg editor block.
*
* Button styles panel module.
*
* @since 1.8.8
*/
var _default = exports.default = function () {
/**
* WP core components.
*
* @since 1.8.8
*/
var _ref = wp.blockEditor || wp.editor,
PanelColorSettings = _ref.PanelColorSettings;
var _wp$components = wp.components,
SelectControl = _wp$components.SelectControl,
PanelBody = _wp$components.PanelBody,
Flex = _wp$components.Flex,
FlexBlock = _wp$components.FlexBlock,
__experimentalUnitControl = _wp$components.__experimentalUnitControl;
/**
* Localized data aliases.
*
* @since 1.8.8
*/
var _wpforms_gutenberg_fo = wpforms_gutenberg_form_selector,
strings = _wpforms_gutenberg_fo.strings,
defaults = _wpforms_gutenberg_fo.defaults;
// noinspection UnnecessaryLocalVariableJS
/**
* Public functions and properties.
*
* @since 1.8.8
*
* @type {Object}
*/
var app = {
/**
* Get block attributes.
*
* @since 1.8.8
*
* @return {Object} Block attributes.
*/
getBlockAttributes: function getBlockAttributes() {
return {
buttonSize: {
type: 'string',
default: defaults.buttonSize
},
buttonBorderStyle: {
type: 'string',
default: defaults.buttonBorderStyle
},
buttonBorderSize: {
type: 'string',
default: defaults.buttonBorderSize
},
buttonBorderRadius: {
type: 'string',
default: defaults.buttonBorderRadius
},
buttonBackgroundColor: {
type: 'string',
default: defaults.buttonBackgroundColor
},
buttonTextColor: {
type: 'string',
default: defaults.buttonTextColor
},
buttonBorderColor: {
type: 'string',
default: defaults.buttonBorderColor
}
};
},
/**
* Get Button styles JSX code.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
* @param {Object} handlers Block event handlers.
* @param {Object} sizeOptions Size selector options.
* @param {Object} formSelectorCommon Form selector common object.
*
* @return {Object} Button styles JSX code.
*/
getButtonStyles: function getButtonStyles(props, handlers, sizeOptions, formSelectorCommon) {
// eslint-disable-line max-lines-per-function
return /*#__PURE__*/React.createElement(PanelBody, {
className: formSelectorCommon.getPanelClass(props),
title: strings.button_styles
}, /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(SelectControl, {
label: strings.size,
value: props.attributes.buttonSize,
options: sizeOptions,
onChange: function onChange(value) {
return handlers.styleAttrChange('buttonSize', value);
}
})), /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(SelectControl, {
label: strings.border,
value: props.attributes.buttonBorderStyle,
options: [{
label: strings.none,
value: 'none'
}, {
label: strings.solid,
value: 'solid'
}, {
label: strings.dashed,
value: 'dashed'
}, {
label: strings.dotted,
value: 'dotted'
}],
onChange: function onChange(value) {
return handlers.styleAttrChange('buttonBorderStyle', value);
}
}))), /*#__PURE__*/React.createElement(Flex, {
gap: 4,
align: "flex-start",
className: 'wpforms-gutenberg-form-selector-flex',
justify: "space-between"
}, /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(__experimentalUnitControl, {
label: strings.border_size,
value: props.attributes.buttonBorderStyle === 'none' ? '' : props.attributes.buttonBorderSize,
min: 0,
disabled: props.attributes.buttonBorderStyle === 'none',
onChange: function onChange(value) {
return handlers.styleAttrChange('buttonBorderSize', value);
},
isUnitSelectTabbable: true
})), /*#__PURE__*/React.createElement(FlexBlock, null, /*#__PURE__*/React.createElement(__experimentalUnitControl, {
onChange: function onChange(value) {
return handlers.styleAttrChange('buttonBorderRadius', value);
},
label: strings.border_radius,
min: 0,
isUnitSelectTabbable: true,
value: props.attributes.buttonBorderRadius
}))), /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-color-picker"
}, /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-control-label"
}, strings.colors), /*#__PURE__*/React.createElement(PanelColorSettings, {
__experimentalIsRenderedInSidebar: true,
enableAlpha: true,
showTitle: false,
className: formSelectorCommon.getColorPanelClass(props.attributes.buttonBorderStyle),
colorSettings: [{
value: props.attributes.buttonBackgroundColor,
onChange: function onChange(value) {
return handlers.styleAttrChange('buttonBackgroundColor', value);
},
label: strings.background
}, {
value: props.attributes.buttonBorderColor,
onChange: function onChange(value) {
return handlers.styleAttrChange('buttonBorderColor', value);
},
label: strings.border
}, {
value: props.attributes.buttonTextColor,
onChange: function onChange(value) {
return handlers.styleAttrChange('buttonTextColor', value);
},
label: strings.text
}]
}), /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-legend wpforms-button-color-notice"
}, strings.button_color_notice)));
}
};
return app;
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwiX3JlZiIsIndwIiwiYmxvY2tFZGl0b3IiLCJlZGl0b3IiLCJQYW5lbENvbG9yU2V0dGluZ3MiLCJfd3AkY29tcG9uZW50cyIsImNvbXBvbmVudHMiLCJTZWxlY3RDb250cm9sIiwiUGFuZWxCb2R5IiwiRmxleCIsIkZsZXhCbG9jayIsIl9fZXhwZXJpbWVudGFsVW5pdENvbnRyb2wiLCJfd3Bmb3Jtc19ndXRlbmJlcmdfZm8iLCJ3cGZvcm1zX2d1dGVuYmVyZ19mb3JtX3NlbGVjdG9yIiwic3RyaW5ncyIsImRlZmF1bHRzIiwiYXBwIiwiZ2V0QmxvY2tBdHRyaWJ1dGVzIiwiYnV0dG9uU2l6ZSIsInR5cGUiLCJidXR0b25Cb3JkZXJTdHlsZSIsImJ1dHRvbkJvcmRlclNpemUiLCJidXR0b25Cb3JkZXJSYWRpdXMiLCJidXR0b25CYWNrZ3JvdW5kQ29sb3IiLCJidXR0b25UZXh0Q29sb3IiLCJidXR0b25Cb3JkZXJDb2xvciIsImdldEJ1dHRvblN0eWxlcyIsInByb3BzIiwiaGFuZGxlcnMiLCJzaXplT3B0aW9ucyIsImZvcm1TZWxlY3RvckNvbW1vbiIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImdldFBhbmVsQ2xhc3MiLCJ0aXRsZSIsImJ1dHRvbl9zdHlsZXMiLCJnYXAiLCJhbGlnbiIsImp1c3RpZnkiLCJsYWJlbCIsInNpemUiLCJ2YWx1ZSIsImF0dHJpYnV0ZXMiLCJvcHRpb25zIiwib25DaGFuZ2UiLCJzdHlsZUF0dHJDaGFuZ2UiLCJib3JkZXIiLCJub25lIiwic29saWQiLCJkYXNoZWQiLCJkb3R0ZWQiLCJib3JkZXJfc2l6ZSIsIm1pbiIsImRpc2FibGVkIiwiaXNVbml0U2VsZWN0VGFiYmFibGUiLCJib3JkZXJfcmFkaXVzIiwiY29sb3JzIiwiX19leHBlcmltZW50YWxJc1JlbmRlcmVkSW5TaWRlYmFyIiwiZW5hYmxlQWxwaGEiLCJzaG93VGl0bGUiLCJnZXRDb2xvclBhbmVsQ2xhc3MiLCJjb2xvclNldHRpbmdzIiwiYmFja2dyb3VuZCIsInRleHQiLCJidXR0b25fY29sb3Jfbm90aWNlIl0sInNvdXJjZXMiOlsiYnV0dG9uLXN0eWxlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgd3Bmb3Jtc19ndXRlbmJlcmdfZm9ybV9zZWxlY3RvciAqL1xuLyoganNoaW50IGVzMzogZmFsc2UsIGVzdmVyc2lvbjogNiAqL1xuXG4vKipcbiAqIEBwYXJhbSBzdHJpbmdzLmJvcmRlcl9yYWRpdXNcbiAqIEBwYXJhbSBzdHJpbmdzLmJvcmRlcl9zaXplXG4gKiBAcGFyYW0gc3RyaW5ncy5idXR0b25fY29sb3Jfbm90aWNlXG4gKiBAcGFyYW0gc3RyaW5ncy5idXR0b25fc3R5bGVzXG4gKiBAcGFyYW0gc3RyaW5ncy5kYXNoZWRcbiAqIEBwYXJhbSBzdHJpbmdzLnNvbGlkXG4gKi9cblxuLyoqXG4gKiBHdXRlbmJlcmcgZWRpdG9yIGJsb2NrLlxuICpcbiAqIEJ1dHRvbiBzdHlsZXMgcGFuZWwgbW9kdWxlLlxuICpcbiAqIEBzaW5jZSAxLjguOFxuICovXG5leHBvcnQgZGVmYXVsdCAoICggZnVuY3Rpb24oKSB7XG5cdC8qKlxuXHQgKiBXUCBjb3JlIGNvbXBvbmVudHMuXG5cdCAqXG5cdCAqIEBzaW5jZSAxLjguOFxuXHQgKi9cblx0Y29uc3QgeyBQYW5lbENvbG9yU2V0dGluZ3MgfSA9IHdwLmJsb2NrRWRpdG9yIHx8IHdwLmVkaXRvcjtcblx0Y29uc3QgeyBTZWxlY3RDb250cm9sLCBQYW5lbEJvZHksIEZsZXgsIEZsZXhCbG9jaywgX19leHBlcmltZW50YWxVbml0Q29udHJvbCB9ID0gd3AuY29tcG9uZW50cztcblxuXHQvKipcblx0ICogTG9jYWxpemVkIGRhdGEgYWxpYXNlcy5cblx0ICpcblx0ICogQHNpbmNlIDEuOC44XG5cdCAqL1xuXHRjb25zdCB7IHN0cmluZ3MsIGRlZmF1bHRzIH0gPSB3cGZvcm1zX2d1dGVuYmVyZ19mb3JtX3NlbGVjdG9yO1xuXG5cdC8vIG5vaW5zcGVjdGlvbiBVbm5lY2Vzc2FyeUxvY2FsVmFyaWFibGVKU1xuXHQvKipcblx0ICogUHVibGljIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcy5cblx0ICpcblx0ICogQHNpbmNlIDEuOC44XG5cdCAqXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqL1xuXHRjb25zdCBhcHAgPSB7XG5cblx0XHQvKipcblx0XHQgKiBHZXQgYmxvY2sgYXR0cmlidXRlcy5cblx0XHQgKlxuXHRcdCAqIEBzaW5jZSAxLjguOFxuXHRcdCAqXG5cdFx0ICogQHJldHVybiB7T2JqZWN0fSBCbG9jayBhdHRyaWJ1dGVzLlxuXHRcdCAqL1xuXHRcdGdldEJsb2NrQXR0cmlidXRlcygpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGJ1dHRvblNpemU6IHtcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0XHRkZWZhdWx0OiBkZWZhdWx0cy5idXR0b25TaXplLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRidXR0b25Cb3JkZXJTdHlsZToge1xuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHRcdGRlZmF1bHQ6IGRlZmF1bHRzLmJ1dHRvbkJvcmRlclN0eWxlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRidXR0b25Cb3JkZXJTaXplOiB7XG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdFx0ZGVmYXVsdDogZGVmYXVsdHMuYnV0dG9uQm9yZGVyU2l6ZSxcblx0XHRcdFx0fSxcblx0XHRcdFx0YnV0dG9uQm9yZGVyUmFkaXVzOiB7XG5cdFx0XHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRcdFx0ZGVmYXVsdDogZGVmYXVsdHMuYnV0dG9uQm9yZGVyUmFkaXVzLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRidXR0b25CYWNrZ3JvdW5kQ29sb3I6IHtcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0XHRkZWZhdWx0OiBkZWZhdWx0cy5idXR0b25CYWNrZ3JvdW5kQ29sb3IsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGJ1dHRvblRleHRDb2xvcjoge1xuXHRcdFx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0XHRcdGRlZmF1bHQ6IGRlZmF1bHRzLmJ1dHRvblRleHRDb2xvcixcblx0XHRcdFx0fSxcblx0XHRcdFx0YnV0dG9uQm9yZGVyQ29sb3I6IHtcblx0XHRcdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdFx0XHRkZWZhdWx0OiBkZWZhdWx0cy5idXR0b25Cb3JkZXJDb2xvcixcblx0XHRcdFx0fSxcblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEdldCBCdXR0b24gc3R5bGVzIEpTWCBjb2RlLlxuXHRcdCAqXG5cdFx0ICogQHNpbmNlIDEuOC44XG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgICAgICAgICAgICAgIEJsb2NrIHByb3BlcnRpZXMuXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGhhbmRsZXJzICAgICAgICAgICBCbG9jayBldmVudCBoYW5kbGVycy5cblx0XHQgKiBAcGFyYW0ge09iamVjdH0gc2l6ZU9wdGlvbnMgICAgICAgIFNpemUgc2VsZWN0b3Igb3B0aW9ucy5cblx0XHQgKiBAcGFyYW0ge09iamVjdH0gZm9ybVNlbGVjdG9yQ29tbW9uIEZvcm0gc2VsZWN0b3IgY29tbW9uIG9iamVjdC5cblx0XHQgKlxuXHRcdCAqIEByZXR1cm4ge09iamVjdH0gIEJ1dHRvbiBzdHlsZXMgSlNYIGNvZGUuXG5cdFx0ICovXG5cdFx0Z2V0QnV0dG9uU3R5bGVzKCBwcm9wcywgaGFuZGxlcnMsIHNpemVPcHRpb25zLCBmb3JtU2VsZWN0b3JDb21tb24gKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxpbmVzLXBlci1mdW5jdGlvblxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFBhbmVsQm9keSBjbGFzc05hbWU9eyBmb3JtU2VsZWN0b3JDb21tb24uZ2V0UGFuZWxDbGFzcyggcHJvcHMgKSB9IHRpdGxlPXsgc3RyaW5ncy5idXR0b25fc3R5bGVzIH0+XG5cdFx0XHRcdFx0PEZsZXggZ2FwPXsgNCB9IGFsaWduPVwiZmxleC1zdGFydFwiIGNsYXNzTmFtZT17ICd3cGZvcm1zLWd1dGVuYmVyZy1mb3JtLXNlbGVjdG9yLWZsZXgnIH0ganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIj5cblx0XHRcdFx0XHRcdDxGbGV4QmxvY2s+XG5cdFx0XHRcdFx0XHRcdDxTZWxlY3RDb250cm9sXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw9eyBzdHJpbmdzLnNpemUgfVxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXsgcHJvcHMuYXR0cmlidXRlcy5idXR0b25TaXplIH1cblx0XHRcdFx0XHRcdFx0XHRvcHRpb25zPXsgc2l6ZU9wdGlvbnMgfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IGhhbmRsZXJzLnN0eWxlQXR0ckNoYW5nZSggJ2J1dHRvblNpemUnLCB2YWx1ZSApIH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvRmxleEJsb2NrPlxuXHRcdFx0XHRcdFx0PEZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdFx0PFNlbGVjdENvbnRyb2xcblx0XHRcdFx0XHRcdFx0XHRsYWJlbD17IHN0cmluZ3MuYm9yZGVyIH1cblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IHByb3BzLmF0dHJpYnV0ZXMuYnV0dG9uQm9yZGVyU3R5bGUgfVxuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM9e1xuXHRcdFx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLm5vbmUsIHZhbHVlOiAnbm9uZScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogc3RyaW5ncy5zb2xpZCwgdmFsdWU6ICdzb2xpZCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBsYWJlbDogc3RyaW5ncy5kYXNoZWQsIHZhbHVlOiAnZGFzaGVkJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGxhYmVsOiBzdHJpbmdzLmRvdHRlZCwgdmFsdWU6ICdkb3R0ZWQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IGhhbmRsZXJzLnN0eWxlQXR0ckNoYW5nZSggJ2J1dHRvbkJvcmRlclN0eWxlJywgdmFsdWUgKSB9XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L0ZsZXhCbG9jaz5cblx0XHRcdFx0XHQ8L0ZsZXg+XG5cdFx0XHRcdFx0PEZsZXggZ2FwPXsgNCB9IGFsaWduPVwiZmxleC1zdGFydFwiIGNsYXNzTmFtZT17ICd3cGZvcm1zLWd1dGVuYmVyZy1mb3JtLXNlbGVjdG9yLWZsZXgnIH0ganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIj5cblx0XHRcdFx0XHRcdDxGbGV4QmxvY2s+XG5cdFx0XHRcdFx0XHRcdDxfX2V4cGVyaW1lbnRhbFVuaXRDb250cm9sXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw9eyBzdHJpbmdzLmJvcmRlcl9zaXplIH1cblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IHByb3BzLmF0dHJpYnV0ZXMuYnV0dG9uQm9yZGVyU3R5bGUgPT09ICdub25lJyA/ICcnIDogcHJvcHMuYXR0cmlidXRlcy5idXR0b25Cb3JkZXJTaXplIH1cblx0XHRcdFx0XHRcdFx0XHRtaW49eyAwIH1cblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17IHByb3BzLmF0dHJpYnV0ZXMuYnV0dG9uQm9yZGVyU3R5bGUgPT09ICdub25lJyB9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gaGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYnV0dG9uQm9yZGVyU2l6ZScsIHZhbHVlICkgfVxuXHRcdFx0XHRcdFx0XHRcdGlzVW5pdFNlbGVjdFRhYmJhYmxlXG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L0ZsZXhCbG9jaz5cblx0XHRcdFx0XHRcdDxGbGV4QmxvY2s+XG5cdFx0XHRcdFx0XHRcdDxfX2V4cGVyaW1lbnRhbFVuaXRDb250cm9sXG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gaGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYnV0dG9uQm9yZGVyUmFkaXVzJywgdmFsdWUgKSB9XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw9eyBzdHJpbmdzLmJvcmRlcl9yYWRpdXMgfVxuXHRcdFx0XHRcdFx0XHRcdG1pbj17IDAgfVxuXHRcdFx0XHRcdFx0XHRcdGlzVW5pdFNlbGVjdFRhYmJhYmxlXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9eyBwcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbkJvcmRlclJhZGl1cyB9IC8+XG5cdFx0XHRcdFx0XHQ8L0ZsZXhCbG9jaz5cblx0XHRcdFx0XHQ8L0ZsZXg+XG5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cIndwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItY29sb3ItcGlja2VyXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cIndwZm9ybXMtZ3V0ZW5iZXJnLWZvcm0tc2VsZWN0b3ItY29udHJvbC1sYWJlbFwiPnsgc3RyaW5ncy5jb2xvcnMgfTwvZGl2PlxuXHRcdFx0XHRcdFx0PFBhbmVsQ29sb3JTZXR0aW5nc1xuXHRcdFx0XHRcdFx0XHRfX2V4cGVyaW1lbnRhbElzUmVuZGVyZWRJblNpZGViYXJcblx0XHRcdFx0XHRcdFx0ZW5hYmxlQWxwaGFcblx0XHRcdFx0XHRcdFx0c2hvd1RpdGxlPXsgZmFsc2UgfVxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9eyBmb3JtU2VsZWN0b3JDb21tb24uZ2V0Q29sb3JQYW5lbENsYXNzKCBwcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbkJvcmRlclN0eWxlICkgfVxuXHRcdFx0XHRcdFx0XHRjb2xvclNldHRpbmdzPXsgW1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbkJhY2tncm91bmRDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiAoIHZhbHVlICkgPT4gaGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYnV0dG9uQmFja2dyb3VuZENvbG9yJywgdmFsdWUgKSxcblx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBzdHJpbmdzLmJhY2tncm91bmQsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5idXR0b25Cb3JkZXJDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiAoIHZhbHVlICkgPT4gaGFuZGxlcnMuc3R5bGVBdHRyQ2hhbmdlKCAnYnV0dG9uQm9yZGVyQ29sb3InLCB2YWx1ZSApLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHN0cmluZ3MuYm9yZGVyLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXMuYnV0dG9uVGV4dENvbG9yLFxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6ICggdmFsdWUgKSA9PiBoYW5kbGVycy5zdHlsZUF0dHJDaGFuZ2UoICdidXR0b25UZXh0Q29sb3InLCB2YWx1ZSApLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IHN0cmluZ3MudGV4dCxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRdIH0gLz5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwid3Bmb3Jtcy1ndXRlbmJlcmctZm9ybS1zZWxlY3Rvci1sZWdlbmQgd3Bmb3Jtcy1idXR0b24tY29sb3Itbm90aWNlXCI+XG5cdFx0XHRcdFx0XHRcdHsgc3RyaW5ncy5idXR0b25fY29sb3Jfbm90aWNlIH1cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L1BhbmVsQm9keT5cblx0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
},{}],17:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function 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(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 _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; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
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."); }
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; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, 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; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
/* global jconfirm, wpforms_gutenberg_form_selector, Choices, JSX, DOM, WPFormsUtils */
/* jshint es3: false, esversion: 6 */
/**
* @param strings.copy_paste_error
* @param strings.error_message
* @param strings.form_edit
* @param strings.form_entries
* @param strings.form_keywords
* @param strings.form_select
* @param strings.form_selected
* @param strings.form_settings
* @param strings.label_styles
* @param strings.other_styles
* @param strings.page_break
* @param strings.panel_notice_head
* @param strings.panel_notice_link
* @param strings.panel_notice_link_text
* @param strings.panel_notice_text
* @param strings.show_description
* @param strings.show_title
* @param strings.sublabel_hints
* @param strings.form_not_available_message
* @param urls.entries_url
* @param urls.form_url
* @param window.wpforms_choicesjs_config
* @param wpforms_education.upgrade_bonus
* @param wpforms_gutenberg_form_selector.block_empty_url
* @param wpforms_gutenberg_form_selector.block_preview_url
* @param wpforms_gutenberg_form_selector.get_started_url
* @param wpforms_gutenberg_form_selector.is_full_styling
* @param wpforms_gutenberg_form_selector.is_modern_markup
* @param wpforms_gutenberg_form_selector.logo_url
* @param wpforms_gutenberg_form_selector.wpforms_guide
*/
/**
* Gutenberg editor block.
*
* Common module.
*
* @since 1.8.8
*/
var _default = exports.default = function (document, window, $) {
/**
* WP core components.
*
* @since 1.8.8
*/
var _wp = wp,
_wp$serverSideRender = _wp.serverSideRender,
ServerSideRender = _wp$serverSideRender === void 0 ? wp.components.ServerSideRender : _wp$serverSideRender;
var _wp$element = wp.element,
createElement = _wp$element.createElement,
Fragment = _wp$element.Fragment,
createInterpolateElement = _wp$element.createInterpolateElement;
var registerBlockType = wp.blocks.registerBlockType;
var _ref = wp.blockEditor || wp.editor,
InspectorControls = _ref.InspectorControls,
PanelColorSettings = _ref.PanelColorSettings,
useBlockProps = _ref.useBlockProps;
var _wp$components = wp.components,
SelectControl = _wp$components.SelectControl,
ToggleControl = _wp$components.ToggleControl,
PanelBody = _wp$components.PanelBody,
Placeholder = _wp$components.Placeholder;
var __ = wp.i18n.__;
var _wp$element2 = wp.element,
useState = _wp$element2.useState,
useEffect = _wp$element2.useEffect;
/**
* Localized data aliases.
*
* @since 1.8.8
*/
var _wpforms_gutenberg_fo = wpforms_gutenberg_form_selector,
strings = _wpforms_gutenberg_fo.strings,
defaults = _wpforms_gutenberg_fo.defaults,
sizes = _wpforms_gutenberg_fo.sizes,
urls = _wpforms_gutenberg_fo.urls,
isPro = _wpforms_gutenberg_fo.isPro,
isLicenseActive = _wpforms_gutenberg_fo.isLicenseActive,
isAdmin = _wpforms_gutenberg_fo.isAdmin;
var defaultStyleSettings = defaults;
// noinspection JSUnusedLocalSymbols
/**
* WPForms Education script.
*
* @since 1.8.8
*/
var WPFormsEducation = window.WPFormsEducation || {}; // eslint-disable-line no-unused-vars
/**
* List of forms.
*
* The default value is localized in FormSelector.php.
*
* @since 1.8.4
*
* @type {Object}
*/
var formList = wpforms_gutenberg_form_selector.forms;
/**
* Blocks runtime data.
*
* @since 1.8.1
*
* @type {Object}
*/
var blocks = {};
/**
* Whether it is needed to trigger server rendering.
*
* @since 1.8.1
*
* @type {boolean}
*/
var triggerServerRender = true;
/**
* Popup container.
*
* @since 1.8.3
*
* @type {Object}
*/
var $popup = {};
/**
* Track fetch status.
*
* @since 1.8.4
*
* @type {boolean}
*/
var isFetching = false;
/**
* Elements holder.
*
* @since 1.8.8
*
* @type {Object}
*/
var el = {};
/**
* Common block attributes.
*
* @since 1.8.8
*
* @type {Object}
*/
var commonAttributes = {
clientId: {
type: 'string',
default: ''
},
formId: {
type: 'string',
default: defaultStyleSettings.formId
},
displayTitle: {
type: 'boolean',
default: defaultStyleSettings.displayTitle
},
displayDesc: {
type: 'boolean',
default: defaultStyleSettings.displayDesc
},
preview: {
type: 'boolean'
},
theme: {
type: 'string',
default: defaultStyleSettings.theme
},
themeName: {
type: 'string',
default: defaultStyleSettings.themeName
},
labelSize: {
type: 'string',
default: defaultStyleSettings.labelSize
},
labelColor: {
type: 'string',
default: defaultStyleSettings.labelColor
},
labelSublabelColor: {
type: 'string',
default: defaultStyleSettings.labelSublabelColor
},
labelErrorColor: {
type: 'string',
default: defaultStyleSettings.labelErrorColor
},
pageBreakColor: {
type: 'string',
default: defaultStyleSettings.pageBreakColor
},
customCss: {
type: 'string',
default: defaultStyleSettings.customCss
},
copyPasteJsonValue: {
type: 'string',
default: defaultStyleSettings.copyPasteJsonValue
}
};
/**
* Handlers for custom styles settings, defined outside this module.
*
* @since 1.8.8
*
* @type {Object}
*/
var customStylesHandlers = {};
/**
* Dropdown timeout.
*
* @since 1.8.8
*
* @type {number}
*/
var dropdownTimeout;
/**
* Whether copy-paste content was generated on edit.
*
* @since 1.9.1
*
* @type {boolean}
*/
var isCopyPasteGeneratedOnEdit = false;
/**
* Whether the background is selected.
*
* @since 1.9.3
*
* @type {boolean}
*/
var backgroundSelected = false;
/**
* Public functions and properties.
*
* @since 1.8.1
*
* @type {Object}
*/
var app = {
/**
* Panel modules.
*
* @since 1.8.8
*
* @type {Object}
*/
panels: {},
/**
* Start the engine.
*
* @since 1.8.1
*
* @param {Object} blockOptions Block options.
*/
init: function init(blockOptions) {
el.$window = $(window);
app.panels = blockOptions.panels;
app.education = blockOptions.education;
app.initDefaults(blockOptions);
app.registerBlock(blockOptions);
app.initJConfirm();
$(app.ready);
},
/**
* Document ready.
*
* @since 1.8.1
*/
ready: function ready() {
app.events();
},
/**
* Events.
*
* @since 1.8.1
*/
events: function events() {
el.$window.on('wpformsFormSelectorEdit', _.debounce(app.blockEdit, 250)).on('wpformsFormSelectorFormLoaded', app.formLoaded);
},
/**
* Init jConfirm.
*
* @since 1.8.8
*/
initJConfirm: function initJConfirm() {
// jquery-confirm defaults.
jconfirm.defaults = {
closeIcon: false,
backgroundDismiss: false,
escapeKey: true,
animationBounce: 1,
useBootstrap: false,
theme: 'modern',
boxWidth: '400px',
animateFromElement: false
};
},
/**
* Get a fresh list of forms via REST-API.
*
* @since 1.8.4
*
* @see https://developer.wordpress.org/block-editor/reference-guides/packages/packages-api-fetch/
*/
getForms: function getForms() {
return _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!isFetching) {
_context.next = 2;
break;
}
return _context.abrupt("return");
case 2:
// Set the flag to true indicating a fetch is in progress.
isFetching = true;
_context.prev = 3;
_context.next = 6;
return wp.apiFetch({
path: wpforms_gutenberg_form_selector.route_namespace + 'forms/',
method: 'GET',
cache: 'no-cache'
});
case 6:
formList = _context.sent;
_context.next = 12;
break;
case 9:
_context.prev = 9;
_context.t0 = _context["catch"](3);
// eslint-disable-next-line no-console
console.error(_context.t0);
case 12:
_context.prev = 12;
isFetching = false;
return _context.finish(12);
case 15:
case "end":
return _context.stop();
}
}, _callee, null, [[3, 9, 12, 15]]);
}))();
},
/**
* Open builder popup.
*
* @since 1.6.2
*
* @param {string} clientID Block Client ID.
*/
openBuilderPopup: function openBuilderPopup(clientID) {
if ($.isEmptyObject($popup)) {
var _parent = $('#wpwrap');
var canvasIframe = $('iframe[name="editor-canvas"]');
var isFseMode = Boolean(canvasIframe.length);
var tmpl = isFseMode ? canvasIframe.contents().find('#wpforms-gutenberg-popup') : $('#wpforms-gutenberg-popup');
_parent.after(tmpl);
$popup = _parent.siblings('#wpforms-gutenberg-popup');
}
var url = wpforms_gutenberg_form_selector.get_started_url,
$iframe = $popup.find('iframe');
app.builderCloseButtonEvent(clientID);
$iframe.attr('src', url);
$popup.fadeIn();
},
/**
* Close button (inside the form builder) click event.
*
* @since 1.8.3
*
* @param {string} clientID Block Client ID.
*/
builderCloseButtonEvent: function builderCloseButtonEvent(clientID) {
$popup.off('wpformsBuilderInPopupClose').on('wpformsBuilderInPopupClose', function (e, action, formId, formTitle) {
if (action !== 'saved' || !formId) {
return;
}
// Insert a new block when a new form is created from the popup to update the form list and attributes.
var newBlock = wp.blocks.createBlock('wpforms/form-selector', {
formId: formId.toString() // Expects string value, make sure we insert string.
});
// eslint-disable-next-line camelcase
formList = [{
ID: formId,
post_title: formTitle
}];
// Insert a new block.
wp.data.dispatch('core/block-editor').removeBlock(clientID);
wp.data.dispatch('core/block-editor').insertBlocks(newBlock);
});
},
/**
* Register block.
*
* @since 1.8.1
*
* @param {Object} blockOptions Additional block options.
*/
// eslint-disable-next-line max-lines-per-function
registerBlock: function registerBlock(blockOptions) {
registerBlockType('wpforms/form-selector', {
title: strings.title,
description: strings.description,
icon: app.getIcon(),
keywords: strings.form_keywords,
category: 'widgets',
attributes: app.getBlockAttributes(),
supports: {
customClassName: app.hasForms()
},
example: {
attributes: {
preview: true
}
},
// eslint-disable-next-line max-lines-per-function,complexity
edit: function edit(props) {
var attributes = props.attributes;
var formOptions = app.getFormOptions();
var handlers = app.getSettingsFieldsHandlers(props);
var _useState = useState(isPro && isLicenseActive),
_useState2 = _slicedToArray(_useState, 1),
isNotDisabled = _useState2[0]; // eslint-disable-line react-hooks/rules-of-hooks
var _useState3 = useState(isPro),
_useState4 = _slicedToArray(_useState3, 1),
isProEnabled = _useState4[0]; // eslint-disable-line react-hooks/rules-of-hooks, no-unused-vars
var _useState5 = useState(blockOptions.panels.background._showBackgroundPreview(props)),
_useState6 = _slicedToArray(_useState5, 2),
showBackgroundPreview = _useState6[0],
setShowBackgroundPreview = _useState6[1]; // eslint-disable-line react-hooks/rules-of-hooks
var _useState7 = useState(''),
_useState8 = _slicedToArray(_useState7, 2),
lastBgImage = _useState8[0],
setLastBgImage = _useState8[1]; // eslint-disable-line react-hooks/rules-of-hooks
var uiState = {
isNotDisabled: isNotDisabled,
isProEnabled: isProEnabled,
showBackgroundPreview: showBackgroundPreview,
setShowBackgroundPreview: setShowBackgroundPreview,
lastBgImage: lastBgImage,
setLastBgImage: setLastBgImage
};
useEffect(function () {
// eslint-disable-line react-hooks/rules-of-hooks
if (attributes.formId) {
setShowBackgroundPreview(props.attributes.backgroundImage !== 'none' && props.attributes.backgroundUrl && props.attributes.backgroundUrl !== 'url()');
}
}, [backgroundSelected, props.attributes.backgroundImage, props.attributes.backgroundUrl]); // eslint-disable-line react-hooks/exhaustive-deps
// Get block properties.
var blockProps = useBlockProps(); // eslint-disable-line react-hooks/rules-of-hooks, no-unused-vars
// Store block clientId in attributes.
if (!attributes.clientId || !app.isClientIdAttrUnique(props)) {
// We just want the client ID to update once.
// The block editor doesn't have a fixed block ID, so we need to get it on the initial load, but only once.
props.setAttributes({
clientId: props.clientId
});
}
// Main block settings.
var jsx = [app.jsxParts.getMainSettings(attributes, handlers, formOptions)];
// Block preview picture.
if (!app.hasForms()) {
jsx.push(app.jsxParts.getEmptyFormsPreview(props));
return /*#__PURE__*/React.createElement("div", blockProps, jsx);
}
var sizeOptions = app.getSizeOptions();
// Show placeholder when form is not available (trashed, deleted etc.).
if (attributes && attributes.formId && app.isFormAvailable(attributes.formId) === false) {
// Block placeholder (form selector).
jsx.push(app.jsxParts.getBlockPlaceholder(props.attributes, handlers, formOptions));
return /*#__PURE__*/React.createElement("div", blockProps, jsx);
}
// Form style settings & block content.
if (attributes.formId) {
// Subscribe to block events.
app.maybeSubscribeToBlockEvents(props, handlers, blockOptions);
jsx.push(app.jsxParts.getStyleSettings(props, handlers, sizeOptions, blockOptions, uiState), app.jsxParts.getBlockFormContent(props));
if (!isCopyPasteGeneratedOnEdit) {
handlers.updateCopyPasteContent();
isCopyPasteGeneratedOnEdit = true;
}
el.$window.trigger('wpformsFormSelectorEdit', [props]);
return /*#__PURE__*/React.createElement("div", blockProps, jsx);
}
// Block preview picture.
if (attributes.preview) {
jsx.push(app.jsxParts.getBlockPreview());
return /*#__PURE__*/React.createElement("div", blockProps, jsx);
}
// Block placeholder (form selector).
jsx.push(app.jsxParts.getBlockPlaceholder(props.attributes, handlers, formOptions));
return /*#__PURE__*/React.createElement("div", blockProps, jsx);
},
save: function save() {
return null;
}
});
},
/**
* Init default style settings.
*
* @since 1.8.1
* @since 1.8.8 Added blockOptions parameter.
*
* @param {Object} blockOptions Additional block options.
*/
initDefaults: function initDefaults() {
var blockOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
commonAttributes = _objectSpread(_objectSpread({}, commonAttributes), blockOptions.getCommonAttributes());
customStylesHandlers = blockOptions.setStylesHandlers;
['formId', 'copyPasteJsonValue'].forEach(function (key) {
return delete defaultStyleSettings[key];
});
},
/**
* Check if the site has forms.
*
* @since 1.8.3
*
* @return {boolean} Whether site has at least one form.
*/
hasForms: function hasForms() {
return formList.length > 0;
},
/**
* Check if form is available to be previewed.
*
* @since 1.8.9
*
* @param {number} formId Form ID.
*
* @return {boolean} Whether form is available.
*/
isFormAvailable: function isFormAvailable(formId) {
return formList.find(function (_ref2) {
var ID = _ref2.ID;
return ID === Number(formId);
}) !== undefined;
},
/**
* Set triggerServerRender flag.
*
* @since 1.8.8
*
* @param {boolean} $flag The value of the triggerServerRender flag.
*/
setTriggerServerRender: function setTriggerServerRender($flag) {
triggerServerRender = Boolean($flag);
},
/**
* Maybe subscribe to block events.
*
* @since 1.8.8
*
* @param {Object} subscriberProps Subscriber block properties.
* @param {Object} subscriberHandlers Subscriber block event handlers.
* @param {Object} subscriberBlockOptions Subscriber block options.
*/
maybeSubscribeToBlockEvents: function maybeSubscribeToBlockEvents(subscriberProps, subscriberHandlers, subscriberBlockOptions) {
var id = subscriberProps.clientId;
// Unsubscribe from block events.
// This is needed to avoid multiple subscriptions when the block is re-rendered.
el.$window.off('wpformsFormSelectorDeleteTheme.' + id).off('wpformsFormSelectorUpdateTheme.' + id).off('wpformsFormSelectorSetTheme.' + id);
// Subscribe to block events.
el.$window.on('wpformsFormSelectorDeleteTheme.' + id, app.subscriberDeleteTheme(subscriberProps, subscriberBlockOptions)).on('wpformsFormSelectorUpdateTheme.' + id, app.subscriberUpdateTheme(subscriberProps, subscriberBlockOptions)).on('wpformsFormSelectorSetTheme.' + id, app.subscriberSetTheme(subscriberProps, subscriberBlockOptions));
},
/**
* Block event `wpformsFormSelectorDeleteTheme` handler.
*
* @since 1.8.8
*
* @param {Object} subscriberProps Subscriber block properties
* @param {Object} subscriberBlockOptions Subscriber block options.
*
* @return {Function} Event handler.
*/
subscriberDeleteTheme: function subscriberDeleteTheme(subscriberProps, subscriberBlockOptions) {
return function (e, themeSlug, triggerProps) {
var _subscriberProps$attr, _subscriberBlockOptio;
if (subscriberProps.clientId === triggerProps.clientId) {
return;
}
if ((subscriberProps === null || subscriberProps === void 0 || (_subscriberProps$attr = subscriberProps.attributes) === null || _subscriberProps$attr === void 0 ? void 0 : _subscriberProps$attr.theme) !== themeSlug) {
return;
}
if (!(subscriberBlockOptions !== null && subscriberBlockOptions !== void 0 && (_subscriberBlockOptio = subscriberBlockOptions.panels) !== null && _subscriberBlockOptio !== void 0 && _subscriberBlockOptio.themes)) {
return;
}
// Reset theme to default one.
subscriberBlockOptions.panels.themes.setBlockTheme(subscriberProps, 'default');
};
},
/**
* Block event `wpformsFormSelectorDeleteTheme` handler.
*
* @since 1.8.8
*
* @param {Object} subscriberProps Subscriber block properties
* @param {Object} subscriberBlockOptions Subscriber block options.
*
* @return {Function} Event handler.
*/
subscriberUpdateTheme: function subscriberUpdateTheme(subscriberProps, subscriberBlockOptions) {
return function (e, themeSlug, themeData, triggerProps) {
var _subscriberProps$attr2, _subscriberBlockOptio2;
if (subscriberProps.clientId === triggerProps.clientId) {
return;
}
if ((subscriberProps === null || subscriberProps === void 0 || (_subscriberProps$attr2 = subscriberProps.attributes) === null || _subscriberProps$attr2 === void 0 ? void 0 : _subscriberProps$attr2.theme) !== themeSlug) {
return;
}
if (!(subscriberBlockOptions !== null && subscriberBlockOptions !== void 0 && (_subscriberBlockOptio2 = subscriberBlockOptions.panels) !== null && _subscriberBlockOptio2 !== void 0 && _subscriberBlockOptio2.themes)) {
return;
}
// Reset theme to default one.
subscriberBlockOptions.panels.themes.setBlockTheme(subscriberProps, themeSlug);
};
},
/**
* Block event `wpformsFormSelectorSetTheme` handler.
*
* @since 1.8.8
*
* @param {Object} subscriberProps Subscriber block properties
* @param {Object} subscriberBlockOptions Subscriber block options.
*
* @return {Function} Event handler.
*/
subscriberSetTheme: function subscriberSetTheme(subscriberProps, subscriberBlockOptions) {
// noinspection JSUnusedLocalSymbols
return function (e, block, themeSlug, triggerProps) {
var _subscriberBlockOptio3;
// eslint-disable-line no-unused-vars
if (subscriberProps.clientId === triggerProps.clientId) {
return;
}
if (!(subscriberBlockOptions !== null && subscriberBlockOptions !== void 0 && (_subscriberBlockOptio3 = subscriberBlockOptions.panels) !== null && _subscriberBlockOptio3 !== void 0 && _subscriberBlockOptio3.themes)) {
return;
}
// Set theme.
app.onSetTheme(subscriberProps);
};
},
/**
* Block JSX parts.
*
* @since 1.8.1
*
* @type {Object}
*/
jsxParts: {
/**
* Get main settings JSX code.
*
* @since 1.8.1
*
* @param {Object} attributes Block attributes.
* @param {Object} handlers Block event handlers.
* @param {Object} formOptions Form selector options.
*
* @return {JSX.Element} Main setting JSX code.
*/
getMainSettings: function getMainSettings(attributes, handlers, formOptions) {
// eslint-disable-line max-lines-per-function
if (!app.hasForms()) {
return app.jsxParts.printEmptyFormsNotice(attributes.clientId);
}
return /*#__PURE__*/React.createElement(InspectorControls, {
key: "wpforms-gutenberg-form-selector-inspector-main-settings"
}, /*#__PURE__*/React.createElement(PanelBody, {
className: "wpforms-gutenberg-panel wpforms-gutenberg-panel-form-settings",
title: strings.form_settings
}, /*#__PURE__*/React.createElement(SelectControl, {
label: strings.form_selected,
value: attributes.formId,
options: formOptions,
onChange: function onChange(value) {
return handlers.attrChange('formId', value);
}
}), attributes.formId ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
className: "wpforms-gutenberg-form-selector-actions"
}, /*#__PURE__*/React.createElement("a", {
href: urls.form_url.replace('{ID}', attributes.formId),
rel: "noreferrer",
target: "_blank"
}, strings.form_edit), isPro && isLicenseActive && /*#__PURE__*/React.createElement(React.Fragment, null, "\xA0\xA0|\xA0\xA0", /*#__PURE__*/React.createElement("a", {
href: urls.entries_url.replace('{ID}', attributes.formId),
rel: "noreferrer",
target: "_blank"
}, strings.form_entries))), /*#__PURE__*/React.createElement(ToggleControl, {
label: strings.show_title,
checked: attributes.displayTitle,
onChange: function onChange(value) {
return handlers.attrChange('displayTitle', value);
}
}), /*#__PURE__*/React.createElement(ToggleControl, {
label: strings.show_description,
checked: attributes.displayDesc,
onChange: function onChange(value) {
return handlers.attrChange('displayDesc', value);
}
})) : null, /*#__PURE__*/React.createElement("p", {
className: "wpforms-gutenberg-panel-notice"
}, /*#__PURE__*/React.createElement("strong", null, strings.panel_notice_head), strings.panel_notice_text, /*#__PURE__*/React.createElement("a", {
href: strings.panel_notice_link,
rel: "noreferrer",
target: "_blank"
}, strings.panel_notice_link_text))));
},
/**
* Print empty forms notice.
*
* @since 1.8.3
*
* @param {string} clientId Block client ID.
*
* @return {JSX.Element} Field styles JSX code.
*/
printEmptyFormsNotice: function printEmptyFormsNotice(clientId) {
return /*#__PURE__*/React.createElement(InspectorControls, {
key: "wpforms-gutenberg-form-selector-inspector-main-settings"
}, /*#__PURE__*/React.createElement(PanelBody, {
className: "wpforms-gutenberg-panel",
title: strings.form_settings
}, /*#__PURE__*/React.createElement("p", {
className: "wpforms-gutenberg-panel-notice wpforms-warning wpforms-empty-form-notice",
style: {
display: 'block'
}
}, /*#__PURE__*/React.createElement("strong", null, __('You haven’t created a form, yet!', 'wpforms-lite')), __('What are you waiting for?', 'wpforms-lite')), /*#__PURE__*/React.createElement("button", {
type: "button",
className: "get-started-button components-button is-secondary",
onClick: function onClick() {
app.openBuilderPopup(clientId);
}
}, __('Get Started', 'wpforms-lite'))));
},
/**
* Get Label styles JSX code.
*
* @since 1.8.1
*
* @param {Object} props Block properties.
* @param {Object} handlers Block event handlers.
* @param {Object} sizeOptions Size selector options.
*
* @return {Object} Label styles JSX code.
*/
getLabelStyles: function getLabelStyles(props, handlers, sizeOptions) {
return /*#__PURE__*/React.createElement(PanelBody, {
className: app.getPanelClass(props),
title: strings.label_styles
}, /*#__PURE__*/React.createElement(SelectControl, {
label: strings.size,
value: props.attributes.labelSize,
className: "wpforms-gutenberg-form-selector-fix-bottom-margin",
options: sizeOptions,
onChange: function onChange(value) {
return handlers.styleAttrChange('labelSize', value);
}
}), /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-color-picker"
}, /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-control-label"
}, strings.colors), /*#__PURE__*/React.createElement(PanelColorSettings, {
__experimentalIsRenderedInSidebar: true,
enableAlpha: true,
showTitle: false,
className: "wpforms-gutenberg-form-selector-color-panel",
colorSettings: [{
value: props.attributes.labelColor,
onChange: function onChange(value) {
return handlers.styleAttrChange('labelColor', value);
},
label: strings.label
}, {
value: props.attributes.labelSublabelColor,
onChange: function onChange(value) {
return handlers.styleAttrChange('labelSublabelColor', value);
},
label: strings.sublabel_hints.replace('&', '&')
}, {
value: props.attributes.labelErrorColor,
onChange: function onChange(value) {
return handlers.styleAttrChange('labelErrorColor', value);
},
label: strings.error_message
}]
})));
},
/**
* Get Page Indicator styles JSX code.
*
* @since 1.8.7
*
* @param {Object} props Block properties.
* @param {Object} handlers Block event handlers.
*
* @return {Object} Page Indicator styles JSX code.
*/
getPageIndicatorStyles: function getPageIndicatorStyles(props, handlers) {
// eslint-disable-line complexity
var hasPageBreak = app.hasPageBreak(formList, props.attributes.formId);
var hasRating = app.hasRating(formList, props.attributes.formId);
if (!hasPageBreak && !hasRating) {
return null;
}
var label = '';
if (hasPageBreak && hasRating) {
label = "".concat(strings.page_break, " / ").concat(strings.rating);
} else if (hasPageBreak) {
label = strings.page_break;
} else if (hasRating) {
label = strings.rating;
}
return /*#__PURE__*/React.createElement(PanelBody, {
className: app.getPanelClass(props),
title: strings.other_styles
}, /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-color-picker"
}, /*#__PURE__*/React.createElement("div", {
className: "wpforms-gutenberg-form-selector-control-label"
}, strings.colors), /*#__PURE__*/React.createElement(PanelColorSettings, {
__experimentalIsRenderedInSidebar: true,
enableAlpha: true,
showTitle: false,
className: "wpforms-gutenberg-form-selector-color-panel",
colorSettings: [{
value: props.attributes.pageBreakColor,
onChange: function onChange(value) {
return handlers.styleAttrChange('pageBreakColor', value);
},
label: label
}]
})));
},
/**
* Get style settings JSX code.
*
* @since 1.8.1
*
* @param {Object} props Block properties.
* @param {Object} handlers Block event handlers.
* @param {Object} sizeOptions Size selector options.
* @param {Object} blockOptions Block options loaded from external modules.
* @param {Object} uiState UI state.
*
* @return {Object} Inspector controls JSX code.
*/
getStyleSettings: function getStyleSettings(props, handlers, sizeOptions, blockOptions, uiState) {
return /*#__PURE__*/React.createElement(InspectorControls, {
key: "wpforms-gutenberg-form-selector-style-settings"
}, blockOptions.getThemesPanel(props, app, blockOptions.stockPhotos), blockOptions.getFieldStyles(props, handlers, sizeOptions, app), app.jsxParts.getLabelStyles(props, handlers, sizeOptions), blockOptions.getButtonStyles(props, handlers, sizeOptions, app), blockOptions.getContainerStyles(props, handlers, app, uiState), blockOptions.getBackgroundStyles(props, handlers, app, blockOptions.stockPhotos, uiState), app.jsxParts.getPageIndicatorStyles(props, handlers));
},
/**
* Get block content JSX code.
*
* @since 1.8.1
*
* @param {Object} props Block properties.
*
* @return {JSX.Element} Block content JSX code.
*/
getBlockFormContent: function getBlockFormContent(props) {
if (triggerServerRender) {
return /*#__PURE__*/React.createElement(ServerSideRender, {
key: "wpforms-gutenberg-form-selector-server-side-renderer",
block: "wpforms/form-selector",
attributes: props.attributes
});
}
var clientId = props.clientId;
var block = app.getBlockContainer(props);
// In the case of empty content, use server side renderer.
// This happens when the block is duplicated or converted to a reusable block.
if (!(block !== null && block !== void 0 && block.innerHTML)) {
triggerServerRender = true;
return app.jsxParts.getBlockFormContent(props);
}
blocks[clientId] = blocks[clientId] || {};
blocks[clientId].blockHTML = block.innerHTML;
blocks[clientId].loadedFormId = props.attributes.formId;
return /*#__PURE__*/React.createElement(Fragment, {
key: "wpforms-gutenberg-form-selector-fragment-form-html"
}, /*#__PURE__*/React.createElement("div", {
dangerouslySetInnerHTML: {
__html: blocks[clientId].blockHTML
}
}));
},
/**
* Get block preview JSX code.
*
* @since 1.8.1
*
* @return {JSX.Element} Block preview JSX code.
*/
getBlockPreview: function getBlockPreview() {
return /*#__PURE__*/React.createElement(Fragment, {
key: "wpforms-gutenberg-form-selector-fragment-block-preview"
}, /*#__PURE__*/React.createElement("img", {
src: wpforms_gutenberg_form_selector.block_preview_url,
style: {
width: '100%'
},
alt: ""
}));
},
/**
* Get block empty JSX code.
*
* @since 1.8.3
*
* @param {Object} props Block properties.
* @return {JSX.Element} Block empty JSX code.
*/
getEmptyFormsPreview: function getEmptyFormsPreview(props) {
var clientId = props.clientId;
return /*#__PURE__*/React.createElement(Fragment, {
key: "wpforms-gutenberg-form-selector-fragment-block-empty"
}, /*#__PURE__*/React.createElement("div", {
className: "wpforms-no-form-preview"
}, /*#__PURE__*/React.createElement("img", {
src: wpforms_gutenberg_form_selector.block_empty_url,
alt: ""
}), /*#__PURE__*/React.createElement("p", null, createInterpolateElement(__('You can use WPForms to build contact forms, surveys, payment forms, and more with just a few clicks.', 'wpforms-lite'), {
b: /*#__PURE__*/React.createElement("strong", null)
})), /*#__PURE__*/React.createElement("button", {
type: "button",
className: "get-started-button components-button is-primary",
onClick: function onClick() {
app.openBuilderPopup(clientId);
}
}, __('Get Started', 'wpforms-lite')), /*#__PURE__*/React.createElement("p", {
className: "empty-desc"
}, createInterpolateElement(__('Need some help? Check out our comprehensive guide.', 'wpforms-lite'), {
// eslint-disable-next-line jsx-a11y/anchor-has-content
a: /*#__PURE__*/React.createElement("a", {
href: wpforms_gutenberg_form_selector.wpforms_guide,
target: "_blank",
rel: "noopener noreferrer"
})
})), /*#__PURE__*/React.createElement("div", {
id: "wpforms-gutenberg-popup",
className: "wpforms-builder-popup"
}, /*#__PURE__*/React.createElement("iframe", {
src: "about:blank",
width: "100%",
height: "100%",
id: "wpforms-builder-iframe",
title: "WPForms Builder Popup"
}))));
},
/**
* Get block placeholder (form selector) JSX code.
*
* @since 1.8.1
*
* @param {Object} attributes Block attributes.
* @param {Object} handlers Block event handlers.
* @param {Object} formOptions Form selector options.
*
* @return {JSX.Element} Block placeholder JSX code.
*/
getBlockPlaceholder: function getBlockPlaceholder(attributes, handlers, formOptions) {
var isFormNotAvailable = attributes.formId && !app.isFormAvailable(attributes.formId);
return /*#__PURE__*/React.createElement(Placeholder, {
key: "wpforms-gutenberg-form-selector-wrap",
className: "wpforms-gutenberg-form-selector-wrap"
}, /*#__PURE__*/React.createElement("img", {
src: wpforms_gutenberg_form_selector.logo_url,
alt: ""
}), isFormNotAvailable && /*#__PURE__*/React.createElement("p", {
style: {
textAlign: 'center',
marginTop: '0'
}
}, strings.form_not_available_message), /*#__PURE__*/React.createElement(SelectControl, {
key: "wpforms-gutenberg-form-selector-select-control",
value: attributes.formId,
options: formOptions,
onChange: function onChange(value) {
return handlers.attrChange('formId', value);
}
}));
}
},
/**
* Determine if the form has a Page Break field.
*
* @since 1.8.7
*
* @param {Object} forms The forms' data object.
* @param {number|string} formId Form ID.
*
* @return {boolean} True when the form has a Page Break field, false otherwise.
*/
hasPageBreak: function hasPageBreak(forms, formId) {
var _JSON$parse;
var currentForm = forms.find(function (form) {
return parseInt(form.ID, 10) === parseInt(formId, 10);
});
if (!currentForm.post_content) {
return false;
}
var fields = (_JSON$parse = JSON.parse(currentForm.post_content)) === null || _JSON$parse === void 0 ? void 0 : _JSON$parse.fields;
return Object.values(fields).some(function (field) {
return field.type === 'pagebreak';
});
},
hasRating: function hasRating(forms, formId) {
var _JSON$parse2;
var currentForm = forms.find(function (form) {
return parseInt(form.ID, 10) === parseInt(formId, 10);
});
if (!currentForm.post_content || !isPro || !isLicenseActive) {
return false;
}
var fields = (_JSON$parse2 = JSON.parse(currentForm.post_content)) === null || _JSON$parse2 === void 0 ? void 0 : _JSON$parse2.fields;
return Object.values(fields).some(function (field) {
return field.type === 'rating';
});
},
/**
* Get Style Settings panel class.
*
* @since 1.8.1
*
* @param {Object} props Block properties.
* @param {string} panel Panel name.
*
* @return {string} Style Settings panel class.
*/
getPanelClass: function getPanelClass(props) {
var panel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
var cssClass = 'wpforms-gutenberg-panel wpforms-block-settings-' + props.clientId;
if (!app.isFullStylingEnabled()) {
cssClass += ' disabled_panel';
}
// Restrict styling panel for non-admins.
if (!(isAdmin || panel === 'themes')) {
cssClass += ' wpforms-gutenberg-panel-restricted';
}
return cssClass;
},
/**
* Get color panel settings CSS class.
*
* @since 1.8.8
*
* @param {string} borderStyle Border style value.
*
* @return {string} Style Settings panel class.
*/
getColorPanelClass: function getColorPanelClass(borderStyle) {
var cssClass = 'wpforms-gutenberg-form-selector-color-panel';
if (borderStyle === 'none') {
cssClass += ' wpforms-gutenberg-form-selector-border-color-disabled';
}
return cssClass;
},
/**
* Determine whether the full styling is enabled.
*
* @since 1.8.1
*
* @return {boolean} Whether the full styling is enabled.
*/
isFullStylingEnabled: function isFullStylingEnabled() {
return wpforms_gutenberg_form_selector.is_modern_markup && wpforms_gutenberg_form_selector.is_full_styling;
},
/**
* Determine whether the block has lead forms enabled.
*
* @since 1.9.0
*
* @param {Object} block Gutenberg block
*
* @return {boolean} Whether the block has lead forms enabled
*/
isLeadFormsEnabled: function isLeadFormsEnabled(block) {
if (!block) {
return false;
}
var $form = $(block.querySelector('.wpforms-container'));
return $form.hasClass('wpforms-lead-forms-container');
},
/**
* Get block container DOM element.
*
* @since 1.8.1
*
* @param {Object} props Block properties.
*
* @return {Element} Block container.
*/
getBlockContainer: function getBlockContainer(props) {
var blockSelector = "#block-".concat(props.clientId, " > div");
var block = document.querySelector(blockSelector);
// For FSE / Gutenberg plugin, we need to take a look inside the iframe.
if (!block) {
var editorCanvas = document.querySelector('iframe[name="editor-canvas"]');
block = editorCanvas === null || editorCanvas === void 0 ? void 0 : editorCanvas.contentWindow.document.querySelector(blockSelector);
}
return block;
},
/**
* Get form container in Block Editor.
*
* @since 1.9.3
*
* @param {number} formId Form ID.
*
* @return {Element|null} Form container.
*/
getFormBlock: function getFormBlock(formId) {
// First, try to find the iframe for blocks version 3.
var editorCanvas = document.querySelector('iframe[name="editor-canvas"]');
// If the iframe is found, try to find the form.
return (editorCanvas === null || editorCanvas === void 0 ? void 0 : editorCanvas.contentWindow.document.querySelector("#wpforms-".concat(formId))) || $("#wpforms-".concat(formId));
},
/**
* Update CSS variable(s) value(s) of the given attribute for given container on the preview.
*
* @since 1.8.8
*
* @param {string} attribute Style attribute: field-size, label-size, button-size, etc.
* @param {string} value Property new value.
* @param {Element} container Form container.
* @param {Object} props Block properties.
*/
updatePreviewCSSVarValue: function updatePreviewCSSVarValue(attribute, value, container, props) {
// eslint-disable-line complexity, max-lines-per-function
if (!container || !attribute) {
return;
}
var property = attribute.replace(/[A-Z]/g, function (letter) {
return "-".concat(letter.toLowerCase());
});
if (typeof customStylesHandlers[property] === 'function') {
customStylesHandlers[property](container, value);
return;
}
switch (property) {
case 'field-size':
case 'label-size':
case 'button-size':
case 'container-shadow-size':
for (var key in sizes[property][value]) {
container.style.setProperty("--wpforms-".concat(property, "-").concat(key), sizes[property][value][key]);
}
break;
case 'field-border-style':
if (value === 'none') {
app.toggleFieldBorderNoneCSSVarValue(container, true);
} else {
app.toggleFieldBorderNoneCSSVarValue(container, false);
container.style.setProperty("--wpforms-".concat(property), value);
}
break;
case 'button-background-color':
app.maybeUpdateAccentColor(props.attributes.buttonBorderColor, value, container);
value = app.maybeSetButtonAltBackgroundColor(value, props.attributes.buttonBorderColor, container);
app.maybeSetButtonAltTextColor(props.attributes.buttonTextColor, value, props.attributes.buttonBorderColor, container);
container.style.setProperty("--wpforms-".concat(property), value);
break;
case 'button-border-color':
app.maybeUpdateAccentColor(value, props.attributes.buttonBackgroundColor, container);
app.maybeSetButtonAltTextColor(props.attributes.buttonTextColor, props.attributes.buttonBackgroundColor, value, container);
container.style.setProperty("--wpforms-".concat(property), value);
break;
case 'button-text-color':
app.maybeSetButtonAltTextColor(value, props.attributes.buttonBackgroundColor, props.attributes.buttonBorderColor, container);
container.style.setProperty("--wpforms-".concat(property), value);
break;
default:
container.style.setProperty("--wpforms-".concat(property), value);
container.style.setProperty("--wpforms-".concat(property, "-spare"), value);
}
},
/**
* Set/unset field border vars in case of border-style is none.
*
* @since 1.8.8
*
* @param {Object} container Form container.
* @param {boolean} set True when set, false when unset.
*/
toggleFieldBorderNoneCSSVarValue: function toggleFieldBorderNoneCSSVarValue(container, set) {
var cont = container.querySelector('form');
if (set) {
cont.style.setProperty('--wpforms-field-border-style', 'solid');
cont.style.setProperty('--wpforms-field-border-size', '1px');
cont.style.setProperty('--wpforms-field-border-color', 'transparent');
return;
}
cont.style.setProperty('--wpforms-field-border-style', null);
cont.style.setProperty('--wpforms-field-border-size', null);
cont.style.setProperty('--wpforms-field-border-color', null);
},
/**
* Maybe set the button's alternative background color.
*
* @since 1.8.8
*
* @param {string} value Attribute value.
* @param {string} buttonBorderColor Button border color.
* @param {Object} container Form container.
*
* @return {string|*} New background color.
*/
maybeSetButtonAltBackgroundColor: function maybeSetButtonAltBackgroundColor(value, buttonBorderColor, container) {
// Setting css property value to child `form` element overrides the parent property value.
var form = container.querySelector('form');
form.style.setProperty('--wpforms-button-background-color-alt', value);
if (WPFormsUtils.cssColorsUtils.isTransparentColor(value)) {
return WPFormsUtils.cssColorsUtils.isTransparentColor(buttonBorderColor) ? defaultStyleSettings.buttonBackgroundColor : buttonBorderColor;
}
return value;
},
/**
* Maybe set the button's alternative text color.
*
* @since 1.8.8
*
* @param {string} value Attribute value.
* @param {string} buttonBackgroundColor Button background color.
* @param {string} buttonBorderColor Button border color.
* @param {Object} container Form container.
*/
maybeSetButtonAltTextColor: function maybeSetButtonAltTextColor(value, buttonBackgroundColor, buttonBorderColor, container) {
var form = container.querySelector('form');
var altColor = null;
value = value.toLowerCase();
if (WPFormsUtils.cssColorsUtils.isTransparentColor(value) || value === buttonBackgroundColor || WPFormsUtils.cssColorsUtils.isTransparentColor(buttonBackgroundColor) && value === buttonBorderColor) {
altColor = WPFormsUtils.cssColorsUtils.getContrastColor(buttonBackgroundColor);
}
container.style.setProperty("--wpforms-button-text-color-alt", value);
form.style.setProperty("--wpforms-button-text-color-alt", altColor);
},
/**
* Maybe update accent color.
*
* @since 1.8.8
*
* @param {string} color Color value.
* @param {string} buttonBackgroundColor Button background color.
* @param {Object} container Form container.
*/
maybeUpdateAccentColor: function maybeUpdateAccentColor(color, buttonBackgroundColor, container) {
// Setting css property value to child `form` element overrides the parent property value.
var form = container.querySelector('form');
// Fallback to default color if the border color is transparent.
color = WPFormsUtils.cssColorsUtils.isTransparentColor(color) ? defaultStyleSettings.buttonBackgroundColor : color;
if (WPFormsUtils.cssColorsUtils.isTransparentColor(buttonBackgroundColor)) {
form.style.setProperty('--wpforms-button-background-color-alt', 'rgba( 0, 0, 0, 0 )');
form.style.setProperty('--wpforms-button-background-color', color);
} else {
container.style.setProperty('--wpforms-button-background-color-alt', buttonBackgroundColor);
form.style.setProperty('--wpforms-button-background-color-alt', null);
form.style.setProperty('--wpforms-button-background-color', null);
}
},
/**
* Get settings fields event handlers.
*
* @since 1.8.1
*
* @param {Object} props Block properties.
*
* @return {Object} Object that contains event handlers for the settings fields.
*/
getSettingsFieldsHandlers: function getSettingsFieldsHandlers(props) {
// eslint-disable-line max-lines-per-function
return {
/**
* Field style attribute change event handler.
*
* @since 1.8.1
*
* @param {string} attribute Attribute name.
* @param {string} value New attribute value.
*/
styleAttrChange: function styleAttrChange(attribute, value) {
var block = app.getBlockContainer(props),
container = block.querySelector("#wpforms-".concat(props.attributes.formId)),
setAttr = {};
// Unset the color means setting the transparent color.
if (attribute.includes('Color')) {
value = value !== null && value !== void 0 ? value : 'rgba( 0, 0, 0, 0 )';
}
app.updatePreviewCSSVarValue(attribute, value, container, props);
setAttr[attribute] = value;
app.setBlockRuntimeStateVar(props.clientId, 'prevAttributesState', props.attributes);
props.setAttributes(setAttr);
triggerServerRender = false;
this.updateCopyPasteContent();
app.panels.themes.updateCustomThemeAttribute(attribute, value, props);
this.maybeToggleDropdown(props, attribute);
// Trigger event for developers.
el.$window.trigger('wpformsFormSelectorStyleAttrChange', [block, props, attribute, value]);
},
/**
* Handles the toggling of the dropdown menu's visibility.
*
* @since 1.8.8
*
* @param {Object} props The block properties.
* @param {string} attribute The name of the attribute being changed.
*/
maybeToggleDropdown: function maybeToggleDropdown(props, attribute) {
var _this = this;
// eslint-disable-line no-shadow
var formId = props.attributes.formId;
var menu = document.querySelector("#wpforms-form-".concat(formId, " .choices__list.choices__list--dropdown"));
var classicMenu = document.querySelector("#wpforms-form-".concat(formId, " .wpforms-field-select-style-classic select"));
if (attribute === 'fieldMenuColor') {
if (menu) {
menu.classList.add('is-active');
menu.parentElement.classList.add('is-open');
} else {
this.showClassicMenu(classicMenu);
}
clearTimeout(dropdownTimeout);
dropdownTimeout = setTimeout(function () {
var toClose = document.querySelector("#wpforms-form-".concat(formId, " .choices__list.choices__list--dropdown"));
if (toClose) {
toClose.classList.remove('is-active');
toClose.parentElement.classList.remove('is-open');
} else {
_this.hideClassicMenu(document.querySelector("#wpforms-form-".concat(formId, " .wpforms-field-select-style-classic select")));
}
}, 5000);
} else if (menu) {
menu.classList.remove('is-active');
} else {
this.hideClassicMenu(classicMenu);
}
},
/**
* Shows the classic menu.
*
* @since 1.8.8
*
* @param {Object} classicMenu The classic menu.
*/
showClassicMenu: function showClassicMenu(classicMenu) {
if (!classicMenu) {
return;
}
classicMenu.size = 2;
classicMenu.style.cssText = 'padding-top: 40px; padding-inline-end: 0; padding-inline-start: 0; position: relative;';
classicMenu.querySelectorAll('option').forEach(function (option) {
option.style.cssText = 'border-left: 1px solid #8c8f94; border-right: 1px solid #8c8f94; padding: 0 10px; z-index: 999999; position: relative;';
});
classicMenu.querySelector('option:last-child').style.cssText = 'border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; padding: 0 10px; border-left: 1px solid #8c8f94; border-right: 1px solid #8c8f94; border-bottom: 1px solid #8c8f94; z-index: 999999; position: relative;';
},
/**
* Hides the classic menu.
*
* @since 1.8.8
*
* @param {Object} classicMenu The classic menu.
*/
hideClassicMenu: function hideClassicMenu(classicMenu) {
if (!classicMenu) {
return;
}
classicMenu.size = 0;
classicMenu.style.cssText = 'padding-top: 0; padding-inline-end: 24px; padding-inline-start: 12px; position: relative;';
classicMenu.querySelectorAll('option').forEach(function (option) {
option.style.cssText = 'border: none;';
});
},
/**
* Field regular attribute change event handler.
*
* @since 1.8.1
*
* @param {string} attribute Attribute name.
* @param {string} value New attribute value.
*/
attrChange: function attrChange(attribute, value) {
var setAttr = {};
setAttr[attribute] = value;
app.setBlockRuntimeStateVar(props.clientId, 'prevAttributesState', props.attributes);
props.setAttributes(setAttr);
triggerServerRender = true;
this.updateCopyPasteContent();
},
/**
* Update content of the "Copy/Paste" fields.
*
* @since 1.8.1
*/
updateCopyPasteContent: function updateCopyPasteContent() {
var content = {};
var atts = wp.data.select('core/block-editor').getBlockAttributes(props.clientId);
for (var key in defaultStyleSettings) {
content[key] = atts[key];
}
props.setAttributes({
copyPasteJsonValue: JSON.stringify(content)
});
},
/**
* Paste settings handler.
*
* @since 1.8.1
*
* @param {string} value New attribute value.
*/
pasteSettings: function pasteSettings(value) {
value = value.trim();
var pasteAttributes = app.parseValidateJson(value);
if (!pasteAttributes) {
if (value) {
wp.data.dispatch('core/notices').createErrorNotice(strings.copy_paste_error, {
id: 'wpforms-json-parse-error'
});
}
this.updateCopyPasteContent();
return;
}
pasteAttributes.copyPasteJsonValue = value;
var themeSlug = app.panels.themes.maybeCreateCustomThemeFromAttributes(pasteAttributes);
app.setBlockRuntimeStateVar(props.clientId, 'prevAttributesState', props.attributes);
props.setAttributes(pasteAttributes);
app.panels.themes.setBlockTheme(props, themeSlug);
triggerServerRender = false;
}
};
},
/**
* Parse and validate JSON string.
*
* @since 1.8.1
*
* @param {string} value JSON string.
*
* @return {boolean|object} Parsed JSON object OR false on error.
*/
parseValidateJson: function parseValidateJson(value) {
if (typeof value !== 'string') {
return false;
}
var atts;
try {
atts = JSON.parse(value.trim());
} catch (error) {
atts = false;
}
return atts;
},
/**
* Get WPForms icon DOM element.
*
* @since 1.8.1
*
* @return {DOM.element} WPForms icon DOM element.
*/
getIcon: function getIcon() {
return createElement('svg', {
width: 20,
height: 20,
viewBox: '0 0 612 612',
className: 'dashicon'
}, createElement('path', {
fill: 'currentColor',
d: 'M544,0H68C30.445,0,0,30.445,0,68v476c0,37.556,30.445,68,68,68h476c37.556,0,68-30.444,68-68V68 C612,30.445,581.556,0,544,0z M464.44,68L387.6,120.02L323.34,68H464.44z M288.66,68l-64.26,52.02L147.56,68H288.66z M544,544H68 V68h22.1l136,92.14l79.9-64.6l79.56,64.6l136-92.14H544V544z M114.24,263.16h95.88v-48.28h-95.88V263.16z M114.24,360.4h95.88 v-48.62h-95.88V360.4z M242.76,360.4h255v-48.62h-255V360.4L242.76,360.4z M242.76,263.16h255v-48.28h-255V263.16L242.76,263.16z M368.22,457.3h129.54V408H368.22V457.3z'
}));
},
/**
* Get WPForms blocks.
*
* @since 1.8.8
*
* @return {Array} Blocks array.
*/
getWPFormsBlocks: function getWPFormsBlocks() {
var wpformsBlocks = wp.data.select('core/block-editor').getBlocks();
return wpformsBlocks.filter(function (props) {
return props.name === 'wpforms/form-selector';
});
},
/**
* Get WPForms blocks.
*
* @since 1.8.8
*
* @param {Object} props Block properties.
*
* @return {Object} Block attributes.
*/
isClientIdAttrUnique: function isClientIdAttrUnique(props) {
var wpformsBlocks = app.getWPFormsBlocks();
for (var key in wpformsBlocks) {
// Skip the current block.
if (wpformsBlocks[key].clientId === props.clientId) {
continue;
}
if (wpformsBlocks[key].attributes.clientId === props.attributes.clientId) {
return false;
}
}
return true;
},
/**
* Get block attributes.
*
* @since 1.8.1
*
* @return {Object} Block attributes.
*/
getBlockAttributes: function getBlockAttributes() {
return commonAttributes;
},
/**
* Get block runtime state variable.
*
* @since 1.8.8
*
* @param {string} clientId Block client ID.
* @param {string} varName Block runtime variable name.
*
* @return {*} Block runtime state variable value.
*/
getBlockRuntimeStateVar: function getBlockRuntimeStateVar(clientId, varName) {
var _blocks$clientId;
return (_blocks$clientId = blocks[clientId]) === null || _blocks$clientId === void 0 ? void 0 : _blocks$clientId[varName];
},
/**
* Set block runtime state variable value.
*
* @since 1.8.8
*
* @param {string} clientId Block client ID.
* @param {string} varName Block runtime state key.
* @param {*} value State variable value.
*
* @return {boolean} True on success.
*/
setBlockRuntimeStateVar: function setBlockRuntimeStateVar(clientId, varName, value) {
// eslint-disable-line complexity
if (!clientId || !varName) {
return false;
}
blocks[clientId] = blocks[clientId] || {};
blocks[clientId][varName] = value;
// Prevent referencing to object.
if (_typeof(value) === 'object' && !Array.isArray(value) && value !== null) {
blocks[clientId][varName] = _objectSpread({}, value);
}
return true;
},
/**
* Get form selector options.
*
* @since 1.8.1
*
* @return {Array} Form options.
*/
getFormOptions: function getFormOptions() {
var formOptions = formList.map(function (value) {
return {
value: value.ID,
label: value.post_title
};
});
formOptions.unshift({
value: '',
label: strings.form_select
});
return formOptions;
},
/**
* Get size selector options.
*
* @since 1.8.1
*
* @return {Array} Size options.
*/
getSizeOptions: function getSizeOptions() {
return [{
label: strings.small,
value: 'small'
}, {
label: strings.medium,
value: 'medium'
}, {
label: strings.large,
value: 'large'
}];
},
/**
* Event `wpformsFormSelectorEdit` handler.
*
* @since 1.8.1
*
* @param {Object} e Event object.
* @param {Object} props Block properties.
*/
blockEdit: function blockEdit(e, props) {
var block = app.getBlockContainer(props);
if (!(block !== null && block !== void 0 && block.dataset)) {
return;
}
app.initLeadFormSettings(block);
},
/**
* Init Lead Form Settings panels.
*
* @since 1.8.1
*
* @param {Element} block Block element.
* @param {Object} block.dataset Block element.
*/
initLeadFormSettings: function initLeadFormSettings(block) {
var _block$dataset;
if (!app.isFullStylingEnabled()) {
return;
}
if (!(block !== null && block !== void 0 && (_block$dataset = block.dataset) !== null && _block$dataset !== void 0 && _block$dataset.block)) {
return;
}
var clientId = block.dataset.block;
var $panel = $(".wpforms-block-settings-".concat(clientId));
var isLeadFormsEnabled = app.isLeadFormsEnabled(block);
if (isLeadFormsEnabled) {
$panel.addClass('disabled_panel').find('.wpforms-gutenberg-panel-notice.wpforms-lead-form-notice').css('display', 'block');
$panel.find('.wpforms-gutenberg-panel-notice.wpforms-use-modern-notice').css('display', 'none');
return;
}
$panel.removeClass('disabled_panel').removeClass('wpforms-lead-forms-enabled').find('.wpforms-gutenberg-panel-notice.wpforms-lead-form-notice').css('display', 'none');
$panel.find('.wpforms-gutenberg-panel-notice.wpforms-use-modern-notice').css('display', null);
},
/**
* Event `wpformsFormSelectorFormLoaded` handler.
*
* @since 1.8.1
*
* @param {Object} e Event object.
*/
formLoaded: function formLoaded(e) {
app.initLeadFormSettings(e.detail.block);
app.updateAccentColors(e.detail);
app.loadChoicesJS(e.detail);
app.initRichTextField(e.detail.formId);
app.initRepeaterField(e.detail.formId);
$(e.detail.block).off('click').on('click', app.blockClick);
},
/**
* Click on the block event handler.
*
* @since 1.8.1
*
* @param {Object} e Event object.
*/
blockClick: function blockClick(e) {
app.initLeadFormSettings(e.currentTarget);
},
/**
* Update accent colors of some fields in GB block in Modern Markup mode.
*
* @since 1.8.1
*
* @param {Object} detail Event details object.
*/
updateAccentColors: function updateAccentColors(detail) {
var _window$WPForms;
if (!wpforms_gutenberg_form_selector.is_modern_markup || !((_window$WPForms = window.WPForms) !== null && _window$WPForms !== void 0 && _window$WPForms.FrontendModern) || !(detail !== null && detail !== void 0 && detail.block)) {
return;
}
var $form = $(detail.block.querySelector("#wpforms-".concat(detail.formId))),
FrontendModern = window.WPForms.FrontendModern;
FrontendModern.updateGBBlockPageIndicatorColor($form);
FrontendModern.updateGBBlockIconChoicesColor($form);
FrontendModern.updateGBBlockRatingColor($form);
},
/**
* Init Modern style Dropdown fields (