@desource/phone-mask-svelte 1.1.2 → 1.3.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,63 @@
1
1
  # @desource/phone-mask-svelte
2
2
 
3
+ ## 1.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Core Upgrades:
8
+ - Improved process keydown event handler for browser autocomplete cases
9
+
10
+ - Vue Upgrades:
11
+ - Added new `@desource/phone-mask-vue/core` subpath export (direct core helpers re-export)
12
+ - Root `PMaskHelpers` facade removed from index (helpers now via `/core` to reduce bundle size impact for Vue users)
13
+ - Added `id` and `name` props on `PhoneInput`, passed to underlying `<input>` element for better form integration and accessibility
14
+ - Added autofill style normalization (`-webkit-autofill` / `-moz-autofill`) for better visual consistency
15
+
16
+ - React Upgrades:
17
+ - Added new `@desource/phone-mask-react/core` subpath export (direct core helpers re-export)
18
+ - Root `PMaskHelpers` facade removed from index (helpers now via `/core` to reduce bundle size impact for React users)
19
+ - Added `id` and `name` props on `PhoneInput`, passed to underlying `<input>` element for better form integration and accessibility
20
+ - Added autofill style normalization (`-webkit-autofill` / `-moz-autofill`) for better visual consistency
21
+ - `useCountrySelector`, `useClipboard` internals stabilized (deps/callback consistency improvements)
22
+ - `usePhoneMask` callback dependency tuning for better stability
23
+
24
+ - Svelte Upgrades:
25
+ - Added new `@desource/phone-mask-svelte/core` subpath export (direct core helpers re-export)
26
+ - Root `PMaskHelpers` facade removed from index (helpers now via `/core` to reduce bundle size impact for Svelte users)
27
+ - Added `id` and `name` props on `PhoneInput`, passed to underlying `<input>` element for better form integration and accessibility
28
+ - Added autofill style normalization (`-webkit-autofill` / `-moz-autofill`) for better visual consistency
29
+
30
+ - Nuxt Upgrades:
31
+ - Module options expanded and clarified:
32
+ - `types` (default `true`): auto-import types from packages for TypeScript users
33
+ - `helpers` (default `false`): auto-import core helpers for direct usage in Nuxt apps (optional due to potential bundle size impact)
34
+ - new: `composable` (default `false`): auto-import Vue composable for custom phone mask logic (optional for users who only need more custom solution than the provided component/directive)
35
+ - Default auto-imports now focus on component/directive/types; helpers/composable are opt-in
36
+ - Runtime shared exports updated:
37
+ - `usePhoneMask` (composable) is now a separate export from `phoneMaskDirective` and `PhoneInput` component for more flexible usage patterns
38
+ - `PMaskHelpers` sourced via `@desource/phone-mask-vue/core` for better tree-shaking and bundle size control
39
+
40
+ ### Patch Changes
41
+
42
+ - Updated dependencies []:
43
+ - @desource/phone-mask@1.3.0
44
+
45
+ ## 1.2.0
46
+
47
+ ### Minor Changes
48
+
49
+ - Core Upgrades:
50
+ - Core metadata minification redesigned for better performance and reliability
51
+ - Breaking changes (minor impact):
52
+ - Core mask shape normalized: `mask` is now always `string[]` (no `string | string[]` union) across core types/exports
53
+ - `toArray` removed from all packages
54
+ - Formatter edge case fixed: countries with no mask variants are now handled safely (`maxDigits = 0` path)
55
+
56
+ ### Patch Changes
57
+
58
+ - Updated dependencies []:
59
+ - @desource/phone-mask@1.2.0
60
+
3
61
  ## 1.1.2
4
62
 
5
63
  ### Patch Changes
package/README.md CHANGED
@@ -49,6 +49,12 @@ Composable mode:
49
49
  import { usePhoneMask } from '@desource/phone-mask-svelte';
50
50
  ```
51
51
 
52
+ Core helpers (direct re-exports from `@desource/phone-mask`):
53
+
54
+ ```ts
55
+ import { getFlagEmoji, formatDigitsWithMap } from '@desource/phone-mask-svelte/core';
56
+ ```
57
+
52
58
  Attachment mode (for existing `<input>` elements, requires Svelte 5.29+):
53
59
 
54
60
  ```ts
