@nuralyui/input 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bundle.js +9 -1007
  2. package/package.json +1 -1
package/bundle.js CHANGED
@@ -1,963 +1,20 @@
1
- /**
2
- * @license
3
- * Copyright 2019 Google LLC
4
- * SPDX-License-Identifier: BSD-3-Clause
5
- */
6
- const t=window,i=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,r=Symbol(),e=new WeakMap;class n{constructor(t,i,e){if(this._$cssResult$=!0,e!==r)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=i}get styleSheet(){let t=this.o;const r=this.t;if(i&&void 0===t){const i=void 0!==r&&1===r.length;i&&(t=e.get(r)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&e.set(r,t))}return t}toString(){return this.cssText}}const a=(t,...i)=>{const e=1===t.length?t[0]:i.reduce(((i,r,e)=>i+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+t[e+1]),t[0]);return new n(e,t,r)},o=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let i="";for(const r of t.cssRules)i+=r.cssText;return(t=>new n("string"==typeof t?t:t+"",void 0,r))(i)})(t):t
7
- /**
8
- * @license
9
- * Copyright 2017 Google LLC
10
- * SPDX-License-Identifier: BSD-3-Clause
11
- */;var s;const l=window,d=l.trustedTypes,u=d?d.emptyScript:"",h=l.reactiveElementPolyfillSupport,c={toAttribute(t,i){switch(i){case Boolean:t=t?u:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let r=t;switch(i){case Boolean:r=null!==t;break;case Number:r=null===t?null:Number(t);break;case Object:case Array:try{r=JSON.parse(t)}catch(t){r=null}}return r}},p=(t,i)=>i!==t&&(i==i||t==t),v={attribute:!0,type:String,converter:c,reflect:!1,hasChanged:p},f="finalized";class g extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this._$Eu()}static addInitializer(t){var i;this.finalize(),(null!==(i=this.h)&&void 0!==i?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,r)=>{const e=this._$Ep(r,i);void 0!==e&&(this._$Ev.set(e,r),t.push(e))})),t}static createProperty(t,i=v){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const r="symbol"==typeof t?Symbol():"__"+t,e=this.getPropertyDescriptor(t,r,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,r){return{get(){return this[i]},set(e){const n=this[t];this[i]=e,this.requestUpdate(t,n,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||v}static finalize(){if(this.hasOwnProperty(f))return!1;this[f]=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const r of i)this.createProperty(r,t[r])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const i=[];if(Array.isArray(t)){const r=new Set(t.flat(1/0).reverse());for(const t of r)i.unshift(o(t))}else void 0!==t&&i.push(o(t));return i}static _$Ep(t,i){const r=i.attribute;return!1===r?void 0:"string"==typeof r?r:"string"==typeof t?t.toLowerCase():void 0}_$Eu(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,r;(null!==(i=this._$ES)&&void 0!==i?i:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(r=t.hostConnected)||void 0===r||r.call(t))}removeController(t){var i;null===(i=this._$ES)||void 0===i||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])}))}createRenderRoot(){var r;const e=null!==(r=this.shadowRoot)&&void 0!==r?r:this.attachShadow(this.constructor.shadowRootOptions);return((r,e)=>{i?r.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):e.forEach((i=>{const e=document.createElement("style"),n=t.litNonce;void 0!==n&&e.setAttribute("nonce",n),e.textContent=i.cssText,r.appendChild(e)}))})(e,this.constructor.elementStyles),e}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,r){this._$AK(t,r)}_$EO(t,i,r=v){var e;const n=this.constructor._$Ep(t,r);if(void 0!==n&&!0===r.reflect){const a=(void 0!==(null===(e=r.converter)||void 0===e?void 0:e.toAttribute)?r.converter:c).toAttribute(i,r.type);this._$El=t,null==a?this.removeAttribute(n):this.setAttribute(n,a),this._$El=null}}_$AK(t,i){var r;const e=this.constructor,n=e._$Ev.get(t);if(void 0!==n&&this._$El!==n){const t=e.getPropertyOptions(n),a="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(r=t.converter)||void 0===r?void 0:r.fromAttribute)?t.converter:c;this._$El=n,this[n]=a.fromAttribute(i,t.type),this._$El=null}}requestUpdate(t,i,r){let e=!0;void 0!==t&&(((r=r||this.constructor.getPropertyOptions(t)).hasChanged||p)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===r.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,r))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,i)=>this[i]=t)),this._$Ei=void 0);let i=!1;const r=this._$AL;try{i=this.shouldUpdate(r),i?(this.willUpdate(r),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(r)):this._$Ek()}catch(t){throw i=!1,this._$Ek(),t}i&&this._$AE(r)}willUpdate(t){}_$AE(t){var i;null===(i=this._$ES)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,i)=>this._$EO(i,this[i],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}
12
- /**
13
- * @license
14
- * Copyright 2017 Google LLC
15
- * SPDX-License-Identifier: BSD-3-Clause
16
- */
17
- var m;g[f]=!0,g.elementProperties=new Map,g.elementStyles=[],g.shadowRootOptions={mode:"open"},null==h||h({ReactiveElement:g}),(null!==(s=l.reactiveElementVersions)&&void 0!==s?s:l.reactiveElementVersions=[]).push("1.6.3");const y=window,b=y.trustedTypes,w=b?b.createPolicy("lit-html",{createHTML:t=>t}):void 0,x="$lit$",$=`lit$${(Math.random()+"").slice(9)}$`,A="?"+$,S=`<${A}>`,k=document,E=()=>k.createComment(""),V=t=>null===t||"object"!=typeof t&&"function"!=typeof t,C=Array.isArray,N="[ \t\n\f\r]",z=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,T=/-->/g,I=/>/g,P=RegExp(`>|${N}(?:([^\\s"'>=/]+)(${N}*=${N}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),R=/'/g,_=/"/g,M=/^(?:script|style|textarea|title)$/i,O=Symbol.for("lit-noChange"),D=Symbol.for("lit-nothing"),U=new WeakMap,j=k.createTreeWalker(k,129,null,!1);function L(t,i){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==w?w.createHTML(i):i}class B{constructor({strings:t,_$litType$:i},r){let e;this.parts=[];let n=0,a=0;const o=t.length-1,s=this.parts,[l,d]=((t,i)=>{const r=t.length-1,e=[];let n,a=2===i?"<svg>":"",o=z;for(let i=0;i<r;i++){const r=t[i];let s,l,d=-1,u=0;for(;u<r.length&&(o.lastIndex=u,l=o.exec(r),null!==l);)u=o.lastIndex,o===z?"!--"===l[1]?o=T:void 0!==l[1]?o=I:void 0!==l[2]?(M.test(l[2])&&(n=RegExp("</"+l[2],"g")),o=P):void 0!==l[3]&&(o=P):o===P?">"===l[0]?(o=null!=n?n:z,d=-1):void 0===l[1]?d=-2:(d=o.lastIndex-l[2].length,s=l[1],o=void 0===l[3]?P:'"'===l[3]?_:R):o===_||o===R?o=P:o===T||o===I?o=z:(o=P,n=void 0);const h=o===P&&t[i+1].startsWith("/>")?" ":"";a+=o===z?r+S:d>=0?(e.push(s),r.slice(0,d)+x+r.slice(d)+$+h):r+$+(-2===d?(e.push(void 0),i):h)}return[L(t,a+(t[r]||"<?>")+(2===i?"</svg>":"")),e]})(t,i);if(this.el=B.createElement(l,r),j.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(e=j.nextNode())&&s.length<o;){if(1===e.nodeType){if(e.hasAttributes()){const t=[];for(const i of e.getAttributeNames())if(i.endsWith(x)||i.startsWith($)){const r=d[a++];if(t.push(i),void 0!==r){const t=e.getAttribute(r.toLowerCase()+x).split($),i=/([.?@])?(.*)/.exec(r);s.push({type:1,index:n,name:i[2],strings:t,ctor:"."===i[1]?Z:"?"===i[1]?Y:"@"===i[1]?G:q})}else s.push({type:6,index:n})}for(const i of t)e.removeAttribute(i)}if(M.test(e.tagName)){const t=e.textContent.split($),i=t.length-1;if(i>0){e.textContent=b?b.emptyScript:"";for(let r=0;r<i;r++)e.append(t[r],E()),j.nextNode(),s.push({type:2,index:++n});e.append(t[i],E())}}}else if(8===e.nodeType)if(e.data===A)s.push({type:2,index:n});else{let t=-1;for(;-1!==(t=e.data.indexOf($,t+1));)s.push({type:7,index:n}),t+=$.length-1}n++}}static createElement(t,i){const r=k.createElement("template");return r.innerHTML=t,r}}function F(t,i,r=t,e){var n,a,o,s;if(i===O)return i;let l=void 0!==e?null===(n=r._$Co)||void 0===n?void 0:n[e]:r._$Cl;const d=V(i)?void 0:i._$litDirective$;return(null==l?void 0:l.constructor)!==d&&(null===(a=null==l?void 0:l._$AO)||void 0===a||a.call(l,!1),void 0===d?l=void 0:(l=new d(t),l._$AT(t,r,e)),void 0!==e?(null!==(o=(s=r)._$Co)&&void 0!==o?o:s._$Co=[])[e]=l:r._$Cl=l),void 0!==l&&(i=F(t,l._$AS(t,i.values),l,e)),i}class H{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){var i;const{el:{content:r},parts:e}=this._$AD,n=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:k).importNode(r,!0);j.currentNode=n;let a=j.nextNode(),o=0,s=0,l=e[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new W(a,a.nextSibling,this,t):1===l.type?i=new l.ctor(a,l.name,l.strings,this,t):6===l.type&&(i=new J(a,this,t)),this._$AV.push(i),l=e[++s]}o!==(null==l?void 0:l.index)&&(a=j.nextNode(),o++)}return j.currentNode=k,n}v(t){let i=0;for(const r of this._$AV)void 0!==r&&(void 0!==r.strings?(r._$AI(t,r,i),i+=r.strings.length-2):r._$AI(t[i])),i++}}class W{constructor(t,i,r,e){var n;this.type=2,this._$AH=D,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=r,this.options=e,this._$Cp=null===(n=null==e?void 0:e.isConnected)||void 0===n||n}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cp}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===(null==t?void 0:t.nodeType)&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=F(this,t,i),V(t)?t===D||null==t||""===t?(this._$AH!==D&&this._$AR(),this._$AH=D):t!==this._$AH&&t!==O&&this._(t):void 0!==t._$litType$?this.g(t):void 0!==t.nodeType?this.$(t):(t=>C(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.T(t):this._(t)}k(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}$(t){this._$AH!==t&&(this._$AR(),this._$AH=this.k(t))}_(t){this._$AH!==D&&V(this._$AH)?this._$AA.nextSibling.data=t:this.$(k.createTextNode(t)),this._$AH=t}g(t){var i;const{values:r,_$litType$:e}=t,n="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=B.createElement(L(e.h,e.h[0]),this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===n)this._$AH.v(r);else{const t=new H(n,this),i=t.u(this.options);t.v(r),this.$(i),this._$AH=t}}_$AC(t){let i=U.get(t.strings);return void 0===i&&U.set(t.strings,i=new B(t)),i}T(t){C(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let r,e=0;for(const n of t)e===i.length?i.push(r=new W(this.k(E()),this.k(E()),this,this.options)):r=i[e],r._$AI(n),e++;e<i.length&&(this._$AR(r&&r._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var r;for(null===(r=this._$AP)||void 0===r||r.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cp=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class q{constructor(t,i,r,e,n){this.type=1,this._$AH=D,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=n,r.length>2||""!==r[0]||""!==r[1]?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=D}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,r,e){const n=this.strings;let a=!1;if(void 0===n)t=F(this,t,i,0),a=!V(t)||t!==this._$AH&&t!==O,a&&(this._$AH=t);else{const e=t;let o,s;for(t=n[0],o=0;o<n.length-1;o++)s=F(this,e[r+o],i,o),s===O&&(s=this._$AH[o]),a||(a=!V(s)||s!==this._$AH[o]),s===D?t=D:t!==D&&(t+=(null!=s?s:"")+n[o+1]),this._$AH[o]=s}a&&!e&&this.j(t)}j(t){t===D?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"")}}class Z extends q{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===D?void 0:t}}const K=b?b.emptyScript:"";class Y extends q{constructor(){super(...arguments),this.type=4}j(t){t&&t!==D?this.element.setAttribute(this.name,K):this.element.removeAttribute(this.name)}}class G extends q{constructor(t,i,r,e,n){super(t,i,r,e,n),this.type=5}_$AI(t,i=this){var r;if((t=null!==(r=F(this,t,i,0))&&void 0!==r?r:D)===O)return;const e=this._$AH,n=t===D&&e!==D||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,a=t!==D&&(e===D||n);n&&this.element.removeEventListener(this.name,this,e),a&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,r;"function"==typeof this._$AH?this._$AH.call(null!==(r=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==r?r:this.element,t):this._$AH.handleEvent(t)}}class J{constructor(t,i,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){F(this,t)}}const X=y.litHtmlPolyfillSupport;
18
- /**
19
- * @license
20
- * Copyright 2017 Google LLC
21
- * SPDX-License-Identifier: BSD-3-Clause
22
- */
23
- var Q;null==X||X(B,W),(null!==(m=y.litHtmlVersions)&&void 0!==m?m:y.litHtmlVersions=[]).push("2.8.0");const tt=window,it=tt.trustedTypes,rt=it?it.createPolicy("lit-html",{createHTML:t=>t}):void 0,et="$lit$",nt=`lit$${(Math.random()+"").slice(9)}$`,at="?"+nt,ot=`<${at}>`,st=document,lt=()=>st.createComment(""),dt=t=>null===t||"object"!=typeof t&&"function"!=typeof t,ut=Array.isArray,ht="[ \t\n\f\r]",ct=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,pt=/-->/g,vt=/>/g,ft=RegExp(`>|${ht}(?:([^\\s"'>=/]+)(${ht}*=${ht}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),gt=/'/g,mt=/"/g,yt=/^(?:script|style|textarea|title)$/i,bt=(t=>(i,...r)=>({_$litType$:t,strings:i,values:r}))(1),wt=Symbol.for("lit-noChange"),xt=Symbol.for("lit-nothing"),$t=new WeakMap,At=st.createTreeWalker(st,129,null,!1);function St(t,i){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==rt?rt.createHTML(i):i}const kt=(t,i)=>{const r=t.length-1,e=[];let n,a=2===i?"<svg>":"",o=ct;for(let i=0;i<r;i++){const r=t[i];let s,l,d=-1,u=0;for(;u<r.length&&(o.lastIndex=u,l=o.exec(r),null!==l);)u=o.lastIndex,o===ct?"!--"===l[1]?o=pt:void 0!==l[1]?o=vt:void 0!==l[2]?(yt.test(l[2])&&(n=RegExp("</"+l[2],"g")),o=ft):void 0!==l[3]&&(o=ft):o===ft?">"===l[0]?(o=null!=n?n:ct,d=-1):void 0===l[1]?d=-2:(d=o.lastIndex-l[2].length,s=l[1],o=void 0===l[3]?ft:'"'===l[3]?mt:gt):o===mt||o===gt?o=ft:o===pt||o===vt?o=ct:(o=ft,n=void 0);const h=o===ft&&t[i+1].startsWith("/>")?" ":"";a+=o===ct?r+ot:d>=0?(e.push(s),r.slice(0,d)+et+r.slice(d)+nt+h):r+nt+(-2===d?(e.push(void 0),i):h)}return[St(t,a+(t[r]||"<?>")+(2===i?"</svg>":"")),e]};class Et{constructor({strings:t,_$litType$:i},r){let e;this.parts=[];let n=0,a=0;const o=t.length-1,s=this.parts,[l,d]=kt(t,i);if(this.el=Et.createElement(l,r),At.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(e=At.nextNode())&&s.length<o;){if(1===e.nodeType){if(e.hasAttributes()){const t=[];for(const i of e.getAttributeNames())if(i.endsWith(et)||i.startsWith(nt)){const r=d[a++];if(t.push(i),void 0!==r){const t=e.getAttribute(r.toLowerCase()+et).split(nt),i=/([.?@])?(.*)/.exec(r);s.push({type:1,index:n,name:i[2],strings:t,ctor:"."===i[1]?Tt:"?"===i[1]?Pt:"@"===i[1]?Rt:zt})}else s.push({type:6,index:n})}for(const i of t)e.removeAttribute(i)}if(yt.test(e.tagName)){const t=e.textContent.split(nt),i=t.length-1;if(i>0){e.textContent=it?it.emptyScript:"";for(let r=0;r<i;r++)e.append(t[r],lt()),At.nextNode(),s.push({type:2,index:++n});e.append(t[i],lt())}}}else if(8===e.nodeType)if(e.data===at)s.push({type:2,index:n});else{let t=-1;for(;-1!==(t=e.data.indexOf(nt,t+1));)s.push({type:7,index:n}),t+=nt.length-1}n++}}static createElement(t,i){const r=st.createElement("template");return r.innerHTML=t,r}}function Vt(t,i,r=t,e){var n,a,o,s;if(i===wt)return i;let l=void 0!==e?null===(n=r._$Co)||void 0===n?void 0:n[e]:r._$Cl;const d=dt(i)?void 0:i._$litDirective$;return(null==l?void 0:l.constructor)!==d&&(null===(a=null==l?void 0:l._$AO)||void 0===a||a.call(l,!1),void 0===d?l=void 0:(l=new d(t),l._$AT(t,r,e)),void 0!==e?(null!==(o=(s=r)._$Co)&&void 0!==o?o:s._$Co=[])[e]=l:r._$Cl=l),void 0!==l&&(i=Vt(t,l._$AS(t,i.values),l,e)),i}class Ct{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){var i;const{el:{content:r},parts:e}=this._$AD,n=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:st).importNode(r,!0);At.currentNode=n;let a=At.nextNode(),o=0,s=0,l=e[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new Nt(a,a.nextSibling,this,t):1===l.type?i=new l.ctor(a,l.name,l.strings,this,t):6===l.type&&(i=new _t(a,this,t)),this._$AV.push(i),l=e[++s]}o!==(null==l?void 0:l.index)&&(a=At.nextNode(),o++)}return At.currentNode=st,n}v(t){let i=0;for(const r of this._$AV)void 0!==r&&(void 0!==r.strings?(r._$AI(t,r,i),i+=r.strings.length-2):r._$AI(t[i])),i++}}class Nt{constructor(t,i,r,e){var n;this.type=2,this._$AH=xt,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=r,this.options=e,this._$Cp=null===(n=null==e?void 0:e.isConnected)||void 0===n||n}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cp}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===(null==t?void 0:t.nodeType)&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=Vt(this,t,i),dt(t)?t===xt||null==t||""===t?(this._$AH!==xt&&this._$AR(),this._$AH=xt):t!==this._$AH&&t!==wt&&this._(t):void 0!==t._$litType$?this.g(t):void 0!==t.nodeType?this.$(t):(t=>ut(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.T(t):this._(t)}k(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}$(t){this._$AH!==t&&(this._$AR(),this._$AH=this.k(t))}_(t){this._$AH!==xt&&dt(this._$AH)?this._$AA.nextSibling.data=t:this.$(st.createTextNode(t)),this._$AH=t}g(t){var i;const{values:r,_$litType$:e}=t,n="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=Et.createElement(St(e.h,e.h[0]),this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===n)this._$AH.v(r);else{const t=new Ct(n,this),i=t.u(this.options);t.v(r),this.$(i),this._$AH=t}}_$AC(t){let i=$t.get(t.strings);return void 0===i&&$t.set(t.strings,i=new Et(t)),i}T(t){ut(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let r,e=0;for(const n of t)e===i.length?i.push(r=new Nt(this.k(lt()),this.k(lt()),this,this.options)):r=i[e],r._$AI(n),e++;e<i.length&&(this._$AR(r&&r._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var r;for(null===(r=this._$AP)||void 0===r||r.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cp=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class zt{constructor(t,i,r,e,n){this.type=1,this._$AH=xt,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=n,r.length>2||""!==r[0]||""!==r[1]?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=xt}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,r,e){const n=this.strings;let a=!1;if(void 0===n)t=Vt(this,t,i,0),a=!dt(t)||t!==this._$AH&&t!==wt,a&&(this._$AH=t);else{const e=t;let o,s;for(t=n[0],o=0;o<n.length-1;o++)s=Vt(this,e[r+o],i,o),s===wt&&(s=this._$AH[o]),a||(a=!dt(s)||s!==this._$AH[o]),s===xt?t=xt:t!==xt&&(t+=(null!=s?s:"")+n[o+1]),this._$AH[o]=s}a&&!e&&this.j(t)}j(t){t===xt?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"")}}class Tt extends zt{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===xt?void 0:t}}const It=it?it.emptyScript:"";class Pt extends zt{constructor(){super(...arguments),this.type=4}j(t){t&&t!==xt?this.element.setAttribute(this.name,It):this.element.removeAttribute(this.name)}}class Rt extends zt{constructor(t,i,r,e,n){super(t,i,r,e,n),this.type=5}_$AI(t,i=this){var r;if((t=null!==(r=Vt(this,t,i,0))&&void 0!==r?r:xt)===wt)return;const e=this._$AH,n=t===xt&&e!==xt||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,a=t!==xt&&(e===xt||n);n&&this.element.removeEventListener(this.name,this,e),a&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,r;"function"==typeof this._$AH?this._$AH.call(null!==(r=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==r?r:this.element,t):this._$AH.handleEvent(t)}}class _t{constructor(t,i,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){Vt(this,t)}}const Mt=tt.litHtmlPolyfillSupport;null==Mt||Mt(Et,Nt),(null!==(Q=tt.litHtmlVersions)&&void 0!==Q?Q:tt.litHtmlVersions=[]).push("2.8.0");
24
- /**
25
- * @license
26
- * Copyright 2017 Google LLC
27
- * SPDX-License-Identifier: BSD-3-Clause
28
- */
29
- var Ot,Dt;class Ut extends g{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,i;const r=super.createRenderRoot();return null!==(t=(i=this.renderOptions).renderBefore)&&void 0!==t||(i.renderBefore=r.firstChild),r}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=((t,i,r)=>{var e,n;const a=null!==(e=null==r?void 0:r.renderBefore)&&void 0!==e?e:i;let o=a._$litPart$;if(void 0===o){const t=null!==(n=null==r?void 0:r.renderBefore)&&void 0!==n?n:null;a._$litPart$=o=new Nt(i.insertBefore(lt(),t),t,void 0,null!=r?r:{})}return o._$AI(t),o})(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return wt}}Ut.finalized=!0,Ut._$litElement$=!0,null===(Ot=globalThis.litElementHydrateSupport)||void 0===Ot||Ot.call(globalThis,{LitElement:Ut});const jt=globalThis.litElementPolyfillSupport;null==jt||jt({LitElement:Ut}),(null!==(Dt=globalThis.litElementVersions)&&void 0!==Dt?Dt:globalThis.litElementVersions=[]).push("3.3.3");
30
- /**
31
- * @license
32
- * Copyright 2017 Google LLC
33
- * SPDX-License-Identifier: BSD-3-Clause
34
- */
35
- const Lt=(t,i)=>"method"===i.kind&&i.descriptor&&!("value"in i.descriptor)?{...i,finisher(r){r.createProperty(i.key,t)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:i.key,initializer(){"function"==typeof i.initializer&&(this[i.key]=i.initializer.call(this))},finisher(r){r.createProperty(i.key,t)}},Bt=(t,i,r)=>{i.constructor.createProperty(r,t)};
36
- /**
37
- * @license
38
- * Copyright 2017 Google LLC
39
- * SPDX-License-Identifier: BSD-3-Clause
40
- */function Ft(t){return(i,r)=>void 0!==r?Bt(t,i,r):Lt(t,i)
41
- /**
42
- * @license
43
- * Copyright 2017 Google LLC
44
- * SPDX-License-Identifier: BSD-3-Clause
45
- */}function Ht(t){return Ft({...t,state:!0})}
46
- /**
47
- * @license
48
- * Copyright 2021 Google LLC
49
- * SPDX-License-Identifier: BSD-3-Clause
50
- */var Wt;null===(Wt=window.HTMLSlotElement)||void 0===Wt||Wt.prototype.assignedElements;const qt=[a`
51
- /*
52
- * Host element base styles
53
- * Container for the input component with flexible layout
54
- */
55
- :host {
56
- display: flex;
57
- flex-direction: column;
58
- font-family: var(--nuraly-font-family-input, 'IBM Plex Sans', ui-sans-serif, system-ui);
59
- }
60
-
61
- /*
62
- * Base input wrapper and input element styles
63
- * Background applied to wrapper to cover entire container including addons
64
- * Uses theme CSS custom properties for comprehensive theming support
65
- */
66
- .input-wrapper {
67
- background-color: var(--nuraly-color-input-background, var(--nuraly-color-input-background-fallback, #ffffff));
68
- }
69
-
70
-
71
- #input-container > input {
72
- background-color: transparent;
73
- border: var(--nuraly-input-border, none);
74
- outline: var(--nuraly-input-outline, none);
75
- flex: 1;
76
- min-width: 0;
77
- width: 100%;
78
-
79
- /* Typography from theme */
80
- font-family: var(--nuraly-font-family-input, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto);
81
- font-size: var(--nuraly-font-size-input, 14px);
82
- color: var(--nuraly-color-input-text, var(--nuraly-color-input-text-fallback, rgba(0, 0, 0, 0.88)));
83
-
84
- /* Padding from theme */
85
- padding: var(--nuraly-spacing-input-medium-vertical, 4px) var(--nuraly-spacing-input-medium-horizontal, 11px);
86
- }
87
-
88
- /*
89
- * Disabled state styles for wrapper and input
90
- * Applied when input is disabled - removes interactivity and applies muted colors
91
- */
92
- :host([disabled]) .input-wrapper {
93
- background-color: var(--nuraly-color-input-disabled-background, var(--nuraly-color-input-disabled-background-fallback, #f4f4f4));
94
- }
95
-
96
- :host([disabled]) #input-container > input {
97
- background-color: transparent;
98
- cursor: var(--nuraly-cursor-disabled, not-allowed);
99
- color: var(--nuraly-color-input-disabled-text, var(--nuraly-color-input-disabled-text-fallback, rgba(0, 0, 0, 0.25)));
100
- }
101
-
102
- /*
103
- * Icon base styles
104
- * Common styling for all icons within the input component
105
- * Provides comprehensive CSS variable override system
106
- */
107
- nr-icon {
108
- display: flex;
109
- align-items: center;
110
-
111
- /* Global icon color override - applies to all icons in input */
112
- --nuraly-color-icon: var(--nuraly-color-input-icon, var(--nuraly-color-icon, var(--nuraly-color-icon-fallback, #161616)));
113
-
114
- /* Size override for input icons */
115
- --nuraly-icon-size: var(--nuraly-size-input-icon, var(--nuraly-icon-size, var(--nuraly-icon-size-fallback, 18px)));
116
-
117
- /* Interactive state overrides */
118
- --nuraly-color-icon-hover: var(--nuraly-color-input-icon-hover, var(--nuraly-color-icon-hover, var(--nuraly-color-icon-hover-fallback, #0f62fe)));
119
- --nuraly-color-icon-active: var(--nuraly-color-input-icon-active, var(--nuraly-color-icon-active, var(--nuraly-color-icon-active-fallback, #054ada)));
120
- --nuraly-color-icon-disabled: var(--nuraly-color-input-icon-disabled, var(--nuraly-color-icon-disabled, var(--nuraly-color-icon-disabled-fallback, #c6c6c6)));
121
- }
122
-
123
- /*
124
- * Placeholder styling
125
- * Customizable placeholder text appearance
126
- */
127
- ::placeholder {
128
- color: var(--nuraly-color-input-placeholder, var(--nuraly-color-input-placeholder-fallback, #a8a8a8));
129
- font-size: var(--nuraly-font-size-input-placeholder, 14px);
130
- font-family: var(--nuraly-font-family-input, 'IBM Plex Sans', ui-sans-serif, system-ui);
131
- }
132
-
133
- /*
134
- * Disabled placeholder styling
135
- * Applied when input is disabled
136
- */
137
- :host([disabled]) ::placeholder {
138
- color: var(--nuraly-color-input-disabled-placeholder, var(--nuraly-color-input-disabled-placeholder-fallback, #c6c6c6));
139
- }
140
-
141
- /* ========================================
142
- * ICON VARIANTS AND STATES
143
- * ======================================== */
144
-
145
- /* Warning state icon */
146
- #warning-icon {
147
- --nuraly-color-icon: var(--nuraly-color-input-warning-icon, #f1c21b);
148
- }
149
-
150
- /* Error state icon */
151
- #error-icon {
152
- --nuraly-color-icon: var(--nuraly-color-input-error-icon, #da1e28);
153
- }
154
-
155
- /* Calendar input type icon */
156
- #calendar-icon {
157
- --nuraly-color-icon: var(--nuraly-color-input-calendar-icon, #161616);
158
- }
159
-
160
- /* Password toggle icon */
161
- #password-icon {
162
- padding-left: var(--nuraly-input-password-icon-padding-left, var(--nuraly-password-icon-padding-left, 8px));
163
- padding-right: var(--nuraly-input-password-icon-padding-right, var(--nuraly-password-icon-padding-right, 8px));
164
- cursor: var(--nuraly-cursor-interactive, pointer);
165
- --nuraly-color-icon: var(--nuraly-color-input-password-icon, #161616);
166
- }
167
-
168
- /* Copy functionality icon */
169
- #copy-icon {
170
- padding-right: var(--nuraly-input-copy-icon-padding-right, var(--nuraly-copy-icon-padding-right, 8px));
171
- --nuraly-color-icon: var(--nuraly-color-input-copy-icon, #161616);
172
- cursor: var(--nuraly-cursor-interactive, pointer);
173
- }
174
-
175
- /* Clear functionality icon */
176
- #clear-icon {
177
- padding-right: var(--nuraly-input-clear-icon-padding-right, var(--nuraly-clear-icon-padding-right, 8px));
178
- --nuraly-color-icon: var(--nuraly-color-input-clear-icon, #161616);
179
- cursor: var(--nuraly-cursor-interactive, pointer);
180
- }
181
-
182
- /*
183
- * Number input increment/decrement icons container
184
- * Positioned absolutely for overlay on input
185
- */
186
- #number-icons {
187
- display: flex;
188
- justify-content: space-between;
189
- align-items: center;
190
- cursor: var(--nuraly-cursor-interactive, pointer);
191
- position: absolute;
192
- right: 0;
193
- top: 0;
194
- height: 100%;
195
- width: var(--nuraly-input-number-icons-container-width, var(--nuraly-number-icons-container-width, 50px));
196
- padding-right: var(--nuraly-input-number-icons-container-padding-right, var(--nuraly-number-icons-container-padding-right, 8px));
197
- }
198
-
199
- /* Individual number icons styling */
200
- #number-icons nr-icon {
201
- --nuraly-color-icon: var(--nuraly-color-input-number-icons, #161616);
202
- padding-left: var(--nuraly-input-number-icons-padding-left, var(--nuraly-number-icons-padding-left, 4px));
203
- padding-right: var(--nuraly-input-number-icons-padding-right, var(--nuraly-number-icons-padding-right, 4px));
204
- width: var(--nuraly-input-number-icons-width, var(--nuraly-number-icons-width, 24px));
205
- height: var(--nuraly-input-number-icons-height, var(--nuraly-number-icons-height, 24px));
206
- }
207
-
208
- /* Number icons separator styling */
209
- #icons-separator {
210
- color: var(--nuraly-input-number-icons-separator-color, var(--nuraly-number-icons-separator-color));
211
- padding-bottom: var(--nuraly-input-number-icons-separator-padding-bottom, var(--nuraly-number-icons-separator-padding-bottom));
212
- padding-left: var(--nuraly-input-number-icons-separator-padding-left, var(--nuraly-number-icons-separator-padding-left));
213
- padding-right: var(--nuraly-input-number-icons-separator-padding-right, var(--nuraly-number-icons-separator-padding-right));
214
- }
215
-
216
- /*
217
- * Disabled state for all icons
218
- * Applied when input is disabled - reduces opacity and disables interaction
219
- */
220
- :host([disabled]) #password-icon,
221
- :host([disabled]) #error-icon,
222
- :host([disabled]) #warning-icon,
223
- :host([disabled]) #number-icons,
224
- :host([disabled]) #calendar-icon,
225
- :host([disabled]) #copy-icon,
226
- :host([disabled]) #clear-icon {
227
- opacity: var(--nuraly-input-disabled-icon-opacity, var(--nuraly-disabled-icon-opacity));
228
- }
229
-
230
- /* Disabled icons cursor override */
231
- :host([disabled]) #password-icon,
232
- :host([disabled]) #number-icons,
233
- :host([disabled]) #copy-icon,
234
- :host([disabled]) #clear-icon {
235
- cursor: not-allowed;
236
- }
237
-
238
- /* ========================================
239
- * INPUT CONTAINER STYLES
240
- * ======================================== */
241
-
242
- /*
243
- * Input wrapper - contains addons and input container
244
- * Provides horizontal layout for addon before/after elements
245
- */
246
- .input-wrapper {
247
- display: flex;
248
- align-items: stretch;
249
- width: 100%;
250
- }
251
-
252
- /*
253
- * Addon before element - content before input (outside borders)
254
- * Styled to visually connect with input
255
- */
256
- .input-addon-before {
257
- background-color: var(--nuraly-input-addon-background-color, var(--nuraly-addon-background-color));
258
- border: var(--nuraly-input-border, var(--nuraly-border));
259
- border-right: none;
260
- border-top-left-radius: var(--nuraly-input-border-radius, var(--nuraly-border-radius));
261
- border-bottom-left-radius: var(--nuraly-input-border-radius, var(--nuraly-border-radius));
262
- padding: var(--nuraly-input-addon-padding, var(--nuraly-addon-padding));
263
- display: flex;
264
- align-items: center;
265
- color: var(--nuraly-input-addon-color, var(--nuraly-addon-color));
266
- font-size: var(--nuraly-input-font-size, var(--nuraly-font-size));
267
- white-space: nowrap;
268
- min-width: 0; /* Allow shrinking */
269
- flex-shrink: 0; /* Prevent shrinking */
270
- }
271
-
272
- /*
273
- * Addon after element - content after input (outside borders)
274
- * Styled to visually connect with input
275
- */
276
- .input-addon-after {
277
- background-color: var(--nuraly-input-addon-background-color, var(--nuraly-addon-background-color));
278
- border: var(--nuraly-input-border, var(--nuraly-border));
279
- border-left: none;
280
- border-top-right-radius: var(--nuraly-input-border-radius, var(--nuraly-border-radius));
281
- border-bottom-right-radius: var(--nuraly-input-border-radius, var(--nuraly-border-radius));
282
- padding: var(--nuraly-input-addon-padding, var(--nuraly-addon-padding));
283
- display: flex;
284
- align-items: center;
285
- color: var(--nuraly-input-addon-color, var(--nuraly-addon-color));
286
- font-size: var(--nuraly-input-font-size, var(--nuraly-font-size));
287
- white-space: nowrap;
288
- min-width: 0; /* Allow shrinking */
289
- flex-shrink: 0; /* Prevent shrinking */
290
- }
291
-
292
- /*
293
- * Input container border radius adjustments when addons are present
294
- * Removes border radius on sides where addons are attached
295
- */
296
- .input-wrapper:has(.input-addon-before) #input-container {
297
- border-top-left-radius: 0;
298
- border-bottom-left-radius: 0;
299
- border-left: none;
300
- }
301
-
302
- .input-wrapper:has(.input-addon-after) #input-container {
303
- border-top-right-radius: 0;
304
- border-bottom-right-radius: 0;
305
- border-right: none;
306
- }
307
-
308
- /*
309
- * Main input container element
310
- * Uses theme CSS custom properties for comprehensive border and layout control
311
- */
312
- #input-container {
313
- /* Default outlined style */
314
- border: var(--nuraly-border-width-input, 1px) solid var(--nuraly-color-input-border, #d9d9d9);
315
- border-radius: var(--nuraly-border-radius-input, 6px);
316
-
317
- /* Background and text styling */
318
- background-color: var(--nuraly-color-input-background, #ffffff);
319
- color: var(--nuraly-color-input-text, rgba(0, 0, 0, 0.88));
320
- font-family: var(--nuraly-font-family-input, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto);
321
- font-size: var(--nuraly-font-size-input, 14px);
322
-
323
- /* Layout */
324
- display: flex;
325
- position: relative;
326
- flex: 1; /* Take available space in wrapper */
327
- min-width: 0; /* Allow shrinking below content size */
328
-
329
- /* Transitions for smooth theme changes */
330
- transition: var(--nuraly-transition-input, border-color 0.2s, box-shadow 0.2s);
331
- }
332
-
333
- /* Carbon Design System override - Carbon specific styles */
334
- html[data-theme^="carbon"] nr-input #input-container,
335
- body[data-theme^="carbon"] nr-input #input-container,
336
- [data-theme^="carbon"] nr-input #input-container,
337
- .input-wrapper[data-theme^="carbon"] #input-container {
338
- border: var(--nuraly-border-width-input, 1px) solid var(--nuraly-color-input-border, transparent) !important;
339
- border-bottom: var(--nuraly-border-width-input, 2px) solid var(--nuraly-color-input-border-bottom, #8d8d8d) !important;
340
- border-radius: var(--nuraly-border-radius-input, 0) !important;
341
- background-color: var(--nuraly-color-input-background, #f4f4f4) !important;
342
- color: var(--nuraly-color-input-text, #161616) !important;
343
- }
344
-
345
- /* Default theme override - Default specific styles */
346
- html[data-theme^="default"] nr-input #input-container,
347
- body[data-theme^="default"] nr-input #input-container,
348
- [data-theme^="default"] nr-input #input-container,
349
- .input-wrapper[data-theme^="default"] #input-container {
350
- border: var(--nuraly-border-width-input, 1px) solid var(--nuraly-color-input-border, #d9d9d9) !important;
351
- border-radius: var(--nuraly-border-radius-input, 6px) !important;
352
- background-color: var(--nuraly-color-input-background, #ffffff) !important;
353
- color: var(--nuraly-color-input-text, rgba(0, 0, 0, 0.88)) !important;
354
- }
355
-
356
- /* Carbon input element padding override */
357
- html[data-theme^="carbon"] nr-input #input-container > input,
358
- body[data-theme^="carbon"] nr-input #input-container > input,
359
- [data-theme^="carbon"] nr-input #input-container > input,
360
- .input-wrapper[data-theme^="carbon"] #input-container > input {
361
- padding: 7px 16px !important;
362
- }
363
-
364
- /* Default input element padding override */
365
- html[data-theme^="default"] nr-input #input-container > input,
366
- body[data-theme^="default"] nr-input #input-container > input,
367
- [data-theme^="default"] nr-input #input-container > input,
368
- .input-wrapper[data-theme^="default"] #input-container > input {
369
- padding: var(--nuraly-spacing-input-medium-vertical, 4px) var(--nuraly-spacing-input-medium-horizontal, 11px) !important;
370
- }
371
-
372
- /* Focus state for input container */
373
- #input-container:focus-within {
374
- border-color: var(--nuraly-color-input-border-focus, #1890ff);
375
- box-shadow: var(--nuraly-shadow-input-focus, 0 0 0 2px rgba(24, 144, 255, 0.2));
376
- outline: none;
377
- }
378
-
379
- /* Carbon focus override */
380
- html[data-theme^="carbon"] nr-input #input-container:focus-within,
381
- body[data-theme^="carbon"] nr-input #input-container:focus-within,
382
- [data-theme^="carbon"] nr-input #input-container:focus-within,
383
- .input-wrapper[data-theme^="carbon"] #input-container:focus-within {
384
- border: var(--nuraly-border-width-input, 2px) solid var(--nuraly-color-input-border-focus, #0f62fe) !important;
385
- border-radius: var(--nuraly-border-radius-input, 0) !important;
386
- box-shadow: var(--nuraly-shadow-input-focus, none) !important;
387
- outline: none !important;
388
- }
389
-
390
- /* Default focus override */
391
- html[data-theme^="default"] nr-input #input-container:focus-within,
392
- body[data-theme^="default"] nr-input #input-container:focus-within,
393
- [data-theme^="default"] nr-input #input-container:focus-within,
394
- .input-wrapper[data-theme^="default"] #input-container:focus-within {
395
- border-color: var(--nuraly-color-input-border-focus, #1890ff) !important;
396
- border-radius: var(--nuraly-border-radius-input, 6px) !important;
397
- box-shadow: var(--nuraly-shadow-input-focus, 0 0 0 2px rgba(24, 144, 255, 0.2)) !important;
398
- outline: none !important;
399
- }
400
-
401
- /*
402
- * Disabled container styles
403
- * Applied when input is disabled
404
- */
405
- :host([disabled]) #input-container {
406
- background-color: var(--nuraly-color-input-disabled-background, #f5f5f5);
407
- border-color: var(--nuraly-color-input-disabled-border, #d9d9d9);
408
- color: var(--nuraly-color-input-disabled-text, rgba(0, 0, 0, 0.25));
409
- cursor: not-allowed;
410
- }
411
-
412
- /* ========================================
413
- * INPUT VARIANT STYLES
414
- * ======================================== */
415
-
416
- /*
417
- * Outlined variant - full border around input
418
- * Default: light border, focus: blue border
419
- */
420
- :host([variant='outlined']) #input-container {
421
- border: var(--nuraly-input-outlined-border, var(--nuraly-outlined-border));
422
- border-radius: var(--nuraly-input-outlined-border-radius, var(--nuraly-outlined-border-radius));
423
- background-color: var(--nuraly-input-outlined-background, var(--nuraly-outlined-background));
424
- }
425
-
426
- :host([variant='outlined']) .input-wrapper {
427
- background-color: transparent;
428
- }
429
-
430
- :host([variant='outlined']:not([state='error'])) #input-container:focus-within {
431
- border: var(--nuraly-input-outlined-focus-border, var(--nuraly-outlined-focus-border));
432
- }
433
-
434
- /*
435
- * Filled variant - background with bottom border only
436
- * Subtle background with bottom border indication
437
- */
438
- :host([variant='filled']) #input-container {
439
- background-color: var(--nuraly-input-filled-background, var(--nuraly-filled-background));
440
- border-radius: var(--nuraly-input-filled-border-radius, var(--nuraly-filled-border-radius));
441
- border-bottom: var(--nuraly-input-filled-border-bottom, var(--nuraly-filled-border-bottom));
442
- border-top: none;
443
- border-left: none;
444
- border-right: none;
445
- }
446
-
447
- :host([variant='filled']) .input-wrapper {
448
- background-color: transparent;
449
- }
450
-
451
- :host([variant='filled']:not([state='error'])) #input-container:focus-within {
452
- border-bottom: var(--nuraly-input-filled-focus-border-bottom, var(--nuraly-filled-focus-border-bottom));
453
- border-top: none;
454
- border-left: none;
455
- border-right: none;
456
- }
457
-
458
- /*
459
- * Borderless variant - no borders, focus with outline
460
- * Clean appearance with focus indication via outline
461
- */
462
- :host([variant='borderless']) #input-container {
463
- background-color: var(--nuraly-input-borderless-background, var(--nuraly-borderless-background));
464
- border: none;
465
- border-radius: var(--nuraly-input-borderless-border-radius, var(--nuraly-borderless-border-radius));
466
- }
467
-
468
- :host([variant='borderless']) .input-wrapper {
469
- background-color: transparent;
470
- }
471
-
472
- :host([variant='borderless']:not([state='error'])) #input-container:focus-within {
473
- outline: var(--nuraly-input-borderless-focus-outline, var(--nuraly-borderless-focus-outline));
474
- border: none;
475
- }
476
-
477
- /*
478
- * Underlined variant - bottom border only (default/current behavior)
479
- * Maintains existing behavior as default
480
- */
481
- :host([variant='underlined']) #input-container {
482
- border-bottom: var(--nuraly-input-underlined-border-bottom, var(--nuraly-underlined-border-bottom));
483
- border-top: none;
484
- border-left: none;
485
- border-right: none;
486
- border-radius: 0;
487
- }
488
-
489
- :host([variant='underlined']:not([state='error'])) #input-container:focus-within {
490
- border-bottom: var(--nuraly-input-underlined-focus-border-bottom, var(--nuraly-underlined-focus-border-bottom));
491
- border-top: none;
492
- border-left: none;
493
- border-right: none;
494
- }
495
-
496
- /* ========================================
497
- * INPUT ELEMENT STYLES
498
- * ======================================== */
499
-
500
- /*
501
- * Base input element styling
502
- * Full width with no default borders, using container for styling
503
- */
504
- input {
505
- width: 100%;
506
- border: none;
507
- outline: none;
508
- color: var(--nuraly-input-text-color, var(--nuraly-text-color));
509
- font-family: var(--nuraly-input-font-family, var(--nuraly-font-family));
510
- font-size: var(--nuraly-input-font-size, var(--nuraly-font-size));
511
- }
512
-
513
- /* Remove default number input spinners */
514
- /* Chrome, Safari, Edge, Opera */
515
- input::-webkit-outer-spin-button,
516
- input::-webkit-inner-spin-button {
517
- -webkit-appearance: none;
518
- }
519
-
520
- /* Firefox */
521
- input[type='number'] {
522
- -moz-appearance: textfield;
523
- }
524
-
525
- /* ========================================
526
- * STATE STYLES
527
- * ======================================== */
528
-
529
- /*
530
- * Error state styling - works with all variants
531
- * Applied when state='error' and not disabled
532
- */
533
- :host(:not([disabled])[state='error']) #input-container {
534
- border: var(--nuraly-input-error-border, var(--nuraly-error-border)) !important;
535
- outline: none !important;
536
- }
537
-
538
- /* Override variant-specific error state styling */
539
- :host([variant='borderless'][state='error']) #input-container {
540
- border: var(--nuraly-input-error-border, var(--nuraly-error-border)) !important;
541
- outline: none !important;
542
- }
543
-
544
- :host([variant='underlined'][state='error']) #input-container,
545
- :host([variant='filled'][state='error']) #input-container {
546
- border-top: none !important;
547
- border-left: none !important;
548
- border-right: none !important;
549
- border-bottom: var(--nuraly-input-error-border, var(--nuraly-error-border)) !important;
550
- }
551
-
552
- /*
553
- * Number input icon positioning adjustments for error/warning states
554
- * When validation states are present, adjust icon positioning
555
- */
556
- :host([state='error']) input[type='number'] ~ #number-icons,
557
- :host([state='warning']) input[type='number'] ~ #number-icons {
558
- position: static;
559
- padding-left: var(--nuraly-input-number-icons-container-padding-left, var(--nuraly-number-icons-container-padding-left));
560
- }
561
-
562
- /* ========================================
563
- * SLOTTED CONTENT STYLES
564
- * ======================================== */
565
-
566
- /*
567
- * Label slot styling
568
- * Applied to slotted label elements
569
- */
570
- ::slotted([slot='label']) {
571
- color: var(--nuraly-input-label-color, var(--nuraly-label-color));
572
- font-size: var(--nuraly-input-label-font-size, var(--nuraly-label-font-size));
573
- padding-bottom: var(--nuraly-input-label-padding-bottom, var(--nuraly-label-padding-bottom));
574
- }
575
-
576
- /*
577
- * Helper text slot styling
578
- * Applied to slotted helper text elements
579
- */
580
- ::slotted([slot='helper-text']) {
581
- color: var(--nuraly-input-helper-text-color, var(--nuraly-helper-text-color));
582
- font-size: var(--nuraly-input-helper-text-font-size, var(--nuraly-helper-text-font-size));
583
- padding-top: var(--nuraly-input-helper-text-padding-top, var(--nuraly-helper-text-padding-top));
584
-
585
- /* Prevent text overflow and ensure proper wrapping without affecting parent width */
586
- word-wrap: break-word;
587
- word-break: break-word;
588
- overflow-wrap: break-word;
589
- hyphens: auto;
590
- white-space: normal;
591
- max-width: 100%;
592
- width: 0;
593
- min-width: 100%;
594
- box-sizing: border-box;
595
- line-height: 1.4;
596
- }
597
-
598
- /*
599
- * State-specific helper text colors
600
- * Override helper text color based on validation state
601
- */
602
- :host([state='error']) ::slotted([slot='helper-text']) {
603
- color: var(--nuraly-input-error-helper-text-color, var(--nuraly-error-helper-text-color));
604
- }
605
-
606
- :host([state='warning']) ::slotted([slot='helper-text']) {
607
- color: var(--nuraly-input-warning-helper-text-color, var(--nuraly-warning-helper-text-color));
608
- }
609
-
610
- /*
611
- * Disabled state for slotted content
612
- * Applied when input is disabled
613
- */
614
- :host([disabled]) ::slotted([slot='helper-text']) {
615
- color: var(--nuraly-input-disabled-helper-text-color, var(--nuraly-disabled-helper-text-color));
616
- }
617
-
618
- :host([disabled]) ::slotted([slot='label']) {
619
- color: var(--nuraly-input-disabled-label-color, var(--nuraly-disabled-label-color));
620
- }
621
-
622
- /*
623
- * Input prefix wrapper styling
624
- * Centers the prefix content vertically and horizontally
625
- */
626
- .input-prefix {
627
- display: flex;
628
- align-items: center;
629
- justify-content: center;
630
- }
631
-
632
- /*
633
- * Prefix slot styling
634
- * Applied to slotted prefix content (icons, text, etc.)
635
- */
636
- ::slotted([slot='prefix']) {
637
- display: flex;
638
- align-items: center;
639
- padding-right: var(--nuraly-input-prefix-padding-right, var(--nuraly-prefix-padding-right));
640
- color: var(--nuraly-input-prefix-color, var(--nuraly-prefix-color));
641
- font-size: var(--nuraly-input-prefix-font-size, var(--nuraly-prefix-font-size));
642
- flex-shrink: 0;
643
- }
644
-
645
- /*
646
- * Input suffix wrapper styling
647
- * Centers the suffix content vertically and horizontally
648
- */
649
- .input-suffix {
650
- display: flex;
651
- align-items: center;
652
- justify-content: center;
653
- }
654
-
655
- /*
656
- * Suffix slot styling
657
- * Applied to slotted suffix content (icons, text, etc.)
658
- */
659
- ::slotted([slot='suffix']) {
660
- display: flex;
661
- align-items: center;
662
- padding-left: var(--nuraly-input-suffix-padding-left, var(--nuraly-suffix-padding-left));
663
- color: var(--nuraly-input-suffix-color, var(--nuraly-suffix-color));
664
- font-size: var(--nuraly-input-suffix-font-size, var(--nuraly-suffix-font-size));
665
- flex-shrink: 0;
666
- }
667
-
668
- /*
669
- * Disabled state for prefix and suffix slots
670
- * Applied when input is disabled
671
- */
672
- :host([disabled]) ::slotted([slot='prefix']),
673
- :host([disabled]) ::slotted([slot='suffix']) {
674
- opacity: var(--nuraly-input-disabled-icon-opacity, var(--nuraly-disabled-icon-opacity));
675
- color: var(--nuraly-input-disabled-prefix-suffix-color, var(--nuraly-disabled-prefix-suffix-color));
676
- }
677
- `,a`
678
- /* ========================================
679
- * SIZE VARIATIONS
680
- * ======================================== */
681
-
682
- /* Large input size variant */
683
- div[data-size='large'] {
684
- padding-top: var(--nuraly-input-large-padding-top, var(--nuraly-large-padding-top));
685
- padding-bottom: var(--nuraly-input-large-padding-bottom, var(--nuraly-large-padding-bottom));
686
- padding-left: var(--nuraly-input-large-padding-left, var(--nuraly-large-padding-left));
687
- padding-right: var(--nuraly-input-large-padding-right, var(--nuraly-large-padding-right));
688
- }
689
-
690
- /* Medium input size variant (default) */
691
- div[data-size='medium'] {
692
- padding-top: var(--nuraly-input-medium-padding-top, var(--nuraly-medium-padding-top));
693
- padding-bottom: var(--nuraly-input-medium-padding-bottom, var(--nuraly-medium-padding-bottom));
694
- padding-left: var(--nuraly-input-medium-padding-left, var(--nuraly-medium-padding-left));
695
- padding-right: var(--nuraly-input-medium-padding-right, var(--nuraly-medium-padding-right));
696
- }
697
-
698
- /* Small input size variant */
699
- div[data-size='small'] {
700
- padding-top: var(--nuraly-input-small-padding-top, var(--nuraly-small-padding-top));
701
- padding-bottom: var(--nuraly-input-small-padding-bottom, var(--nuraly-small-padding-bottom));
702
- padding-left: var(--nuraly-input-small-padding-left, var(--nuraly-small-padding-left));
703
- padding-right: var(--nuraly-input-small-padding-right, var(--nuraly-small-padding-right));
704
- }
705
-
706
- /* Carbon Design System - Size-specific padding overrides */
707
- html[data-theme^="carbon"] nr-input div[data-size='medium'],
708
- body[data-theme^="carbon"] nr-input div[data-size='medium'],
709
- [data-theme^="carbon"] div[data-size='medium'] {
710
- padding: 4px 8px !important;
711
- }
712
-
713
- /*
714
- * Character count display
715
- * Shows character count and limit information
716
- */
717
- .character-count {
718
- font-size: var(--nuraly-input-character-count-font-size, var(--nuraly-character-count-font-size));
719
- color: var(--nuraly-input-character-count-color, var(--nuraly-character-count-color));
720
- text-align: right;
721
- margin-top: var(--nuraly-input-character-count-margin-top, var(--nuraly-character-count-margin-top));
722
- font-family: var(--nuraly-input-font-family, var(--nuraly-font-family));
723
- }
724
-
725
- /* Character count over limit styling */
726
- .character-count[data-over-limit] {
727
- color: var(--nuraly-input-character-count-over-limit-color, var(--nuraly-character-count-over-limit-color));
728
- }
729
-
730
- /* ========================================
731
- * VALIDATION MESSAGE STYLES
732
- * ======================================== */
733
-
734
- /*
735
- * Base validation message styling
736
- * Common styles for error and warning messages
737
- */
738
- .validation-message {
739
- font-size: var(--nuraly-input-validation-message-font-size, var(--nuraly-validation-message-font-size, 0.875rem));
740
- font-family: var(--nuraly-input-font-family, var(--nuraly-font-family));
741
- margin-top: var(--nuraly-input-validation-message-margin-top, var(--nuraly-validation-message-margin-top, 0.25rem));
742
- padding: var(--nuraly-input-validation-message-padding, var(--nuraly-validation-message-padding, 0));
743
-
744
- /* Prevent text overflow and ensure proper wrapping without affecting parent width */
745
- word-wrap: break-word;
746
- word-break: break-word;
747
- overflow-wrap: break-word;
748
- hyphens: auto;
749
- white-space: normal;
750
- max-width: 100%;
751
- width: 0;
752
- min-width: 100%;
753
- box-sizing: border-box;
754
- line-height: var(--nuraly-input-validation-message-line-height, var(--nuraly-validation-message-line-height, 1.4));
755
- }
756
-
757
- /*
758
- * Error validation message styling
759
- * Applied when validation message has error class
760
- */
761
- .validation-message.error {
762
- color: var(--nuraly-input-error-message-color, var(--nuraly-error-message-color, var(--nuraly-input-error-color, var(--nuraly-error-color, #dc2626))));
763
- }
764
-
765
- /*
766
- * Warning validation message styling
767
- * Applied when validation message has warning class
768
- */
769
- .validation-message.warning {
770
- color: var(--nuraly-input-warning-message-color, var(--nuraly-warning-message-color, var(--nuraly-input-warning-color, var(--nuraly-warning-color, #d97706))));
771
- }
772
-
773
- /*
774
- * Disabled state for validation messages
775
- * Applied when input is disabled
776
- */
777
- :host([disabled]) .validation-message {
778
- opacity: var(--nuraly-input-disabled-validation-message-opacity, var(--nuraly-disabled-validation-message-opacity, 0.6));
779
- color: var(--nuraly-input-disabled-validation-message-color, var(--nuraly-disabled-validation-message-color));
780
- }
781
-
782
- /*
783
- * Validation icon styles
784
- * Base styles for validation feedback icons
785
- */
786
- .validation-icon {
787
- width: 16px;
788
- height: 16px;
789
- display: inline-flex;
790
- align-items: center;
791
- justify-content: center;
792
- }
793
-
794
- /*
795
- * Loading validation icon with hourglass animation
796
- * Applied when async validation is in progress
797
- */
798
- .validation-icon.validation-loading {
799
- color: var(--nuraly-input-primary-color, var(--nuraly-primary-color, #3b82f6));
800
- animation: validation-hourglass 2s ease-in-out infinite;
801
- transform-origin: center;
802
- }
803
-
804
- /*
805
- * Error validation icon styling
806
- * Applied when validation fails
807
- */
808
- .validation-icon.validation-error {
809
- color: var(--nuraly-input-error-color, var(--nuraly-error-color, #dc2626));
810
- }
811
-
812
- /*
813
- * Warning validation icon styling
814
- * Applied when validation has warnings
815
- */
816
- .validation-icon.validation-warning {
817
- color: var(--nuraly-input-warning-color, var(--nuraly-warning-color, #d97706));
818
- }
819
-
820
- /*
821
- * Success validation icon styling
822
- * Applied when validation passes
823
- */
824
- .validation-icon.validation-success {
825
- color: var(--nuraly-input-success-color, var(--nuraly-success-color, #16a34a));
826
- }
827
-
828
- /*
829
- * Hourglass animation for validation loading
830
- * Gentle pulsing effect without rotation for clean appearance
831
- */
832
- @keyframes validation-hourglass {
833
- 0% {
834
- opacity: 0.7;
835
- transform: scale(1);
836
- }
837
- 25% {
838
- opacity: 1;
839
- transform: scale(1.03);
840
- }
841
- 50% {
842
- opacity: 0.8;
843
- transform: scale(1);
844
- }
845
- 75% {
846
- opacity: 1;
847
- transform: scale(1.03);
848
- }
849
- 100% {
850
- opacity: 0.7;
851
- transform: scale(1);
852
- }
853
- }
854
-
855
- /*
856
- * Alternative pulse animation option
857
- * Uncomment this and change animation above to use pulse instead of hourglass
858
- */
859
- /*
860
- @keyframes validation-pulse {
861
- 0%, 100% {
862
- opacity: 1;
863
- transform: scale(1);
864
- }
865
- 50% {
866
- opacity: 0.7;
867
- transform: scale(1.1);
868
- }
869
- }
870
- */
871
- `],Zt={EMAIL:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,URL:/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/,PHONE:/^[\+]?[1-9][\d]{0,15}$/,PASSWORD_STRONG:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,ALPHANUMERIC:/^[a-zA-Z0-9]+$/,NUMERIC:/^\d+$/,ALPHA:/^[a-zA-Z]+$/,USERNAME:/^[a-zA-Z0-9_-]{3,16}$/,HEX_COLOR:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,IPV4:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,CREDIT_CARD:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3[0-9]{13}|6(?:011|5[0-9]{2})[0-9]{12})$/},Kt=t=>({required:!0,message:t||"This field is required"}),Yt=t=>({type:"email",pattern:Zt.EMAIL,message:t||"Please enter a valid email address"}),Gt=t=>({type:"url",pattern:Zt.URL,message:t||"Please enter a valid URL"}),Jt=(t,i)=>({maxLength:t,message:i||`Maximum length is ${t} characters`}),Xt=(t,i)=>({type:"number",min:t,message:i||`Minimum value is ${t}`}),Qt=(t,i)=>({type:"number",max:t,message:i||`Maximum value is ${t}`}),ti=t=>class extends t{constructor(){super(...arguments),this.handleSystemThemeChange=()=>{this.closest("[data-theme]")||document.documentElement.hasAttribute("data-theme")||this.requestUpdate()}}connectedCallback(){super.connectedCallback(),this.setupThemeObserver(),this.setupDesignSystemObserver(),this.setupSystemThemeListener()}disconnectedCallback(){var t,i,r;super.disconnectedCallback(),null===(t=this.themeObserver)||void 0===t||t.disconnect(),null===(i=this.designSystemObserver)||void 0===i||i.disconnect(),null===(r=this.mediaQuery)||void 0===r||r.removeEventListener("change",this.handleSystemThemeChange)}get currentTheme(){var t,i;const r=(null===(t=this.closest("[data-theme]"))||void 0===t?void 0:t.getAttribute("data-theme"))||document.documentElement.getAttribute("data-theme");return r||((null===(i=window.matchMedia)||void 0===i?void 0:i.call(window,"(prefers-color-scheme: dark)").matches)?"dark":"light")}get currentDesignSystem(){var t;const i=(null===(t=this.closest("[design-system]"))||void 0===t?void 0:t.getAttribute("design-system"))||document.documentElement.getAttribute("design-system");return"carbon"===i?i:"default"}setupThemeObserver(){this.themeObserver=new MutationObserver((()=>{this.requestUpdate()})),this.themeObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]})}setupDesignSystemObserver(){this.designSystemObserver=new MutationObserver((()=>{this.requestUpdate()})),this.designSystemObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["design-system"]})}setupSystemThemeListener(){window.matchMedia&&(this.mediaQuery=window.matchMedia("(prefers-color-scheme: dark)"),this.mediaQuery.addEventListener("change",this.handleSystemThemeChange))}},ii=()=>{var t;return void 0!==globalThis.litElementVersions||"undefined"!=typeof process&&"development"===(null===(t=process.env)||void 0===t?void 0:t.NODE_ENV)||"undefined"!=typeof window&&("localhost"===window.location.hostname||"127.0.0.1"===window.location.hostname)},ri=t=>class extends t{constructor(){super(...arguments),this.requiredComponents=[]}validateDependencies(){if(ii())for(const t of this.requiredComponents)if(!this.isComponentAvailable(t))throw new Error(`Required component "${t}" is not registered. Please import and register the component before using ${this.tagName.toLowerCase()}. Example: import '@nuralyui/${t}';`)}validateDependenciesWithHandler(t){if(!ii())return!0;let i=!0;for(const r of this.requiredComponents)if(!this.isComponentAvailable(r)){i=!1;const e=new Error(`Required component "${r}" is not registered. Please import and register the component before using ${this.tagName.toLowerCase()}.`);t?t(r,e):console.error(e.message)}return i}isComponentAvailable(t){return!!customElements.get(t)}getMissingDependencies(){return this.requiredComponents.filter((t=>!this.isComponentAvailable(t)))}areDependenciesAvailable(){return this.requiredComponents.every((t=>this.isComponentAvailable(t)))}addRequiredComponent(t){this.requiredComponents.includes(t)||this.requiredComponents.push(t)}removeRequiredComponent(t){const i=this.requiredComponents.indexOf(t);i>-1&&this.requiredComponents.splice(i,1)}},ei=t=>class extends t{dispatchCustomEvent(t,i){this.dispatchEvent(new CustomEvent(t,{detail:i,bubbles:!0,composed:!0}))}dispatchEventWithMetadata(t,i){var r;const e=Object.assign(Object.assign({},i),{timestamp:Date.now(),componentName:(null===(r=this.tagName)||void 0===r?void 0:r.toLowerCase())||"unknown"});this.dispatchCustomEvent(t,e)}dispatchInputEvent(t,i){const r=Object.assign({target:i.target||this,value:i.value,originalEvent:i.originalEvent},i);this.dispatchCustomEvent(t,r)}dispatchFocusEvent(t,i){const r=Object.assign({target:i.target||this,value:i.value,focused:i.focused,cursorPosition:i.cursorPosition,selectedText:i.selectedText},i);this.dispatchCustomEvent(t,r)}dispatchValidationEvent(t,i){var r;const e=Object.assign({target:i.target||this,value:i.value,isValid:null!==(r=i.isValid)&&void 0!==r&&r,error:i.error},i);this.dispatchCustomEvent(t,e)}dispatchActionEvent(t,i){const r=Object.assign({target:i.target||this,action:i.action,previousValue:i.previousValue,newValue:i.newValue},i);this.dispatchCustomEvent(t,r)}isReadonlyKeyAllowed(t){if(t.ctrlKey||t.metaKey){return["KeyA","KeyC"].includes(t.code)}return["Tab","Escape","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"].includes(t.key)}isActivationKey(t){return"Enter"===t.key||" "===t.key}};
1
+ import{css as t,html as r,nothing as i,LitElement as n}from"lit";import{property as a,state as e,customElement as o}from"lit/decorators.js";import{NuralyUIBaseMixin as s}from"@nuralyui/common/mixins";const l=[t`:host{display:flex;flex-direction:column;font-family:var(--nuraly-font-family-input, 'IBM Plex Sans', ui-sans-serif, system-ui)}.input-wrapper{background-color:var(--nuraly-color-input-background,var(--nuraly-color-input-background-fallback,#fff))}#input-container>input{background-color:transparent;border:var(--nuraly-input-border,none);outline:var(--nuraly-input-outline,none);flex:1;min-width:0;width:100%;font-family:var(--nuraly-font-family-input, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto);font-size:var(--nuraly-font-size-input,14px);color:var(--nuraly-color-input-text,var(--nuraly-color-input-text-fallback,rgba(0,0,0,.88)));padding:var(--nuraly-spacing-input-medium-vertical,4px) var(--nuraly-spacing-input-medium-horizontal,11px)}:host([disabled]) .input-wrapper{background-color:var(--nuraly-color-input-disabled-background,var(--nuraly-color-input-disabled-background-fallback,#f4f4f4))}:host([disabled]) #input-container>input{background-color:transparent;cursor:var(--nuraly-cursor-disabled,not-allowed);color:var(--nuraly-color-input-disabled-text,var(--nuraly-color-input-disabled-text-fallback,rgba(0,0,0,.25)))}nr-icon{display:flex;align-items:center;--nuraly-color-icon:var(--nuraly-color-input-icon, var(--nuraly-color-icon, var(--nuraly-color-icon-fallback, #161616)));--nuraly-icon-size:var(--nuraly-size-input-icon, var(--nuraly-icon-size, var(--nuraly-icon-size-fallback, 18px)));--nuraly-color-icon-hover:var(--nuraly-color-input-icon-hover, var(--nuraly-color-icon-hover, var(--nuraly-color-icon-hover-fallback, #0f62fe)));--nuraly-color-icon-active:var(--nuraly-color-input-icon-active, var(--nuraly-color-icon-active, var(--nuraly-color-icon-active-fallback, #054ada)));--nuraly-color-icon-disabled:var(--nuraly-color-input-icon-disabled, var(--nuraly-color-icon-disabled, var(--nuraly-color-icon-disabled-fallback, #c6c6c6)))}::placeholder{color:var(--nuraly-color-input-placeholder,var(--nuraly-color-input-placeholder-fallback,#a8a8a8));font-size:var(--nuraly-font-size-input-placeholder,14px);font-family:var(--nuraly-font-family-input, 'IBM Plex Sans', ui-sans-serif, system-ui)}:host([disabled]) ::placeholder{color:var(--nuraly-color-input-disabled-placeholder,var(--nuraly-color-input-disabled-placeholder-fallback,#c6c6c6))}#warning-icon{--nuraly-color-icon:var(--nuraly-color-input-warning-icon, #f1c21b)}#error-icon{--nuraly-color-icon:var(--nuraly-color-input-error-icon, #da1e28)}#calendar-icon{--nuraly-color-icon:var(--nuraly-color-input-calendar-icon, #161616)}#password-icon{padding-left:var(--nuraly-input-password-icon-padding-left,var(--nuraly-password-icon-padding-left,8px));padding-right:var(--nuraly-input-password-icon-padding-right,var(--nuraly-password-icon-padding-right,8px));cursor:var(--nuraly-cursor-interactive,pointer);--nuraly-color-icon:var(--nuraly-color-input-password-icon, #161616)}#copy-icon{padding-right:var(--nuraly-input-copy-icon-padding-right,var(--nuraly-copy-icon-padding-right,8px));--nuraly-color-icon:var(--nuraly-color-input-copy-icon, #161616);cursor:var(--nuraly-cursor-interactive,pointer)}#clear-icon{padding-right:var(--nuraly-input-clear-icon-padding-right,var(--nuraly-clear-icon-padding-right,8px));--nuraly-color-icon:var(--nuraly-color-input-clear-icon, #161616);cursor:var(--nuraly-cursor-interactive,pointer)}#number-icons{display:flex;justify-content:space-between;align-items:center;cursor:var(--nuraly-cursor-interactive,pointer);position:absolute;right:0;top:0;height:100%;width:var(--nuraly-input-number-icons-container-width,var(--nuraly-number-icons-container-width,50px));padding-right:var(--nuraly-input-number-icons-container-padding-right,var(--nuraly-number-icons-container-padding-right,8px))}#number-icons nr-icon{--nuraly-color-icon:var(--nuraly-color-input-number-icons, #161616);padding-left:var(--nuraly-input-number-icons-padding-left,var(--nuraly-number-icons-padding-left,4px));padding-right:var(--nuraly-input-number-icons-padding-right,var(--nuraly-number-icons-padding-right,4px));width:var(--nuraly-input-number-icons-width,var(--nuraly-number-icons-width,24px));height:var(--nuraly-input-number-icons-height,var(--nuraly-number-icons-height,24px))}#icons-separator{color:var(--nuraly-input-number-icons-separator-color,var(--nuraly-number-icons-separator-color));padding-bottom:var(--nuraly-input-number-icons-separator-padding-bottom,var(--nuraly-number-icons-separator-padding-bottom));padding-left:var(--nuraly-input-number-icons-separator-padding-left,var(--nuraly-number-icons-separator-padding-left));padding-right:var(--nuraly-input-number-icons-separator-padding-right,var(--nuraly-number-icons-separator-padding-right))}:host([disabled]) #calendar-icon,:host([disabled]) #clear-icon,:host([disabled]) #copy-icon,:host([disabled]) #error-icon,:host([disabled]) #number-icons,:host([disabled]) #password-icon,:host([disabled]) #warning-icon{opacity:var(--nuraly-input-disabled-icon-opacity,var(--nuraly-disabled-icon-opacity))}:host([disabled]) #clear-icon,:host([disabled]) #copy-icon,:host([disabled]) #number-icons,:host([disabled]) #password-icon{cursor:not-allowed}.input-wrapper{display:flex;align-items:stretch;width:100%}.input-addon-before{background-color:var(--nuraly-input-addon-background-color,var(--nuraly-addon-background-color));border:var(--nuraly-input-border,var(--nuraly-border));border-right:none;border-top-left-radius:var(--nuraly-input-border-radius,var(--nuraly-border-radius));border-bottom-left-radius:var(--nuraly-input-border-radius,var(--nuraly-border-radius));padding:var(--nuraly-input-addon-padding,var(--nuraly-addon-padding));display:flex;align-items:center;color:var(--nuraly-input-addon-color,var(--nuraly-addon-color));font-size:var(--nuraly-input-font-size,var(--nuraly-font-size));white-space:nowrap;min-width:0;flex-shrink:0}.input-addon-after{background-color:var(--nuraly-input-addon-background-color,var(--nuraly-addon-background-color));border:var(--nuraly-input-border,var(--nuraly-border));border-left:none;border-top-right-radius:var(--nuraly-input-border-radius,var(--nuraly-border-radius));border-bottom-right-radius:var(--nuraly-input-border-radius,var(--nuraly-border-radius));padding:var(--nuraly-input-addon-padding,var(--nuraly-addon-padding));display:flex;align-items:center;color:var(--nuraly-input-addon-color,var(--nuraly-addon-color));font-size:var(--nuraly-input-font-size,var(--nuraly-font-size));white-space:nowrap;min-width:0;flex-shrink:0}.input-wrapper:has(.input-addon-before) #input-container{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.input-wrapper:has(.input-addon-after) #input-container{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}#input-container{border:var(--nuraly-border-width-input,1px) solid var(--nuraly-color-input-border,#d9d9d9);border-radius:var(--nuraly-border-radius-input,6px);background-color:var(--nuraly-color-input-background,#fff);color:var(--nuraly-color-input-text,rgba(0,0,0,.88));font-family:var(--nuraly-font-family-input, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto);font-size:var(--nuraly-font-size-input,14px);display:flex;position:relative;flex:1;min-width:0;transition:var(--nuraly-transition-input,border-color .2s,box-shadow .2s)}.input-wrapper[data-theme^=carbon] #input-container,[data-theme^=carbon] nr-input #input-container,body[data-theme^=carbon] nr-input #input-container,html[data-theme^=carbon] nr-input #input-container{border:var(--nuraly-border-width-input,1px) solid var(--nuraly-color-input-border,transparent)!important;border-bottom:var(--nuraly-border-width-input,2px) solid var(--nuraly-color-input-border-bottom,#8d8d8d)!important;border-radius:var(--nuraly-border-radius-input,0)!important;background-color:var(--nuraly-color-input-background,#f4f4f4)!important;color:var(--nuraly-color-input-text,#161616)!important}.input-wrapper[data-theme^=default] #input-container,[data-theme^=default] nr-input #input-container,body[data-theme^=default] nr-input #input-container,html[data-theme^=default] nr-input #input-container{border:var(--nuraly-border-width-input,1px) solid var(--nuraly-color-input-border,#d9d9d9)!important;border-radius:var(--nuraly-border-radius-input,6px)!important;background-color:var(--nuraly-color-input-background,#fff)!important;color:var(--nuraly-color-input-text,rgba(0,0,0,.88))!important}.input-wrapper[data-theme^=carbon] #input-container>input,[data-theme^=carbon] nr-input #input-container>input,body[data-theme^=carbon] nr-input #input-container>input,html[data-theme^=carbon] nr-input #input-container>input{padding:7px 16px!important}.input-wrapper[data-theme^=default] #input-container>input,[data-theme^=default] nr-input #input-container>input,body[data-theme^=default] nr-input #input-container>input,html[data-theme^=default] nr-input #input-container>input{padding:var(--nuraly-spacing-input-medium-vertical,4px) var(--nuraly-spacing-input-medium-horizontal,11px)!important}#input-container:focus-within{border-color:var(--nuraly-color-input-border-focus,#1890ff);box-shadow:var(--nuraly-shadow-input-focus,0 0 0 2px rgba(24,144,255,.2));outline:0}.input-wrapper[data-theme^=carbon] #input-container:focus-within,[data-theme^=carbon] nr-input #input-container:focus-within,body[data-theme^=carbon] nr-input #input-container:focus-within,html[data-theme^=carbon] nr-input #input-container:focus-within{border:var(--nuraly-border-width-input,2px) solid var(--nuraly-color-input-border-focus,#0f62fe)!important;border-radius:var(--nuraly-border-radius-input,0)!important;box-shadow:var(--nuraly-shadow-input-focus,none)!important;outline:0!important}.input-wrapper[data-theme^=default] #input-container:focus-within,[data-theme^=default] nr-input #input-container:focus-within,body[data-theme^=default] nr-input #input-container:focus-within,html[data-theme^=default] nr-input #input-container:focus-within{border-color:var(--nuraly-color-input-border-focus,#1890ff)!important;border-radius:var(--nuraly-border-radius-input,6px)!important;box-shadow:var(--nuraly-shadow-input-focus,0 0 0 2px rgba(24,144,255,.2))!important;outline:0!important}:host([disabled]) #input-container{background-color:var(--nuraly-color-input-disabled-background,#f5f5f5);border-color:var(--nuraly-color-input-disabled-border,#d9d9d9);color:var(--nuraly-color-input-disabled-text,rgba(0,0,0,.25));cursor:not-allowed}:host([variant=outlined]) #input-container{border:var(--nuraly-input-outlined-border,var(--nuraly-outlined-border));border-radius:var(--nuraly-input-outlined-border-radius,var(--nuraly-outlined-border-radius));background-color:var(--nuraly-input-outlined-background,var(--nuraly-outlined-background))}:host([variant=outlined]) .input-wrapper{background-color:transparent}:host([variant=outlined]:not([state=error])) #input-container:focus-within{border:var(--nuraly-input-outlined-focus-border,var(--nuraly-outlined-focus-border))}:host([variant=filled]) #input-container{background-color:var(--nuraly-input-filled-background,var(--nuraly-filled-background));border-radius:var(--nuraly-input-filled-border-radius,var(--nuraly-filled-border-radius));border-bottom:var(--nuraly-input-filled-border-bottom,var(--nuraly-filled-border-bottom));border-top:none;border-left:none;border-right:none}:host([variant=filled]) .input-wrapper{background-color:transparent}:host([variant=filled]:not([state=error])) #input-container:focus-within{border-bottom:var(--nuraly-input-filled-focus-border-bottom,var(--nuraly-filled-focus-border-bottom));border-top:none;border-left:none;border-right:none}:host([variant=borderless]) #input-container{background-color:var(--nuraly-input-borderless-background,var(--nuraly-borderless-background));border:none;border-radius:var(--nuraly-input-borderless-border-radius,var(--nuraly-borderless-border-radius))}:host([variant=borderless]) .input-wrapper{background-color:transparent}:host([variant=borderless]:not([state=error])) #input-container:focus-within{outline:var(--nuraly-input-borderless-focus-outline,var(--nuraly-borderless-focus-outline));border:none}:host([variant=underlined]) #input-container{border-bottom:var(--nuraly-input-underlined-border-bottom,var(--nuraly-underlined-border-bottom));border-top:none;border-left:none;border-right:none;border-radius:0}:host([variant=underlined]:not([state=error])) #input-container:focus-within{border-bottom:var(--nuraly-input-underlined-focus-border-bottom,var(--nuraly-underlined-focus-border-bottom));border-top:none;border-left:none;border-right:none}input{width:100%;border:none;outline:0;color:var(--nuraly-input-text-color,var(--nuraly-text-color));font-family:var(--nuraly-input-font-family,var(--nuraly-font-family));font-size:var(--nuraly-input-font-size,var(--nuraly-font-size))}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}input[type=number]{-moz-appearance:textfield}:host(:not([disabled])[state=error]) #input-container{border:var(--nuraly-input-error-border,var(--nuraly-error-border))!important;outline:0!important}:host([variant=borderless][state=error]) #input-container{border:var(--nuraly-input-error-border,var(--nuraly-error-border))!important;outline:0!important}:host([variant=filled][state=error]) #input-container,:host([variant=underlined][state=error]) #input-container{border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:var(--nuraly-input-error-border,var(--nuraly-error-border))!important}:host([state=error]) input[type=number]~#number-icons,:host([state=warning]) input[type=number]~#number-icons{position:static;padding-left:var(--nuraly-input-number-icons-container-padding-left,var(--nuraly-number-icons-container-padding-left))}::slotted([slot=label]){color:var(--nuraly-input-label-color,var(--nuraly-label-color));font-size:var(--nuraly-input-label-font-size,var(--nuraly-label-font-size));padding-bottom:var(--nuraly-input-label-padding-bottom,var(--nuraly-label-padding-bottom))}::slotted([slot=helper-text]){color:var(--nuraly-input-helper-text-color,var(--nuraly-helper-text-color));font-size:var(--nuraly-input-helper-text-font-size,var(--nuraly-helper-text-font-size));padding-top:var(--nuraly-input-helper-text-padding-top,var(--nuraly-helper-text-padding-top));word-wrap:break-word;word-break:break-word;overflow-wrap:break-word;hyphens:auto;white-space:normal;max-width:100%;width:0;min-width:100%;box-sizing:border-box;line-height:1.4}:host([state=error]) ::slotted([slot=helper-text]){color:var(--nuraly-input-error-helper-text-color,var(--nuraly-error-helper-text-color))}:host([state=warning]) ::slotted([slot=helper-text]){color:var(--nuraly-input-warning-helper-text-color,var(--nuraly-warning-helper-text-color))}:host([disabled]) ::slotted([slot=helper-text]){color:var(--nuraly-input-disabled-helper-text-color,var(--nuraly-disabled-helper-text-color))}:host([disabled]) ::slotted([slot=label]){color:var(--nuraly-input-disabled-label-color,var(--nuraly-disabled-label-color))}.input-prefix{display:flex;align-items:center;justify-content:center}::slotted([slot=prefix]){display:flex;align-items:center;padding-right:var(--nuraly-input-prefix-padding-right,var(--nuraly-prefix-padding-right));color:var(--nuraly-input-prefix-color,var(--nuraly-prefix-color));font-size:var(--nuraly-input-prefix-font-size,var(--nuraly-prefix-font-size));flex-shrink:0}.input-suffix{display:flex;align-items:center;justify-content:center}::slotted([slot=suffix]){display:flex;align-items:center;padding-left:var(--nuraly-input-suffix-padding-left,var(--nuraly-suffix-padding-left));color:var(--nuraly-input-suffix-color,var(--nuraly-suffix-color));font-size:var(--nuraly-input-suffix-font-size,var(--nuraly-suffix-font-size));flex-shrink:0}:host([disabled]) ::slotted([slot=prefix]),:host([disabled]) ::slotted([slot=suffix]){opacity:var(--nuraly-input-disabled-icon-opacity,var(--nuraly-disabled-icon-opacity));color:var(--nuraly-input-disabled-prefix-suffix-color,var(--nuraly-disabled-prefix-suffix-color))}`,t`div[data-size=large]{padding-top:var(--nuraly-input-large-padding-top,var(--nuraly-large-padding-top));padding-bottom:var(--nuraly-input-large-padding-bottom,var(--nuraly-large-padding-bottom));padding-left:var(--nuraly-input-large-padding-left,var(--nuraly-large-padding-left));padding-right:var(--nuraly-input-large-padding-right,var(--nuraly-large-padding-right))}div[data-size=medium]{padding-top:var(--nuraly-input-medium-padding-top,var(--nuraly-medium-padding-top));padding-bottom:var(--nuraly-input-medium-padding-bottom,var(--nuraly-medium-padding-bottom));padding-left:var(--nuraly-input-medium-padding-left,var(--nuraly-medium-padding-left));padding-right:var(--nuraly-input-medium-padding-right,var(--nuraly-medium-padding-right))}div[data-size=small]{padding-top:var(--nuraly-input-small-padding-top,var(--nuraly-small-padding-top));padding-bottom:var(--nuraly-input-small-padding-bottom,var(--nuraly-small-padding-bottom));padding-left:var(--nuraly-input-small-padding-left,var(--nuraly-small-padding-left));padding-right:var(--nuraly-input-small-padding-right,var(--nuraly-small-padding-right))}[data-theme^=carbon] div[data-size=medium],body[data-theme^=carbon] nr-input div[data-size=medium],html[data-theme^=carbon] nr-input div[data-size=medium]{padding:4px 8px!important}.character-count{font-size:var(--nuraly-input-character-count-font-size,var(--nuraly-character-count-font-size));color:var(--nuraly-input-character-count-color,var(--nuraly-character-count-color));text-align:right;margin-top:var(--nuraly-input-character-count-margin-top,var(--nuraly-character-count-margin-top));font-family:var(--nuraly-input-font-family,var(--nuraly-font-family))}.character-count[data-over-limit]{color:var(--nuraly-input-character-count-over-limit-color,var(--nuraly-character-count-over-limit-color))}.validation-message{font-size:var(--nuraly-input-validation-message-font-size,var(--nuraly-validation-message-font-size,.875rem));font-family:var(--nuraly-input-font-family,var(--nuraly-font-family));margin-top:var(--nuraly-input-validation-message-margin-top,var(--nuraly-validation-message-margin-top,.25rem));padding:var(--nuraly-input-validation-message-padding,var(--nuraly-validation-message-padding,0));word-wrap:break-word;word-break:break-word;overflow-wrap:break-word;hyphens:auto;white-space:normal;max-width:100%;width:0;min-width:100%;box-sizing:border-box;line-height:var(--nuraly-input-validation-message-line-height,var(--nuraly-validation-message-line-height,1.4))}.validation-message.error{color:var(--nuraly-input-error-message-color,var(--nuraly-error-message-color,var(--nuraly-input-error-color,var(--nuraly-error-color,#dc2626))))}.validation-message.warning{color:var(--nuraly-input-warning-message-color,var(--nuraly-warning-message-color,var(--nuraly-input-warning-color,var(--nuraly-warning-color,#d97706))))}:host([disabled]) .validation-message{opacity:var(--nuraly-input-disabled-validation-message-opacity,var(--nuraly-disabled-validation-message-opacity,.6));color:var(--nuraly-input-disabled-validation-message-color,var(--nuraly-disabled-validation-message-color))}.validation-icon{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center}.validation-icon.validation-loading{color:var(--nuraly-input-primary-color,var(--nuraly-primary-color,#3b82f6));animation:validation-hourglass 2s ease-in-out infinite;transform-origin:center}.validation-icon.validation-error{color:var(--nuraly-input-error-color,var(--nuraly-error-color,#dc2626))}.validation-icon.validation-warning{color:var(--nuraly-input-warning-color,var(--nuraly-warning-color,#d97706))}.validation-icon.validation-success{color:var(--nuraly-input-success-color,var(--nuraly-success-color,#16a34a))}@keyframes validation-hourglass{0%{opacity:.7;transform:scale(1)}25%{opacity:1;transform:scale(1.03)}50%{opacity:.8;transform:scale(1)}75%{opacity:1;transform:scale(1.03)}100%{opacity:.7;transform:scale(1)}}`],u={EMAIL:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,URL:/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/,PHONE:/^[\+]?[1-9][\d]{0,15}$/,PASSWORD_STRONG:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,ALPHANUMERIC:/^[a-zA-Z0-9]+$/,NUMERIC:/^\d+$/,ALPHA:/^[a-zA-Z]+$/,USERNAME:/^[a-zA-Z0-9_-]{3,16}$/,HEX_COLOR:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,IPV4:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,CREDIT_CARD:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3[0-9]{13}|6(?:011|5[0-9]{2})[0-9]{12})$/},d=t=>({required:!0,message:t||"This field is required"}),c=t=>({type:"email",pattern:u.EMAIL,message:t||"Please enter a valid email address"}),h=t=>({type:"url",pattern:u.URL,message:t||"Please enter a valid URL"}),p=(t,r)=>({maxLength:t,message:r||`Maximum length is ${t} characters`}),v=(t,r)=>({type:"number",min:t,message:r||`Minimum value is ${t}`}),b=(t,r)=>({type:"number",max:t,message:r||`Maximum value is ${t}`});
872
2
  /**
873
3
  * @license
874
4
  * Copyright 2023 Google Laabidi Aymen
875
5
  * SPDX-License-Identifier: MIT
876
6
  */
