@ionic/core 9.0.9 → 9.0.10-dev.11793383958.19a7d413

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 (43) hide show
  1. package/components/ion-input-otp.js +1 -1
  2. package/components/ion-menu.js +1 -1
  3. package/components/ion-router.js +1 -1
  4. package/dist/cjs/ion-input-otp.cjs.entry.js +126 -10
  5. package/dist/cjs/ion-menu_3.cjs.entry.js +25 -7
  6. package/dist/cjs/ion-route_4.cjs.entry.js +121 -16
  7. package/dist/cjs/ionic.cjs.js +1 -1
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/collection/components/input-otp/input-otp.ios.css +30 -5
  10. package/dist/collection/components/input-otp/input-otp.js +191 -12
  11. package/dist/collection/components/input-otp/input-otp.md.css +30 -5
  12. package/dist/collection/components/menu/menu.js +25 -8
  13. package/dist/collection/components/route/route.js +9 -1
  14. package/dist/collection/components/route-redirect/route-redirect.js +1 -1
  15. package/dist/collection/components/router/utils/constants.js +2 -0
  16. package/dist/collection/components/router/utils/matching.js +97 -14
  17. package/dist/collection/components/router/utils/path.js +17 -3
  18. package/dist/docs.json +92 -3
  19. package/dist/esm/ion-input-otp.entry.js +128 -12
  20. package/dist/esm/ion-menu_3.entry.js +26 -8
  21. package/dist/esm/ion-route_4.entry.js +121 -16
  22. package/dist/esm/ionic.js +1 -1
  23. package/dist/esm/loader.js +1 -1
  24. package/dist/html.html-data.json +10 -2
  25. package/dist/ionic/ionic.esm.js +1 -1
  26. package/dist/ionic/p-095da8ec.entry.js +4 -0
  27. package/dist/ionic/p-705759fd.entry.js +4 -0
  28. package/dist/ionic/p-99c518de.entry.js +4 -0
  29. package/dist/types/components/input-otp/input-otp-interface.d.ts +1 -0
  30. package/dist/types/components/input-otp/input-otp.d.ts +40 -2
  31. package/dist/types/components/menu/menu.d.ts +7 -0
  32. package/dist/types/components/route/route.d.ts +8 -0
  33. package/dist/types/components/route-redirect/route-redirect.d.ts +3 -1
  34. package/dist/types/components/router/utils/constants.d.ts +2 -0
  35. package/dist/types/components/router/utils/matching.d.ts +10 -0
  36. package/dist/types/components/router/utils/path.d.ts +5 -1
  37. package/dist/types/components.d.ts +32 -6
  38. package/hydrate/index.js +257 -33
  39. package/hydrate/index.mjs +257 -33
  40. package/package.json +1 -1
  41. package/dist/ionic/p-539d6c8e.entry.js +0 -4
  42. package/dist/ionic/p-7ce9c6f8.entry.js +0 -4
  43. package/dist/ionic/p-af11d3c6.entry.js +0 -4
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import{d as i,H as o,i as t,p as n,h as s,F as p,f as r,t as e}from"./p-Ct2aBEue.js";import{i as a}from"./p-B4IBdPVJ.js";import{i as l}from"./p-Dojwmvde.js";import{c as d}from"./p-byZM6qHV.js";import{b as u}from"./p-HthJZjZ6.js";const c=i(class extends o{constructor(i){super(),!1!==i&&this.__registerHost(),this.ionInput=t(this,"ionInput",7),this.ionChange=t(this,"ionChange",7),this.ionComplete=t(this,"ionComplete",7),this.ionBlur=t(this,"ionBlur",7),this.ionFocus=t(this,"ionFocus",7),this.inheritedAttributes={},this.inputRefs=[],this.inputId="ion-input-otp-"+h++,this.parsedSeparators=[],this.isKeyboardNavigation=!1,this.updateTabIndexesAfterRender=!1,this.inputValues=[],this.hasFocus=!1,this.previousInputValues=[],this.autocapitalize="off",this.disabled=!1,this.fill="outline",this.length=4,this.readonly=!1,this.shape="round",this.size="medium",this.type="number",this.value="",this.onFocus=i=>o=>{const{inputRefs:t}=this;this.hasFocus||(this.ionFocus.emit(o),this.focusedValue=this.value),this.hasFocus=!0;let n=i;if(!this.isKeyboardNavigation){const o=this.inputValues[i]?i:this.getFirstEmptyIndex();n=-1===o?this.length-1:o,this.inputRefs[n]?.focus()}t.forEach(((i,o)=>{i.tabIndex=o===n?0:-1})),this.isKeyboardNavigation=!1},this.onBlur=i=>{const{inputRefs:o}=this,t=i.relatedTarget;null!=t&&o.includes(t)||(this.hasFocus=!1,this.updateTabIndexes(),this.ionBlur.emit(i),this.focusedValue!==this.value&&this.emitIonChange(i))},this.onKeyDown=i=>o=>{const{disabled:t,length:n,readonly:s}=this,p=l(this.el),r=o.target;if(!t)if(!s||"Backspace"!==o.key&&"Delete"!==o.key){if(!(r.selectionStart!==r.selectionEnd||(o.metaKey||o.ctrlKey)&&["a","c","v","x","r","z","y"].includes(o.key.toLowerCase())))if("Backspace"===o.key)if(this.inputValues[i]){for(let o=i;o<n-1;o++)this.inputValues[o]=this.inputValues[o+1];this.inputValues[n-1]="";for(let i=0;i<n;i++)this.inputRefs[i].value=this.inputValues[i]||"";this.updateValue(o),o.preventDefault()}else!this.inputValues[i]&&i>0&&this.focusPrevious(i);else if("ArrowLeft"===o.key||"ArrowRight"===o.key){this.isKeyboardNavigation=!0,o.preventDefault();const t="ArrowLeft"===o.key;t&&p||!t&&!p?this.inputValues[i]&&i<n-1&&this.focusNext(i):this.focusPrevious(i)}else if("Tab"===o.key)return void(this.isKeyboardNavigation=!0)}else o.preventDefault()},this.onInput=i=>o=>{const{disabled:t,length:n,readonly:s,validKeyPattern:p}=this,r=o.target,e=r.value,a=this.previousInputValues[i]||"";if(t||s)return;if(e.length-a.length>1){const i=e.split("").filter((i=>p.test(i))).slice(0,n);0===i.length&&requestAnimationFrame((()=>{this.inputRefs.forEach((i=>{i.value=""}))}));for(let o=0;o<n;o++)this.inputValues[o]=i[o]||"",this.inputRefs[o].value=i[o]||"";return this.updateValue(o),setTimeout((()=>{const o=i.length<n?i.length:n-1;this.inputRefs[o]?.focus()}),20),void(this.previousInputValues=[...this.inputValues])}if(e.length>0&&!p.test(e[e.length-1]))return r.value=this.inputValues[i]||"",void(this.previousInputValues=[...this.inputValues]);if(0===r.selectionStart&&r.selectionEnd===e.length||!this.inputValues[i])return this.inputValues[i]=e,r.value=e,this.updateValue(o),this.focusNext(i),void(this.previousInputValues=[...this.inputValues]);if(this.inputValues[i]&&""===this.inputValues[this.inputValues.length-1]&&2===e.length){let t=o.data;if(t||(t=e.split("").find(((i,o)=>i!==a[o]))||e[e.length-1]),!p.test(t))return r.value=this.inputValues[i]||"",void(this.previousInputValues=[...this.inputValues]);for(let o=this.inputValues.length-1;o>i;o--)this.inputValues[o]=this.inputValues[o-1],this.inputRefs[o].value=this.inputValues[o]||"";return this.inputValues[i]=t,this.inputRefs[i].value=t,this.updateValue(o),void(this.previousInputValues=[...this.inputValues])}const l=e[(r.selectionStart??e.length)-1]??e[0];if(!p.test(l))return r.value=this.inputValues[i]||"",void(this.previousInputValues=[...this.inputValues]);this.inputValues[i]=l,r.value=l,this.updateValue(o),this.previousInputValues=[...this.inputValues]},this.onPaste=i=>{const{disabled:o,inputRefs:t,length:n,readonly:s,validKeyPattern:p}=this;if(i.preventDefault(),o||s)return;const r=i.clipboardData?.getData("text");if(!r)return void this.emitIonInput(i);const e=r.split("").filter((i=>p.test(i))).slice(0,n);e.forEach(((i,o)=>{o<n&&(this.inputRefs[o].value=i,this.inputValues[o]=i)})),this.value=e.join(""),this.updateValue(i);const a=e.length<n?e.length:n-1;t[a]?.focus()}}async setFocus(i){if("number"==typeof i){const o=Math.max(0,Math.min(i,this.length-1));this.inputRefs[o]?.focus()}else{const i=this.getTabbableIndex();this.inputRefs[i]?.focus()}}valueChanged(){this.initializeValues(),this.updateTabIndexes()}lengthChanged(){this.initializeValues(),this.updateTabIndexesAfterRender=!0}processSeparators(){const{separators:i,length:o}=this;if(void 0===i)return void(this.parsedSeparators=[]);if("string"==typeof i&&"all"!==i&&!/^(\d+)(,\d+)*$/.test(i))return n('[ion-input-otp] - Invalid separators format. Expected a comma-separated list of numbers, an array of numbers, or "all". Received: '+i,this.el),void(this.parsedSeparators=[]);let t;t="all"===i?Array.from({length:o-1},((i,o)=>o+1)):Array.isArray(i)?i:i.split(",").map((i=>parseInt(i,10))).filter((i=>!isNaN(i))),t.filter(((i,o)=>t.indexOf(i)!==o)).length>0&&n("[ion-input-otp] - Duplicate separator positions are not allowed. Received: "+i,this.el);const s=t.filter((i=>i>o));s.length>0&&n(`[ion-input-otp] - The following separator positions are greater than the input length (${o}): ${s.join(", ")}. These separators will be ignored.`,this.el),this.parsedSeparators=t.filter((i=>i<=o))}componentWillLoad(){this.inheritedAttributes=a(this.el),this.processSeparators(),this.initializeValues()}componentDidLoad(){this.updateTabIndexes()}componentDidRender(){this.updateTabIndexesAfterRender&&(this.updateTabIndexesAfterRender=!1,this.updateTabIndexes())}get validKeyPattern(){return RegExp(`^${this.getPattern()}$`,"u")}getPattern(){const{pattern:i,type:o}=this;return i||("number"===o?"[\\p{N}]":"[\\p{L}\\p{N}]")}getInputmode(){const{inputmode:i}=this;return i||("number"==this.type?"numeric":"text")}initializeValues(){this.inputValues=Array(this.length).fill(""),null!=this.value&&0!==(this.value+"").length&&((this.value+"").split("").slice(0,this.length).forEach(((i,o)=>{this.validKeyPattern.test(i)&&(this.inputValues[o]=i)})),this.value=this.inputValues.join(""),this.previousInputValues=[...this.inputValues])}updateValue(i){const{inputValues:o,length:t}=this,n=o.join("");this.value=n,this.emitIonInput(i),n.length===t&&this.ionComplete.emit({value:n})}emitIonChange(i){const{value:o}=this;this.ionChange.emit({value:null==o?o:""+o,event:i})}emitIonInput(i){const{value:o}=this;this.ionInput.emit({value:null==o?o:""+o,event:i})}focusNext(i){const{inputRefs:o,length:t}=this;i<t-1&&o[i+1]?.focus()}focusPrevious(i){const{inputRefs:o}=this;i>0&&o[i-1]?.focus()}getFirstEmptyIndex(){const{inputValues:i,length:o}=this;return Array.from({length:o},((o,t)=>i[t]||"")).findIndex((i=>!i||""===i))??-1}getTabbableIndex(){const{length:i}=this,o=this.getFirstEmptyIndex();return-1===o?i-1:o}updateTabIndexes(){const{inputRefs:i,inputValues:o,length:t}=this;let n=-1;for(let i=0;i<t;i++)if(!o[i]||""===o[i]){n=i;break}i.forEach(((i,s)=>{const p=-1===n?s===t-1:n===s;i.tabIndex=p?0:-1,i.setAttribute("aria-hidden",o[s]&&""!==o[s]||p?"false":"true")}))}showSeparator(i){const{length:o}=this;return this.parsedSeparators.includes(i+1)&&i<o-1}render(){const{autocapitalize:i,color:o,disabled:t,el:n,fill:e,hasFocus:a,inheritedAttributes:l,inputId:c,inputRefs:h,inputValues:g,length:v,readonly:m,shape:f,size:b}=this,x=u(this),w=this.getInputmode(),k=this.getTabbableIndex(),y=this.getPattern(),z=""!==n.querySelector(".input-otp-description")?.textContent?.trim();return s(r,{key:"def9fbd4fa135e6f435380c6ea86ac1621b4a111",class:d(o,{[x]:!0,"has-focus":a,["input-otp-size-"+b]:!0,["input-otp-shape-"+f]:!0,["input-otp-fill-"+e]:!0,"input-otp-disabled":t,"input-otp-readonly":m})},s("div",{key:"5d3d7646a3d4fc856b7b2e1f53d29fca47b10baf",role:"group","aria-label":"One-time password input",class:"input-otp-group",...l},Array.from({length:v}).map(((o,n)=>s(p,null,s("div",{class:"native-wrapper"},s("input",{class:"native-input",id:`${c}-${n}`,"aria-label":`Input ${n+1} of ${v}`,type:"text",autoCapitalize:i,inputmode:w,pattern:y,disabled:t,readOnly:m,tabIndex:n===k?0:-1,value:g[n]||"",autocomplete:"one-time-code",ref:i=>{i?h[n]=i:h.splice(n)},onInput:this.onInput(n),onBlur:this.onBlur,onFocus:this.onFocus(n),onKeyDown:this.onKeyDown(n),onPaste:this.onPaste})),this.showSeparator(n)&&s("div",{class:"input-otp-separator"}))))),s("div",{key:"9d72a4ab35b5fdd6bba9701050c385ed253b310f",class:{"input-otp-description":!0,"input-otp-description-hidden":!z}},s("slot",{key:"7deb3373c0d4e5deac22fa51577d271b9bb3a6d2"})))}get el(){return this}static get watchers(){return{value:[{valueChanged:0}],length:[{lengthChanged:0},{processSeparators:0}],separators:[{processSeparators:0}]}}static get style(){return{ios:".sc-ion-input-otp-ios-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-ios{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-ios{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color);background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-ios{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-ios{display:none}.input-otp-separator.sc-ion-input-otp-ios{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-ios-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:8px}.input-otp-size-medium.sc-ion-input-otp-ios-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-ios-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios,.input-otp-size-large.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:12px}.input-otp-shape-round.sc-ion-input-otp-ios-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-ios-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-ios-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-ios-h{--border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-ios-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-disabled.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-ios-h{--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-ios-h,.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-ios-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-ios-h{--border-width:0.55px}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-width:1px}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))))}",md:".sc-ion-input-otp-md-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-md{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-md{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color);background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-md{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-md{display:none}.input-otp-separator.sc-ion-input-otp-md{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-md-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:8px}.input-otp-size-medium.sc-ion-input-otp-md-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-md-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md,.input-otp-size-large.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:12px}.input-otp-shape-round.sc-ion-input-otp-md-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-md-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-md-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-md-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-md-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-disabled.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-md-h,.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-md-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-md-h{--border-width:1px}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-width:2px}.input-otp-fill-outline.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3))}"}}},[294,"ion-input-otp",{autocapitalize:[1],color:[513],disabled:[516],fill:[1],inputmode:[1],length:[2],pattern:[1],readonly:[516],separators:[1],shape:[1],size:[1],type:[1],value:[1032],inputValues:[32],hasFocus:[32],previousInputValues:[32],setFocus:[64]},void 0,{value:[{valueChanged:0}],length:[{lengthChanged:0},{processSeparators:0}],separators:[{processSeparators:0}]}]);let h=0;const g=c,v=function(){"undefined"!=typeof customElements&&["ion-input-otp"].forEach((i=>{"ion-input-otp"===i&&(customElements.get(e(i))||customElements.define(e(i),c))}))};export{g as IonInputOtp,v as defineCustomElement}
4
+ import{d as i,H as t,i as o,j as n,p as r,h as e,c as s,F as p,f as a,t as l}from"./p-Ct2aBEue.js";import{c as d}from"./p-Cyajikho.js";import{k as c}from"./p-B4IBdPVJ.js";import{i as u}from"./p-Dojwmvde.js";import{c as h}from"./p-DJztqcrH.js";import{c as g}from"./p-byZM6qHV.js";import{b as v}from"./p-HthJZjZ6.js";const m=i(class extends t{constructor(i){super(),!1!==i&&this.__registerHost(),this.ionInput=o(this,"ionInput",7),this.ionChange=o(this,"ionChange",7),this.ionComplete=o(this,"ionComplete",7),this.ionBlur=o(this,"ionBlur",7),this.ionFocus=o(this,"ionFocus",7),this.inputRefs=[],this.inputId="ion-input-otp-"+b++,this.helperTextId=this.inputId+"-helper-text",this.errorTextId=this.inputId+"-error-text",this.descriptionId=this.inputId+"-description",this.parsedSeparators=[],this.isKeyboardNavigation=!1,this.updateTabIndexesAfterRender=!1,this.inputValues=[],this.hasFocus=!1,this.previousInputValues=[],this.isInvalid=!1,this.autocapitalize="off",this.disabled=!1,this.fill="outline",this.length=4,this.readonly=!1,this.shape="round",this.size="medium",this.type="number",this.value="",this.onFocus=i=>t=>{const{inputRefs:o}=this;this.hasFocus||(this.ionFocus.emit(t),this.focusedValue=this.value),this.hasFocus=!0;let n=i;if(!this.isKeyboardNavigation){const t=this.inputValues[i]?i:this.getFirstEmptyIndex();n=-1===t?this.length-1:t,this.inputRefs[n]?.focus()}o.forEach(((i,t)=>{i.tabIndex=t===n?0:-1})),this.isKeyboardNavigation=!1},this.onBlur=i=>{const{inputRefs:t}=this,o=i.relatedTarget;null!=o&&t.includes(o)||(this.hasFocus=!1,this.updateTabIndexes(),this.ionBlur.emit(i),this.focusedValue!==this.value&&this.emitIonChange(i))},this.onKeyDown=i=>t=>{const{disabled:o,length:n,readonly:r}=this,e=u(this.el),s=t.target;if(!o)if(!r||"Backspace"!==t.key&&"Delete"!==t.key){if(!(s.selectionStart!==s.selectionEnd||(t.metaKey||t.ctrlKey)&&["a","c","v","x","r","z","y"].includes(t.key.toLowerCase())))if("Backspace"===t.key)if(this.inputValues[i]){for(let t=i;t<n-1;t++)this.inputValues[t]=this.inputValues[t+1];this.inputValues[n-1]="";for(let i=0;i<n;i++)this.inputRefs[i].value=this.inputValues[i]||"";this.updateValue(t),t.preventDefault()}else!this.inputValues[i]&&i>0&&this.focusPrevious(i);else if("ArrowLeft"===t.key||"ArrowRight"===t.key){this.isKeyboardNavigation=!0,t.preventDefault();const o="ArrowLeft"===t.key;o&&e||!o&&!e?this.inputValues[i]&&i<n-1&&this.focusNext(i):this.focusPrevious(i)}else if("Tab"===t.key)return void(this.isKeyboardNavigation=!0)}else t.preventDefault()},this.onInput=i=>t=>{const{disabled:o,length:n,readonly:r,validKeyPattern:e}=this,s=t.target,p=s.value,a=this.previousInputValues[i]||"";if(o||r)return;if(p.length-a.length>1){const i=p.split("").filter((i=>e.test(i))).slice(0,n);0===i.length&&requestAnimationFrame((()=>{this.inputRefs.forEach((i=>{i.value=""}))}));for(let t=0;t<n;t++)this.inputValues[t]=i[t]||"",this.inputRefs[t].value=i[t]||"";return this.updateValue(t),setTimeout((()=>{const t=i.length<n?i.length:n-1;this.inputRefs[t]?.focus()}),20),void(this.previousInputValues=[...this.inputValues])}if(p.length>0&&!e.test(p[p.length-1]))return s.value=this.inputValues[i]||"",void(this.previousInputValues=[...this.inputValues]);if(0===s.selectionStart&&s.selectionEnd===p.length||!this.inputValues[i])return this.inputValues[i]=p,s.value=p,this.updateValue(t),this.focusNext(i),void(this.previousInputValues=[...this.inputValues]);if(this.inputValues[i]&&""===this.inputValues[this.inputValues.length-1]&&2===p.length){let o=t.data;if(o||(o=p.split("").find(((i,t)=>i!==a[t]))||p[p.length-1]),!e.test(o))return s.value=this.inputValues[i]||"",void(this.previousInputValues=[...this.inputValues]);for(let t=this.inputValues.length-1;t>i;t--)this.inputValues[t]=this.inputValues[t-1],this.inputRefs[t].value=this.inputValues[t]||"";return this.inputValues[i]=o,this.inputRefs[i].value=o,this.updateValue(t),void(this.previousInputValues=[...this.inputValues])}const l=p[(s.selectionStart??p.length)-1]??p[0];if(!e.test(l))return s.value=this.inputValues[i]||"",void(this.previousInputValues=[...this.inputValues]);this.inputValues[i]=l,s.value=l,this.updateValue(t),this.previousInputValues=[...this.inputValues]},this.onPaste=i=>{const{disabled:t,inputRefs:o,length:n,readonly:r,validKeyPattern:e}=this;if(i.preventDefault(),t||r)return;const s=i.clipboardData?.getData("text");if(!s)return void this.emitIonInput(i);const p=s.split("").filter((i=>e.test(i))).slice(0,n);p.forEach(((i,t)=>{t<n&&(this.inputRefs[t].value=i,this.inputValues[t]=i)})),this.value=p.join(""),this.updateValue(i);const a=p.length<n?p.length:n-1;o[a]?.focus()}}async setFocus(i){if("number"==typeof i){const t=Math.max(0,Math.min(i,this.length-1));this.inputRefs[t]?.focus()}else{const i=this.getTabbableIndex();this.inputRefs[i]?.focus()}}onHostAriaChange(){n(this)}valueChanged(){this.initializeValues(),this.updateTabIndexes()}lengthChanged(){this.initializeValues(),this.updateTabIndexesAfterRender=!0}processSeparators(){const{separators:i,length:t}=this;if(void 0===i)return void(this.parsedSeparators=[]);if("string"==typeof i&&"all"!==i&&!/^(\d+)(,\d+)*$/.test(i))return r('[ion-input-otp] - Invalid separators format. Expected a comma-separated list of numbers, an array of numbers, or "all". Received: '+i,this.el),void(this.parsedSeparators=[]);let o;o="all"===i?Array.from({length:t-1},((i,t)=>t+1)):Array.isArray(i)?i:i.split(",").map((i=>parseInt(i,10))).filter((i=>!isNaN(i))),o.filter(((i,t)=>o.indexOf(i)!==t)).length>0&&r("[ion-input-otp] - Duplicate separator positions are not allowed. Received: "+i,this.el);const n=o.filter((i=>i>t));n.length>0&&r(`[ion-input-otp] - The following separator positions are greater than the input length (${t}): ${n.join(", ")}. These separators will be ignored.`,this.el),this.parsedSeparators=o.filter((i=>i<=t))}connectedCallback(){const{el:i}=this;"undefined"!=typeof MutationObserver&&(this.validationObserver=new MutationObserver((()=>{const t=h(i);this.isInvalid!==t&&(this.isInvalid=t,n(this))})),this.validationObserver.observe(i,{attributes:!0,attributeFilter:["class"]})),this.isInvalid=h(i),this.ariaController?.init()}disconnectedCallback(){this.ariaController?.destroy(),this.validationObserver&&(this.validationObserver.disconnect(),this.validationObserver=void 0)}componentWillLoad(){this.ariaController=d(this.el,c.filter((i=>!f.includes(i))),(()=>n(this)),["role"]),this.processSeparators(),this.initializeValues()}componentDidLoad(){this.updateTabIndexes(),this.getDescriptionText()&&n(this)}componentDidRender(){this.updateTabIndexesAfterRender&&(this.updateTabIndexesAfterRender=!1,this.updateTabIndexes())}get validKeyPattern(){return RegExp(`^${this.getPattern()}$`,"u")}getPattern(){const{pattern:i,type:t}=this;return i||("number"===t?"[\\p{N}]":"[\\p{L}\\p{N}]")}getInputmode(){const{inputmode:i}=this;return i||("number"==this.type?"numeric":"text")}initializeValues(){this.inputValues=Array(this.length).fill(""),null!=this.value&&0!==(this.value+"").length&&((this.value+"").split("").slice(0,this.length).forEach(((i,t)=>{this.validKeyPattern.test(i)&&(this.inputValues[t]=i)})),this.value=this.inputValues.join(""),this.previousInputValues=[...this.inputValues])}updateValue(i){const{inputValues:t,length:o}=this,n=t.join("");this.value=n,this.emitIonInput(i),n.length===o&&this.ionComplete.emit({value:n})}emitIonChange(i){const{value:t}=this;this.ionChange.emit({value:null==t?t:""+t,event:i})}emitIonInput(i){const{value:t}=this;this.ionInput.emit({value:null==t?t:""+t,event:i})}focusNext(i){const{inputRefs:t,length:o}=this;i<o-1&&t[i+1]?.focus()}focusPrevious(i){const{inputRefs:t}=this;i>0&&t[i-1]?.focus()}getFirstEmptyIndex(){const{inputValues:i,length:t}=this;return Array.from({length:t},((t,o)=>i[o]||"")).findIndex((i=>!i||""===i))??-1}getTabbableIndex(){const{length:i}=this,t=this.getFirstEmptyIndex();return-1===t?i-1:t}updateTabIndexes(){const{inputRefs:i,inputValues:t,length:o}=this;let n=-1;for(let i=0;i<o;i++)if(!t[i]||""===t[i]){n=i;break}i.forEach(((i,r)=>{const e=-1===n?r===o-1:n===r;i.tabIndex=e?0:-1,i.setAttribute("aria-hidden",t[r]&&""!==t[r]||e?"false":"true")}))}showSeparator(i){const{length:t}=this;return this.parsedSeparators.includes(i+1)&&i<t-1}getDescriptionText(){return this.el.querySelector(".input-otp-description")?.textContent?.trim()}getHintTextId(){const{isInvalid:i,helperText:t,errorText:o,helperTextId:n,errorTextId:r}=this;return i&&o?r:t?n:void 0}renderHintText(){const{helperText:i,errorText:t,helperTextId:o,errorTextId:n,isInvalid:r}=this;return[e("div",{id:o,class:"helper-text","aria-live":"polite"},r?null:i),e("div",{id:n,class:"error-text",role:"alert"},r?t:null)]}renderBottomContent(){const{helperText:i,errorText:t}=this;if(i||t)return e("div",{class:"input-otp-bottom"},this.renderHintText())}getInputLabelAttributes(i,t){const{inputId:o,inputLabelFormatter:n,length:r}=this,e=t["aria-label"],p=t["aria-labelledby"],a=`${i+1} of ${r}`;if(void 0!==n)try{return{"aria-label":n(i,r)}}catch(i){s("[ion-input-otp] - Exception in provided `inputLabelFormatter`:",i)}return p?{"aria-label":a,"aria-labelledby":`${p} ${o}-${i}`}:{"aria-label":e?`${e}, ${a}`:"Input "+a}}render(){const{ariaController:i,autocapitalize:t,color:o,descriptionId:n,disabled:r,el:s,fill:l,hasFocus:d,inputId:c,inputRefs:u,inputValues:h,isInvalid:m,length:b,readonly:f,shape:x,size:y}=this,k=v(this),w=this.getInputmode(),z=this.getTabbableIndex(),I=this.getPattern(),C=this.getDescriptionText(),T=""!==C,{"aria-errormessage":j,"aria-required":A,...$}=i?.attributes??{},F=s.getAttribute("aria-describedby"),R=s.getAttribute("aria-invalid")??void 0,H=[F,this.getHintTextId()].filter(Boolean).join(" ");return e(a,{key:"5b13c3bed3979e269cf4409895954edb171d68f3",class:g(o,{[k]:!0,"has-focus":d,["input-otp-size-"+y]:!0,["input-otp-shape-"+x]:!0,["input-otp-fill-"+l]:!0,"input-otp-disabled":r,"input-otp-readonly":f})},e("div",{key:"6db010743f0eb5e059dc00de5822f117a264bb16",role:"group",class:"input-otp-group",...$,"aria-label":$["aria-label"]||"One-time password input","aria-describedby":C?n:void 0},Array.from({length:b}).map(((i,o)=>e(p,null,e("div",{class:"native-wrapper"},e("input",{class:"native-input",id:`${c}-${o}`,...this.getInputLabelAttributes(o,$),"aria-describedby":H||void 0,"aria-errormessage":j,"aria-invalid":m?"true":R,"aria-required":A,type:"text",autoCapitalize:t,inputmode:w,pattern:I,disabled:r,readOnly:f,tabIndex:o===z?0:-1,value:h[o]||"",autocomplete:"one-time-code",ref:i=>{i?u[o]=i:u.splice(o)},onInput:this.onInput(o),onBlur:this.onBlur,onFocus:this.onFocus(o),onKeyDown:this.onKeyDown(o),onPaste:this.onPaste})),this.showSeparator(o)&&e("div",{class:"input-otp-separator"}))))),e("div",{key:"4d55d7532dcc28fadcb2f860dd2fcd2aa45ccccc",id:n,class:{"input-otp-description":!0,"input-otp-description-hidden":!T}},e("slot",{key:"5d6823f48a9786799c9d485ce0d6b9de2ae7f537"})),this.renderBottomContent())}get el(){return this}static get watchers(){return{"aria-describedby":[{onHostAriaChange:0}],"aria-invalid":[{onHostAriaChange:0}],value:[{valueChanged:0}],length:[{lengthChanged:0},{processSeparators:0}],separators:[{processSeparators:0}]}}static get style(){return{ios:".sc-ion-input-otp-ios-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);--border-color:initial;display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-ios{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-ios{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color, var(--internal-border-color));background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-ios{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-ios{display:none}.input-otp-bottom.sc-ion-input-otp-ios{font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-bottom.sc-ion-input-otp-ios .error-text.sc-ion-input-otp-ios{display:none;color:var(--highlight-color-invalid)}.input-otp-bottom.sc-ion-input-otp-ios .helper-text.sc-ion-input-otp-ios{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h .input-otp-bottom.sc-ion-input-otp-ios .error-text.sc-ion-input-otp-ios{display:block}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h .input-otp-bottom.sc-ion-input-otp-ios .helper-text.sc-ion-input-otp-ios{display:none}.input-otp-separator.sc-ion-input-otp-ios{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-ios-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:8px}.input-otp-size-medium.sc-ion-input-otp-ios-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-ios-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios,.input-otp-size-large.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:12px}.input-otp-shape-round.sc-ion-input-otp-ios-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-ios-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-ios-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-ios-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-disabled.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-ios-h,.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-ios-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-ios-h{--border-width:0.55px}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-width:1px}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))))}",md:".sc-ion-input-otp-md-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);--border-color:initial;display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-md{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-md{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color, var(--internal-border-color));background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-md{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-md{display:none}.input-otp-bottom.sc-ion-input-otp-md{font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-bottom.sc-ion-input-otp-md .error-text.sc-ion-input-otp-md{display:none;color:var(--highlight-color-invalid)}.input-otp-bottom.sc-ion-input-otp-md .helper-text.sc-ion-input-otp-md{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h .input-otp-bottom.sc-ion-input-otp-md .error-text.sc-ion-input-otp-md{display:block}.ion-touched.ion-invalid.sc-ion-input-otp-md-h .input-otp-bottom.sc-ion-input-otp-md .helper-text.sc-ion-input-otp-md{display:none}.input-otp-separator.sc-ion-input-otp-md{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-md-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:8px}.input-otp-size-medium.sc-ion-input-otp-md-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-md-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md,.input-otp-size-large.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:12px}.input-otp-shape-round.sc-ion-input-otp-md-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-md-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-md-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-md-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-md-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-disabled.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-md-h,.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-md-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-md-h{--border-width:1px}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-width:2px}.input-otp-fill-outline.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3))}"}}},[294,"ion-input-otp",{autocapitalize:[1],color:[513],disabled:[516],errorText:[1,"error-text"],fill:[1],helperText:[1,"helper-text"],inputLabelFormatter:[16],inputmode:[1],length:[2],pattern:[1],readonly:[516],separators:[1],shape:[1],size:[1],type:[1],value:[1032],inputValues:[32],hasFocus:[32],previousInputValues:[32],isInvalid:[32],setFocus:[64]},void 0,{"aria-describedby":[{onHostAriaChange:0}],"aria-invalid":[{onHostAriaChange:0}],value:[{valueChanged:0}],length:[{lengthChanged:0},{processSeparators:0}],separators:[{processSeparators:0}]}]);let b=0;const f=["aria-describedby","aria-invalid"],x=m,y=function(){"undefined"!=typeof customElements&&["ion-input-otp"].forEach((i=>{"ion-input-otp"===i&&(customElements.get(l(i))||customElements.define(l(i),m))}))};export{x as IonInputOtp,y as defineCustomElement}
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import{d as e,H as t,i,e as s,c as n,h as o,f as a,t as r}from"./p-Ct2aBEue.js";import{g as h}from"./p-hHmYLOfE.js";import{q as d,B as m,o as l,u,G as p}from"./p-B02CcbPD.js";import{G as b}from"./p-B_gJaBk0.js";import{shouldUseCloseWatcher as c,updateCloseWatcher as f}from"./p-CohRJRIu.js";import{n as w,i as x,o as v,e as g}from"./p-B4IBdPVJ.js";import{m as y}from"./p-ODGeXc3M.js";import{b as k,a as C}from"./p-HthJZjZ6.js";import{h as j}from"./p-byZM6qHV.js";import{d as S}from"./p-CW84OFQa.js";const z=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.ionWillOpen=i(this,"ionWillOpen",7),this.ionWillClose=i(this,"ionWillClose",7),this.ionDidOpen=i(this,"ionDidOpen",7),this.ionDidClose=i(this,"ionDidClose",7),this.ionMenuChange=i(this,"ionMenuChange",7),this.lastOnEnd=0,this.blocker=b.createBlocker({disableScroll:!0}),this.didLoad=!1,this.operationCancelled=!1,this.isAnimating=!1,this._isOpen=!1,this.inheritedAttributes={},this.handleFocus=e=>{const t=d(document);t&&!t.contains(this.el)||this.trapKeyboardFocus(e,document)},this.isPaneVisible=!1,this.isEndSide=!1,this.disabled=!1,this.side="start",this.swipeGesture=!0,this.maxEdgeStart=50}typeChanged(e,t){const i=this.contentEl;i&&(void 0!==t&&i.classList.remove("menu-content-"+t),i.classList.add("menu-content-"+e),i.removeAttribute("style")),this.menuInnerEl&&this.menuInnerEl.removeAttribute("style"),this.animation=void 0}disabledChanged(){this.updateState(),this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}sideChanged(){this.isEndSide=w(this.side,this.el),this.animation=void 0}swipeGestureChanged(){this.updateState()}async connectedCallback(){"undefined"!=typeof customElements&&null!=customElements&&await customElements.whenDefined("ion-menu"),void 0===this.type&&(this.type=s.get("menuType","overlay"));const e=void 0!==this.contentId?document.getElementById(this.contentId):null;null!==e?(this.el.contains(e)&&n('[ion-menu] - The "contentId" should refer to the main view\'s ion-content, not the ion-content inside of the ion-menu.'),this.contentEl=e,e.classList.add("menu-content"),this.typeChanged(this.type,void 0),this.sideChanged(),y._register(this),this.menuChanged(),this.gesture=(await import("./p-D0YpjgON.js")).createGesture({el:document,gestureName:"menu-swipe",gesturePriority:30,threshold:10,blurOnStart:!0,canStart:e=>this.canStart(e),onWillStart:()=>this.onWillStart(),onStart:()=>this.onStart(),onMove:e=>this.onMove(e),onEnd:e=>this.onEnd(e)}),this.updateState()):n('[ion-menu] - Must have a "content" element to listen for drag events on.')}componentWillLoad(){this.inheritedAttributes=x(this.el)}async componentDidLoad(){this.didLoad=!0;const e=this.el.closest("ion-split-pane");null!==e&&(this.isPaneVisible=await e.isVisible()),this.menuChanged(),this.updateState()}menuChanged(){this.didLoad&&this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}async disconnectedCallback(){await this.close(!1),this.blocker.destroy(),y._unregister(this),this.animation&&this.animation.destroy(),this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.animation=void 0,this.contentEl=void 0}onSplitPaneChanged(e){const t=this.el.closest("ion-split-pane");null!==t&&t===e.target&&(this.isPaneVisible=e.detail.visible,this.updateState())}onBackdropClick(e){this._isOpen&&this.lastOnEnd<e.timeStamp-100&&e.composedPath&&!e.composedPath().includes(this.menuInnerEl)&&(e.preventDefault(),e.stopPropagation(),this.close(void 0,m))}onKeydown(e){"Escape"===e.key&&this.close(void 0,m)}isOpen(){return Promise.resolve(this._isOpen)}isActive(){return Promise.resolve(this._isActive())}open(e=!0){return this.setOpen(!0,e)}close(e=!0,t){return this.setOpen(!1,e,t)}toggle(e=!0){return this.setOpen(!this._isOpen,e)}setOpen(e,t=!0,i){return document.activeElement?.blur(),y._setOpen(this,e,t,i)}trapKeyboardFocus(e,t){const i=e.target;if(i)if(this.el.contains(i))this.lastFocus=i;else{const{el:e}=this;l(e),this.lastFocus===t.activeElement&&u(e)}}async _setOpen(e,t=!0,i){return!(!this._isActive()||this.isAnimating||e===this._isOpen||(this.beforeAnimation(e,i),await this.loadAnimation(),await this.startAnimation(e,t),this.operationCancelled?(this.operationCancelled=!1,1):(this.afterAnimation(e,i),0)))}async loadAnimation(){const e=this.menuInnerEl.offsetWidth,t=w(this.side,this.el);if(e===this.width&&void 0!==this.animation&&t===this.isEndSide)return;this.width=e,this.isEndSide=t,this.animation&&(this.animation.destroy(),this.animation=void 0);const i=this.animation=await y._createAnimation(this.type,this);s.getBoolean("animated",!0)||i.duration(0),i.fill("both")}async startAnimation(e,t){const i=!e,s=k(this),n="ios"===s?"cubic-bezier(0.32,0.72,0,1)":"cubic-bezier(0.0,0.0,0.2,1)",o="ios"===s?"cubic-bezier(1, 0, 0.68, 0.28)":"cubic-bezier(0.4, 0, 0.6, 1)",a=this.animation.direction(i?"reverse":"normal").easing(i?o:n);t?await a.play():a.play({sync:!0}),"reverse"===a.getDirection()&&a.direction("normal")}_isActive(){return!this.disabled&&!this.isPaneVisible}canSwipe(){return this.swipeGesture&&!this.isAnimating&&this._isActive()}canStart(e){return!(document.querySelector("ion-modal.show-modal")||!this.canSwipe())&&(!!this._isOpen||!y._getOpenSync()&&O(window,e.currentX,this.isEndSide,this.maxEdgeStart))}onWillStart(){return this.beforeAnimation(!this._isOpen,p),this.loadAnimation()}onStart(){this.isAnimating&&this.animation?this.animation.progressStart(!0,this._isOpen?1:0):v(!1,"isAnimating has to be true")}onMove(e){if(!this.isAnimating||!this.animation)return void v(!1,"isAnimating has to be true");const t=E(e.deltaX,this._isOpen,this.isEndSide)/this.width;this.animation.progressStep(this._isOpen?1-t:t)}onEnd(e){if(!this.isAnimating||!this.animation)return void v(!1,"isAnimating has to be true");const t=this._isOpen,i=this.isEndSide,s=E(e.deltaX,t,i),n=this.width,o=s/n,a=e.velocityX,r=n/2,d=a>=0&&(a>.2||e.deltaX>r),m=a<=0&&(a<-.2||e.deltaX<-r),l=t?i?d:m:i?m:d;let u=!t&&l;t&&!l&&(u=!0),this.lastOnEnd=e.currentTime;let b=l?.001:-.001;b+=h([0,0],[.4,0],[.6,1],[1,1],g(0,o<0?.01:o,.9999))[0]||0;const c=this._isOpen?!l:l;this.animation.easing("cubic-bezier(0.4, 0.0, 0.6, 1)").onFinish((()=>this.afterAnimation(u,p)),{oneTimeCallback:!0}).progressEnd(c?1:0,this._isOpen?1-b:b,300)}beforeAnimation(e,t){v(!this.isAnimating,"_before() should not be called while animating"),C("android")&&this.el.setAttribute("aria-hidden","true"),this.el.classList.add(A),this.el.setAttribute("tabindex","0"),this.backdropEl&&this.backdropEl.classList.add(P),this.contentEl&&(this.contentEl.classList.add(B),this.contentEl.setAttribute("aria-hidden","true")),this.blocker.block(),this.isAnimating=!0,e?this.ionWillOpen.emit():this.ionWillClose.emit({role:t})}afterAnimation(e,t){if(this._isOpen=e,this.isAnimating=!1,f(),this._isOpen||this.blocker.unblock(),e){C("android")&&this.el.removeAttribute("aria-hidden"),this.ionDidOpen.emit();const e=document.activeElement?.closest("ion-menu");e!==this.el&&this.el.focus(),document.addEventListener("focus",this.handleFocus,!0)}else this.el.removeAttribute("aria-hidden"),this.el.classList.remove(A),this.el.removeAttribute("tabindex"),this.contentEl&&(this.contentEl.classList.remove(B),this.contentEl.removeAttribute("aria-hidden")),this.backdropEl&&this.backdropEl.classList.remove(P),this.animation&&this.animation.stop(),this.ionDidClose.emit({role:t}),document.removeEventListener("focus",this.handleFocus,!0)}updateState(){const e=this._isActive();this.gesture&&this.gesture.enable(e&&this.swipeGesture),e||(this.isAnimating&&(this.operationCancelled=!0),this.afterAnimation(!1,p))}render(){const{type:e,disabled:t,el:i,isPaneVisible:s,inheritedAttributes:n,side:r}=this,h=k(this);return o(a,{key:"5cf26df26d4e539860cbeaea98ec621b98c3fcfc",onKeyDown:c()?null:this.onKeydown,role:"navigation","aria-label":n["aria-label"]||"menu",class:{[h]:!0,["menu-type-"+e]:!0,"menu-enabled":!t,["menu-side-"+r]:!0,"menu-pane-visible":s,"split-pane-side":j("ion-split-pane",i)}},o("div",{key:"f337016e293bb8665c99762e0c389dd6c372bb33",class:"menu-inner",part:"container",ref:e=>this.menuInnerEl=e},o("slot",{key:"4c3fe331aa42cd57d7ad9bd1f5910f8eeb62d7da"})),o("ion-backdrop",{key:"61af7ea876d81574841e1dd3e81e2352e555d096",ref:e=>this.backdropEl=e,class:"menu-backdrop",tappable:!1,stopPropagation:!1,part:"backdrop"}))}get el(){return this}static get watchers(){return{type:[{typeChanged:0}],disabled:[{disabledChanged:0}],side:[{sideChanged:0}],swipeGesture:[{swipeGestureChanged:0}]}}static get style(){return{ios:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){left:0;right:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}",md:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){left:0;right:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}"}}},[289,"ion-menu",{contentId:[513,"content-id"],menuId:[513,"menu-id"],type:[1025],disabled:[1028],side:[513],swipeGesture:[4,"swipe-gesture"],maxEdgeStart:[2,"max-edge-start"],isPaneVisible:[32],isEndSide:[32],isOpen:[64],isActive:[64],open:[64],close:[64],toggle:[64],setOpen:[64]},[[16,"ionSplitPaneVisible","onSplitPaneChanged"],[2,"click","onBackdropClick"]],{type:[{typeChanged:0}],disabled:[{disabledChanged:0}],side:[{sideChanged:0}],swipeGesture:[{swipeGestureChanged:0}]}]),E=(e,t,i)=>Math.max(0,t!==i?-e:e),O=(e,t,i,s)=>i?t>=e.innerWidth-s:t<=s,A="show-menu",P="show-backdrop",B="menu-content-open",G=z,D=function(){"undefined"!=typeof customElements&&["ion-menu","ion-backdrop"].forEach((e=>{switch(e){case"ion-menu":customElements.get(r(e))||customElements.define(r(e),z);break;case"ion-backdrop":customElements.get(r(e))||S()}}))};export{G as IonMenu,D as defineCustomElement}
4
+ import{d as t,H as e,i,e as s,c as n,h as o,f as a,t as r}from"./p-Ct2aBEue.js";import{g as h}from"./p-hHmYLOfE.js";import{q as d,B as m,o as l,u,G as p}from"./p-B02CcbPD.js";import{G as b}from"./p-B_gJaBk0.js";import{shouldUseCloseWatcher as c,updateCloseWatcher as f}from"./p-CohRJRIu.js";import{n as w,i as x,o as v,e as g}from"./p-B4IBdPVJ.js";import{m as y}from"./p-ODGeXc3M.js";import{b as k,a as C}from"./p-HthJZjZ6.js";import{d as j}from"./p-CW84OFQa.js";const S=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.ionWillOpen=i(this,"ionWillOpen",7),this.ionWillClose=i(this,"ionWillClose",7),this.ionDidOpen=i(this,"ionDidOpen",7),this.ionDidClose=i(this,"ionDidClose",7),this.ionMenuChange=i(this,"ionMenuChange",7),this.lastOnEnd=0,this.blocker=b.createBlocker({disableScroll:!0}),this.didLoad=!1,this.operationCancelled=!1,this.isAnimating=!1,this._isOpen=!1,this.inheritedAttributes={},this.handleFocus=t=>{const e=d(document);e&&!e.contains(this.el)||this.trapKeyboardFocus(t,document)},this.isPaneVisible=!1,this.isEndSide=!1,this.disabled=!1,this.side="start",this.swipeGesture=!0,this.maxEdgeStart=50}typeChanged(t,e){const i=this.contentEl;i&&(void 0!==e&&i.classList.remove("menu-content-"+e),i.classList.add("menu-content-"+t),i.removeAttribute("style")),this.menuInnerEl&&this.menuInnerEl.removeAttribute("style"),this.animation=void 0}disabledChanged(){this.updateState(),this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}sideChanged(){this.isEndSide=w(this.side,this.el),this.animation=void 0}swipeGestureChanged(){this.updateState()}async connectedCallback(){"undefined"!=typeof customElements&&null!=customElements&&await customElements.whenDefined("ion-menu"),void 0===this.type&&(this.type=s.get("menuType","overlay"));const t=void 0!==this.contentId?document.getElementById(this.contentId):null;null!==t?(this.el.contains(t)&&n('[ion-menu] - The "contentId" should refer to the main view\'s ion-content, not the ion-content inside of the ion-menu.'),this.contentEl=t,t.classList.add("menu-content"),this.typeChanged(this.type,void 0),this.sideChanged(),y._register(this),this.menuChanged(),this.gesture=(await import("./p-D0YpjgON.js")).createGesture({el:document,gestureName:"menu-swipe",gesturePriority:30,threshold:10,blurOnStart:!0,canStart:t=>this.canStart(t),onWillStart:()=>this.onWillStart(),onStart:()=>this.onStart(),onMove:t=>this.onMove(t),onEnd:t=>this.onEnd(t)}),this.updateState()):n('[ion-menu] - Must have a "content" element to listen for drag events on.')}componentWillLoad(){this.inheritedAttributes=x(this.el)}async componentDidLoad(){this.didLoad=!0;const t=this.getSplitPane();null!==t&&(this.isPaneVisible=await t.isVisible()),this.menuChanged(),this.updateState()}menuChanged(){this.didLoad&&this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}async disconnectedCallback(){await this.close(!1),this.blocker.destroy(),y._unregister(this),this.animation&&this.animation.destroy(),this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.animation=void 0,this.contentEl=void 0}onSplitPaneChanged(t){const e=this.getSplitPane();null!==e&&e===t.target&&(this.isPaneVisible=t.detail.visible,this.updateState())}onBackdropClick(t){this._isOpen&&this.lastOnEnd<t.timeStamp-100&&t.composedPath&&!t.composedPath().includes(this.menuInnerEl)&&(t.preventDefault(),t.stopPropagation(),this.close(void 0,m))}onKeydown(t){"Escape"===t.key&&this.close(void 0,m)}isOpen(){return Promise.resolve(this._isOpen)}isActive(){return Promise.resolve(this._isActive())}open(t=!0){return this.setOpen(!0,t)}close(t=!0,e){return this.setOpen(!1,t,e)}toggle(t=!0){return this.setOpen(!this._isOpen,t)}setOpen(t,e=!0,i){return document.activeElement?.blur(),y._setOpen(this,t,e,i)}trapKeyboardFocus(t,e){const i=t.target;if(i)if(this.el.contains(i))this.lastFocus=i;else{const{el:t}=this;l(t),this.lastFocus===e.activeElement&&u(t)}}async _setOpen(t,e=!0,i){return!(!this._isActive()||this.isAnimating||t===this._isOpen||(this.beforeAnimation(t,i),await this.loadAnimation(),await this.startAnimation(t,e),this.operationCancelled?(this.operationCancelled=!1,1):(this.afterAnimation(t,i),0)))}async loadAnimation(){const t=this.menuInnerEl.offsetWidth,e=w(this.side,this.el);if(t===this.width&&void 0!==this.animation&&e===this.isEndSide)return;this.width=t,this.isEndSide=e,this.animation&&(this.animation.destroy(),this.animation=void 0);const i=this.animation=await y._createAnimation(this.type,this);s.getBoolean("animated",!0)||i.duration(0),i.fill("both")}async startAnimation(t,e){const i=!t,s=k(this),n="ios"===s?"cubic-bezier(0.32,0.72,0,1)":"cubic-bezier(0.0,0.0,0.2,1)",o="ios"===s?"cubic-bezier(1, 0, 0.68, 0.28)":"cubic-bezier(0.4, 0, 0.6, 1)",a=this.animation.direction(i?"reverse":"normal").easing(i?o:n);e?await a.play():a.play({sync:!0}),"reverse"===a.getDirection()&&a.direction("normal")}_isActive(){return!this.disabled&&!this.isPaneVisible}getSplitPane(){const t=this.el.closest("ion-split-pane"),e=this.el.closest(".split-pane-main");return null===t||null!==e&&e!==t&&t.contains(e)?null:t}canSwipe(){return this.swipeGesture&&!this.isAnimating&&this._isActive()}canStart(t){return!(document.querySelector("ion-modal.show-modal")||!this.canSwipe())&&(!!this._isOpen||!y._getOpenSync()&&E(window,t.currentX,this.isEndSide,this.maxEdgeStart))}onWillStart(){return this.beforeAnimation(!this._isOpen,p),this.loadAnimation()}onStart(){this.isAnimating&&this.animation?this.animation.progressStart(!0,this._isOpen?1:0):v(!1,"isAnimating has to be true")}onMove(t){if(!this.isAnimating||!this.animation)return void v(!1,"isAnimating has to be true");const e=z(t.deltaX,this._isOpen,this.isEndSide)/this.width;this.animation.progressStep(this._isOpen?1-e:e)}onEnd(t){if(!this.isAnimating||!this.animation)return void v(!1,"isAnimating has to be true");const e=this._isOpen,i=this.isEndSide,s=z(t.deltaX,e,i),n=this.width,o=s/n,a=t.velocityX,r=n/2,d=a>=0&&(a>.2||t.deltaX>r),m=a<=0&&(a<-.2||t.deltaX<-r),l=e?i?d:m:i?m:d;let u=!e&&l;e&&!l&&(u=!0),this.lastOnEnd=t.currentTime;let b=l?.001:-.001;b+=h([0,0],[.4,0],[.6,1],[1,1],g(0,o<0?.01:o,.9999))[0]||0;const c=this._isOpen?!l:l;this.animation.easing("cubic-bezier(0.4, 0.0, 0.6, 1)").onFinish((()=>this.afterAnimation(u,p)),{oneTimeCallback:!0}).progressEnd(c?1:0,this._isOpen?1-b:b,300)}beforeAnimation(t,e){v(!this.isAnimating,"_before() should not be called while animating"),C("android")&&this.el.setAttribute("aria-hidden","true"),this.el.classList.add(O),this.el.setAttribute("tabindex","0"),this.backdropEl&&this.backdropEl.classList.add(P),this.contentEl&&(this.contentEl.classList.add(A),this.contentEl.setAttribute("aria-hidden","true")),this.blocker.block(),this.isAnimating=!0,t?this.ionWillOpen.emit():this.ionWillClose.emit({role:e})}afterAnimation(t,e){if(this._isOpen=t,this.isAnimating=!1,f(),this._isOpen||this.blocker.unblock(),t){C("android")&&this.el.removeAttribute("aria-hidden"),this.ionDidOpen.emit();const t=document.activeElement?.closest("ion-menu");t!==this.el&&this.el.focus(),document.addEventListener("focus",this.handleFocus,!0)}else this.el.removeAttribute("aria-hidden"),this.el.classList.remove(O),this.el.removeAttribute("tabindex"),this.contentEl&&(this.contentEl.classList.remove(A),this.contentEl.removeAttribute("aria-hidden")),this.backdropEl&&this.backdropEl.classList.remove(P),this.animation&&this.animation.stop(),this.ionDidClose.emit({role:e}),document.removeEventListener("focus",this.handleFocus,!0)}updateState(){const t=this._isActive();this.gesture&&this.gesture.enable(t&&this.swipeGesture),t||(this.isAnimating&&(this.operationCancelled=!0),this.afterAnimation(!1,p))}render(){const{type:t,disabled:e,isPaneVisible:i,inheritedAttributes:s,side:n}=this,r=k(this);return o(a,{key:"7481c8a32a135fb0fd6d5591eecbf3fb0a8e8dde",onKeyDown:c()?null:this.onKeydown,role:"navigation","aria-label":s["aria-label"]||"menu",class:{[r]:!0,["menu-type-"+t]:!0,"menu-enabled":!e,["menu-side-"+n]:!0,"menu-pane-visible":i,"split-pane-side":null!==this.getSplitPane()}},o("div",{key:"8ac2f0f531db944a46e5fef016d0b18bd7b804cc",class:"menu-inner",part:"container",ref:t=>this.menuInnerEl=t},o("slot",{key:"1ac3e13ccccf1adb7915b739fc794f2889b626ce"})),o("ion-backdrop",{key:"f8becbf4de1a13feb57fb87973befecb88510bab",ref:t=>this.backdropEl=t,class:"menu-backdrop",tappable:!1,stopPropagation:!1,part:"backdrop"}))}get el(){return this}static get watchers(){return{type:[{typeChanged:0}],disabled:[{disabledChanged:0}],side:[{sideChanged:0}],swipeGesture:[{swipeGestureChanged:0}]}}static get style(){return{ios:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){left:0;right:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}",md:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){left:0;right:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}"}}},[289,"ion-menu",{contentId:[513,"content-id"],menuId:[513,"menu-id"],type:[1025],disabled:[1028],side:[513],swipeGesture:[4,"swipe-gesture"],maxEdgeStart:[2,"max-edge-start"],isPaneVisible:[32],isEndSide:[32],isOpen:[64],isActive:[64],open:[64],close:[64],toggle:[64],setOpen:[64]},[[16,"ionSplitPaneVisible","onSplitPaneChanged"],[2,"click","onBackdropClick"]],{type:[{typeChanged:0}],disabled:[{disabledChanged:0}],side:[{sideChanged:0}],swipeGesture:[{swipeGestureChanged:0}]}]),z=(t,e,i)=>Math.max(0,e!==i?-t:t),E=(t,e,i,s)=>i?e>=t.innerWidth-s:e<=s,O="show-menu",P="show-backdrop",A="menu-content-open",B=S,G=function(){"undefined"!=typeof customElements&&["ion-menu","ion-backdrop"].forEach((t=>{switch(t){case"ion-menu":customElements.get(r(t))||customElements.define(r(t),S);break;case"ion-backdrop":customElements.get(r(t))||j()}}))};export{B as IonMenu,G as defineCustomElement}
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import{c as t,d as n,H as o,i as e,p as i,t as s}from"./p-Ct2aBEue.js";import{c as r,r as a,s as c}from"./p-B4IBdPVJ.js";import{a as u,i as h,g as l}from"./p-V1THdfzs.js";const f="root",d="forward",w=t=>"/"+t.filter((t=>t.length>0)).join("/"),m=t=>{let n,o,e=[""];if(null!=t){const i=t.indexOf("#");i>-1&&(o=t.substring(i+1),t=t.substring(0,i));const s=t.indexOf("?");s>-1&&(n=t.substring(s+1),t=t.substring(0,s)),e=t.split("/").map((t=>t.trim())).filter((t=>t.length>0)),0===e.length&&(e=[""])}return{segments:e,queryString:n,fragment:o}},p=async(n,o,e,i,s=!1,a)=>{try{const t=v(n);if(i>=o.length||!t)return s;await new Promise((n=>r(t,n)));const c=o[i],u=await t.setRouteId(c.id,c.params,e,a);return u.changed&&(e=f,s=!0),s=await p(u.element,o,e,i+1,s,a),u.markVisible&&await u.markVisible(),s}catch(n){return t("[ion-router] - Exception in writeNavState:",n),!1}},g=()=>new Promise((t=>a((()=>t())))),y=t=>{const n=t.closest(".ion-page");return null===n?null===document.querySelector(".ion-page"):null===n.closest(".ion-page-hidden, .tab-hidden")},b=":not([no-router]) ion-tabs, :not([no-router]) ion-router-outlet",v=t=>{if(t)return t.matches(b)?t:t.querySelector(b)??void 0},R=(t,n)=>n.find((n=>((t,n)=>{const{from:o,to:e}=n;if(void 0===e)return!1;if(o.length>t.length)return!1;for(let n=0;n<o.length;n++){const e=o[n];if("*"===e)return!0;if(e!==t[n])return!1}return o.length===t.length})(t,n))),S=(t,n)=>{const o=Math.min(t.length,n.length);let e=0;for(let i=0;i<o;i++){const o=t[i],s=n[i];if(o.id.toLowerCase()!==s.id)break;if(o.params){const t=Object.keys(o.params);if(t.length===s.segments.length){const n=t.map((t=>":"+t));for(let t=0;t<n.length&&n[t].toLowerCase()===s.segments[t];t++)e++}}e++}return e},E=(t,n)=>{const o=new N(t);let e,i=!1;for(let t=0;t<n.length;t++){const s=n[t].segments;if(""===s[0])i=!0;else{for(const n of s){const i=o.next();if(":"===n[0]){if(""===i)return null;e=e||[],(e[t]||(e[t]={}))[n.slice(1)]=i}else if(i!==n)return null}i=!1}}return i&&i!==(""===o.next())?null:e?n.map(((t,n)=>({id:t.id,segments:t.segments,params:C(t.params,e[n]),beforeEnter:t.beforeEnter,beforeLeave:t.beforeLeave}))):n},C=(t,n)=>t||n?{...t,...n}:void 0,T=(t,n)=>{let o=null,e=0;for(const i of n){const n=E(t,i);if(null!==n){const t=L(n);t>e&&(e=t,o=n)}}return o},L=t=>{let n=1,o=1;for(const e of t)for(const t of e.segments)":"===t[0]?n+=Math.pow(1,o):""!==t&&(n+=Math.pow(2,o)),o++;return n};class N{constructor(t){this.segments=t.slice()}next(){return this.segments.length>0?this.segments.shift():""}}const j=(t,n)=>n in t?t[n]:t.hasAttribute(n)?t.getAttribute(n):null,k=t=>Array.from(t.children).filter((t=>"ION-ROUTE-REDIRECT"===t.tagName)).map((t=>{const n=j(t,"to");return{from:m(j(t,"from")).segments,to:null==n?void 0:m(n)}})),B=t=>D(P(t)),P=t=>Array.from(t.children).filter((t=>"ION-ROUTE"===t.tagName&&!!t.component)).map((t=>{const n=j(t,"component");return{segments:m(j(t,"url")).segments,id:n.toLowerCase(),params:t.componentProps,beforeLeave:t.beforeLeave,beforeEnter:t.beforeEnter,children:P(t)}})),D=t=>{const n=[];for(const o of t)O([],n,o);return n},O=(t,n,o)=>{if(t=[...t,{id:o.id,segments:o.segments,params:o.params,beforeLeave:o.beforeLeave,beforeEnter:o.beforeEnter}],0!==o.children.length)for(const e of o.children)O(t,n,e);else n.push(t)},x=n(class extends o{constructor(t){super(),!1!==t&&this.__registerHost(),this.ionRouteWillChange=e(this,"ionRouteWillChange",7),this.ionRouteDidChange=e(this,"ionRouteDidChange",7),this.previousPath=null,this.busy=!1,this.state=0,this.lastState=0,this.fragmentScrollToken=0,this.root="/",this.useHash=!0}async componentWillLoad(){await(v(document.body)?Promise.resolve():new Promise((t=>{const n=()=>{window.removeEventListener("ionNavWillLoad",n),clearTimeout(o),t()},o=setTimeout(n,500);window.addEventListener("ionNavWillLoad",n,{once:!0})})));const t=await this.runGuards(this.getSegments());if(!0===t)await this.onRoutesChanged()&&this.maybeScrollToFragment();else if("object"==typeof t){const{redirect:n}=t,o=m(n);this.setSegments(o.segments,f,o.queryString,o.fragment),await this.writeNavStateRoot(o.segments,f)&&this.maybeScrollToFragment()}}componentDidLoad(){window.addEventListener("ionRouteRedirectChanged",c(this.onRedirectChanged.bind(this),10)),window.addEventListener("ionRouteDataChanged",c(this.onRoutesChanged.bind(this),100))}async onPopState(){const t=this.historyDirection();let n=this.getSegments();const o=await this.runGuards(n);if(!0!==o){if("object"!=typeof o)return!1;n=m(o.redirect).segments}const e=await this.writeNavStateRoot(n,t);return e&&this.maybeScrollToFragment(),e}onBackButton(t){t.detail.register(0,(t=>{this.back(),t()}))}async canTransition(){const t=await this.runGuards();return!0===t||"object"==typeof t&&t.redirect}async push(t,n="forward",o){if(t.startsWith(".")){const n=new URL(t,"https://host/"+(this.previousPath??"/"));t=n.pathname+n.search+n.hash}let e=m(t);const i=await this.runGuards(e.segments);if(!0!==i){if("object"!=typeof i)return!1;e=m(i.redirect)}this.setSegments(e.segments,n,e.queryString,e.fragment);const s=await this.writeNavStateRoot(e.segments,n,o);return s&&this.maybeScrollToFragment(),s}back(){return window.history.back(),Promise.resolve(this.waitPromise)}async printDebug(){(t=>{console.group(`[ion-core] ROUTES[${t.length}]`);for(const n of t){const t=[];n.forEach((n=>t.push(...n.segments)));const o=n.map((t=>t.id));console.debug("%c "+w(t),"font-weight: bold; padding-left: 20px","=>\t",`(${o.join(", ")})`)}console.groupEnd()})(B(this.el)),(t=>{console.group(`[ion-core] REDIRECTS[${t.length}]`);for(const n of t)n.to&&console.debug("FROM: ","$c "+w(n.from),"font-weight: bold"," TO: ","$c "+w(n.to.segments),"font-weight: bold");console.groupEnd()})(k(this.el))}async navChanged(t){if(this.busy)return i("[ion-router] - Router is busy, navChanged was cancelled."),!1;const{ids:n,outlet:o}=await(async()=>{const t=[];let n,o=window.document.body;for(;n=v(o);){const e=await n.getRouteId();if(!e)break;o=e.element,e.element=void 0,t.push(e)}return{ids:t,outlet:n}})(),e=((t,n)=>{let o=null,e=0;for(const i of n){const n=S(t,i);n>e&&(o=i,e=n)}return o?o.map(((n,o)=>({id:n.id,segments:n.segments,params:C(n.params,t[o]?.params)}))):null})(n,B(this.el));if(!e)return i("[ion-router] - No matching URL for",n.map((t=>t.id))),!1;const s=(t=>{const n=[];for(const o of t)for(const t of o.segments)if(":"===t[0]){const e=o.params&&o.params[t.slice(1)];if(!e)return null;n.push(e)}else""!==t&&n.push(t);return n})(e);if(!s)return i("[ion-router] - Router could not match path because some required param is missing."),!1;const r=w(s)===this.previousPath?this.getFragment():void 0;return this.setSegments(s,t,void 0,r),await this.safeWriteNavState(o,e,f,s,null,n.length),!0}onRedirectChanged(){const t=this.getSegments();t&&R(t,k(this.el))&&this.writeNavStateRoot(t,f)}onRoutesChanged(){return this.writeNavStateRoot(this.getSegments(),f)}historyDirection(){const t=window;null===t.history.state&&(this.state++,t.history.replaceState(this.state,t.document.title,t.document.location?.href));const n=t.history.state,o=this.lastState;return this.lastState=n,n>o||n>=o&&o>0?d:n<o?"back":f}async writeNavStateRoot(n,o,e){if(!n)return t("[ion-router] - URL is not part of the routing set."),!1;const i=k(this.el),s=R(n,i);let r=null;if(s){const{segments:t,queryString:e,fragment:i}=s.to;this.setSegments(t,o,e,i),r=s.from,n=t}const a=B(this.el),c=T(n,a);return c?this.safeWriteNavState(document.body,c,o,n,r,0,e):(t("[ion-router] - The path does not match any route."),!1)}async safeWriteNavState(n,o,e,i,s,r=0,a){const c=await this.lock();let u=!1;try{u=await this.writeNavState(n,o,e,i,s,r,a)}catch(n){t("[ion-router] - Exception in safeWriteNavState:",n)}return c(),u}async lock(){const t=this.waitPromise;let n;return this.waitPromise=new Promise((t=>n=t)),void 0!==t&&await t,n}async runGuards(t=this.getSegments(),n){if(void 0===n&&(n=m(this.previousPath).segments),!t||!n)return!0;const o=B(this.el),e=T(n,o),i=e&&e[e.length-1].beforeLeave,s=!i||await i();if(!1===s||"object"==typeof s)return s;const r=T(t,o),a=r&&r[r.length-1].beforeEnter;return!a||a()}async writeNavState(t,n,o,e,s,r=0,a){if(this.busy)return i("[ion-router] - Router is busy, transition was cancelled."),!1;this.busy=!0;const c=this.routeChangeEvent(e,s);c&&this.ionRouteWillChange.emit(c);const u=await p(t,n,o,r,!1,a);return this.busy=!1,c&&this.ionRouteDidChange.emit(c),u}setSegments(t,n,o,e){this.state++,this.fragmentScrollToken++,((t,n,o,e,i,s,r,a)=>{const c=((t,n,o,e)=>{let i=w(t);return n&&(i="#"+i),void 0!==o&&(i+="?"+o),void 0!==e&&(i+="#"+e),i})([...m(n).segments,...e],o,r,a);i===d?t.pushState(s,"",c):t.replaceState(s,"",c)})(window.history,this.root,this.useHash,t,n,this.state,o,e)}getSegments(){return((t,n,o)=>{const e=m(this.root).segments,i=o?t.hash.slice(1):t.pathname;return((t,n)=>{if(t.length>n.length)return null;if(t.length<=1&&""===t[0])return n;for(let o=0;o<t.length;o++)if(t[o]!==n[o])return null;return n.length===t.length?[""]:n.slice(t.length)})(e,m(i).segments)})(window.location,0,this.useHash)}getFragment(){return(this.useHash?m(window.location.hash.slice(1)).fragment:window.location.hash.slice(1))||void 0}maybeScrollToFragment(){const n=this.getFragment();if(!n)return;const o=this.fragmentScrollToken;(async(n,o=()=>!0)=>{if(null==n||""===n)return!1;let e;try{e=decodeURIComponent(n)}catch{e=n}const i=await(async(t,n)=>{const o="undefined"!=typeof CSS&&"function"==typeof CSS.escape?CSS.escape(t):null;for(let e=0;e<30;e++){if(!n())return null;let e=[];if(null!==o)try{e=[...document.querySelectorAll(`#${o}, a[name="${o}"]`)]}catch{e=[...document.querySelectorAll("#"+o)]}else{const n=document.getElementById(t);null!==n&&(e=[n])}for(let t=e.length-1;t>=0;t--)if(y(e[t]))return e[t];await g()}return null})(e,o);if(!i||!o())return!1;try{const t=u(i);if(t&&h(t)){const n=t,e=await l(n);if(await g(),!o())return!1;const s=i.getBoundingClientRect(),r=e.getBoundingClientRect(),a=s.top-r.top+e.scrollTop;await n.scrollToPoint(e.scrollLeft,a,300)}else i.scrollIntoView({behavior:"smooth"});return!0}catch(n){return t("[ion-router] - Exception in scrollToFragment:",n),!1}})(n,(()=>o===this.fragmentScrollToken)).catch((()=>{}))}routeChangeEvent(t,n){const o=this.previousPath,e=w(t);return this.previousPath=e,e===o?null:{from:o,redirectedFrom:n?w(n):null,to:e}}get el(){return this}},[0,"ion-router",{root:[1],useHash:[4,"use-hash"],canTransition:[64],push:[64],back:[64],printDebug:[64],navChanged:[64]},[[8,"popstate","onPopState"],[4,"ionBackButton","onBackButton"]]]),U=x,$=function(){"undefined"!=typeof customElements&&["ion-router"].forEach((t=>{"ion-router"===t&&(customElements.get(s(t))||customElements.define(s(t),x))}))};export{U as IonRouter,$ as defineCustomElement}
4
+ import{c as t,d as n,H as o,i as e,p as r,t as s}from"./p-Ct2aBEue.js";import{c as i,r as a,s as c}from"./p-B4IBdPVJ.js";import{a as u,i as l,g as h}from"./p-V1THdfzs.js";const f="root",d="forward",w="pathMatch",m=t=>"/"+t.filter((t=>t.length>0)).join("/"),p=t=>{const n=[];for(const o of t){for(const t of b(o.segments))if(":"===t[0]){const e=o.params&&o.params[t.slice(1)];if(!e)return null;n.push(e)}else""!==t&&n.push(t);n.push(...y(o))}return n},g=t=>"*"===t[t.length-1],y=t=>{const n=g(t.segments)?t.params?.[w]:void 0;return n?n.split("/").filter((t=>t.length>0)):[]},b=t=>g(t)?t.slice(0,-1):t,v=t=>{let n,o,e=[""];if(null!=t){const r=t.indexOf("#");r>-1&&(o=t.substring(r+1),t=t.substring(0,r));const s=t.indexOf("?");s>-1&&(n=t.substring(s+1),t=t.substring(0,s)),e=t.split("/").map((t=>t.trim())).filter((t=>t.length>0)),0===e.length&&(e=[""])}return{segments:e,queryString:n,fragment:o}},R=async(n,o,e,r,s=!1,a)=>{try{const t=T(n);if(r>=o.length||!t)return s;await new Promise((n=>i(t,n)));const c=o[r],u=await t.setRouteId(c.id,c.params,e,a);return u.changed&&(e=f,s=!0),s=await R(u.element,o,e,r+1,s,a),u.markVisible&&await u.markVisible(),s}catch(n){return t("[ion-router] - Exception in writeNavState:",n),!1}},S=()=>new Promise((t=>a((()=>t())))),E=t=>{const n=t.closest(".ion-page");return null===n?null===document.querySelector(".ion-page"):null===n.closest(".ion-page-hidden, .tab-hidden")},C=":not([no-router]) ion-tabs, :not([no-router]) ion-router-outlet",T=t=>{if(t)return t.matches(C)?t:t.querySelector(C)??void 0},j=(t,n)=>n.find((n=>((t,n)=>{const{from:o,to:e}=n;if(void 0===e)return!1;if(o.length>t.length)return!1;for(let n=0;n<o.length;n++){const e=o[n];if("*"===e)return!0;if(e!==t[n])return!1}return o.length===t.length})(t,n))),L=(t,n)=>{const o=Math.min(t.length,n.length);let e=0;for(let r=0;r<o;r++){const o=t[r],s=n[r];if(o.id.toLowerCase()!==s.id)break;if(void 0!==o.params?.[w]&&g(s.segments)&&e++,o.params){const t=Object.keys(o.params);if(t.length===s.segments.length){const n=t.map((t=>":"+t));for(let t=0;t<n.length&&n[t].toLowerCase()===s.segments[t];t++)e++}}e++}return e},N=(t,n)=>{const o=new I(t);let e,r=!1;for(let t=0;t<n.length;t++){const s=n[t].segments;if(""===s[0])r=!0;else{const i={};for(const t of b(s)){const n=o.next();if(":"===t[0]){if(""===n)return null;i[t.slice(1)]=n}else if(n!==t)return null}t===n.length-1&&g(s)&&(i[w]=o.rest().join("/")),Object.keys(i).length>0&&(e=e||[],e[t]=i),r=!1}}return r&&r!==(""===o.next())?null:e?n.map(((t,n)=>({id:t.id,segments:t.segments,params:k(t.params,e[n]),beforeEnter:t.beforeEnter,beforeLeave:t.beforeLeave}))):n},k=(t,n)=>t||n?{...t,...n}:void 0,B=t=>D(t)?1:null!==p(t)?2:0,O=(t,n)=>{let o=null,e=0,r=null,s=0,i=-1,a=null;for(const c of n){const n=N(t,c);if(null!==n){const c=$(n);c>e&&(e=c,o=n),D(n)?(null===a||x(n,a))&&(a=n):P(t,n)||(c>s&&(s=c,r=n),i=Math.max(i,U(n)))}}return null===a?o:U(a)>i?a:r},P=(t,n)=>{const o=p(n);return null!==o&&o.length<t.filter((t=>""!==t)).length},D=t=>g(t[t.length-1].segments),x=(t,n)=>{const o=U(t),e=U(n);return o>e||o===e&&$(t)>$(n)},U=t=>{let n=0;for(const o of t)for(const t of b(o.segments))""!==t&&":"!==t[0]&&n++;return n},$=t=>{let n=1,o=1;for(const e of t)for(const t of b(e.segments))":"===t[0]?n+=Math.pow(1,o):""!==t&&(n+=Math.pow(2,o)),o++;return n};class I{constructor(t){this.segments=t.slice()}next(){return this.segments.length>0?this.segments.shift():""}rest(){const t=this.segments.filter((t=>""!==t));return this.segments=[],t}}const M=(t,n)=>n in t?t[n]:t.hasAttribute(n)?t.getAttribute(n):null,W=t=>Array.from(t.children).filter((t=>"ION-ROUTE-REDIRECT"===t.tagName)).map((t=>{const n=M(t,"to");return{from:v(M(t,"from")).segments,to:null==n?void 0:v(n)}})),F=t=>A(q(t)),q=t=>Array.from(t.children).filter((t=>"ION-ROUTE"===t.tagName&&!!t.component)).map((t=>{const n=M(t,"component");return{segments:v(M(t,"url")).segments,id:n.toLowerCase(),params:t.componentProps,beforeLeave:t.beforeLeave,beforeEnter:t.beforeEnter,children:q(t)}})),A=t=>{const n=[];for(const o of t)H([],n,o);return n},H=(t,n,o)=>{if(t=[...t,{id:o.id,segments:o.segments,params:o.params,beforeLeave:o.beforeLeave,beforeEnter:o.beforeEnter}],0!==o.children.length)for(const e of o.children)H(t,n,e);else n.push(t)},V=n(class extends o{constructor(t){super(),!1!==t&&this.__registerHost(),this.ionRouteWillChange=e(this,"ionRouteWillChange",7),this.ionRouteDidChange=e(this,"ionRouteDidChange",7),this.previousPath=null,this.busy=!1,this.state=0,this.lastState=0,this.fragmentScrollToken=0,this.root="/",this.useHash=!0}async componentWillLoad(){await(T(document.body)?Promise.resolve():new Promise((t=>{const n=()=>{window.removeEventListener("ionNavWillLoad",n),clearTimeout(o),t()},o=setTimeout(n,500);window.addEventListener("ionNavWillLoad",n,{once:!0})})));const t=await this.runGuards(this.getSegments());if(!0===t)await this.onRoutesChanged()&&this.maybeScrollToFragment();else if("object"==typeof t){const{redirect:n}=t,o=v(n);this.setSegments(o.segments,f,o.queryString,o.fragment),await this.writeNavStateRoot(o.segments,f)&&this.maybeScrollToFragment()}}componentDidLoad(){window.addEventListener("ionRouteRedirectChanged",c(this.onRedirectChanged.bind(this),10)),window.addEventListener("ionRouteDataChanged",c(this.onRoutesChanged.bind(this),100))}async onPopState(){const t=this.historyDirection();let n=this.getSegments();const o=await this.runGuards(n);if(!0!==o){if("object"!=typeof o)return!1;n=v(o.redirect).segments}const e=await this.writeNavStateRoot(n,t);return e&&this.maybeScrollToFragment(),e}onBackButton(t){t.detail.register(0,(t=>{this.back(),t()}))}async canTransition(){const t=await this.runGuards();return!0===t||"object"==typeof t&&t.redirect}async push(t,n="forward",o){if(t.startsWith(".")){const n=new URL(t,"https://host/"+(this.previousPath??"/"));t=n.pathname+n.search+n.hash}let e=v(t);const r=await this.runGuards(e.segments);if(!0!==r){if("object"!=typeof r)return!1;e=v(r.redirect)}this.setSegments(e.segments,n,e.queryString,e.fragment);const s=await this.writeNavStateRoot(e.segments,n,o);return s&&this.maybeScrollToFragment(),s}back(){return window.history.back(),Promise.resolve(this.waitPromise)}async printDebug(){(t=>{console.group(`[ion-core] ROUTES[${t.length}]`);for(const n of t){const t=[];n.forEach((n=>t.push(...n.segments)));const o=n.map((t=>t.id));console.debug("%c "+m(t),"font-weight: bold; padding-left: 20px","=>\t",`(${o.join(", ")})`)}console.groupEnd()})(F(this.el)),(t=>{console.group(`[ion-core] REDIRECTS[${t.length}]`);for(const n of t)n.to&&console.debug("FROM: ","$c "+m(n.from),"font-weight: bold"," TO: ","$c "+m(n.to.segments),"font-weight: bold");console.groupEnd()})(W(this.el))}async navChanged(t){if(this.busy)return r("[ion-router] - Router is busy, navChanged was cancelled."),!1;const{ids:n,outlet:o}=await(async()=>{const t=[];let n,o=window.document.body;for(;n=T(o);){const e=await n.getRouteId();if(!e)break;o=e.element,e.element=void 0,t.push(e)}return{ids:t,outlet:n}})(),e=((t,n)=>{let o=0,e=[];for(const r of n){const n=L(t,r);n>o?(o=n,e=[r]):n>0&&n===o&&e.push(r)}const r=e.map((n=>n.map(((n,o)=>({id:n.id,segments:n.segments,params:k(n.params,t[o]?.params)})))));return r.some(D)?r.reduce(((t,n)=>B(n)>B(t)?n:t)):r.length>0?r[0]:null})(n,F(this.el));if(!e)return r("[ion-router] - No matching URL for",n.map((t=>t.id))),!1;const s=p(e);if(!s)return r("[ion-router] - Router could not match path because some required param is missing."),!1;const i=m(s)===this.previousPath?this.getFragment():void 0;return this.setSegments(s,t,void 0,i),await this.safeWriteNavState(o,e,f,s,null,n.length),!0}onRedirectChanged(){const t=this.getSegments();t&&j(t,W(this.el))&&this.writeNavStateRoot(t,f)}onRoutesChanged(){return this.writeNavStateRoot(this.getSegments(),f)}historyDirection(){const t=window;null===t.history.state&&(this.state++,t.history.replaceState(this.state,t.document.title,t.document.location?.href));const n=t.history.state,o=this.lastState;return this.lastState=n,n>o||n>=o&&o>0?d:n<o?"back":f}async writeNavStateRoot(n,o,e){if(!n)return t("[ion-router] - URL is not part of the routing set."),!1;const r=W(this.el),s=j(n,r);let i=null;if(s){const{segments:t,queryString:e,fragment:r}=s.to;this.setSegments(t,o,e,r),i=s.from,n=t}const a=F(this.el),c=O(n,a);return c?this.safeWriteNavState(document.body,c,o,n,i,0,e):(t("[ion-router] - The path does not match any route."),!1)}async safeWriteNavState(n,o,e,r,s,i=0,a){const c=await this.lock();let u=!1;try{u=await this.writeNavState(n,o,e,r,s,i,a)}catch(n){t("[ion-router] - Exception in safeWriteNavState:",n)}return c(),u}async lock(){const t=this.waitPromise;let n;return this.waitPromise=new Promise((t=>n=t)),void 0!==t&&await t,n}async runGuards(t=this.getSegments(),n){if(void 0===n&&(n=v(this.previousPath).segments),!t||!n)return!0;const o=F(this.el),e=O(n,o),r=e&&e[e.length-1].beforeLeave,s=!r||await r();if(!1===s||"object"==typeof s)return s;const i=O(t,o),a=i&&i[i.length-1].beforeEnter;return!a||a()}async writeNavState(t,n,o,e,s,i=0,a){if(this.busy)return r("[ion-router] - Router is busy, transition was cancelled."),!1;this.busy=!0;const c=this.routeChangeEvent(e,s);c&&this.ionRouteWillChange.emit(c);const u=await R(t,n,o,i,!1,a);return this.busy=!1,c&&this.ionRouteDidChange.emit(c),u}setSegments(t,n,o,e){this.state++,this.fragmentScrollToken++,((t,n,o,e,r,s,i,a)=>{const c=((t,n,o,e)=>{let r=m(t);return n&&(r="#"+r),void 0!==o&&(r+="?"+o),void 0!==e&&(r+="#"+e),r})([...v(n).segments,...e],o,i,a);r===d?t.pushState(s,"",c):t.replaceState(s,"",c)})(window.history,this.root,this.useHash,t,n,this.state,o,e)}getSegments(){return((t,n,o)=>{const e=v(this.root).segments,r=o?t.hash.slice(1):t.pathname;return((t,n)=>{if(t.length>n.length)return null;if(t.length<=1&&""===t[0])return n;for(let o=0;o<t.length;o++)if(t[o]!==n[o])return null;return n.length===t.length?[""]:n.slice(t.length)})(e,v(r).segments)})(window.location,0,this.useHash)}getFragment(){return(this.useHash?v(window.location.hash.slice(1)).fragment:window.location.hash.slice(1))||void 0}maybeScrollToFragment(){const n=this.getFragment();if(!n)return;const o=this.fragmentScrollToken;(async(n,o=()=>!0)=>{if(null==n||""===n)return!1;let e;try{e=decodeURIComponent(n)}catch{e=n}const r=await(async(t,n)=>{const o="undefined"!=typeof CSS&&"function"==typeof CSS.escape?CSS.escape(t):null;for(let e=0;e<30;e++){if(!n())return null;let e=[];if(null!==o)try{e=[...document.querySelectorAll(`#${o}, a[name="${o}"]`)]}catch{e=[...document.querySelectorAll("#"+o)]}else{const n=document.getElementById(t);null!==n&&(e=[n])}for(let t=e.length-1;t>=0;t--)if(E(e[t]))return e[t];await S()}return null})(e,o);if(!r||!o())return!1;try{const t=u(r);if(t&&l(t)){const n=t,e=await h(n);if(await S(),!o())return!1;const s=r.getBoundingClientRect(),i=e.getBoundingClientRect(),a=s.top-i.top+e.scrollTop;await n.scrollToPoint(e.scrollLeft,a,300)}else r.scrollIntoView({behavior:"smooth"});return!0}catch(n){return t("[ion-router] - Exception in scrollToFragment:",n),!1}})(n,(()=>o===this.fragmentScrollToken)).catch((()=>{}))}routeChangeEvent(t,n){const o=this.previousPath,e=m(t);return this.previousPath=e,e===o?null:{from:o,redirectedFrom:n?m(n):null,to:e}}get el(){return this}},[0,"ion-router",{root:[1],useHash:[4,"use-hash"],canTransition:[64],push:[64],back:[64],printDebug:[64],navChanged:[64]},[[8,"popstate","onPopState"],[4,"ionBackButton","onBackButton"]]]),z=V,G=function(){"undefined"!=typeof customElements&&["ion-router"].forEach((t=>{"ion-router"===t&&(customElements.get(s(t))||customElements.define(s(t),V))}))};export{z as IonRouter,G as defineCustomElement}
@@ -4,14 +4,16 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-BiQyIvoc.js');
7
+ var attributeController = require('./attribute-controller-BjTE2TOf.js');
7
8
  var helpers = require('./helpers-Cqr69qxA.js');