@@ -209,6 +215,10 @@ interface PhoneInputProps {
209
215
  // Bindable value (digits only, without country code)
210
216
  value?: string;
211
217
 
218
+ // Optional id/name applied to the underlying <input> for forms/autofill
219
+ id?: string;
220
+ name?: string;
221
+
212
222
  // Preselected country (ISO 3166-1 alpha-2)
213
223
  country?: CountryKey;
214
224
 
@@ -786,10 +796,12 @@ Or with CSS:
786
796
  ```
787
797
  @desource/phone-mask-svelte/
788
798
  ├── dist/
789
- │ ├── types/ # TypeScript declaration files
790
- │ ├── index.mjs # ES module bundle
791
- │ ├── index.cjs # CommonJS bundle
792
- └── phone-mask-svelte.css # Component styles
799
+ │ ├── index.mjs # Main ESM/Svelte entry
800
+ │ ├── index.cjs # Main CommonJS entry
801
+ │ ├── core.mjs # Core helpers subpath (@desource/phone-mask-svelte/core)
802
+ ├── core.cjs # Core helpers CJS subpath
803
+ │ ├── phone-mask-svelte.css # Component styles
804
+ │ └── types/ # TypeScript declaration files
793
805
  ├── README.md # This file
794
806
  └── package.json # Package manifest
795
807
  ```
package/dist/core.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=require(`@desource/phone-mask`);Object.keys(e).forEach(function(t){t!==`default`&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})});
package/dist/core.mjs ADDED
@@ -0,0 +1 @@
1
+ export*from"@desource/phone-mask";
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@desource/phone-mask`);require(`svelte/internal/disclose-version`);let l=require(`svelte/internal/client`);l=s(l);let u=require(`svelte`);function d({country:e,locale:t,detect:n,onCountryChange:r}={}){let i=l.state(l.proxy((0,c.parseCountryCode)(e?.(),`US`))),a=l.derived(()=>t?.()||(0,c.getNavigatorLang)()),o=l.derived(()=>(0,c.getCountry)(l.get(i),l.get(a))),s=e=>{let t=(0,c.parseCountryCode)(e);return t?(l.set(i,t,!0),!0):!1},u=async()=>{s(await(0,c.detectByGeoIp)())||s((0,c.detectCountryFromLocale)())};return l.user_effect(()=>{let t=e?.();t&&t!==l.get(i)&&s(t)}),l.user_effect(()=>{n?.()&&!e?.()&&u()}),l.user_effect(()=>{r?.(l.get(o))}),{get country(){return l.get(o)},get locale(){return l.get(a)},setCountry:s}}function f({country:e,value:t,onChange:n,onPhoneChange:r,onValidationChange:i}){let a=l.derived(()=>(0,c.createPhoneFormatter)(e())),o=l.derived(()=>l.get(a).getMaxDigits()),s=l.derived(()=>(0,c.extractDigits)(t(),l.get(o))),u=l.derived(()=>l.get(a).getPlaceholder()),d=l.derived(()=>l.get(a).formatDisplay(l.get(s))),f=l.derived(()=>l.get(s)?`${e().code}${l.get(s)}`:``),p=l.derived(()=>l.get(d)?`${e().code} ${l.get(d)}`:``),m=l.derived(()=>l.get(a).isComplete(l.get(s))),h=l.derived(()=>l.get(s).length===0),g=l.derived(()=>!l.get(h)&&!l.get(m)),_=l.derived(()=>({full:l.get(f),fullFormatted:l.get(p),digits:l.get(s)}));return l.user_pre_effect(()=>{let e=t(),r=l.get(s);e!==r&&n(r)}),l.user_effect(()=>{r?.(l.get(_))}),l.user_effect(()=>{i?.(l.get(m))}),{get digits(){return l.get(s)},get formatter(){return l.get(a)},get displayPlaceholder(){return l.get(u)},get displayValue(){return l.get(d)},get full(){return l.get(f)},get fullFormatted(){return l.get(p)},get isComplete(){return l.get(m)},get isEmpty(){return l.get(h)},get shouldShowWarn(){return l.get(g)}}}function p(){let e=null,t=()=>{e&&=(clearTimeout(e),null)};return(0,u.onDestroy)(t),{set:(n,r)=>{t(),e=setTimeout(n,r)},clear:t}}function m(){let e=l.state(!1),t=p();return{get showValidationHint(){return l.get(e)},clearValidationHint:(n=!0)=>{n&&l.set(e,!1),t.clear()},scheduleValidationHint:n=>{l.set(e,!1),t.set(()=>{l.set(e,!0)},n)}}}var h=500,g=300;function _(e){let{formatter:t,digits:n,inactive:r,onChange:i,scheduleValidationHint:a}=e,o=(e,n)=>{(0,u.tick)().then(()=>{e&&(0,c.setCaret)(e,t().getCaretPosition(n))})};return{handleBeforeInput:e=>{(0,c.processBeforeInput)(e)},handleInput:e=>{if(r?.())return;let n=(0,c.processInput)(e,{formatter:t()});n&&(i?.(n.newDigits),o(e.target,n.caretDigitIndex),a?.(h))},handleKeydown:e=>{if(r?.())return;let s=(0,c.processKeydown)(e,{digits:n(),formatter:t()});s&&(i?.(s.newDigits),o(e.target,s.caretDigitIndex),a?.(g))},handlePaste:e=>{if(r?.())return;let s=(0,c.processPaste)(e,{digits:n(),formatter:t()});s&&(i?.(s.newDigits),o(e.target,s.caretDigitIndex),a?.(g))}}}function v({rootRef:e,dropdownRef:t,searchRef:n,selectorRef:r,locale:i,countryOption:a,inactive:o,onSelectCountry:s,onAfterSelect:d}){let f=l.state(``),p=l.state(!1),m=l.state(!1),h=l.state(l.proxy({})),g=l.state(0),_=l.derived(()=>(0,c.MasksFull)(i())),v=l.derived(()=>(0,c.filterCountries)(l.get(_),l.get(f))),y=l.derived(()=>!a?.()&&l.get(_).length>1),b=e=>{l.set(g,e,!0)},ee=()=>{(0,u.tick)().then(()=>n()?.focus({preventScroll:!0}))},x=()=>{l.get(p)&&l.set(m,!0)},S=()=>{l.set(m,!1),l.set(p,!0),b(0),ee()},te=()=>{l.get(m)&&(l.set(p,!1),l.set(m,!1))},C=()=>{o?.()||!l.get(y)||(l.get(p)?x():S())},w=e=>{s(e),x(),l.set(f,``),b(0),d?.()},ne=e=>{l.set(f,e.target.value,!0),b(0)},T=e=>{let n=e.target,i=t(),a=r();n&&(i?.contains(n)||a?.contains(n)||x())},E=n=>{if(n?.type===`scroll`&&n.target&&t()?.contains(n.target))return;let r=e();if(!r)return;let i=r.getBoundingClientRect();l.set(h,{top:`${i.bottom+globalThis.scrollY+8}px`,left:`${i.left+globalThis.scrollX}px`,width:`${i.width}px`},!0)},D=()=>{(0,u.tick)().then(()=>{let e=t()?.lastElementChild,n=e?.children[l.get(g)];if(!e||!n)return;let r=e.getBoundingClientRect(),i=n.getBoundingClientRect(),a=0;if(i.top<r.top)a=e.scrollTop-(r.top-i.top);else if(i.bottom>r.bottom)a=e.scrollTop+(i.bottom-r.bottom);else return;e.scrollTo({top:a,behavior:`smooth`})})},re=e=>{e.key===`ArrowDown`?(e.preventDefault(),b(Math.min(l.get(g)+1,l.get(v).length-1)),D()):e.key===`ArrowUp`?(e.preventDefault(),b(Math.max(l.get(g)-1,0)),D()):e.key===`Enter`&&l.get(v)[l.get(g)]?(e.preventDefault(),w(l.get(v)[l.get(g)].id)):e.key===`Escape`&&x()},O=()=>{globalThis.removeEventListener(`resize`,E),globalThis.removeEventListener(`scroll`,E,!0),globalThis.removeEventListener(`click`,T,!0)};return l.user_effect(()=>{!l.get(y)&&l.get(p)&&x()}),l.user_effect(()=>{if(!l.get(p)){O();return}E(),globalThis.addEventListener(`resize`,E),globalThis.addEventListener(`scroll`,E,!0),globalThis.addEventListener(`click`,T,!0)}),(0,u.onDestroy)(O),{get dropdownOpen(){return l.get(p)},get isClosing(){return l.get(m)},get search(){return l.get(f)},get focusedIndex(){return l.get(g)},get dropdownStyle(){return l.get(h)},get filteredCountries(){return l.get(v)},get hasDropdown(){return l.get(y)},openDropdown:S,closeDropdown:x,toggleDropdown:C,selectCountry:w,setFocusedIndex:b,handleSearchChange:ne,handleSearchKeydown:re,handleDropdownAnimationEnd:te}}function y(e=1800){let t=l.state(!1),n=l.state(!1),r=p();return{get copied(){return l.get(t)},get isCopying(){return l.get(n)},copy:async i=>{if(l.get(n))return!1;let a=i.trim();if(!a)return!1;l.set(n,!0);try{return await navigator.clipboard.writeText(a),l.set(t,!0),r.set(()=>{l.set(t,!1)},e),!0}catch(e){return console.warn(`Copy failed`,e),!1}finally{l.set(n,!1)}}}}var b=1800;function ee({liveRef:e,fullFormatted:t,onCopy:n}){let r=p(),i=y(b),a=l.derived(()=>i.copied?`Copied`:`Copy ${t()}`),o=l.derived(()=>i.copied?`Copied`:`Copy phone number`),s=t=>{let n=e?.();n&&(n.textContent=t,r.set(()=>{let t=e?.();t&&(t.textContent=``)},b))};return{get copied(){return i.copied},get copyAriaLabel(){return l.get(a)},get copyButtonTitle(){return l.get(o)},onCopyClick:async()=>{let e=t().trim();await i.copy(e)&&(n?.(e),s(`Phone number copied to clipboard`))}}}function x({theme:e}){let t=l.state(!1),n=l.derived(()=>(()=>{let n=e();return n===`auto`?l.get(t)?`theme-dark`:`theme-light`:`theme-${n}`})());return l.user_effect(()=>{let e=globalThis.matchMedia?.(`(prefers-color-scheme: dark)`)??null;if(!e)return;l.set(t,e.matches,!0);let n=e=>{l.set(t,e.matches,!0)};return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)}),{get themeClass(){return l.get(n)}}}var S=l.from_svg(`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M2.5 4.5L6 8L9.5 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),te=l.from_svg(`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M6.5 11.5L3 8L4.06 6.94L6.5 9.38L11.94 3.94L13 5L6.5 11.5Z" fill="currentColor"></path></svg>`),C=l.from_svg(`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M13.5 5.5V13.5H5.5V5.5H13.5ZM13.5 4H5.5C4.67 4 4 4.67 4 5.5V13.5C4 14.33 4.67 15 5.5 15H13.5C14.33 15 15 14.33 15 13.5V5.5C15 4.67 14.33 4 13.5 4ZM10.5 1H2.5V11H4V2.5H10.5V1Z" fill="currentColor"></path></svg>`),w=l.from_html(`<button type="button"><!></button>`),ne=l.from_svg(`<svg width="11" height="11" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z" fill="currentColor"></path></svg>`),T=l.from_html(`<button type="button" class="pi-btn pi-btn-clear"><!></button>`),E=l.from_html(`<li role="option"><span class="pi-flag" role="img"><!></span> <span class="pi-opt-name"> </span> <span class="pi-opt-code"> </span></li>`),D=l.from_html(`<li class="pi-empty"> </li>`),re=l.from_html(`<div role="dialog" aria-modal="false" aria-label="Select country"><div class="pi-search-wrap"><input type="search" class="pi-search" aria-label="Search countries"/></div> <ul class="pi-options" role="listbox" tabindex="-1"></ul></div>`),O=l.from_html(`<div><div class="pi-selector"><button type="button"><span class="pi-flag" role="img"><!></span> <span class="pi-code"> </span> <!></button></div> <div class="pi-input-wrap"><input type="tel" inputmode="tel" autocomplete="tel-national" autocorrect="off" autocapitalize="off" spellcheck="false" class="pi-input"/> <div class="pi-actions" role="toolbar" aria-label="Phone input actions"><!> <!> <!></div></div></div> <!> <div class="sr-only" role="status" aria-live="polite" aria-atomic="true"></div>`,1);function ie(e,t){l.push(t,!0);let n=l.prop(t,`value`,15,``),r=l.prop(t,`detect`,3,!0),i=l.prop(t,`size`,3,`normal`),a=l.prop(t,`theme`,3,`auto`),o=l.prop(t,`disabled`,3,!1),s=l.prop(t,`readonly`,3,!1),c=l.prop(t,`showCopy`,3,!0),p=l.prop(t,`showClear`,3,!1),h=l.prop(t,`withValidity`,3,!0),g=l.prop(t,`searchPlaceholder`,3,`Search country or code...`),y=l.prop(t,`noResultsText`,3,`No countries found`),b=l.prop(t,`clearButtonLabel`,3,`Clear phone number`),ie=l.prop(t,`dropdownClass`,3,``),k=l.prop(t,`disableDefaultStyles`,3,!1),ae=l.rest_props(t,`$$slots.$$events.$$legacy.value.country.detect.locale.size.theme.disabled.readonly.showCopy.showClear.withValidity.searchPlaceholder.noResultsText.clearButtonLabel.dropdownClass.disableDefaultStyles.onchange.oncountrychange.onvalidationchange.onfocus.onblur.oncopy.onclear.flag.copysvg.clearsvg.actionsbefore.class`.split(`.`)),A=l.state(null),j=l.state(null),M=l.state(null),N=l.state(null),P=l.state(null),F=l.state(null),I=d({country:()=>t.country,locale:()=>t.locale,detect:()=>r(),onCountryChange:(...e)=>t.oncountrychange?.(...e)}),L=f({country:()=>I.country,value:()=>n(),onChange:e=>n(e),onPhoneChange:(...e)=>t.onchange?.(...e),onValidationChange:(...e)=>t.onvalidationchange?.(...e)}),R=m(),z=l.derived(()=>o()||s()),oe=l.derived(()=>R.showValidationHint&&L.shouldShowWarn),se=l.derived(()=>c()&&!L.isEmpty&&!o()),B=l.derived(()=>p()&&!L.isEmpty&&!l.get(z)),V=ee({liveRef:()=>l.get(M),fullFormatted:()=>L.fullFormatted,onCopy:(...e)=>t.oncopy?.(...e)}),H=()=>(0,u.tick)().then(()=>l.get(j)?.focus()),U=v({rootRef:()=>l.get(A),dropdownRef:()=>l.get(N),searchRef:()=>l.get(P),selectorRef:()=>l.get(F),locale:()=>I.locale,countryOption:()=>t.country,inactive:()=>l.get(z),onSelectCountry:I.setCountry,onAfterSelect:H}),W=l.state(`0`);(0,u.onMount)(()=>{l.set(W,Math.random().toString(36).slice(2,10),!0)});let G=l.derived(()=>`pi-options-${l.get(W)}`),K=e=>`pi-option-${l.get(W)}-${e}`,ce=l.derived(()=>U.dropdownOpen&&U.filteredCountries[U.focusedIndex]?K(U.focusedIndex):void 0),q=_({formatter:()=>L.formatter,digits:()=>L.digits,inactive:()=>l.get(z),onChange:e=>n(e),scheduleValidationHint:R.scheduleValidationHint}),le=e=>{R.clearValidationHint(!1),U.closeDropdown(),t.onfocus?.(e)},ue=e=>t.onblur?.(e);function de(){H()}function fe(){l.get(j)?.blur()}function pe(){n(``),R.clearValidationHint(),t.onclear?.()}function me(e){I.setCountry(e)}function he(){return L.full}function ge(){return L.fullFormatted}function _e(){return L.digits}function ve(){return L.isComplete}function ye(){return L.isComplete}let be=()=>{pe(),H()},xe=x({theme:()=>a()}),Se=l.derived(()=>[`phone-input`,`size-${i()}`,xe.themeClass,o()&&`is-disabled`,s()&&`is-readonly`,k()&&`is-unstyled`,h()&&l.get(oe)&&`is-incomplete`,h()&&L.isComplete&&`is-complete`,t.class].filter(Boolean).join(` `)),Ce=l.derived(()=>+l.get(se)+ +l.get(B)+(t.actionsbefore?1:0));function we(e){return document.body.appendChild(e),{destroy:()=>e.remove()}}var Te={focus:de,blur:fe,clear:pe,selectCountry:me,getFullNumber:he,getFullFormattedNumber:ge,getDigits:_e,isValid:ve,isComplete:ye},Ee=O(),J=l.first_child(Ee);l.attribute_effect(J,()=>({class:l.get(Se),...ae,role:`group`,"aria-label":`Phone input with country selector`,[l.STYLE]:{"--pi-actions-count":l.get(Ce)}}));var Y=l.child(J),X=l.child(Y);let De;var Z=l.child(X),Oe=l.child(Z),ke=e=>{var n=l.comment(),r=l.first_child(n);l.snippet(r,()=>t.flag,()=>I.country),l.append(e,n)},Ae=e=>{var t=l.text();l.template_effect(()=>l.set_text(t,I.country.flag)),l.append(e,t)};l.if(Oe,e=>{t.flag?e(ke):e(Ae,-1)}),l.reset(Z);var Q=l.sibling(Z,2),je=l.child(Q,!0);l.reset(Q);var Me=l.sibling(Q,2),Ne=e=>{var t=S();let n;l.template_effect(()=>n=l.set_class(t,0,`pi-chevron`,null,n,{"is-open":U.dropdownOpen})),l.append(e,t)};l.if(Me,e=>{!l.get(z)&&U.hasDropdown&&e(Ne)}),l.reset(X),l.reset(Y),l.bind_this(Y,e=>l.set(F,e),()=>l.get(F));var Pe=l.sibling(Y,2),$=l.child(Pe);l.remove_input_defaults($),l.bind_this($,e=>l.set(j,e),()=>l.get(j));var Fe=l.sibling($,2),Ie=l.child(Fe),Le=e=>{var n=l.comment(),r=l.first_child(n);l.snippet(r,()=>t.actionsbefore),l.append(e,n)};l.if(Ie,e=>{t.actionsbefore&&e(Le)});var Re=l.sibling(Ie,2),ze=e=>{var n=w();let r;var i=l.child(n),a=e=>{var n=l.comment(),r=l.first_child(n);l.snippet(r,()=>t.copysvg,()=>V.copied),l.append(e,n)},o=e=>{var t=te();l.append(e,t)},s=e=>{var t=C();l.append(e,t)};l.if(i,e=>{t.copysvg?e(a):V.copied?e(o,1):e(s,-1)}),l.reset(n),l.template_effect(()=>{r=l.set_class(n,1,`pi-btn pi-btn-copy`,null,r,{"is-copied":V.copied}),l.set_attribute(n,`aria-label`,V.copyAriaLabel),l.set_attribute(n,`title`,V.copyButtonTitle)}),l.delegated(`click`,n,function(...e){V.onCopyClick?.apply(this,e)}),l.append(e,n)};l.if(Re,e=>{l.get(se)&&e(ze)});var Be=l.sibling(Re,2),Ve=e=>{var n=T(),r=l.child(n),i=e=>{var n=l.comment(),r=l.first_child(n);l.snippet(r,()=>t.clearsvg),l.append(e,n)},a=e=>{var t=ne();l.append(e,t)};l.if(r,e=>{t.clearsvg?e(i):e(a,-1)}),l.reset(n),l.template_effect(()=>{l.set_attribute(n,`aria-label`,b()),l.set_attribute(n,`title`,b())}),l.delegated(`click`,n,be),l.append(e,n)};l.if(Be,e=>{l.get(B)&&e(Ve)}),l.reset(Fe),l.reset(Pe),l.reset(J),l.bind_this(J,e=>l.set(A,e),()=>l.get(A));var He=l.sibling(J,2),Ue=e=>{var n=re();let r,i;var a=l.child(n),o=l.child(a);l.remove_input_defaults(o),l.bind_this(o,e=>l.set(P,e),()=>l.get(P)),l.reset(a);var s=l.sibling(a,2);l.each(s,23,()=>U.filteredCountries,e=>e.id,(e,n,r)=>{var i=E();let a;var o=l.child(i),s=l.child(o),c=e=>{var r=l.comment(),i=l.first_child(r);l.snippet(i,()=>t.flag,()=>l.get(n)),l.append(e,r)},u=e=>{var t=l.text();l.template_effect(()=>l.set_text(t,l.get(n).flag)),l.append(e,t)};l.if(s,e=>{t.flag?e(c):e(u,-1)}),l.reset(o);var d=l.sibling(o,2),f=l.child(d,!0);l.reset(d);var p=l.sibling(d,2),m=l.child(p,!0);l.reset(p),l.reset(i),l.template_effect(e=>{l.set_attribute(i,`id`,e),a=l.set_class(i,1,`pi-option`,null,a,{"is-focused":l.get(r)===U.focusedIndex,"is-selected":l.get(n).id===I.country.id}),l.set_attribute(i,`aria-selected`,l.get(n).id===I.country.id),l.set_attribute(i,`title`,l.get(n).name),l.set_attribute(o,`aria-label`,`${l.get(n).name??``} flag`),l.set_text(f,l.get(n).name),l.set_text(m,l.get(n).code)},[()=>K(l.get(r))]),l.delegated(`click`,i,()=>U.selectCountry(l.get(n).id)),l.event(`mouseenter`,i,()=>U.setFocusedIndex(l.get(r))),l.append(e,i)},e=>{var t=D(),n=l.child(t,!0);l.reset(t),l.template_effect(()=>l.set_text(n,y())),l.append(e,t)}),l.reset(s),l.reset(n),l.action(n,e=>we?.(e)),l.bind_this(n,e=>l.set(N,e),()=>l.get(N)),l.template_effect(()=>{r=l.set_class(n,1,`phone-dropdown ${ie()??``} ${xe.themeClass??``}`,null,r,{"is-closing":U.isClosing}),i=l.set_style(n,``,i,{position:`absolute`,top:U.dropdownStyle.top,left:U.dropdownStyle.left,width:U.dropdownStyle.width}),l.set_attribute(o,`placeholder`,g()),l.set_attribute(o,`aria-controls`,l.get(G)),l.set_attribute(o,`aria-activedescendant`,l.get(ce)),l.set_value(o,U.search),l.set_attribute(s,`id`,l.get(G))}),l.event(`animationend`,n,function(...e){U.handleDropdownAnimationEnd?.apply(this,e)}),l.delegated(`keydown`,o,function(...e){U.handleSearchKeydown?.apply(this,e)}),l.delegated(`input`,o,function(...e){U.handleSearchChange?.apply(this,e)}),l.append(e,n)};l.if(He,e=>{U.dropdownOpen&&e(Ue)});var We=l.sibling(He,2);return l.bind_this(We,e=>l.set(M,e),()=>l.get(M)),l.template_effect(()=>{De=l.set_class(X,1,`pi-selector-btn`,null,De,{"no-dropdown":!U.hasDropdown||s()}),X.disabled=o(),l.set_attribute(X,`tabindex`,l.get(z)||!U.hasDropdown?-1:void 0),l.set_attribute(X,`aria-label`,`Selected country: ${I.country.name??``}`),l.set_attribute(X,`aria-expanded`,U.dropdownOpen),l.set_attribute(X,`aria-haspopup`,U.hasDropdown?`listbox`:void 0),l.set_attribute(Z,`aria-label`,`${I.country.name??``} flag`),l.set_text(je,I.country.code),l.set_attribute($,`placeholder`,L.displayPlaceholder),l.set_value($,L.displayValue),$.disabled=o(),$.readOnly=s(),l.set_attribute($,`aria-invalid`,l.get(oe))}),l.delegated(`click`,X,function(...e){U.toggleDropdown?.apply(this,e)}),l.delegated(`beforeinput`,$,function(...e){q.handleBeforeInput?.apply(this,e)}),l.delegated(`input`,$,function(...e){q.handleInput?.apply(this,e)}),l.delegated(`keydown`,$,function(...e){q.handleKeydown?.apply(this,e)}),l.event(`paste`,$,function(...e){q.handlePaste?.apply(this,e)}),l.event(`focus`,$,le),l.event(`blur`,$,ue),l.append(e,Ee),l.pop(Te)}l.delegate([`click`,`beforeinput`,`input`,`keydown`]);function k(e){let t=l.state(null),n=d({country:e.country,locale:e.locale,detect:e.detect,onCountryChange:e.onCountryChange}),r=f({country:()=>n.country,value:e.value,onChange:e.onChange,onPhoneChange:e.onPhoneChange}),{handleBeforeInput:i,handleInput:a,handleKeydown:o,handlePaste:s}=_({formatter:()=>r.formatter,digits:()=>r.digits,onChange:e.onChange});return l.user_effect(()=>{let e=l.get(t);if(e)return e.setAttribute(`type`,`tel`),e.setAttribute(`inputmode`,`tel`),e.addEventListener(`beforeinput`,i),e.addEventListener(`input`,a),e.addEventListener(`keydown`,o),e.addEventListener(`paste`,s),()=>{e.removeEventListener(`beforeinput`,i),e.removeEventListener(`input`,a),e.removeEventListener(`keydown`,o),e.removeEventListener(`paste`,s)}}),l.user_effect(()=>{let e=l.get(t);e&&(e.value=r.displayValue,e.setAttribute(`placeholder`,r.displayPlaceholder))}),{get inputRef(){return l.get(t)},set inputRef(e){l.set(t,e,!0)},get digits(){return r.digits},get formatter(){return r.formatter},get full(){return r.full},get fullFormatted(){return r.fullFormatted},get isComplete(){return r.isComplete},get isEmpty(){return r.isEmpty},get shouldShowWarn(){return r.shouldShowWarn},get country(){return n.country},get locale(){return n.locale},setCountry:n.setCountry,clear:()=>{e.onChange(``)}}}function ae(e){return typeof e==`string`?{country:e}:e&&typeof e==`object`?e:{}}function A(e){return t=>{if(t.tagName!==`INPUT`){console.warn(`[phoneMaskAttachment] Attachment can only be used on input elements`);return}let n=ae(e),r=l.effect_root(()=>{let e=l.state(l.proxy(t.value||``)),r=k({country:()=>n.country,locale:()=>n.locale,detect:()=>n.detect,value:()=>l.get(e),onChange:t=>{l.set(e,t,!0)},onPhoneChange:n.onChange,onCountryChange:n.onCountryChange});r.inputRef=t,t.__phoneMaskState={get country(){return r.country},get formatter(){return r.formatter},get digits(){return r.digits},get locale(){return r.locale},options:n,setCountry:e=>r.setCountry(e)}});return()=>{r(),delete t.__phoneMaskState}}}function j(e){return typeof e==`string`?{country:e}:e&&typeof e==`object`?e:{}}function M(e,t,n){if(t.digits=n,e.value=t.formatter.formatDisplay(t.digits),t.options.onChange){let n=e.value?`${t.country.code} ${e.value}`:``,r=t.digits?`${t.country.code}${t.digits}`:``;t.options.onChange({full:r,fullFormatted:n,digits:t.digits})}}function N(e,t){let n=t.formatter.getMaxDigits(),r=(0,c.extractDigits)(e.value,n),i=t.formatter.formatDisplay(r);(r!==t.digits||e.value!==i)&&M(e,t,r)}function P(e){let t=e.country.id,n=(0,c.parseCountryCode)(e.options.country);n&&n!==t&&e.setCountry(n)}function F(e,t,n){return r=>{let i=n(r,t);i&&(M(e,t,i.newDigits),Promise.resolve().then(()=>{(0,c.setCaret)(e,t.formatter.getCaretPosition(i.caretDigitIndex))}))}}async function I(e){let t=(0,c.parseCountryCode)(e.country);if(t)return t;if(e.detect){let e=(0,c.parseCountryCode)(await(0,c.detectByGeoIp)());if(e)return e;let t=(0,c.parseCountryCode)((0,c.detectCountryFromLocale)());if(t)return t}return`US`}function L(e,t){if(e.tagName!==`INPUT`)return console.warn(`[phoneMaskAction] Action can only be used on input elements`),{update(){},destroy(){}};e.setAttribute(`type`,`tel`),e.setAttribute(`inputmode`,`tel`),e.setAttribute(`placeholder`,``);let n=j(t),r=n.locale||(0,c.getNavigatorLang)(),i=(0,c.getCountry)((0,c.parseCountryCode)(n.country,`US`),r),a={country:i,formatter:(0,c.createPhoneFormatter)(i),digits:``,locale:r,options:n,setCountry(t){let n=(0,c.parseCountryCode)(t);if(!n)return!1;let r=(0,c.getCountry)(n,this.locale);return this.country=r,this.options.onCountryChange?.(r),this.formatter=(0,c.createPhoneFormatter)(r),e.placeholder=this.formatter.getPlaceholder(),N(e,this),!0}};e.__phoneMaskState=a;let o=F(e,a,c.processInput),s=F(e,a,c.processKeydown),l=F(e,a,c.processPaste);return e.addEventListener(`beforeinput`,c.processBeforeInput),e.addEventListener(`input`,o),e.addEventListener(`keydown`,s),e.addEventListener(`paste`,l),I(n).then(t=>{e.__phoneMaskState===a&&a.setCountry(t)}),{update(t){a.options=j(t),P(a),N(e,a)},destroy(){e.removeEventListener(`beforeinput`,c.processBeforeInput),e.removeEventListener(`input`,o),e.removeEventListener(`keydown`,s),e.removeEventListener(`paste`,l),delete e.__phoneMaskState}}}var R=ie,z={getFlagEmoji:c.getFlagEmoji,countPlaceholders:c.countPlaceholders,formatDigitsWithMap:c.formatDigitsWithMap,pickMaskVariant:c.pickMaskVariant,removeCountryCodePrefix:c.removeCountryCodePrefix,toArray:c.toArray};exports.PMaskHelpers=z,exports.PhoneInput=R,exports.phoneMaskAction=L,exports.phoneMaskAttachment=A,exports.usePhoneMask=k;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));require(`svelte/internal/disclose-version`);let c=require(`svelte/internal/client`);c=s(c);let l=require(`svelte`),u=require(`@desource/phone-mask`);function d({country:e,locale:t,detect:n,onCountryChange:r}={}){let i=c.state(c.proxy((0,u.parseCountryCode)(e?.(),`US`))),a=c.derived(()=>t?.()||(0,u.getNavigatorLang)()),o=c.derived(()=>(0,u.getCountry)(c.get(i),c.get(a))),s=e=>{let t=(0,u.parseCountryCode)(e);return t?(c.set(i,t,!0),!0):!1},l=async()=>{s(await(0,u.detectByGeoIp)())||s((0,u.detectCountryFromLocale)())};return c.user_effect(()=>{let t=e?.();t&&t!==c.get(i)&&s(t)}),c.user_effect(()=>{n?.()&&!e?.()&&l()}),c.user_effect(()=>{r?.(c.get(o))}),{get country(){return c.get(o)},get locale(){return c.get(a)},setCountry:s}}function f({country:e,value:t,onChange:n,onPhoneChange:r,onValidationChange:i}){let a=c.derived(()=>(0,u.createPhoneFormatter)(e())),o=c.derived(()=>c.get(a).getMaxDigits()),s=c.derived(()=>(0,u.extractDigits)(t(),c.get(o))),l=c.derived(()=>c.get(a).getPlaceholder()),d=c.derived(()=>c.get(a).formatDisplay(c.get(s))),f=c.derived(()=>c.get(s)?`${e().code}${c.get(s)}`:``),p=c.derived(()=>c.get(d)?`${e().code} ${c.get(d)}`:``),m=c.derived(()=>c.get(a).isComplete(c.get(s))),h=c.derived(()=>c.get(s).length===0),g=c.derived(()=>!c.get(h)&&!c.get(m)),_=c.derived(()=>({full:c.get(f),fullFormatted:c.get(p),digits:c.get(s)}));return c.user_pre_effect(()=>{let e=t(),r=c.get(s);e!==r&&n(r)}),c.user_effect(()=>{r?.(c.get(_))}),c.user_effect(()=>{i?.(c.get(m))}),{get digits(){return c.get(s)},get formatter(){return c.get(a)},get displayPlaceholder(){return c.get(l)},get displayValue(){return c.get(d)},get full(){return c.get(f)},get fullFormatted(){return c.get(p)},get isComplete(){return c.get(m)},get isEmpty(){return c.get(h)},get shouldShowWarn(){return c.get(g)}}}function p(){let e=null,t=()=>{e&&=(clearTimeout(e),null)};return(0,l.onDestroy)(t),{set:(n,r)=>{t(),e=setTimeout(n,r)},clear:t}}function m(){let e=c.state(!1),t=p();return{get showValidationHint(){return c.get(e)},clearValidationHint:(n=!0)=>{n&&c.set(e,!1),t.clear()},scheduleValidationHint:n=>{c.set(e,!1),t.set(()=>{c.set(e,!0)},n)}}}var h=500,g=300;function _(e){let{formatter:t,digits:n,inactive:r,onChange:i,scheduleValidationHint:a}=e,o=(e,n)=>{(0,l.tick)().then(()=>{e&&(0,u.setCaret)(e,t().getCaretPosition(n))})};return{handleBeforeInput:e=>{(0,u.processBeforeInput)(e)},handleInput:e=>{if(r?.())return;let n=(0,u.processInput)(e,{formatter:t()});n&&(i?.(n.newDigits),o(e.target,n.caretDigitIndex),a?.(h))},handleKeydown:e=>{if(r?.())return;let s=(0,u.processKeydown)(e,{digits:n(),formatter:t()});s&&(i?.(s.newDigits),o(e.target,s.caretDigitIndex),a?.(g))},handlePaste:e=>{if(r?.())return;let s=(0,u.processPaste)(e,{digits:n(),formatter:t()});s&&(i?.(s.newDigits),o(e.target,s.caretDigitIndex),a?.(g))}}}function v({rootRef:e,dropdownRef:t,searchRef:n,selectorRef:r,locale:i,countryOption:a,inactive:o,onSelectCountry:s,onAfterSelect:d}){let f=c.state(``),p=c.state(!1),m=c.state(!1),h=c.state(c.proxy({})),g=c.state(0),_=c.derived(()=>(0,u.MasksFull)(i())),v=c.derived(()=>(0,u.filterCountries)(c.get(_),c.get(f))),y=c.derived(()=>!a?.()&&c.get(_).length>1),b=e=>{c.set(g,e,!0)},ee=()=>{(0,l.tick)().then(()=>n()?.focus({preventScroll:!0}))},x=()=>{c.get(p)&&c.set(m,!0)},S=()=>{c.set(m,!1),c.set(p,!0),b(0),ee()},te=()=>{c.get(m)&&(c.set(p,!1),c.set(m,!1))},C=()=>{o?.()||!c.get(y)||(c.get(p)?x():S())},w=e=>{s(e),x(),c.set(f,``),b(0),d?.()},ne=e=>{c.set(f,e.target.value,!0),b(0)},T=e=>{let n=e.target,i=t(),a=r();n&&(i?.contains(n)||a?.contains(n)||x())},E=n=>{if(n?.type===`scroll`&&n.target&&t()?.contains(n.target))return;let r=e();if(!r)return;let i=r.getBoundingClientRect();c.set(h,{top:`${i.bottom+globalThis.scrollY+8}px`,left:`${i.left+globalThis.scrollX}px`,width:`${i.width}px`},!0)},D=()=>{(0,l.tick)().then(()=>{let e=t()?.lastElementChild,n=e?.children[c.get(g)];if(!e||!n)return;let r=e.getBoundingClientRect(),i=n.getBoundingClientRect(),a=0;if(i.top<r.top)a=e.scrollTop-(r.top-i.top);else if(i.bottom>r.bottom)a=e.scrollTop+(i.bottom-r.bottom);else return;e.scrollTo({top:a,behavior:`smooth`})})},re=e=>{e.key===`ArrowDown`?(e.preventDefault(),b(Math.min(c.get(g)+1,c.get(v).length-1)),D()):e.key===`ArrowUp`?(e.preventDefault(),b(Math.max(c.get(g)-1,0)),D()):e.key===`Enter`&&c.get(v)[c.get(g)]?(e.preventDefault(),w(c.get(v)[c.get(g)].id)):e.key===`Escape`&&x()},O=()=>{globalThis.removeEventListener(`resize`,E),globalThis.removeEventListener(`scroll`,E,!0),globalThis.removeEventListener(`click`,T,!0)};return c.user_effect(()=>{!c.get(y)&&c.get(p)&&x()}),c.user_effect(()=>{if(!c.get(p)){O();return}E(),globalThis.addEventListener(`resize`,E),globalThis.addEventListener(`scroll`,E,!0),globalThis.addEventListener(`click`,T,!0)}),(0,l.onDestroy)(O),{get dropdownOpen(){return c.get(p)},get isClosing(){return c.get(m)},get search(){return c.get(f)},get focusedIndex(){return c.get(g)},get dropdownStyle(){return c.get(h)},get filteredCountries(){return c.get(v)},get hasDropdown(){return c.get(y)},openDropdown:S,closeDropdown:x,toggleDropdown:C,selectCountry:w,setFocusedIndex:b,handleSearchChange:ne,handleSearchKeydown:re,handleDropdownAnimationEnd:te}}function y(e=1800){let t=c.state(!1),n=c.state(!1),r=p();return{get copied(){return c.get(t)},get isCopying(){return c.get(n)},copy:async i=>{if(c.get(n))return!1;let a=i.trim();if(!a)return!1;c.set(n,!0);try{return await navigator.clipboard.writeText(a),c.set(t,!0),r.set(()=>{c.set(t,!1)},e),!0}catch(e){return console.warn(`Copy failed`,e),!1}finally{c.set(n,!1)}}}}var b=1800;function ee({liveRef:e,fullFormatted:t,onCopy:n}){let r=p(),i=y(b),a=c.derived(()=>i.copied?`Copied`:`Copy ${t()}`),o=c.derived(()=>i.copied?`Copied`:`Copy phone number`),s=t=>{let n=e?.();n&&(n.textContent=t,r.set(()=>{let t=e?.();t&&(t.textContent=``)},b))};return{get copied(){return i.copied},get copyAriaLabel(){return c.get(a)},get copyButtonTitle(){return c.get(o)},onCopyClick:async()=>{let e=t().trim();await i.copy(e)&&(n?.(e),s(`Phone number copied to clipboard`))}}}function x({theme:e}){let t=c.state(!1),n=c.derived(()=>(()=>{let n=e();return n===`auto`?c.get(t)?`theme-dark`:`theme-light`:`theme-${n}`})());return c.user_effect(()=>{let e=globalThis.matchMedia?.(`(prefers-color-scheme: dark)`)??null;if(!e)return;c.set(t,e.matches,!0);let n=e=>{c.set(t,e.matches,!0)};return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)}),{get themeClass(){return c.get(n)}}}var S=c.from_svg(`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M2.5 4.5L6 8L9.5 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),te=c.from_svg(`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M6.5 11.5L3 8L4.06 6.94L6.5 9.38L11.94 3.94L13 5L6.5 11.5Z" fill="currentColor"></path></svg>`),C=c.from_svg(`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M13.5 5.5V13.5H5.5V5.5H13.5ZM13.5 4H5.5C4.67 4 4 4.67 4 5.5V13.5C4 14.33 4.67 15 5.5 15H13.5C14.33 15 15 14.33 15 13.5V5.5C15 4.67 14.33 4 13.5 4ZM10.5 1H2.5V11H4V2.5H10.5V1Z" fill="currentColor"></path></svg>`),w=c.from_html(`<button type="button"><!></button>`),ne=c.from_svg(`<svg width="11" height="11" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z" fill="currentColor"></path></svg>`),T=c.from_html(`<button type="button" class="pi-btn pi-btn-clear"><!></button>`),E=c.from_html(`<li role="option"><span class="pi-flag" role="img"><!></span> <span class="pi-opt-name"> </span> <span class="pi-opt-code"> </span></li>`),D=c.from_html(`<li class="pi-empty"> </li>`),re=c.from_html(`<div role="dialog" aria-modal="false" aria-label="Select country"><div class="pi-search-wrap"><input type="search" class="pi-search" aria-label="Search countries"/></div> <ul class="pi-options" role="listbox" tabindex="-1"></ul></div>`),O=c.from_html(`<div><div class="pi-selector"><button type="button"><span class="pi-flag" role="img"><!></span> <span class="pi-code"> </span> <!></button></div> <div class="pi-input-wrap"><input type="tel" inputmode="tel" autocomplete="tel-national" autocorrect="off" autocapitalize="off" spellcheck="false" class="pi-input"/> <div class="pi-actions" role="toolbar" aria-label="Phone input actions"><!> <!> <!></div></div></div> <!> <div class="sr-only" role="status" aria-live="polite" aria-atomic="true"></div>`,1);function ie(e,t){c.push(t,!0);let n=c.prop(t,`value`,15,``),r=c.prop(t,`detect`,3,!0),i=c.prop(t,`size`,3,`normal`),a=c.prop(t,`theme`,3,`auto`),o=c.prop(t,`disabled`,3,!1),s=c.prop(t,`readonly`,3,!1),u=c.prop(t,`showCopy`,3,!0),p=c.prop(t,`showClear`,3,!1),h=c.prop(t,`withValidity`,3,!0),g=c.prop(t,`searchPlaceholder`,3,`Search country or code...`),y=c.prop(t,`noResultsText`,3,`No countries found`),b=c.prop(t,`clearButtonLabel`,3,`Clear phone number`),ie=c.prop(t,`dropdownClass`,3,``),k=c.prop(t,`disableDefaultStyles`,3,!1),ae=c.rest_props(t,`$$slots.$$events.$$legacy.value.id.name.country.detect.locale.size.theme.disabled.readonly.showCopy.showClear.withValidity.searchPlaceholder.noResultsText.clearButtonLabel.dropdownClass.disableDefaultStyles.onchange.oncountrychange.onvalidationchange.onfocus.onblur.oncopy.onclear.flag.copysvg.clearsvg.actionsbefore.class`.split(`.`)),A=c.state(null),j=c.state(null),M=c.state(null),N=c.state(null),P=c.state(null),F=c.state(null),I=d({country:()=>t.country,locale:()=>t.locale,detect:()=>r(),onCountryChange:(...e)=>t.oncountrychange?.(...e)}),L=f({country:()=>I.country,value:()=>n(),onChange:e=>n(e),onPhoneChange:(...e)=>t.onchange?.(...e),onValidationChange:(...e)=>t.onvalidationchange?.(...e)}),R=m(),z=c.derived(()=>o()||s()),oe=c.derived(()=>R.showValidationHint&&L.shouldShowWarn),se=c.derived(()=>u()&&!L.isEmpty&&!o()),B=c.derived(()=>p()&&!L.isEmpty&&!c.get(z)),V=ee({liveRef:()=>c.get(M),fullFormatted:()=>L.fullFormatted,onCopy:(...e)=>t.oncopy?.(...e)}),H=()=>(0,l.tick)().then(()=>c.get(j)?.focus()),U=v({rootRef:()=>c.get(A),dropdownRef:()=>c.get(N),searchRef:()=>c.get(P),selectorRef:()=>c.get(F),locale:()=>I.locale,countryOption:()=>t.country,inactive:()=>c.get(z),onSelectCountry:I.setCountry,onAfterSelect:H}),W=c.state(`0`);(0,l.onMount)(()=>{c.set(W,Math.random().toString(36).slice(2,10),!0)});let G=c.derived(()=>`pi-options-${c.get(W)}`),K=e=>`pi-option-${c.get(W)}-${e}`,ce=c.derived(()=>U.dropdownOpen&&U.filteredCountries[U.focusedIndex]?K(U.focusedIndex):void 0),q=_({formatter:()=>L.formatter,digits:()=>L.digits,inactive:()=>c.get(z),onChange:e=>n(e),scheduleValidationHint:R.scheduleValidationHint}),le=e=>{R.clearValidationHint(!1),U.closeDropdown(),t.onfocus?.(e)},ue=e=>t.onblur?.(e);function de(){H()}function fe(){c.get(j)?.blur()}function pe(){n(``),R.clearValidationHint(),t.onclear?.()}function me(e){I.setCountry(e)}function he(){return L.full}function ge(){return L.fullFormatted}function _e(){return L.digits}function ve(){return L.isComplete}function ye(){return L.isComplete}let be=()=>{pe(),H()},xe=x({theme:()=>a()}),Se=c.derived(()=>[`phone-input`,`size-${i()}`,xe.themeClass,o()&&`is-disabled`,s()&&`is-readonly`,k()&&`is-unstyled`,h()&&c.get(oe)&&`is-incomplete`,h()&&L.isComplete&&`is-complete`,t.class].filter(Boolean).join(` `)),Ce=c.derived(()=>+c.get(se)+ +c.get(B)+(t.actionsbefore?1:0));function we(e){return document.body.appendChild(e),{destroy:()=>e.remove()}}var Te={focus:de,blur:fe,clear:pe,selectCountry:me,getFullNumber:he,getFullFormattedNumber:ge,getDigits:_e,isValid:ve,isComplete:ye},Ee=O(),J=c.first_child(Ee);c.attribute_effect(J,()=>({class:c.get(Se),...ae,role:`group`,"aria-label":`Phone input with country selector`,[c.STYLE]:{"--pi-actions-count":c.get(Ce)}}));var Y=c.child(J),X=c.child(Y);let De;var Z=c.child(X),Oe=c.child(Z),ke=e=>{var n=c.comment(),r=c.first_child(n);c.snippet(r,()=>t.flag,()=>I.country),c.append(e,n)},Ae=e=>{var t=c.text();c.template_effect(()=>c.set_text(t,I.country.flag)),c.append(e,t)};c.if(Oe,e=>{t.flag?e(ke):e(Ae,-1)}),c.reset(Z);var Q=c.sibling(Z,2),je=c.child(Q,!0);c.reset(Q);var Me=c.sibling(Q,2),Ne=e=>{var t=S();let n;c.template_effect(()=>n=c.set_class(t,0,`pi-chevron`,null,n,{"is-open":U.dropdownOpen})),c.append(e,t)};c.if(Me,e=>{!c.get(z)&&U.hasDropdown&&e(Ne)}),c.reset(X),c.reset(Y),c.bind_this(Y,e=>c.set(F,e),()=>c.get(F));var Pe=c.sibling(Y,2),$=c.child(Pe);c.remove_input_defaults($),c.bind_this($,e=>c.set(j,e),()=>c.get(j));var Fe=c.sibling($,2),Ie=c.child(Fe),Le=e=>{var n=c.comment(),r=c.first_child(n);c.snippet(r,()=>t.actionsbefore),c.append(e,n)};c.if(Ie,e=>{t.actionsbefore&&e(Le)});var Re=c.sibling(Ie,2),ze=e=>{var n=w();let r;var i=c.child(n),a=e=>{var n=c.comment(),r=c.first_child(n);c.snippet(r,()=>t.copysvg,()=>V.copied),c.append(e,n)},o=e=>{var t=te();c.append(e,t)},s=e=>{var t=C();c.append(e,t)};c.if(i,e=>{t.copysvg?e(a):V.copied?e(o,1):e(s,-1)}),c.reset(n),c.template_effect(()=>{r=c.set_class(n,1,`pi-btn pi-btn-copy`,null,r,{"is-copied":V.copied}),c.set_attribute(n,`aria-label`,V.copyAriaLabel),c.set_attribute(n,`title`,V.copyButtonTitle)}),c.delegated(`click`,n,function(...e){V.onCopyClick?.apply(this,e)}),c.append(e,n)};c.if(Re,e=>{c.get(se)&&e(ze)});var Be=c.sibling(Re,2),Ve=e=>{var n=T(),r=c.child(n),i=e=>{var n=c.comment(),r=c.first_child(n);c.snippet(r,()=>t.clearsvg),c.append(e,n)},a=e=>{var t=ne();c.append(e,t)};c.if(r,e=>{t.clearsvg?e(i):e(a,-1)}),c.reset(n),c.template_effect(()=>{c.set_attribute(n,`aria-label`,b()),c.set_attribute(n,`title`,b())}),c.delegated(`click`,n,be),c.append(e,n)};c.if(Be,e=>{c.get(B)&&e(Ve)}),c.reset(Fe),c.reset(Pe),c.reset(J),c.bind_this(J,e=>c.set(A,e),()=>c.get(A));var He=c.sibling(J,2),Ue=e=>{var n=re();let r,i;var a=c.child(n),o=c.child(a);c.remove_input_defaults(o),c.bind_this(o,e=>c.set(P,e),()=>c.get(P)),c.reset(a);var s=c.sibling(a,2);c.each(s,23,()=>U.filteredCountries,e=>e.id,(e,n,r)=>{var i=E();let a;var o=c.child(i),s=c.child(o),l=e=>{var r=c.comment(),i=c.first_child(r);c.snippet(i,()=>t.flag,()=>c.get(n)),c.append(e,r)},u=e=>{var t=c.text();c.template_effect(()=>c.set_text(t,c.get(n).flag)),c.append(e,t)};c.if(s,e=>{t.flag?e(l):e(u,-1)}),c.reset(o);var d=c.sibling(o,2),f=c.child(d,!0);c.reset(d);var p=c.sibling(d,2),m=c.child(p,!0);c.reset(p),c.reset(i),c.template_effect(e=>{c.set_attribute(i,`id`,e),a=c.set_class(i,1,`pi-option`,null,a,{"is-focused":c.get(r)===U.focusedIndex,"is-selected":c.get(n).id===I.country.id}),c.set_attribute(i,`aria-selected`,c.get(n).id===I.country.id),c.set_attribute(i,`title`,c.get(n).name),c.set_attribute(o,`aria-label`,`${c.get(n).name??``} flag`),c.set_text(f,c.get(n).name),c.set_text(m,c.get(n).code)},[()=>K(c.get(r))]),c.delegated(`click`,i,()=>U.selectCountry(c.get(n).id)),c.event(`mouseenter`,i,()=>U.setFocusedIndex(c.get(r))),c.append(e,i)},e=>{var t=D(),n=c.child(t,!0);c.reset(t),c.template_effect(()=>c.set_text(n,y())),c.append(e,t)}),c.reset(s),c.reset(n),c.action(n,e=>we?.(e)),c.bind_this(n,e=>c.set(N,e),()=>c.get(N)),c.template_effect(()=>{r=c.set_class(n,1,`phone-dropdown ${ie()??``} ${xe.themeClass??``}`,null,r,{"is-closing":U.isClosing}),i=c.set_style(n,``,i,{position:`absolute`,top:U.dropdownStyle.top,left:U.dropdownStyle.left,width:U.dropdownStyle.width}),c.set_attribute(o,`placeholder`,g()),c.set_attribute(o,`aria-controls`,c.get(G)),c.set_attribute(o,`aria-activedescendant`,c.get(ce)),c.set_value(o,U.search),c.set_attribute(s,`id`,c.get(G))}),c.event(`animationend`,n,function(...e){U.handleDropdownAnimationEnd?.apply(this,e)}),c.delegated(`keydown`,o,function(...e){U.handleSearchKeydown?.apply(this,e)}),c.delegated(`input`,o,function(...e){U.handleSearchChange?.apply(this,e)}),c.append(e,n)};c.if(He,e=>{U.dropdownOpen&&e(Ue)});var We=c.sibling(He,2);return c.bind_this(We,e=>c.set(M,e),()=>c.get(M)),c.template_effect(()=>{De=c.set_class(X,1,`pi-selector-btn`,null,De,{"no-dropdown":!U.hasDropdown||s()}),X.disabled=o(),c.set_attribute(X,`tabindex`,c.get(z)||!U.hasDropdown?-1:void 0),c.set_attribute(X,`aria-label`,`Selected country: ${I.country.name??``}`),c.set_attribute(X,`aria-expanded`,U.dropdownOpen),c.set_attribute(X,`aria-haspopup`,U.hasDropdown?`listbox`:void 0),c.set_attribute(Z,`aria-label`,`${I.country.name??``} flag`),c.set_text(je,I.country.code),c.set_attribute($,`id`,t.id),c.set_attribute($,`name`,t.name),c.set_attribute($,`placeholder`,L.displayPlaceholder),c.set_value($,L.displayValue),$.disabled=o(),$.readOnly=s(),c.set_attribute($,`aria-invalid`,c.get(oe))}),c.delegated(`click`,X,function(...e){U.toggleDropdown?.apply(this,e)}),c.delegated(`beforeinput`,$,function(...e){q.handleBeforeInput?.apply(this,e)}),c.delegated(`input`,$,function(...e){q.handleInput?.apply(this,e)}),c.delegated(`keydown`,$,function(...e){q.handleKeydown?.apply(this,e)}),c.event(`paste`,$,function(...e){q.handlePaste?.apply(this,e)}),c.event(`focus`,$,le),c.event(`blur`,$,ue),c.append(e,Ee),c.pop(Te)}c.delegate([`click`,`beforeinput`,`input`,`keydown`]);function k(e){let t=c.state(null),n=d({country:e.country,locale:e.locale,detect:e.detect,onCountryChange:e.onCountryChange}),r=f({country:()=>n.country,value:e.value,onChange:e.onChange,onPhoneChange:e.onPhoneChange}),{handleBeforeInput:i,handleInput:a,handleKeydown:o,handlePaste:s}=_({formatter:()=>r.formatter,digits:()=>r.digits,onChange:e.onChange});return c.user_effect(()=>{let e=c.get(t);if(e)return e.setAttribute(`type`,`tel`),e.setAttribute(`inputmode`,`tel`),e.addEventListener(`beforeinput`,i),e.addEventListener(`input`,a),e.addEventListener(`keydown`,o),e.addEventListener(`paste`,s),()=>{e.removeEventListener(`beforeinput`,i),e.removeEventListener(`input`,a),e.removeEventListener(`keydown`,o),e.removeEventListener(`paste`,s)}}),c.user_effect(()=>{let e=c.get(t);e&&(e.value=r.displayValue,e.setAttribute(`placeholder`,r.displayPlaceholder))}),{get inputRef(){return c.get(t)},set inputRef(e){c.set(t,e,!0)},get digits(){return r.digits},get formatter(){return r.formatter},get full(){return r.full},get fullFormatted(){return r.fullFormatted},get isComplete(){return r.isComplete},get isEmpty(){return r.isEmpty},get shouldShowWarn(){return r.shouldShowWarn},get country(){return n.country},get locale(){return n.locale},setCountry:n.setCountry,clear:()=>{e.onChange(``)}}}function ae(e){return typeof e==`string`?{country:e}:e&&typeof e==`object`?e:{}}function A(e){return t=>{if(t.tagName!==`INPUT`){console.warn(`[phoneMaskAttachment] Attachment can only be used on input elements`);return}let n=ae(e),r=c.effect_root(()=>{let e=c.state(c.proxy(t.value||``)),r=k({country:()=>n.country,locale:()=>n.locale,detect:()=>n.detect,value:()=>c.get(e),onChange:t=>{c.set(e,t,!0)},onPhoneChange:n.onChange,onCountryChange:n.onCountryChange});r.inputRef=t,t.__phoneMaskState={get country(){return r.country},get formatter(){return r.formatter},get digits(){return r.digits},get locale(){return r.locale},options:n,setCountry:e=>r.setCountry(e)}});return()=>{r(),delete t.__phoneMaskState}}}function j(e){return typeof e==`string`?{country:e}:e&&typeof e==`object`?e:{}}function M(e,t,n){if(t.digits=n,e.value=t.formatter.formatDisplay(t.digits),t.options.onChange){let n=e.value?`${t.country.code} ${e.value}`:``,r=t.digits?`${t.country.code}${t.digits}`:``;t.options.onChange({full:r,fullFormatted:n,digits:t.digits})}}function N(e,t){let n=t.formatter.getMaxDigits(),r=(0,u.extractDigits)(e.value,n),i=t.formatter.formatDisplay(r);(r!==t.digits||e.value!==i)&&M(e,t,r)}function P(e){let t=e.country.id,n=(0,u.parseCountryCode)(e.options.country);n&&n!==t&&e.setCountry(n)}function F(e,t,n){return r=>{let i=n(r,t);i&&(M(e,t,i.newDigits),Promise.resolve().then(()=>{(0,u.setCaret)(e,t.formatter.getCaretPosition(i.caretDigitIndex))}))}}async function I(e){let t=(0,u.parseCountryCode)(e.country);if(t)return t;if(e.detect){let e=(0,u.parseCountryCode)(await(0,u.detectByGeoIp)());if(e)return e;let t=(0,u.parseCountryCode)((0,u.detectCountryFromLocale)());if(t)return t}return`US`}function L(e,t){if(e.tagName!==`INPUT`)return console.warn(`[phoneMaskAction] Action can only be used on input elements`),{update(){},destroy(){}};e.setAttribute(`type`,`tel`),e.setAttribute(`inputmode`,`tel`),e.setAttribute(`placeholder`,``);let n=j(t),r=n.locale||(0,u.getNavigatorLang)(),i=(0,u.getCountry)((0,u.parseCountryCode)(n.country,`US`),r),a={country:i,formatter:(0,u.createPhoneFormatter)(i),digits:``,locale:r,options:n,setCountry(t){let n=(0,u.parseCountryCode)(t);if(!n)return!1;let r=(0,u.getCountry)(n,this.locale);return this.country=r,this.options.onCountryChange?.(r),this.formatter=(0,u.createPhoneFormatter)(r),e.placeholder=this.formatter.getPlaceholder(),N(e,this),!0}};e.__phoneMaskState=a;let o=F(e,a,u.processInput),s=F(e,a,u.processKeydown),c=F(e,a,u.processPaste);return e.addEventListener(`beforeinput`,u.processBeforeInput),e.addEventListener(`input`,o),e.addEventListener(`keydown`,s),e.addEventListener(`paste`,c),I(n).then(t=>{e.__phoneMaskState===a&&a.setCountry(t)}),{update(t){a.options=j(t),P(a),N(e,a)},destroy(){e.removeEventListener(`beforeinput`,u.processBeforeInput),e.removeEventListener(`input`,o),e.removeEventListener(`keydown`,s),e.removeEventListener(`paste`,c),delete e.__phoneMaskState}}}var R=ie;exports.PhoneInput=R,exports.phoneMaskAction=L,exports.phoneMaskAttachment=A,exports.usePhoneMask=k;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{MasksFull as e,countPlaceholders as t,createPhoneFormatter as n,detectByGeoIp as r,detectCountryFromLocale as i,extractDigits as a,filterCountries as o,formatDigitsWithMap as s,getCountry as c,getFlagEmoji as l,getNavigatorLang as u,parseCountryCode as d,pickMaskVariant as f,processBeforeInput as p,processInput as m,processKeydown as h,processPaste as g,removeCountryCodePrefix as _,setCaret as v,toArray as y}from"@desource/phone-mask";import"svelte/internal/disclose-version";import*as b from"svelte/internal/client";import{onDestroy as x,onMount as ee,tick as S}from"svelte";function C({country:e,locale:t,detect:n,onCountryChange:a}={}){let o=b.state(b.proxy(d(e?.(),`US`))),s=b.derived(()=>t?.()||u()),l=b.derived(()=>c(b.get(o),b.get(s))),f=e=>{let t=d(e);return t?(b.set(o,t,!0),!0):!1},p=async()=>{f(await r())||f(i())};return b.user_effect(()=>{let t=e?.();t&&t!==b.get(o)&&f(t)}),b.user_effect(()=>{n?.()&&!e?.()&&p()}),b.user_effect(()=>{a?.(b.get(l))}),{get country(){return b.get(l)},get locale(){return b.get(s)},setCountry:f}}function w({country:e,value:t,onChange:r,onPhoneChange:i,onValidationChange:o}){let s=b.derived(()=>n(e())),c=b.derived(()=>b.get(s).getMaxDigits()),l=b.derived(()=>a(t(),b.get(c))),u=b.derived(()=>b.get(s).getPlaceholder()),d=b.derived(()=>b.get(s).formatDisplay(b.get(l))),f=b.derived(()=>b.get(l)?`${e().code}${b.get(l)}`:``),p=b.derived(()=>b.get(d)?`${e().code} ${b.get(d)}`:``),m=b.derived(()=>b.get(s).isComplete(b.get(l))),h=b.derived(()=>b.get(l).length===0),g=b.derived(()=>!b.get(h)&&!b.get(m)),_=b.derived(()=>({full:b.get(f),fullFormatted:b.get(p),digits:b.get(l)}));return b.user_pre_effect(()=>{let e=t(),n=b.get(l);e!==n&&r(n)}),b.user_effect(()=>{i?.(b.get(_))}),b.user_effect(()=>{o?.(b.get(m))}),{get digits(){return b.get(l)},get formatter(){return b.get(s)},get displayPlaceholder(){return b.get(u)},get displayValue(){return b.get(d)},get full(){return b.get(f)},get fullFormatted(){return b.get(p)},get isComplete(){return b.get(m)},get isEmpty(){return b.get(h)},get shouldShowWarn(){return b.get(g)}}}function T(){let e=null,t=()=>{e&&=(clearTimeout(e),null)};return x(t),{set:(n,r)=>{t(),e=setTimeout(n,r)},clear:t}}function te(){let e=b.state(!1),t=T();return{get showValidationHint(){return b.get(e)},clearValidationHint:(n=!0)=>{n&&b.set(e,!1),t.clear()},scheduleValidationHint:n=>{b.set(e,!1),t.set(()=>{b.set(e,!0)},n)}}}var E=500,D=300;function O(e){let{formatter:t,digits:n,inactive:r,onChange:i,scheduleValidationHint:a}=e,o=(e,n)=>{S().then(()=>{e&&v(e,t().getCaretPosition(n))})};return{handleBeforeInput:e=>{p(e)},handleInput:e=>{if(r?.())return;let n=m(e,{formatter:t()});n&&(i?.(n.newDigits),o(e.target,n.caretDigitIndex),a?.(E))},handleKeydown:e=>{if(r?.())return;let s=h(e,{digits:n(),formatter:t()});s&&(i?.(s.newDigits),o(e.target,s.caretDigitIndex),a?.(D))},handlePaste:e=>{if(r?.())return;let s=g(e,{digits:n(),formatter:t()});s&&(i?.(s.newDigits),o(e.target,s.caretDigitIndex),a?.(D))}}}function k({rootRef:t,dropdownRef:n,searchRef:r,selectorRef:i,locale:a,countryOption:s,inactive:c,onSelectCountry:l,onAfterSelect:u}){let d=b.state(``),f=b.state(!1),p=b.state(!1),m=b.state(b.proxy({})),h=b.state(0),g=b.derived(()=>e(a())),_=b.derived(()=>o(b.get(g),b.get(d))),v=b.derived(()=>!s?.()&&b.get(g).length>1),y=e=>{b.set(h,e,!0)},ee=()=>{S().then(()=>r()?.focus({preventScroll:!0}))},C=()=>{b.get(f)&&b.set(p,!0)},w=()=>{b.set(p,!1),b.set(f,!0),y(0),ee()},T=()=>{b.get(p)&&(b.set(f,!1),b.set(p,!1))},te=()=>{c?.()||!b.get(v)||(b.get(f)?C():w())},E=e=>{l(e),C(),b.set(d,``),y(0),u?.()},D=e=>{b.set(d,e.target.value,!0),y(0)},O=e=>{let t=e.target,r=n(),a=i();t&&(r?.contains(t)||a?.contains(t)||C())},k=e=>{if(e?.type===`scroll`&&e.target&&n()?.contains(e.target))return;let r=t();if(!r)return;let i=r.getBoundingClientRect();b.set(m,{top:`${i.bottom+globalThis.scrollY+8}px`,left:`${i.left+globalThis.scrollX}px`,width:`${i.width}px`},!0)},A=()=>{S().then(()=>{let e=n()?.lastElementChild,t=e?.children[b.get(h)];if(!e||!t)return;let r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=0;if(i.top<r.top)a=e.scrollTop-(r.top-i.top);else if(i.bottom>r.bottom)a=e.scrollTop+(i.bottom-r.bottom);else return;e.scrollTo({top:a,behavior:`smooth`})})},j=e=>{e.key===`ArrowDown`?(e.preventDefault(),y(Math.min(b.get(h)+1,b.get(_).length-1)),A()):e.key===`ArrowUp`?(e.preventDefault(),y(Math.max(b.get(h)-1,0)),A()):e.key===`Enter`&&b.get(_)[b.get(h)]?(e.preventDefault(),E(b.get(_)[b.get(h)].id)):e.key===`Escape`&&C()},M=()=>{globalThis.removeEventListener(`resize`,k),globalThis.removeEventListener(`scroll`,k,!0),globalThis.removeEventListener(`click`,O,!0)};return b.user_effect(()=>{!b.get(v)&&b.get(f)&&C()}),b.user_effect(()=>{if(!b.get(f)){M();return}k(),globalThis.addEventListener(`resize`,k),globalThis.addEventListener(`scroll`,k,!0),globalThis.addEventListener(`click`,O,!0)}),x(M),{get dropdownOpen(){return b.get(f)},get isClosing(){return b.get(p)},get search(){return b.get(d)},get focusedIndex(){return b.get(h)},get dropdownStyle(){return b.get(m)},get filteredCountries(){return b.get(_)},get hasDropdown(){return b.get(v)},openDropdown:w,closeDropdown:C,toggleDropdown:te,selectCountry:E,setFocusedIndex:y,handleSearchChange:D,handleSearchKeydown:j,handleDropdownAnimationEnd:T}}function A(e=1800){let t=b.state(!1),n=b.state(!1),r=T();return{get copied(){return b.get(t)},get isCopying(){return b.get(n)},copy:async i=>{if(b.get(n))return!1;let a=i.trim();if(!a)return!1;b.set(n,!0);try{return await navigator.clipboard.writeText(a),b.set(t,!0),r.set(()=>{b.set(t,!1)},e),!0}catch(e){return console.warn(`Copy failed`,e),!1}finally{b.set(n,!1)}}}}var j=1800;function M({liveRef:e,fullFormatted:t,onCopy:n}){let r=T(),i=A(j),a=b.derived(()=>i.copied?`Copied`:`Copy ${t()}`),o=b.derived(()=>i.copied?`Copied`:`Copy phone number`),s=t=>{let n=e?.();n&&(n.textContent=t,r.set(()=>{let t=e?.();t&&(t.textContent=``)},j))};return{get copied(){return i.copied},get copyAriaLabel(){return b.get(a)},get copyButtonTitle(){return b.get(o)},onCopyClick:async()=>{let e=t().trim();await i.copy(e)&&(n?.(e),s(`Phone number copied to clipboard`))}}}function ne({theme:e}){let t=b.state(!1),n=b.derived(()=>(()=>{let n=e();return n===`auto`?b.get(t)?`theme-dark`:`theme-light`:`theme-${n}`})());return b.user_effect(()=>{let e=globalThis.matchMedia?.(`(prefers-color-scheme: dark)`)??null;if(!e)return;b.set(t,e.matches,!0);let n=e=>{b.set(t,e.matches,!0)};return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)}),{get themeClass(){return b.get(n)}}}var re=b.from_svg(`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M2.5 4.5L6 8L9.5 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),ie=b.from_svg(`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M6.5 11.5L3 8L4.06 6.94L6.5 9.38L11.94 3.94L13 5L6.5 11.5Z" fill="currentColor"></path></svg>`),ae=b.from_svg(`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M13.5 5.5V13.5H5.5V5.5H13.5ZM13.5 4H5.5C4.67 4 4 4.67 4 5.5V13.5C4 14.33 4.67 15 5.5 15H13.5C14.33 15 15 14.33 15 13.5V5.5C15 4.67 14.33 4 13.5 4ZM10.5 1H2.5V11H4V2.5H10.5V1Z" fill="currentColor"></path></svg>`),oe=b.from_html(`<button type="button"><!></button>`),se=b.from_svg(`<svg width="11" height="11" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z" fill="currentColor"></path></svg>`),ce=b.from_html(`<button type="button" class="pi-btn pi-btn-clear"><!></button>`),le=b.from_html(`<li role="option"><span class="pi-flag" role="img"><!></span> <span class="pi-opt-name"> </span> <span class="pi-opt-code"> </span></li>`),ue=b.from_html(`<li class="pi-empty"> </li>`),de=b.from_html(`<div role="dialog" aria-modal="false" aria-label="Select country"><div class="pi-search-wrap"><input type="search" class="pi-search" aria-label="Search countries"/></div> <ul class="pi-options" role="listbox" tabindex="-1"></ul></div>`),fe=b.from_html(`<div><div class="pi-selector"><button type="button"><span class="pi-flag" role="img"><!></span> <span class="pi-code"> </span> <!></button></div> <div class="pi-input-wrap"><input type="tel" inputmode="tel" autocomplete="tel-national" autocorrect="off" autocapitalize="off" spellcheck="false" class="pi-input"/> <div class="pi-actions" role="toolbar" aria-label="Phone input actions"><!> <!> <!></div></div></div> <!> <div class="sr-only" role="status" aria-live="polite" aria-atomic="true"></div>`,1);function N(e,t){b.push(t,!0);let n=b.prop(t,`value`,15,``),r=b.prop(t,`detect`,3,!0),i=b.prop(t,`size`,3,`normal`),a=b.prop(t,`theme`,3,`auto`),o=b.prop(t,`disabled`,3,!1),s=b.prop(t,`readonly`,3,!1),c=b.prop(t,`showCopy`,3,!0),l=b.prop(t,`showClear`,3,!1),u=b.prop(t,`withValidity`,3,!0),d=b.prop(t,`searchPlaceholder`,3,`Search country or code...`),f=b.prop(t,`noResultsText`,3,`No countries found`),p=b.prop(t,`clearButtonLabel`,3,`Clear phone number`),m=b.prop(t,`dropdownClass`,3,``),h=b.prop(t,`disableDefaultStyles`,3,!1),g=b.rest_props(t,`$$slots.$$events.$$legacy.value.country.detect.locale.size.theme.disabled.readonly.showCopy.showClear.withValidity.searchPlaceholder.noResultsText.clearButtonLabel.dropdownClass.disableDefaultStyles.onchange.oncountrychange.onvalidationchange.onfocus.onblur.oncopy.onclear.flag.copysvg.clearsvg.actionsbefore.class`.split(`.`)),_=b.state(null),v=b.state(null),y=b.state(null),x=b.state(null),T=b.state(null),E=b.state(null),D=C({country:()=>t.country,locale:()=>t.locale,detect:()=>r(),onCountryChange:(...e)=>t.oncountrychange?.(...e)}),A=w({country:()=>D.country,value:()=>n(),onChange:e=>n(e),onPhoneChange:(...e)=>t.onchange?.(...e),onValidationChange:(...e)=>t.onvalidationchange?.(...e)}),j=te(),N=b.derived(()=>o()||s()),P=b.derived(()=>j.showValidationHint&&A.shouldShowWarn),F=b.derived(()=>c()&&!A.isEmpty&&!o()),I=b.derived(()=>l()&&!A.isEmpty&&!b.get(N)),L=M({liveRef:()=>b.get(y),fullFormatted:()=>A.fullFormatted,onCopy:(...e)=>t.oncopy?.(...e)}),R=()=>S().then(()=>b.get(v)?.focus()),z=k({rootRef:()=>b.get(_),dropdownRef:()=>b.get(x),searchRef:()=>b.get(T),selectorRef:()=>b.get(E),locale:()=>D.locale,countryOption:()=>t.country,inactive:()=>b.get(N),onSelectCountry:D.setCountry,onAfterSelect:R}),B=b.state(`0`);ee(()=>{b.set(B,Math.random().toString(36).slice(2,10),!0)});let V=b.derived(()=>`pi-options-${b.get(B)}`),H=e=>`pi-option-${b.get(B)}-${e}`,U=b.derived(()=>z.dropdownOpen&&z.filteredCountries[z.focusedIndex]?H(z.focusedIndex):void 0),W=O({formatter:()=>A.formatter,digits:()=>A.digits,inactive:()=>b.get(N),onChange:e=>n(e),scheduleValidationHint:j.scheduleValidationHint}),G=e=>{j.clearValidationHint(!1),z.closeDropdown(),t.onfocus?.(e)},pe=e=>t.onblur?.(e);function me(){R()}function he(){b.get(v)?.blur()}function ge(){n(``),j.clearValidationHint(),t.onclear?.()}function _e(e){D.setCountry(e)}function ve(){return A.full}function ye(){return A.fullFormatted}function be(){return A.digits}function xe(){return A.isComplete}function Se(){return A.isComplete}let Ce=()=>{ge(),R()},K=ne({theme:()=>a()}),we=b.derived(()=>[`phone-input`,`size-${i()}`,K.themeClass,o()&&`is-disabled`,s()&&`is-readonly`,h()&&`is-unstyled`,u()&&b.get(P)&&`is-incomplete`,u()&&A.isComplete&&`is-complete`,t.class].filter(Boolean).join(` `)),Te=b.derived(()=>+b.get(F)+ +b.get(I)+(t.actionsbefore?1:0));function Ee(e){return document.body.appendChild(e),{destroy:()=>e.remove()}}var De={focus:me,blur:he,clear:ge,selectCountry:_e,getFullNumber:ve,getFullFormattedNumber:ye,getDigits:be,isValid:xe,isComplete:Se},Oe=fe(),q=b.first_child(Oe);b.attribute_effect(q,()=>({class:b.get(we),...g,role:`group`,"aria-label":`Phone input with country selector`,[b.STYLE]:{"--pi-actions-count":b.get(Te)}}));var J=b.child(q),Y=b.child(J);let ke;var X=b.child(Y),Ae=b.child(X),je=e=>{var n=b.comment(),r=b.first_child(n);b.snippet(r,()=>t.flag,()=>D.country),b.append(e,n)},Me=e=>{var t=b.text();b.template_effect(()=>b.set_text(t,D.country.flag)),b.append(e,t)};b.if(Ae,e=>{t.flag?e(je):e(Me,-1)}),b.reset(X);var Z=b.sibling(X,2),Ne=b.child(Z,!0);b.reset(Z);var Pe=b.sibling(Z,2),Fe=e=>{var t=re();let n;b.template_effect(()=>n=b.set_class(t,0,`pi-chevron`,null,n,{"is-open":z.dropdownOpen})),b.append(e,t)};b.if(Pe,e=>{!b.get(N)&&z.hasDropdown&&e(Fe)}),b.reset(Y),b.reset(J),b.bind_this(J,e=>b.set(E,e),()=>b.get(E));var Ie=b.sibling(J,2),Q=b.child(Ie);b.remove_input_defaults(Q),b.bind_this(Q,e=>b.set(v,e),()=>b.get(v));var Le=b.sibling(Q,2),Re=b.child(Le),ze=e=>{var n=b.comment(),r=b.first_child(n);b.snippet(r,()=>t.actionsbefore),b.append(e,n)};b.if(Re,e=>{t.actionsbefore&&e(ze)});var Be=b.sibling(Re,2),Ve=e=>{var n=oe();let r;var i=b.child(n),a=e=>{var n=b.comment(),r=b.first_child(n);b.snippet(r,()=>t.copysvg,()=>L.copied),b.append(e,n)},o=e=>{var t=ie();b.append(e,t)},s=e=>{var t=ae();b.append(e,t)};b.if(i,e=>{t.copysvg?e(a):L.copied?e(o,1):e(s,-1)}),b.reset(n),b.template_effect(()=>{r=b.set_class(n,1,`pi-btn pi-btn-copy`,null,r,{"is-copied":L.copied}),b.set_attribute(n,`aria-label`,L.copyAriaLabel),b.set_attribute(n,`title`,L.copyButtonTitle)}),b.delegated(`click`,n,function(...e){L.onCopyClick?.apply(this,e)}),b.append(e,n)};b.if(Be,e=>{b.get(F)&&e(Ve)});var He=b.sibling(Be,2),Ue=e=>{var n=ce(),r=b.child(n),i=e=>{var n=b.comment(),r=b.first_child(n);b.snippet(r,()=>t.clearsvg),b.append(e,n)},a=e=>{var t=se();b.append(e,t)};b.if(r,e=>{t.clearsvg?e(i):e(a,-1)}),b.reset(n),b.template_effect(()=>{b.set_attribute(n,`aria-label`,p()),b.set_attribute(n,`title`,p())}),b.delegated(`click`,n,Ce),b.append(e,n)};b.if(He,e=>{b.get(I)&&e(Ue)}),b.reset(Le),b.reset(Ie),b.reset(q),b.bind_this(q,e=>b.set(_,e),()=>b.get(_));var $=b.sibling(q,2),We=e=>{var n=de();let r,i;var a=b.child(n),o=b.child(a);b.remove_input_defaults(o),b.bind_this(o,e=>b.set(T,e),()=>b.get(T)),b.reset(a);var s=b.sibling(a,2);b.each(s,23,()=>z.filteredCountries,e=>e.id,(e,n,r)=>{var i=le();let a;var o=b.child(i),s=b.child(o),c=e=>{var r=b.comment(),i=b.first_child(r);b.snippet(i,()=>t.flag,()=>b.get(n)),b.append(e,r)},l=e=>{var t=b.text();b.template_effect(()=>b.set_text(t,b.get(n).flag)),b.append(e,t)};b.if(s,e=>{t.flag?e(c):e(l,-1)}),b.reset(o);var u=b.sibling(o,2),d=b.child(u,!0);b.reset(u);var f=b.sibling(u,2),p=b.child(f,!0);b.reset(f),b.reset(i),b.template_effect(e=>{b.set_attribute(i,`id`,e),a=b.set_class(i,1,`pi-option`,null,a,{"is-focused":b.get(r)===z.focusedIndex,"is-selected":b.get(n).id===D.country.id}),b.set_attribute(i,`aria-selected`,b.get(n).id===D.country.id),b.set_attribute(i,`title`,b.get(n).name),b.set_attribute(o,`aria-label`,`${b.get(n).name??``} flag`),b.set_text(d,b.get(n).name),b.set_text(p,b.get(n).code)},[()=>H(b.get(r))]),b.delegated(`click`,i,()=>z.selectCountry(b.get(n).id)),b.event(`mouseenter`,i,()=>z.setFocusedIndex(b.get(r))),b.append(e,i)},e=>{var t=ue(),n=b.child(t,!0);b.reset(t),b.template_effect(()=>b.set_text(n,f())),b.append(e,t)}),b.reset(s),b.reset(n),b.action(n,e=>Ee?.(e)),b.bind_this(n,e=>b.set(x,e),()=>b.get(x)),b.template_effect(()=>{r=b.set_class(n,1,`phone-dropdown ${m()??``} ${K.themeClass??``}`,null,r,{"is-closing":z.isClosing}),i=b.set_style(n,``,i,{position:`absolute`,top:z.dropdownStyle.top,left:z.dropdownStyle.left,width:z.dropdownStyle.width}),b.set_attribute(o,`placeholder`,d()),b.set_attribute(o,`aria-controls`,b.get(V)),b.set_attribute(o,`aria-activedescendant`,b.get(U)),b.set_value(o,z.search),b.set_attribute(s,`id`,b.get(V))}),b.event(`animationend`,n,function(...e){z.handleDropdownAnimationEnd?.apply(this,e)}),b.delegated(`keydown`,o,function(...e){z.handleSearchKeydown?.apply(this,e)}),b.delegated(`input`,o,function(...e){z.handleSearchChange?.apply(this,e)}),b.append(e,n)};b.if($,e=>{z.dropdownOpen&&e(We)});var Ge=b.sibling($,2);return b.bind_this(Ge,e=>b.set(y,e),()=>b.get(y)),b.template_effect(()=>{ke=b.set_class(Y,1,`pi-selector-btn`,null,ke,{"no-dropdown":!z.hasDropdown||s()}),Y.disabled=o(),b.set_attribute(Y,`tabindex`,b.get(N)||!z.hasDropdown?-1:void 0),b.set_attribute(Y,`aria-label`,`Selected country: ${D.country.name??``}`),b.set_attribute(Y,`aria-expanded`,z.dropdownOpen),b.set_attribute(Y,`aria-haspopup`,z.hasDropdown?`listbox`:void 0),b.set_attribute(X,`aria-label`,`${D.country.name??``} flag`),b.set_text(Ne,D.country.code),b.set_attribute(Q,`placeholder`,A.displayPlaceholder),b.set_value(Q,A.displayValue),Q.disabled=o(),Q.readOnly=s(),b.set_attribute(Q,`aria-invalid`,b.get(P))}),b.delegated(`click`,Y,function(...e){z.toggleDropdown?.apply(this,e)}),b.delegated(`beforeinput`,Q,function(...e){W.handleBeforeInput?.apply(this,e)}),b.delegated(`input`,Q,function(...e){W.handleInput?.apply(this,e)}),b.delegated(`keydown`,Q,function(...e){W.handleKeydown?.apply(this,e)}),b.event(`paste`,Q,function(...e){W.handlePaste?.apply(this,e)}),b.event(`focus`,Q,G),b.event(`blur`,Q,pe),b.append(e,Oe),b.pop(De)}b.delegate([`click`,`beforeinput`,`input`,`keydown`]);function P(e){let t=b.state(null),n=C({country:e.country,locale:e.locale,detect:e.detect,onCountryChange:e.onCountryChange}),r=w({country:()=>n.country,value:e.value,onChange:e.onChange,onPhoneChange:e.onPhoneChange}),{handleBeforeInput:i,handleInput:a,handleKeydown:o,handlePaste:s}=O({formatter:()=>r.formatter,digits:()=>r.digits,onChange:e.onChange});return b.user_effect(()=>{let e=b.get(t);if(e)return e.setAttribute(`type`,`tel`),e.setAttribute(`inputmode`,`tel`),e.addEventListener(`beforeinput`,i),e.addEventListener(`input`,a),e.addEventListener(`keydown`,o),e.addEventListener(`paste`,s),()=>{e.removeEventListener(`beforeinput`,i),e.removeEventListener(`input`,a),e.removeEventListener(`keydown`,o),e.removeEventListener(`paste`,s)}}),b.user_effect(()=>{let e=b.get(t);e&&(e.value=r.displayValue,e.setAttribute(`placeholder`,r.displayPlaceholder))}),{get inputRef(){return b.get(t)},set inputRef(e){b.set(t,e,!0)},get digits(){return r.digits},get formatter(){return r.formatter},get full(){return r.full},get fullFormatted(){return r.fullFormatted},get isComplete(){return r.isComplete},get isEmpty(){return r.isEmpty},get shouldShowWarn(){return r.shouldShowWarn},get country(){return n.country},get locale(){return n.locale},setCountry:n.setCountry,clear:()=>{e.onChange(``)}}}function F(e){return typeof e==`string`?{country:e}:e&&typeof e==`object`?e:{}}function I(e){return t=>{if(t.tagName!==`INPUT`){console.warn(`[phoneMaskAttachment] Attachment can only be used on input elements`);return}let n=F(e),r=b.effect_root(()=>{let e=b.state(b.proxy(t.value||``)),r=P({country:()=>n.country,locale:()=>n.locale,detect:()=>n.detect,value:()=>b.get(e),onChange:t=>{b.set(e,t,!0)},onPhoneChange:n.onChange,onCountryChange:n.onCountryChange});r.inputRef=t,t.__phoneMaskState={get country(){return r.country},get formatter(){return r.formatter},get digits(){return r.digits},get locale(){return r.locale},options:n,setCountry:e=>r.setCountry(e)}});return()=>{r(),delete t.__phoneMaskState}}}function L(e){return typeof e==`string`?{country:e}:e&&typeof e==`object`?e:{}}function R(e,t,n){if(t.digits=n,e.value=t.formatter.formatDisplay(t.digits),t.options.onChange){let n=e.value?`${t.country.code} ${e.value}`:``,r=t.digits?`${t.country.code}${t.digits}`:``;t.options.onChange({full:r,fullFormatted:n,digits:t.digits})}}function z(e,t){let n=t.formatter.getMaxDigits(),r=a(e.value,n),i=t.formatter.formatDisplay(r);(r!==t.digits||e.value!==i)&&R(e,t,r)}function B(e){let t=e.country.id,n=d(e.options.country);n&&n!==t&&e.setCountry(n)}function V(e,t,n){return r=>{let i=n(r,t);i&&(R(e,t,i.newDigits),Promise.resolve().then(()=>{v(e,t.formatter.getCaretPosition(i.caretDigitIndex))}))}}async function H(e){let t=d(e.country);if(t)return t;if(e.detect){let e=d(await r());if(e)return e;let t=d(i());if(t)return t}return`US`}function U(e,t){if(e.tagName!==`INPUT`)return console.warn(`[phoneMaskAction] Action can only be used on input elements`),{update(){},destroy(){}};e.setAttribute(`type`,`tel`),e.setAttribute(`inputmode`,`tel`),e.setAttribute(`placeholder`,``);let r=L(t),i=r.locale||u(),a=c(d(r.country,`US`),i),o={country:a,formatter:n(a),digits:``,locale:i,options:r,setCountry(t){let r=d(t);if(!r)return!1;let i=c(r,this.locale);return this.country=i,this.options.onCountryChange?.(i),this.formatter=n(i),e.placeholder=this.formatter.getPlaceholder(),z(e,this),!0}};e.__phoneMaskState=o;let s=V(e,o,m),l=V(e,o,h),f=V(e,o,g);return e.addEventListener(`beforeinput`,p),e.addEventListener(`input`,s),e.addEventListener(`keydown`,l),e.addEventListener(`paste`,f),H(r).then(t=>{e.__phoneMaskState===o&&o.setCountry(t)}),{update(t){o.options=L(t),B(o),z(e,o)},destroy(){e.removeEventListener(`beforeinput`,p),e.removeEventListener(`input`,s),e.removeEventListener(`keydown`,l),e.removeEventListener(`paste`,f),delete e.__phoneMaskState}}}var W=N,G={getFlagEmoji:l,countPlaceholders:t,formatDigitsWithMap:s,pickMaskVariant:f,removeCountryCodePrefix:_,toArray:y};export{G as PMaskHelpers,W as PhoneInput,U as phoneMaskAction,I as phoneMaskAttachment,P as usePhoneMask};
1
+ import"svelte/internal/disclose-version";import*as e from"svelte/internal/client";import{onDestroy as t,onMount as n,tick as r}from"svelte";import{MasksFull as i,createPhoneFormatter as a,detectByGeoIp as o,detectCountryFromLocale as s,extractDigits as c,filterCountries as l,getCountry as u,getNavigatorLang as d,parseCountryCode as f,processBeforeInput as p,processInput as m,processKeydown as h,processPaste as g,setCaret as _}from"@desource/phone-mask";function v({country:t,locale:n,detect:r,onCountryChange:i}={}){let a=e.state(e.proxy(f(t?.(),`US`))),c=e.derived(()=>n?.()||d()),l=e.derived(()=>u(e.get(a),e.get(c))),p=t=>{let n=f(t);return n?(e.set(a,n,!0),!0):!1},m=async()=>{p(await o())||p(s())};return e.user_effect(()=>{let n=t?.();n&&n!==e.get(a)&&p(n)}),e.user_effect(()=>{r?.()&&!t?.()&&m()}),e.user_effect(()=>{i?.(e.get(l))}),{get country(){return e.get(l)},get locale(){return e.get(c)},setCountry:p}}function y({country:t,value:n,onChange:r,onPhoneChange:i,onValidationChange:o}){let s=e.derived(()=>a(t())),l=e.derived(()=>e.get(s).getMaxDigits()),u=e.derived(()=>c(n(),e.get(l))),d=e.derived(()=>e.get(s).getPlaceholder()),f=e.derived(()=>e.get(s).formatDisplay(e.get(u))),p=e.derived(()=>e.get(u)?`${t().code}${e.get(u)}`:``),m=e.derived(()=>e.get(f)?`${t().code} ${e.get(f)}`:``),h=e.derived(()=>e.get(s).isComplete(e.get(u))),g=e.derived(()=>e.get(u).length===0),_=e.derived(()=>!e.get(g)&&!e.get(h)),v=e.derived(()=>({full:e.get(p),fullFormatted:e.get(m),digits:e.get(u)}));return e.user_pre_effect(()=>{let t=n(),i=e.get(u);t!==i&&r(i)}),e.user_effect(()=>{i?.(e.get(v))}),e.user_effect(()=>{o?.(e.get(h))}),{get digits(){return e.get(u)},get formatter(){return e.get(s)},get displayPlaceholder(){return e.get(d)},get displayValue(){return e.get(f)},get full(){return e.get(p)},get fullFormatted(){return e.get(m)},get isComplete(){return e.get(h)},get isEmpty(){return e.get(g)},get shouldShowWarn(){return e.get(_)}}}function b(){let e=null,n=()=>{e&&=(clearTimeout(e),null)};return t(n),{set:(t,r)=>{n(),e=setTimeout(t,r)},clear:n}}function x(){let t=e.state(!1),n=b();return{get showValidationHint(){return e.get(t)},clearValidationHint:(r=!0)=>{r&&e.set(t,!1),n.clear()},scheduleValidationHint:r=>{e.set(t,!1),n.set(()=>{e.set(t,!0)},r)}}}var S=500,C=300;function w(e){let{formatter:t,digits:n,inactive:i,onChange:a,scheduleValidationHint:o}=e,s=(e,n)=>{r().then(()=>{e&&_(e,t().getCaretPosition(n))})};return{handleBeforeInput:e=>{p(e)},handleInput:e=>{if(i?.())return;let n=m(e,{formatter:t()});n&&(a?.(n.newDigits),s(e.target,n.caretDigitIndex),o?.(S))},handleKeydown:e=>{if(i?.())return;let r=h(e,{digits:n(),formatter:t()});r&&(a?.(r.newDigits),s(e.target,r.caretDigitIndex),o?.(C))},handlePaste:e=>{if(i?.())return;let r=g(e,{digits:n(),formatter:t()});r&&(a?.(r.newDigits),s(e.target,r.caretDigitIndex),o?.(C))}}}function T({rootRef:n,dropdownRef:a,searchRef:o,selectorRef:s,locale:c,countryOption:u,inactive:d,onSelectCountry:f,onAfterSelect:p}){let m=e.state(``),h=e.state(!1),g=e.state(!1),_=e.state(e.proxy({})),v=e.state(0),y=e.derived(()=>i(c())),b=e.derived(()=>l(e.get(y),e.get(m))),x=e.derived(()=>!u?.()&&e.get(y).length>1),S=t=>{e.set(v,t,!0)},C=()=>{r().then(()=>o()?.focus({preventScroll:!0}))},w=()=>{e.get(h)&&e.set(g,!0)},T=()=>{e.set(g,!1),e.set(h,!0),S(0),C()},E=()=>{e.get(g)&&(e.set(h,!1),e.set(g,!1))},D=()=>{d?.()||!e.get(x)||(e.get(h)?w():T())},O=t=>{f(t),w(),e.set(m,``),S(0),p?.()},ee=t=>{e.set(m,t.target.value,!0),S(0)},k=e=>{let t=e.target,n=a(),r=s();t&&(n?.contains(t)||r?.contains(t)||w())},A=t=>{if(t?.type===`scroll`&&t.target&&a()?.contains(t.target))return;let r=n();if(!r)return;let i=r.getBoundingClientRect();e.set(_,{top:`${i.bottom+globalThis.scrollY+8}px`,left:`${i.left+globalThis.scrollX}px`,width:`${i.width}px`},!0)},j=()=>{r().then(()=>{let t=a()?.lastElementChild,n=t?.children[e.get(v)];if(!t||!n)return;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),o=0;if(i.top<r.top)o=t.scrollTop-(r.top-i.top);else if(i.bottom>r.bottom)o=t.scrollTop+(i.bottom-r.bottom);else return;t.scrollTo({top:o,behavior:`smooth`})})},te=t=>{t.key===`ArrowDown`?(t.preventDefault(),S(Math.min(e.get(v)+1,e.get(b).length-1)),j()):t.key===`ArrowUp`?(t.preventDefault(),S(Math.max(e.get(v)-1,0)),j()):t.key===`Enter`&&e.get(b)[e.get(v)]?(t.preventDefault(),O(e.get(b)[e.get(v)].id)):t.key===`Escape`&&w()},M=()=>{globalThis.removeEventListener(`resize`,A),globalThis.removeEventListener(`scroll`,A,!0),globalThis.removeEventListener(`click`,k,!0)};return e.user_effect(()=>{!e.get(x)&&e.get(h)&&w()}),e.user_effect(()=>{if(!e.get(h)){M();return}A(),globalThis.addEventListener(`resize`,A),globalThis.addEventListener(`scroll`,A,!0),globalThis.addEventListener(`click`,k,!0)}),t(M),{get dropdownOpen(){return e.get(h)},get isClosing(){return e.get(g)},get search(){return e.get(m)},get focusedIndex(){return e.get(v)},get dropdownStyle(){return e.get(_)},get filteredCountries(){return e.get(b)},get hasDropdown(){return e.get(x)},openDropdown:T,closeDropdown:w,toggleDropdown:D,selectCountry:O,setFocusedIndex:S,handleSearchChange:ee,handleSearchKeydown:te,handleDropdownAnimationEnd:E}}function E(t=1800){let n=e.state(!1),r=e.state(!1),i=b();return{get copied(){return e.get(n)},get isCopying(){return e.get(r)},copy:async a=>{if(e.get(r))return!1;let o=a.trim();if(!o)return!1;e.set(r,!0);try{return await navigator.clipboard.writeText(o),e.set(n,!0),i.set(()=>{e.set(n,!1)},t),!0}catch(e){return console.warn(`Copy failed`,e),!1}finally{e.set(r,!1)}}}}var D=1800;function O({liveRef:t,fullFormatted:n,onCopy:r}){let i=b(),a=E(D),o=e.derived(()=>a.copied?`Copied`:`Copy ${n()}`),s=e.derived(()=>a.copied?`Copied`:`Copy phone number`),c=e=>{let n=t?.();n&&(n.textContent=e,i.set(()=>{let e=t?.();e&&(e.textContent=``)},D))};return{get copied(){return a.copied},get copyAriaLabel(){return e.get(o)},get copyButtonTitle(){return e.get(s)},onCopyClick:async()=>{let e=n().trim();await a.copy(e)&&(r?.(e),c(`Phone number copied to clipboard`))}}}function ee({theme:t}){let n=e.state(!1),r=e.derived(()=>(()=>{let r=t();return r===`auto`?e.get(n)?`theme-dark`:`theme-light`:`theme-${r}`})());return e.user_effect(()=>{let t=globalThis.matchMedia?.(`(prefers-color-scheme: dark)`)??null;if(!t)return;e.set(n,t.matches,!0);let r=t=>{e.set(n,t.matches,!0)};return t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)}),{get themeClass(){return e.get(r)}}}var k=e.from_svg(`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"><path d="M2.5 4.5L6 8L9.5 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),A=e.from_svg(`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M6.5 11.5L3 8L4.06 6.94L6.5 9.38L11.94 3.94L13 5L6.5 11.5Z" fill="currentColor"></path></svg>`),j=e.from_svg(`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M13.5 5.5V13.5H5.5V5.5H13.5ZM13.5 4H5.5C4.67 4 4 4.67 4 5.5V13.5C4 14.33 4.67 15 5.5 15H13.5C14.33 15 15 14.33 15 13.5V5.5C15 4.67 14.33 4 13.5 4ZM10.5 1H2.5V11H4V2.5H10.5V1Z" fill="currentColor"></path></svg>`),te=e.from_html(`<button type="button"><!></button>`),M=e.from_svg(`<svg width="11" height="11" viewBox="0 0 14 14" fill="none" aria-hidden="true"><path d="M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z" fill="currentColor"></path></svg>`),ne=e.from_html(`<button type="button" class="pi-btn pi-btn-clear"><!></button>`),re=e.from_html(`<li role="option"><span class="pi-flag" role="img"><!></span> <span class="pi-opt-name"> </span> <span class="pi-opt-code"> </span></li>`),ie=e.from_html(`<li class="pi-empty"> </li>`),ae=e.from_html(`<div role="dialog" aria-modal="false" aria-label="Select country"><div class="pi-search-wrap"><input type="search" class="pi-search" aria-label="Search countries"/></div> <ul class="pi-options" role="listbox" tabindex="-1"></ul></div>`),oe=e.from_html(`<div><div class="pi-selector"><button type="button"><span class="pi-flag" role="img"><!></span> <span class="pi-code"> </span> <!></button></div> <div class="pi-input-wrap"><input type="tel" inputmode="tel" autocomplete="tel-national" autocorrect="off" autocapitalize="off" spellcheck="false" class="pi-input"/> <div class="pi-actions" role="toolbar" aria-label="Phone input actions"><!> <!> <!></div></div></div> <!> <div class="sr-only" role="status" aria-live="polite" aria-atomic="true"></div>`,1);function N(t,i){e.push(i,!0);let a=e.prop(i,`value`,15,``),o=e.prop(i,`detect`,3,!0),s=e.prop(i,`size`,3,`normal`),c=e.prop(i,`theme`,3,`auto`),l=e.prop(i,`disabled`,3,!1),u=e.prop(i,`readonly`,3,!1),d=e.prop(i,`showCopy`,3,!0),f=e.prop(i,`showClear`,3,!1),p=e.prop(i,`withValidity`,3,!0),m=e.prop(i,`searchPlaceholder`,3,`Search country or code...`),h=e.prop(i,`noResultsText`,3,`No countries found`),g=e.prop(i,`clearButtonLabel`,3,`Clear phone number`),_=e.prop(i,`dropdownClass`,3,``),b=e.prop(i,`disableDefaultStyles`,3,!1),S=e.rest_props(i,`$$slots.$$events.$$legacy.value.id.name.country.detect.locale.size.theme.disabled.readonly.showCopy.showClear.withValidity.searchPlaceholder.noResultsText.clearButtonLabel.dropdownClass.disableDefaultStyles.onchange.oncountrychange.onvalidationchange.onfocus.onblur.oncopy.onclear.flag.copysvg.clearsvg.actionsbefore.class`.split(`.`)),C=e.state(null),E=e.state(null),D=e.state(null),N=e.state(null),P=e.state(null),F=e.state(null),I=v({country:()=>i.country,locale:()=>i.locale,detect:()=>o(),onCountryChange:(...e)=>i.oncountrychange?.(...e)}),L=y({country:()=>I.country,value:()=>a(),onChange:e=>a(e),onPhoneChange:(...e)=>i.onchange?.(...e),onValidationChange:(...e)=>i.onvalidationchange?.(...e)}),R=x(),z=e.derived(()=>l()||u()),B=e.derived(()=>R.showValidationHint&&L.shouldShowWarn),V=e.derived(()=>d()&&!L.isEmpty&&!l()),H=e.derived(()=>f()&&!L.isEmpty&&!e.get(z)),U=O({liveRef:()=>e.get(D),fullFormatted:()=>L.fullFormatted,onCopy:(...e)=>i.oncopy?.(...e)}),W=()=>r().then(()=>e.get(E)?.focus()),G=T({rootRef:()=>e.get(C),dropdownRef:()=>e.get(N),searchRef:()=>e.get(P),selectorRef:()=>e.get(F),locale:()=>I.locale,countryOption:()=>i.country,inactive:()=>e.get(z),onSelectCountry:I.setCountry,onAfterSelect:W}),K=e.state(`0`);n(()=>{e.set(K,Math.random().toString(36).slice(2,10),!0)});let se=e.derived(()=>`pi-options-${e.get(K)}`),ce=t=>`pi-option-${e.get(K)}-${t}`,le=e.derived(()=>G.dropdownOpen&&G.filteredCountries[G.focusedIndex]?ce(G.focusedIndex):void 0),q=w({formatter:()=>L.formatter,digits:()=>L.digits,inactive:()=>e.get(z),onChange:e=>a(e),scheduleValidationHint:R.scheduleValidationHint}),ue=e=>{R.clearValidationHint(!1),G.closeDropdown(),i.onfocus?.(e)},de=e=>i.onblur?.(e);function fe(){W()}function pe(){e.get(E)?.blur()}function me(){a(``),R.clearValidationHint(),i.onclear?.()}function he(e){I.setCountry(e)}function ge(){return L.full}function _e(){return L.fullFormatted}function ve(){return L.digits}function ye(){return L.isComplete}function be(){return L.isComplete}let xe=()=>{me(),W()},Se=ee({theme:()=>c()}),Ce=e.derived(()=>[`phone-input`,`size-${s()}`,Se.themeClass,l()&&`is-disabled`,u()&&`is-readonly`,b()&&`is-unstyled`,p()&&e.get(B)&&`is-incomplete`,p()&&L.isComplete&&`is-complete`,i.class].filter(Boolean).join(` `)),we=e.derived(()=>+e.get(V)+ +e.get(H)+(i.actionsbefore?1:0));function Te(e){return document.body.appendChild(e),{destroy:()=>e.remove()}}var Ee={focus:fe,blur:pe,clear:me,selectCountry:he,getFullNumber:ge,getFullFormattedNumber:_e,getDigits:ve,isValid:ye,isComplete:be},De=oe(),J=e.first_child(De);e.attribute_effect(J,()=>({class:e.get(Ce),...S,role:`group`,"aria-label":`Phone input with country selector`,[e.STYLE]:{"--pi-actions-count":e.get(we)}}));var Y=e.child(J),X=e.child(Y);let Oe;var Z=e.child(X),ke=e.child(Z),Ae=t=>{var n=e.comment(),r=e.first_child(n);e.snippet(r,()=>i.flag,()=>I.country),e.append(t,n)},je=t=>{var n=e.text();e.template_effect(()=>e.set_text(n,I.country.flag)),e.append(t,n)};e.if(ke,e=>{i.flag?e(Ae):e(je,-1)}),e.reset(Z);var Q=e.sibling(Z,2),Me=e.child(Q,!0);e.reset(Q);var Ne=e.sibling(Q,2),Pe=t=>{var n=k();let r;e.template_effect(()=>r=e.set_class(n,0,`pi-chevron`,null,r,{"is-open":G.dropdownOpen})),e.append(t,n)};e.if(Ne,t=>{!e.get(z)&&G.hasDropdown&&t(Pe)}),e.reset(X),e.reset(Y),e.bind_this(Y,t=>e.set(F,t),()=>e.get(F));var Fe=e.sibling(Y,2),$=e.child(Fe);e.remove_input_defaults($),e.bind_this($,t=>e.set(E,t),()=>e.get(E));var Ie=e.sibling($,2),Le=e.child(Ie),Re=t=>{var n=e.comment(),r=e.first_child(n);e.snippet(r,()=>i.actionsbefore),e.append(t,n)};e.if(Le,e=>{i.actionsbefore&&e(Re)});var ze=e.sibling(Le,2),Be=t=>{var n=te();let r;var a=e.child(n),o=t=>{var n=e.comment(),r=e.first_child(n);e.snippet(r,()=>i.copysvg,()=>U.copied),e.append(t,n)},s=t=>{var n=A();e.append(t,n)},c=t=>{var n=j();e.append(t,n)};e.if(a,e=>{i.copysvg?e(o):U.copied?e(s,1):e(c,-1)}),e.reset(n),e.template_effect(()=>{r=e.set_class(n,1,`pi-btn pi-btn-copy`,null,r,{"is-copied":U.copied}),e.set_attribute(n,`aria-label`,U.copyAriaLabel),e.set_attribute(n,`title`,U.copyButtonTitle)}),e.delegated(`click`,n,function(...e){U.onCopyClick?.apply(this,e)}),e.append(t,n)};e.if(ze,t=>{e.get(V)&&t(Be)});var Ve=e.sibling(ze,2),He=t=>{var n=ne(),r=e.child(n),a=t=>{var n=e.comment(),r=e.first_child(n);e.snippet(r,()=>i.clearsvg),e.append(t,n)},o=t=>{var n=M();e.append(t,n)};e.if(r,e=>{i.clearsvg?e(a):e(o,-1)}),e.reset(n),e.template_effect(()=>{e.set_attribute(n,`aria-label`,g()),e.set_attribute(n,`title`,g())}),e.delegated(`click`,n,xe),e.append(t,n)};e.if(Ve,t=>{e.get(H)&&t(He)}),e.reset(Ie),e.reset(Fe),e.reset(J),e.bind_this(J,t=>e.set(C,t),()=>e.get(C));var Ue=e.sibling(J,2),We=t=>{var n=ae();let r,a;var o=e.child(n),s=e.child(o);e.remove_input_defaults(s),e.bind_this(s,t=>e.set(P,t),()=>e.get(P)),e.reset(o);var c=e.sibling(o,2);e.each(c,23,()=>G.filteredCountries,e=>e.id,(t,n,r)=>{var a=re();let o;var s=e.child(a),c=e.child(s),l=t=>{var r=e.comment(),a=e.first_child(r);e.snippet(a,()=>i.flag,()=>e.get(n)),e.append(t,r)},u=t=>{var r=e.text();e.template_effect(()=>e.set_text(r,e.get(n).flag)),e.append(t,r)};e.if(c,e=>{i.flag?e(l):e(u,-1)}),e.reset(s);var d=e.sibling(s,2),f=e.child(d,!0);e.reset(d);var p=e.sibling(d,2),m=e.child(p,!0);e.reset(p),e.reset(a),e.template_effect(t=>{e.set_attribute(a,`id`,t),o=e.set_class(a,1,`pi-option`,null,o,{"is-focused":e.get(r)===G.focusedIndex,"is-selected":e.get(n).id===I.country.id}),e.set_attribute(a,`aria-selected`,e.get(n).id===I.country.id),e.set_attribute(a,`title`,e.get(n).name),e.set_attribute(s,`aria-label`,`${e.get(n).name??``} flag`),e.set_text(f,e.get(n).name),e.set_text(m,e.get(n).code)},[()=>ce(e.get(r))]),e.delegated(`click`,a,()=>G.selectCountry(e.get(n).id)),e.event(`mouseenter`,a,()=>G.setFocusedIndex(e.get(r))),e.append(t,a)},t=>{var n=ie(),r=e.child(n,!0);e.reset(n),e.template_effect(()=>e.set_text(r,h())),e.append(t,n)}),e.reset(c),e.reset(n),e.action(n,e=>Te?.(e)),e.bind_this(n,t=>e.set(N,t),()=>e.get(N)),e.template_effect(()=>{r=e.set_class(n,1,`phone-dropdown ${_()??``} ${Se.themeClass??``}`,null,r,{"is-closing":G.isClosing}),a=e.set_style(n,``,a,{position:`absolute`,top:G.dropdownStyle.top,left:G.dropdownStyle.left,width:G.dropdownStyle.width}),e.set_attribute(s,`placeholder`,m()),e.set_attribute(s,`aria-controls`,e.get(se)),e.set_attribute(s,`aria-activedescendant`,e.get(le)),e.set_value(s,G.search),e.set_attribute(c,`id`,e.get(se))}),e.event(`animationend`,n,function(...e){G.handleDropdownAnimationEnd?.apply(this,e)}),e.delegated(`keydown`,s,function(...e){G.handleSearchKeydown?.apply(this,e)}),e.delegated(`input`,s,function(...e){G.handleSearchChange?.apply(this,e)}),e.append(t,n)};e.if(Ue,e=>{G.dropdownOpen&&e(We)});var Ge=e.sibling(Ue,2);return e.bind_this(Ge,t=>e.set(D,t),()=>e.get(D)),e.template_effect(()=>{Oe=e.set_class(X,1,`pi-selector-btn`,null,Oe,{"no-dropdown":!G.hasDropdown||u()}),X.disabled=l(),e.set_attribute(X,`tabindex`,e.get(z)||!G.hasDropdown?-1:void 0),e.set_attribute(X,`aria-label`,`Selected country: ${I.country.name??``}`),e.set_attribute(X,`aria-expanded`,G.dropdownOpen),e.set_attribute(X,`aria-haspopup`,G.hasDropdown?`listbox`:void 0),e.set_attribute(Z,`aria-label`,`${I.country.name??``} flag`),e.set_text(Me,I.country.code),e.set_attribute($,`id`,i.id),e.set_attribute($,`name`,i.name),e.set_attribute($,`placeholder`,L.displayPlaceholder),e.set_value($,L.displayValue),$.disabled=l(),$.readOnly=u(),e.set_attribute($,`aria-invalid`,e.get(B))}),e.delegated(`click`,X,function(...e){G.toggleDropdown?.apply(this,e)}),e.delegated(`beforeinput`,$,function(...e){q.handleBeforeInput?.apply(this,e)}),e.delegated(`input`,$,function(...e){q.handleInput?.apply(this,e)}),e.delegated(`keydown`,$,function(...e){q.handleKeydown?.apply(this,e)}),e.event(`paste`,$,function(...e){q.handlePaste?.apply(this,e)}),e.event(`focus`,$,ue),e.event(`blur`,$,de),e.append(t,De),e.pop(Ee)}e.delegate([`click`,`beforeinput`,`input`,`keydown`]);function P(t){let n=e.state(null),r=v({country:t.country,locale:t.locale,detect:t.detect,onCountryChange:t.onCountryChange}),i=y({country:()=>r.country,value:t.value,onChange:t.onChange,onPhoneChange:t.onPhoneChange}),{handleBeforeInput:a,handleInput:o,handleKeydown:s,handlePaste:c}=w({formatter:()=>i.formatter,digits:()=>i.digits,onChange:t.onChange});return e.user_effect(()=>{let t=e.get(n);if(t)return t.setAttribute(`type`,`tel`),t.setAttribute(`inputmode`,`tel`),t.addEventListener(`beforeinput`,a),t.addEventListener(`input`,o),t.addEventListener(`keydown`,s),t.addEventListener(`paste`,c),()=>{t.removeEventListener(`beforeinput`,a),t.removeEventListener(`input`,o),t.removeEventListener(`keydown`,s),t.removeEventListener(`paste`,c)}}),e.user_effect(()=>{let t=e.get(n);t&&(t.value=i.displayValue,t.setAttribute(`placeholder`,i.displayPlaceholder))}),{get inputRef(){return e.get(n)},set inputRef(t){e.set(n,t,!0)},get digits(){return i.digits},get formatter(){return i.formatter},get full(){return i.full},get fullFormatted(){return i.fullFormatted},get isComplete(){return i.isComplete},get isEmpty(){return i.isEmpty},get shouldShowWarn(){return i.shouldShowWarn},get country(){return r.country},get locale(){return r.locale},setCountry:r.setCountry,clear:()=>{t.onChange(``)}}}function F(e){return typeof e==`string`?{country:e}:e&&typeof e==`object`?e:{}}function I(t){return n=>{if(n.tagName!==`INPUT`){console.warn(`[phoneMaskAttachment] Attachment can only be used on input elements`);return}let r=F(t),i=e.effect_root(()=>{let t=e.state(e.proxy(n.value||``)),i=P({country:()=>r.country,locale:()=>r.locale,detect:()=>r.detect,value:()=>e.get(t),onChange:n=>{e.set(t,n,!0)},onPhoneChange:r.onChange,onCountryChange:r.onCountryChange});i.inputRef=n,n.__phoneMaskState={get country(){return i.country},get formatter(){return i.formatter},get digits(){return i.digits},get locale(){return i.locale},options:r,setCountry:e=>i.setCountry(e)}});return()=>{i(),delete n.__phoneMaskState}}}function L(e){return typeof e==`string`?{country:e}:e&&typeof e==`object`?e:{}}function R(e,t,n){if(t.digits=n,e.value=t.formatter.formatDisplay(t.digits),t.options.onChange){let n=e.value?`${t.country.code} ${e.value}`:``,r=t.digits?`${t.country.code}${t.digits}`:``;t.options.onChange({full:r,fullFormatted:n,digits:t.digits})}}function z(e,t){let n=t.formatter.getMaxDigits(),r=c(e.value,n),i=t.formatter.formatDisplay(r);(r!==t.digits||e.value!==i)&&R(e,t,r)}function B(e){let t=e.country.id,n=f(e.options.country);n&&n!==t&&e.setCountry(n)}function V(e,t,n){return r=>{let i=n(r,t);i&&(R(e,t,i.newDigits),Promise.resolve().then(()=>{_(e,t.formatter.getCaretPosition(i.caretDigitIndex))}))}}async function H(e){let t=f(e.country);if(t)return t;if(e.detect){let e=f(await o());if(e)return e;let t=f(s());if(t)return t}return`US`}function U(e,t){if(e.tagName!==`INPUT`)return console.warn(`[phoneMaskAction] Action can only be used on input elements`),{update(){},destroy(){}};e.setAttribute(`type`,`tel`),e.setAttribute(`inputmode`,`tel`),e.setAttribute(`placeholder`,``);let n=L(t),r=n.locale||d(),i=u(f(n.country,`US`),r),o={country:i,formatter:a(i),digits:``,locale:r,options:n,setCountry(t){let n=f(t);if(!n)return!1;let r=u(n,this.locale);return this.country=r,this.options.onCountryChange?.(r),this.formatter=a(r),e.placeholder=this.formatter.getPlaceholder(),z(e,this),!0}};e.__phoneMaskState=o;let s=V(e,o,m),c=V(e,o,h),l=V(e,o,g);return e.addEventListener(`beforeinput`,p),e.addEventListener(`input`,s),e.addEventListener(`keydown`,c),e.addEventListener(`paste`,l),H(n).then(t=>{e.__phoneMaskState===o&&o.setCountry(t)}),{update(t){o.options=L(t),B(o),z(e,o)},destroy(){e.removeEventListener(`beforeinput`,p),e.removeEventListener(`input`,s),e.removeEventListener(`keydown`,c),e.removeEventListener(`paste`,l),delete e.__phoneMaskState}}}var W=N;export{W as PhoneInput,U as phoneMaskAction,I as phoneMaskAttachment,P as usePhoneMask};
@@ -1,2 +1,2 @@
1
- .phone-input,.phone-dropdown{--pi-bg:#fff;--pi-fg:#111827;--pi-muted:#6b7280;--pi-border:#e5e7eb;--pi-border-hover:#d1d5db;--pi-border-focus:#3b82f6;--pi-radius:8px;--pi-padding:12px;--pi-font-size:16px;--pi-height:44px;--pi-actions-size:32px;--pi-shadow:0 1px 2px 0 #0000000d;--pi-shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--pi-warning:#f59e0b;--pi-warning-light:#fbbf24;--pi-success:#10b981;--pi-focus-ring:3px solid #3b82f626;--pi-focus-ring-warning:3px solid #f59e0b26;--pi-focus-ring-success:3px solid #10b98126;--pi-disabled-bg:#f9fafb;--pi-disabled-fg:#9ca3af}.phone-input.theme-dark,.phone-dropdown.theme-dark{--pi-bg:#1f2937;--pi-fg:#f9fafb;--pi-muted:#9ca3af;--pi-border:#374151;--pi-border-hover:#4b5563;--pi-border-focus:#60a5fa;--pi-shadow:0 1px 3px 0 #0000004d;--pi-shadow-lg:0 20px 25px -5px #0000004d, 0 10px 10px -5px #0003;--pi-warning:#fbbf24;--pi-warning-light:#fcd34d;--pi-focus-ring:3px solid #60a5fa33;--pi-focus-ring-warning:3px solid #fbbf1833;--pi-focus-ring-success:3px solid #10b98133;--pi-disabled-bg:#374151}.phone-input,.phone-dropdown{font-size:var(--pi-font-size);background:var(--pi-bg);color:var(--pi-fg);border-radius:var(--pi-radius);border:1px solid var(--pi-border)}.phone-input *,.phone-input :before,.phone-input :after,.phone-dropdown *,.phone-dropdown :before,.phone-dropdown :after{box-sizing:border-box}.phone-input button,.phone-input input,.phone-dropdown button,.phone-dropdown input{font:inherit;color:inherit;background:0 0;border:none;margin:0;padding:0}.phone-input button,.phone-dropdown button{cursor:pointer}.phone-input button:disabled,.phone-dropdown button:disabled{cursor:not-allowed}.phone-input input,.phone-dropdown input{outline:none}.phone-input input::placeholder,.phone-dropdown input::placeholder{opacity:.5}.phone-input input:disabled,.phone-dropdown input:disabled{cursor:not-allowed}.phone-input{align-items:stretch;width:100%;display:flex;position:relative}.phone-input:focus-within{outline:var(--pi-focus-ring)}.phone-input.is-incomplete{border-color:var(--pi-warning)}.phone-input.is-incomplete:focus-within{outline:var(--pi-focus-ring-warning)}.phone-input.is-complete{border-color:var(--pi-success)}.phone-input.is-complete:focus-within{outline:var(--pi-focus-ring-success)}.phone-input.is-disabled{background:var(--pi-disabled-bg);color:var(--pi-disabled-fg)}.phone-input.is-readonly{cursor:default}.phone-input.size-compact{--pi-font-size:14px;--pi-height:36px;--pi-padding:10px;--pi-actions-size:24px}.phone-input.size-large{--pi-font-size:18px;--pi-height:52px;--pi-padding:16px;--pi-actions-size:32px}.phone-input.is-unstyled{all:initial;display:block}.phone-input .pi-selector{flex-shrink:0}.phone-input .pi-selector-btn{padding-left:var(--pi-padding);min-height:var(--pi-height);border-radius:var(--pi-radius) 0 0 var(--pi-radius);border:1px solid #0000;align-items:center;gap:6px;padding-right:0;transition:all .15s cubic-bezier(.4,0,.2,1);display:flex}.phone-input .pi-selector-btn.no-dropdown{cursor:default}.phone-input .pi-selector-btn:focus-visible{border-color:var(--pi-border-focus);outline:none}.phone-input .pi-selector-btn:disabled>.pi-flag{opacity:.5}.phone-input .pi-flag{font-size:1.25em;line-height:1;display:inline-flex}.phone-input .pi-code{color:var(--pi-fg)}.phone-input .pi-chevron{color:var(--pi-muted);margin-left:2px;transition:transform .2s}.phone-input .pi-chevron.is-open{transform:rotate(180deg)}.phone-input .pi-input-wrap{flex:1;align-items:center;display:flex;position:relative}.phone-input .pi-input{width:100%;padding-left:var(--pi-padding);padding-right:calc((var(--pi-actions-size) + 2px) * var(--pi-actions-count) + var(--pi-padding));min-height:var(--pi-height);border-radius:0 var(--pi-radius) var(--pi-radius) 0;flex:1;transition:all .15s cubic-bezier(.4,0,.2,1)}.phone-input .pi-input:hover:not(:disabled):not(:read-only){border-color:var(--pi-border-hover)}.phone-input .pi-input:focus{border-color:var(--pi-border-focus);position:relative}.phone-input .pi-actions{align-items:center;gap:2px;display:inline-flex;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.phone-input .pi-btn{width:var(--pi-actions-size);height:var(--pi-actions-size);color:var(--pi-muted);background:0 0;border:none;border-radius:9999px;justify-content:center;align-items:center;transition:all .15s cubic-bezier(.4,0,.2,1);display:flex}.phone-input .pi-btn:hover{background:var(--pi-disabled-bg);color:var(--pi-fg)}.phone-input .pi-btn:active:not(:disabled){transform:scale(.95)}.phone-input .pi-btn:focus{outline:1px solid var(--pi-border-focus);outline-offset:-1px}.phone-input .pi-btn.is-copied{color:var(--pi-success);border-color:var(--pi-success)}.phone-input .pi-btn svg{flex-shrink:0}.phone-dropdown{z-index:9999;max-width:400px;box-shadow:var(--pi-shadow-lg);animation:.2s cubic-bezier(.4,0,.2,1) both dropdown-enter;position:absolute;overflow:hidden}.phone-dropdown .pi-search-wrap{border-bottom:1px solid var(--pi-border);padding:8px}.phone-dropdown .pi-search{border:1px solid var(--pi-border);border-radius:calc(var(--pi-radius) - 2px);background:var(--pi-bg);width:100%;padding:8px 12px;font-size:.875em;transition:border-color .15s}.phone-dropdown .pi-search:focus{border-color:var(--pi-border-focus)}.phone-dropdown .pi-options{max-height:300px;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.phone-dropdown .pi-options::-webkit-scrollbar{width:8px}.phone-dropdown .pi-options::-webkit-scrollbar-track{background:0 0}.phone-dropdown .pi-options::-webkit-scrollbar-thumb{background:var(--pi-border);border-radius:4px}.phone-dropdown .pi-options::-webkit-scrollbar-thumb:hover{background:var(--pi-border-hover)}.phone-dropdown .pi-option{cursor:pointer;align-items:center;gap:8px;padding:8px 12px;transition:background-color .1s;display:flex}.phone-dropdown .pi-option:hover,.phone-dropdown .pi-option.is-focused{background:var(--pi-disabled-bg)}.phone-dropdown .pi-option.is-selected{background:var(--pi-border);font-weight:500}.phone-dropdown .pi-opt-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.phone-dropdown .pi-opt-code{color:var(--pi-muted);font-size:.875em}.phone-dropdown .pi-empty{text-align:center;color:var(--pi-muted);padding:12px;font-size:.875em}@keyframes dropdown-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes dropdown-leave{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.phone-dropdown.is-closing{animation:.2s cubic-bezier(.4,0,.2,1) both dropdown-leave}@keyframes fade-scale-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.pi-actions .pi-btn{animation:.2s cubic-bezier(.4,0,.2,1) both fade-scale-in}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=480px){.phone-input{--pi-padding:8px;--pi-actions-size:24px}.size-compact{--pi-actions-size:20px}.phone-dropdown{max-width:none;left:0;right:0}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
1
+ .phone-input,.phone-dropdown{--pi-bg:#fff;--pi-fg:#111827;--pi-muted:#6b7280;--pi-border:#e5e7eb;--pi-border-hover:#d1d5db;--pi-border-focus:#3b82f6;--pi-radius:8px;--pi-padding:12px;--pi-font-size:16px;--pi-height:44px;--pi-actions-size:32px;--pi-shadow:0 1px 2px 0 #0000000d;--pi-shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--pi-warning:#f59e0b;--pi-warning-light:#fbbf24;--pi-success:#10b981;--pi-focus-ring:3px solid #3b82f626;--pi-focus-ring-warning:3px solid #f59e0b26;--pi-focus-ring-success:3px solid #10b98126;--pi-disabled-bg:#f9fafb;--pi-disabled-fg:#9ca3af}.phone-input.theme-dark,.phone-dropdown.theme-dark{--pi-bg:#1f2937;--pi-fg:#f9fafb;--pi-muted:#9ca3af;--pi-border:#374151;--pi-border-hover:#4b5563;--pi-border-focus:#60a5fa;--pi-shadow:0 1px 3px 0 #0000004d;--pi-shadow-lg:0 20px 25px -5px #0000004d, 0 10px 10px -5px #0003;--pi-warning:#fbbf24;--pi-warning-light:#fcd34d;--pi-focus-ring:3px solid #60a5fa33;--pi-focus-ring-warning:3px solid #fbbf1833;--pi-focus-ring-success:3px solid #10b98133;--pi-disabled-bg:#374151}.phone-input,.phone-dropdown{font-size:var(--pi-font-size);background:var(--pi-bg);color:var(--pi-fg);border-radius:var(--pi-radius);border:1px solid var(--pi-border)}.phone-input *,.phone-input :before,.phone-input :after,.phone-dropdown *,.phone-dropdown :before,.phone-dropdown :after{box-sizing:border-box}.phone-input button,.phone-input input,.phone-dropdown button,.phone-dropdown input{font:inherit;color:inherit;background:0 0;border:none;margin:0;padding:0}.phone-input button,.phone-dropdown button{cursor:pointer}.phone-input button:disabled,.phone-dropdown button:disabled{cursor:not-allowed}.phone-input input,.phone-dropdown input{outline:none}.phone-input input::placeholder,.phone-dropdown input::placeholder{opacity:.5}.phone-input input:disabled,.phone-dropdown input:disabled{cursor:not-allowed}.phone-input{align-items:stretch;width:100%;display:flex;position:relative}.phone-input:focus-within{outline:var(--pi-focus-ring)}.phone-input.is-incomplete{border-color:var(--pi-warning)}.phone-input.is-incomplete:focus-within{outline:var(--pi-focus-ring-warning)}.phone-input.is-complete{border-color:var(--pi-success)}.phone-input.is-complete:focus-within{outline:var(--pi-focus-ring-success)}.phone-input.is-disabled{background:var(--pi-disabled-bg);color:var(--pi-disabled-fg)}.phone-input.is-readonly{cursor:default}.phone-input.size-compact{--pi-font-size:14px;--pi-height:36px;--pi-padding:10px;--pi-actions-size:24px}.phone-input.size-large{--pi-font-size:18px;--pi-height:52px;--pi-padding:16px;--pi-actions-size:32px}.phone-input.is-unstyled{all:initial;display:block}.phone-input .pi-selector{flex-shrink:0}.phone-input .pi-selector-btn{padding-left:var(--pi-padding);min-height:var(--pi-height);border-radius:var(--pi-radius) 0 0 var(--pi-radius);border:1px solid #0000;align-items:center;gap:6px;padding-right:0;transition:all .15s cubic-bezier(.4,0,.2,1);display:flex}.phone-input .pi-selector-btn.no-dropdown{cursor:default}.phone-input .pi-selector-btn:focus-visible{border-color:var(--pi-border-focus);outline:none}.phone-input .pi-selector-btn:disabled>.pi-flag{opacity:.5}.phone-input .pi-flag{font-size:1.25em;line-height:1;display:inline-flex}.phone-input .pi-code{color:var(--pi-fg)}.phone-input .pi-chevron{color:var(--pi-muted);margin-left:2px;transition:transform .2s}.phone-input .pi-chevron.is-open{transform:rotate(180deg)}.phone-input .pi-input-wrap{flex:1;align-items:center;display:flex;position:relative}.phone-input .pi-input{width:100%;padding-left:var(--pi-padding);padding-right:calc((var(--pi-actions-size) + 2px) * var(--pi-actions-count) + var(--pi-padding));min-height:var(--pi-height);border-radius:0 var(--pi-radius) var(--pi-radius) 0;flex:1;transition:all .15s cubic-bezier(.4,0,.2,1)}.phone-input .pi-input:hover:not(:disabled):not(:read-only){border-color:var(--pi-border-hover)}.phone-input .pi-input:focus{border-color:var(--pi-border-focus);position:relative}.phone-input .pi-input:-webkit-autofill{-webkit-text-fill-color:var(--pi-fg);caret-color:var(--pi-fg);-webkit-box-shadow:0 0 0 1000px var(--pi-bg) inset;box-shadow:0 0 0 1000px var(--pi-bg) inset;transition:background-color 9999s ease-out,color 9999s ease-out}.phone-input .pi-input:-webkit-autofill:hover{-webkit-text-fill-color:var(--pi-fg);caret-color:var(--pi-fg);-webkit-box-shadow:0 0 0 1000px var(--pi-bg) inset;box-shadow:0 0 0 1000px var(--pi-bg) inset;transition:background-color 9999s ease-out,color 9999s ease-out}.phone-input .pi-input:-webkit-autofill:focus{-webkit-text-fill-color:var(--pi-fg);caret-color:var(--pi-fg);-webkit-box-shadow:0 0 0 1000px var(--pi-bg) inset;box-shadow:0 0 0 1000px var(--pi-bg) inset;transition:background-color 9999s ease-out,color 9999s ease-out}.phone-input .pi-input:-webkit-autofill:active{-webkit-text-fill-color:var(--pi-fg);caret-color:var(--pi-fg);-webkit-box-shadow:0 0 0 1000px var(--pi-bg) inset;box-shadow:0 0 0 1000px var(--pi-bg) inset;transition:background-color 9999s ease-out,color 9999s ease-out}.phone-input .pi-input:-moz-autofill{-moz-text-fill-color:var(--pi-fg);box-shadow:0 0 0 1000px var(--pi-bg) inset}.phone-input .pi-actions{align-items:center;gap:2px;display:inline-flex;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.phone-input .pi-btn{width:var(--pi-actions-size);height:var(--pi-actions-size);color:var(--pi-muted);background:0 0;border:none;border-radius:9999px;justify-content:center;align-items:center;transition:all .15s cubic-bezier(.4,0,.2,1);display:flex}.phone-input .pi-btn:hover{background:var(--pi-disabled-bg);color:var(--pi-fg)}.phone-input .pi-btn:active:not(:disabled){transform:scale(.95)}.phone-input .pi-btn:focus{outline:1px solid var(--pi-border-focus);outline-offset:-1px}.phone-input .pi-btn.is-copied{color:var(--pi-success);border-color:var(--pi-success)}.phone-input .pi-btn svg{flex-shrink:0}.phone-dropdown{z-index:9999;max-width:400px;box-shadow:var(--pi-shadow-lg);animation:.2s cubic-bezier(.4,0,.2,1) both dropdown-enter;position:absolute;overflow:hidden}.phone-dropdown .pi-search-wrap{border-bottom:1px solid var(--pi-border);padding:8px}.phone-dropdown .pi-search{border:1px solid var(--pi-border);border-radius:calc(var(--pi-radius) - 2px);background:var(--pi-bg);width:100%;padding:8px 12px;font-size:.875em;transition:border-color .15s}.phone-dropdown .pi-search:focus{border-color:var(--pi-border-focus)}.phone-dropdown .pi-options{max-height:300px;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.phone-dropdown .pi-options::-webkit-scrollbar{width:8px}.phone-dropdown .pi-options::-webkit-scrollbar-track{background:0 0}.phone-dropdown .pi-options::-webkit-scrollbar-thumb{background:var(--pi-border);border-radius:4px}.phone-dropdown .pi-options::-webkit-scrollbar-thumb:hover{background:var(--pi-border-hover)}.phone-dropdown .pi-option{cursor:pointer;align-items:center;gap:8px;padding:8px 12px;transition:background-color .1s;display:flex}.phone-dropdown .pi-option:hover,.phone-dropdown .pi-option.is-focused{background:var(--pi-disabled-bg)}.phone-dropdown .pi-option.is-selected{background:var(--pi-border);font-weight:500}.phone-dropdown .pi-opt-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.phone-dropdown .pi-opt-code{color:var(--pi-muted);font-size:.875em}.phone-dropdown .pi-empty{text-align:center;color:var(--pi-muted);padding:12px;font-size:.875em}@keyframes dropdown-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes dropdown-leave{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.phone-dropdown.is-closing{animation:.2s cubic-bezier(.4,0,.2,1) both dropdown-leave}@keyframes fade-scale-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.pi-actions .pi-btn{animation:.2s cubic-bezier(.4,0,.2,1) both fade-scale-in}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=480px){.phone-input{--pi-padding:8px;--pi-actions-size:24px}.size-compact{--pi-actions-size:20px}.phone-dropdown{max-width:none;left:0;right:0}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
2
2
  /*$vite$:1*/
@@ -0,0 +1,2 @@
1
+ export * from '@desource/phone-mask';
2
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -1,4 +1,3 @@
1
- import { countPlaceholders, formatDigitsWithMap, pickMaskVariant, removeCountryCodePrefix, toArray } from '@desource/phone-mask';
2
1
  import type { Component } from 'svelte';
3
2
  import './style.scss';
4
3
  export { usePhoneMask } from './composables/usePhoneMask.svelte';
@@ -9,12 +8,4 @@ export type { UsePhoneMaskOptions, UsePhoneMaskReturn, PhoneInputProps, PhoneInp
9
8
  export declare const PhoneInput: Component<PhoneInputProps, PhoneInputExposed>;
10
9
  export type { PhoneNumber as PMaskPhoneNumber, Size as PhoneInputSize, Theme as PhoneInputTheme } from './types';
11
10
  export type { CountryKey as PCountryKey, MaskBase as PMaskBase, MaskBaseMap as PMaskBaseMap, Mask as PMask, MaskMap as PMaskMap, MaskWithFlag as PMaskWithFlag, MaskWithFlagMap as PMaskWithFlagMap, MaskFull as PMaskFull, MaskFullMap as PMaskFullMap } from '@desource/phone-mask';
12
- export declare const PMaskHelpers: {
13
- getFlagEmoji: (cc: string) => string;
14
- countPlaceholders: typeof countPlaceholders;
15
- formatDigitsWithMap: typeof formatDigitsWithMap;
16
- pickMaskVariant: typeof pickMaskVariant;
17
- removeCountryCodePrefix: typeof removeCountryCodePrefix;
18
- toArray: typeof toArray;
19
- };
20
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,cAAc,CAAC;AAItB,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClE,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,UAAU,EAAqC,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAE1G,YAAY,EAAE,WAAW,IAAI,gBAAgB,EAAE,IAAI,IAAI,cAAc,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,SAAS,CAAC;AAEjH,YAAY,EACV,UAAU,IAAI,WAAW,EACzB,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC3B,IAAI,IAAI,KAAK,EACb,OAAO,IAAI,QAAQ,EACnB,YAAY,IAAI,aAAa,EAC7B,eAAe,IAAI,gBAAgB,EACnC,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC5B,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,YAAY;;;;;;;CAOxB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,cAAc,CAAC;AAItB,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClE,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,UAAU,EAAqC,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAE1G,YAAY,EAAE,WAAW,IAAI,gBAAgB,EAAE,IAAI,IAAI,cAAc,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,SAAS,CAAC;AAEjH,YAAY,EACV,UAAU,IAAI,WAAW,EACzB,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC3B,IAAI,IAAI,KAAK,EACb,OAAO,IAAI,QAAQ,EACnB,YAAY,IAAI,aAAa,EAC7B,eAAe,IAAI,gBAAgB,EACnC,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC5B,MAAM,sBAAsB,CAAC"}
@@ -16,6 +16,10 @@ export type PhoneNumber = {
16
16
  export interface PhoneInputProps {
17
17
  /** Controlled/bindable value (digits only, without country code) */
18
18
  value?: string;
19
+ /** Optional id attribute applied to the underlying phone input element */
20
+ id?: string;
21
+ /** Optional name attribute applied to the underlying phone input element */
22
+ name?: string;
19
23
  /** Whether to preselect a country by ISO 3166-1 alpha-2 code */
20
24
  country?: CountryKey;
21
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@desource/phone-mask-svelte",
3
- "version": "1.1.2",
3
+ "version": "1.3.0",
4
4
  "description": "🌍 Svelte 5 component, composable, action, and attachment for international phone number masking. Powered by @desource/phone-mask with Google libphonenumber sync.",
5
5
  "keywords": [
6
6
  "svelte",
@@ -44,6 +44,11 @@
44
44
  "import": "./dist/index.mjs",
45
45
  "require": "./dist/index.cjs"
46
46
  },
47
+ "./core": {
48
+ "types": "./dist/types/core.d.ts",
49
+ "import": "./dist/core.mjs",
50
+ "require": "./dist/core.cjs"
51
+ },
47
52
  "./assets/lib.css": "./dist/phone-mask-svelte.css"
48
53
  },
49
54
  "files": [
@@ -55,12 +60,12 @@
55
60
  "svelte": "^5.0.0"
56
61
  },
57
62
  "dependencies": {
58
- "@desource/phone-mask": "1.1.2"
63
+ "@desource/phone-mask": "1.3.0"
59
64
  },
60
65
  "devDependencies": {
61
66
  "@sveltejs/vite-plugin-svelte": "^7.0.0",
62
67
  "@testing-library/svelte": "^5.3.1",
63
- "svelte": "^5.54.1",
68
+ "svelte": "^5.55.0",
64
69
  "svelte-check": "^4.4.5"
65
70
  },
66
71
  "scripts": {