877
- class ni{static validateNumericProperties(t,i,r,e){"number"===t&&(i&&isNaN(Number(i))&&console.warn(`Invalid min value: "${i}" is not a valid number`),r&&isNaN(Number(r))&&console.warn(`Invalid max value: "${r}" is not a valid number`),e&&isNaN(Number(e))&&console.warn(`Invalid step value: "${e}" is not a valid number`),i&&r&&Number(i)>=Number(r)&&console.warn(`Invalid range: min value (${i}) should be less than max value (${r})`))}static preventNonNumericInput(t,i){const r=t.key,e=t.target,n=e.value,a=e.selectionStart||0;if(!(t.ctrlKey||t.metaKey||["Backspace","Delete","Tab","Escape","Enter","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"].includes(r)||/^\d$/.test(r))){if("."===r||","===r){if(!(n.includes(".")||n.includes(",")))return}if("-"===r){const t=n.includes("-"),r=!i||Number(i)<0;if(!t&&0===a&&r)return}if("+"===r){if(!n.includes("+")&&0===a)return}t.preventDefault()}}static validateNumericValue(t,i,r){const e=[];if(!t)return{isValid:!0,warnings:e};const n=Number(t);return isNaN(n)?{isValid:!1,warnings:[`Invalid numeric value: "${t}"`]}:(i&&n<Number(i)&&e.push(`Value ${n} is below minimum ${i}`),r&&n>Number(r)&&e.push(`Value ${n} is above maximum ${r}`),{isValid:!0,warnings:e})}}
7
+ class m{static validateNumericProperties(t,r,i,n){"number"===t&&(r&&isNaN(Number(r))&&console.warn(`Invalid min value: "${r}" is not a valid number`),i&&isNaN(Number(i))&&console.warn(`Invalid max value: "${i}" is not a valid number`),n&&isNaN(Number(n))&&console.warn(`Invalid step value: "${n}" is not a valid number`),r&&i&&Number(r)>=Number(i)&&console.warn(`Invalid range: min value (${r}) should be less than max value (${i})`))}static preventNonNumericInput(t,r){const i=t.key,n=t.target,a=n.value,e=n.selectionStart||0;if(!(t.ctrlKey||t.metaKey||["Backspace","Delete","Tab","Escape","Enter","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"].includes(i)||/^\d$/.test(i))){if("."===i||","===i){if(!(a.includes(".")||a.includes(",")))return}if("-"===i){const t=a.includes("-"),i=!r||Number(r)<0;if(!t&&0===e&&i)return}if("+"===i){if(!a.includes("+")&&0===e)return}t.preventDefault()}}static validateNumericValue(t,r,i){const n=[];if(!t)return{isValid:!0,warnings:n};const a=Number(t);return isNaN(a)?{isValid:!1,warnings:[`Invalid numeric value: "${t}"`]}:(r&&a<Number(r)&&n.push(`Value ${a} is below minimum ${r}`),i&&a>Number(i)&&n.push(`Value ${a} is above maximum ${i}`),{isValid:!0,warnings:n})}}
878
8
  /**
879
9
  * @license
880
10
  * Copyright 2023 Google Laabidi Aymen
881
11
  * SPDX-License-Identifier: MIT
882
- */class ai{static renderPrefix(){return bt`
883
- <div class="input-prefix">
884
- <slot name="prefix"></slot>
885
- </div>
886
- `}static renderSuffix(){return bt`
887
- <div class="input-suffix">
888
- <slot name="suffix"></slot>
889
- </div>
890
- `}static renderAddonBefore(t,i){return t?bt`
891
- <div class="input-addon-before">
892
- <slot name="addon-before" @slotchange=${i}></slot>
893
- </div>
894
- `:xt}static renderAddonAfter(t,i){return t?bt`
895
- <div class="input-addon-after">
896
- <slot name="addon-after" @slotchange=${i}></slot>
897
- </div>
898
- `:xt}static renderCopyIcon(t,i,r,e,n){return t?bt`<nr-icon
899
- name="copy"
900
- type="regular"
901
- id="copy-icon"
902
- role="button"
903
- aria-label="Copy input value"
904
- tabindex="0"
905
- @click=${i||r?xt:e}
906
- @keydown=${n}
907
- ></nr-icon>`:xt}static renderClearIcon(t,i,r,e,n,a){return!t||!i||r||e?xt:bt`<nr-icon
908
- name="times-circle"
909
- type="regular"
910
- id="clear-icon"
911
- role="button"
912
- aria-label="Clear input value"
913
- tabindex="0"
914
- @click=${n}
915
- @keydown=${a}
916
- ></nr-icon>`}static renderStateIcon(t){switch(t){case"warning":return bt`<nr-icon name="warning" id="warning-icon"></nr-icon>`;case"error":return bt`<nr-icon name="exclamation-circle" id="error-icon"></nr-icon>`;default:return xt}}static renderCalendarIcon(t,i){return"default"!==t||"calendar"!==i?xt:bt`<nr-icon name="calendar" type="regular" id="calendar-icon"></nr-icon>`}static renderPasswordIcon(t,i,r,e,n,a){return"password"!==t?xt:"text"===i?bt`<nr-icon
917
- name="eye-slash"
918
- type="regular"
919
- id="password-icon"
920
- role="button"
921
- aria-label="Hide password"
922
- tabindex="0"
923
- @click=${r||e?xt:n}
924
- @keydown=${a}
925
- ></nr-icon>`:bt`<nr-icon
926
- name="eye"
927
- type="regular"
928
- id="password-icon"
929
- role="button"
930
- aria-label="Show password"
931
- tabindex="0"
932
- @click=${r||e?xt:n}
933
- @keydown=${a}
934
- ></nr-icon>`}static renderNumberIcons(t,i,r,e,n,a,o){return"number"!==t?xt:bt`
935
- <div id="number-icons">
936
- ${"default"!==i?bt`<span id="icons-separator">|</span>`:xt}
937
- <nr-icon
938
- name="minus"
939
- aria-label="Decrease value"
940
- role="button"
941
- tabindex="0"
942
- @click=${r||e?xt:a}
943
- @keydown=${o}
944
- ></nr-icon>
945
- <span id="icons-separator">|</span>
946
- <nr-icon
947
- name="plus"
948
- aria-label="Increase value"
949
- role="button"
950
- tabindex="0"
951
- @click=${r||e?xt:n}
952
- @keydown=${o}
953
- ></nr-icon>
954
- </div>
955
- `}}
12
+ */class y{static renderPrefix(){return r`<div class="input-prefix"><slot name="prefix"></slot></div>`}static renderSuffix(){return r`<div class="input-suffix"><slot name="suffix"></slot></div>`}static renderAddonBefore(t,n){return t?r`<div class="input-addon-before"><slot name="addon-before" @slotchange="${n}"></slot></div>`:i}static renderAddonAfter(t,n){return t?r`<div class="input-addon-after"><slot name="addon-after" @slotchange="${n}"></slot></div>`:i}static renderCopyIcon(t,n,a,e,o){return t?r`<nr-icon name="copy" type="regular" id="copy-icon" role="button" aria-label="Copy input value" tabindex="0" @click="${n||a?i:e}" @keydown="${o}"></nr-icon>`:i}static renderClearIcon(t,n,a,e,o,s){return!t||!n||a||e?i:r`<nr-icon name="times-circle" type="regular" id="clear-icon" role="button" aria-label="Clear input value" tabindex="0" @click="${o}" @keydown="${s}"></nr-icon>`}static renderStateIcon(t){switch(t){case"warning":return r`<nr-icon name="warning" id="warning-icon"></nr-icon>`;case"error":return r`<nr-icon name="exclamation-circle" id="error-icon"></nr-icon>`;default:return i}}static renderCalendarIcon(t,n){return"default"!==t||"calendar"!==n?i:r`<nr-icon name="calendar" type="regular" id="calendar-icon"></nr-icon>`}static renderPasswordIcon(t,n,a,e,o,s){return"password"!==t?i:"text"===n?r`<nr-icon name="eye-slash" type="regular" id="password-icon" role="button" aria-label="Hide password" tabindex="0" @click="${a||e?i:o}" @keydown="${s}"></nr-icon>`:r`<nr-icon name="eye" type="regular" id="password-icon" role="button" aria-label="Show password" tabindex="0" @click="${a||e?i:o}" @keydown="${s}"></nr-icon>`}static renderNumberIcons(t,n,a,e,o,s,l){return"number"!==t?i:r`<div id="number-icons">${"default"!==n?r`<span id="icons-separator">|</span>`:i}<nr-icon name="minus" aria-label="Decrease value" role="button" tabindex="0" @click="${a||e?i:s}" @keydown="${l}"></nr-icon><span id="icons-separator">|</span><nr-icon name="plus" aria-label="Increase value" role="button" tabindex="0" @click="${a||e?i:o}" @keydown="${l}"></nr-icon></div>`}}
956
13
  /**
957
14
  * @license
958
15
  * Copyright 2023 Nuraly, Laabidi Aymen
959
16
  * SPDX-License-Identifier: MIT
960
- */const oi=t=>class extends t{get inputElement(){var t;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("#input, input, textarea");if(i)return i;const r=this.querySelector("input, textarea");if(!r)throw new Error("SelectionMixin requires an input or textarea element");return r}selectAll(){const t=this.inputElement;t&&t.select()}selectRange(t,i){const r=this.inputElement;r&&r.setSelectionRange&&(r.focus(),r.setSelectionRange(t,i))}getCursorPosition(){const t=this.inputElement;return t&&"number"==typeof t.selectionStart?t.selectionStart:null}setCursorPosition(t){const i=this.inputElement;i&&i.setSelectionRange&&(i.focus(),i.setSelectionRange(t,t))}getSelectedText(){const t=this.inputElement;return t&&null!==t.selectionStart&&null!==t.selectionEnd?t.value.substring(t.selectionStart,t.selectionEnd):""}},si=t=>class extends t{get inputElement(){var t;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("#input, input, textarea");if(i)return i;const r=this.querySelector("input, textarea");if(!r)throw new Error("FocusMixin requires an input or textarea element");return r}focus(t={}){const i=this.inputElement;i&&(i.focus({preventScroll:t.preventScroll}),t.selectText&&i.select())}blur(){const t=this.inputElement;t&&t.blur()}isFocused(){const t=this.inputElement;return!!t&&document.activeElement===t}},li=t=>class extends t{get inputElement(){var t;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("#input, input");if(i)return i;const r=this.querySelector("input");if(!r)throw new Error("NumberMixin requires an input element");return r}dispatchInputEvent(t,i){"_dispatchInputEvent"in this&&"function"==typeof this._dispatchInputEvent?this._dispatchInputEvent(t,i):this.dispatchEvent(new CustomEvent(t,{detail:i,bubbles:!0,composed:!0}))}increment(){try{const t=this.inputElement;if(!t.value){const i=t.getAttribute("min");t.value=i||"0"}t.stepUp();const i=t.value;this.dispatchInputEvent("nr-input",{value:i,target:t,action:"increment"}),"value"in this&&(this.value=i)}catch(t){console.warn("Failed to increment value:",t),this.dispatchInputEvent("nr-increment-error",{error:t,value:this.inputElement.value,target:this.inputElement})}}decrement(){try{const t=this.inputElement;t.stepDown();const i=t.value;this.dispatchInputEvent("nr-input",{value:i,target:t,action:"decrement"}),"value"in this&&(this.value=i)}catch(t){console.warn("Failed to decrement value:",t),this.dispatchInputEvent("nr-decrement-error",{error:t,value:this.inputElement.value,target:this.inputElement})}}setStep(t){const i=this.inputElement;t&&this.isValidStep(t)?i.setAttribute("step",t):i.removeAttribute("step")}isValidStep(t){if(!t)return!0;const i=parseFloat(t);return!isNaN(i)&&i>0}};
17
+ */const g=t=>class extends t{get inputElement(){var t;const r=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("#input, input, textarea");if(r)return r;const i=this.querySelector("input, textarea");if(!i)throw new Error("SelectionMixin requires an input or textarea element");return i}selectAll(){const t=this.inputElement;t&&t.select()}selectRange(t,r){const i=this.inputElement;i&&i.setSelectionRange&&(i.focus(),i.setSelectionRange(t,r))}getCursorPosition(){const t=this.inputElement;return t&&"number"==typeof t.selectionStart?t.selectionStart:null}setCursorPosition(t){const r=this.inputElement;r&&r.setSelectionRange&&(r.focus(),r.setSelectionRange(t,t))}getSelectedText(){const t=this.inputElement;return t&&null!==t.selectionStart&&null!==t.selectionEnd?t.value.substring(t.selectionStart,t.selectionEnd):""}},f=t=>class extends t{get inputElement(){var t;const r=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("#input, input, textarea");if(r)return r;const i=this.querySelector("input, textarea");if(!i)throw new Error("FocusMixin requires an input or textarea element");return i}focus(t={}){const r=this.inputElement;r&&(r.focus({preventScroll:t.preventScroll}),t.selectText&&r.select())}blur(){const t=this.inputElement;t&&t.blur()}isFocused(){const t=this.inputElement;return!!t&&document.activeElement===t}},w=t=>class extends t{get inputElement(){var t;const r=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("#input, input");if(r)return r;const i=this.querySelector("input");if(!i)throw new Error("NumberMixin requires an input element");return i}dispatchInputEvent(t,r){"_dispatchInputEvent"in this&&"function"==typeof this._dispatchInputEvent?this._dispatchInputEvent(t,r):this.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,composed:!0}))}increment(){try{const t=this.inputElement;if(!t.value){const r=t.getAttribute("min");t.value=r||"0"}t.stepUp();const r=t.value;this.dispatchInputEvent("nr-input",{value:r,target:t,action:"increment"}),"value"in this&&(this.value=r)}catch(t){console.warn("Failed to increment value:",t),this.dispatchInputEvent("nr-increment-error",{error:t,value:this.inputElement.value,target:this.inputElement})}}decrement(){try{const t=this.inputElement;t.stepDown();const r=t.value;this.dispatchInputEvent("nr-input",{value:r,target:t,action:"decrement"}),"value"in this&&(this.value=r)}catch(t){console.warn("Failed to decrement value:",t),this.dispatchInputEvent("nr-decrement-error",{error:t,value:this.inputElement.value,target:this.inputElement})}}setStep(t){const r=this.inputElement;t&&this.isValidStep(t)?r.setAttribute("step",t):r.removeAttribute("step")}isValidStep(t){if(!t)return!0;const r=parseFloat(t);return!isNaN(r)&&r>0}};
961
18
  /**
962
19
  * @license
963
20
  * Copyright 2023 Nuraly, Laabidi Aymen
@@ -968,79 +25,24 @@ class ni{static validateNumericProperties(t,i,r,e){"number"===t&&(i&&isNaN(Numbe
968
25
  * Copyright 2023 Nuraly, Laabidi Aymen
969
26
  * SPDX-License-Identifier: MIT
970
27
  */