8
9
  var dir = require('./dir-zwDPRE5K.js');
10
+ var validity = require('./validity-BpS37YFM.js');
9
11
  var theme = require('./theme-Bw0rpaNN.js');
10
12
  var ionicGlobal = require('./ionic-global-48ceLiJ6.js');
11
13
 
12
- const inputOtpIosCss = () => `.sc-ion-input-otp-ios-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-ios{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-ios{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color);background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-ios{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-ios{display:none}.input-otp-separator.sc-ion-input-otp-ios{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-ios-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:8px}.input-otp-size-medium.sc-ion-input-otp-ios-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-ios-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios,.input-otp-size-large.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:12px}.input-otp-shape-round.sc-ion-input-otp-ios-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-ios-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-ios-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-ios-h{--border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-ios-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-disabled.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-ios-h{--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-ios-h,.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-ios-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-ios-h{--border-width:0.55px}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-width:1px}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))))}`;
14
+ const inputOtpIosCss = () => `.sc-ion-input-otp-ios-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);--border-color:initial;display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-ios{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-ios{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color, var(--internal-border-color));background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-ios{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-ios{display:none}.input-otp-bottom.sc-ion-input-otp-ios{font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-bottom.sc-ion-input-otp-ios .error-text.sc-ion-input-otp-ios{display:none;color:var(--highlight-color-invalid)}.input-otp-bottom.sc-ion-input-otp-ios .helper-text.sc-ion-input-otp-ios{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h .input-otp-bottom.sc-ion-input-otp-ios .error-text.sc-ion-input-otp-ios{display:block}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h .input-otp-bottom.sc-ion-input-otp-ios .helper-text.sc-ion-input-otp-ios{display:none}.input-otp-separator.sc-ion-input-otp-ios{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-ios-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:8px}.input-otp-size-medium.sc-ion-input-otp-ios-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-ios-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios,.input-otp-size-large.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:12px}.input-otp-shape-round.sc-ion-input-otp-ios-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-ios-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-ios-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-ios-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-disabled.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-ios-h,.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-ios-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-ios-h{--border-width:0.55px}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-width:1px}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))))}`;
13
15
 
