@tripetto/block-email
Version:
Email block for Tripetto.
3 lines (2 loc) • 1.82 kB
JavaScript
/*! Tripetto Email Block 6.0.3 - Copyright (C) 2023 Tripetto B.V. - All Rights Reserved */
import{tripetto as e,condition as t,ConditionBlock as r,Str as s,isVariable as a,NodeBlock as i,assert as o,validator as n}from"@tripetto/runner";function l(e,t,r,s){var a,i=arguments.length,o=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(o=(i<3?a(o):i>3?a(t,r,o):a(t,r))||o);return i>3&&o&&Object.defineProperty(t,r,o),o}let c=class extends r{isMatch(){const e=this.valueOf();if(e){const t=s.lowercase(e.string),r=s.lowercase((()=>{if(a(this.props.match)){const e=this.variableFor(this.props.match);return e&&e.hasValue?e.string:""}return this.parseVariables(this.props.match||"")})());switch(this.props.mode){case"domain":case"not-domain":return r&&t.substr(t.lastIndexOf("@")+1)===r==("domain"===this.props.mode)||!1;case"address":case"not-address":return t===r==("address"===this.props.mode)||!1;case"defined":return""!==t;case"undefined":return""===t}}return!1}};l([t],c.prototype,"isMatch",null),c=l([e({type:"condition",legacyBlock:!0,identifier:"@tripetto/block-email"})],c);const p=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,d=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;class h extends i{constructor(){super(...arguments),this.emailSlot=o(this.valueOf("email")),this.required=this.emailSlot.slot.required||!1}validate(){return!this.emailSlot.string||("rfc822"===this.props.validation?p:d).test(this.emailSlot.value)}}l([n],h.prototype,"validate",null);export{h as Email};