971
- class di{constructor(t){this._host=t,this._host.addController(this)}get host(){return this._host}hostConnected(){}hostDisconnected(){}hostUpdate(){}hostUpdated(){}requestUpdate(){this._host.requestUpdate()}dispatchEvent(t){return this._host.dispatchEvent(t)}handleError(t,i){console.error(`[InputController:${i}]`,t),this.dispatchEvent(new CustomEvent("nr-controller-error",{detail:{error:t,context:i,controller:this.constructor.name},bubbles:!0,composed:!0}))}}
28
+ class x{constructor(t){this._host=t,this._host.addController(this)}get host(){return this._host}hostConnected(){}hostDisconnected(){}hostUpdate(){}hostUpdated(){}requestUpdate(){this._host.requestUpdate()}dispatchEvent(t){return this._host.dispatchEvent(t)}handleError(t,r){console.error(`[InputController:${r}]`,t),this.dispatchEvent(new CustomEvent("nr-controller-error",{detail:{error:t,context:r,controller:this.constructor.name},bubbles:!0,composed:!0}))}}
972
29
  /**
973
30
  * @license
974
31
  * Copyright 2023 Nuraly, Laabidi Aymen
975
32
  * SPDX-License-Identifier: MIT
976
- */var ui;!function(t){t.Pristine="pristine",t.Pending="pending",t.Valid="valid",t.Invalid="invalid",t.Warning="warning"}(ui||(ui={}));class hi extends di{constructor(){super(...arguments),this._validationState=ui.Pristine,this._isValidating=!1,this._isValid=!0,this._validationMessage="",this._validationResult={isValid:!0,errors:[],warnings:[],hasError:!1,hasWarning:!1},this._debounceTimer=null}get stateHost(){return this.host}get validationState(){return this._validationState}get isValidating(){return this._isValidating}get isValid(){return this._isValid}get validationMessage(){return this._validationMessage}get validationResult(){return this._validationResult}setValidationState(t){if(this._validationState!==t){const i=this._validationState;this._validationState=t,this.dispatchStateChangeEvent(i,t),this.requestUpdate()}}setValidationResult(t){this._validationResult=t,this._isValid=t.isValid,this._validationMessage=t.hasError?t.errorMessage||"":t.hasWarning&&t.warningMessage||"";let i=ui.Valid;t.hasError?i=ui.Invalid:t.hasWarning&&this.stateHost.allowWarnings&&(i=ui.Warning),this.setValidationState(i)}setValidating(t){this._isValidating!==t&&(this._isValidating=t,t&&this.setValidationState(ui.Pending),this.requestUpdate())}shouldValidateOnChange(){return this.stateHost.validateOnChangeInput&&("change"===this.stateHost.validationTrigger||this._validationState!==ui.Pristine)}shouldValidateOnBlur(){return this.stateHost.validateOnBlurInput&&("blur"===this.stateHost.validationTrigger||"change"===this.stateHost.validationTrigger)}clearDebounceTimer(){null!==this._debounceTimer&&(clearTimeout(this._debounceTimer),this._debounceTimer=null)}debounceValidation(t){this.clearDebounceTimer();const i=this.stateHost.validationDebounce;i&&i>0?this._debounceTimer=window.setTimeout((()=>{this._debounceTimer=null,t()}),i):t()}resetValidationState(){this.clearDebounceTimer(),this._validationState=ui.Pristine,this._isValidating=!1,this._isValid=!0,this._validationMessage="",this._validationResult={isValid:!0,errors:[],warnings:[],hasError:!1,hasWarning:!1},this.requestUpdate()}markAsTouched(){this._validationState===ui.Pristine&&this.setValidationState(ui.Valid)}isPristine(){return this._validationState===ui.Pristine}hasError(){return this._validationState===ui.Invalid}hasWarning(){return this._validationState===ui.Warning}isPending(){return this._validationState===ui.Pending}getStateSummary(){return{state:this._validationState,isValidating:this._isValidating,isValid:this._isValid,message:this._validationMessage,result:this._validationResult,isPristine:this.isPristine(),hasError:this.hasError(),hasWarning:this.hasWarning(),shouldValidateOnChange:this.shouldValidateOnChange(),shouldValidateOnBlur:this.shouldValidateOnBlur()}}hostDisconnected(){super.hostDisconnected(),this.clearDebounceTimer()}dispatchStateChangeEvent(t,i){this.dispatchEvent(new CustomEvent("nr-validation-state-change",{detail:{previousState:t,newState:i,isValidating:this._isValidating,isValid:this._isValid,validationResult:this._validationResult},bubbles:!0,composed:!0}))}}
33
+ */var k;!function(t){t.Pristine="pristine",t.Pending="pending",t.Valid="valid",t.Invalid="invalid",t.Warning="warning"}(k||(k={}));class $ extends x{constructor(){super(...arguments),this._validationState=k.Pristine,this._isValidating=!1,this._isValid=!0,this._validationMessage="",this._validationResult={isValid:!0,errors:[],warnings:[],hasError:!1,hasWarning:!1},this._debounceTimer=null}get stateHost(){return this.host}get validationState(){return this._validationState}get isValidating(){return this._isValidating}get isValid(){return this._isValid}get validationMessage(){return this._validationMessage}get validationResult(){return this._validationResult}setValidationState(t){if(this._validationState!==t){const r=this._validationState;this._validationState=t,this.dispatchStateChangeEvent(r,t),this.requestUpdate()}}setValidationResult(t){this._validationResult=t,this._isValid=t.isValid,this._validationMessage=t.hasError?t.errorMessage||"":t.hasWarning&&t.warningMessage||"";let r=k.Valid;t.hasError?r=k.Invalid:t.hasWarning&&this.stateHost.allowWarnings&&(r=k.Warning),this.setValidationState(r)}setValidating(t){this._isValidating!==t&&(this._isValidating=t,t&&this.setValidationState(k.Pending),this.requestUpdate())}shouldValidateOnChange(){return this.stateHost.validateOnChangeInput&&("change"===this.stateHost.validationTrigger||this._validationState!==k.Pristine)}shouldValidateOnBlur(){return this.stateHost.validateOnBlurInput&&("blur"===this.stateHost.validationTrigger||"change"===this.stateHost.validationTrigger)}clearDebounceTimer(){null!==this._debounceTimer&&(clearTimeout(this._debounceTimer),this._debounceTimer=null)}debounceValidation(t){this.clearDebounceTimer();const r=this.stateHost.validationDebounce;r&&r>0?this._debounceTimer=window.setTimeout((()=>{this._debounceTimer=null,t()}),r):t()}resetValidationState(){this.clearDebounceTimer(),this._validationState=k.Pristine,this._isValidating=!1,this._isValid=!0,this._validationMessage="",this._validationResult={isValid:!0,errors:[],warnings:[],hasError:!1,hasWarning:!1},this.requestUpdate()}markAsTouched(){this._validationState===k.Pristine&&this.setValidationState(k.Valid)}isPristine(){return this._validationState===k.Pristine}hasError(){return this._validationState===k.Invalid}hasWarning(){return this._validationState===k.Warning}isPending(){return this._validationState===k.Pending}getStateSummary(){return{state:this._validationState,isValidating:this._isValidating,isValid:this._isValid,message:this._validationMessage,result:this._validationResult,isPristine:this.isPristine(),hasError:this.hasError(),hasWarning:this.hasWarning(),shouldValidateOnChange:this.shouldValidateOnChange(),shouldValidateOnBlur:this.shouldValidateOnBlur()}}hostDisconnected(){super.hostDisconnected(),this.clearDebounceTimer()}dispatchStateChangeEvent(t,r){this.dispatchEvent(new CustomEvent("nr-validation-state-change",{detail:{previousState:t,newState:r,isValidating:this._isValidating,isValid:this._isValid,validationResult:this._validationResult},bubbles:!0,composed:!0}))}}
977
34
  /**
978
35
  * @license
979
36
  * Copyright 2023 Nuraly, Laabidi Aymen
980
37
  * SPDX-License-Identifier: MIT
981
- */var ci=function(t,i,r,e){return new(r||(r=Promise))((function(n,a){function o(t){try{l(e.next(t))}catch(t){a(t)}}function s(t){try{l(e.throw(t))}catch(t){a(t)}}function l(t){var i;t.done?n(t.value):(i=t.value,i instanceof r?i:new r((function(t){t(i)}))).then(o,s)}l((e=e.apply(t,i||[])).next())}))};class pi extends di{constructor(t){super(t),this.stateController=new hi(this._host)}get validationHost(){return this._host}get isValid(){return this.stateController.isValid}get validationMessage(){return this.stateController.validationMessage}get validationState(){return this.stateController.validationState}get validationResult(){return this.stateController.validationResult}get isValidating(){return this.stateController.isValidating}hostConnected(){this.setupValidationRules()}hostUpdated(){}setupValidationRules(){const t=[],i=this.validationHost;"email"===i.type&&t.push(Yt()),"url"===i.type&&t.push(Gt()),i.required&&t.push(Kt(i.label?`${i.label} is required`:void 0)),i.maxLength&&t.push(Jt(i.maxLength)),"number"===i.type&&(void 0!==i.min&&t.push(Xt(Number(i.min))),void 0!==i.max&&t.push(Qt(Number(i.max))));const r=i.rules||[],e=[...t.filter((t=>!r.some((i=>this.isSameRuleType(t,i))))),...r];JSON.stringify(i.rules)!==JSON.stringify(e)&&(i.rules=e,this.requestUpdate())}validate(){try{this.stateController.setValidationState(ui.Pending),this.stateController.setValidating(!0),this.dispatchValidationEvent();if(this.hasAsyncValidators())return this.performAsyncValidation(this.validationHost.value),!0;const t=this.performDetailedValidation(this.validationHost.value);return this.stateController.setValidationResult(t),t.hasError?this.setValidationResult(!1,this.stateController.validationMessage,ui.Invalid):t.hasWarning&&this.validationHost.allowWarnings?this.setValidationResult(!0,this.stateController.validationMessage,ui.Warning):this.setValidationResult(!0,"",ui.Valid),this.stateController.setValidating(!1),this.updateHostValidationState(),t.isValid}catch(t){return this.handleError(t,"validate"),this.stateController.setValidating(!1),this.setValidationResult(!1,"Validation error occurred",ui.Invalid),this.updateHostValidationState(),!1}}validateOnChange(){this.stateController.shouldValidateOnChange()&&this.stateController.debounceValidation((()=>{this.validate()}))}validateOnBlur(){this.stateController.shouldValidateOnBlur()&&(this.stateController.clearDebounceTimer(),this.validate())}addRule(t){const i=this.validationHost.rules||[];this.validationHost.rules=[...i,t],this.requestUpdate()}removeRule(t){const i=this.validationHost.rules||[];this.validationHost.rules=i.filter((i=>!t(i))),this.requestUpdate()}clearRules(){this.validationHost.rules=[],this.reset()}hasAsyncValidators(){return(this.validationHost.rules||[]).some((t=>t.asyncValidator||t.validator&&this.isValidatorAsync(t.validator)))}isValidatorAsync(t){const i=t.toString();return i.includes("Promise")||i.includes("async")||i.includes("setTimeout")||i.includes("new Promise")}performAsyncValidation(t){return ci(this,void 0,void 0,(function*(){try{this.stateController.setValidating(!0),this.updateHostValidationState();const i=[],r=[],e=this.validationHost.rules||[];for(const n of e)if(!(n.asyncValidator||n.validator&&this.isValidatorAsync(n.validator))){const e=this.validateRule(n,t);e.isValid||(n.warningOnly&&this.validationHost.allowWarnings?r.push(e.message):i.push(e.message))}if(i.length>0)return this.stateController.setValidationResult({isValid:!1,errors:i,warnings:r,hasError:!0,hasWarning:r.length>0,errorMessage:i[0],warningMessage:r[0]}),this.setValidationResult(!1,this.stateController.validationMessage,ui.Invalid),this.stateController.setValidating(!1),void this.updateHostValidationState();for(const n of e)if(n.asyncValidator||n.validator&&this.isValidatorAsync(n.validator))try{yield this.validateAsyncRule(n,t)}catch(t){const e=t.message||n.message||"Validation failed";n.warningOnly&&this.validationHost.allowWarnings?r.push(e):i.push(e)}const n=i.length>0,a=r.length>0;this.stateController.setValidationResult({isValid:!n,errors:i,warnings:r,hasError:n,hasWarning:a,errorMessage:i[0],warningMessage:r[0]}),n?this.setValidationResult(!1,this.stateController.validationMessage,ui.Invalid):a&&this.validationHost.allowWarnings?this.setValidationResult(!0,this.stateController.validationMessage,ui.Warning):this.setValidationResult(!0,"",ui.Valid),this.stateController.setValidating(!1),this.updateHostValidationState()}catch(t){this.handleError(t,"performAsyncValidation"),this.stateController.setValidating(!1),this.setValidationResult(!1,"Async validation error occurred",ui.Invalid),this.updateHostValidationState()}}))}validateAsyncRule(t,i){return ci(this,void 0,void 0,(function*(){if(t.asyncValidator)yield t.asyncValidator(t,i);else if(t.validator){const r=t.validator(t,i);r&&"object"==typeof r&&"then"in r&&(yield r)}}))}reset(){this.stateController.setValidationResult({isValid:!0,errors:[],warnings:[],hasError:!1,hasWarning:!1}),this.stateController.setValidationState(ui.Pristine),this.stateController.setValidating(!1),this.updateHostValidationState(),this.dispatchValidationEvent()}getValidationStatus(){return{isValid:this.stateController.validationResult.isValid,isValidating:this.stateController.isValidating,errors:this.stateController.validationResult.errors,warnings:this.stateController.validationResult.warnings,validationResult:this.stateController.validationResult}}setValidationStatus(t){this.stateController.setValidationResult(t),t.hasError?this.setValidationResult(!1,this.stateController.validationMessage,ui.Invalid):t.hasWarning?this.setValidationResult(!0,this.stateController.validationMessage,ui.Warning):t.isValid?this.setValidationResult(!0,"",ui.Valid):this.setValidationResult(!0,"",ui.Pristine),this.updateHostValidationState()}performDetailedValidation(t){const i=[],r=[],e=this.validationHost.rules||[];for(const n of e){const e=this.validateRule(n,t);e.isValid||(n.warningOnly&&this.validationHost.allowWarnings?r.push(e.message):i.push(e.message))}const n=i.length>0;return{isValid:!n,errors:i,warnings:r,hasError:n,hasWarning:r.length>0,errorMessage:i[0],warningMessage:r[0]}}validateRule(t,i){if(t.asyncValidator||t.validator&&this.isValidatorAsync(t.validator))return{isValid:!0,message:""};const r=t.transform?t.transform(i):i;if(t.required&&this.isValueEmpty(i))return{isValid:!1,message:t.message||`${this.validationHost.label||"This field"} is required`};if(this.isValueEmpty(i)&&!t.required)return{isValid:!0,message:""};if(t.type){const i=this.validateType(t.type,r);if(!i.isValid)return{isValid:!1,message:t.message||i.message}}if(t.pattern&&!t.pattern.test(r))return{isValid:!1,message:t.message||"Invalid format"};if(void 0!==t.minLength&&r.length<t.minLength)return{isValid:!1,message:t.message||`Minimum length is ${t.minLength} characters`};if(void 0!==t.maxLength&&r.length>t.maxLength)return{isValid:!1,message:t.message||`Maximum length is ${t.maxLength} characters`};if("number"===t.type||"number"===this.validationHost.type){const i=Number(r);if(void 0!==t.min&&i<t.min)return{isValid:!1,message:t.message||`Minimum value is ${t.min}`};if(void 0!==t.max&&i>t.max)return{isValid:!1,message:t.message||`Maximum value is ${t.max}`}}if(t.enum&&!t.enum.includes(r))return{isValid:!1,message:t.message||`Value must be one of: ${t.enum.join(", ")}`};if(t.validator)try{const i=t.validator(t,r);return i&&"object"==typeof i&&"isValid"in i?{isValid:i.isValid,message:i.isValid?"":i.message||t.message||"Validation failed"}:{isValid:!0,message:""}}catch(i){return{isValid:!1,message:t.message||i.message||"Validation failed"}}return{isValid:!0,message:""}}validateType(t,i){switch(t){case"email":return{isValid:Zt.EMAIL.test(i),message:"Please enter a valid email address"};case"url":return{isValid:Zt.URL.test(i),message:"Please enter a valid URL"};case"number":case"integer":return{isValid:!isNaN(Number(i))&&("number"===t||Number.isInteger(Number(i))),message:`Please enter a valid ${t}`};case"float":return{isValid:!isNaN(parseFloat(i)),message:"Please enter a valid number"};default:return{isValid:!0,message:""}}}isValueEmpty(t){return null==t||""===t}isSameRuleType(t,i){return t.type===i.type&&t.required===i.required&&!!t.pattern==!!i.pattern}setValidationResult(t,i,r){const e=this.stateController.isValid!==t||this.stateController.validationMessage!==i||this.stateController.validationState!==r;this.stateController.setValidationState(r),this.stateController.setValidationResult({isValid:t,errors:t?[]:[i],warnings:[],hasError:!t,hasWarning:!1,errorMessage:t?"":i,warningMessage:""}),e&&this.dispatchValidationEvent()}updateHostValidationState(){this.dispatchValidationEvent()}dispatchValidationEvent(){const t={isValid:this.stateController.isValid,validationMessage:this.stateController.validationMessage,validationState:this.stateController.validationState,errors:this.stateController.validationResult.errors,warnings:this.stateController.validationResult.warnings,validationResult:this.stateController.validationResult};this.dispatchEvent(new CustomEvent("nr-validation",{detail:t,bubbles:!0,composed:!0}))}getValidationClasses(){const t=this.host,i=this.host;return{valid:this.stateController.validationResult.isValid&&!this.stateController.validationResult.hasWarning,invalid:this.stateController.validationResult.hasError,warning:this.stateController.validationResult.hasWarning&&!this.stateController.validationResult.hasError,validating:this.stateController.isValidating,"has-feedback":i.hasFeedback||!1,touched:t.isTouched||!1,dirty:t.isDirty||!1,required:this.host.required||!1}}hasValidationFeedback(){const t=this.host;return!!t.hasFeedback&&(this.stateController.isValidating||this.stateController.validationResult.hasError||this.stateController.validationResult.hasWarning||this.stateController.validationResult.isValid&&t.value&&""!==t.value.trim()&&this.stateController.validationState!==ui.Pristine)}renderValidationIcon(){const t=this.host;if(!t.hasFeedback)return"";let i="",r="";return this.stateController.isValidating?(i="hourglass-half",r="validation-loading"):this.stateController.validationResult.hasError?(i="exclamation-circle",r="validation-error"):this.stateController.validationResult.hasWarning?(i="exclamation-triangle",r="validation-warning"):this.stateController.validationResult.isValid&&t.value&&""!==t.value.trim()&&this.stateController.validationState!==ui.Pristine&&(i="check-circle",r="validation-success"),i?bt`
982
- <nr-icon
983
- name="${i}"
984
- class="validation-icon ${r}"
985
- part="validation-icon">
986
- </nr-icon>
987
- `:""}renderValidationMessage(){const t=this.stateController.validationResult.hasError,i=this.stateController.validationResult.hasWarning&&!t,r=t?this.stateController.validationResult.errorMessage:i?this.stateController.validationResult.warningMessage:"";return r?bt`
988
- <div class="validation-message ${t?"error":"warning"}"
989
- part="validation-message"
990
- role="alert"
991
- aria-live="polite">
992
- ${r}
993
- </div>
994
- `:""}clearDebounceTimer(){this.stateController.clearDebounceTimer()}getValidationRenderState(){return{classes:this.getValidationClasses(),hasValidationFeedback:this.hasValidationFeedback(),isValidating:this.stateController.isValidating,validationResult:this.stateController.validationResult,validationState:this.stateController.validationState}}}
38
+ */var V=function(t,r,i,n){return new(i||(i=Promise))((function(a,e){function o(t){try{l(n.next(t))}catch(t){e(t)}}function s(t){try{l(n.throw(t))}catch(t){e(t)}}function l(t){var r;t.done?a(t.value):(r=t.value,r instanceof i?r:new i((function(t){t(r)}))).then(o,s)}l((n=n.apply(t,r||[])).next())}))};class z extends x{constructor(t){super(t),this.stateController=new $(this._host)}get validationHost(){return this._host}get isValid(){return this.stateController.isValid}get validationMessage(){return this.stateController.validationMessage}get validationState(){return this.stateController.validationState}get validationResult(){return this.stateController.validationResult}get isValidating(){return this.stateController.isValidating}hostConnected(){this.setupValidationRules()}hostUpdated(){}setupValidationRules(){const t=[],r=this.validationHost;"email"===r.type&&t.push(c()),"url"===r.type&&t.push(h()),r.required&&t.push(d(r.label?`${r.label} is required`:void 0)),r.maxLength&&t.push(p(r.maxLength)),"number"===r.type&&(void 0!==r.min&&t.push(v(Number(r.min))),void 0!==r.max&&t.push(b(Number(r.max))));const i=r.rules||[],n=[...t.filter((t=>!i.some((r=>this.isSameRuleType(t,r))))),...i];JSON.stringify(r.rules)!==JSON.stringify(n)&&(r.rules=n,this.requestUpdate())}validate(){try{this.stateController.setValidationState(k.Pending),this.stateController.setValidating(!0),this.dispatchValidationEvent();if(this.hasAsyncValidators())return this.performAsyncValidation(this.validationHost.value),!0;const t=this.performDetailedValidation(this.validationHost.value);return this.stateController.setValidationResult(t),t.hasError?this.setValidationResult(!1,this.stateController.validationMessage,k.Invalid):t.hasWarning&&this.validationHost.allowWarnings?this.setValidationResult(!0,this.stateController.validationMessage,k.Warning):this.setValidationResult(!0,"",k.Valid),this.stateController.setValidating(!1),this.updateHostValidationState(),t.isValid}catch(t){return this.handleError(t,"validate"),this.stateController.setValidating(!1),this.setValidationResult(!1,"Validation error occurred",k.Invalid),this.updateHostValidationState(),!1}}validateOnChange(){this.stateController.shouldValidateOnChange()&&this.stateController.debounceValidation((()=>{this.validate()}))}validateOnBlur(){this.stateController.shouldValidateOnBlur()&&(this.stateController.clearDebounceTimer(),this.validate())}addRule(t){const r=this.validationHost.rules||[];this.validationHost.rules=[...r,t],this.requestUpdate()}removeRule(t){const r=this.validationHost.rules||[];this.validationHost.rules=r.filter((r=>!t(r))),this.requestUpdate()}clearRules(){this.validationHost.rules=[],this.reset()}hasAsyncValidators(){return(this.validationHost.rules||[]).some((t=>t.asyncValidator||t.validator&&this.isValidatorAsync(t.validator)))}isValidatorAsync(t){const r=t.toString();return r.includes("Promise")||r.includes("async")||r.includes("setTimeout")||r.includes("new Promise")}performAsyncValidation(t){return V(this,void 0,void 0,(function*(){try{this.stateController.setValidating(!0),this.updateHostValidationState();const r=[],i=[],n=this.validationHost.rules||[];for(const a of n)if(!(a.asyncValidator||a.validator&&this.isValidatorAsync(a.validator))){const n=this.validateRule(a,t);n.isValid||(a.warningOnly&&this.validationHost.allowWarnings?i.push(n.message):r.push(n.message))}if(r.length>0)return this.stateController.setValidationResult({isValid:!1,errors:r,warnings:i,hasError:!0,hasWarning:i.length>0,errorMessage:r[0],warningMessage:i[0]}),this.setValidationResult(!1,this.stateController.validationMessage,k.Invalid),this.stateController.setValidating(!1),void this.updateHostValidationState();for(const a of n)if(a.asyncValidator||a.validator&&this.isValidatorAsync(a.validator))try{yield this.validateAsyncRule(a,t)}catch(t){const n=t.message||a.message||"Validation failed";a.warningOnly&&this.validationHost.allowWarnings?i.push(n):r.push(n)}const a=r.length>0,e=i.length>0;this.stateController.setValidationResult({isValid:!a,errors:r,warnings:i,hasError:a,hasWarning:e,errorMessage:r[0],warningMessage:i[0]}),a?this.setValidationResult(!1,this.stateController.validationMessage,k.Invalid):e&&this.validationHost.allowWarnings?this.setValidationResult(!0,this.stateController.validationMessage,k.Warning):this.setValidationResult(!0,"",k.Valid),this.stateController.setValidating(!1),this.updateHostValidationState()}catch(t){this.handleError(t,"performAsyncValidation"),this.stateController.setValidating(!1),this.setValidationResult(!1,"Async validation error occurred",k.Invalid),this.updateHostValidationState()}}))}validateAsyncRule(t,r){return V(this,void 0,void 0,(function*(){if(t.asyncValidator)yield t.asyncValidator(t,r);else if(t.validator){const i=t.validator(t,r);i&&"object"==typeof i&&"then"in i&&(yield i)}}))}reset(){this.stateController.setValidationResult({isValid:!0,errors:[],warnings:[],hasError:!1,hasWarning:!1}),this.stateController.setValidationState(k.Pristine),this.stateController.setValidating(!1),this.updateHostValidationState(),this.dispatchValidationEvent()}getValidationStatus(){return{isValid:this.stateController.validationResult.isValid,isValidating:this.stateController.isValidating,errors:this.stateController.validationResult.errors,warnings:this.stateController.validationResult.warnings,validationResult:this.stateController.validationResult}}setValidationStatus(t){this.stateController.setValidationResult(t),t.hasError?this.setValidationResult(!1,this.stateController.validationMessage,k.Invalid):t.hasWarning?this.setValidationResult(!0,this.stateController.validationMessage,k.Warning):t.isValid?this.setValidationResult(!0,"",k.Valid):this.setValidationResult(!0,"",k.Pristine),this.updateHostValidationState()}performDetailedValidation(t){const r=[],i=[],n=this.validationHost.rules||[];for(const a of n){const n=this.validateRule(a,t);n.isValid||(a.warningOnly&&this.validationHost.allowWarnings?i.push(n.message):r.push(n.message))}const a=r.length>0;return{isValid:!a,errors:r,warnings:i,hasError:a,hasWarning:i.length>0,errorMessage:r[0],warningMessage:i[0]}}validateRule(t,r){if(t.asyncValidator||t.validator&&this.isValidatorAsync(t.validator))return{isValid:!0,message:""};const i=t.transform?t.transform(r):r;if(t.required&&this.isValueEmpty(r))return{isValid:!1,message:t.message||`${this.validationHost.label||"This field"} is required`};if(this.isValueEmpty(r)&&!t.required)return{isValid:!0,message:""};if(t.type){const r=this.validateType(t.type,i);if(!r.isValid)return{isValid:!1,message:t.message||r.message}}if(t.pattern&&!t.pattern.test(i))return{isValid:!1,message:t.message||"Invalid format"};if(void 0!==t.minLength&&i.length<t.minLength)return{isValid:!1,message:t.message||`Minimum length is ${t.minLength} characters`};if(void 0!==t.maxLength&&i.length>t.maxLength)return{isValid:!1,message:t.message||`Maximum length is ${t.maxLength} characters`};if("number"===t.type||"number"===this.validationHost.type){const r=Number(i);if(void 0!==t.min&&r<t.min)return{isValid:!1,message:t.message||`Minimum value is ${t.min}`};if(void 0!==t.max&&r>t.max)return{isValid:!1,message:t.message||`Maximum value is ${t.max}`}}if(t.enum&&!t.enum.includes(i))return{isValid:!1,message:t.message||`Value must be one of: ${t.enum.join(", ")}`};if(t.validator)try{const r=t.validator(t,i);return r&&"object"==typeof r&&"isValid"in r?{isValid:r.isValid,message:r.isValid?"":r.message||t.message||"Validation failed"}:{isValid:!0,message:""}}catch(r){return{isValid:!1,message:t.message||r.message||"Validation failed"}}return{isValid:!0,message:""}}validateType(t,r){switch(t){case"email":return{isValid:u.EMAIL.test(r),message:"Please enter a valid email address"};case"url":return{isValid:u.URL.test(r),message:"Please enter a valid URL"};case"number":case"integer":return{isValid:!isNaN(Number(r))&&("number"===t||Number.isInteger(Number(r))),message:`Please enter a valid ${t}`};case"float":return{isValid:!isNaN(parseFloat(r)),message:"Please enter a valid number"};default:return{isValid:!0,message:""}}}isValueEmpty(t){return null==t||""===t}isSameRuleType(t,r){return t.type===r.type&&t.required===r.required&&!!t.pattern==!!r.pattern}setValidationResult(t,r,i){const n=this.stateController.isValid!==t||this.stateController.validationMessage!==r||this.stateController.validationState!==i;this.stateController.setValidationState(i),this.stateController.setValidationResult({isValid:t,errors:t?[]:[r],warnings:[],hasError:!t,hasWarning:!1,errorMessage:t?"":r,warningMessage:""}),n&&this.dispatchValidationEvent()}updateHostValidationState(){this.dispatchValidationEvent()}dispatchValidationEvent(){const t={isValid:this.stateController.isValid,validationMessage:this.stateController.validationMessage,validationState:this.stateController.validationState,errors:this.stateController.validationResult.errors,warnings:this.stateController.validationResult.warnings,validationResult:this.stateController.validationResult};this.dispatchEvent(new CustomEvent("nr-validation",{detail:t,bubbles:!0,composed:!0}))}getValidationClasses(){const t=this.host,r=this.host;return{valid:this.stateController.validationResult.isValid&&!this.stateController.validationResult.hasWarning,invalid:this.stateController.validationResult.hasError,warning:this.stateController.validationResult.hasWarning&&!this.stateController.validationResult.hasError,validating:this.stateController.isValidating,"has-feedback":r.hasFeedback||!1,touched:t.isTouched||!1,dirty:t.isDirty||!1,required:this.host.required||!1}}hasValidationFeedback(){const t=this.host;return!!t.hasFeedback&&(this.stateController.isValidating||this.stateController.validationResult.hasError||this.stateController.validationResult.hasWarning||this.stateController.validationResult.isValid&&t.value&&""!==t.value.trim()&&this.stateController.validationState!==k.Pristine)}renderValidationIcon(){const t=this.host;if(!t.hasFeedback)return"";let i="",n="";return this.stateController.isValidating?(i="hourglass-half",n="validation-loading"):this.stateController.validationResult.hasError?(i="exclamation-circle",n="validation-error"):this.stateController.validationResult.hasWarning?(i="exclamation-triangle",n="validation-warning"):this.stateController.validationResult.isValid&&t.value&&""!==t.value.trim()&&this.stateController.validationState!==k.Pristine&&(i="check-circle",n="validation-success"),i?r`<nr-icon name="${i}" class="validation-icon ${n}" part="validation-icon"></nr-icon>`:""}renderValidationMessage(){const t=this.stateController.validationResult.hasError,i=this.stateController.validationResult.hasWarning&&!t,n=t?this.stateController.validationResult.errorMessage:i?this.stateController.validationResult.warningMessage:"";return n?r`<div class="validation-message ${t?"error":"warning"}" part="validation-message" role="alert" aria-live="polite">${n}</div>`:""}clearDebounceTimer(){this.stateController.clearDebounceTimer()}getValidationRenderState(){return{classes:this.getValidationClasses(),hasValidationFeedback:this.hasValidationFeedback(),isValidating:this.stateController.isValidating,validationResult:this.stateController.validationResult,validationState:this.stateController.validationState}}}
995
39
  /**
996
40
  * @license
997
41
  * Copyright 2023 Nuraly, Laabidi Aymen
998
42
  * SPDX-License-Identifier: MIT
999
- */var vi=function(t,i,r,e){return new(r||(r=Promise))((function(n,a){function o(t){try{l(e.next(t))}catch(t){a(t)}}function s(t){try{l(e.throw(t))}catch(t){a(t)}}function l(t){var i;t.done?n(t.value):(i=t.value,i instanceof r?i:new r((function(t){t(i)}))).then(o,s)}l((e=e.apply(t,i||[])).next())}))};class fi extends di{constructor(){super(...arguments),this.handleKeyDown=t=>{!this.eventHost.readonly||this.isReadonlyKeyAllowed(t)?"Enter"!==t.key?"number"===this.eventHost.type&&this.handleNumericKeyDown(t):this.dispatchEnterEvent(t):t.preventDefault()},this.handleValueChange=t=>{if(this.eventHost.readonly)return void t.preventDefault();const i=t.target,r=i.value;if(this.eventHost.maxLength&&r.length>this.eventHost.maxLength)return void t.preventDefault();"number"===this.eventHost.type&&r&&this.validateNumericValue(r,t),this.eventHost.value=r;const e=this.eventHost;e.validationController&&"function"==typeof e.validationController.validateOnChange&&e.validationController.validateOnChange(),this.eventHost.dispatchInputEvent("nr-input",{value:this.eventHost.value,target:i,originalEvent:t})},this.handleFocus=t=>{var i;this.setFocusState(!0);const r=t.target;this.restoreCursorPosition(r);const e={focused:!0,cursorPosition:null!==(i=this.getCursorPosition())&&void 0!==i?i:void 0,selectedText:this.getSelectedText()};this.eventHost.dispatchFocusEvent("nr-focus",Object.assign({target:t.target,value:this.eventHost.value},e)),this.eventHost.dispatchFocusEvent("nr-focus-change",e)},this.handleBlur=t=>{var i;this.setFocusState(!1);const r={focused:!1,cursorPosition:null!==(i=this.getCursorPosition())&&void 0!==i?i:void 0,selectedText:this.getSelectedText()},e=this.eventHost;e.validationController&&"function"==typeof e.validationController.validateOnBlur&&e.validationController.validateOnBlur(),this.eventHost.dispatchFocusEvent("nr-blur",Object.assign({target:t.target,value:this.eventHost.value},r)),this.eventHost.dispatchFocusEvent("nr-focus-change",r)},this.handleIconKeydown=t=>{if(!this.isActivationKey(t))return;t.preventDefault();const i=t.target;switch(i.id){case"copy-icon":this.handleCopy();break;case"clear-icon":this.handleClear();break;case"password-icon":this.handleTogglePassword();break;default:i.closest("#number-icons")&&this.handleNumberIconAction(i)}},this.handleCopy=()=>vi(this,void 0,void 0,(function*(){if(this.eventHost.withCopy&&!this.eventHost.disabled)try{const t=this.inputElement;if(!t)return;t.select(),yield navigator.clipboard.writeText(t.value),this.eventHost.dispatchActionEvent("nr-copy-success",{value:t.value,action:"copy"})}catch(t){this.handleError(t,"copy"),this.eventHost.dispatchActionEvent("nr-copy-error",{error:t,action:"copy"})}})),this.handleClear=()=>{if(this.eventHost.disabled||this.eventHost.readonly||!this.eventHost.allowClear)return;const t=this.eventHost.value;this.eventHost.value="";const i=this.inputElement;i&&(i.value="",i.focus()),this.eventHost.dispatchActionEvent("nr-clear",{previousValue:t,newValue:this.eventHost.value,target:i,action:"clear"}),this.eventHost.dispatchInputEvent("nr-input",{value:this.eventHost.value,target:i,action:"clear"})},this.handleTogglePassword=()=>{if("password"!==this.eventHost.type)return;const t="password"===this.eventHost.inputType?"text":"password";this.eventHost.inputType=t,this.requestUpdate(),this.eventHost.dispatchActionEvent("nr-password-toggle",{visible:"text"===t,action:"password-toggle"})},this.handleIncrement=()=>{"number"===this.eventHost.type&&this.eventHost.increment&&this.eventHost.increment()},this.handleDecrement=()=>{"number"===this.eventHost.type&&this.eventHost.decrement&&this.eventHost.decrement()}}get eventHost(){return this.host}get inputElement(){var t;return(null===(t=this.eventHost.shadowRoot)||void 0===t?void 0:t.querySelector("#input"))||null}handleNumericKeyDown(t){["Backspace","Delete","Tab","Escape","Enter","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End"].includes(t.key)||t.ctrlKey||t.metaKey||"."!==t.key&&"-"!==t.key&&(/^\d$/.test(t.key)||t.preventDefault())}handleNumberIconAction(t){const i=t.classList.contains("increment")||t.closest(".increment"),r=t.classList.contains("decrement")||t.closest(".decrement");i?this.handleIncrement():r&&this.handleDecrement()}dispatchEnterEvent(t){this.eventHost.dispatchInputEvent("nr-enter",{value:this.eventHost.value,target:t.target,originalEvent:t})}validateNumericValue(t,i){}restoreCursorPosition(t){if(t.dataset.restoreCursor){const i=parseInt(t.dataset.restoreCursor,10);isNaN(i)||t.setSelectionRange(i,i),delete t.dataset.restoreCursor}}setFocusState(t){this.eventHost.hasOwnProperty("focused")&&(this.eventHost.focused=t,this.requestUpdate())}getCursorPosition(){if(this.eventHost.getCursorPosition)return this.eventHost.getCursorPosition();const t=this.inputElement;return t?t.selectionStart:null}getSelectedText(){if(this.eventHost.getSelectedText)return this.eventHost.getSelectedText();const t=this.inputElement;return t&&null!==t.selectionStart&&null!==t.selectionEnd?t.value.substring(t.selectionStart,t.selectionEnd):""}isReadonlyKeyAllowed(t){if(this.eventHost.isReadonlyKeyAllowed)return this.eventHost.isReadonlyKeyAllowed(t);return t.ctrlKey||t.metaKey?["KeyA","KeyC"].includes(t.code):["Tab","Escape","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"].includes(t.key)}isActivationKey(t){return this.eventHost.isActivationKey?this.eventHost.isActivationKey(t):"Enter"===t.key||" "===t.key}}
43
+ */var S=function(t,r,i,n){return new(i||(i=Promise))((function(a,e){function o(t){try{l(n.next(t))}catch(t){e(t)}}function s(t){try{l(n.throw(t))}catch(t){e(t)}}function l(t){var r;t.done?a(t.value):(r=t.value,r instanceof i?r:new i((function(t){t(r)}))).then(o,s)}l((n=n.apply(t,r||[])).next())}))};class A extends x{constructor(){super(...arguments),this.handleKeyDown=t=>{!this.eventHost.readonly||this.isReadonlyKeyAllowed(t)?"Enter"!==t.key?"number"===this.eventHost.type&&this.handleNumericKeyDown(t):this.dispatchEnterEvent(t):t.preventDefault()},this.handleValueChange=t=>{if(this.eventHost.readonly)return void t.preventDefault();const r=t.target,i=r.value;if(this.eventHost.maxLength&&i.length>this.eventHost.maxLength)return void t.preventDefault();"number"===this.eventHost.type&&i&&this.validateNumericValue(i,t),this.eventHost.value=i;const n=this.eventHost;n.validationController&&"function"==typeof n.validationController.validateOnChange&&n.validationController.validateOnChange(),this.eventHost.dispatchInputEvent("nr-input",{value:this.eventHost.value,target:r,originalEvent:t})},this.handleFocus=t=>{var r;this.setFocusState(!0);const i=t.target;this.restoreCursorPosition(i);const n={focused:!0,cursorPosition:null!==(r=this.getCursorPosition())&&void 0!==r?r:void 0,selectedText:this.getSelectedText()};this.eventHost.dispatchFocusEvent("nr-focus",Object.assign({target:t.target,value:this.eventHost.value},n)),this.eventHost.dispatchFocusEvent("nr-focus-change",n)},this.handleBlur=t=>{var r;this.setFocusState(!1);const i={focused:!1,cursorPosition:null!==(r=this.getCursorPosition())&&void 0!==r?r:void 0,selectedText:this.getSelectedText()},n=this.eventHost;n.validationController&&"function"==typeof n.validationController.validateOnBlur&&n.validationController.validateOnBlur(),this.eventHost.dispatchFocusEvent("nr-blur",Object.assign({target:t.target,value:this.eventHost.value},i)),this.eventHost.dispatchFocusEvent("nr-focus-change",i)},this.handleIconKeydown=t=>{if(!this.isActivationKey(t))return;t.preventDefault();const r=t.target;switch(r.id){case"copy-icon":this.handleCopy();break;case"clear-icon":this.handleClear();break;case"password-icon":this.handleTogglePassword();break;default:r.closest("#number-icons")&&this.handleNumberIconAction(r)}},this.handleCopy=()=>S(this,void 0,void 0,(function*(){if(this.eventHost.withCopy&&!this.eventHost.disabled)try{const t=this.inputElement;if(!t)return;t.select(),yield navigator.clipboard.writeText(t.value),this.eventHost.dispatchActionEvent("nr-copy-success",{value:t.value,action:"copy"})}catch(t){this.handleError(t,"copy"),this.eventHost.dispatchActionEvent("nr-copy-error",{error:t,action:"copy"})}})),this.handleClear=()=>{if(this.eventHost.disabled||this.eventHost.readonly||!this.eventHost.allowClear)return;const t=this.eventHost.value;this.eventHost.value="";const r=this.inputElement;r&&(r.value="",r.focus()),this.eventHost.dispatchActionEvent("nr-clear",{previousValue:t,newValue:this.eventHost.value,target:r,action:"clear"}),this.eventHost.dispatchInputEvent("nr-input",{value:this.eventHost.value,target:r,action:"clear"})},this.handleTogglePassword=()=>{if("password"!==this.eventHost.type)return;const t="password"===this.eventHost.inputType?"text":"password";this.eventHost.inputType=t,this.requestUpdate(),this.eventHost.dispatchActionEvent("nr-password-toggle",{visible:"text"===t,action:"password-toggle"})},this.handleIncrement=()=>{"number"===this.eventHost.type&&this.eventHost.increment&&this.eventHost.increment()},this.handleDecrement=()=>{"number"===this.eventHost.type&&this.eventHost.decrement&&this.eventHost.decrement()}}get eventHost(){return this.host}get inputElement(){var t;return(null===(t=this.eventHost.shadowRoot)||void 0===t?void 0:t.querySelector("#input"))||null}handleNumericKeyDown(t){["Backspace","Delete","Tab","Escape","Enter","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End"].includes(t.key)||t.ctrlKey||t.metaKey||"."!==t.key&&"-"!==t.key&&(/^\d$/.test(t.key)||t.preventDefault())}handleNumberIconAction(t){const r=t.classList.contains("increment")||t.closest(".increment"),i=t.classList.contains("decrement")||t.closest(".decrement");r?this.handleIncrement():i&&this.handleDecrement()}dispatchEnterEvent(t){this.eventHost.dispatchInputEvent("nr-enter",{value:this.eventHost.value,target:t.target,originalEvent:t})}validateNumericValue(t,r){}restoreCursorPosition(t){if(t.dataset.restoreCursor){const r=parseInt(t.dataset.restoreCursor,10);isNaN(r)||t.setSelectionRange(r,r),delete t.dataset.restoreCursor}}setFocusState(t){this.eventHost.hasOwnProperty("focused")&&(this.eventHost.focused=t,this.requestUpdate())}getCursorPosition(){if(this.eventHost.getCursorPosition)return this.eventHost.getCursorPosition();const t=this.inputElement;return t?t.selectionStart:null}getSelectedText(){if(this.eventHost.getSelectedText)return this.eventHost.getSelectedText();const t=this.inputElement;return t&&null!==t.selectionStart&&null!==t.selectionEnd?t.value.substring(t.selectionStart,t.selectionEnd):""}isReadonlyKeyAllowed(t){if(this.eventHost.isReadonlyKeyAllowed)return this.eventHost.isReadonlyKeyAllowed(t);return t.ctrlKey||t.metaKey?["KeyA","KeyC"].includes(t.code):["Tab","Escape","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"].includes(t.key)}isActivationKey(t){return this.eventHost.isActivationKey?this.eventHost.isActivationKey(t):"Enter"===t.key||" "===t.key}}
1000
44
  /**
1001
45
  * @license
1002
46
  * Copyright 2023 Nuraly, Laabidi Aymen
1003
47
  * SPDX-License-Identifier: MIT
1004
- */var gi=function(t,i,r,e){for(var n,a=arguments.length,o=a<3?i:null===e?e=Object.getOwnPropertyDescriptor(i,r):e,s=t.length-1;s>=0;s--)(n=t[s])&&(o=(a<3?n(o):a>3?n(i,r,o):n(i,r))||o);return a>3&&o&&Object.defineProperty(i,r,o),o},mi=function(t,i,r,e){return new(r||(r=Promise))((function(n,a){function o(t){try{l(e.next(t))}catch(t){a(t)}}function s(t){try{l(e.throw(t))}catch(t){a(t)}}function l(t){var i;t.done?n(t.value):(i=t.value,i instanceof r?i:new r((function(t){t(i)}))).then(o,s)}l((e=e.apply(t,i||[])).next())}))};let yi=class extends(li(si(oi((t=>ri(ti(ei(t))))(Ut))))){constructor(){super(...arguments),this.validationController=new pi(this),this.eventController=new fi(this),this.disabled=!1,this.readonly=!1,this.state="default",this.value="",this.size="medium",this.variant="underlined",this.type="text",this.placeholder="",this.autocomplete="off",this.withCopy=!1,this.allowClear=!1,this.showCount=!1,this.rules=[],this.validateOnChangeInput=!0,this.validateOnBlurInput=!0,this.hasFeedback=!1,this.allowWarnings=!1,this.validationTrigger="change",this.inputType="",this.hasAddonBefore=!1,this.hasAddonAfter=!1,this.focused=!1,this.requiredComponents=["nr-icon"],this._handleValidationEvent=t=>{const i=t.detail;this.validationMessage=i.validationMessage||"";let r="default";i.validationResult.hasError?r="error":i.validationResult.hasWarning&&this.allowWarnings?r="warning":i.validationResult.isValid&&this.value&&this.hasFeedback&&(r="success"),this.state!==r&&(this.state=r),this.requestUpdate()},this._handleKeyDown=t=>{this.eventController.handleKeyDown(t)},this._valueChange=t=>{this.eventController.handleValueChange(t)},this._focusEvent=t=>{this.eventController.handleFocus(t)},this._blurEvent=t=>{this.eventController.handleBlur(t)},this._handleIconKeydown=t=>{this.eventController.handleIconKeydown(t)}}get _input(){return this.shadowRoot.querySelector("#input")}get characterCountDisplay(){const t=this.value.length;return this.maxLength?`${t}/${this.maxLength}`:`${t}`}get isOverCharacterLimit(){return!!this.maxLength&&this.value.length>this.maxLength}get input(){return this._input}get inputElement(){return this._input}connectedCallback(){super.connectedCallback(),this.addEventListener("nr-validation",this._handleValidationEvent)}disconnectedCallback(){var t,i;super.disconnectedCallback(),this.removeEventListener("nr-validation",this._handleValidationEvent),null===(i=(t=this.validationController).clearDebounceTimer)||void 0===i||i.call(t)}willUpdate(t){super.willUpdate(t),!t.has("type")&&this.inputType||(this.inputType=this.type),(t.has("type")||t.has("min"))&&"number"===this.type&&this.min&&!this.value&&(this.value=this.min),(t.has("type")||t.has("min")||t.has("max")||t.has("step"))&&ni.validateNumericProperties(this.type,this.min,this.max,this.step),(t.has("type")||t.has("required")||t.has("maxLength")||t.has("min")||t.has("max"))&&this.validationController.setupValidationRules()}updated(t){if(t.has("step")||t.has("min")||t.has("max")||t.has("maxLength")){const t=this.input;t&&(this.setStep(this.step),this.min?t.setAttribute("min",this.min):t.removeAttribute("min"),this.max?t.setAttribute("max",this.max):t.removeAttribute("max"),this.maxLength?t.setAttribute("maxlength",this.maxLength.toString()):t.removeAttribute("maxlength"))}}firstUpdated(){this._checkInitialSlotContent()}_checkInitialSlotContent(){const t=this.querySelectorAll('[slot="addon-before"]');this.hasAddonBefore=t.length>0;const i=this.querySelectorAll('[slot="addon-after"]');this.hasAddonAfter=i.length>0}_handleSlotChange(t){const i=t.target,r=i.name;"addon-before"===r?this.hasAddonBefore=i.assignedElements().length>0:"addon-after"===r&&(this.hasAddonAfter=i.assignedElements().length>0)}_onCopy(){return mi(this,void 0,void 0,(function*(){yield this.eventController.handleCopy()}))}_onClear(){this.eventController.handleClear()}_increment(){this.eventController.handleIncrement()}_decrement(){this.eventController.handleDecrement()}_togglePasswordIcon(){this.eventController.handleTogglePassword()}_getAriaDescribedBy(){var t;const i=[],r=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector('slot[name="helper-text"]');return r&&r.assignedNodes().length>0&&i.push("helper-text"),i.join(" ")||""}validateValue(t){return this.validationController.validate()}addRule(t){this.validationController.addRule(t)}removeRule(t){this.validationController.removeRule(t)}clearRules(){this.validationController.clearRules()}getValidationStatus(){return this.validationController.getValidationStatus()}validateInput(){return mi(this,void 0,void 0,(function*(){const t=this.validationController.validate();return this.validationController.isValidating?new Promise((t=>{const i=()=>{this.validationController.isValidating?setTimeout(i,50):t(this.validationController.isValid)};i()})):t}))}setValidationStatus(t){this.validationController.setValidationStatus(t)}getValidationClasses(){return this.validationController.getValidationClasses()}renderValidationIcon(){return this.validationController.renderValidationIcon()}renderValidationMessage(){return this.validationController.renderValidationMessage()}render(){const t=this.getValidationClasses(),i=this.validationController.getValidationRenderState();return bt`
1005
- <slot name="label"></slot>
1006
- <div class="input-wrapper ${Object.entries(t).filter((([,t])=>t)).map((([t])=>t)).join(" ")}"
1007
- part="input-wrapper"
1008
- data-theme="${this.currentTheme}"
1009
- ?data-validating="${i.isValidating}">
1010
- ${ai.renderAddonBefore(this.hasAddonBefore,(t=>this._handleSlotChange(t)))}
1011
- <div data-size=${this.size} id="input-container" part="input-container">
1012
- ${ai.renderPrefix()}
1013
- <input
1014
- id="input"
1015
- part="input"
1016
- .disabled=${this.disabled}
1017
- .readOnly=${this.readonly}
1018
- .value=${this.value}
1019
- .placeholder=${this.placeholder}
1020
- .type="${this.inputType}"
1021
- .autocomplete=${this.autocomplete}
1022
- aria-invalid=${i.validationResult.hasError?"true":"false"}
1023
- aria-describedby=${this._getAriaDescribedBy()}
1024
- @input=${this._valueChange}
1025
- @focus=${this._focusEvent}
1026
- @blur=${this._blurEvent}
1027
- @keydown=${this._handleKeyDown}
1028
- />
1029
- ${ai.renderSuffix()}
1030
- ${ai.renderCopyIcon(this.withCopy,this.disabled,this.readonly,(()=>this._onCopy()),(t=>this._handleIconKeydown(t)))}
1031
- ${ai.renderClearIcon(this.allowClear,this.value,this.disabled,this.readonly,(()=>this._onClear()),(t=>this._handleIconKeydown(t)))}
1032
- ${i.hasValidationFeedback?this.renderValidationIcon():ai.renderStateIcon(this.state)}
1033
- ${ai.renderCalendarIcon(this.state,this.type)}
1034
- ${ai.renderPasswordIcon(this.type,this.inputType,this.disabled,this.readonly,(()=>this._togglePasswordIcon()),(t=>this._handleIconKeydown(t)))}
1035
- ${ai.renderNumberIcons(this.type,this.state,this.disabled,this.readonly,(()=>this._increment()),(()=>this._decrement()),(t=>this._handleIconKeydown(t)))}
1036
- </div>
1037
- ${ai.renderAddonAfter(this.hasAddonAfter,(t=>this._handleSlotChange(t)))}
1038
- </div>
1039
- <slot name="helper-text"></slot>
1040
- ${this.renderValidationMessage()}
1041
- ${this.showCount?bt`
1042
- <div class="character-count" part="character-count" ?data-over-limit=${this.isOverCharacterLimit}>
1043
- ${this.characterCountDisplay}
1044
- </div>
1045
- `:""}
1046
- `}};yi.styles=qt,gi([Ft({type:Boolean,reflect:!0})],yi.prototype,"disabled",void 0),gi([Ft({type:Boolean,reflect:!0})],yi.prototype,"readonly",void 0),gi([Ft({type:String,reflect:!0})],yi.prototype,"state",void 0),gi([Ft({type:String})],yi.prototype,"value",void 0),gi([Ft({type:String})],yi.prototype,"size",void 0),gi([Ft({type:String,reflect:!0})],yi.prototype,"variant",void 0),gi([Ft({reflect:!0})],yi.prototype,"type",void 0),gi([Ft({type:String})],yi.prototype,"step",void 0),gi([Ft({type:String})],yi.prototype,"min",void 0),gi([Ft({type:String})],yi.prototype,"max",void 0),gi([Ft({type:String})],yi.prototype,"placeholder",void 0),gi([Ft({type:String})],yi.prototype,"autocomplete",void 0),gi([Ft({type:String})],yi.prototype,"name",void 0),gi([Ft({type:Boolean})],yi.prototype,"required",void 0),gi([Ft({type:Boolean,reflect:!0})],yi.prototype,"withCopy",void 0),gi([Ft({type:Boolean,reflect:!0})],yi.prototype,"allowClear",void 0),gi([Ft({type:Boolean,reflect:!0})],yi.prototype,"showCount",void 0),gi([Ft({type:Number})],yi.prototype,"maxLength",void 0),gi([Ft({type:Array})],yi.prototype,"rules",void 0),gi([Ft({type:Boolean,attribute:"validate-on-change"})],yi.prototype,"validateOnChangeInput",void 0),gi([Ft({type:Boolean,attribute:"validate-on-blur"})],yi.prototype,"validateOnBlurInput",void 0),gi([Ft({type:Boolean,attribute:"has-feedback"})],yi.prototype,"hasFeedback",void 0),gi([Ft({type:Boolean,attribute:"allow-warnings"})],yi.prototype,"allowWarnings",void 0),gi([Ft({type:String,attribute:"validation-trigger"})],yi.prototype,"validationTrigger",void 0),gi([Ft({type:Number,attribute:"validation-debounce"})],yi.prototype,"validationDebounce",void 0),gi([Ft({type:String})],yi.prototype,"label",void 0),gi([Ht()],yi.prototype,"validationMessage",void 0),gi([Ht()],yi.prototype,"inputType",void 0),gi([Ht()],yi.prototype,"hasAddonBefore",void 0),gi([Ht()],yi.prototype,"hasAddonAfter",void 0),gi([Ht()],yi.prototype,"focused",void 0),yi=gi([(t=>i=>"function"==typeof i?((t,i)=>(customElements.define(t,i),i))(t,i):((t,i)=>{const{kind:r,elements:e}=i;return{kind:r,elements:e,finisher(i){customElements.define(t,i)}}})(t,i))("nr-input")],yi);var bi=Object.freeze({__proto__:null,PORT:/^(?:[1-9]\d{0,4}|[1-5]\d{5}|6[0-4]\d{4}|65[0-4]\d{3}|655[0-2]\d{2}|6553[0-5])$/,NOT_EMPTY:/^.+$/});export{yi as NrInputElement,bi as Validations};
48
+ */var E=function(t,r,i,n){for(var a,e=arguments.length,o=e<3?r:null===n?n=Object.getOwnPropertyDescriptor(r,i):n,s=t.length-1;s>=0;s--)(a=t[s])&&(o=(e<3?a(o):e>3?a(r,i,o):a(r,i))||o);return e>3&&o&&Object.defineProperty(r,i,o),o},N=function(t,r,i,n){return new(i||(i=Promise))((function(a,e){function o(t){try{l(n.next(t))}catch(t){e(t)}}function s(t){try{l(n.throw(t))}catch(t){e(t)}}function l(t){var r;t.done?a(t.value):(r=t.value,r instanceof i?r:new i((function(t){t(r)}))).then(o,s)}l((n=n.apply(t,r||[])).next())}))};let C=class extends(w(f(g(s(n))))){constructor(){super(...arguments),this.validationController=new z(this),this.eventController=new A(this),this.disabled=!1,this.readonly=!1,this.state="default",this.value="",this.size="medium",this.variant="underlined",this.type="text",this.placeholder="",this.autocomplete="off",this.withCopy=!1,this.allowClear=!1,this.showCount=!1,this.rules=[],this.validateOnChangeInput=!0,this.validateOnBlurInput=!0,this.hasFeedback=!1,this.allowWarnings=!1,this.validationTrigger="change",this.inputType="",this.hasAddonBefore=!1,this.hasAddonAfter=!1,this.focused=!1,this.requiredComponents=["nr-icon"],this._handleValidationEvent=t=>{const r=t.detail;this.validationMessage=r.validationMessage||"";let i="default";r.validationResult.hasError?i="error":r.validationResult.hasWarning&&this.allowWarnings?i="warning":r.validationResult.isValid&&this.value&&this.hasFeedback&&(i="success"),this.state!==i&&(this.state=i),this.requestUpdate()},this._handleKeyDown=t=>{this.eventController.handleKeyDown(t)},this._valueChange=t=>{this.eventController.handleValueChange(t)},this._focusEvent=t=>{this.eventController.handleFocus(t)},this._blurEvent=t=>{this.eventController.handleBlur(t)},this._handleIconKeydown=t=>{this.eventController.handleIconKeydown(t)}}get _input(){return this.shadowRoot.querySelector("#input")}get characterCountDisplay(){const t=this.value.length;return this.maxLength?`${t}/${this.maxLength}`:`${t}`}get isOverCharacterLimit(){return!!this.maxLength&&this.value.length>this.maxLength}get input(){return this._input}get inputElement(){return this._input}connectedCallback(){super.connectedCallback(),this.addEventListener("nr-validation",this._handleValidationEvent)}disconnectedCallback(){var t,r;super.disconnectedCallback(),this.removeEventListener("nr-validation",this._handleValidationEvent),null===(r=(t=this.validationController).clearDebounceTimer)||void 0===r||r.call(t)}willUpdate(t){super.willUpdate(t),!t.has("type")&&this.inputType||(this.inputType=this.type),(t.has("type")||t.has("min"))&&"number"===this.type&&this.min&&!this.value&&(this.value=this.min),(t.has("type")||t.has("min")||t.has("max")||t.has("step"))&&m.validateNumericProperties(this.type,this.min,this.max,this.step),(t.has("type")||t.has("required")||t.has("maxLength")||t.has("min")||t.has("max"))&&this.validationController.setupValidationRules()}updated(t){if(t.has("step")||t.has("min")||t.has("max")||t.has("maxLength")){const t=this.input;t&&(this.setStep(this.step),this.min?t.setAttribute("min",this.min):t.removeAttribute("min"),this.max?t.setAttribute("max",this.max):t.removeAttribute("max"),this.maxLength?t.setAttribute("maxlength",this.maxLength.toString()):t.removeAttribute("maxlength"))}}firstUpdated(){this._checkInitialSlotContent()}_checkInitialSlotContent(){const t=this.querySelectorAll('[slot="addon-before"]');this.hasAddonBefore=t.length>0;const r=this.querySelectorAll('[slot="addon-after"]');this.hasAddonAfter=r.length>0}_handleSlotChange(t){const r=t.target,i=r.name;"addon-before"===i?this.hasAddonBefore=r.assignedElements().length>0:"addon-after"===i&&(this.hasAddonAfter=r.assignedElements().length>0)}_onCopy(){return N(this,void 0,void 0,(function*(){yield this.eventController.handleCopy()}))}_onClear(){this.eventController.handleClear()}_increment(){this.eventController.handleIncrement()}_decrement(){this.eventController.handleDecrement()}_togglePasswordIcon(){this.eventController.handleTogglePassword()}_getAriaDescribedBy(){var t;const r=[],i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector('slot[name="helper-text"]');return i&&i.assignedNodes().length>0&&r.push("helper-text"),r.join(" ")||""}validateValue(t){return this.validationController.validate()}addRule(t){this.validationController.addRule(t)}removeRule(t){this.validationController.removeRule(t)}clearRules(){this.validationController.clearRules()}getValidationStatus(){return this.validationController.getValidationStatus()}validateInput(){return N(this,void 0,void 0,(function*(){const t=this.validationController.validate();return this.validationController.isValidating?new Promise((t=>{const r=()=>{this.validationController.isValidating?setTimeout(r,50):t(this.validationController.isValid)};r()})):t}))}setValidationStatus(t){this.validationController.setValidationStatus(t)}getValidationClasses(){return this.validationController.getValidationClasses()}renderValidationIcon(){return this.validationController.renderValidationIcon()}renderValidationMessage(){return this.validationController.renderValidationMessage()}render(){const t=this.getValidationClasses(),i=this.validationController.getValidationRenderState();return r`<slot name="label"></slot><div class="input-wrapper ${Object.entries(t).filter((([,t])=>t)).map((([t])=>t)).join(" ")}" part="input-wrapper" data-theme="${this.currentTheme}" ?data-validating="${i.isValidating}">${y.renderAddonBefore(this.hasAddonBefore,(t=>this._handleSlotChange(t)))}<div data-size="${this.size}" id="input-container" part="input-container">${y.renderPrefix()} <input id="input" part="input" .disabled="${this.disabled}" .readOnly="${this.readonly}" .value="${this.value}" .placeholder="${this.placeholder}" .type="${this.inputType}" .autocomplete="${this.autocomplete}" aria-invalid="${i.validationResult.hasError?"true":"false"}" aria-describedby="${this._getAriaDescribedBy()}" @input="${this._valueChange}" @focus="${this._focusEvent}" @blur="${this._blurEvent}" @keydown="${this._handleKeyDown}"> ${y.renderSuffix()} ${y.renderCopyIcon(this.withCopy,this.disabled,this.readonly,(()=>this._onCopy()),(t=>this._handleIconKeydown(t)))} ${y.renderClearIcon(this.allowClear,this.value,this.disabled,this.readonly,(()=>this._onClear()),(t=>this._handleIconKeydown(t)))} ${i.hasValidationFeedback?this.renderValidationIcon():y.renderStateIcon(this.state)} ${y.renderCalendarIcon(this.state,this.type)} ${y.renderPasswordIcon(this.type,this.inputType,this.disabled,this.readonly,(()=>this._togglePasswordIcon()),(t=>this._handleIconKeydown(t)))} ${y.renderNumberIcons(this.type,this.state,this.disabled,this.readonly,(()=>this._increment()),(()=>this._decrement()),(t=>this._handleIconKeydown(t)))}</div>${y.renderAddonAfter(this.hasAddonAfter,(t=>this._handleSlotChange(t)))}</div><slot name="helper-text"></slot>${this.renderValidationMessage()} ${this.showCount?r`<div class="character-count" part="character-count" ?data-over-limit="${this.isOverCharacterLimit}">${this.characterCountDisplay}</div>`:""}`}};C.styles=l,E([a({type:Boolean,reflect:!0})],C.prototype,"disabled",void 0),E([a({type:Boolean,reflect:!0})],C.prototype,"readonly",void 0),E([a({type:String,reflect:!0})],C.prototype,"state",void 0),E([a({type:String})],C.prototype,"value",void 0),E([a({type:String})],C.prototype,"size",void 0),E([a({type:String,reflect:!0})],C.prototype,"variant",void 0),E([a({reflect:!0})],C.prototype,"type",void 0),E([a({type:String})],C.prototype,"step",void 0),E([a({type:String})],C.prototype,"min",void 0),E([a({type:String})],C.prototype,"max",void 0),E([a({type:String})],C.prototype,"placeholder",void 0),E([a({type:String})],C.prototype,"autocomplete",void 0),E([a({type:String})],C.prototype,"name",void 0),E([a({type:Boolean})],C.prototype,"required",void 0),E([a({type:Boolean,reflect:!0})],C.prototype,"withCopy",void 0),E([a({type:Boolean,reflect:!0})],C.prototype,"allowClear",void 0),E([a({type:Boolean,reflect:!0})],C.prototype,"showCount",void 0),E([a({type:Number})],C.prototype,"maxLength",void 0),E([a({type:Array})],C.prototype,"rules",void 0),E([a({type:Boolean,attribute:"validate-on-change"})],C.prototype,"validateOnChangeInput",void 0),E([a({type:Boolean,attribute:"validate-on-blur"})],C.prototype,"validateOnBlurInput",void 0),E([a({type:Boolean,attribute:"has-feedback"})],C.prototype,"hasFeedback",void 0),E([a({type:Boolean,attribute:"allow-warnings"})],C.prototype,"allowWarnings",void 0),E([a({type:String,attribute:"validation-trigger"})],C.prototype,"validationTrigger",void 0),E([a({type:Number,attribute:"validation-debounce"})],C.prototype,"validationDebounce",void 0),E([a({type:String})],C.prototype,"label",void 0),E([e()],C.prototype,"validationMessage",void 0),E([e()],C.prototype,"inputType",void 0),E([e()],C.prototype,"hasAddonBefore",void 0),E([e()],C.prototype,"hasAddonAfter",void 0),E([e()],C.prototype,"focused",void 0),C=E([o("nr-input")],C);var P=Object.freeze({__proto__:null,PORT:/^(?:[1-9]\d{0,4}|[1-5]\d{5}|6[0-4]\d{4}|65[0-4]\d{3}|655[0-2]\d{2}|6553[0-5])$/,NOT_EMPTY:/^.+$/});export{C as NrInputElement,P as Validations};