14
- const inputOtpMdCss = () => `.sc-ion-input-otp-md-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-md{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-md{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color);background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-md{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-md{display:none}.input-otp-separator.sc-ion-input-otp-md{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-md-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:8px}.input-otp-size-medium.sc-ion-input-otp-md-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-md-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md,.input-otp-size-large.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:12px}.input-otp-shape-round.sc-ion-input-otp-md-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-md-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-md-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-md-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-md-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-disabled.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-md-h,.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-md-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-md-h{--border-width:1px}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-width:2px}.input-otp-fill-outline.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3))}`;
16
+ const inputOtpMdCss = () => `.sc-ion-input-otp-md-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);--border-color:initial;display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-md{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-md{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color, var(--internal-border-color));background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-md{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-md{display:none}.input-otp-bottom.sc-ion-input-otp-md{font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-bottom.sc-ion-input-otp-md .error-text.sc-ion-input-otp-md{display:none;color:var(--highlight-color-invalid)}.input-otp-bottom.sc-ion-input-otp-md .helper-text.sc-ion-input-otp-md{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h .input-otp-bottom.sc-ion-input-otp-md .error-text.sc-ion-input-otp-md{display:block}.ion-touched.ion-invalid.sc-ion-input-otp-md-h .input-otp-bottom.sc-ion-input-otp-md .helper-text.sc-ion-input-otp-md{display:none}.input-otp-separator.sc-ion-input-otp-md{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-md-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:8px}.input-otp-size-medium.sc-ion-input-otp-md-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-md-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md,.input-otp-size-large.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:12px}.input-otp-shape-round.sc-ion-input-otp-md-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-md-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-md-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-md-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-md-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-disabled.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-md-h,.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-md-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-md-h{--border-width:1px}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-width:2px}.input-otp-fill-outline.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3))}`;
15
17
 
