diff --git a/packages/plugin/src/Bundles/Fields/FieldContainerBundle.php b/packages/plugin/src/Bundles/Fields/FieldContainerBundle.php index 8bd9e8fd64..2118642611 100644 --- a/packages/plugin/src/Bundles/Fields/FieldContainerBundle.php +++ b/packages/plugin/src/Bundles/Fields/FieldContainerBundle.php @@ -37,11 +37,34 @@ public function updateContainerAttributes(CompileFieldAttributesEvent $event): v } $field = $event->getField(); - $event - ->getAttributes() + + /** @var FieldAttributesCollection $attributes */ + $attributes = $event->getAttributes(); + + $attributes ->getContainer() ->replace('data-field-container', $field->getHandle()) ->replace('data-field-type', $field->getType()) ; + + $attributes + ->getLabel() + ->replace('data-field-label', $field->getHandle()) + ; + + $attributes + ->getInput() + ->replace('data-field-handle', $field->getHandle()) + ; + + $attributes + ->getInstructions() + ->replace('data-field-instructions', $field->getHandle()) + ; + + $attributes + ->getError() + ->replace('data-field-errors', $field->getHandle()) + ; } } diff --git a/packages/plugin/src/Bundles/Fields/Validation/TableValidation.php b/packages/plugin/src/Bundles/Fields/Validation/TableValidation.php index 34ad52a97e..f9b381d915 100644 --- a/packages/plugin/src/Bundles/Fields/Validation/TableValidation.php +++ b/packages/plugin/src/Bundles/Fields/Validation/TableValidation.php @@ -7,7 +7,7 @@ use Solspace\Freeform\Fields\Implementations\Pro\TableField; use Solspace\Freeform\Freeform; use Solspace\Freeform\Library\Bundles\FeatureBundle; -use Solspace\Freeform\Library\Helpers\ArrayHelper; +use Solspace\Freeform\Library\Helpers\RecursiveArrayHelper; use yii\base\Event; class TableValidation extends FeatureBundle @@ -76,7 +76,7 @@ public function validateRequired(ValidateEvent $event): void } $value = $field->getValue(); - $isSomeFilled = ArrayHelper::someRecursive($value, fn ($item) => !empty($item)); + $isSomeFilled = RecursiveArrayHelper::some($value, fn ($item) => !empty($item)); if (!$isSomeFilled) { $message = $field->getRequiredErrorMessage() ?: Freeform::t('This field is required'); @@ -106,7 +106,7 @@ public function validateRequiredColumns(ValidateEvent $event): void $message = Freeform::t($field->getRequiredErrorMessage() ?: 'This field is required'); $value = $field->getValue(); - $isSomeFilled = ArrayHelper::someRecursive($value, fn ($item) => !empty($item)); + $isSomeFilled = RecursiveArrayHelper::some($value, fn ($item) => !empty($item)); if (!$isSomeFilled) { $field->addError($message); diff --git a/packages/plugin/src/Bundles/Form/Attributes/AjaxAttributesBundle.php b/packages/plugin/src/Bundles/Form/Attributes/AjaxAttributesBundle.php new file mode 100644 index 0000000000..12039de309 --- /dev/null +++ b/packages/plugin/src/Bundles/Form/Attributes/AjaxAttributesBundle.php @@ -0,0 +1,51 @@ +getForm(); + $attributes = $form->getAttributes(); + + $fields = []; + foreach ($form->getFields() as $field) { + $field->addError('attribute-trigger'); + $fieldAttributes = $field->getAttributes(); + $field->removeError('attribute-trigger'); + + $fields[$field->getHandle()] = $fieldAttributes->toArray(); + } + + $manifest = [ + 'form' => [ + 'success' => $attributes->getSuccess()->toArray(), + 'error' => $attributes->getErrors()->toArray(), + ], + 'fields' => $fields, + ]; + + $serialized = $this->serializer->serialize($manifest, 'json'); + $manifestAttributes = new Attributes(['data-attributes-manifest' => $serialized]); + + $event->addChunk(""); + } +} diff --git a/packages/plugin/src/Fields/AbstractField.php b/packages/plugin/src/Fields/AbstractField.php index fbbb2afbd7..bcf9686ae9 100644 --- a/packages/plugin/src/Fields/AbstractField.php +++ b/packages/plugin/src/Fields/AbstractField.php @@ -362,9 +362,6 @@ public function hasErrors(): bool return !empty($errors); } - /** - * @return $this - */ public function addErrors(?array $errors = null): self { if (empty($errors)) { @@ -381,9 +378,6 @@ public function addErrors(?array $errors = null): self return $this; } - /** - * @return $this - */ public function addError(...$error): self { $this->addErrors($error); @@ -391,6 +385,16 @@ public function addError(...$error): self return $this; } + public function removeError(string $error): self + { + $this->errors = array_filter( + $this->errors, + fn ($existingError) => $existingError !== $error, + ); + + return $this; + } + /** * Return the field TYPE. */ diff --git a/packages/plugin/src/Fields/FieldInterface.php b/packages/plugin/src/Fields/FieldInterface.php index 9c4539729b..6ffffa82ae 100644 --- a/packages/plugin/src/Fields/FieldInterface.php +++ b/packages/plugin/src/Fields/FieldInterface.php @@ -120,6 +120,8 @@ public function hasErrors(): bool; public function addError(...$error): AbstractField; + public function removeError(string $error): AbstractField; + public function addErrors(array $errors): AbstractField; public function render(): Markup; diff --git a/packages/plugin/src/Library/Attributes/Attributes.php b/packages/plugin/src/Library/Attributes/Attributes.php index fa888f7d99..635d39c6fa 100644 --- a/packages/plugin/src/Library/Attributes/Attributes.php +++ b/packages/plugin/src/Library/Attributes/Attributes.php @@ -270,6 +270,36 @@ public function count(): int return \count($this->attributes); } + public function diff(self $attributes): self + { + $diff = new static(); + $reflection = new \ReflectionClass($this); + + foreach ($this->attributes as $key => $value) { + if ($attributes->get($key) !== $value) { + $a = explode(' ', $value); + $b = explode(' ', $attributes->get($key)); + + $arrayDiff = array_merge( + array_diff($a, $b), + array_diff($b, $a), + ); + $string = implode(' ', $arrayDiff); + + $diff->replace($key, $string); + } + } + + foreach ($reflection->getProperties() as $property) { + $type = $property->getType(); + if ($type && self::class === $type->getName()) { + $diff->{$property->getName()} = $this->{$property->getName()}->diff($attributes->{$property->getName()}); + } + } + + return $diff; + } + public function toArray(): array { $reflection = new \ReflectionClass($this); diff --git a/packages/plugin/src/Library/Helpers/RecursiveArrayHelper.php b/packages/plugin/src/Library/Helpers/RecursiveArrayHelper.php new file mode 100644 index 0000000000..2f4b0361d7 --- /dev/null +++ b/packages/plugin/src/Library/Helpers/RecursiveArrayHelper.php @@ -0,0 +1,40 @@ +":{precedence:20,associativity:v},">=":{precedence:20,associativity:v},"<=":{precedence:20,associativity:v},"not in":{precedence:20,associativity:v},in:{precedence:20,associativity:v},matches:{precedence:20,associativity:v},"..":{precedence:25,associativity:v},"+":{precedence:30,associativity:v},"-":{precedence:30,associativity:v},"~":{precedence:40,associativity:v},"*":{precedence:60,associativity:v},"/":{precedence:60,associativity:v},"%":{precedence:60,associativity:v},"**":{precedence:200,associativity:g}}),y(this,"parse",((e,t=[])=>{this.tokenStream=e,this.names=t,this.objectMatches={},this.cachedNames=null,this.nestedExecutions=0;let r=this.parseExpression();if(!this.tokenStream.isEOF())throw new n.default(`Unexpected token "${this.tokenStream.current.type}" of value "${this.tokenStream.current.value}".`,this.tokenStream.current.cursor,this.tokenStream.expression);return r})),y(this,"parseExpression",((e=0)=>{let t=this.getPrimary(),r=this.tokenStream.current;if(this.nestedExecutions++,this.nestedExecutions>100)throw new Error("Way to many executions on '"+r.toString()+"' of '"+this.tokenStream.toString()+"'");for(;r.test(i.Token.OPERATOR_TYPE)&&void 0!==this.binaryOperators[r.value]&&null!==this.binaryOperators[r.value]&&this.binaryOperators[r.value].precedence>=e;){let e=this.binaryOperators[r.value];this.tokenStream.next();let n=this.parseExpression(v===e.associativity?e.precedence+1:e.precedence);t=new a.default(r.value,t,n),r=this.tokenStream.current}return 0===e?this.parseConditionalExpression(t):t})),y(this,"getPrimary",(()=>{let e=this.tokenStream.current;if(e.test(i.Token.OPERATOR_TYPE)&&void 0!==this.unaryOperators[e.value]&&null!==this.unaryOperators[e.value]){let t=this.unaryOperators[e.value];this.tokenStream.next();let r=this.parseExpression(t.precedence);return this.parsePostfixExpression(new o.default(e.value,r))}if(e.test(i.Token.PUNCTUATION_TYPE,"(")){this.tokenStream.next();let e=this.parseExpression();return this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,")","An opened parenthesis is not properly closed"),this.parsePostfixExpression(e)}return this.parsePrimaryExpression()})),y(this,"hasVariable",(e=>this.getNames().indexOf(e)>=0)),y(this,"getNames",(()=>{if(null!==this.cachedNames)return this.cachedNames;if(this.names&&this.names.length>0){let e=[],t=0;this.objectMatches={};for(let r of this.names)"object"==typeof r?(this.objectMatches[Object.values(r)[0]]=t,e.push(Object.keys(r)[0]),e.push(Object.values(r)[0])):e.push(r),t++;return this.cachedNames=e,e}return[]})),y(this,"parseArrayExpression",(()=>{this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"[","An array element was expected");let e=new f.default,t=!0;for(;!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"]")&&(t||(this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,",","An array element must be followed by a comma"),!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"]")));)t=!1,e.addElement(this.parseExpression());return this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"]","An opened array is not properly closed"),e})),y(this,"parseHashExpression",(()=>{this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"{","A hash element was expected");let e=new f.default,t=!0;for(;!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"}")&&(t||(this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,",","An array element must be followed by a comma"),!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"}")));){t=!1;let r=null;if(this.tokenStream.current.test(i.Token.STRING_TYPE)||this.tokenStream.current.test(i.Token.NAME_TYPE)||this.tokenStream.current.test(i.Token.NUMBER_TYPE))r=new u.default(this.tokenStream.current.value),this.tokenStream.next();else{if(!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"(")){let e=this.tokenStream.current;throw new n.default(`A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "${e.type}" of value "${e.value}"`,e.cursor,this.tokenStream.expression)}r=this.parseExpression()}this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,":","A hash key must be followed by a colon (:)");let s=this.parseExpression();e.addElement(s,r)}return this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"}","An opened hash is not properly closed"),e})),y(this,"parsePostfixExpression",(e=>{let t=this.tokenStream.current;for(;i.Token.PUNCTUATION_TYPE===t.type;){if("."===t.value){if(this.tokenStream.next(),t=this.tokenStream.current,this.tokenStream.next(),i.Token.NAME_TYPE!==t.type&&(i.Token.OPERATOR_TYPE!==t.type||!/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/.test(t.value)))throw new n.default("Expected name",t.cursor,this.tokenStream.expression);let r=new u.default(t.value,!0),s=new d.default,a=null;if(this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"(")){a=p.default.METHOD_CALL;for(let e of Object.values(this.parseArguments().nodes))s.addElement(e)}else a=p.default.PROPERTY_CALL;e=new p.default(e,r,s,a)}else{if("["!==t.value)break;{this.tokenStream.next();let t=this.parseExpression();this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"]"),e=new p.default(e,t,new d.default,p.default.ARRAY_CALL)}}t=this.tokenStream.current}return e})),y(this,"parseArguments",(()=>{let e=[];for(this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"(","A list of arguments must begin with an opening parenthesis");!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,")");)0!==e.length&&this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,",","Arguments must be separated by a comma"),e.push(this.parseExpression());return this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,")","A list of arguments must be closed by a parenthesis"),new s.default(e)})),this.functions=e,this.tokenStream=null,this.names=null,this.objectMatches={},this.cachedNames=null,this.nestedExecutions=0}parseConditionalExpression(e){for(;this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"?");){let t,r;this.tokenStream.next(),this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,":")?(this.tokenStream.next(),t=e,r=this.parseExpression()):(t=this.parseExpression(),this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,":")?(this.tokenStream.next(),r=this.parseExpression()):r=new u.default(null)),e=new l.default(e,t,r)}return e}parsePrimaryExpression(){let e=this.tokenStream.current,t=null;switch(e.type){case i.Token.NAME_TYPE:switch(this.tokenStream.next(),e.value){case"true":case"TRUE":return new u.default(!0);case"false":case"FALSE":return new u.default(!1);case"null":case"NULL":return new u.default(null);default:if("("===this.tokenStream.current.value){if(void 0===this.functions[e.value])throw new n.default(`The function "${e.value}" does not exist`,e.cursor,this.tokenStream.expression,e.values,Object.keys(this.functions));t=new c.default(e.value,this.parseArguments())}else{if(!this.hasVariable(e.value))throw new n.default(`Variable "${e.value}" is not valid`,e.cursor,this.tokenStream.expression,e.value,this.getNames());let r=e.value;void 0!==this.objectMatches[r]&&(r=this.getNames()[this.objectMatches[r]]),t=new h.default(r)}}break;case i.Token.NUMBER_TYPE:case i.Token.STRING_TYPE:return this.tokenStream.next(),new u.default(e.value);default:if(e.test(i.Token.PUNCTUATION_TYPE,"["))t=this.parseArrayExpression();else{if(!e.test(i.Token.PUNCTUATION_TYPE,"{"))throw new n.default(`Unexpected token "${e.type}" of value "${e.value}"`,e.cursor,this.tokenStream.expression);t=this.parseHashExpression()}}return this.parsePostfixExpression(t)}}},1292:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.issetFn=t.default=void 0;var n=s(r(4923)),i=s(r(9068));function s(e){return e&&e.__esModule?e:{default:e}}class a extends i.default{getFunctions(){return[o]}}t.default=a;const o=t.issetFn=new n.default("isset",(function(e){return`isset(${e})`}),(function(e,t){let r="",n=[],i="",s="";for(let e=0;e0){if(void 0!==e[r]){let t=e[r];for(let e of n){if("array"===e.type){if(void 0===t[e.index])return!1;t=t[e.index]}if("object"===e.type){if(void 0===t[e.attribute])return!1;t=t[e.attribute]}}return!0}return!1}return void 0!==e[r]}))},1925:function(e,t,r){e.exports=function(e){var t=e+"";if("off"===(r(6078)("unicode.semantics")||"off"))return t.length;var n=0,i=0,s=function(e,t){var r=e.charCodeAt(t),n="",i="";if(r>=55296&&r<=56319){if(e.length<=t+1)throw new Error("High surrogate without following low surrogate");if((n=e.charCodeAt(t+1))<56320||n>57343)throw new Error("High surrogate without following low surrogate");return e.charAt(t)+e.charAt(t+1)}if(r>=56320&&r<=57343){if(0===t)throw new Error("Low surrogate without preceding high surrogate");if((i=e.charCodeAt(t-1))<55296||i>56319)throw new Error("Low surrogate without preceding high surrogate");return!1}return e.charAt(t)};for(n=0,i=0;n{if(this.position+=1,void 0===this.tokens[this.position])throw new i.default("Unexpected end of expression",this.last.cursor,this.expression)})),s(this,"expect",((e,t,r)=>{let n=this.current;if(!n.test(e,t)){let s="";r&&(s=r+". ");let a="";throw t&&(a=` with value "${t}"`),s+=`Unexpected token "${n.type}" of value "${n.value}" ("${e}" expected${a})`,new i.default(s,n.cursor,this.expression)}this.next()})),s(this,"isEOF",(()=>o.EOF_TYPE===this.current.type)),s(this,"isEqualTo",(e=>{if(null==e||!e instanceof a)return!1;if(e.tokens.length!==this.tokens.length)return!1;let t=e.position;e.position=0;let r=!0;for(let t of this.tokens){if(!e.current.isEqualTo(t)){r=!1;break}e.position{let t=[];if(!this.isEqualTo(e)){let r=0,n=e.position;e.position=0;for(let n of this.tokens){let i=n.diff(e.current);i.length>0&&t.push({index:r,diff:i}),e.positionthis.type===e&&(null===t||this.value===t))),s(this,"isEqualTo",(e=>!(null==e||!e instanceof o)&&e.value==this.value&&e.type===this.type&&e.cursor===this.cursor)),s(this,"diff",(e=>{let t=[];return this.isEqualTo(e)||(e.value!==this.value&&t.push(`Value: ${e.value} != ${this.value}`),e.cursor!==this.cursor&&t.push(`Cursor: ${e.cursor} != ${this.cursor}`),e.type!==this.type&&t.push(`Type: ${e.type} != ${this.type}`)),t})),this.value=t,this.type=e,this.cursor=r}toString(){return`${this.cursor} [${this.type}] ${this.value}`}}t.Token=o,s(o,"EOF_TYPE","end of expression"),s(o,"NAME_TYPE","name"),s(o,"NUMBER_TYPE","number"),s(o,"STRING_TYPE","string"),s(o,"OPERATOR_TYPE","operator"),s(o,"PUNCTUATION_TYPE","punctuation")},2536:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t=!1){super({},{value:e}),s(this,"compile",(e=>{e.repr(this.attributes.value,this.isIdentifier)})),s(this,"evaluate",((e,t)=>this.attributes.value)),s(this,"toArray",(()=>{let e=[],t=this.attributes.value;if(this.isIdentifier)e.push(t);else if(!0===t)e.push("true");else if(!1===t)e.push("false");else if(null===t)e.push("null");else if("number"==typeof t)e.push(t);else if("string"==typeof t)e.push(this.dumpString(t));else if(Array.isArray(t)){for(let r of t)e.push(","),e.push(new a(r));e[0]="[",e.push("]")}else if(this.isHash(t)){for(let r of Object.keys(t))e.push(", "),e.push(new a(r)),e.push(": "),e.push(new a(t[r]));e[0]="{",e.push("}")}return e})),this.isIdentifier=t,this.name="ConstantNode"}}t.default=a},2863:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.tokenize=function(e){let t=0,r=[],n=[],o=(e=e.replace(/\r|\n|\t|\v|\f/g," ")).length;for(;t=0)n.push([e[t],t]),r.push(new s.Token(s.Token.PUNCTUATION_TYPE,e[t],t+1)),++t;else if(")]}".indexOf(e[t])>=0){if(0===n.length)throw new i.default(`Unexpected "${e[t]}"`,t,e);let[a,o]=n.pop(),u=a.replace("(",")").replace("{","}").replace("[","]");if(e[t]!==u)throw new i.default(`Unclosed "${a}"`,o,e);r.push(new s.Token(s.Token.PUNCTUATION_TYPE,e[t],t+1)),++t}else{let n=u(e.substr(t));if(null!==n)r.push(new s.Token(s.Token.STRING_TYPE,n.captured,t+1)),t+=n.length;else{let n=h(e.substr(t));if(n)r.push(new s.Token(s.Token.OPERATOR_TYPE,n,t+1)),t+=n.length;else if(".,?:".indexOf(e[t])>=0)r.push(new s.Token(s.Token.PUNCTUATION_TYPE,e[t],t+1)),++t;else{let n=f(e.substr(t));if(!n)throw new i.default(`Unexpected character "${e[t]}"`,t,e);r.push(new s.Token(s.Token.NAME_TYPE,n,t+1)),t+=n.length}}}}if(r.push(new s.Token(s.Token.EOF_TYPE,null,t+1)),n.length>0){let[t,r]=n.pop();throw new i.default(`Unclosed "${t}"`,r,e)}return new s.TokenStream(e,r)};var n,i=(n=r(678))&&n.__esModule?n:{default:n},s=r(2520);function a(e){let t=null,r=e.match(/^[0-9]+(?:.[0-9]+)?/);return r&&r.length>0&&(t=r[0]),t}const o=/^"([^"\\]*(?:\\.[^"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)'/s;function u(e){let t=null;if(-1===["'",'"'].indexOf(e.substr(0,1)))return t;let r=o.exec(e);return null!==r&&r.length>0&&(t=r[1]?{captured:r[1]}:{captured:r[2]},t.length=r[0].length),t}const l=["&&","and","||","or","+","-","**","*","/","%","&","|","^","===","!==","!=","==","<=",">=","<",">","matches","not in","in","not","!","~",".."],c=["and","or","matches","not in","in","not"];function h(e){let t=null;for(let r of l)if(e.substr(0,r.length)===r){c.indexOf(r)>=0?e.substr(0,r.length+1)===r+" "&&(t=r):t=r;break}return t}function f(e){let t=null,r=e.match(/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/);return r&&r.length>0&&(t=r[0]),t}},3356:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(310),i=r(3428);function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}t.default=class{constructor(e={},t={}){s(this,"compile",(e=>{for(let t of Object.values(this.nodes))t.compile(e)})),s(this,"evaluate",((e,t)=>{let r=[];for(let n of Object.values(this.nodes))r.push(n.evaluate(e,t));return r})),s(this,"dump",(()=>{let e="";for(let t of this.toArray())e+=(0,n.is_scalar)(t)?t:t.dump();return e})),s(this,"dumpString",(e=>`"${(0,i.addcslashes)(e,'\0\t"\\')}"`)),s(this,"isHash",(e=>{let t=0;for(let r of Object.keys(e))if(r=parseInt(r),r!==t++)return!0;return!1})),this.name="Node",this.nodes=e,this.attributes=t}toString(){let e=[];for(let t of Object.keys(this.attributes)){let r="null";this.attributes[t]&&(r=this.attributes[t].toString()),e.push(`${t}: '${r}'`)}let t=[this.name+"("+e.join(", ")];if(this.nodes.length>0){for(let e of Object.values(this.nodes)){let r=e.toString().split("\n");for(let e of r)t.push(" "+e)}t.push(")")}else t[0]+=")";return t.join("\n")}toArray(){throw new Error(`Dumping a "${this.name}" instance is not supported yet.`)}}},3428:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.addcslashes=function(e,t){var r="",n=[],i=0,s=0,a="",o="",u="",l="",c="",h=0,f=0,d=0,p=0,m=0,y=[],v="",g=/%([\dA-Fa-f]+)/g,b=function(e,t){return(e+="").lengthh)for(s=h;s<=f;s++)n.push(String.fromCharCode(s));else n.push(".",u,l);i+=l.length+2}else c=String.fromCharCode(parseInt(u,8)),n.push(c);i+=d}else if(o+t.charAt(i+2)===".."){if(h=(u=a).charCodeAt(0),/\\\d/.test(t.charAt(i+3)+t.charAt(i+4)))l=t.slice(i+4).match(/^\d+/)[0],i+=1;else{if(!t.charAt(i+3))throw new Error("Range with no end point");l=t.charAt(i+3)}if((f=l.charCodeAt(0))>h)for(s=h;s<=f;s++)n.push(String.fromCharCode(s));else n.push(".",u,l);i+=l.length+2}else n.push(a);for(i=0;i126)switch(a){case"\n":r+="n";break;case"\t":r+="t";break;case"\r":r+="r";break;case"":r+="a";break;case"\v":r+="v";break;case"\b":r+="b";break;case"\f":r+="f";break;default:for(v=encodeURIComponent(a),null!==(y=g.exec(v))&&(r+=b(parseInt(y[1],16).toString(8),3));null!==(y=g.exec(v));)r+="\\"+b(parseInt(y[1],16).toString(8),3)}else r+=a;else r+=a;return r}},3553:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(2863),i=l(r(1226)),s=l(r(6436)),a=l(r(5690)),o=l(r(7538)),u=l(r(9646));function l(e){return e&&e.__esModule?e:{default:e}}function c(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}t.default=class{constructor(e=null,t=[]){c(this,"compile",((e,t=[])=>this.getCompiler().compile(this.parse(e,t).getNodes()).getSource())),c(this,"evaluate",((e,t={})=>this.parse(e,Object.keys(t)).getNodes().evaluate(this.functions,t))),c(this,"parse",((e,t)=>{if(e instanceof a.default)return e;t.sort(((e,t)=>{let r=e,n=t;return"object"==typeof e&&(r=Object.values(e)[0]),"object"==typeof t&&(n=Object.values(t)[0]),r.localeCompare(n)}));let r=[];for(let e of t){let t=e;"object"==typeof e&&(t=Object.keys(e)[0]+":"+Object.values(e)[0]),r.push(t)}let i=this.cache.getItem(this.fixedEncodeURIComponent(e+"//"+r.join("|"))),s=i.get();if(null===s){let r=this.getParser().parse((0,n.tokenize)(e),t);s=new a.default(e,r),i.set(s),this.cache.save(i)}return s})),c(this,"fixedEncodeURIComponent",(e=>encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16)})))),c(this,"register",((e,t,r)=>{if(null!==this.parser)throw new u.default("Registering functions after calling evaluate(), compile(), or parse() is not supported.");this.functions[e]={compiler:t,evaluator:r}})),c(this,"addFunction",(e=>{this.register(e.getName(),e.getCompiler(),e.getEvaluator())})),c(this,"registerProvider",(e=>{for(let t of e.getFunctions())this.addFunction(t)})),c(this,"getParser",(()=>(null===this.parser&&(this.parser=new i.default(this.functions)),this.parser))),c(this,"getCompiler",(()=>(null===this.compiler&&(this.compiler=new s.default(this.functions)),this.compiler.reset()))),this.functions=[],this.parser=null,this.compiler=null,this.cache=e||new o.default;for(let e of t)this.registerProvider(e)}_registerFunctions(){}}},3909:function(e,t,r){t.Ay=void 0;var n=i(r(3553));r(2863),i(r(1226)),i(r(4923)),i(r(6436)),i(r(7538)),i(r(9068)),i(r(1292)),i(r(5795)),i(r(9071)),i(r(2446));function i(e){return e&&e.__esModule?e:{default:e}}t.Ay=n.default},4222:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(9903))&&n.__esModule?n:{default:n};class s extends i.default{constructor(){super(),function(e,t,r){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"compile",(e=>{this.compileArguments(e,!1)})),this.name="ArgumentsNode"}toArray(){let e=[];for(let t of this.getKeyValuePairs())e.push(t.value),e.push(", ");return e.pop(),e}}t.default=s},4923:function(e,t){function r(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=class{constructor(e,t,n){r(this,"getName",(()=>this.name)),r(this,"getCompiler",(()=>this.compiler)),r(this,"getEvaluator",(()=>this.evaluator)),this.name=e,this.compiler=t,this.evaluator=n}}},5253:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t,r,n){super({node:e,attribute:t,arguments:r},{type:n}),s(this,"compile",(e=>{switch(this.attributes.type){case a.PROPERTY_CALL:e.compile(this.nodes.node).raw(".").raw(this.nodes.attribute.attributes.value);break;case a.METHOD_CALL:e.compile(this.nodes.node).raw(".").raw(this.nodes.attribute.attributes.value).raw("(").compile(this.nodes.arguments).raw(")");break;case a.ARRAY_CALL:e.compile(this.nodes.node).raw("[").compile(this.nodes.attribute).raw("]")}})),s(this,"evaluate",((e,t)=>{switch(this.attributes.type){case a.PROPERTY_CALL:let r=this.nodes.node.evaluate(e,t),n=this.nodes.attribute.attributes.value;if("object"!=typeof r)throw new Error(`Unable to get property "${n}" on a non-object: `+typeof r);return r[n];case a.METHOD_CALL:let i=this.nodes.node.evaluate(e,t),s=this.nodes.attribute.attributes.value;if("object"!=typeof i)throw new Error(`Unable to call method "${s}" on a non-object: `+typeof i);if(void 0===i[s])throw new Error(`Method "${s}" is undefined on object.`);if("function"!=typeof i[s])throw new Error(`Method "${s}" is not a function on object.`);let o=this.nodes.arguments.evaluate(e,t);return i[s].apply(null,o);case a.ARRAY_CALL:let u=this.nodes.node.evaluate(e,t);if(!Array.isArray(u)&&"object"!=typeof u)throw new Error("Unable to get an item on a non-array: "+typeof u);return u[this.nodes.attribute.evaluate(e,t)]}})),this.name="GetAttrNode"}toArray(){switch(this.attributes.type){case a.PROPERTY_CALL:return[this.nodes.node,".",this.nodes.attribute];case a.METHOD_CALL:return[this.nodes.node,".",this.nodes.attribute,"(",this.nodes.arguments,")"];case a.ARRAY_CALL:return[this.nodes.node,"[",this.nodes.attribute,"]"]}}}t.default=a,s(a,"PROPERTY_CALL",1),s(a,"METHOD_CALL",2),s(a,"ARRAY_CALL",3)},5474:function(e,t,r){e.exports=function(e,t,n){e=r(684)(e);var i="on"===r(6078)("unicode.semantics");i&&(e=e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\s\S]/g)||[]);var s=e.length,a=s;return t<0&&(t+=a),void 0!==n&&(a=n<0?n+a:n+t),!(t>s||t<0||t>a)&&(i?e.slice(t,a).join(""):e.slice(t,a))}},5547:function(e){var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.exports=function(e,r){var n="",i="",s="";if(1===arguments.length&&(r=e,e=""),"object"===(void 0===r?"undefined":t(r))){if("[object Array]"===Object.prototype.toString.call(r))return r.join(e);for(n in r)i+=s+r[n],s=e;return i}return r}},5650:function(e){e.exports=function(e,t,r){var n;return-1!==(n=(e+="").toLowerCase().indexOf((t+"").toLowerCase()))&&(r?e.substr(0,n):e.slice(n))}},5690:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(1939))&&n.__esModule?n:{default:n};class s extends i.default{constructor(e,t){super(e),function(e,t,r){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"getNodes",(()=>this.nodes)),this.nodes=t}}t.default=s},5757:function(e){e.exports=function(e){return(e+"").toUpperCase()}},5795:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=f(r(4923)),i=f(r(9068)),s=f(r(9490)),a=f(r(1925)),o=f(r(9216)),u=f(r(5757)),l=f(r(5474)),c=f(r(8237)),h=f(r(5650));function f(e){return e&&e.__esModule?e:{default:e}}class d extends i.default{getFunctions(){return[new n.default("strtolower",(e=>"strtolower("+e+")"),((e,t)=>(0,o.default)(t))),new n.default("strtoupper",(e=>"strtoupper("+e+")"),((e,t)=>(0,u.default)(t))),new n.default("explode",((e,t,r="null")=>`explode(${e}, ${t}, ${r})`),((e,t,r,n=null)=>(0,s.default)(t,r,n))),new n.default("strlen",(function(e){return`strlen(${e});`}),(function(e,t){return(0,a.default)(t)})),new n.default("strstr",(function(e,t,r){let n="";return r&&(n=`, ${r}`),`strstr(${e}, ${t}${n});`}),(function(e,t,r,n){return(0,c.default)(t,r,n)})),new n.default("stristr",(function(e,t,r){let n="";return r&&(n=`, ${r}`),`stristr(${e}, ${t}${n});`}),(function(e,t,r,n){return(0,h.default)(t,r,n)})),new n.default("substr",(function(e,t,r){let n="";return r&&(n=`, ${r}`),`substr(${e}, ${t}${n});`}),(function(e,t,r,n){return(0,l.default)(t,r,n)}))]}}t.default=d},6042:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getEditDistance=void 0,t.getEditDistance=function(e,t){if(0===e.length)return t.length;if(0===t.length)return e.length;let r,n,i=[];for(r=0;r<=t.length;r++)i[r]=[r];for(n=0;n<=e.length;n++)void 0===i[0]&&(i[0]=[]),i[0][n]=n;for(r=1;r<=t.length;r++)for(n=1;n<=e.length;n++)t.charAt(r-1)===e.charAt(n-1)?i[r][n]=i[r-1][n-1]:i[r][n]=Math.min(i[r-1][n-1]+1,Math.min(i[r][n-1]+1,i[r-1][n]+1));return void 0===i[t.length]&&(i[t.length]=[]),i[t.length][e.length]}},6075:function(e){e.exports=function(e){var t={},r=arguments.length,n=r-1,i="",s={},a=0,o="";e:for(i in e)t:for(a=1;a{e.raw(this.attributes.name)})),s(this,"evaluate",((e,t)=>t[this.attributes.name])),this.name="NameNode"}toArray(){return[this.attributes.name]}}t.default=a},6117:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t){super({node:t},{operator:e}),s(this,"compile",(e=>{e.raw("(").raw(a.operators[this.attributes.operator]).compile(this.nodes.node).raw(")")})),s(this,"evaluate",((e,t)=>{let r=this.nodes.node.evaluate(e,t);switch(this.attributes.operator){case"not":case"!":return!r;case"-":return-r}return r})),this.name="UnaryNode"}toArray(){return["(",this.attributes.operator+" ",this.nodes.node,")"]}}t.default=a,s(a,"operators",{"!":"!",not:"!","+":"+","-":"-"})},6141:function(e){var t="[ \\t]+",r="[ \\t]*",n="(?:([ap])\\.?m\\.?([\\t ]|$))",i="(2[0-4]|[01]?[0-9])",s="([01][0-9]|2[0-4])",a="(0?[1-9]|1[0-2])",o="([0-5]?[0-9])",u="([0-5][0-9])",l="(60|[0-5]?[0-9])",c="(60|[0-5][0-9])",h="(?:\\.([0-9]+))",f="sunday|monday|tuesday|wednesday|thursday|friday|saturday",d="sun|mon|tue|wed|thu|fri|sat",p=f+"|"+d+"|weekdays?",m="first|second|third|fourth|fifth|sixth|seventh|eighth?|ninth|tenth|eleventh|twelfth",y="next|last|previous|this",v="(?:second|sec|minute|min|hour|day|fortnight|forthnight|month|year)s?|weeks|"+p,g="([0-9]{1,4})",b="([0-9]{4})",w="(1[0-2]|0?[0-9])",x="(0[0-9]|1[0-2])",k="(?:(3[01]|[0-2]?[0-9])(?:st|nd|rd|th)?)",T="(0[0-9]|[1-2][0-9]|3[01])",E="january|february|march|april|may|june|july|august|september|october|november|december",O="jan|feb|mar|apr|may|jun|jul|aug|sept?|oct|nov|dec",P="("+E+"|"+O+"|i[vx]|vi{0,3}|xi{0,2}|i{1,3})",S="((?:GMT)?([+-])"+i+":?"+o+"?)",A=P+"[ .\\t-]*"+k+"[,.stndrh\\t ]*";function _(e,t){switch(t=t&&t.toLowerCase()){case"a":e+=12===e?-12:0;break;case"p":e+=12!==e?12:0}return e}function N(e){var t=+e;return e.length<4&&t<100&&(t+=t<70?2e3:1900),t}function j(e){return{jan:0,january:0,i:0,feb:1,february:1,ii:1,mar:2,march:2,iii:2,apr:3,april:3,iv:3,may:4,v:4,jun:5,june:5,vi:5,jul:6,july:6,vii:6,aug:7,august:7,viii:7,sep:8,sept:8,september:8,ix:8,oct:9,october:9,x:9,nov:10,november:10,xi:10,dec:11,december:11,xii:11}[e.toLowerCase()]}function M(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return{mon:1,monday:1,tue:2,tuesday:2,wed:3,wednesday:3,thu:4,thursday:4,fri:5,friday:5,sat:6,saturday:6,sun:0,sunday:0}[e.toLowerCase()]||t}function R(e,t){if(!(e=e&&e.match(/(?:GMT)?([+-])(\d+)(:?)(\d{0,2})/i)))return t;var r="-"===e[1]?-1:1,n=+e[2],i=+e[4];return e[4]||e[3]||(i=Math.floor(n%100),n=Math.floor(n/100)),r*(60*n+i)*60}var C={acdt:37800,acst:34200,addt:-7200,adt:-10800,aedt:39600,aest:36e3,ahdt:-32400,ahst:-36e3,akdt:-28800,akst:-32400,amt:-13840,apt:-10800,ast:-14400,awdt:32400,awst:28800,awt:-10800,bdst:7200,bdt:-36e3,bmt:-14309,bst:3600,cast:34200,cat:7200,cddt:-14400,cdt:-18e3,cemt:10800,cest:7200,cet:3600,cmt:-15408,cpt:-18e3,cst:-21600,cwt:-18e3,chst:36e3,dmt:-1521,eat:10800,eddt:-10800,edt:-14400,eest:10800,eet:7200,emt:-26248,ept:-14400,est:-18e3,ewt:-14400,ffmt:-14660,fmt:-4056,gdt:39600,gmt:0,gst:36e3,hdt:-34200,hkst:32400,hkt:28800,hmt:-19776,hpt:-34200,hst:-36e3,hwt:-34200,iddt:14400,idt:10800,imt:25025,ist:7200,jdt:36e3,jmt:8440,jst:32400,kdt:36e3,kmt:5736,kst:30600,lst:9394,mddt:-18e3,mdst:16279,mdt:-21600,mest:7200,met:3600,mmt:9017,mpt:-21600,msd:14400,msk:10800,mst:-25200,mwt:-21600,nddt:-5400,ndt:-9052,npt:-9e3,nst:-12600,nwt:-9e3,nzdt:46800,nzmt:41400,nzst:43200,pddt:-21600,pdt:-25200,pkst:21600,pkt:18e3,plmt:25590,pmt:-13236,ppmt:-17340,ppt:-25200,pst:-28800,pwt:-25200,qmt:-18840,rmt:5794,sast:7200,sdmt:-16800,sjmt:-20173,smt:-13884,sst:-39600,tbmt:10751,tmt:12344,uct:0,utc:0,wast:7200,wat:3600,wemt:7200,west:3600,wet:0,wib:25200,wita:28800,wit:32400,wmt:5040,yddt:-25200,ydt:-28800,ypt:-28800,yst:-32400,ywt:-28800,a:3600,b:7200,c:10800,d:14400,e:18e3,f:21600,g:25200,h:28800,i:32400,k:36e3,l:39600,m:43200,n:-3600,o:-7200,p:-10800,q:-14400,r:-18e3,s:-21600,t:-25200,u:-28800,v:-32400,w:-36e3,x:-39600,y:-43200,z:0},U={yesterday:{regex:/^yesterday/i,name:"yesterday",callback:function(){return this.rd-=1,this.resetTime()}},now:{regex:/^now/i,name:"now"},noon:{regex:/^noon/i,name:"noon",callback:function(){return this.resetTime()&&this.time(12,0,0,0)}},midnightOrToday:{regex:/^(midnight|today)/i,name:"midnight | today",callback:function(){return this.resetTime()}},tomorrow:{regex:/^tomorrow/i,name:"tomorrow",callback:function(){return this.rd+=1,this.resetTime()}},timestamp:{regex:/^@(-?\d+)/i,name:"timestamp",callback:function(e,t){return this.rs+=+t,this.y=1970,this.m=0,this.d=1,this.dates=0,this.resetTime()&&this.zone(0)}},firstOrLastDay:{regex:/^(first|last) day of/i,name:"firstdayof | lastdayof",callback:function(e,t){"first"===t.toLowerCase()?this.firstOrLastDayOfMonth=1:this.firstOrLastDayOfMonth=-1}},backOrFrontOf:{regex:RegExp("^(back|front) of "+i+r+n+"?","i"),name:"backof | frontof",callback:function(e,t,r,n){var i=+r,s=15;return"back"===t.toLowerCase()||(i-=1,s=45),i=_(i,n),this.resetTime()&&this.time(i,s,0,0)}},weekdayOf:{regex:RegExp("^("+m+"|"+y+")"+t+"("+f+"|"+d+")"+t+"of","i"),name:"weekdayof"},mssqltime:{regex:RegExp("^"+a+":"+u+":"+c+"[:.]([0-9]+)"+n,"i"),name:"mssqltime",callback:function(e,t,r,n,i,s){return this.time(_(+t,s),+r,+n,+i.substr(0,3))}},oracledate:{regex:/^(\d{2})-([A-Z]{3})-(\d{2})$/i,name:"d-M-y",callback:function(e,t,r,n){var i={JAN:0,FEB:1,MAR:2,APR:3,MAY:4,JUN:5,JUL:6,AUG:7,SEP:8,OCT:9,NOV:10,DEC:11}[r.toUpperCase()];return this.ymd(2e3+parseInt(n,10),i,parseInt(t,10))}},timeLong12:{regex:RegExp("^"+a+"[:.]"+o+"[:.]"+c+r+n,"i"),name:"timelong12",callback:function(e,t,r,n,i){return this.time(_(+t,i),+r,+n,0)}},timeShort12:{regex:RegExp("^"+a+"[:.]"+u+r+n,"i"),name:"timeshort12",callback:function(e,t,r,n){return this.time(_(+t,n),+r,0,0)}},timeTiny12:{regex:RegExp("^"+a+r+n,"i"),name:"timetiny12",callback:function(e,t,r){return this.time(_(+t,r),0,0,0)}},soap:{regex:RegExp("^"+b+"-"+x+"-"+T+"T"+s+":"+u+":"+c+h+S+"?","i"),name:"soap",callback:function(e,t,r,n,i,s,a,o,u){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,+o.substr(0,3))&&this.zone(R(u))}},wddx:{regex:RegExp("^"+b+"-"+w+"-"+k+"T"+i+":"+o+":"+l),name:"wddx",callback:function(e,t,r,n,i,s,a){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,0)}},exif:{regex:RegExp("^"+b+":"+x+":"+T+" "+s+":"+u+":"+c,"i"),name:"exif",callback:function(e,t,r,n,i,s,a){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,0)}},xmlRpc:{regex:RegExp("^"+b+x+T+"T"+i+":"+u+":"+c),name:"xmlrpc",callback:function(e,t,r,n,i,s,a){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,0)}},xmlRpcNoColon:{regex:RegExp("^"+b+x+T+"[Tt]"+i+u+c),name:"xmlrpcnocolon",callback:function(e,t,r,n,i,s,a){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,0)}},clf:{regex:RegExp("^"+k+"/("+O+")/"+b+":"+s+":"+u+":"+c+t+S,"i"),name:"clf",callback:function(e,t,r,n,i,s,a,o){return this.ymd(+n,j(r),+t)&&this.time(+i,+s,+a,0)&&this.zone(R(o))}},iso8601long:{regex:RegExp("^t?"+i+"[:.]"+o+"[:.]"+l+h,"i"),name:"iso8601long",callback:function(e,t,r,n,i){return this.time(+t,+r,+n,+i.substr(0,3))}},dateTextual:{regex:RegExp("^"+P+"[ .\\t-]*"+k+"[,.stndrh\\t ]+"+g,"i"),name:"datetextual",callback:function(e,t,r,n){return this.ymd(N(n),j(t),+r)}},pointedDate4:{regex:RegExp("^"+k+"[.\\t-]"+w+"[.-]"+b),name:"pointeddate4",callback:function(e,t,r,n){return this.ymd(+n,r-1,+t)}},pointedDate2:{regex:RegExp("^"+k+"[.\\t]"+w+"\\.([0-9]{2})"),name:"pointeddate2",callback:function(e,t,r,n){return this.ymd(N(n),r-1,+t)}},timeLong24:{regex:RegExp("^t?"+i+"[:.]"+o+"[:.]"+l),name:"timelong24",callback:function(e,t,r,n){return this.time(+t,+r,+n,0)}},dateNoColon:{regex:RegExp("^"+b+x+T),name:"datenocolon",callback:function(e,t,r,n){return this.ymd(+t,r-1,+n)}},pgydotd:{regex:RegExp("^"+b+"\\.?(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])"),name:"pgydotd",callback:function(e,t,r){return this.ymd(+t,0,+r)}},timeShort24:{regex:RegExp("^t?"+i+"[:.]"+o,"i"),name:"timeshort24",callback:function(e,t,r){return this.time(+t,+r,0,0)}},iso8601noColon:{regex:RegExp("^t?"+s+u+c,"i"),name:"iso8601nocolon",callback:function(e,t,r,n){return this.time(+t,+r,+n,0)}},iso8601dateSlash:{regex:RegExp("^"+b+"/"+x+"/"+T+"/"),name:"iso8601dateslash",callback:function(e,t,r,n){return this.ymd(+t,r-1,+n)}},dateSlash:{regex:RegExp("^"+b+"/"+w+"/"+k),name:"dateslash",callback:function(e,t,r,n){return this.ymd(+t,r-1,+n)}},american:{regex:RegExp("^"+w+"/"+k+"/"+g),name:"american",callback:function(e,t,r,n){return this.ymd(N(n),t-1,+r)}},americanShort:{regex:RegExp("^"+w+"/"+k),name:"americanshort",callback:function(e,t,r){return this.ymd(this.y,t-1,+r)}},gnuDateShortOrIso8601date2:{regex:RegExp("^"+g+"-"+w+"-"+k),name:"gnudateshort | iso8601date2",callback:function(e,t,r,n){return this.ymd(N(t),r-1,+n)}},iso8601date4:{regex:RegExp("^([+-]?[0-9]{4})-"+x+"-"+T),name:"iso8601date4",callback:function(e,t,r,n){return this.ymd(+t,r-1,+n)}},gnuNoColon:{regex:RegExp("^t?"+s+u,"i"),name:"gnunocolon",callback:function(e,t,r){switch(this.times){case 0:return this.time(+t,+r,0,this.f);case 1:return this.y=100*t+ +r,this.times++,!0;default:return!1}}},gnuDateShorter:{regex:RegExp("^"+b+"-"+w),name:"gnudateshorter",callback:function(e,t,r){return this.ymd(+t,r-1,1)}},pgTextReverse:{regex:RegExp("^(\\d{3,4}|[4-9]\\d|3[2-9])-("+O+")-"+T,"i"),name:"pgtextreverse",callback:function(e,t,r,n){return this.ymd(N(t),j(r),+n)}},dateFull:{regex:RegExp("^"+k+"[ \\t.-]*"+P+"[ \\t.-]*"+g,"i"),name:"datefull",callback:function(e,t,r,n){return this.ymd(N(n),j(r),+t)}},dateNoDay:{regex:RegExp("^"+P+"[ .\\t-]*"+b,"i"),name:"datenoday",callback:function(e,t,r){return this.ymd(+r,j(t),1)}},dateNoDayRev:{regex:RegExp("^"+b+"[ .\\t-]*"+P,"i"),name:"datenodayrev",callback:function(e,t,r){return this.ymd(+t,j(r),1)}},pgTextShort:{regex:RegExp("^("+O+")-"+T+"-"+g,"i"),name:"pgtextshort",callback:function(e,t,r,n){return this.ymd(N(n),j(t),+r)}},dateNoYear:{regex:RegExp("^"+A,"i"),name:"datenoyear",callback:function(e,t,r){return this.ymd(this.y,j(t),+r)}},dateNoYearRev:{regex:RegExp("^"+k+"[ .\\t-]*"+P,"i"),name:"datenoyearrev",callback:function(e,t,r){return this.ymd(this.y,j(r),+t)}},isoWeekDay:{regex:RegExp("^"+b+"-?W(0[1-9]|[1-4][0-9]|5[0-3])(?:-?([0-7]))?"),name:"isoweekday | isoweek",callback:function(e,t,r,n){if(n=n?+n:1,!this.ymd(+t,0,1))return!1;var i=new Date(this.y,this.m,this.d).getDay();i=0-(i>4?i-7:i),this.rd+=i+7*(r-1)+n}},relativeText:{regex:RegExp("^("+m+"|"+y+")"+t+"("+v+")","i"),name:"relativetext",callback:function(e,t,r){var n,i={amount:{last:-1,previous:-1,this:0,first:1,next:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eight:8,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12}[n=t.toLowerCase()],behavior:{this:1}[n]||0}.amount;switch(r.toLowerCase()){case"sec":case"secs":case"second":case"seconds":this.rs+=i;break;case"min":case"mins":case"minute":case"minutes":this.ri+=i;break;case"hour":case"hours":this.rh+=i;break;case"day":case"days":this.rd+=i;break;case"fortnight":case"fortnights":case"forthnight":case"forthnights":this.rd+=14*i;break;case"week":case"weeks":this.rd+=7*i;break;case"month":case"months":this.rm+=i;break;case"year":case"years":this.ry+=i;break;case"mon":case"monday":case"tue":case"tuesday":case"wed":case"wednesday":case"thu":case"thursday":case"fri":case"friday":case"sat":case"saturday":case"sun":case"sunday":this.resetTime(),this.weekday=M(r,7),this.weekdayBehavior=1,this.rd+=7*(i>0?i-1:i)}}},relative:{regex:RegExp("^([+-]*)[ \\t]*(\\d+)"+r+"("+v+"|week)","i"),name:"relative",callback:function(e,t,r,n){var i=t.replace(/[^-]/g,"").length,s=+r*Math.pow(-1,i);switch(n.toLowerCase()){case"sec":case"secs":case"second":case"seconds":this.rs+=s;break;case"min":case"mins":case"minute":case"minutes":this.ri+=s;break;case"hour":case"hours":this.rh+=s;break;case"day":case"days":this.rd+=s;break;case"fortnight":case"fortnights":case"forthnight":case"forthnights":this.rd+=14*s;break;case"week":case"weeks":this.rd+=7*s;break;case"month":case"months":this.rm+=s;break;case"year":case"years":this.ry+=s;break;case"mon":case"monday":case"tue":case"tuesday":case"wed":case"wednesday":case"thu":case"thursday":case"fri":case"friday":case"sat":case"saturday":case"sun":case"sunday":this.resetTime(),this.weekday=M(n,7),this.weekdayBehavior=1,this.rd+=7*(s>0?s-1:s)}}},dayText:{regex:RegExp("^("+p+")","i"),name:"daytext",callback:function(e,t){this.resetTime(),this.weekday=M(t,0),2!==this.weekdayBehavior&&(this.weekdayBehavior=1)}},relativeTextWeek:{regex:RegExp("^("+y+")"+t+"week","i"),name:"relativetextweek",callback:function(e,t){switch(this.weekdayBehavior=2,t.toLowerCase()){case"this":this.rd+=0;break;case"next":this.rd+=7;break;case"last":case"previous":this.rd-=7}isNaN(this.weekday)&&(this.weekday=1)}},monthFullOrMonthAbbr:{regex:RegExp("^("+E+"|"+O+")","i"),name:"monthfull | monthabbr",callback:function(e,t){return this.ymd(this.y,j(t),this.d)}},tzCorrection:{regex:RegExp("^"+S,"i"),name:"tzcorrection",callback:function(e){return this.zone(R(e))}},tzAbbr:{regex:RegExp("^\\(?([a-zA-Z]{1,6})\\)?"),name:"tzabbr",callback:function(e,t){var r=C[t.toLowerCase()];return!isNaN(r)&&this.zone(r)}},ago:{regex:/^ago/i,name:"ago",callback:function(){this.ry=-this.ry,this.rm=-this.rm,this.rd=-this.rd,this.rh=-this.rh,this.ri=-this.ri,this.rs=-this.rs,this.rf=-this.rf}},year4:{regex:RegExp("^"+b),name:"year4",callback:function(e,t){return this.y=+t,!0}},whitespace:{regex:/^[ .,\t]+/,name:"whitespace"},dateShortWithTimeLong:{regex:RegExp("^"+A+"t?"+i+"[:.]"+o+"[:.]"+l,"i"),name:"dateshortwithtimelong",callback:function(e,t,r,n,i,s){return this.ymd(this.y,j(t),+r)&&this.time(+n,+i,+s,0)}},dateShortWithTimeLong12:{regex:RegExp("^"+A+a+"[:.]"+o+"[:.]"+c+r+n,"i"),name:"dateshortwithtimelong12",callback:function(e,t,r,n,i,s,a){return this.ymd(this.y,j(t),+r)&&this.time(_(+n,a),+i,+s,0)}},dateShortWithTimeShort:{regex:RegExp("^"+A+"t?"+i+"[:.]"+o,"i"),name:"dateshortwithtimeshort",callback:function(e,t,r,n,i){return this.ymd(this.y,j(t),+r)&&this.time(+n,+i,0,0)}},dateShortWithTimeShort12:{regex:RegExp("^"+A+a+"[:.]"+u+r+n,"i"),name:"dateshortwithtimeshort12",callback:function(e,t,r,n,i,s){return this.ymd(this.y,j(t),+r)&&this.time(_(+n,s),+i,0,0)}}},I={y:NaN,m:NaN,d:NaN,h:NaN,i:NaN,s:NaN,f:NaN,ry:0,rm:0,rd:0,rh:0,ri:0,rs:0,rf:0,weekday:NaN,weekdayBehavior:0,firstOrLastDayOfMonth:0,z:NaN,dates:0,times:0,zones:0,ymd:function(e,t,r){return!(this.dates>0||(this.dates++,this.y=e,this.m=t,this.d=r,0))},time:function(e,t,r,n){return!(this.times>0||(this.times++,this.h=e,this.i=t,this.s=r,this.f=n,0))},resetTime:function(){return this.h=0,this.i=0,this.s=0,this.f=0,this.times=0,!0},zone:function(e){return this.zones<=1&&(this.zones++,this.z=e,!0)},toDate:function(e){switch(this.dates&&!this.times&&(this.h=this.i=this.s=this.f=0),isNaN(this.y)&&(this.y=e.getFullYear()),isNaN(this.m)&&(this.m=e.getMonth()),isNaN(this.d)&&(this.d=e.getDate()),isNaN(this.h)&&(this.h=e.getHours()),isNaN(this.i)&&(this.i=e.getMinutes()),isNaN(this.s)&&(this.s=e.getSeconds()),isNaN(this.f)&&(this.f=e.getMilliseconds()),this.firstOrLastDayOfMonth){case 1:this.d=1;break;case-1:this.d=0,this.m+=1}if(!isNaN(this.weekday)){var t=new Date(e.getTime());t.setFullYear(this.y,this.m,this.d),t.setHours(this.h,this.i,this.s,this.f);var r=t.getDay();if(2===this.weekdayBehavior)0===r&&0!==this.weekday&&(this.weekday=-6),0===this.weekday&&0!==r&&(this.weekday=7),this.d-=r,this.d+=this.weekday;else{var n=this.weekday-r;(this.rd<0&&n<0||this.rd>=0&&n<=-this.weekdayBehavior)&&(n+=7),this.weekday>=0?this.d+=n:this.d-=7-(Math.abs(this.weekday)-r),this.weekday=NaN}}this.y+=this.ry,this.m+=this.rm,this.d+=this.rd,this.h+=this.rh,this.i+=this.ri,this.s+=this.rs,this.f+=this.rf,this.ry=this.rm=this.rd=0,this.rh=this.ri=this.rs=this.rf=0;var i=new Date(e.getTime());switch(i.setFullYear(this.y,this.m,this.d),i.setHours(this.h,this.i,this.s,this.f),this.firstOrLastDayOfMonth){case 1:i.setDate(1);break;case-1:i.setMonth(i.getMonth()+1,0)}return isNaN(this.z)||i.getTimezoneOffset()===this.z||(i.setUTCFullYear(i.getFullYear(),i.getMonth(),i.getDate()),i.setUTCHours(i.getHours(),i.getMinutes(),i.getSeconds()-this.z,i.getMilliseconds())),i}};e.exports=function(e,t){null==t&&(t=Math.floor(Date.now()/1e3));for(var r=[U.yesterday,U.now,U.noon,U.midnightOrToday,U.tomorrow,U.timestamp,U.firstOrLastDay,U.backOrFrontOf,U.timeTiny12,U.timeShort12,U.timeLong12,U.mssqltime,U.oracledate,U.timeShort24,U.timeLong24,U.iso8601long,U.gnuNoColon,U.iso8601noColon,U.americanShort,U.american,U.iso8601date4,U.iso8601dateSlash,U.dateSlash,U.gnuDateShortOrIso8601date2,U.gnuDateShorter,U.dateFull,U.pointedDate4,U.pointedDate2,U.dateNoDay,U.dateNoDayRev,U.dateTextual,U.dateNoYear,U.dateNoYearRev,U.dateNoColon,U.xmlRpc,U.xmlRpcNoColon,U.soap,U.wddx,U.exif,U.pgydotd,U.isoWeekDay,U.pgTextShort,U.pgTextReverse,U.clf,U.year4,U.ago,U.dayText,U.relativeTextWeek,U.relativeText,U.monthFullOrMonthAbbr,U.tzCorrection,U.tzAbbr,U.dateShortWithTimeShort12,U.dateShortWithTimeLong12,U.dateShortWithTimeShort,U.dateShortWithTimeLong,U.relative,U.whitespace],n=Object.create(I);e.length;){for(var i=null,s=null,a=0,o=r.length;ai[0].length)&&(i=l,s=u)}if(!s||s.callback&&!1===s.callback.apply(n,i))return!1;e=e.substr(i[0].length),s=null,i=null}return Math.floor(n.toDate(new Date(1e3*t))/1e3)}},6436:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(3428);function i(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}t.default=class{constructor(e){i(this,"getFunction",(e=>this.functions[e])),i(this,"getSource",(()=>this.source)),i(this,"reset",(()=>(this.source="",this))),i(this,"compile",(e=>(e.compile(this),this))),i(this,"subcompile",(e=>{let t=this.source;this.source="",e.compile(this);let r=this.source;return this.source=t,r})),i(this,"raw",(e=>(this.source+=e,this))),i(this,"string",(e=>(this.source+='"'+(0,n.addcslashes)(e,'\0\t"$\\')+'"',this))),i(this,"repr",((e,t=!1)=>{if(t)this.raw(e);else if(Number.isInteger(e)||+e===e&&(!isFinite(e)||e%1))this.raw(e);else if(null===e)this.raw("null");else if("boolean"==typeof e)this.raw(e?"true":"false");else if("object"==typeof e){this.raw("{");let t=!0;for(let r of Object.keys(e))t||this.raw(", "),t=!1,this.repr(r),this.raw(":"),this.repr(e[r]);this.raw("}")}else if(Array.isArray(e)){this.raw("[");let t=!0;for(let r of e)t||this.raw(", "),t=!1,this.repr(r);this.raw("]")}else this.string(e);return this})),this.source="",this.functions=e}}},6924:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t){super({arguments:t},{name:e}),s(this,"compile",(e=>{let t=[];for(let r of Object.values(this.nodes.arguments.nodes))t.push(e.subcompile(r));let r=e.getFunction(this.attributes.name);e.raw(r.compiler.apply(null,t))})),s(this,"evaluate",((e,t)=>{let r=[t];for(let n of Object.values(this.nodes.arguments.nodes))r.push(n.evaluate(e,t));return e[this.attributes.name].evaluator.apply(null,r)})),this.name="FunctionNode"}toArray(){let e=[];e.push(this.attributes.name);for(let t of Object.values(this.nodes.arguments.nodes))e.push(", "),e.push(t);return e[1]="(",e.push(")"),e}}t.default=a},7399:function(e){e.exports=function e(t,r){var n=void 0,i=0;if(null==t)return 0;if(t.constructor!==Array&&t.constructor!==Object)return 1;for(n in"COUNT_RECURSIVE"===r&&(r=1),1!==r&&(r=0),t)t.hasOwnProperty(n)&&(i++,1!==r||!t[n]||t[n].constructor!==Array&&t[n].constructor!==Object||(i+=e(t[n],1)));return i}},7538:function(e,t){var r;function n(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.CacheItem=void 0,t.default=class{constructor(e=0){n(this,"createCacheItem",((e,t,r)=>{let n=new i;return n.key=e,n.value=t,n.isHit=r,n.defaultLifetime=this.defaultLifetime,n})),n(this,"get",((e,t,r=null,n=null)=>{let i=this.getItem(e);if(!i.isHit){let e=!0;this.save(i.set(t(i,e)))}return i.get()})),n(this,"getItem",(e=>{let t=this.hasItem(e),r=null;return t?r=this.values[e]:this.values[e]=null,(0,this.createCacheItem)(e,r,t)})),n(this,"getItems",(e=>{for(let t of e)"string"==typeof t||this.expiries[t]||i.validateKey(t);return this.generateItems(e,(new Date).getTime()/1e3,this.createCacheItem)})),n(this,"deleteItems",(e=>{for(let t of e)this.deleteItem(t);return!0})),n(this,"save",(e=>!(!e instanceof i||(null!==e.expiry&&e.expiry<=(new Date).getTime()/1e3?(this.deleteItem(e.key),0):(null===e.expiry&&0this.save(e))),n(this,"commit",(()=>!0)),n(this,"delete",(e=>this.deleteItem(e))),n(this,"getValues",(()=>this.values)),n(this,"hasItem",(e=>!!("string"==typeof e&&this.expiries[e]&&this.expiries[e]>(new Date).getTime()/1e3)||(i.validateKey(e),!!this.expiries[e]&&!this.deleteItem(e)))),n(this,"clear",(()=>(this.values={},this.expiries={},!0))),n(this,"deleteItem",(e=>("string"==typeof e&&this.expiries[e]||i.validateKey(e),delete this.values[e],delete this.expiries[e],!0))),n(this,"reset",(()=>{this.clear()})),n(this,"generateItems",((e,t,r)=>{let n=[];for(let i of e){let e=null,s=!!this.expiries[i];s||!(this.expiries[i]>t)&&this.deleteItem(i)?e=this.values[i]:this.values[i]=null,n[i]=r(i,e,s)}return n})),this.defaultLifetime=e,this.values={},this.expiries={}}};class i{constructor(){n(this,"getKey",(()=>this.key)),n(this,"get",(()=>this.value)),n(this,"set",(e=>(this.value=e,this))),n(this,"expiresAt",(e=>{if(null===e)this.expiry=this.defaultLifetime>0?Date.now()/1e3+this.defaultLifetime:null;else{if(!(e instanceof Date))throw new Error(`Expiration date must be instance of Date or be null, "${e.name}" given`);this.expiry=e.getTime()/1e3}return this})),n(this,"expiresAfter",(e=>{if(null===e)this.expiry=this.defaultLifetime>0?Date.now()/1e3+this.defaultLifetime:null;else{if(!Number.isInteger(e))throw new Error(`Expiration date must be an integer or be null, "${e.name}" given`);this.expiry=(new Date).getTime()/1e3+e}return this})),n(this,"tag",(e=>{if(!this.isTaggable)throw new Error(`Cache item "${this.key}" comes from a non tag-aware pool: you cannot tag it.`);Array.isArray(e)||(e=[e]);for(let t of e){if("string"!=typeof t)throw new Error(`Cache tag must by a string, "${typeof t}" given.`);if(this.newMetadata.tags[t]&&""===t)throw new Error("Cache tag length must be greater than zero");this.newMetadata.tags[t]=t}return this})),n(this,"getMetadata",(()=>this.metadata)),this.key=null,this.value=null,this.isHit=!1,this.expiry=null,this.defaultLifetime=null,this.metadata={},this.newMetadata={},this.innerItem=null,this.poolHash=null,this.isTaggable=!1}}t.CacheItem=i,r=i,n(i,"METADATA_EXPIRY_OFFSET",1527506807),n(i,"RESERVED_CHARACTERS",["{","}","(",")","/","\\","@",":"]),n(i,"validateKey",(e=>{if("string"!=typeof e)throw new Error(`Cache key must be string, "${typeof e}" given.`);if(""===e)throw new Error("Cache key length must be greater than zero");for(let t of r.RESERVED_CHARACTERS)if(e.indexOf(t)>=0)throw new Error(`Cache key "${e}" contains reserved character "${t}".`);return e}))},8237:function(e){e.exports=function(e,t,r){var n;return-1!==(n=(e+="").indexOf(t))&&(r?e.substr(0,n):e.slice(n))}},8286:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t,r){super({expr1:e,expr2:t,expr3:r}),s(this,"compile",(e=>{e.raw("((").compile(this.nodes.expr1).raw(") ? (").compile(this.nodes.expr2).raw(") : (").compile(this.nodes.expr3).raw("))")})),s(this,"evaluate",((e,t)=>this.nodes.expr1.evaluate(e,t)?this.nodes.expr2.evaluate(e,t):this.nodes.expr3.evaluate(e,t))),this.name="ConditionalNode"}toArray(){return["(",this.nodes.expr1," ? ",this.nodes.expr2," : ",this.nodes.expr3,")"]}}t.default=a},9068:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=class{getFunctions(){throw new Error("getFunctions must be implemented by "+this.name)}}},9071:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.implodeFn=t.default=t.countFn=t.arrayIntersectFn=void 0;var n=u(r(4923)),i=u(r(9068)),s=u(r(6075)),a=u(r(7399)),o=u(r(5547));function u(e){return e&&e.__esModule?e:{default:e}}class l extends i.default{getFunctions(){return[c,h,f]}}t.default=l;const c=t.implodeFn=new n.default("implode",(function(e,t){return`implode(${e}, ${t})`}),(function(e,t,r){return(0,o.default)(t,r)})),h=t.countFn=new n.default("count",(function(e,t){let r="";return t&&(r=`, ${t}`),`count(${e}${r})`}),(function(e,t,r){return(0,a.default)(t,r)})),f=t.arrayIntersectFn=new n.default("array_intersect",(function(e,...t){let r="";return t.length>0&&(r=", "+t.join(", ")),`array_intersect(${e}${r})`}),(function(e){let t=[],r=!0;for(let e=1;e0?n>=i.length?i:i.slice(0,n-1).concat([i.slice(n-1).join(e)]):-n>=i.length?[]:(i.splice(i.length+n),i))}},9521:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n},s=r(8);function a(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class o extends i.default{constructor(e,t,r){super({left:t,right:r},{operator:e}),a(this,"compile",(e=>{let t=this.attributes.operator;"matches"!==t?void 0===o.functions[t]?(void 0!==o.operators[t]&&(t=o.operators[t]),e.raw("(").compile(this.nodes.left).raw(" ").raw(t).raw(" ").compile(this.nodes.right).raw(")")):e.raw(`${o.functions[t]}(`).compile(this.nodes.left).raw(", ").compile(this.nodes.right).raw(")"):e.compile(this.nodes.right).raw(".test(").compile(this.nodes.left).raw(")")})),a(this,"evaluate",((e,t)=>{let r=this.attributes.operator,n=this.nodes.left.evaluate(e,t);if(void 0!==o.functions[r]){let i=this.nodes.right.evaluate(e,t);switch(r){case"not in":return-1===i.indexOf(n);case"in":return i.indexOf(n)>=0;case"..":return(0,s.range)(n,i);case"**":return Math.pow(n,i)}}let i=null;switch(r){case"or":case"||":return n||(i=this.nodes.right.evaluate(e,t)),n||i;case"and":case"&&":return n&&(i=this.nodes.right.evaluate(e,t)),n&&i}switch(i=this.nodes.right.evaluate(e,t),r){case"|":return n|i;case"^":return n^i;case"&":return n&i;case"==":return n==i;case"===":return n===i;case"!=":return n!=i;case"!==":return n!==i;case"<":return n":return n>i;case">=":return n>=i;case"<=":return n<=i;case"not in":return-1===i.indexOf(n);case"in":return i.indexOf(n)>=0;case"+":return n+i;case"-":return n-i;case"~":return n.toString()+i.toString();case"*":return n*i;case"/":return n/i;case"%":return n%i;case"matches":let e=i.match(o.regex_expression);return new RegExp(e[1],e[2]).test(n)}})),this.name="BinaryNode"}toArray(){return["(",this.nodes.left," "+this.attributes.operator+" ",this.nodes.right,")"]}}t.default=o,a(o,"regex_expression",/\/(.+)\/(.*)/),a(o,"operators",{"~":".",and:"&&",or:"||"}),a(o,"functions",{"**":"Math.pow","..":"range",in:"includes","not in":"!includes"})},9608:function(e){e.exports=function(e,t){var r=void 0,n=void 0,i=["Sun","Mon","Tues","Wednes","Thurs","Fri","Satur","January","February","March","April","May","June","July","August","September","October","November","December"],s=/\\?(.?)/gi,a=function(e,t){return n[e]?n[e]():t},o=function(e,t){for(e=String(e);e.length9?-1:0)},Y:function(){return r.getFullYear()},y:function(){return n.Y().toString().slice(-2)},a:function(){return r.getHours()>11?"pm":"am"},A:function(){return n.a().toUpperCase()},B:function(){var e=3600*r.getUTCHours(),t=60*r.getUTCMinutes(),n=r.getUTCSeconds();return o(Math.floor((e+t+n+3600)/86.4)%1e3,3)},g:function(){return n.G()%12||12},G:function(){return r.getHours()},h:function(){return o(n.g(),2)},H:function(){return o(n.G(),2)},i:function(){return o(r.getMinutes(),2)},s:function(){return o(r.getSeconds(),2)},u:function(){return o(1e3*r.getMilliseconds(),6)},e:function(){throw new Error("Not supported (see source code of date() for timezone on how to add support)")},I:function(){return new Date(n.Y(),0)-Date.UTC(n.Y(),0)!=new Date(n.Y(),6)-Date.UTC(n.Y(),6)?1:0},O:function(){var e=r.getTimezoneOffset(),t=Math.abs(e);return(e>0?"-":"+")+o(100*Math.floor(t/60)+t%60,4)},P:function(){var e=n.O();return e.substr(0,3)+":"+e.substr(3,2)},T:function(){return"UTC"},Z:function(){return 60*-r.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(s,a)},r:function(){return"D, d M Y H:i:s O".replace(s,a)},U:function(){return r/1e3|0}},function(e,t){return r=void 0===t?new Date:t instanceof Date?new Date(t):new Date(1e3*t),e.replace(s,a)}(e,t)}},9646:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class r extends Error{constructor(e){super(e),this.name="LogicException"}toString(){return`${this.name}: ${this.message}`}}t.default=r},9903:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=s(r(3356)),i=s(r(2536));function s(e){return e&&e.__esModule?e:{default:e}}function a(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class o extends n.default{constructor(){super(),a(this,"addElement",((e,t=null)=>{null===t?t=new i.default(++this.index):"Array"===this.type&&(this.type="Object"),this.nodes[(++this.keyIndex).toString()]=t,this.nodes[(++this.keyIndex).toString()]=e})),a(this,"compile",(e=>{"Object"===this.type?e.raw("{"):e.raw("["),this.compileArguments(e,"Array"!==this.type),"Object"===this.type?e.raw("}"):e.raw("]")})),a(this,"evaluate",((e,t)=>{let r;if("Array"===this.type){r=[];for(let n of this.getKeyValuePairs())r.push(n.value.evaluate(e,t))}else{r={};for(let n of this.getKeyValuePairs())r[n.key.evaluate(e,t)]=n.value.evaluate(e,t)}return r})),a(this,"getKeyValuePairs",(()=>{let e,t,r,n=[],i=Object.values(this.nodes);for(e=0,t=i.length;e{let r=!0;for(let n of this.getKeyValuePairs())r||e.raw(", "),r=!1,t&&e.compile(n.key).raw(": "),e.compile(n.value)})),this.name="ArrayNode",this.type="Array",this.index=-1,this.keyIndex=-1}toArray(){let e={};for(let t of this.getKeyValuePairs())e[t.key.attributes.value]=t.value;let t=[];if(this.isHash(e)){for(let r of Object.keys(e))t.push(", "),t.push(new i.default(r)),t.push(": "),t.push(e[r]);t[0]="{",t.push("}")}else{for(let r of Object.values(e))t.push(", "),t.push(r);t[0]="[",t.push("]")}return t}}t.default=o}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var n=r(3909),i=/field:([a-zA-Z0-9_]+)/g,s=new n.Ay;s.register("sqrt",(function(e){return"Math.sqrt(".concat(e,")")}),(function(e,t){return"number"!=typeof t?t:Math.sqrt(t)}));var a=function(e){var t=e.value;if(""===t)return null;if("number"===e.type)return Number(t);var r=t.toLowerCase();return"true"===r||"false"!==r&&(isNaN(Number(t))?t:Number(t))},o=function(e){for(var t,r=e.getAttribute("data-calculations"),n=e.getAttribute("data-decimal"),o=r.replace(i,(function(e,t){return t})),u=n?Number(n):null,l={};null!==(t=i.exec(r));)l[t[1]]="";var c=function(){if(e instanceof HTMLInputElement&&Object.values(l).every((function(e){return null!==e&&""!==e}))){var t=s.evaluate(o,l);t=null!==u?t.toFixed(u):t;var r=function(t){e.value=t.toString(),e.dispatchEvent(new Event("change"))};if("hidden"===e.type){var n=e.parentElement.querySelector(".freeform-calculation-plain-field");n&&(n.textContent=t),r(t)}else r(t)}};Object.keys(l).forEach((function(t){var r=e.form.querySelectorAll('input[name="'.concat(t,'"], select[name="').concat(t,'"]'));0!==r.length&&r.forEach((function(e){var r=function(){if(e instanceof HTMLInputElement){if("radio"===e.type&&!e.checked)return;l[t]=a(e)}else e instanceof HTMLSelectElement&&(l[t]=a(e))},n=function(){r(),c()};r(),e instanceof HTMLInputElement?"radio"===e.type?e.addEventListener("change",n):e.addEventListener("input",n):e instanceof HTMLSelectElement&&e.addEventListener("change",n)}))})),Object.keys(l).every((function(t){var r=e.form.querySelectorAll('input[name="'.concat(t,'"], select[name="').concat(t,'"]'));if(0===r.length)return!1;var n=null;return r.forEach((function(e){e instanceof HTMLInputElement?"radio"===e.type?e.checked&&(n=a(e)):n=a(e):e instanceof HTMLSelectElement&&(n=a(e))})),l[t]=n,null!==n&&""!==n}))&&c()};document.querySelectorAll("*[data-field-type=calculation]").forEach((function(e){return t=void 0,r=void 0,i=function(){var t;return function(e,t){var r,n,i,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=o(0),a.throw=o(1),a.return=o(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(o){return function(u){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,o[0]&&(s=0)),s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&e.addedNodes.forEach((function(e){if(e instanceof HTMLElement){var t=e.querySelector("input[data-calculations]");t&&o(t)}}))}))})).observe(document.body,{childList:!0,subtree:!0})}(); \ No newline at end of file +!function(){"use strict";var e={8:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.range=function(e,t){let r=[];for(let n=e;n<=t;n++)r.push(n);return r}},310:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.is_scalar=function(e){return/boolean|number|string/.test(typeof e)}},678:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(6042);class i extends Error{constructor(e,t,r,n,i){super(e),this.name="SyntaxError",this.cursor=t,this.expression=r,this.subject=n,this.proposals=i}toString(){let e=`${this.name}: ${this.message} around position ${this.cursor}`;if(this.expression&&(e+=` for expression \`${this.expression}\``),e+=".",this.subject&&this.proposals){let t=Number.MAX_SAFE_INTEGER,r=null;for(let e of this.proposals){let i=(0,n.getEditDistance)(this.subject,e);i":{precedence:20,associativity:v},">=":{precedence:20,associativity:v},"<=":{precedence:20,associativity:v},"not in":{precedence:20,associativity:v},in:{precedence:20,associativity:v},matches:{precedence:20,associativity:v},"..":{precedence:25,associativity:v},"+":{precedence:30,associativity:v},"-":{precedence:30,associativity:v},"~":{precedence:40,associativity:v},"*":{precedence:60,associativity:v},"/":{precedence:60,associativity:v},"%":{precedence:60,associativity:v},"**":{precedence:200,associativity:g}}),y(this,"parse",((e,t=[])=>{this.tokenStream=e,this.names=t,this.objectMatches={},this.cachedNames=null,this.nestedExecutions=0;let r=this.parseExpression();if(!this.tokenStream.isEOF())throw new n.default(`Unexpected token "${this.tokenStream.current.type}" of value "${this.tokenStream.current.value}".`,this.tokenStream.current.cursor,this.tokenStream.expression);return r})),y(this,"parseExpression",((e=0)=>{let t=this.getPrimary(),r=this.tokenStream.current;if(this.nestedExecutions++,this.nestedExecutions>100)throw new Error("Way to many executions on '"+r.toString()+"' of '"+this.tokenStream.toString()+"'");for(;r.test(i.Token.OPERATOR_TYPE)&&void 0!==this.binaryOperators[r.value]&&null!==this.binaryOperators[r.value]&&this.binaryOperators[r.value].precedence>=e;){let e=this.binaryOperators[r.value];this.tokenStream.next();let n=this.parseExpression(v===e.associativity?e.precedence+1:e.precedence);t=new a.default(r.value,t,n),r=this.tokenStream.current}return 0===e?this.parseConditionalExpression(t):t})),y(this,"getPrimary",(()=>{let e=this.tokenStream.current;if(e.test(i.Token.OPERATOR_TYPE)&&void 0!==this.unaryOperators[e.value]&&null!==this.unaryOperators[e.value]){let t=this.unaryOperators[e.value];this.tokenStream.next();let r=this.parseExpression(t.precedence);return this.parsePostfixExpression(new o.default(e.value,r))}if(e.test(i.Token.PUNCTUATION_TYPE,"(")){this.tokenStream.next();let e=this.parseExpression();return this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,")","An opened parenthesis is not properly closed"),this.parsePostfixExpression(e)}return this.parsePrimaryExpression()})),y(this,"hasVariable",(e=>this.getNames().indexOf(e)>=0)),y(this,"getNames",(()=>{if(null!==this.cachedNames)return this.cachedNames;if(this.names&&this.names.length>0){let e=[],t=0;this.objectMatches={};for(let r of this.names)"object"==typeof r?(this.objectMatches[Object.values(r)[0]]=t,e.push(Object.keys(r)[0]),e.push(Object.values(r)[0])):e.push(r),t++;return this.cachedNames=e,e}return[]})),y(this,"parseArrayExpression",(()=>{this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"[","An array element was expected");let e=new f.default,t=!0;for(;!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"]")&&(t||(this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,",","An array element must be followed by a comma"),!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"]")));)t=!1,e.addElement(this.parseExpression());return this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"]","An opened array is not properly closed"),e})),y(this,"parseHashExpression",(()=>{this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"{","A hash element was expected");let e=new f.default,t=!0;for(;!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"}")&&(t||(this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,",","An array element must be followed by a comma"),!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"}")));){t=!1;let r=null;if(this.tokenStream.current.test(i.Token.STRING_TYPE)||this.tokenStream.current.test(i.Token.NAME_TYPE)||this.tokenStream.current.test(i.Token.NUMBER_TYPE))r=new u.default(this.tokenStream.current.value),this.tokenStream.next();else{if(!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"(")){let e=this.tokenStream.current;throw new n.default(`A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "${e.type}" of value "${e.value}"`,e.cursor,this.tokenStream.expression)}r=this.parseExpression()}this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,":","A hash key must be followed by a colon (:)");let s=this.parseExpression();e.addElement(s,r)}return this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"}","An opened hash is not properly closed"),e})),y(this,"parsePostfixExpression",(e=>{let t=this.tokenStream.current;for(;i.Token.PUNCTUATION_TYPE===t.type;){if("."===t.value){if(this.tokenStream.next(),t=this.tokenStream.current,this.tokenStream.next(),i.Token.NAME_TYPE!==t.type&&(i.Token.OPERATOR_TYPE!==t.type||!/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/.test(t.value)))throw new n.default("Expected name",t.cursor,this.tokenStream.expression);let r=new u.default(t.value,!0),s=new d.default,a=null;if(this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"(")){a=p.default.METHOD_CALL;for(let e of Object.values(this.parseArguments().nodes))s.addElement(e)}else a=p.default.PROPERTY_CALL;e=new p.default(e,r,s,a)}else{if("["!==t.value)break;{this.tokenStream.next();let t=this.parseExpression();this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"]"),e=new p.default(e,t,new d.default,p.default.ARRAY_CALL)}}t=this.tokenStream.current}return e})),y(this,"parseArguments",(()=>{let e=[];for(this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,"(","A list of arguments must begin with an opening parenthesis");!this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,")");)0!==e.length&&this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,",","Arguments must be separated by a comma"),e.push(this.parseExpression());return this.tokenStream.expect(i.Token.PUNCTUATION_TYPE,")","A list of arguments must be closed by a parenthesis"),new s.default(e)})),this.functions=e,this.tokenStream=null,this.names=null,this.objectMatches={},this.cachedNames=null,this.nestedExecutions=0}parseConditionalExpression(e){for(;this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,"?");){let t,r;this.tokenStream.next(),this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,":")?(this.tokenStream.next(),t=e,r=this.parseExpression()):(t=this.parseExpression(),this.tokenStream.current.test(i.Token.PUNCTUATION_TYPE,":")?(this.tokenStream.next(),r=this.parseExpression()):r=new u.default(null)),e=new l.default(e,t,r)}return e}parsePrimaryExpression(){let e=this.tokenStream.current,t=null;switch(e.type){case i.Token.NAME_TYPE:switch(this.tokenStream.next(),e.value){case"true":case"TRUE":return new u.default(!0);case"false":case"FALSE":return new u.default(!1);case"null":case"NULL":return new u.default(null);default:if("("===this.tokenStream.current.value){if(void 0===this.functions[e.value])throw new n.default(`The function "${e.value}" does not exist`,e.cursor,this.tokenStream.expression,e.values,Object.keys(this.functions));t=new c.default(e.value,this.parseArguments())}else{if(!this.hasVariable(e.value))throw new n.default(`Variable "${e.value}" is not valid`,e.cursor,this.tokenStream.expression,e.value,this.getNames());let r=e.value;void 0!==this.objectMatches[r]&&(r=this.getNames()[this.objectMatches[r]]),t=new h.default(r)}}break;case i.Token.NUMBER_TYPE:case i.Token.STRING_TYPE:return this.tokenStream.next(),new u.default(e.value);default:if(e.test(i.Token.PUNCTUATION_TYPE,"["))t=this.parseArrayExpression();else{if(!e.test(i.Token.PUNCTUATION_TYPE,"{"))throw new n.default(`Unexpected token "${e.type}" of value "${e.value}"`,e.cursor,this.tokenStream.expression);t=this.parseHashExpression()}}return this.parsePostfixExpression(t)}}},1292:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.issetFn=t.default=void 0;var n=s(r(4923)),i=s(r(9068));function s(e){return e&&e.__esModule?e:{default:e}}class a extends i.default{getFunctions(){return[o]}}t.default=a;const o=t.issetFn=new n.default("isset",(function(e){return`isset(${e})`}),(function(e,t){let r="",n=[],i="",s="";for(let e=0;e0){if(void 0!==e[r]){let t=e[r];for(let e of n){if("array"===e.type){if(void 0===t[e.index])return!1;t=t[e.index]}if("object"===e.type){if(void 0===t[e.attribute])return!1;t=t[e.attribute]}}return!0}return!1}return void 0!==e[r]}))},1925:function(e,t,r){e.exports=function(e){var t=e+"";if("off"===(r(6078)("unicode.semantics")||"off"))return t.length;var n=0,i=0,s=function(e,t){var r=e.charCodeAt(t),n="",i="";if(r>=55296&&r<=56319){if(e.length<=t+1)throw new Error("High surrogate without following low surrogate");if((n=e.charCodeAt(t+1))<56320||n>57343)throw new Error("High surrogate without following low surrogate");return e.charAt(t)+e.charAt(t+1)}if(r>=56320&&r<=57343){if(0===t)throw new Error("Low surrogate without preceding high surrogate");if((i=e.charCodeAt(t-1))<55296||i>56319)throw new Error("Low surrogate without preceding high surrogate");return!1}return e.charAt(t)};for(n=0,i=0;n{if(this.position+=1,void 0===this.tokens[this.position])throw new i.default("Unexpected end of expression",this.last.cursor,this.expression)})),s(this,"expect",((e,t,r)=>{let n=this.current;if(!n.test(e,t)){let s="";r&&(s=r+". ");let a="";throw t&&(a=` with value "${t}"`),s+=`Unexpected token "${n.type}" of value "${n.value}" ("${e}" expected${a})`,new i.default(s,n.cursor,this.expression)}this.next()})),s(this,"isEOF",(()=>o.EOF_TYPE===this.current.type)),s(this,"isEqualTo",(e=>{if(null==e||!e instanceof a)return!1;if(e.tokens.length!==this.tokens.length)return!1;let t=e.position;e.position=0;let r=!0;for(let t of this.tokens){if(!e.current.isEqualTo(t)){r=!1;break}e.position{let t=[];if(!this.isEqualTo(e)){let r=0,n=e.position;e.position=0;for(let n of this.tokens){let i=n.diff(e.current);i.length>0&&t.push({index:r,diff:i}),e.positionthis.type===e&&(null===t||this.value===t))),s(this,"isEqualTo",(e=>!(null==e||!e instanceof o)&&e.value==this.value&&e.type===this.type&&e.cursor===this.cursor)),s(this,"diff",(e=>{let t=[];return this.isEqualTo(e)||(e.value!==this.value&&t.push(`Value: ${e.value} != ${this.value}`),e.cursor!==this.cursor&&t.push(`Cursor: ${e.cursor} != ${this.cursor}`),e.type!==this.type&&t.push(`Type: ${e.type} != ${this.type}`)),t})),this.value=t,this.type=e,this.cursor=r}toString(){return`${this.cursor} [${this.type}] ${this.value}`}}t.Token=o,s(o,"EOF_TYPE","end of expression"),s(o,"NAME_TYPE","name"),s(o,"NUMBER_TYPE","number"),s(o,"STRING_TYPE","string"),s(o,"OPERATOR_TYPE","operator"),s(o,"PUNCTUATION_TYPE","punctuation")},2536:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t=!1){super({},{value:e}),s(this,"compile",(e=>{e.repr(this.attributes.value,this.isIdentifier)})),s(this,"evaluate",((e,t)=>this.attributes.value)),s(this,"toArray",(()=>{let e=[],t=this.attributes.value;if(this.isIdentifier)e.push(t);else if(!0===t)e.push("true");else if(!1===t)e.push("false");else if(null===t)e.push("null");else if("number"==typeof t)e.push(t);else if("string"==typeof t)e.push(this.dumpString(t));else if(Array.isArray(t)){for(let r of t)e.push(","),e.push(new a(r));e[0]="[",e.push("]")}else if(this.isHash(t)){for(let r of Object.keys(t))e.push(", "),e.push(new a(r)),e.push(": "),e.push(new a(t[r]));e[0]="{",e.push("}")}return e})),this.isIdentifier=t,this.name="ConstantNode"}}t.default=a},2863:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.tokenize=function(e){let t=0,r=[],n=[],o=(e=e.replace(/\r|\n|\t|\v|\f/g," ")).length;for(;t=0)n.push([e[t],t]),r.push(new s.Token(s.Token.PUNCTUATION_TYPE,e[t],t+1)),++t;else if(")]}".indexOf(e[t])>=0){if(0===n.length)throw new i.default(`Unexpected "${e[t]}"`,t,e);let[a,o]=n.pop(),u=a.replace("(",")").replace("{","}").replace("[","]");if(e[t]!==u)throw new i.default(`Unclosed "${a}"`,o,e);r.push(new s.Token(s.Token.PUNCTUATION_TYPE,e[t],t+1)),++t}else{let n=u(e.substr(t));if(null!==n)r.push(new s.Token(s.Token.STRING_TYPE,n.captured,t+1)),t+=n.length;else{let n=h(e.substr(t));if(n)r.push(new s.Token(s.Token.OPERATOR_TYPE,n,t+1)),t+=n.length;else if(".,?:".indexOf(e[t])>=0)r.push(new s.Token(s.Token.PUNCTUATION_TYPE,e[t],t+1)),++t;else{let n=f(e.substr(t));if(!n)throw new i.default(`Unexpected character "${e[t]}"`,t,e);r.push(new s.Token(s.Token.NAME_TYPE,n,t+1)),t+=n.length}}}}if(r.push(new s.Token(s.Token.EOF_TYPE,null,t+1)),n.length>0){let[t,r]=n.pop();throw new i.default(`Unclosed "${t}"`,r,e)}return new s.TokenStream(e,r)};var n,i=(n=r(678))&&n.__esModule?n:{default:n},s=r(2520);function a(e){let t=null,r=e.match(/^[0-9]+(?:.[0-9]+)?/);return r&&r.length>0&&(t=r[0]),t}const o=/^"([^"\\]*(?:\\.[^"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)'/s;function u(e){let t=null;if(-1===["'",'"'].indexOf(e.substr(0,1)))return t;let r=o.exec(e);return null!==r&&r.length>0&&(t=r[1]?{captured:r[1]}:{captured:r[2]},t.length=r[0].length),t}const l=["&&","and","||","or","+","-","**","*","/","%","&","|","^","===","!==","!=","==","<=",">=","<",">","matches","not in","in","not","!","~",".."],c=["and","or","matches","not in","in","not"];function h(e){let t=null;for(let r of l)if(e.substr(0,r.length)===r){c.indexOf(r)>=0?e.substr(0,r.length+1)===r+" "&&(t=r):t=r;break}return t}function f(e){let t=null,r=e.match(/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/);return r&&r.length>0&&(t=r[0]),t}},3356:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(310),i=r(3428);function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}t.default=class{constructor(e={},t={}){s(this,"compile",(e=>{for(let t of Object.values(this.nodes))t.compile(e)})),s(this,"evaluate",((e,t)=>{let r=[];for(let n of Object.values(this.nodes))r.push(n.evaluate(e,t));return r})),s(this,"dump",(()=>{let e="";for(let t of this.toArray())e+=(0,n.is_scalar)(t)?t:t.dump();return e})),s(this,"dumpString",(e=>`"${(0,i.addcslashes)(e,'\0\t"\\')}"`)),s(this,"isHash",(e=>{let t=0;for(let r of Object.keys(e))if(r=parseInt(r),r!==t++)return!0;return!1})),this.name="Node",this.nodes=e,this.attributes=t}toString(){let e=[];for(let t of Object.keys(this.attributes)){let r="null";this.attributes[t]&&(r=this.attributes[t].toString()),e.push(`${t}: '${r}'`)}let t=[this.name+"("+e.join(", ")];if(this.nodes.length>0){for(let e of Object.values(this.nodes)){let r=e.toString().split("\n");for(let e of r)t.push(" "+e)}t.push(")")}else t[0]+=")";return t.join("\n")}toArray(){throw new Error(`Dumping a "${this.name}" instance is not supported yet.`)}}},3428:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.addcslashes=function(e,t){var r="",n=[],i=0,s=0,a="",o="",u="",l="",c="",h=0,f=0,d=0,p=0,m=0,y=[],v="",g=/%([\dA-Fa-f]+)/g,b=function(e,t){return(e+="").lengthh)for(s=h;s<=f;s++)n.push(String.fromCharCode(s));else n.push(".",u,l);i+=l.length+2}else c=String.fromCharCode(parseInt(u,8)),n.push(c);i+=d}else if(o+t.charAt(i+2)===".."){if(h=(u=a).charCodeAt(0),/\\\d/.test(t.charAt(i+3)+t.charAt(i+4)))l=t.slice(i+4).match(/^\d+/)[0],i+=1;else{if(!t.charAt(i+3))throw new Error("Range with no end point");l=t.charAt(i+3)}if((f=l.charCodeAt(0))>h)for(s=h;s<=f;s++)n.push(String.fromCharCode(s));else n.push(".",u,l);i+=l.length+2}else n.push(a);for(i=0;i126)switch(a){case"\n":r+="n";break;case"\t":r+="t";break;case"\r":r+="r";break;case"":r+="a";break;case"\v":r+="v";break;case"\b":r+="b";break;case"\f":r+="f";break;default:for(v=encodeURIComponent(a),null!==(y=g.exec(v))&&(r+=b(parseInt(y[1],16).toString(8),3));null!==(y=g.exec(v));)r+="\\"+b(parseInt(y[1],16).toString(8),3)}else r+=a;else r+=a;return r}},3553:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(2863),i=l(r(1226)),s=l(r(6436)),a=l(r(5690)),o=l(r(7538)),u=l(r(9646));function l(e){return e&&e.__esModule?e:{default:e}}function c(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}t.default=class{constructor(e=null,t=[]){c(this,"compile",((e,t=[])=>this.getCompiler().compile(this.parse(e,t).getNodes()).getSource())),c(this,"evaluate",((e,t={})=>this.parse(e,Object.keys(t)).getNodes().evaluate(this.functions,t))),c(this,"parse",((e,t)=>{if(e instanceof a.default)return e;t.sort(((e,t)=>{let r=e,n=t;return"object"==typeof e&&(r=Object.values(e)[0]),"object"==typeof t&&(n=Object.values(t)[0]),r.localeCompare(n)}));let r=[];for(let e of t){let t=e;"object"==typeof e&&(t=Object.keys(e)[0]+":"+Object.values(e)[0]),r.push(t)}let i=this.cache.getItem(this.fixedEncodeURIComponent(e+"//"+r.join("|"))),s=i.get();if(null===s){let r=this.getParser().parse((0,n.tokenize)(e),t);s=new a.default(e,r),i.set(s),this.cache.save(i)}return s})),c(this,"fixedEncodeURIComponent",(e=>encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16)})))),c(this,"register",((e,t,r)=>{if(null!==this.parser)throw new u.default("Registering functions after calling evaluate(), compile(), or parse() is not supported.");this.functions[e]={compiler:t,evaluator:r}})),c(this,"addFunction",(e=>{this.register(e.getName(),e.getCompiler(),e.getEvaluator())})),c(this,"registerProvider",(e=>{for(let t of e.getFunctions())this.addFunction(t)})),c(this,"getParser",(()=>(null===this.parser&&(this.parser=new i.default(this.functions)),this.parser))),c(this,"getCompiler",(()=>(null===this.compiler&&(this.compiler=new s.default(this.functions)),this.compiler.reset()))),this.functions=[],this.parser=null,this.compiler=null,this.cache=e||new o.default;for(let e of t)this.registerProvider(e)}_registerFunctions(){}}},3909:function(e,t,r){t.Ay=void 0;var n=i(r(3553));r(2863),i(r(1226)),i(r(4923)),i(r(6436)),i(r(7538)),i(r(9068)),i(r(1292)),i(r(5795)),i(r(9071)),i(r(2446));function i(e){return e&&e.__esModule?e:{default:e}}t.Ay=n.default},4222:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(9903))&&n.__esModule?n:{default:n};class s extends i.default{constructor(){super(),function(e,t,r){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"compile",(e=>{this.compileArguments(e,!1)})),this.name="ArgumentsNode"}toArray(){let e=[];for(let t of this.getKeyValuePairs())e.push(t.value),e.push(", ");return e.pop(),e}}t.default=s},4923:function(e,t){function r(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=class{constructor(e,t,n){r(this,"getName",(()=>this.name)),r(this,"getCompiler",(()=>this.compiler)),r(this,"getEvaluator",(()=>this.evaluator)),this.name=e,this.compiler=t,this.evaluator=n}}},5253:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t,r,n){super({node:e,attribute:t,arguments:r},{type:n}),s(this,"compile",(e=>{switch(this.attributes.type){case a.PROPERTY_CALL:e.compile(this.nodes.node).raw(".").raw(this.nodes.attribute.attributes.value);break;case a.METHOD_CALL:e.compile(this.nodes.node).raw(".").raw(this.nodes.attribute.attributes.value).raw("(").compile(this.nodes.arguments).raw(")");break;case a.ARRAY_CALL:e.compile(this.nodes.node).raw("[").compile(this.nodes.attribute).raw("]")}})),s(this,"evaluate",((e,t)=>{switch(this.attributes.type){case a.PROPERTY_CALL:let r=this.nodes.node.evaluate(e,t),n=this.nodes.attribute.attributes.value;if("object"!=typeof r)throw new Error(`Unable to get property "${n}" on a non-object: `+typeof r);return r[n];case a.METHOD_CALL:let i=this.nodes.node.evaluate(e,t),s=this.nodes.attribute.attributes.value;if("object"!=typeof i)throw new Error(`Unable to call method "${s}" on a non-object: `+typeof i);if(void 0===i[s])throw new Error(`Method "${s}" is undefined on object.`);if("function"!=typeof i[s])throw new Error(`Method "${s}" is not a function on object.`);let o=this.nodes.arguments.evaluate(e,t);return i[s].apply(null,o);case a.ARRAY_CALL:let u=this.nodes.node.evaluate(e,t);if(!Array.isArray(u)&&"object"!=typeof u)throw new Error("Unable to get an item on a non-array: "+typeof u);return u[this.nodes.attribute.evaluate(e,t)]}})),this.name="GetAttrNode"}toArray(){switch(this.attributes.type){case a.PROPERTY_CALL:return[this.nodes.node,".",this.nodes.attribute];case a.METHOD_CALL:return[this.nodes.node,".",this.nodes.attribute,"(",this.nodes.arguments,")"];case a.ARRAY_CALL:return[this.nodes.node,"[",this.nodes.attribute,"]"]}}}t.default=a,s(a,"PROPERTY_CALL",1),s(a,"METHOD_CALL",2),s(a,"ARRAY_CALL",3)},5474:function(e,t,r){e.exports=function(e,t,n){e=r(684)(e);var i="on"===r(6078)("unicode.semantics");i&&(e=e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\s\S]/g)||[]);var s=e.length,a=s;return t<0&&(t+=a),void 0!==n&&(a=n<0?n+a:n+t),!(t>s||t<0||t>a)&&(i?e.slice(t,a).join(""):e.slice(t,a))}},5547:function(e){var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.exports=function(e,r){var n="",i="",s="";if(1===arguments.length&&(r=e,e=""),"object"===(void 0===r?"undefined":t(r))){if("[object Array]"===Object.prototype.toString.call(r))return r.join(e);for(n in r)i+=s+r[n],s=e;return i}return r}},5650:function(e){e.exports=function(e,t,r){var n;return-1!==(n=(e+="").toLowerCase().indexOf((t+"").toLowerCase()))&&(r?e.substr(0,n):e.slice(n))}},5690:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(1939))&&n.__esModule?n:{default:n};class s extends i.default{constructor(e,t){super(e),function(e,t,r){(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"getNodes",(()=>this.nodes)),this.nodes=t}}t.default=s},5757:function(e){e.exports=function(e){return(e+"").toUpperCase()}},5795:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=f(r(4923)),i=f(r(9068)),s=f(r(9490)),a=f(r(1925)),o=f(r(9216)),u=f(r(5757)),l=f(r(5474)),c=f(r(8237)),h=f(r(5650));function f(e){return e&&e.__esModule?e:{default:e}}class d extends i.default{getFunctions(){return[new n.default("strtolower",(e=>"strtolower("+e+")"),((e,t)=>(0,o.default)(t))),new n.default("strtoupper",(e=>"strtoupper("+e+")"),((e,t)=>(0,u.default)(t))),new n.default("explode",((e,t,r="null")=>`explode(${e}, ${t}, ${r})`),((e,t,r,n=null)=>(0,s.default)(t,r,n))),new n.default("strlen",(function(e){return`strlen(${e});`}),(function(e,t){return(0,a.default)(t)})),new n.default("strstr",(function(e,t,r){let n="";return r&&(n=`, ${r}`),`strstr(${e}, ${t}${n});`}),(function(e,t,r,n){return(0,c.default)(t,r,n)})),new n.default("stristr",(function(e,t,r){let n="";return r&&(n=`, ${r}`),`stristr(${e}, ${t}${n});`}),(function(e,t,r,n){return(0,h.default)(t,r,n)})),new n.default("substr",(function(e,t,r){let n="";return r&&(n=`, ${r}`),`substr(${e}, ${t}${n});`}),(function(e,t,r,n){return(0,l.default)(t,r,n)}))]}}t.default=d},6042:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getEditDistance=void 0,t.getEditDistance=function(e,t){if(0===e.length)return t.length;if(0===t.length)return e.length;let r,n,i=[];for(r=0;r<=t.length;r++)i[r]=[r];for(n=0;n<=e.length;n++)void 0===i[0]&&(i[0]=[]),i[0][n]=n;for(r=1;r<=t.length;r++)for(n=1;n<=e.length;n++)t.charAt(r-1)===e.charAt(n-1)?i[r][n]=i[r-1][n-1]:i[r][n]=Math.min(i[r-1][n-1]+1,Math.min(i[r][n-1]+1,i[r-1][n]+1));return void 0===i[t.length]&&(i[t.length]=[]),i[t.length][e.length]}},6075:function(e){e.exports=function(e){var t={},r=arguments.length,n=r-1,i="",s={},a=0,o="";e:for(i in e)t:for(a=1;a{e.raw(this.attributes.name)})),s(this,"evaluate",((e,t)=>t[this.attributes.name])),this.name="NameNode"}toArray(){return[this.attributes.name]}}t.default=a},6117:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t){super({node:t},{operator:e}),s(this,"compile",(e=>{e.raw("(").raw(a.operators[this.attributes.operator]).compile(this.nodes.node).raw(")")})),s(this,"evaluate",((e,t)=>{let r=this.nodes.node.evaluate(e,t);switch(this.attributes.operator){case"not":case"!":return!r;case"-":return-r}return r})),this.name="UnaryNode"}toArray(){return["(",this.attributes.operator+" ",this.nodes.node,")"]}}t.default=a,s(a,"operators",{"!":"!",not:"!","+":"+","-":"-"})},6141:function(e){var t="[ \\t]+",r="[ \\t]*",n="(?:([ap])\\.?m\\.?([\\t ]|$))",i="(2[0-4]|[01]?[0-9])",s="([01][0-9]|2[0-4])",a="(0?[1-9]|1[0-2])",o="([0-5]?[0-9])",u="([0-5][0-9])",l="(60|[0-5]?[0-9])",c="(60|[0-5][0-9])",h="(?:\\.([0-9]+))",f="sunday|monday|tuesday|wednesday|thursday|friday|saturday",d="sun|mon|tue|wed|thu|fri|sat",p=f+"|"+d+"|weekdays?",m="first|second|third|fourth|fifth|sixth|seventh|eighth?|ninth|tenth|eleventh|twelfth",y="next|last|previous|this",v="(?:second|sec|minute|min|hour|day|fortnight|forthnight|month|year)s?|weeks|"+p,g="([0-9]{1,4})",b="([0-9]{4})",w="(1[0-2]|0?[0-9])",x="(0[0-9]|1[0-2])",k="(?:(3[01]|[0-2]?[0-9])(?:st|nd|rd|th)?)",T="(0[0-9]|[1-2][0-9]|3[01])",E="january|february|march|april|may|june|july|august|september|october|november|december",O="jan|feb|mar|apr|may|jun|jul|aug|sept?|oct|nov|dec",P="("+E+"|"+O+"|i[vx]|vi{0,3}|xi{0,2}|i{1,3})",S="((?:GMT)?([+-])"+i+":?"+o+"?)",A=P+"[ .\\t-]*"+k+"[,.stndrh\\t ]*";function _(e,t){switch(t=t&&t.toLowerCase()){case"a":e+=12===e?-12:0;break;case"p":e+=12!==e?12:0}return e}function N(e){var t=+e;return e.length<4&&t<100&&(t+=t<70?2e3:1900),t}function j(e){return{jan:0,january:0,i:0,feb:1,february:1,ii:1,mar:2,march:2,iii:2,apr:3,april:3,iv:3,may:4,v:4,jun:5,june:5,vi:5,jul:6,july:6,vii:6,aug:7,august:7,viii:7,sep:8,sept:8,september:8,ix:8,oct:9,october:9,x:9,nov:10,november:10,xi:10,dec:11,december:11,xii:11}[e.toLowerCase()]}function M(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return{mon:1,monday:1,tue:2,tuesday:2,wed:3,wednesday:3,thu:4,thursday:4,fri:5,friday:5,sat:6,saturday:6,sun:0,sunday:0}[e.toLowerCase()]||t}function R(e,t){if(!(e=e&&e.match(/(?:GMT)?([+-])(\d+)(:?)(\d{0,2})/i)))return t;var r="-"===e[1]?-1:1,n=+e[2],i=+e[4];return e[4]||e[3]||(i=Math.floor(n%100),n=Math.floor(n/100)),r*(60*n+i)*60}var C={acdt:37800,acst:34200,addt:-7200,adt:-10800,aedt:39600,aest:36e3,ahdt:-32400,ahst:-36e3,akdt:-28800,akst:-32400,amt:-13840,apt:-10800,ast:-14400,awdt:32400,awst:28800,awt:-10800,bdst:7200,bdt:-36e3,bmt:-14309,bst:3600,cast:34200,cat:7200,cddt:-14400,cdt:-18e3,cemt:10800,cest:7200,cet:3600,cmt:-15408,cpt:-18e3,cst:-21600,cwt:-18e3,chst:36e3,dmt:-1521,eat:10800,eddt:-10800,edt:-14400,eest:10800,eet:7200,emt:-26248,ept:-14400,est:-18e3,ewt:-14400,ffmt:-14660,fmt:-4056,gdt:39600,gmt:0,gst:36e3,hdt:-34200,hkst:32400,hkt:28800,hmt:-19776,hpt:-34200,hst:-36e3,hwt:-34200,iddt:14400,idt:10800,imt:25025,ist:7200,jdt:36e3,jmt:8440,jst:32400,kdt:36e3,kmt:5736,kst:30600,lst:9394,mddt:-18e3,mdst:16279,mdt:-21600,mest:7200,met:3600,mmt:9017,mpt:-21600,msd:14400,msk:10800,mst:-25200,mwt:-21600,nddt:-5400,ndt:-9052,npt:-9e3,nst:-12600,nwt:-9e3,nzdt:46800,nzmt:41400,nzst:43200,pddt:-21600,pdt:-25200,pkst:21600,pkt:18e3,plmt:25590,pmt:-13236,ppmt:-17340,ppt:-25200,pst:-28800,pwt:-25200,qmt:-18840,rmt:5794,sast:7200,sdmt:-16800,sjmt:-20173,smt:-13884,sst:-39600,tbmt:10751,tmt:12344,uct:0,utc:0,wast:7200,wat:3600,wemt:7200,west:3600,wet:0,wib:25200,wita:28800,wit:32400,wmt:5040,yddt:-25200,ydt:-28800,ypt:-28800,yst:-32400,ywt:-28800,a:3600,b:7200,c:10800,d:14400,e:18e3,f:21600,g:25200,h:28800,i:32400,k:36e3,l:39600,m:43200,n:-3600,o:-7200,p:-10800,q:-14400,r:-18e3,s:-21600,t:-25200,u:-28800,v:-32400,w:-36e3,x:-39600,y:-43200,z:0},U={yesterday:{regex:/^yesterday/i,name:"yesterday",callback:function(){return this.rd-=1,this.resetTime()}},now:{regex:/^now/i,name:"now"},noon:{regex:/^noon/i,name:"noon",callback:function(){return this.resetTime()&&this.time(12,0,0,0)}},midnightOrToday:{regex:/^(midnight|today)/i,name:"midnight | today",callback:function(){return this.resetTime()}},tomorrow:{regex:/^tomorrow/i,name:"tomorrow",callback:function(){return this.rd+=1,this.resetTime()}},timestamp:{regex:/^@(-?\d+)/i,name:"timestamp",callback:function(e,t){return this.rs+=+t,this.y=1970,this.m=0,this.d=1,this.dates=0,this.resetTime()&&this.zone(0)}},firstOrLastDay:{regex:/^(first|last) day of/i,name:"firstdayof | lastdayof",callback:function(e,t){"first"===t.toLowerCase()?this.firstOrLastDayOfMonth=1:this.firstOrLastDayOfMonth=-1}},backOrFrontOf:{regex:RegExp("^(back|front) of "+i+r+n+"?","i"),name:"backof | frontof",callback:function(e,t,r,n){var i=+r,s=15;return"back"===t.toLowerCase()||(i-=1,s=45),i=_(i,n),this.resetTime()&&this.time(i,s,0,0)}},weekdayOf:{regex:RegExp("^("+m+"|"+y+")"+t+"("+f+"|"+d+")"+t+"of","i"),name:"weekdayof"},mssqltime:{regex:RegExp("^"+a+":"+u+":"+c+"[:.]([0-9]+)"+n,"i"),name:"mssqltime",callback:function(e,t,r,n,i,s){return this.time(_(+t,s),+r,+n,+i.substr(0,3))}},oracledate:{regex:/^(\d{2})-([A-Z]{3})-(\d{2})$/i,name:"d-M-y",callback:function(e,t,r,n){var i={JAN:0,FEB:1,MAR:2,APR:3,MAY:4,JUN:5,JUL:6,AUG:7,SEP:8,OCT:9,NOV:10,DEC:11}[r.toUpperCase()];return this.ymd(2e3+parseInt(n,10),i,parseInt(t,10))}},timeLong12:{regex:RegExp("^"+a+"[:.]"+o+"[:.]"+c+r+n,"i"),name:"timelong12",callback:function(e,t,r,n,i){return this.time(_(+t,i),+r,+n,0)}},timeShort12:{regex:RegExp("^"+a+"[:.]"+u+r+n,"i"),name:"timeshort12",callback:function(e,t,r,n){return this.time(_(+t,n),+r,0,0)}},timeTiny12:{regex:RegExp("^"+a+r+n,"i"),name:"timetiny12",callback:function(e,t,r){return this.time(_(+t,r),0,0,0)}},soap:{regex:RegExp("^"+b+"-"+x+"-"+T+"T"+s+":"+u+":"+c+h+S+"?","i"),name:"soap",callback:function(e,t,r,n,i,s,a,o,u){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,+o.substr(0,3))&&this.zone(R(u))}},wddx:{regex:RegExp("^"+b+"-"+w+"-"+k+"T"+i+":"+o+":"+l),name:"wddx",callback:function(e,t,r,n,i,s,a){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,0)}},exif:{regex:RegExp("^"+b+":"+x+":"+T+" "+s+":"+u+":"+c,"i"),name:"exif",callback:function(e,t,r,n,i,s,a){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,0)}},xmlRpc:{regex:RegExp("^"+b+x+T+"T"+i+":"+u+":"+c),name:"xmlrpc",callback:function(e,t,r,n,i,s,a){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,0)}},xmlRpcNoColon:{regex:RegExp("^"+b+x+T+"[Tt]"+i+u+c),name:"xmlrpcnocolon",callback:function(e,t,r,n,i,s,a){return this.ymd(+t,r-1,+n)&&this.time(+i,+s,+a,0)}},clf:{regex:RegExp("^"+k+"/("+O+")/"+b+":"+s+":"+u+":"+c+t+S,"i"),name:"clf",callback:function(e,t,r,n,i,s,a,o){return this.ymd(+n,j(r),+t)&&this.time(+i,+s,+a,0)&&this.zone(R(o))}},iso8601long:{regex:RegExp("^t?"+i+"[:.]"+o+"[:.]"+l+h,"i"),name:"iso8601long",callback:function(e,t,r,n,i){return this.time(+t,+r,+n,+i.substr(0,3))}},dateTextual:{regex:RegExp("^"+P+"[ .\\t-]*"+k+"[,.stndrh\\t ]+"+g,"i"),name:"datetextual",callback:function(e,t,r,n){return this.ymd(N(n),j(t),+r)}},pointedDate4:{regex:RegExp("^"+k+"[.\\t-]"+w+"[.-]"+b),name:"pointeddate4",callback:function(e,t,r,n){return this.ymd(+n,r-1,+t)}},pointedDate2:{regex:RegExp("^"+k+"[.\\t]"+w+"\\.([0-9]{2})"),name:"pointeddate2",callback:function(e,t,r,n){return this.ymd(N(n),r-1,+t)}},timeLong24:{regex:RegExp("^t?"+i+"[:.]"+o+"[:.]"+l),name:"timelong24",callback:function(e,t,r,n){return this.time(+t,+r,+n,0)}},dateNoColon:{regex:RegExp("^"+b+x+T),name:"datenocolon",callback:function(e,t,r,n){return this.ymd(+t,r-1,+n)}},pgydotd:{regex:RegExp("^"+b+"\\.?(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])"),name:"pgydotd",callback:function(e,t,r){return this.ymd(+t,0,+r)}},timeShort24:{regex:RegExp("^t?"+i+"[:.]"+o,"i"),name:"timeshort24",callback:function(e,t,r){return this.time(+t,+r,0,0)}},iso8601noColon:{regex:RegExp("^t?"+s+u+c,"i"),name:"iso8601nocolon",callback:function(e,t,r,n){return this.time(+t,+r,+n,0)}},iso8601dateSlash:{regex:RegExp("^"+b+"/"+x+"/"+T+"/"),name:"iso8601dateslash",callback:function(e,t,r,n){return this.ymd(+t,r-1,+n)}},dateSlash:{regex:RegExp("^"+b+"/"+w+"/"+k),name:"dateslash",callback:function(e,t,r,n){return this.ymd(+t,r-1,+n)}},american:{regex:RegExp("^"+w+"/"+k+"/"+g),name:"american",callback:function(e,t,r,n){return this.ymd(N(n),t-1,+r)}},americanShort:{regex:RegExp("^"+w+"/"+k),name:"americanshort",callback:function(e,t,r){return this.ymd(this.y,t-1,+r)}},gnuDateShortOrIso8601date2:{regex:RegExp("^"+g+"-"+w+"-"+k),name:"gnudateshort | iso8601date2",callback:function(e,t,r,n){return this.ymd(N(t),r-1,+n)}},iso8601date4:{regex:RegExp("^([+-]?[0-9]{4})-"+x+"-"+T),name:"iso8601date4",callback:function(e,t,r,n){return this.ymd(+t,r-1,+n)}},gnuNoColon:{regex:RegExp("^t?"+s+u,"i"),name:"gnunocolon",callback:function(e,t,r){switch(this.times){case 0:return this.time(+t,+r,0,this.f);case 1:return this.y=100*t+ +r,this.times++,!0;default:return!1}}},gnuDateShorter:{regex:RegExp("^"+b+"-"+w),name:"gnudateshorter",callback:function(e,t,r){return this.ymd(+t,r-1,1)}},pgTextReverse:{regex:RegExp("^(\\d{3,4}|[4-9]\\d|3[2-9])-("+O+")-"+T,"i"),name:"pgtextreverse",callback:function(e,t,r,n){return this.ymd(N(t),j(r),+n)}},dateFull:{regex:RegExp("^"+k+"[ \\t.-]*"+P+"[ \\t.-]*"+g,"i"),name:"datefull",callback:function(e,t,r,n){return this.ymd(N(n),j(r),+t)}},dateNoDay:{regex:RegExp("^"+P+"[ .\\t-]*"+b,"i"),name:"datenoday",callback:function(e,t,r){return this.ymd(+r,j(t),1)}},dateNoDayRev:{regex:RegExp("^"+b+"[ .\\t-]*"+P,"i"),name:"datenodayrev",callback:function(e,t,r){return this.ymd(+t,j(r),1)}},pgTextShort:{regex:RegExp("^("+O+")-"+T+"-"+g,"i"),name:"pgtextshort",callback:function(e,t,r,n){return this.ymd(N(n),j(t),+r)}},dateNoYear:{regex:RegExp("^"+A,"i"),name:"datenoyear",callback:function(e,t,r){return this.ymd(this.y,j(t),+r)}},dateNoYearRev:{regex:RegExp("^"+k+"[ .\\t-]*"+P,"i"),name:"datenoyearrev",callback:function(e,t,r){return this.ymd(this.y,j(r),+t)}},isoWeekDay:{regex:RegExp("^"+b+"-?W(0[1-9]|[1-4][0-9]|5[0-3])(?:-?([0-7]))?"),name:"isoweekday | isoweek",callback:function(e,t,r,n){if(n=n?+n:1,!this.ymd(+t,0,1))return!1;var i=new Date(this.y,this.m,this.d).getDay();i=0-(i>4?i-7:i),this.rd+=i+7*(r-1)+n}},relativeText:{regex:RegExp("^("+m+"|"+y+")"+t+"("+v+")","i"),name:"relativetext",callback:function(e,t,r){var n,i={amount:{last:-1,previous:-1,this:0,first:1,next:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eight:8,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12}[n=t.toLowerCase()],behavior:{this:1}[n]||0}.amount;switch(r.toLowerCase()){case"sec":case"secs":case"second":case"seconds":this.rs+=i;break;case"min":case"mins":case"minute":case"minutes":this.ri+=i;break;case"hour":case"hours":this.rh+=i;break;case"day":case"days":this.rd+=i;break;case"fortnight":case"fortnights":case"forthnight":case"forthnights":this.rd+=14*i;break;case"week":case"weeks":this.rd+=7*i;break;case"month":case"months":this.rm+=i;break;case"year":case"years":this.ry+=i;break;case"mon":case"monday":case"tue":case"tuesday":case"wed":case"wednesday":case"thu":case"thursday":case"fri":case"friday":case"sat":case"saturday":case"sun":case"sunday":this.resetTime(),this.weekday=M(r,7),this.weekdayBehavior=1,this.rd+=7*(i>0?i-1:i)}}},relative:{regex:RegExp("^([+-]*)[ \\t]*(\\d+)"+r+"("+v+"|week)","i"),name:"relative",callback:function(e,t,r,n){var i=t.replace(/[^-]/g,"").length,s=+r*Math.pow(-1,i);switch(n.toLowerCase()){case"sec":case"secs":case"second":case"seconds":this.rs+=s;break;case"min":case"mins":case"minute":case"minutes":this.ri+=s;break;case"hour":case"hours":this.rh+=s;break;case"day":case"days":this.rd+=s;break;case"fortnight":case"fortnights":case"forthnight":case"forthnights":this.rd+=14*s;break;case"week":case"weeks":this.rd+=7*s;break;case"month":case"months":this.rm+=s;break;case"year":case"years":this.ry+=s;break;case"mon":case"monday":case"tue":case"tuesday":case"wed":case"wednesday":case"thu":case"thursday":case"fri":case"friday":case"sat":case"saturday":case"sun":case"sunday":this.resetTime(),this.weekday=M(n,7),this.weekdayBehavior=1,this.rd+=7*(s>0?s-1:s)}}},dayText:{regex:RegExp("^("+p+")","i"),name:"daytext",callback:function(e,t){this.resetTime(),this.weekday=M(t,0),2!==this.weekdayBehavior&&(this.weekdayBehavior=1)}},relativeTextWeek:{regex:RegExp("^("+y+")"+t+"week","i"),name:"relativetextweek",callback:function(e,t){switch(this.weekdayBehavior=2,t.toLowerCase()){case"this":this.rd+=0;break;case"next":this.rd+=7;break;case"last":case"previous":this.rd-=7}isNaN(this.weekday)&&(this.weekday=1)}},monthFullOrMonthAbbr:{regex:RegExp("^("+E+"|"+O+")","i"),name:"monthfull | monthabbr",callback:function(e,t){return this.ymd(this.y,j(t),this.d)}},tzCorrection:{regex:RegExp("^"+S,"i"),name:"tzcorrection",callback:function(e){return this.zone(R(e))}},tzAbbr:{regex:RegExp("^\\(?([a-zA-Z]{1,6})\\)?"),name:"tzabbr",callback:function(e,t){var r=C[t.toLowerCase()];return!isNaN(r)&&this.zone(r)}},ago:{regex:/^ago/i,name:"ago",callback:function(){this.ry=-this.ry,this.rm=-this.rm,this.rd=-this.rd,this.rh=-this.rh,this.ri=-this.ri,this.rs=-this.rs,this.rf=-this.rf}},year4:{regex:RegExp("^"+b),name:"year4",callback:function(e,t){return this.y=+t,!0}},whitespace:{regex:/^[ .,\t]+/,name:"whitespace"},dateShortWithTimeLong:{regex:RegExp("^"+A+"t?"+i+"[:.]"+o+"[:.]"+l,"i"),name:"dateshortwithtimelong",callback:function(e,t,r,n,i,s){return this.ymd(this.y,j(t),+r)&&this.time(+n,+i,+s,0)}},dateShortWithTimeLong12:{regex:RegExp("^"+A+a+"[:.]"+o+"[:.]"+c+r+n,"i"),name:"dateshortwithtimelong12",callback:function(e,t,r,n,i,s,a){return this.ymd(this.y,j(t),+r)&&this.time(_(+n,a),+i,+s,0)}},dateShortWithTimeShort:{regex:RegExp("^"+A+"t?"+i+"[:.]"+o,"i"),name:"dateshortwithtimeshort",callback:function(e,t,r,n,i){return this.ymd(this.y,j(t),+r)&&this.time(+n,+i,0,0)}},dateShortWithTimeShort12:{regex:RegExp("^"+A+a+"[:.]"+u+r+n,"i"),name:"dateshortwithtimeshort12",callback:function(e,t,r,n,i,s){return this.ymd(this.y,j(t),+r)&&this.time(_(+n,s),+i,0,0)}}},I={y:NaN,m:NaN,d:NaN,h:NaN,i:NaN,s:NaN,f:NaN,ry:0,rm:0,rd:0,rh:0,ri:0,rs:0,rf:0,weekday:NaN,weekdayBehavior:0,firstOrLastDayOfMonth:0,z:NaN,dates:0,times:0,zones:0,ymd:function(e,t,r){return!(this.dates>0||(this.dates++,this.y=e,this.m=t,this.d=r,0))},time:function(e,t,r,n){return!(this.times>0||(this.times++,this.h=e,this.i=t,this.s=r,this.f=n,0))},resetTime:function(){return this.h=0,this.i=0,this.s=0,this.f=0,this.times=0,!0},zone:function(e){return this.zones<=1&&(this.zones++,this.z=e,!0)},toDate:function(e){switch(this.dates&&!this.times&&(this.h=this.i=this.s=this.f=0),isNaN(this.y)&&(this.y=e.getFullYear()),isNaN(this.m)&&(this.m=e.getMonth()),isNaN(this.d)&&(this.d=e.getDate()),isNaN(this.h)&&(this.h=e.getHours()),isNaN(this.i)&&(this.i=e.getMinutes()),isNaN(this.s)&&(this.s=e.getSeconds()),isNaN(this.f)&&(this.f=e.getMilliseconds()),this.firstOrLastDayOfMonth){case 1:this.d=1;break;case-1:this.d=0,this.m+=1}if(!isNaN(this.weekday)){var t=new Date(e.getTime());t.setFullYear(this.y,this.m,this.d),t.setHours(this.h,this.i,this.s,this.f);var r=t.getDay();if(2===this.weekdayBehavior)0===r&&0!==this.weekday&&(this.weekday=-6),0===this.weekday&&0!==r&&(this.weekday=7),this.d-=r,this.d+=this.weekday;else{var n=this.weekday-r;(this.rd<0&&n<0||this.rd>=0&&n<=-this.weekdayBehavior)&&(n+=7),this.weekday>=0?this.d+=n:this.d-=7-(Math.abs(this.weekday)-r),this.weekday=NaN}}this.y+=this.ry,this.m+=this.rm,this.d+=this.rd,this.h+=this.rh,this.i+=this.ri,this.s+=this.rs,this.f+=this.rf,this.ry=this.rm=this.rd=0,this.rh=this.ri=this.rs=this.rf=0;var i=new Date(e.getTime());switch(i.setFullYear(this.y,this.m,this.d),i.setHours(this.h,this.i,this.s,this.f),this.firstOrLastDayOfMonth){case 1:i.setDate(1);break;case-1:i.setMonth(i.getMonth()+1,0)}return isNaN(this.z)||i.getTimezoneOffset()===this.z||(i.setUTCFullYear(i.getFullYear(),i.getMonth(),i.getDate()),i.setUTCHours(i.getHours(),i.getMinutes(),i.getSeconds()-this.z,i.getMilliseconds())),i}};e.exports=function(e,t){null==t&&(t=Math.floor(Date.now()/1e3));for(var r=[U.yesterday,U.now,U.noon,U.midnightOrToday,U.tomorrow,U.timestamp,U.firstOrLastDay,U.backOrFrontOf,U.timeTiny12,U.timeShort12,U.timeLong12,U.mssqltime,U.oracledate,U.timeShort24,U.timeLong24,U.iso8601long,U.gnuNoColon,U.iso8601noColon,U.americanShort,U.american,U.iso8601date4,U.iso8601dateSlash,U.dateSlash,U.gnuDateShortOrIso8601date2,U.gnuDateShorter,U.dateFull,U.pointedDate4,U.pointedDate2,U.dateNoDay,U.dateNoDayRev,U.dateTextual,U.dateNoYear,U.dateNoYearRev,U.dateNoColon,U.xmlRpc,U.xmlRpcNoColon,U.soap,U.wddx,U.exif,U.pgydotd,U.isoWeekDay,U.pgTextShort,U.pgTextReverse,U.clf,U.year4,U.ago,U.dayText,U.relativeTextWeek,U.relativeText,U.monthFullOrMonthAbbr,U.tzCorrection,U.tzAbbr,U.dateShortWithTimeShort12,U.dateShortWithTimeLong12,U.dateShortWithTimeShort,U.dateShortWithTimeLong,U.relative,U.whitespace],n=Object.create(I);e.length;){for(var i=null,s=null,a=0,o=r.length;ai[0].length)&&(i=l,s=u)}if(!s||s.callback&&!1===s.callback.apply(n,i))return!1;e=e.substr(i[0].length),s=null,i=null}return Math.floor(n.toDate(new Date(1e3*t))/1e3)}},6436:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(3428);function i(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}t.default=class{constructor(e){i(this,"getFunction",(e=>this.functions[e])),i(this,"getSource",(()=>this.source)),i(this,"reset",(()=>(this.source="",this))),i(this,"compile",(e=>(e.compile(this),this))),i(this,"subcompile",(e=>{let t=this.source;this.source="",e.compile(this);let r=this.source;return this.source=t,r})),i(this,"raw",(e=>(this.source+=e,this))),i(this,"string",(e=>(this.source+='"'+(0,n.addcslashes)(e,'\0\t"$\\')+'"',this))),i(this,"repr",((e,t=!1)=>{if(t)this.raw(e);else if(Number.isInteger(e)||+e===e&&(!isFinite(e)||e%1))this.raw(e);else if(null===e)this.raw("null");else if("boolean"==typeof e)this.raw(e?"true":"false");else if("object"==typeof e){this.raw("{");let t=!0;for(let r of Object.keys(e))t||this.raw(", "),t=!1,this.repr(r),this.raw(":"),this.repr(e[r]);this.raw("}")}else if(Array.isArray(e)){this.raw("[");let t=!0;for(let r of e)t||this.raw(", "),t=!1,this.repr(r);this.raw("]")}else this.string(e);return this})),this.source="",this.functions=e}}},6924:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t){super({arguments:t},{name:e}),s(this,"compile",(e=>{let t=[];for(let r of Object.values(this.nodes.arguments.nodes))t.push(e.subcompile(r));let r=e.getFunction(this.attributes.name);e.raw(r.compiler.apply(null,t))})),s(this,"evaluate",((e,t)=>{let r=[t];for(let n of Object.values(this.nodes.arguments.nodes))r.push(n.evaluate(e,t));return e[this.attributes.name].evaluator.apply(null,r)})),this.name="FunctionNode"}toArray(){let e=[];e.push(this.attributes.name);for(let t of Object.values(this.nodes.arguments.nodes))e.push(", "),e.push(t);return e[1]="(",e.push(")"),e}}t.default=a},7399:function(e){e.exports=function e(t,r){var n=void 0,i=0;if(null==t)return 0;if(t.constructor!==Array&&t.constructor!==Object)return 1;for(n in"COUNT_RECURSIVE"===r&&(r=1),1!==r&&(r=0),t)t.hasOwnProperty(n)&&(i++,1!==r||!t[n]||t[n].constructor!==Array&&t[n].constructor!==Object||(i+=e(t[n],1)));return i}},7538:function(e,t){var r;function n(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.CacheItem=void 0,t.default=class{constructor(e=0){n(this,"createCacheItem",((e,t,r)=>{let n=new i;return n.key=e,n.value=t,n.isHit=r,n.defaultLifetime=this.defaultLifetime,n})),n(this,"get",((e,t,r=null,n=null)=>{let i=this.getItem(e);if(!i.isHit){let e=!0;this.save(i.set(t(i,e)))}return i.get()})),n(this,"getItem",(e=>{let t=this.hasItem(e),r=null;return t?r=this.values[e]:this.values[e]=null,(0,this.createCacheItem)(e,r,t)})),n(this,"getItems",(e=>{for(let t of e)"string"==typeof t||this.expiries[t]||i.validateKey(t);return this.generateItems(e,(new Date).getTime()/1e3,this.createCacheItem)})),n(this,"deleteItems",(e=>{for(let t of e)this.deleteItem(t);return!0})),n(this,"save",(e=>!(!e instanceof i||(null!==e.expiry&&e.expiry<=(new Date).getTime()/1e3?(this.deleteItem(e.key),0):(null===e.expiry&&0this.save(e))),n(this,"commit",(()=>!0)),n(this,"delete",(e=>this.deleteItem(e))),n(this,"getValues",(()=>this.values)),n(this,"hasItem",(e=>!!("string"==typeof e&&this.expiries[e]&&this.expiries[e]>(new Date).getTime()/1e3)||(i.validateKey(e),!!this.expiries[e]&&!this.deleteItem(e)))),n(this,"clear",(()=>(this.values={},this.expiries={},!0))),n(this,"deleteItem",(e=>("string"==typeof e&&this.expiries[e]||i.validateKey(e),delete this.values[e],delete this.expiries[e],!0))),n(this,"reset",(()=>{this.clear()})),n(this,"generateItems",((e,t,r)=>{let n=[];for(let i of e){let e=null,s=!!this.expiries[i];s||!(this.expiries[i]>t)&&this.deleteItem(i)?e=this.values[i]:this.values[i]=null,n[i]=r(i,e,s)}return n})),this.defaultLifetime=e,this.values={},this.expiries={}}};class i{constructor(){n(this,"getKey",(()=>this.key)),n(this,"get",(()=>this.value)),n(this,"set",(e=>(this.value=e,this))),n(this,"expiresAt",(e=>{if(null===e)this.expiry=this.defaultLifetime>0?Date.now()/1e3+this.defaultLifetime:null;else{if(!(e instanceof Date))throw new Error(`Expiration date must be instance of Date or be null, "${e.name}" given`);this.expiry=e.getTime()/1e3}return this})),n(this,"expiresAfter",(e=>{if(null===e)this.expiry=this.defaultLifetime>0?Date.now()/1e3+this.defaultLifetime:null;else{if(!Number.isInteger(e))throw new Error(`Expiration date must be an integer or be null, "${e.name}" given`);this.expiry=(new Date).getTime()/1e3+e}return this})),n(this,"tag",(e=>{if(!this.isTaggable)throw new Error(`Cache item "${this.key}" comes from a non tag-aware pool: you cannot tag it.`);Array.isArray(e)||(e=[e]);for(let t of e){if("string"!=typeof t)throw new Error(`Cache tag must by a string, "${typeof t}" given.`);if(this.newMetadata.tags[t]&&""===t)throw new Error("Cache tag length must be greater than zero");this.newMetadata.tags[t]=t}return this})),n(this,"getMetadata",(()=>this.metadata)),this.key=null,this.value=null,this.isHit=!1,this.expiry=null,this.defaultLifetime=null,this.metadata={},this.newMetadata={},this.innerItem=null,this.poolHash=null,this.isTaggable=!1}}t.CacheItem=i,r=i,n(i,"METADATA_EXPIRY_OFFSET",1527506807),n(i,"RESERVED_CHARACTERS",["{","}","(",")","/","\\","@",":"]),n(i,"validateKey",(e=>{if("string"!=typeof e)throw new Error(`Cache key must be string, "${typeof e}" given.`);if(""===e)throw new Error("Cache key length must be greater than zero");for(let t of r.RESERVED_CHARACTERS)if(e.indexOf(t)>=0)throw new Error(`Cache key "${e}" contains reserved character "${t}".`);return e}))},8237:function(e){e.exports=function(e,t,r){var n;return-1!==(n=(e+="").indexOf(t))&&(r?e.substr(0,n):e.slice(n))}},8286:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n};function s(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a extends i.default{constructor(e,t,r){super({expr1:e,expr2:t,expr3:r}),s(this,"compile",(e=>{e.raw("((").compile(this.nodes.expr1).raw(") ? (").compile(this.nodes.expr2).raw(") : (").compile(this.nodes.expr3).raw("))")})),s(this,"evaluate",((e,t)=>this.nodes.expr1.evaluate(e,t)?this.nodes.expr2.evaluate(e,t):this.nodes.expr3.evaluate(e,t))),this.name="ConditionalNode"}toArray(){return["(",this.nodes.expr1," ? ",this.nodes.expr2," : ",this.nodes.expr3,")"]}}t.default=a},9068:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=class{getFunctions(){throw new Error("getFunctions must be implemented by "+this.name)}}},9071:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.implodeFn=t.default=t.countFn=t.arrayIntersectFn=void 0;var n=u(r(4923)),i=u(r(9068)),s=u(r(6075)),a=u(r(7399)),o=u(r(5547));function u(e){return e&&e.__esModule?e:{default:e}}class l extends i.default{getFunctions(){return[c,h,f]}}t.default=l;const c=t.implodeFn=new n.default("implode",(function(e,t){return`implode(${e}, ${t})`}),(function(e,t,r){return(0,o.default)(t,r)})),h=t.countFn=new n.default("count",(function(e,t){let r="";return t&&(r=`, ${t}`),`count(${e}${r})`}),(function(e,t,r){return(0,a.default)(t,r)})),f=t.arrayIntersectFn=new n.default("array_intersect",(function(e,...t){let r="";return t.length>0&&(r=", "+t.join(", ")),`array_intersect(${e}${r})`}),(function(e){let t=[],r=!0;for(let e=1;e0?n>=i.length?i:i.slice(0,n-1).concat([i.slice(n-1).join(e)]):-n>=i.length?[]:(i.splice(i.length+n),i))}},9521:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(3356))&&n.__esModule?n:{default:n},s=r(8);function a(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class o extends i.default{constructor(e,t,r){super({left:t,right:r},{operator:e}),a(this,"compile",(e=>{let t=this.attributes.operator;"matches"!==t?void 0===o.functions[t]?(void 0!==o.operators[t]&&(t=o.operators[t]),e.raw("(").compile(this.nodes.left).raw(" ").raw(t).raw(" ").compile(this.nodes.right).raw(")")):e.raw(`${o.functions[t]}(`).compile(this.nodes.left).raw(", ").compile(this.nodes.right).raw(")"):e.compile(this.nodes.right).raw(".test(").compile(this.nodes.left).raw(")")})),a(this,"evaluate",((e,t)=>{let r=this.attributes.operator,n=this.nodes.left.evaluate(e,t);if(void 0!==o.functions[r]){let i=this.nodes.right.evaluate(e,t);switch(r){case"not in":return-1===i.indexOf(n);case"in":return i.indexOf(n)>=0;case"..":return(0,s.range)(n,i);case"**":return Math.pow(n,i)}}let i=null;switch(r){case"or":case"||":return n||(i=this.nodes.right.evaluate(e,t)),n||i;case"and":case"&&":return n&&(i=this.nodes.right.evaluate(e,t)),n&&i}switch(i=this.nodes.right.evaluate(e,t),r){case"|":return n|i;case"^":return n^i;case"&":return n&i;case"==":return n==i;case"===":return n===i;case"!=":return n!=i;case"!==":return n!==i;case"<":return n":return n>i;case">=":return n>=i;case"<=":return n<=i;case"not in":return-1===i.indexOf(n);case"in":return i.indexOf(n)>=0;case"+":return n+i;case"-":return n-i;case"~":return n.toString()+i.toString();case"*":return n*i;case"/":return n/i;case"%":return n%i;case"matches":let e=i.match(o.regex_expression);return new RegExp(e[1],e[2]).test(n)}})),this.name="BinaryNode"}toArray(){return["(",this.nodes.left," "+this.attributes.operator+" ",this.nodes.right,")"]}}t.default=o,a(o,"regex_expression",/\/(.+)\/(.*)/),a(o,"operators",{"~":".",and:"&&",or:"||"}),a(o,"functions",{"**":"Math.pow","..":"range",in:"includes","not in":"!includes"})},9608:function(e){e.exports=function(e,t){var r=void 0,n=void 0,i=["Sun","Mon","Tues","Wednes","Thurs","Fri","Satur","January","February","March","April","May","June","July","August","September","October","November","December"],s=/\\?(.?)/gi,a=function(e,t){return n[e]?n[e]():t},o=function(e,t){for(e=String(e);e.length9?-1:0)},Y:function(){return r.getFullYear()},y:function(){return n.Y().toString().slice(-2)},a:function(){return r.getHours()>11?"pm":"am"},A:function(){return n.a().toUpperCase()},B:function(){var e=3600*r.getUTCHours(),t=60*r.getUTCMinutes(),n=r.getUTCSeconds();return o(Math.floor((e+t+n+3600)/86.4)%1e3,3)},g:function(){return n.G()%12||12},G:function(){return r.getHours()},h:function(){return o(n.g(),2)},H:function(){return o(n.G(),2)},i:function(){return o(r.getMinutes(),2)},s:function(){return o(r.getSeconds(),2)},u:function(){return o(1e3*r.getMilliseconds(),6)},e:function(){throw new Error("Not supported (see source code of date() for timezone on how to add support)")},I:function(){return new Date(n.Y(),0)-Date.UTC(n.Y(),0)!=new Date(n.Y(),6)-Date.UTC(n.Y(),6)?1:0},O:function(){var e=r.getTimezoneOffset(),t=Math.abs(e);return(e>0?"-":"+")+o(100*Math.floor(t/60)+t%60,4)},P:function(){var e=n.O();return e.substr(0,3)+":"+e.substr(3,2)},T:function(){return"UTC"},Z:function(){return 60*-r.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(s,a)},r:function(){return"D, d M Y H:i:s O".replace(s,a)},U:function(){return r/1e3|0}},function(e,t){return r=void 0===t?new Date:t instanceof Date?new Date(t):new Date(1e3*t),e.replace(s,a)}(e,t)}},9646:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class r extends Error{constructor(e){super(e),this.name="LogicException"}toString(){return`${this.name}: ${this.message}`}}t.default=r},9903:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=s(r(3356)),i=s(r(2536));function s(e){return e&&e.__esModule?e:{default:e}}function a(e,t,r){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class o extends n.default{constructor(){super(),a(this,"addElement",((e,t=null)=>{null===t?t=new i.default(++this.index):"Array"===this.type&&(this.type="Object"),this.nodes[(++this.keyIndex).toString()]=t,this.nodes[(++this.keyIndex).toString()]=e})),a(this,"compile",(e=>{"Object"===this.type?e.raw("{"):e.raw("["),this.compileArguments(e,"Array"!==this.type),"Object"===this.type?e.raw("}"):e.raw("]")})),a(this,"evaluate",((e,t)=>{let r;if("Array"===this.type){r=[];for(let n of this.getKeyValuePairs())r.push(n.value.evaluate(e,t))}else{r={};for(let n of this.getKeyValuePairs())r[n.key.evaluate(e,t)]=n.value.evaluate(e,t)}return r})),a(this,"getKeyValuePairs",(()=>{let e,t,r,n=[],i=Object.values(this.nodes);for(e=0,t=i.length;e{let r=!0;for(let n of this.getKeyValuePairs())r||e.raw(", "),r=!1,t&&e.compile(n.key).raw(": "),e.compile(n.value)})),this.name="ArrayNode",this.type="Array",this.index=-1,this.keyIndex=-1}toArray(){let e={};for(let t of this.getKeyValuePairs())e[t.key.attributes.value]=t.value;let t=[];if(this.isHash(e)){for(let r of Object.keys(e))t.push(", "),t.push(new i.default(r)),t.push(": "),t.push(e[r]);t[0]="{",t.push("}")}else{for(let r of Object.values(e))t.push(", "),t.push(r);t[0]="[",t.push("]")}return t}}t.default=o}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var n=r(3909),i=/field:([a-zA-Z0-9_]+)/g,s=new n.Ay;s.register("sqrt",(function(e){return"Math.sqrt(".concat(e,")")}),(function(e,t){return"number"!=typeof t?t:Math.sqrt(t)}));var a=function(e){var t=e.value;if(""===t)return null;if("number"===e.type)return Number(t);var r=t.toLowerCase();return"true"===r||"false"!==r&&(isNaN(Number(t))?t:Number(t))},o=function(e){for(var t,r=e.getAttribute("data-calculations"),n=e.getAttribute("data-decimal"),o=r.replace(i,(function(e,t){return t})),u=n?Number(n):null,l={};null!==(t=i.exec(r));)l[t[1]]="";var c=function(){if(e instanceof HTMLInputElement&&Object.values(l).every((function(e){return null!==e&&""!==e}))){var t="";t=o?s.evaluate(o,l):"",Number.isInteger(t)&&!Number.isNaN(t)&&null!==u&&(t=t.toFixed(u));var r=function(t){e.value=t.toString(),e.dispatchEvent(new Event("change"))};if("hidden"===e.type){var n=e.parentElement.querySelector(".freeform-calculation-plain-field");n&&(n.textContent=String(t)),r(t)}else r(t)}};Object.keys(l).forEach((function(t){var r=e.form.querySelectorAll('input[name="'.concat(t,'"], select[name="').concat(t,'"]'));0!==r.length&&r.forEach((function(e){var r=function(){if(e instanceof HTMLInputElement){if("radio"===e.type&&!e.checked)return;l[t]=a(e)}else e instanceof HTMLSelectElement&&(l[t]=a(e))},n=function(){r(),c()};r(),e instanceof HTMLInputElement?"radio"===e.type?e.addEventListener("change",n):e.addEventListener("input",n):e instanceof HTMLSelectElement&&e.addEventListener("change",n)}))})),Object.keys(l).every((function(t){var r=e.form.querySelectorAll('input[name="'.concat(t,'"], select[name="').concat(t,'"]'));if(0===r.length)return!1;var n=null;return r.forEach((function(e){e instanceof HTMLInputElement?"radio"===e.type?e.checked&&(n=a(e)):n=a(e):e instanceof HTMLSelectElement&&(n=a(e))})),l[t]=n,null!==n&&""!==n}))&&c()};document.querySelectorAll("*[data-field-type=calculation]").forEach((function(e){return t=void 0,r=void 0,i=function(){var t;return function(e,t){var r,n,i,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=o(0),a.throw=o(1),a.return=o(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(o){return function(u){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,o[0]&&(s=0)),s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&e.addedNodes.forEach((function(e){if(e instanceof HTMLElement){var t=e.querySelector("input[data-calculations]");t&&o(t)}}))}))})).observe(document.body,{childList:!0,subtree:!0})}(); \ No newline at end of file diff --git a/packages/plugin/src/Resources/js/scripts/front-end/plugin/freeform.js b/packages/plugin/src/Resources/js/scripts/front-end/plugin/freeform.js index 71f6421ea3..8a12c14a34 100644 --- a/packages/plugin/src/Resources/js/scripts/front-end/plugin/freeform.js +++ b/packages/plugin/src/Resources/js/scripts/front-end/plugin/freeform.js @@ -1,2 +1,2 @@ /*! For license information please see freeform.js.LICENSE.txt */ -!function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}};e.d({},{A:function(){return Be}});var t,r={ready:"freeform-ready",reset:"freeform-on-reset",submit:"freeform-on-submit",removeMessages:"freeform-remove-messages",fieldRemoveMessages:"freeform-remove-field-messages",renderSuccess:"freeform-render-success",renderFieldErrors:"freeform-render-field-errors",renderFormErrors:"freeform-render-form-errors",ajaxBeforeSuccess:"freeform-before-ajax-success",ajaxSuccess:"freeform-ajax-success",ajaxError:"freeform-ajax-error",ajaxBeforeSubmit:"freeform-ajax-before-submit",ajaxAfterSubmit:"freeform-ajax-after-submit",afterFailedSubmit:"freeform-after-failed-submit",handleActions:"freeform-handle-actions"},n={applied:"freeform-rules-applied"},o={onAddRow:"freeform-field-table-on-add-row",afterRowAdded:"freeform-field-table-after-row-added",onRemoveRow:"freeform-field-table-on-remove-row",afterRemoveRow:"freeform-field-table-after-remove-row"},a={renderPreview:"freeform-field-dnd-on-render-preview",renderPreviewRemoveButton:"freeform-field-dnd-on-render-preview-remove-button",renderErrorContainer:"freeform-field-dnd-render-error-container",showGlobalMessage:"freeform-field-dnd-show-global-message",appendErrors:"freeform-field-dnd-append-errors",clearErrors:"freeform-field-dnd-clear-errors",afterErrors:"freeform-field-dnd-after-errors",onChange:"freeform-field-dnd-on-change",onUploadProgress:"freeform-field-dnd-on-upload-progress"},i={saveFormhandleToken:"freeform-save-form-handle-token"},s={beforeLoad:"freeform-script-before-load",afterLoad:"freeform-script-after-load"},l={beforeLoad:"freeform-stylesheet-before-load",afterLoad:"freeform-stylesheet-after-load"};!function(e){e.Reload="reload",e.RedirectReturnUrl="redirect-return-url",e.LoadSuccessTemplate="load-success-template"}(t||(t={}));var c,u,d=function(e){var t=this;this.reload=function(){for(var e=t.form.querySelectorAll("*[name=".concat(Be._BACK_BUTTON_NAME,"]")),r=0;r1&&t.handleMultipleValues(n,o)}}))},this.handleMultipleValues=function(e,t){e.forEach((function(r){r.addEventListener("change",(function(){e.filter((function(e){return e.checked})).length>t&&r.checked&&(r.checked=!1)}))}))},this.handleSingleValue=function(e){e.forEach((function(t){t.addEventListener("change",(function(){var r=t.checked,n=e.filter((function(e){return e!==t})).filter((function(e){return e.checked}));r&&n.length>0&&n.forEach((function(e){e.checked=!1}))}))}))},this.freeform=e,this.reload()},p=new Map,h=new Map,m=function(e,t){void 0===t&&(t={});var r=t.cacheKey,n=t.async,o=t.defer,a=t.onLoad,i=t.parent,l=r||e;if(!p.has(l)){var c=document.createElement("script");c.src=e,c.async=null!=n&&n,c.defer=null!=o&&o,c.addEventListener("load",(function(){a&&a(c),document.dispatchEvent(new CustomEvent(s.afterLoad,{detail:{src:e,script:c}}))})),document.dispatchEvent(new CustomEvent(s.beforeLoad,{detail:{src:e,script:c}})),(i||document.body).appendChild(c),p.set(l,c)}return p.get(l)},v=function(){return v=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&e.freeform.disableSubmit("file-upload-errors-".concat(x(r)))},x=function(e){return e.dataset.freeformFileUpload||"unknown"},C=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{l(n.next(e))}catch(e){a(e)}}function s(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}l((n=n.apply(e,t||[])).next())}))},q=function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=300?n(new B("Request failed with status ".concat(i.statusText),i,e)):r({status:i.status,data:e,request:i})},i.onerror=function(){n(new Error("Network error"))},i.onabort=function(){n(new Error("Request aborted"))},o.onUploadProgress&&(i.upload.onprogress=function(e){o.onUploadProgress(e)}),o.cancelToken&&o.cancelToken._setCancelFn((function(){i.abort()})),[2,i]}}))},new((s=void 0)||(s=Promise))((function(e,t){function r(e){try{o(l.next(e))}catch(e){t(e)}}function n(e){try{o(l.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof s?o:new s((function(e){e(o)}))).then(r,n)}o((l=l.apply(a,i||[])).next())}));var a,i,s,l},N=function(e,t){t&&Object.entries(t).forEach((function(t){var r=t[0],n=t[1];e.setRequestHeader(r,String(n))}))},I=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{l(n.next(e))}catch(e){a(e)}}function s(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}l((n=n.apply(e,t||[])).next())}))},U=function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]\n

'.concat(e,'

\n \n \n \n \n \n '),document.body.appendChild(t),t},Y=function(e,t){var r=function(e){var t=e.name,r=e.extension,n=e.size,o=document.createElement("div");o.setAttribute("data-file-preview",""),A(o,"preview-zone","file-preview");var a=document.createElement("span");a.setAttribute("data-extension-label",""),a.innerText=r.toUpperCase(),A(a,"preview-zone","file-preview","thumbnail","extension-label");var i=document.createElement("div");i.setAttribute("data-thumbnail",""),i.appendChild(a),A(i,"preview-zone","file-preview","thumbnail");var s,l,c,u,d=document.createElement("span");d.setAttribute("data-filename",""),d.innerText=(void 0===(l=14)&&(l=50),void 0===c&&(c="…"),void 0===u&&(u=3),(s=t).length>l?s.substr(0,l-u)+c:s),d.title=t,A(d,"preview-zone","file-preview","filename");var f=document.createElement("span");return f.setAttribute("data-filesize",""),f.innerText=n,A(f,"preview-zone","file-preview","filesize"),o.appendChild(i),o.appendChild(d),o.appendChild(f),[o,i,d,f]}(e),n=r[0],o=r[1];e.url&&(o.style.backgroundImage="url(".concat(e.url,")"));var i=function(e){var t=document.createElement("button");return t.type="button",t.setAttribute("data-remove-button",""),t.setAttribute("title","Remove file?"),t.setAttribute("aria-label","Remove file?"),t.innerHTML='',A(t,"preview-zone","file-preview","thumbnail","remove-button"),e._dispatchEvent(a.renderPreviewRemoveButton,{button:t}).button}(t),s=function(e){var t=document.createElement("div");return t.innerText="!",t.setAttribute("data-errors",""),A(t,"preview-zone","file-preview","thumbnail","errors"),e._dispatchEvent(a.renderErrorContainer,{container:t},t).container}(t),l=function(){var e=document.createElement("div");return e.setAttribute("data-progress",""),A(e,"preview-zone","file-preview","thumbnail","progress"),e}();o.appendChild(i),o.appendChild(s),o.appendChild(l);var c=t._dispatchEvent(a.renderPreview,{metadata:e,container:n});return A(n,"preview-zone","file-preview","animation-enter"),setTimeout((function(){!function(e){for(var t=[],r=1;r8&&(v>0&&(v+=8-b),b=8),"exponent"===d)return b;if(0===y)g[0]=0,E=g[1]=$.symbol[u][t?z:K][b];else{w=y/(2===n?Math.pow(2,10*b):Math.pow(1e3,b)),t&&(w*=8,w>=S&&b<8&&(w/=S,b++));const e=Math.pow(10,b>0?o:0);g[0]=L(w*e)/e,g[0]===S&&b<8&&-1===h&&(g[0]=1,b++),E=g[1]=10===n&&1===b?t?"kbit":"kB":$.symbol[u][t?z:K][b]}if(A&&(g[0]=-g[0]),v>0&&(g[0]=g[0].toPrecision(v)),g[1]=c[g[1]]||g[1],!0===a?g[0]=g[0].toLocaleString():a.length>0?g[0]=g[0].toLocaleString(a,i):s.length>0&&(g[0]=g[0].toString().replace(".",s)),r&&o>0){const e=g[0].toString(),t=s||(e.match(/(\D)/g)||[]).pop()||".",r=e.toString().split(t),n=r[1]||"",a=n.length,i=o-a;g[0]=`${r[0]}${t}${n.padEnd(a+i,"0")}`}return k&&(g[1]=p[b]?p[b]:$.fullform[u][b]+(t?"bit":"byte")+(1===g[0]?"":"s")),"array"===d?g:"object"===d?{value:g[0],symbol:g[1],exponent:b,unit:E}:g.join(l)}(e.size,{round:1}),d=null!==l?l[1].toLowerCase():"n/a",f=Y({name:c,extension:d,size:u},o),p=f.querySelector("[data-thumbnail]"),h=f.querySelector("[data-remove-button]");if(ee(d)){var m=new FileReader;m.readAsDataURL(e),m.onloadend=function(){p.setAttribute("data-has-preview",""),p.style.backgroundImage="url(".concat(m.result.toString(),")")}}n.appendChild(f),h.addEventListener("click",s),re(r,o);var v=new FormData(o.form);v.delete("action"),v.append("handle",t),v.append(t,e);var b=r.getAttribute("data-base-url");return D.post("".concat(b,"/files/upload"),v,{cancelToken:i,onUploadProgress:function(e){var t=e.total,n=e.loaded,o=Math.ceil(n/(t/100));y(a.onUploadProgress,{total:t,loaded:n,percent:o},r),f.style.setProperty("--progress","".concat(o,"%")),o>=98&&h.removeEventListener("click",s)}}).then((function(e){var a=new FormData(o.form);a.delete("action"),a.append("handle",t),a.append("id",e.data.id),h.removeEventListener("click",s),h.addEventListener("click",(function(){return e=void 0,t=void 0,s=function(){return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0?t.setAttribute("data-contains-files",""):t.removeAttribute("data-contains-files")},this.attachDragState=function(e){e instanceof HTMLElement&&(e.dataset.dragging="")},this.detachDragState=function(e){e instanceof HTMLElement&&delete e.dataset.dragging},this.handleDrag=function(e){return function(r){r.preventDefault(),r.stopPropagation(),t.attachDragState(e)}},this.handleDragLeave=function(e){return function(r){r.preventDefault(),r.stopPropagation(),t.detachDragState(e)}},this.handleDrop=function(e){return function(r){r.preventDefault(),r.stopPropagation(),t.detachDragState(e);var n=r.dataTransfer.files;t.initFileUpload(n,e)}},this.handleClick=function(e){return function(){var t=e.querySelector('input[type="file"]');if(!t)throw new Error("File upload corrupted");t.click()}},this.handleManualUpload=function(e){return function(r){var n=r.target,o=n.files;t.initFileUpload(o,e),n.value=null}},this.initFileUpload=function(e,r){for(var n=r.dataset,o=n.freeformFileUpload,a=n.maxFiles,i=n.maxSize,s=r.dataset,l=s.messageSize,c=s.messageFiles,u=r.querySelector("[data-preview-zone]"),d=r.querySelectorAll("[data-file-preview]:not([data-has-errors])").length,f=0;f=parseInt(a)){ne(r,c);break}var p=e.item(f);p.size>parseInt(i)?ne(r,l):(t.currentFileUploads++,te(p,o,r,u,t.freeform).finally((function(){t.currentFileUploads--,t.handleUploadLockdown()})),d++,t.handleUploadLockdown())}},this.handleReset=function(e){return function(){e.querySelectorAll("[data-file-preview]").forEach((function(e){return e.parentNode.removeChild(e)})),y(a.onChange,{container:e},e)}},this.handleUploadLockdown=function(){t.currentFileUploads>0?t.isFormLocked||(t.isFormLocked=!0,t.freeform.lockSubmit("file-upload")):(t.freeform.unlockSubmit("file-upload"),t.isFormLocked=!1)},this.freeform=e,this.reload()},ie=function(e){var t=this;this.reload=function(){t.freeform.has("data-scripts-js-mask")&&t.freeform.form.querySelectorAll("*[data-masked-input]").forEach((function(e){var t=e.getAttribute("data-pattern");t&&new IMask(e,{mask:t})}))},this.freeform=e,this.freeform.has("data-scripts-js-mask")&&m("https://cdnjs.cloudflare.com/ajax/libs/imask/6.0.7/imask.min.js",{onLoad:function(){return t.reload()}})},se=function(e){var t=this;this.reload=function(){t.freeform.form.querySelectorAll('[data-field-type="rating"]').forEach((function(e){var t=e.dataset,r=t.colorIdle,n=t.colorHover,o=t.colorSelected;e.style.setProperty("--ff-rating-color-idle",r),e.style.setProperty("--ff-rating-color-hover",n),e.style.setProperty("--ff-rating-color-selected",o)}))},this.freeform=e,this.reload()},le=function(e){var t=this;this.reload=function(){t.freeform.has("data-scripts-signature")&&t.freeform.form.querySelectorAll("canvas[data-signature-field]").forEach((function(e){var t=e.dataset,r=t.borderColor,n=t.backgroundColor,o=t.penColor,a=t.dotSize;e.style.borderWidth="1px",e.style.borderStyle="solid",e.style.borderColor=r;var i=e.previousSibling,s=e.parentNode.querySelector("[data-signature-clear]"),l=i.value,c=new SignaturePad(e,{onEnd:function(){i.value=c.toDataURL()},backgroundColor:n,penColor:o,dotSize:a,maxWidth:a,throttle:5});if(s&&s.addEventListener("click",(function(){c.clear(),i.value=""})),l){var u=new Image;c.clear(),u.src=l,u.onload=function(){e.getContext("2d").drawImage(u,0,0,e.width,e.height)}}}))},this.freeform=e,this.freeform.has("data-scripts-signature")&&m("//cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js",{onLoad:this.reload})},ce=/([^[]+)\[(\d+)\](\[\d+\])$/g,ue=/^(labeled-.*)-(\d+)-(\d+)-(\d+)$/g,de=function(e,t){var r=e.getAttribute("data-max-rows"),n=e.querySelectorAll("tbody > tr").length;r&&t&&(t.style.display=n>=parseInt(r,10)?"none":"block")},fe=function(e){return"string"==typeof e&&(e=e.split(" ")),e},pe=function(e,t){fe(t).map((function(t){return e.classList.add(t)}))},he=function(e,t){fe(t).map((function(t){return e.classList.remove(t)}))};function me(e){var t;void 0!==e&&(e instanceof HTMLElement&&(null===(t=e.parentElement)||void 0===t||t.removeChild(e)),(e instanceof HTMLCollection||e instanceof NodeList)&&Array.from(e).forEach((function(e){var t;null===(t=e.parentElement)||void 0===t||t.removeChild(e)})))}var ve=!1,be=function(e){return function(t){var r=t.target;if(1!==r.closest("tbody").querySelectorAll("tr").length){var n=r.closest("table"),a=r.closest("tr");e._dispatchEvent(o.onRemoveRow,{table:n,row:a}),me(a),e._dispatchEvent(o.afterRemoveRow,{table:n})}}},ye=function(e){var t=e.form.querySelectorAll("[data-freeform-table]"),r=e.freeform.options.errorClassField;t.forEach((function(e){var t=e.querySelectorAll("thead th[data-column-required]"),n=Array.from(t).map((function(e){return e.cellIndex}));e.querySelectorAll("tbody tr").forEach((function(e){var t=e.querySelectorAll("td");n.forEach((function(e){var n=t[e].querySelector("input, textarea, select"),o=Boolean(n.value);["radio","checkbox"].includes((null==n?void 0:n.type)||"")&&(o=n.checked),n&&o?he(n,r):"radio"===(null==n?void 0:n.type)?n.parentElement.parentElement.querySelectorAll("input").forEach((function(e){pe(e,r)})):pe(n,r)}))}))}))},ge=function(e){var t=this;this.reload=function(){var e;(function(e){var t;e.form.querySelectorAll("[data-freeform-table]").forEach((function(r){t=r.parentNode.querySelector("[data-freeform-table-add-row]"),de(r,t),t&&(e.form.addEventListener(o.afterRemoveRow,(function(){de(r,t)})),t.addEventListener("click",(function(){var n=r.querySelector("tbody > tr:last-child");if(n){for(var a=n.cloneNode(!0),i=a.querySelectorAll("textarea, input, select"),s=function(){for(var e=r.querySelectorAll("textarea, input, select"),t=0,n=0;n0?r[0]:"":o.value}else{var s=t.values[e.field]||"";r="boolean"==typeof s?s?"1":"":"number"==typeof s?"".concat(s):s}if("object"==typeof r)switch(e.operator){case"equals":return Ae(r,[e.value]);case"notEquals":return!Ae(r,[e.value]);case"contains":return null==r?void 0:r.includes(e.value);case"notContains":return!(null==r?void 0:r.includes(e.value));case"isEmpty":return null===r||0===r.length;case"isNotEmpty":return(null==r?void 0:r.length)>0;case"isOneOf":case"isNotOneOf":var l="isOneOf"===e.operator,c=(e.value?JSON.parse(e.value):[]).map((function(e){return e.toLowerCase()})),u=r.some((function(e){return c.includes(e.toLowerCase())}));return 0===c.length?l?0!==r.length:0===r.length:l?u:!u;default:return!1}switch(e.operator){case"equals":return"".concat(r).toLowerCase()==="".concat(e.value).toLowerCase();case"notEquals":return"".concat(r).toLowerCase()!=="".concat(e.value).toLowerCase();case"greaterThan":return parseFloat(r)>parseFloat(e.value);case"greaterThanOrEquals":return parseFloat(r)>=parseFloat(e.value);case"lessThan":return parseFloat(r)0;case"isOneOf":case"isNotOneOf":l="isOneOf"===e.operator;var d=(e.value?JSON.parse(e.value):[]).map((function(e){return e.toLowerCase()})),f=d.includes(r.toLowerCase());return 0===d.length?l?0===r.length:0!==r.length:l?f:!f;default:return!1}},this.freeform=e,this.form=e.form,this.reload()},qe=function(e,t){var r,n={},o=0;do{r=Le({},n),t(),n=je(e),o++}while(JSON.stringify(r)!==JSON.stringify(n)&&o<10)},je=function(e){var t={};return e.querySelectorAll("[data-field-container], [data-button-container]").forEach((function(e){var r=e.getAttribute("data-field-container")||e.getAttribute("data-button-container");t[r]=e.style.display||""})),t},Te=function(e){var t=this;this.reload=function(){},this.freeform=e,this.form=e.form,this.form.addEventListener(r.handleActions,(function(e){var r=e.actions.find((function(e){return"save-form"===e.name}));if(r){var n=r.metadata,o=n.key,a=n.token,s=n.url,l=y(i.saveFormhandleToken,{key:o,token:a,url:s},t.form);l.defaultPrevented||(window.location.href=l.url)}}))},Fe=function(){return Fe=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0))for(var t=0,r=Array.from(o._getSubmitButtons());t1)){var t=o.options,r=t.disableSubmit,n=t.showProcessingSpinner,a=t.showProcessingText;r&&o.disableSubmit(e);var i=o._lastButtonPressed;i||(i=o._getSubmitButtons()[0]||void 0),i&&(n&&i.classList.add("freeform-processing"),a&&(i.innerHTML=i.dataset.processingText))}},this.unlockSubmit=function(e){void 0===e&&(e="freeform"),o._lockList.delete(e),o._lockList.size>0||o._unlockSubmitButtons(e)},this.forceUnlockSubmit=function(){o._lockList.clear(),o._unlockSubmitButtons()},this.triggerResubmit=function(){o.unlockSubmit(),o._lastButtonPressed?o._lastButtonPressed.click():o.triggerSubmit()},this.triggerSubmit=function(){o.unlockSubmit();var e=o._getMainSubmitButton();e&&e.click()},this._unlockSubmitButtons=function(e){var t=o.options,r=t.disableSubmit,n=t.showProcessingSpinner,a=t.showProcessingText;r&&o.enableSubmit(e);for(var i=o._getSubmitButtons(),s=0;s-1)for(var r=0;r]*>/,"").replace("","")),o.options.skipHtmlReload||(o._resetHandlers(),o._setUp()),l&&(o.options.disableReset||(n.reset(),o._dispatchEvent(r.reset)),v.onSuccess===t.Reload&&o._renderSuccessBanner()),o._dispatchEvent(r.ajaxSuccess,{request:i,response:v})}else(d||f)&&(o._dispatchEvent(r.ajaxError,{request:i,response:v,errors:d,formErrors:f}),o._dispatchEvent(r.afterFailedSubmit,{cancelable:!1}),o._renderFieldErrors(d),o._renderFormErrors(f));var h=null==v?void 0:v.freeform_payload;if(h){var m=n.querySelector("input[name^=freeform_payload]");m&&(m.value=h)}o._dispatchEvent(r.ajaxAfterSubmit,{data:a,request:i,response:v,cancelable:!1}),o.options.autoScroll&&o._scrollToForm()}else{var v=i.response;o._dispatchEvent(r.ajaxError,{request:i,response:v})}o.unlockSubmit()}))},this._getMainSubmitButton=function(){return o.form.querySelector('*[type=submit][data-freeform-action="submit"]')},this._getSubmitButtons=function(){var e=o.form.querySelectorAll("*[type=submit][data-freeform-action]");return e.length?e:o.form.querySelectorAll("*[type=submit]")},this._getBackButtons=function(){return o.form.querySelectorAll('*[type=submit][data-freeform-action="back"]')},this._dispatchEvent=function(e,t,r){var n=y(e,Fe(Fe({},t),{form:o.form,freeform:o}),r);return document.dispatchEvent(n),o.form.dispatchEvent(n),n},e.instances.get(n))return e.instances.get(n);this.id=n.dataset.id,this.form=n,this._setInstances();var a={ajax:null!==n.getAttribute("data-ajax"),disableReset:null!==n.getAttribute("data-disable-reset"),scrollToAnchor:null!==n.getAttribute("data-scroll-to-anchor"),autoScroll:null!==n.getAttribute("data-auto-scroll"),disableSubmit:null!==n.getAttribute("data-disable-submit"),showProcessingSpinner:null!==n.getAttribute("data-show-processing-spinner"),showProcessingText:null!==n.getAttribute("data-show-processing-text"),processingText:n.getAttribute("data-processing-text"),successBannerMessage:n.getAttribute("data-success-message"),errorBannerMessage:n.getAttribute("data-error-message"),skipHtmlReload:null!==n.getAttribute("data-skip-html-reload")};this.options=Fe(Fe({},this.options),a),this.disableSubmit("init");var i=setInterval((function(){return Oe(o,void 0,void 0,(function(){var e;return Pe(this,(function(t){return"complete"===document.readyState&&(clearInterval(i),e=this._dispatchEvent(r.ready,{options:{}}),this.options=Fe(Fe({},this.options),e.options),this._setUp(),this._initHandlers(),this.enableSubmit("init"),this.options.scrollToAnchor&&this._scrollToForm()),[2]}))}))}),50)}return e._BACK_BUTTON_NAME="form_previous_page_button",e.instances=new WeakMap,e.getInstance=function(t){return e.instances.get(t)},e}(),Be=Me;document.querySelectorAll("form[data-freeform]").forEach((function(e){new Me(e)}));var Re,Ne=function(e){var t;"FORM"===e.nodeName&&void 0!==(null===(t=e.dataset)||void 0===t?void 0:t.freeform)&&new Me(e),null==e||e.childNodes.forEach(Ne)},Ie=new MutationObserver((function(e){e.forEach((function(e){"childList"===e.type&&e.addedNodes.forEach((function(e){Ne(e)}))}))})),Ue=0,He=function(){if(Ue>25)return console.warn("Freeform observer timed out"),clearTimeout(Re);document.body?Ie.observe(document.body,{childList:!0,subtree:!0}):(Ue++,Re&&clearTimeout(Re),Re=setTimeout(He,50))};He()}(); \ No newline at end of file +!function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}};e.d({},{A:function(){return ze}});var t,r={ready:"freeform-ready",reset:"freeform-on-reset",submit:"freeform-on-submit",removeMessages:"freeform-remove-messages",fieldRemoveMessages:"freeform-remove-field-messages",renderSuccess:"freeform-render-success",renderFieldErrors:"freeform-render-field-errors",renderFormErrors:"freeform-render-form-errors",ajaxBeforeSuccess:"freeform-before-ajax-success",ajaxSuccess:"freeform-ajax-success",ajaxError:"freeform-ajax-error",ajaxBeforeSubmit:"freeform-ajax-before-submit",ajaxAfterSubmit:"freeform-ajax-after-submit",afterFailedSubmit:"freeform-after-failed-submit",handleActions:"freeform-handle-actions"},n={applied:"freeform-rules-applied"},o={onAddRow:"freeform-field-table-on-add-row",afterRowAdded:"freeform-field-table-after-row-added",onRemoveRow:"freeform-field-table-on-remove-row",afterRemoveRow:"freeform-field-table-after-remove-row"},a={renderPreview:"freeform-field-dnd-on-render-preview",renderPreviewRemoveButton:"freeform-field-dnd-on-render-preview-remove-button",renderErrorContainer:"freeform-field-dnd-render-error-container",showGlobalMessage:"freeform-field-dnd-show-global-message",appendErrors:"freeform-field-dnd-append-errors",clearErrors:"freeform-field-dnd-clear-errors",afterErrors:"freeform-field-dnd-after-errors",onChange:"freeform-field-dnd-on-change",onUploadProgress:"freeform-field-dnd-on-upload-progress"},i={saveFormhandleToken:"freeform-save-form-handle-token"},s={beforeLoad:"freeform-script-before-load",afterLoad:"freeform-script-after-load"},l={beforeLoad:"freeform-stylesheet-before-load",afterLoad:"freeform-stylesheet-after-load"};!function(e){e.Reload="reload",e.RedirectReturnUrl="redirect-return-url",e.LoadSuccessTemplate="load-success-template"}(t||(t={}));var c,u,d=function(e){var t=this;this.reload=function(){for(var e=t.form.querySelectorAll("*[name=".concat(ze._BACK_BUTTON_NAME,"]")),r=0;r1&&t.handleMultipleValues(n,o)}}))},this.handleMultipleValues=function(e,t){e.forEach((function(r){r.addEventListener("change",(function(){e.filter((function(e){return e.checked})).length>t&&r.checked&&(r.checked=!1)}))}))},this.handleSingleValue=function(e){e.forEach((function(t){t.addEventListener("change",(function(){var r=t.checked,n=e.filter((function(e){return e!==t})).filter((function(e){return e.checked}));r&&n.length>0&&n.forEach((function(e){e.checked=!1}))}))}))},this.freeform=e,this.reload()},p=new Map,h=new Map,m=function(e,t){void 0===t&&(t={});var r=t.cacheKey,n=t.async,o=t.defer,a=t.onLoad,i=t.parent,l=r||e;if(!p.has(l)){var c=document.createElement("script");c.src=e,c.async=null!=n&&n,c.defer=null!=o&&o,c.addEventListener("load",(function(){a&&a(c),document.dispatchEvent(new CustomEvent(s.afterLoad,{detail:{src:e,script:c}}))})),document.dispatchEvent(new CustomEvent(s.beforeLoad,{detail:{src:e,script:c}})),(i||document.body).appendChild(c),p.set(l,c)}return p.get(l)},v=function(){return v=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&e.freeform.disableSubmit("file-upload-errors-".concat(L(r)))},L=function(e){return e.dataset.freeformFileUpload||"unknown"},x=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{l(n.next(e))}catch(e){a(e)}}function s(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}l((n=n.apply(e,t||[])).next())}))},C=function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=300?n(new M("Request failed with status ".concat(i.statusText),i,e)):r({status:i.status,data:e,request:i})},i.onerror=function(){n(new Error("Network error"))},i.onabort=function(){n(new Error("Request aborted"))},o.onUploadProgress&&(i.upload.onprogress=function(e){o.onUploadProgress(e)}),o.cancelToken&&o.cancelToken._setCancelFn((function(){i.abort()})),[2,i]}}))},new((s=void 0)||(s=Promise))((function(e,t){function r(e){try{o(l.next(e))}catch(e){t(e)}}function n(e){try{o(l.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof s?o:new s((function(e){e(o)}))).then(r,n)}o((l=l.apply(a,i||[])).next())}));var a,i,s,l},R=function(e,t){t&&Object.entries(t).forEach((function(t){var r=t[0],n=t[1];e.setRequestHeader(r,String(n))}))},N=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{l(n.next(e))}catch(e){a(e)}}function s(e){try{l(n.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}l((n=n.apply(e,t||[])).next())}))},I=function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]\n

'.concat(e,'

\n \n \n \n \n \n '),document.body.appendChild(t),t},V=function(e,t){var r=function(e){var t=e.name,r=e.extension,n=e.size,o=document.createElement("div");o.setAttribute("data-file-preview",""),A(o,"preview-zone","file-preview");var a=document.createElement("span");a.setAttribute("data-extension-label",""),a.innerText=r.toUpperCase(),A(a,"preview-zone","file-preview","thumbnail","extension-label");var i=document.createElement("div");i.setAttribute("data-thumbnail",""),i.appendChild(a),A(i,"preview-zone","file-preview","thumbnail");var s,l,c,u,d=document.createElement("span");d.setAttribute("data-filename",""),d.innerText=(void 0===(l=14)&&(l=50),void 0===c&&(c="…"),void 0===u&&(u=3),(s=t).length>l?s.substr(0,l-u)+c:s),d.title=t,A(d,"preview-zone","file-preview","filename");var f=document.createElement("span");return f.setAttribute("data-filesize",""),f.innerText=n,A(f,"preview-zone","file-preview","filesize"),o.appendChild(i),o.appendChild(d),o.appendChild(f),[o,i,d,f]}(e),n=r[0],o=r[1];e.url&&(o.style.backgroundImage="url(".concat(e.url,")"));var i=function(e){var t=document.createElement("button");return t.type="button",t.setAttribute("data-remove-button",""),t.setAttribute("title","Remove file?"),t.setAttribute("aria-label","Remove file?"),t.innerHTML='',A(t,"preview-zone","file-preview","thumbnail","remove-button"),e._dispatchEvent(a.renderPreviewRemoveButton,{button:t}).button}(t),s=function(e){var t=document.createElement("div");return t.innerText="!",t.setAttribute("data-errors",""),A(t,"preview-zone","file-preview","thumbnail","errors"),e._dispatchEvent(a.renderErrorContainer,{container:t},t).container}(t),l=function(){var e=document.createElement("div");return e.setAttribute("data-progress",""),A(e,"preview-zone","file-preview","thumbnail","progress"),e}();o.appendChild(i),o.appendChild(s),o.appendChild(l);var c=t._dispatchEvent(a.renderPreview,{metadata:e,container:n});return A(n,"preview-zone","file-preview","animation-enter"),setTimeout((function(){!function(e){for(var t=[],r=1;r8&&(v>0&&(v+=8-b),b=8),"exponent"===d)return b;if(0===y)g[0]=0,E=g[1]=G.symbol[u][t?D:z][b];else{w=y/(2===n?Math.pow(2,10*b):Math.pow(1e3,b)),t&&(w*=8,w>=S&&b<8&&(w/=S,b++));const e=Math.pow(10,b>0?o:0);g[0]=_(w*e)/e,g[0]===S&&b<8&&-1===h&&(g[0]=1,b++),E=g[1]=10===n&&1===b?t?"kbit":"kB":G.symbol[u][t?D:z][b]}if(A&&(g[0]=-g[0]),v>0&&(g[0]=g[0].toPrecision(v)),g[1]=c[g[1]]||g[1],!0===a?g[0]=g[0].toLocaleString():a.length>0?g[0]=g[0].toLocaleString(a,i):s.length>0&&(g[0]=g[0].toString().replace(".",s)),r&&o>0){const e=g[0].toString(),t=s||(e.match(/(\D)/g)||[]).pop()||".",r=e.toString().split(t),n=r[1]||"",a=n.length,i=o-a;g[0]=`${r[0]}${t}${n.padEnd(a+i,"0")}`}return k&&(g[1]=p[b]?p[b]:G.fullform[u][b]+(t?"bit":"byte")+(1===g[0]?"":"s")),"array"===d?g:"object"===d?{value:g[0],symbol:g[1],exponent:b,unit:E}:g.join(l)}(e.size,{round:1}),d=null!==l?l[1].toLowerCase():"n/a",f=V({name:c,extension:d,size:u},o),p=f.querySelector("[data-thumbnail]"),h=f.querySelector("[data-remove-button]");if(Q(d)){var m=new FileReader;m.readAsDataURL(e),m.onloadend=function(){p.setAttribute("data-has-preview",""),p.style.backgroundImage="url(".concat(m.result.toString(),")")}}n.appendChild(f),h.addEventListener("click",s),te(r,o);var v=new FormData(o.form);v.delete("action"),v.append("handle",t),v.append(t,e);var b=r.getAttribute("data-base-url");return H.post("".concat(b,"/files/upload"),v,{cancelToken:i,onUploadProgress:function(e){var t=e.total,n=e.loaded,o=Math.ceil(n/(t/100));y(a.onUploadProgress,{total:t,loaded:n,percent:o},r),f.style.setProperty("--progress","".concat(o,"%")),o>=98&&h.removeEventListener("click",s)}}).then((function(e){var a=new FormData(o.form);a.delete("action"),a.append("handle",t),a.append("id",e.data.id),h.removeEventListener("click",s),h.addEventListener("click",(function(){return e=void 0,t=void 0,s=function(){return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(l){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0?t.setAttribute("data-contains-files",""):t.removeAttribute("data-contains-files")},this.attachDragState=function(e){e instanceof HTMLElement&&(e.dataset.dragging="")},this.detachDragState=function(e){e instanceof HTMLElement&&delete e.dataset.dragging},this.handleDrag=function(e){return function(r){r.preventDefault(),r.stopPropagation(),t.attachDragState(e)}},this.handleDragLeave=function(e){return function(r){r.preventDefault(),r.stopPropagation(),t.detachDragState(e)}},this.handleDrop=function(e){return function(r){r.preventDefault(),r.stopPropagation(),t.detachDragState(e);var n=r.dataTransfer.files;t.initFileUpload(n,e)}},this.handleClick=function(e){return function(){var t=e.querySelector('input[type="file"]');if(!t)throw new Error("File upload corrupted");t.click()}},this.handleManualUpload=function(e){return function(r){var n=r.target,o=n.files;t.initFileUpload(o,e),n.value=null}},this.initFileUpload=function(e,r){for(var n=r.dataset,o=n.freeformFileUpload,a=n.maxFiles,i=n.maxSize,s=r.dataset,l=s.messageSize,c=s.messageFiles,u=r.querySelector("[data-preview-zone]"),d=r.querySelectorAll("[data-file-preview]:not([data-has-errors])").length,f=0;f=parseInt(a)){re(r,c);break}var p=e.item(f);p.size>parseInt(i)?re(r,l):(t.currentFileUploads++,ee(p,o,r,u,t.freeform).finally((function(){t.currentFileUploads--,t.handleUploadLockdown()})),d++,t.handleUploadLockdown())}},this.handleReset=function(e){return function(){e.querySelectorAll("[data-file-preview]").forEach((function(e){return e.parentNode.removeChild(e)})),y(a.onChange,{container:e},e)}},this.handleUploadLockdown=function(){t.currentFileUploads>0?t.isFormLocked||(t.isFormLocked=!0,t.freeform.lockSubmit("file-upload")):(t.freeform.unlockSubmit("file-upload"),t.isFormLocked=!1)},this.freeform=e,this.reload()},ae=function(e){var t=this;this.reload=function(){t.freeform.has("data-scripts-js-mask")&&t.freeform.form.querySelectorAll("*[data-masked-input]").forEach((function(e){var t=e.getAttribute("data-pattern");t&&new IMask(e,{mask:t})}))},this.freeform=e,this.freeform.has("data-scripts-js-mask")&&m("https://cdnjs.cloudflare.com/ajax/libs/imask/6.0.7/imask.min.js",{onLoad:function(){return t.reload()}})},ie=function(e){var t=this;this.reload=function(){t.freeform.form.querySelectorAll('[data-field-type="rating"]').forEach((function(e){var t=e.dataset,r=t.colorIdle,n=t.colorHover,o=t.colorSelected;e.style.setProperty("--ff-rating-color-idle",r),e.style.setProperty("--ff-rating-color-hover",n),e.style.setProperty("--ff-rating-color-selected",o)}))},this.freeform=e,this.reload()},se=function(e){var t=this;this.reload=function(){t.freeform.has("data-scripts-signature")&&t.freeform.form.querySelectorAll("canvas[data-signature-field]").forEach((function(e){var t=e.dataset,r=t.borderColor,n=t.backgroundColor,o=t.penColor,a=t.dotSize;e.style.borderWidth="1px",e.style.borderStyle="solid",e.style.borderColor=r;var i=e.previousSibling,s=e.parentNode.querySelector("[data-signature-clear]"),l=i.value,c=new SignaturePad(e,{onEnd:function(){i.value=c.toDataURL()},backgroundColor:n,penColor:o,dotSize:a,maxWidth:a,throttle:5});if(s&&s.addEventListener("click",(function(){c.clear(),i.value=""})),l){var u=new Image;c.clear(),u.src=l,u.onload=function(){e.getContext("2d").drawImage(u,0,0,e.width,e.height)}}}))},this.freeform=e,this.freeform.has("data-scripts-signature")&&m("//cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js",{onLoad:this.reload})},le=new WeakMap,ce=function(e){var t=e.querySelector("div[data-attributes-manifest]"),r=null==t?void 0:t.dataset.attributesManifest;return JSON.parse(r||"{}")},ue=function(e,t){e&&Object.entries(t).forEach((function(t){var r=t[0],n=t[1],o=document.createAttribute(r);o.value=n,e.attributes.setNamedItem(o)}))},de=function(){for(var e=[],t=0;t tr").length;r&&t&&(t.style.display=n>=parseInt(r,10)?"none":"block")},be=!1,ye=function(e){return function(t){var r=t.target;if(1!==r.closest("tbody").querySelectorAll("tr").length){var n,a,i=r.closest("table"),s=r.closest("tr");e._dispatchEvent(o.onRemoveRow,{table:i,row:s}),void 0!==(n=s)&&(n instanceof HTMLElement&&(null===(a=n.parentElement)||void 0===a||a.removeChild(n)),(n instanceof HTMLCollection||n instanceof NodeList)&&Array.from(n).forEach((function(e){var t;null===(t=e.parentElement)||void 0===t||t.removeChild(e)}))),e._dispatchEvent(o.afterRemoveRow,{table:i})}}},ge=function(e){var t=this;this.reload=function(){var e;(function(e){var t;e.form.querySelectorAll("[data-freeform-table]").forEach((function(r){t=r.parentNode.querySelector("[data-freeform-table-add-row]"),ve(r,t),t&&(e.form.addEventListener(o.afterRemoveRow,(function(){ve(r,t)})),t.addEventListener("click",(function(){var n,a=r.querySelector("tbody > tr:last-child"),i=null==a?void 0:a.querySelectorAll("textarea, input, select");if(a){for(var s=a.cloneNode(!0),l=s.querySelectorAll("textarea, input, select"),c=function(){for(var e=r.querySelectorAll("textarea, input, select"),t=0,n=0;n0?r[0]:"":o.value}else{var s=t.values[e.field]||"";r="boolean"==typeof s?s?"1":"":"number"==typeof s?"".concat(s):s}if("object"==typeof r)switch(e.operator){case"equals":return Ae(r,[e.value]);case"notEquals":return!Ae(r,[e.value]);case"contains":return null==r?void 0:r.includes(e.value);case"notContains":return!(null==r?void 0:r.includes(e.value));case"isEmpty":return null===r||0===r.length;case"isNotEmpty":return(null==r?void 0:r.length)>0;case"isOneOf":case"isNotOneOf":var l="isOneOf"===e.operator,c=(e.value?JSON.parse(e.value):[]).map((function(e){return e.toLowerCase()})),u=r.some((function(e){return c.includes(e.toLowerCase())}));return 0===c.length?l?0!==r.length:0===r.length:l?u:!u;default:return!1}switch(e.operator){case"equals":return"".concat(r).toLowerCase()==="".concat(e.value).toLowerCase();case"notEquals":return"".concat(r).toLowerCase()!=="".concat(e.value).toLowerCase();case"greaterThan":return parseFloat(r)>parseFloat(e.value);case"greaterThanOrEquals":return parseFloat(r)>=parseFloat(e.value);case"lessThan":return parseFloat(r)0;case"isOneOf":case"isNotOneOf":l="isOneOf"===e.operator;var d=(e.value?JSON.parse(e.value):[]).map((function(e){return e.toLowerCase()})),f=d.includes(r.toLowerCase());return 0===d.length?l?0===r.length:0!==r.length:l?f:!f;default:return!1}},this.freeform=e,this.form=e.form,this.reload()},qe=function(e,t){var r,n={},o=0;do{r=_e({},n),t(),n=Te(e),o++}while(JSON.stringify(r)!==JSON.stringify(n)&&o<10)},Te=function(e){var t={};return e.querySelectorAll("[data-field-container], [data-button-container]").forEach((function(e){var r=e.getAttribute("data-field-container")||e.getAttribute("data-button-container");t[r]=e.style.display||""})),t},je=function(e){var t=this;this.reload=function(){},this.freeform=e,this.form=e.form,this.form.addEventListener(r.handleActions,(function(e){var r=e.actions.find((function(e){return"save-form"===e.name}));if(r){var n=r.metadata,o=n.key,a=n.token,s=n.url,l=y(i.saveFormhandleToken,{key:o,token:a,url:s},t.form);l.defaultPrevented||(window.location.href=l.url)}}))},Fe=function(e,t){var r=e.dataset.fieldContainer;switch(e.dataset.fieldType){case"signature":return void t(e.querySelector("canvas"));case"table":return void e.querySelectorAll("input, select, textarea").forEach(t);case"checkboxes":case"radios":case"rating":return void e.querySelectorAll('input[type="radio"], input[type="checkbox"]').forEach(t);default:return void t(e.querySelector('[name="'.concat(r,'"]')))}};function Oe(){var e=this.form;e.querySelectorAll("[data-ff-form-banner]").forEach((function(e){e.remove()})),e.querySelectorAll("[data-field-container][data-ff-has-errors]").forEach((function(e){Pe(e)}))}var Pe=function(e){var t,r=null==e?void 0:e.querySelector("[data-field-label]"),n=null==e?void 0:e.querySelector("[data-field-instructions]");de(e),de(r),de(n),Fe(e,de),null===(t=e.querySelector("[data-field-errors]"))||void 0===t||t.remove()};function Me(){var e=this.form,t=this.options,r=t.successBannerMessage,n=t.successClassBanner,o=ce(e).form.success,a=(null==o?void 0:o.tag)||"div";o.tag&&delete o.tag,o["data-ff-form-banner"]="success",n&&(o.class="".concat((null==o?void 0:o.class)||""," ").concat(n).trim());var i=document.createElement(a);ue(i,o);var s=document.createElement("p");s.appendChild(document.createTextNode(r)),i.appendChild(s),e.insertBefore(i,e.childNodes[0])}function Be(e){var t=this.form,r=this.options,n=r.errorClassBanner,o=r.errorBannerMessage,a=ce(t).form.error,i=(null==a?void 0:a.tag)||"div";a.tag&&delete a.tag,a["data-ff-form-banner"]="error",n&&(a.class="".concat((null==a?void 0:a.class)||""," ").concat(n).trim());var s=document.createElement(i);ue(s,a);var l=document.createElement("p");if(l.appendChild(document.createTextNode(o)),s.appendChild(l),e.length){var c=document.createElement("ul");e.forEach((function(e){var t=document.createElement("li");t.appendChild(document.createTextNode(e)),c.appendChild(t)})),s.appendChild(c)}t.insertBefore(s,t.childNodes[0])}function Re(e){var t=this,r=ce(t.form);Object.entries(e).forEach((function(e){var n,o=e[0],a=e[1],i=t.form.querySelector('[data-field-container="'.concat(o,'"]')),s=null===(n=r.fields)||void 0===n?void 0:n[o];Ne(t,o,i,s,a)}))}var Ne=function(e,t,r,n,o){var a,i,s;if(n){var l=e.form,c=e.options.errorClassField;c&&((null===(i=null===(a=n.input)||void 0===a?void 0:a.class)||void 0===i?void 0:i.includes(c))||(n.input.class="".concat((null===(s=n.input)||void 0===s?void 0:s.class)||""," ").concat(c).trim()));var u=null==r?void 0:r.querySelector("[data-field-label]"),d=null==r?void 0:r.querySelector("[data-field-instructions]");pe(r,u,d),ue(r,n.container),ue(u,n.label),ue(d,n.instructions),r.dataset.ffHasErrors="true",Fe(r,(function(e){pe(e),ue(e,n.input)}));var f=document.createElement("ul");ue(f,n.error),o.forEach((function(e){var t=document.createElement("li");t.appendChild(document.createTextNode(e)),f.appendChild(t)}));var p=l.querySelector('[data-error-append-target="'.concat(t,'"]'));p?p.appendChild(f):r.appendChild(f)}},Ie=function(){return Ie=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0))for(var t=0,r=Array.from(o._getSubmitButtons());t1)){var t=o.options,r=t.disableSubmit,n=t.showProcessingSpinner,a=t.showProcessingText;r&&o.disableSubmit(e);var i=o._lastButtonPressed;i||(i=o._getSubmitButtons()[0]||void 0),i&&(n&&i.classList.add("freeform-processing"),a&&(i.innerHTML=i.dataset.processingText))}},this.unlockSubmit=function(e){void 0===e&&(e="freeform"),o._lockList.delete(e),o._lockList.size>0||o._unlockSubmitButtons(e)},this.forceUnlockSubmit=function(){o._lockList.clear(),o._unlockSubmitButtons()},this.triggerResubmit=function(){o.unlockSubmit(),o._lastButtonPressed?o._lastButtonPressed.click():o.triggerSubmit()},this.triggerSubmit=function(){o.unlockSubmit();var e=o._getMainSubmitButton();e&&e.click()},this._unlockSubmitButtons=function(e){var t=o.options,r=t.disableSubmit,n=t.showProcessingSpinner,a=t.showProcessingText;r&&o.enableSubmit(e);for(var i=o._getSubmitButtons(),s=0;s-1)for(var r=0;r]*>/,"").replace("","")),o.options.skipHtmlReload||(o._resetHandlers(),o._setUp()),l&&(o.options.disableReset||(n.reset(),o._dispatchEvent(r.reset)),v.onSuccess===t.Reload&&o._renderSuccessBanner()),o._dispatchEvent(r.ajaxSuccess,{request:i,response:v})}else(d||f)&&(o._dispatchEvent(r.ajaxError,{request:i,response:v,errors:d,formErrors:f}),o._dispatchEvent(r.afterFailedSubmit,{cancelable:!1}),o._renderFieldErrors(d),o._renderFormErrors(f));var h=null==v?void 0:v.freeform_payload;if(h){var m=n.querySelector("input[name^=freeform_payload]");m&&(m.value=h)}o._dispatchEvent(r.ajaxAfterSubmit,{data:a,request:i,response:v,cancelable:!1}),o.options.autoScroll&&o._scrollToForm()}else{var v=i.response;o._dispatchEvent(r.ajaxError,{request:i,response:v})}o.unlockSubmit()}))},this._getMainSubmitButton=function(){return o.form.querySelector('*[type=submit][data-freeform-action="submit"]')},this._getSubmitButtons=function(){var e=o.form.querySelectorAll("*[type=submit][data-freeform-action]");return e.length?e:o.form.querySelectorAll("*[type=submit]")},this._getBackButtons=function(){return o.form.querySelectorAll('*[type=submit][data-freeform-action="back"]')},this._dispatchEvent=function(e,t,r){var n=y(e,Ie(Ie({},t),{form:o.form,freeform:o}),r);return document.dispatchEvent(n),o.form.dispatchEvent(n),n},e.instances.get(n))return e.instances.get(n);this.id=n.dataset.id,this.form=n,this._setInstances();var a={ajax:null!==n.getAttribute("data-ajax"),disableReset:null!==n.getAttribute("data-disable-reset"),scrollToAnchor:null!==n.getAttribute("data-scroll-to-anchor"),autoScroll:null!==n.getAttribute("data-auto-scroll"),disableSubmit:null!==n.getAttribute("data-disable-submit"),showProcessingSpinner:null!==n.getAttribute("data-show-processing-spinner"),showProcessingText:null!==n.getAttribute("data-show-processing-text"),processingText:n.getAttribute("data-processing-text"),successBannerMessage:n.getAttribute("data-success-message"),errorBannerMessage:n.getAttribute("data-error-message"),skipHtmlReload:null!==n.getAttribute("data-skip-html-reload")};this.options=Ie(Ie({},this.options),a),this.disableSubmit("init");var i=setInterval((function(){return Ue(o,void 0,void 0,(function(){var e;return He(this,(function(t){return"complete"===document.readyState&&(clearInterval(i),e=this._dispatchEvent(r.ready,{options:{}}),this.options=Ie(Ie({},this.options),e.options),this._setUp(),this._initHandlers(),this.enableSubmit("init"),this.options.scrollToAnchor&&this._scrollToForm()),[2]}))}))}),50)}return e._BACK_BUTTON_NAME="form_previous_page_button",e.instances=new WeakMap,e.getInstance=function(t){return e.instances.get(t)},e}(),ze=De;document.querySelectorAll("form[data-freeform]").forEach((function(e){new De(e)}));var Ke,Ge=function(e){var t;"FORM"===e.nodeName&&void 0!==(null===(t=e.dataset)||void 0===t?void 0:t.freeform)&&new De(e),null==e||e.childNodes.forEach(Ge)},Je=new MutationObserver((function(e){e.forEach((function(e){"childList"===e.type&&e.addedNodes.forEach((function(e){Ge(e)}))}))})),We=0,$e=function(){if(We>25)return console.warn("Freeform observer timed out"),clearTimeout(Ke);document.body?Je.observe(document.body,{childList:!0,subtree:!0}):(We++,Ke&&clearTimeout(Ke),Ke=setTimeout($e,50))};$e()}(); \ No newline at end of file diff --git a/packages/plugin/src/Tests/Library/Helpers/ArrayHelperTest.php b/packages/plugin/src/Tests/Library/Helpers/ArrayHelperTest.php index b92e2f4414..abf7243987 100644 --- a/packages/plugin/src/Tests/Library/Helpers/ArrayHelperTest.php +++ b/packages/plugin/src/Tests/Library/Helpers/ArrayHelperTest.php @@ -20,17 +20,6 @@ public function testSome(): void $this->assertFalse(ArrayHelper::some($array, fn ($item) => 'non-existent' === $item)); } - public function testSomeRecursive(): void - { - $array = [1, 'two', false, [1, 'two', false]]; - - $this->assertTrue(ArrayHelper::someRecursive($array, fn ($item) => 1 === $item)); - $this->assertTrue(ArrayHelper::someRecursive($array, fn ($item) => 'two' === $item)); - $this->assertTrue(ArrayHelper::someRecursive($array, fn ($item) => false === $item)); - - $this->assertFalse(ArrayHelper::someRecursive($array, fn ($item) => 'non-existent' === $item)); - } - public function testEvery(): void { $array = [1, 2, 3, 4]; @@ -40,15 +29,6 @@ public function testEvery(): void $this->assertFalse(ArrayHelper::every($array, fn ($item) => $item < 4)); } - public function testEveryRecursive(): void - { - $array = [1, 2, 3, 4, [1, 2, 3, 4]]; - - $this->assertTrue(ArrayHelper::everyRecursive($array, fn ($item) => $item > 0 && $item < 5)); - $this->assertFalse(ArrayHelper::everyRecursive($array, fn ($item) => $item > 1)); - $this->assertFalse(ArrayHelper::everyRecursive($array, fn ($item) => $item < 4)); - } - public function testFlattenKeys(): void { $input = [ diff --git a/packages/plugin/src/Tests/Library/Helpers/RecursiveArrayHelperTest.php b/packages/plugin/src/Tests/Library/Helpers/RecursiveArrayHelperTest.php new file mode 100644 index 0000000000..31d1d457e5 --- /dev/null +++ b/packages/plugin/src/Tests/Library/Helpers/RecursiveArrayHelperTest.php @@ -0,0 +1,31 @@ +assertTrue(RecursiveArrayHelper::some($array, fn ($item) => 1 === $item)); + $this->assertTrue(RecursiveArrayHelper::some($array, fn ($item) => 'two' === $item)); + $this->assertTrue(RecursiveArrayHelper::some($array, fn ($item) => false === $item)); + + $this->assertFalse(RecursiveArrayHelper::some($array, fn ($item) => 'non-existent' === $item)); + } + + public function testEvery(): void + { + $array = [1, 2, 3, 4, [1, 2, 3, 4]]; + + $this->assertTrue(RecursiveArrayHelper::every($array, fn ($item) => $item > 0 && $item < 5)); + $this->assertFalse(RecursiveArrayHelper::every($array, fn ($item) => $item > 1)); + $this->assertFalse(RecursiveArrayHelper::every($array, fn ($item) => $item < 4)); + } +} diff --git a/packages/scripts/src/components/front-end/fields/calculation.ts b/packages/scripts/src/components/front-end/fields/calculation.ts index fe521f405a..574572c9f6 100644 --- a/packages/scripts/src/components/front-end/fields/calculation.ts +++ b/packages/scripts/src/components/front-end/fields/calculation.ts @@ -69,8 +69,16 @@ const attachCalculations = (input: HTMLInputElement) => { return; } - let result = expressionLanguage.evaluate(calculationsLogic, variables); - result = decimalCount !== null ? result.toFixed(decimalCount) : result; + let result: number | string = ''; + if (calculationsLogic) { + result = expressionLanguage.evaluate(calculationsLogic, variables); + } else { + result = ''; + } + + if (Number.isInteger(result) && !Number.isNaN(result) && decimalCount !== null) { + result = (result as number).toFixed(decimalCount); + } const updateInputValue = (value: string | number) => { input.value = value.toString(); @@ -86,7 +94,7 @@ const attachCalculations = (input: HTMLInputElement) => { const pTag = container.querySelector('.freeform-calculation-plain-field'); if (pTag) { - pTag.textContent = result; + pTag.textContent = String(result); } updateInputValue(result); diff --git a/packages/scripts/src/components/front-end/plugin/errors/errors.attributes.ts b/packages/scripts/src/components/front-end/plugin/errors/errors.attributes.ts new file mode 100644 index 0000000000..7ff4f0da97 --- /dev/null +++ b/packages/scripts/src/components/front-end/plugin/errors/errors.attributes.ts @@ -0,0 +1,107 @@ +import type { AttributeList, AttributeRecord, Attributes, AttributeSnapshot } from './errors.types'; + +const preservedAttributes = new WeakMap(); + +/** + * The attribute manifest lists all attributes that have to be applied to fields in case of errors. + * As well as the attributes for the success and error banners. + * + * @param form - The form element to get the attribute manifest for. + * @returns AttributeList + */ +export const getAttributeManifest = (form: HTMLFormElement): AttributeList => { + const manifestElement = form.querySelector('div[data-attributes-manifest]'); + const manifest = manifestElement?.dataset.attributesManifest; + + return JSON.parse(manifest || '{}'); +}; + +/** + * Attach all given attributes to an element. + * + * @param element - The element to attach attributes to. + * @param attributes - The attributes to attach. + * @returns void + */ +export const attachAttributes = (element: HTMLElement, attributes: Attributes): void => { + if (!element) { + return; + } + + Object.entries(attributes).forEach(([name, value]) => { + const attr = document.createAttribute(name); + attr.value = value; + element.attributes.setNamedItem(attr); + }); +}; + +/** + * Restore pre-error attributes for the given elements. + * + * @param elements - The elements to restore attributes for. + */ +export const restoreAttributes = (...elements: HTMLElement[]): void => { + elements.forEach((element) => restoreElementAttributes(element)); +}; + +export const getAttributeSnapshot = (element: HTMLElement): AttributeSnapshot | undefined => { + return preservedAttributes.get(element); +}; + +/** + * Restore attributes for a single element. + * + * @param element + * @returns void + */ +export const restoreElementAttributes = (element: HTMLElement, snapshot?: AttributeSnapshot): void => { + if (snapshot === undefined) { + snapshot = preservedAttributes.get(element); + } + + if (!snapshot) { + return; + } + + // Remove any attributes that were added after the snapshot was taken + Array.from(element.attributes).forEach((attr) => { + if (!snapshot.names.has(attr.name)) { + element.removeAttribute(attr.name); + } + }); + + // Restore original attributes + snapshot.attrs.forEach((attr) => { + const attribute = document.createAttribute(attr.name); + attribute.value = attr.value; + if (attr.ns) { + element.setAttributeNS(attr.ns, attr.name, attr.value); + } else { + element.setAttributeNode(attribute); + } + }); +}; + +/** + * Store the current attributes of the given elements in a cache, so they can be restored later. + * + * @param elements - The elements to store attributes for. + */ +export const preserveAttributes = (...elements: HTMLElement[]): void => { + elements.forEach((element) => { + if (!element) { + return; + } + + const attrs: AttributeRecord[] = Array.from(element.attributes).map((attr) => ({ + name: attr.name, + value: attr.value, + ns: attr.namespaceURI, + })); + + preservedAttributes.set(element, { + attrs, + names: new Set(attrs.map((a) => a.name)), + }); + }); +}; diff --git a/packages/scripts/src/components/front-end/plugin/errors/errors.operations.ts b/packages/scripts/src/components/front-end/plugin/errors/errors.operations.ts new file mode 100644 index 0000000000..4ad6325884 --- /dev/null +++ b/packages/scripts/src/components/front-end/plugin/errors/errors.operations.ts @@ -0,0 +1,31 @@ +export const callbackOnInputs = (container: HTMLElement, callback: (element: HTMLElement) => void) => { + let inputs: NodeListOf; + + const handle = container.dataset.fieldContainer; + const type = container.dataset.fieldType; + switch (type) { + case 'signature': + const canvas = container.querySelector('canvas'); + callback(canvas); + + return; + case 'table': + inputs = container.querySelectorAll(`input, select, textarea`); + inputs.forEach(callback); + + return; + case 'checkboxes': + case 'radios': + case 'rating': + inputs = container.querySelectorAll(`input[type="radio"], input[type="checkbox"]`); + inputs.forEach(callback); + + return; + + default: + const input = container.querySelector(`[name="${handle}"]`); + callback(input); + + return; + } +}; diff --git a/packages/scripts/src/components/front-end/plugin/errors/errors.remove.ts b/packages/scripts/src/components/front-end/plugin/errors/errors.remove.ts new file mode 100644 index 0000000000..236074ff4b --- /dev/null +++ b/packages/scripts/src/components/front-end/plugin/errors/errors.remove.ts @@ -0,0 +1,38 @@ +import type Freeform from '../freeform'; +import { restoreAttributes } from './errors.attributes'; +import { callbackOnInputs } from './errors.operations'; + +/** + * Remove all error states and messages from the form. + */ +export function removeMessages(): void { + const { form } = this as Freeform; + + form.querySelectorAll('[data-ff-form-banner]').forEach((banner) => { + banner.remove(); + }); + + const containers = form.querySelectorAll('[data-field-container][data-ff-has-errors]'); + containers.forEach((container) => { + removeFieldMessages(container); + }); +} + +/** + * Remove error messages from the given field container. + * + * @param container - The field container to remove messages from. + */ +export const removeFieldMessages = (container: HTMLElement): void => { + const label = container?.querySelector('[data-field-label]'); + const instructions = container?.querySelector('[data-field-instructions]'); + + restoreAttributes(container); + restoreAttributes(label); + restoreAttributes(instructions); + + callbackOnInputs(container, restoreAttributes); + + // Remove any field errors + container.querySelector('[data-field-errors]')?.remove(); +}; diff --git a/packages/scripts/src/components/front-end/plugin/errors/errors.render.ts b/packages/scripts/src/components/front-end/plugin/errors/errors.render.ts new file mode 100644 index 0000000000..d8a944d712 --- /dev/null +++ b/packages/scripts/src/components/front-end/plugin/errors/errors.render.ts @@ -0,0 +1,146 @@ +import type Freeform from '../freeform'; +import { attachAttributes, getAttributeManifest, preserveAttributes } from './errors.attributes'; +import { callbackOnInputs } from './errors.operations'; +import type { CategorizedAttributes } from './errors.types'; + +export function renderSuccess(): void { + const self = this as Freeform; + + const { form, options } = self; + const { successBannerMessage, successClassBanner } = options; + + const attributesManifest = getAttributeManifest(form); + const attributes = attributesManifest.form.success; + const tag = attributes?.tag || 'div'; + if (attributes.tag) { + delete attributes.tag; + } + + attributes['data-ff-form-banner'] = 'success'; + if (successClassBanner) { + attributes.class = `${attributes?.class || ''} ${successClassBanner}`.trim(); + } + + const successMessage = document.createElement(tag); + attachAttributes(successMessage, attributes); + + const paragraph = document.createElement('p'); + paragraph.appendChild(document.createTextNode(successBannerMessage)); + + successMessage.appendChild(paragraph); + + form.insertBefore(successMessage, form.childNodes[0]); +} + +/** + * Render success/error banners + * + * @param errors + */ +export function renderErrors(errors: string[]): void { + const self = this as Freeform; + + const { form, options } = self; + const { errorClassBanner, errorBannerMessage } = options; + + const attributesManifest = getAttributeManifest(form); + const attributes = attributesManifest.form.error; + + const tag = attributes?.tag || 'div'; + if (attributes.tag) { + delete attributes.tag; + } + + attributes['data-ff-form-banner'] = 'error'; + if (errorClassBanner) { + attributes.class = `${attributes?.class || ''} ${errorClassBanner}`.trim(); + } + + const errorBlock = document.createElement(tag); + attachAttributes(errorBlock, attributes); + + const paragraph = document.createElement('p'); + paragraph.appendChild(document.createTextNode(errorBannerMessage)); + errorBlock.appendChild(paragraph); + + if (errors.length) { + const errorsList = document.createElement('ul'); + errors.forEach((message) => { + const listItem = document.createElement('li'); + + listItem.appendChild(document.createTextNode(message)); + errorsList.appendChild(listItem); + }); + + errorBlock.appendChild(errorsList); + } + + form.insertBefore(errorBlock, form.childNodes[0]); +} + +/** + * Render field-specific error messages + * + * @param errors + */ +export function renderFieldErrors(errors: Record): void { + const self = this as Freeform; + const attributeManifest = getAttributeManifest(self.form); + + Object.entries(errors).forEach(([handle, messages]) => { + const container = self.form.querySelector(`[data-field-container="${handle}"]`); + const attributes = attributeManifest.fields?.[handle]; + + renderFieldError(self, handle, container, attributes, messages); + }); +} + +const renderFieldError = ( + freeform: Freeform, + handle: string, + container: HTMLElement, + attributes: CategorizedAttributes, + messages: string[] +): void => { + if (!attributes) { + return; + } + + const form = freeform.form; + const fieldErrorClass = freeform.options.errorClassField; + if (fieldErrorClass) { + if (!attributes.input?.class?.includes(fieldErrorClass)) { + attributes.input.class = `${attributes.input?.class || ''} ${fieldErrorClass}`.trim(); + } + } + + const label = container?.querySelector('[data-field-label]'); + const instructions = container?.querySelector('[data-field-instructions]'); + + preserveAttributes(container, label, instructions); + attachAttributes(container, attributes.container); + attachAttributes(label, attributes.label); + attachAttributes(instructions, attributes.instructions); + + container.dataset.ffHasErrors = 'true'; + + callbackOnInputs(container, (element) => { + preserveAttributes(element); + attachAttributes(element, attributes.input); + }); + + const errorsList = document.createElement('ul'); + attachAttributes(errorsList, attributes.error); + messages.forEach((message) => { + const listItem = document.createElement('li'); + listItem.appendChild(document.createTextNode(message)); + errorsList.appendChild(listItem); + }); + + const errorAppendTarget = form.querySelector(`[data-error-append-target="${handle}"]`); + if (errorAppendTarget) { + errorAppendTarget.appendChild(errorsList); + } else { + container.appendChild(errorsList); + } +}; diff --git a/packages/scripts/src/components/front-end/plugin/errors/errors.types.ts b/packages/scripts/src/components/front-end/plugin/errors/errors.types.ts new file mode 100644 index 0000000000..6ca57ead01 --- /dev/null +++ b/packages/scripts/src/components/front-end/plugin/errors/errors.types.ts @@ -0,0 +1,23 @@ +export type Attributes = Record; +export type Categories = 'container' | 'error' | 'input' | 'instructions' | 'label'; + +export type AttributeList = { + form: { + success: Attributes; + error: Attributes; + }; + fields: Record; +}; + +export type CategorizedAttributes = Record; + +export type AttributeRecord = { + name: string; + value: string; + ns: string | null; +}; + +export type AttributeSnapshot = { + attrs: AttributeRecord[]; + names: Set; +}; diff --git a/packages/scripts/src/components/front-end/plugin/freeform.ts b/packages/scripts/src/components/front-end/plugin/freeform.ts index c5fabd08bc..771a14e978 100644 --- a/packages/scripts/src/components/front-end/plugin/freeform.ts +++ b/packages/scripts/src/components/front-end/plugin/freeform.ts @@ -14,13 +14,14 @@ import RuleHandler from '@lib/plugin/handlers/form/rules'; import SaveFormHandler from '@lib/plugin/handlers/form/save-form'; import { ajax } from '@lib/plugin/helpers/ajax'; import { isSafari } from '@lib/plugin/helpers/browser-check'; -import { getClassQuery } from '@lib/plugin/helpers/classes'; import { fetchCsrf } from '@lib/plugin/helpers/csrf'; -import { addClass, getClassArray, removeClass, removeElement } from '@lib/plugin/helpers/elements'; import { dispatchCustomEvent } from '@lib/plugin/helpers/event-handling'; import type { Callback, FreeformResponseWithToken } from 'types/events'; import type { FreeformEventParameters, FreeformHandler, FreeformHandlerConstructor, FreeformOptions } from 'types/form'; +import { removeFieldMessages, removeMessages } from './errors/errors.remove'; +import { renderErrors, renderFieldErrors, renderSuccess } from './errors/errors.render'; + export default class Freeform { static _BACK_BUTTON_NAME = 'form_previous_page_button'; static instances = new WeakMap(); @@ -346,7 +347,7 @@ export default class Freeform { const inputs = form.querySelectorAll('input, select, textarea'); inputs.forEach((input) => input.addEventListener('change', (event) => { - this._removeMessageFrom(event.target as HTMLInputElement); + this._removeMessageFromField(event.target as HTMLInputElement); }) ); }; @@ -440,44 +441,17 @@ export default class Freeform { return this.options.removeMessages(); } - const { form, options } = this; - const { successClassBanner, errorClassBanner, errorClassList, errorClassField } = options; - - // Remove any existing errors that are being shown - removeElement(form.querySelectorAll(`.${getClassArray(errorClassList).join('.')}`)); - - const fieldsWithErrors = form.querySelectorAll(`.${getClassArray(errorClassField).join('.')}`); - fieldsWithErrors.forEach((field) => { - this._removeMessageFrom(field); - }); - - // Remove success messages - removeElement(form.querySelectorAll(getClassQuery(successClassBanner))); - removeElement(document.querySelectorAll(getClassQuery(errorClassBanner))); + removeMessages.call(this); }; - _removeMessageFrom = (field: HTMLInputElement): void => { + _removeMessageFromField = (field: HTMLInputElement): void => { const event = this._dispatchEvent(events.form.fieldRemoveMessages, { field }); if (event.defaultPrevented) { return; } - const { options } = this; - const { errorClassList, errorClassField } = options; - - let errorContainerNode = field.parentNode; - if (field.type) { - if (field.type === 'radio' || (field.type === 'checkbox' && /\[]$/.test(field.name))) { - errorContainerNode = field.parentNode.parentNode; - } - } - - removeElement(errorContainerNode.querySelector(getClassQuery(errorClassList))); - - const fields = errorContainerNode.querySelectorAll('input, select, textarea'); - for (let i = 0; i < fields.length; i++) { - removeClass(fields[i], errorClassField); - } + const container = field.closest('[data-field-container]'); + removeFieldMessages(container); }; /** @@ -497,18 +471,7 @@ export default class Freeform { return this.options.renderSuccess(); } - const { form, options } = this; - const { successBannerMessage, successClassBanner } = options; - - const successMessage = document.createElement('div'); - addClass(successMessage, successClassBanner); - - const paragraph = document.createElement('p'); - paragraph.appendChild(document.createTextNode(successBannerMessage)); - - successMessage.appendChild(paragraph); - - form.insertBefore(successMessage, form.childNodes[0]); + renderSuccess.call(this); }; _renderFieldErrors = (errors: Record) => { @@ -522,51 +485,7 @@ export default class Freeform { return this.options.renderFieldErrors(errors); } - const { form, options } = this; - const { errorClassList, errorClassField } = options; - - for (const key in errors) { - const messages = errors[key]; - const errorsList = document.createElement('ul'); - errorsList.setAttribute('data-field-errors', ''); - addClass(errorsList, errorClassList); - - for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) { - const message = messages[messageIndex]; - const listItem = document.createElement('li'); - listItem.appendChild(document.createTextNode(message)); - errorsList.appendChild(listItem); - } - - const container = form.querySelector(`[data-field-container="${key}"]`); - const errorAppendTarget = form.querySelector(`[data-error-append-target="${key}"]`); - const inputList = form.querySelectorAll( - ` - [name="${key}"], - [type=file][name="${key}"], - [type=file][name="${key}[]"], - [type=checkbox][name="${key}[]"], - [type=radio][name="${key}"], - select[multiple][name="${key}[]"], - [data-freeform-file-upload="${key}"] - ` - ); - - if (!container) { - return; - } - - for (let inputIndex = 0; inputIndex < inputList.length; inputIndex++) { - const input = inputList[inputIndex] as HTMLInputElement; - addClass(input, errorClassField); - } - - if (errorAppendTarget) { - errorAppendTarget.appendChild(errorsList); - } else { - container.appendChild(errorsList); - } - } + renderFieldErrors.call(this, errors); }; _renderFormErrors = (errors: string[]) => { @@ -580,30 +499,7 @@ export default class Freeform { return this.options.renderFormErrors(errors); } - const { form, options } = this; - const { errorClassBanner, errorBannerMessage } = options; - - const errorBlock = document.createElement('div'); - addClass(errorBlock, errorClassBanner); - - const paragraph = document.createElement('p'); - paragraph.appendChild(document.createTextNode(errorBannerMessage)); - errorBlock.appendChild(paragraph); - - if (errors.length) { - const errorsList = document.createElement('ul'); - for (let messageIndex = 0; messageIndex < errors.length; messageIndex++) { - const message = errors[messageIndex]; - const listItem = document.createElement('li'); - - listItem.appendChild(document.createTextNode(message)); - errorsList.appendChild(listItem); - } - - errorBlock.appendChild(errorsList); - } - - form.insertBefore(errorBlock, form.childNodes[0]); + renderErrors.call(this, errors); }; _prepareFormData = () => { diff --git a/packages/scripts/src/lib/plugin/handlers/fields/table/button.add.ts b/packages/scripts/src/lib/plugin/handlers/fields/table/button.add.ts index 5870e06e5d..5f613f710b 100644 --- a/packages/scripts/src/lib/plugin/handlers/fields/table/button.add.ts +++ b/packages/scripts/src/lib/plugin/handlers/fields/table/button.add.ts @@ -1,3 +1,4 @@ +import { getAttributeSnapshot, restoreElementAttributes } from '@components/front-end/plugin/errors/errors.attributes'; import type Freeform from '@components/front-end/plugin/freeform'; import events from '@lib/plugin/constants/event-types'; @@ -37,6 +38,7 @@ export const registerAddButton = (instance: Freeform) => { button.addEventListener('click', () => { const referenceRow = table.querySelector('tbody > tr:last-child'); + const referenceInputs = referenceRow?.querySelectorAll('textarea, input, select'); if (referenceRow) { const cloneRow = referenceRow.cloneNode(true) as HTMLTableRowElement; @@ -44,6 +46,9 @@ export const registerAddButton = (instance: Freeform) => { const maxIndex = getNextMaxIndex(); for (let i = 0; i < inputs.length; i++) { const item = inputs[i]; + const snapshot = getAttributeSnapshot(referenceInputs[i]); + restoreElementAttributes(item, snapshot); + const defaultValue = item.dataset.defaultValue || ''; item.name = item.name.replace(PATTERN, `$1[${maxIndex}]$3`); diff --git a/packages/scripts/src/lib/plugin/handlers/fields/table/index.ts b/packages/scripts/src/lib/plugin/handlers/fields/table/index.ts index a69c133d65..a3ef8e39de 100644 --- a/packages/scripts/src/lib/plugin/handlers/fields/table/index.ts +++ b/packages/scripts/src/lib/plugin/handlers/fields/table/index.ts @@ -3,7 +3,6 @@ import type { FreeformHandler } from 'types/form'; import { registerAddButton } from './button.add'; import { registerRemoveButtons } from './button.remove'; -import { attachValidatorRequired } from './validate.required'; class Table implements FreeformHandler { freeform: Freeform; @@ -16,7 +15,6 @@ class Table implements FreeformHandler { reload = () => { registerAddButton(this.freeform); registerRemoveButtons(this.freeform); - attachValidatorRequired(this.freeform); }; } diff --git a/packages/scripts/src/lib/plugin/handlers/fields/table/validate.required.ts b/packages/scripts/src/lib/plugin/handlers/fields/table/validate.required.ts deleted file mode 100644 index 7829520865..0000000000 --- a/packages/scripts/src/lib/plugin/handlers/fields/table/validate.required.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type Freeform from '@components/front-end/plugin/freeform'; -import events from '@lib/plugin/constants/event-types'; -import { addClass, removeClass } from '@lib/plugin/helpers/elements'; -import type { FreeformEvent } from 'types/events'; - -export const attachValidatorRequired = (instance: Freeform) => { - instance.form.addEventListener(events.form.renderFieldErrors, addErrors); -}; - -const addErrors = (event: FreeformEvent) => { - const form = event.form; - const tables = form.querySelectorAll('[data-freeform-table]'); - - const errorClass = event.freeform.options.errorClassField; - - tables.forEach((table) => { - const headings = table.querySelectorAll('thead th[data-column-required]'); - const requiredColumnIndexes = Array.from(headings).map((th) => th.cellIndex); - - const rows = table.querySelectorAll('tbody tr'); - rows.forEach((row) => { - const cells = row.querySelectorAll('td'); - requiredColumnIndexes.forEach((index) => { - const cell = cells[index]; - const input = cell.querySelector('input, textarea, select'); - - let isFilled = Boolean(input.value); - if (['radio', 'checkbox'].includes(input?.type || '')) { - isFilled = input.checked; - } - - if (!input || !isFilled) { - if (input?.type === 'radio') { - input.parentElement.parentElement.querySelectorAll('input').forEach((sibling) => { - addClass(sibling, errorClass); - }); - } else { - addClass(input, errorClass); - } - } else { - removeClass(input, errorClass); - } - }); - }); - }); -}; diff --git a/packages/scripts/src/types/events.ts b/packages/scripts/src/types/events.ts index 80159ae0e1..9d09eebf52 100644 --- a/packages/scripts/src/types/events.ts +++ b/packages/scripts/src/types/events.ts @@ -46,6 +46,11 @@ export type FreeformActionsEvent = FreeformResponseEvent & { actions: Action[]; }; +export type FreeformErrorsEvent = FreeformResponseEvent & { + errors: Record; + formErrors: string[]; +}; + export type StorageResponse = { token: string; };