16
18
  const InputOTP = class {
17
19
  constructor(hostRef) {
@@ -21,9 +23,11 @@ const InputOTP = class {
21
23
  this.ionComplete = index.createEvent(this, "ionComplete", 7);
22
24
  this.ionBlur = index.createEvent(this, "ionBlur", 7);
23
25
  this.ionFocus = index.createEvent(this, "ionFocus", 7);
24
- this.inheritedAttributes = {};
25
26
  this.inputRefs = [];
26
27
  this.inputId = `ion-input-otp-${inputIds++}`;
28
+ this.helperTextId = `${this.inputId}-helper-text`;
29
+ this.errorTextId = `${this.inputId}-error-text`;
30
+ this.descriptionId = `${this.inputId}-description`;
27
31
  this.parsedSeparators = [];
28
32
  /**
29
33
  * Tracks whether the user is navigating through input boxes using keyboard navigation
@@ -39,6 +43,7 @@ const InputOTP = class {
39
43
  this.inputValues = [];
40
44
  this.hasFocus = false;
41
45
  this.previousInputValues = [];
46
+ this.isInvalid = false;
42
47
  /**
43
48
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
44
49
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -391,6 +396,10 @@ const InputOTP = class {
391
396
  this.inputRefs[tabbableIndex]?.focus();
392
397
  }
393
398
  }
399
+ // The host keeps these (see `HOST_ARIA_ATTRIBUTES`), so re-render when they change
400
+ onHostAriaChange() {
401
+ index.forceUpdate(this);
402
+ }
394
403
  valueChanged() {
395
404
  this.initializeValues();
396
405
  this.updateTabIndexes();
@@ -447,13 +456,45 @@ const InputOTP = class {
447
456
  }
448
457
  this.parsedSeparators = separatorValues.filter((pos) => pos <= length);
449
458
  }
459
+ connectedCallback() {
460
+ const { el } = this;
461
+ if (typeof MutationObserver !== 'undefined') {
462
+ this.validationObserver = new MutationObserver(() => {
463
+ const newIsInvalid = validity.checkInvalidState(el);
464
+ if (this.isInvalid !== newIsInvalid) {
465
+ this.isInvalid = newIsInvalid;
466
+ // Force a re-render to update aria-describedby immediately
467
+ index.forceUpdate(this);
468
+ }
469
+ });
470
+ this.validationObserver.observe(el, {
471
+ attributes: true,
472
+ attributeFilter: ['class'],
473
+ });
474
+ }
475
+ this.isInvalid = validity.checkInvalidState(el);
476
+ // Resumes watching after a move, since `componentWillLoad` only runs once
477
+ this.ariaController?.init();
478
+ }
479
+ disconnectedCallback() {
480
+ this.ariaController?.destroy();
481
+ if (this.validationObserver) {
482
+ this.validationObserver.disconnect();
483
+ this.validationObserver = undefined;
484
+ }
485
+ }
450
486
  componentWillLoad() {
451
- this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
487
+ // Only read `role` at load so a later host write isn't copied to the group
488
+ this.ariaController = attributeController.createAttributeController(this.el, helpers.ariaAttributes.filter((attr) => !HOST_ARIA_ATTRIBUTES.includes(attr)), () => index.forceUpdate(this), ['role']);
452
489
  this.processSeparators();
453
490
  this.initializeValues();
454
491
  }
455
492
  componentDidLoad() {
456
493
  this.updateTabIndexes();
494
+ // The description only exists after the first render, so render again to reference it
495
+ if (this.getDescriptionText()) {
496
+ index.forceUpdate(this);
497
+ }
457
498
  }
458
499
  componentDidRender() {
459
500
  if (this.updateTabIndexesAfterRender) {
@@ -631,14 +672,77 @@ const InputOTP = class {
631
672
  const { length } = this;
632
673
  return this.parsedSeparators.includes(index + 1) && index < length - 1;
633
674
  }
675
+ /**
676
+ * Returns `undefined` until the first render creates the description container.
677
+ */
678
+ getDescriptionText() {
679
+ return this.el.querySelector('.input-otp-description')?.textContent?.trim();
680
+ }
681
+ getHintTextId() {
682
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
683
+ if (isInvalid && errorText) {
684
+ return errorTextId;
685
+ }
686
+ if (helperText) {
687
+ return helperTextId;
688
+ }
689
+ return undefined;
690
+ }
691
+ renderHintText() {
692
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
693
+ return [
694
+ index.h("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
695
+ index.h("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
696
+ ];
697
+ }
698
+ renderBottomContent() {
699
+ const { helperText, errorText } = this;
700
+ if (!helperText && !errorText) {
701
+ return;
702
+ }
703
+ return index.h("div", { class: "input-otp-bottom" }, this.renderHintText());
704
+ }
705
+ /**
706
+ * A custom formatter is used as is so translators control the whole name.
707
+ * With a host `aria-labelledby`, each box also references itself so its
708
+ * position is still read.
709
+ */
710
+ getInputLabelAttributes(index$1, hostAttributes) {
711
+ const { inputId, inputLabelFormatter, length } = this;
712
+ const hostLabel = hostAttributes['aria-label'];
713
+ const hostLabelledBy = hostAttributes['aria-labelledby'];
714
+ const position = `${index$1 + 1} of ${length}`;
715
+ if (inputLabelFormatter !== undefined) {
716
+ try {
717
+ return { 'aria-label': inputLabelFormatter(index$1, length) };
718
+ }
719
+ catch (e) {
720
+ index.printIonError('[ion-input-otp] - Exception in provided `inputLabelFormatter`:', e);
721
+ }
722
+ }
723
+ if (hostLabelledBy) {
724
+ return { 'aria-label': position, 'aria-labelledby': `${hostLabelledBy} ${inputId}-${index$1}` };
725
+ }
726
+ return { 'aria-label': hostLabel ? `${hostLabel}, ${position}` : `Input ${position}` };
727
+ }
634
728
  render() {
635
- const { autocapitalize, color, disabled, el, fill, hasFocus, inheritedAttributes, inputId, inputRefs, inputValues, length, readonly, shape, size, } = this;
729
+ const { ariaController, autocapitalize, color, descriptionId, disabled, el, fill, hasFocus, inputId, inputRefs, inputValues, isInvalid, length, readonly, shape, size, } = this;
636
730
  const mode = ionicGlobal.getIonMode(this);
637
731
  const inputmode = this.getInputmode();
638
732
  const tabbableIndex = this.getTabbableIndex();
639
733
  const pattern = this.getPattern();
640
- const hasDescription = el.querySelector('.input-otp-description')?.textContent?.trim() !== '';
641
- return (index.h(index.Host, { key: 'def9fbd4fa135e6f435380c6ea86ac1621b4a111', class: theme.createColorClasses(color, {
734
+ const descriptionText = this.getDescriptionText();
735
+ // Keep the description visible until the first render can check it
736
+ const hasDescription = descriptionText !== '';
737
+ /**
738
+ * Screen readers only announce these from the focused input. The
739
+ * description stays on the group so it isn't repeated for every input.
740
+ */
741
+ const { 'aria-errormessage': ariaErrorMessage, 'aria-required': ariaRequired, ...groupAttributes } = ariaController?.attributes ?? {};
742
+ const hostDescribedBy = el.getAttribute('aria-describedby');
743
+ const hostInvalid = el.getAttribute('aria-invalid') ?? undefined;
744
+ const describedBy = [hostDescribedBy, this.getHintTextId()].filter(Boolean).join(' ');
745
+ return (index.h(index.Host, { key: '5b13c3bed3979e269cf4409895954edb171d68f3', class: theme.createColorClasses(color, {
642
746
  [mode]: true,
643
747
  'has-focus': hasFocus,
644
748
  [`input-otp-size-${size}`]: true,
@@ -646,7 +750,7 @@ const InputOTP = class {
646
750
  [`input-otp-fill-${fill}`]: true,
647
751
  'input-otp-disabled': disabled,
648
752
  'input-otp-readonly': readonly,
649
- }) }, index.h("div", { key: '5d3d7646a3d4fc856b7b2e1f53d29fca47b10baf', role: "group", "aria-label": "One-time password input", class: "input-otp-group", ...inheritedAttributes }, Array.from({ length }).map((_, index$1) => (index.h(index.Fragment, null, index.h("div", { class: "native-wrapper" }, index.h("input", { class: "native-input", id: `${inputId}-${index$1}`, "aria-label": `Input ${index$1 + 1} of ${length}`, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index$1 === tabbableIndex ? 0 : -1, value: inputValues[index$1] || '', autocomplete: "one-time-code", ref: (el) => {
753
+ }) }, index.h("div", { key: '6db010743f0eb5e059dc00de5822f117a264bb16', role: "group", class: "input-otp-group", ...groupAttributes, "aria-label": groupAttributes['aria-label'] || 'One-time password input', "aria-describedby": descriptionText ? descriptionId : undefined }, Array.from({ length }).map((_, index$1) => (index.h(index.Fragment, null, index.h("div", { class: "native-wrapper" }, index.h("input", { class: "native-input", id: `${inputId}-${index$1}`, ...this.getInputLabelAttributes(index$1, groupAttributes), "aria-describedby": describedBy || undefined, "aria-errormessage": ariaErrorMessage, "aria-invalid": isInvalid ? 'true' : hostInvalid, "aria-required": ariaRequired, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index$1 === tabbableIndex ? 0 : -1, value: inputValues[index$1] || '', autocomplete: "one-time-code", ref: (el) => {
650
754
  if (el) {
651
755
  inputRefs[index$1] = el;
652
756
  }
@@ -654,13 +758,19 @@ const InputOTP = class {
654
758
  // The input was removed, so drop its ref and any after it.
655
759
  inputRefs.splice(index$1);
656
760
  }
657
- }, onInput: this.onInput(index$1), onBlur: this.onBlur, onFocus: this.onFocus(index$1), onKeyDown: this.onKeyDown(index$1), onPaste: this.onPaste })), this.showSeparator(index$1) && index.h("div", { class: "input-otp-separator" }))))), index.h("div", { key: '9d72a4ab35b5fdd6bba9701050c385ed253b310f', class: {
761
+ }, onInput: this.onInput(index$1), onBlur: this.onBlur, onFocus: this.onFocus(index$1), onKeyDown: this.onKeyDown(index$1), onPaste: this.onPaste })), this.showSeparator(index$1) && index.h("div", { class: "input-otp-separator" }))))), index.h("div", { key: '4d55d7532dcc28fadcb2f860dd2fcd2aa45ccccc', id: descriptionId, class: {
658
762
  'input-otp-description': true,
659
763
  'input-otp-description-hidden': !hasDescription,
660
- } }, index.h("slot", { key: '7deb3373c0d4e5deac22fa51577d271b9bb3a6d2' }))));
764
+ } }, index.h("slot", { key: '5d6823f48a9786799c9d485ce0d6b9de2ae7f537' })), this.renderBottomContent()));
661
765
  }
662
766
  get el() { return index.getElement(this); }
663
767
  static get watchers() { return {
768
+ "aria-describedby": [{
769
+ "onHostAriaChange": 0
770
+ }],
771
+ "aria-invalid": [{
772
+ "onHostAriaChange": 0
773
+ }],
664
774
  "value": [{
665
775
  "valueChanged": 0
666
776
  }],
@@ -675,6 +785,12 @@ const InputOTP = class {
675
785
  }; }
676
786
  };
677
787
  let inputIds = 0;
788
+ /**
789
+ * The attribute controller removes these from the host, so an app could never
790
+ * clear them. They stay on the host instead, which only works for global
791
+ * attributes since the host has no role.
792
+ */
793
+ const HOST_ARIA_ATTRIBUTES = ['aria-describedby', 'aria-invalid'];
678
794
  InputOTP.style = {
679
795
  ios: inputOtpIosCss(),
680
796
  md: inputOtpMdCss()