@kashi-ui/elements 0.25.0 → 1.0.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.
Files changed (70) hide show
  1. package/README.md +11 -1
  2. package/dist/appointment.d.ts +40 -0
  3. package/dist/appointment.js +175 -0
  4. package/dist/base.d.ts +408 -0
  5. package/dist/base.js +31 -0
  6. package/dist/basic.d.ts +43 -0
  7. package/dist/basic.js +222 -0
  8. package/dist/calendar.js +21 -20
  9. package/dist/cdn/appointment-CrIZi8Bp.js +1 -0
  10. package/dist/cdn/base-DTQ50VdG.js +1 -0
  11. package/dist/cdn/basic-CrEW2RKF.js +1 -0
  12. package/dist/cdn/calendar-CYRrdGIf.js +16 -0
  13. package/dist/cdn/charts-D6KM26Vp.js +1 -0
  14. package/dist/cdn/combobox-6EFI2qqN.js +1 -0
  15. package/dist/cdn/controls-BwebEIlf.js +1 -0
  16. package/dist/cdn/display-DFuMkcj5.js +1 -0
  17. package/dist/cdn/fields-DhLIhHQ8.js +1 -0
  18. package/dist/cdn/forms-BHivKDdC.js +1 -0
  19. package/dist/cdn/holidays-DgbIAdlt.js +1 -0
  20. package/dist/cdn/inputs-R7nEHfbV.js +1 -0
  21. package/dist/cdn/kashi-elements.js +1 -1
  22. package/dist/cdn/map-H3xiZd8Y.js +12 -0
  23. package/dist/cdn/{menu-DhrqyLgy.js → menu-BAUSubXk.js} +1 -1
  24. package/dist/cdn/nav-NK-v48B5.js +1 -0
  25. package/dist/cdn/overlay-CBv8grz3.js +1 -0
  26. package/dist/cdn/pickers-BHzNt_X8.js +1 -0
  27. package/dist/cdn/table-Bt9WVLoo.js +1 -0
  28. package/dist/cdn/text-D4a_hlwL.js +1 -0
  29. package/dist/cdn/time-DJ3p1wvd.js +1 -0
  30. package/dist/cdn/words-BdADG_9U.js +1 -0
  31. package/dist/cdn.d.ts +1 -0
  32. package/dist/cdn.js +4 -0
  33. package/dist/charts.js +27 -24
  34. package/dist/combobox.d.ts +6 -5
  35. package/dist/combobox.js +29 -20
  36. package/dist/controls.js +15 -15
  37. package/dist/display.js +17 -14
  38. package/dist/fields.js +3 -3
  39. package/dist/forms.d.ts +3 -3
  40. package/dist/forms.js +54 -47
  41. package/dist/index.d.ts +12 -2
  42. package/dist/index.js +7 -1
  43. package/dist/inputs.d.ts +3 -3
  44. package/dist/inputs.js +31 -30
  45. package/dist/map.js +16 -13
  46. package/dist/nav.js +18 -16
  47. package/dist/overlay.js +5 -5
  48. package/dist/pickers.d.ts +1 -1
  49. package/dist/pickers.js +39 -38
  50. package/dist/table.js +7 -7
  51. package/dist/toast.js +3 -3
  52. package/package.json +4 -4
  53. package/dist/cdn/base-Cmq7zeIG.js +0 -1
  54. package/dist/cdn/calendar-Dm3fq2bs.js +0 -16
  55. package/dist/cdn/charts-DNOWi4sJ.js +0 -1
  56. package/dist/cdn/combobox-ZGrZ5okg.js +0 -1
  57. package/dist/cdn/controls-K-OZcjg4.js +0 -1
  58. package/dist/cdn/digits-DE1YGT94.js +0 -1
  59. package/dist/cdn/display-C975tS7j.js +0 -1
  60. package/dist/cdn/fields-BUTaSN8m.js +0 -1
  61. package/dist/cdn/forms-C-effPKn.js +0 -1
  62. package/dist/cdn/inputs-BjOddAM7.js +0 -1
  63. package/dist/cdn/jalali-BiM5Kfep.js +0 -1
  64. package/dist/cdn/map-BHuusa4t.js +0 -12
  65. package/dist/cdn/nav-D_w5BV_K.js +0 -1
  66. package/dist/cdn/overlay-DX9un2xm.js +0 -1
  67. package/dist/cdn/pickers-BFLpUruK.js +0 -1
  68. package/dist/cdn/table-DPQfDMs-.js +0 -1
  69. package/dist/cdn/text-D1U32D6K.js +0 -1
  70. package/dist/cdn/words-9OdzG7y6.js +0 -1
@@ -1 +0,0 @@
1
- import{a as e,c as t,d as n,i as r,l as i,o as a,s as o,t as s}from"./base-Cmq7zeIG.js";import{i as c,n as l,r as u,t as d}from"./digits-DE1YGT94.js";import{n as f}from"./text-D1U32D6K.js";function p(e,t,n){if(e.querySelectorAll(`:scope > input[type=hidden][data-kashi-value]`).forEach(e=>e.remove()),t)for(let r of n){let n=document.createElement(`input`);n.type=`hidden`,n.name=t,n.value=r,n.dataset.kashiValue=``,e.append(n)}}var m=class extends s{constructor(){super(...arguments),this.tags=[],this.localError=null,this.rendered=!1,this.valueSet=!1,this.key=n(`kashi-tags`)}connectedCallback(){!this.rendered&&!this.valueSet&&(this.tags=this.parse(this.getAttribute(`value`))),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?this.value=this.parse(n):this.render())}parse(e){return(e??``).split(/[,،]/).map(e=>e.trim()).filter(Boolean)}get value(){return[...this.tags]}set value(e){this.valueSet=!0,this.tags=Array.isArray(e)?[...e]:this.parse(e),this.rendered&&this.paint()}focus(e){this.input?.focus(e)}render(){let e=this.key,n=this.getAttribute(`aria-label`),r=this.hasAttribute(`label`)?this.getAttribute(`label`):n?null:`برچسب‌ها`,i=`<div class="k-tag-input"><input id="${e}" class="k-tag-input__control"${this.hasAttribute(`disabled`)?` disabled`:``}${!r&&n?` aria-label="${o(n)}"`:``}></div><span class="k-sr-only" aria-live="polite"></span>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:e,label:r,control:i})),this.input=this.querySelector(`.k-tag-input__control`),this.querySelector(`.k-tag-input`).addEventListener(`click`,e=>{let t=e.target.closest(`.k-badge__remove`);t?this.removeAt(Number(t.dataset.i)):this.input.focus()}),this.input.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===`,`||e.key===`،`)&&this.input.value.trim()?(e.preventDefault(),this.add([this.input.value])):e.key===`Backspace`&&!this.input.value&&this.tags.length&&this.removeAt(this.tags.length-1)}),this.input.addEventListener(`input`,()=>{this.localError=null;let e=this.input.value.split(/[,،\n\t]/);if(e.length>1){let t=e.pop()??``;this.add(e),t&&!this.localError&&(this.input.value=t)}else this.paintMessages()}),this.input.addEventListener(`blur`,()=>this.input.value.trim()&&this.add([this.input.value])),this.rendered=!0,this.paint()}add(e){let t=Number(this.getAttribute(`max`))||1/0,n=r(this,`allow-duplicates`),i=[...this.tags],a=``;for(let r of e){let e=f(r).trim();if(!e)continue;let o=i.length>=t?`حداکثر ${c(t)} مورد`:!n&&i.includes(e)?`این مورد قبلاً اضافه شده است.`:this.validate?.(e);if(o){this.localError=o,this.commit(i,a),this.input.value=e;return}i=[...i,e],a=`${e} اضافه شد`}this.localError=null,this.input.value=``,this.commit(i,a)}removeAt(e){let t=this.tags[e];this.commit(this.tags.filter((t,n)=>n!==e),`${t} حذف شد`),this.input.focus()}commit(e,t){let n=e.join(`\0`)!==this.tags.join(`\0`);this.tags=e,this.paint(),t&&(this.querySelector(`.k-field > .k-sr-only`).textContent=t),n&&a(this,`kashi-change`,{value:[...e]})}paint(){this.querySelector(`.k-tag-input`).querySelectorAll(`.k-badge`).forEach(e=>e.remove());let e=this.getAttribute(`tone`)??`brand`,t=this.hasAttribute(`disabled`),n=this.tags.map((n,r)=>`<span class="k-badge${e===`neutral`?``:` k-badge--${o(e)}`}${t?``:` k-badge--removable`}">${o(n)}${t?``:`<button type="button" class="k-badge__remove" data-i="${r}" aria-label="حذف ${o(n)}"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="m6 6 8 8M14 6l-8 8"/></svg></button>`}</span>`).join(``);this.input.insertAdjacentHTML(`beforebegin`,n),this.input.placeholder=this.tags.length?``:this.getAttribute(`placeholder`)??``,this.paintMessages(),p(this,this.getAttribute(`name`),this.tags)}paintMessages(){let e=this.getAttribute(`error`)||this.localError;this.querySelector(`.k-tag-input`).toggleAttribute(`data-invalid`,!!e),i(this.querySelector(`:scope > .k-field`),this.input,this.key,e,this.getAttribute(`hint`))}};m.observedAttributes=[`label`,`hint`,`error`,`placeholder`,`disabled`,`name`,`value`,`max`,`tone`,`allow-duplicates`,`aria-label`];var h=class extends s{constructor(){super(...arguments),this.current=null,this.rendered=!1,this.valueSet=!1,this.key=n(`kashi-num`)}connectedCallback(){!this.rendered&&!this.valueSet&&(this.current=this.num(this.getAttribute(`value`))??null),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?this.value=n===null||n===``?null:Number(n):this.render())}get value(){return this.current}set value(e){this.valueSet=!0,this.current=e==null||Number.isNaN(Number(e))?null:Number(e),this.rendered&&this.paint()}focus(e){this.input?.focus(e)}num(e){return e===null||e===``||Number.isNaN(Number(e))?void 0:Number(e)}get min(){return this.num(this.getAttribute(`min`))}get max(){return this.num(this.getAttribute(`max`))}clamp(e){return Math.min(this.max??1/0,Math.max(this.min??-1/0,e))}show(e){if(e===null)return``;let t=this.hasAttribute(`thousands`)?d(e,{digits:`latin`}):String(e);return this.getAttribute(`digits`)===`latin`?t:c(t).replace(/,/g,`٬`)}render(){let e=this.key,n=this.getAttribute(`aria-label`),r=this.hasAttribute(`label`)?this.getAttribute(`label`):n?null:`تعداد`,i=this.hasAttribute(`disabled`),a=this.getAttribute(`unit`),s=`<div class="k-number"><div class="k-input"${i?` data-state="disabled"`:``}><button type="button" class="k-number__step" data-step="-1" tabindex="-1" aria-label="کاهش"${i?` disabled`:``}><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><path d="M5 10h10"/></svg></button><input id="${e}" class="k-input__control" type="text" inputmode="decimal" role="spinbutton" dir="ltr"${i?` disabled`:``}${!r&&n?` aria-label="${o(n)}"`:``}>${a?`<span class="k-input__addon">${o(a)}</span>`:``}<button type="button" class="k-number__step" data-step="1" tabindex="-1" aria-label="افزایش"${i?` disabled`:``}><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><path d="M10 5v10M5 10h10"/></svg></button></div></div>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:e,label:r,control:s})),this.input=this.querySelector(`input.k-input__control`),this.querySelectorAll(`.k-number__step`).forEach(e=>e.addEventListener(`click`,()=>this.bump(Number(e.dataset.step)))),this.input.addEventListener(`input`,()=>{let e=this.input.value,t=l(e);this.set(t?(/^\s*[-−]/.test(e)?-1:1)*Number(t):null,!1)}),this.input.addEventListener(`blur`,()=>{this.current!==null&&this.current!==this.clamp(this.current)?this.set(this.clamp(this.current)):this.paint()}),this.input.addEventListener(`keydown`,e=>{let t={ArrowUp:()=>this.bump(1),ArrowDown:()=>this.bump(-1),PageUp:()=>this.bump(10),PageDown:()=>this.bump(-10),Home:()=>this.min!==void 0&&this.set(this.min),End:()=>this.max!==void 0&&this.set(this.max)};t[e.key]&&(e.preventDefault(),t[e.key]())}),this.rendered=!0,this.paint()}bump(e){let t=this.num(this.getAttribute(`step`))??1;this.set(this.clamp((this.current??this.min??0)+e*t))}set(e,t=!0){let n=e!==this.current;this.current=e,t?this.paint():this.paintState(),n&&a(this,`kashi-change`,{value:e})}paint(){let e=this.show(this.current);this.input.value!==e&&(this.input.value=e),this.paintState()}paintState(){let e=this.input,t=this.current;for(let[n,r]of[[`aria-valuenow`,t],[`aria-valuemin`,this.min],[`aria-valuemax`,this.max]])r==null?e.removeAttribute(n):e.setAttribute(n,String(r));t===null?e.removeAttribute(`aria-valuetext`):e.setAttribute(`aria-valuetext`,this.show(t));let n=this.hasAttribute(`disabled`),[r,a]=this.querySelectorAll(`.k-number__step`);r.disabled=n||this.min!==void 0&&(t??0)<=this.min,a.disabled=n||this.max!==void 0&&(t??0)>=this.max,i(this.querySelector(`:scope > .k-field`),e,this.key,this.getAttribute(`error`),this.getAttribute(`hint`)),p(this,this.getAttribute(`name`),[t===null?``:String(t)])}};h.observedAttributes=[`label`,`hint`,`error`,`value`,`min`,`max`,`step`,`thousands`,`digits`,`unit`,`disabled`,`name`,`aria-label`];const g=`<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="currentColor" d="M12 2.8l2.8 5.9 6.4.8-4.7 4.4 1.2 6.3L12 17.1l-5.7 3.1 1.2-6.3L2.8 9.5l6.4-.8z"/><path class="k-rating__half" fill="none" d="M12 2.8v14.3l-5.7 3.1 1.2-6.3L2.8 9.5l6.4-.8z"/></svg>`,_=e=>c(String(e)).replace(`.`,`٫`);var v=class extends s{constructor(){super(...arguments),this.current=0,this.valueSet=!1,this.key=n(`kashi-rate`)}connectedCallback(){this.valueSet||(this.current=Number(this.getAttribute(`value`))||0),this.render()}attributeChangedCallback(e,t,n){t!==n&&this.isConnected&&(e===`value`&&(this.current=Number(n)||0),this.render())}get value(){return this.current}set value(e){this.valueSet=!0,this.current=Number(e)||0,this.isConnected&&this.render()}render(){let e=Number(this.getAttribute(`max`))||5,t=this.getAttribute(`label`)??`امتیاز`,n=this.getAttribute(`size`),r=`k-rating${n===`sm`||n===`lg`?` k-rating--${n}`:``}`,i=this.current,s=Array.from({length:e},(e,t)=>t+1),c=this.hasAttribute(`show-value`)?`<span class="k-rating__value" aria-hidden="true">${_(i)}</span>`:``;if(this.hasAttribute(`readonly`)){this.innerHTML=`<span class="${r}" data-readonly="" role="img" aria-label="${o(`${t}: ${_(i)} از ${_(e)}`)}">${s.map(e=>`<span class="k-rating__star"${e<=Math.floor(i)?` data-filled=""`:``}${e===Math.ceil(i)&&i%1>=.25?` data-half=""`:``}>${g}</span>`).join(``)}${c}</span>`;return}let l=this.getAttribute(`name`)??this.key,u=this.hasAttribute(`disabled`);this.innerHTML=`<fieldset class="${r}"><legend class="k-sr-only">${o(t)}</legend>${s.map(t=>`<label class="k-rating__star"${t<=i?` data-filled=""`:``}><input type="radio" class="k-sr-only" name="${o(l)}" value="${t}"${i===t?` checked`:``}${u?` disabled`:``} aria-label="${_(t)} از ${_(e)}">${g}</label>`).join(``)}${c}</fieldset>`;let d=this.querySelector(`fieldset`),f=e=>d.querySelectorAll(`.k-rating__star`).forEach((t,n)=>t.toggleAttribute(`data-filled`,n+1<=e));d.addEventListener(`change`,e=>{this.current=Number(e.target.value),f(this.current),a(this,`kashi-change`,{value:this.current})}),d.addEventListener(`pointerover`,e=>{let t=e.target.closest(`.k-rating__star`);t&&!u&&f([...d.querySelectorAll(`.k-rating__star`)].indexOf(t)+1)}),d.addEventListener(`pointerleave`,()=>f(this.current))}};v.observedAttributes=[`value`,`max`,`readonly`,`show-value`,`size`,`label`,`name`,`disabled`];function y(e,t,n=1){let r=[1],i=Math.max(2,e-n),a=Math.min(t-1,e+n);i>2&&r.push(i===3?2:null);for(let e=i;e<=a;e++)r.push(e);return a<t-1&&r.push(a===t-2?t-1:null),t>1&&r.push(t),r}const b=e=>`<svg data-k-mirror="" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="${e}"/></svg>`;var x=class extends s{connectedCallback(){this.render()}attributeChangedCallback(e,t,n){t!==n&&this.isConnected&&this.render()}get page(){return Math.max(1,Number(this.getAttribute(`page`))||1)}set page(e){this.setAttribute(`page`,String(e))}get total(){return Math.max(1,Number(this.getAttribute(`total`))||1)}render(){let e=Math.min(this.page,this.total),t=this.total,n=e=>this.getAttribute(`digits`)===`latin`?String(e):c(e),r=this.getAttribute(`href`),i=this.contains(document.activeElement)?document.activeElement.dataset.to:null,s=(e,t,n,{current:i=!1,disabled:a=!1,aria:s=``}={})=>r&&!a?`<a class="${n}" href="${o(r.replace(`{page}`,String(e)))}" data-to="${e}"${i?` aria-current="page"`:``}${s?` aria-label="${o(s)}"`:``}>${t}</a>`:`<button type="button" class="${n}" data-to="${e}"${a?` disabled`:``}${i?` aria-current="page"`:``}${s?` aria-label="${o(s)}"`:``}>${t}</button>`,l=this.getAttribute(`summary`);this.innerHTML=`<nav class="k-pagination" aria-label="${o(this.getAttribute(`label`)??`صفحه‌بندی`)}">${s(e-1,`${b(`m12 5-5 5 5 5`)}قبلی`,`k-btn k-btn--secondary k-btn--sm`,{disabled:e<=1})}${l?`<span class="k-pagination__summary">${o(l)}</span>`:``}<ul class="k-pagination__pages" role="list">${y(e,t,Number(this.getAttribute(`siblings`)??1)).map(t=>`<li>${t===null?`<span class="k-pagination__ellipsis" aria-hidden="true">…</span>`:s(t,n(t),`k-pagination__page`,{current:t===e,aria:`صفحهٔ ${n(t)}`})}</li>`).join(``)}</ul>${s(e+1,`بعدی${b(`m8 5 5 5-5 5`)}`,`k-btn k-btn--secondary k-btn--sm`,{disabled:e>=t})}</nav>`,this.querySelector(`nav`).addEventListener(`click`,e=>{let t=e.target.closest(`button[data-to]`);if(!t||t.disabled)return;let n=Number(t.dataset.to);this.setAttribute(`page`,String(n)),a(this,`kashi-change`,{page:n}),this.querySelector(`.k-pagination__page[data-to="${n}"]`)?.focus()}),i&&this.querySelector(`[data-to="${i}"]`)?.focus()}};x.observedAttributes=[`page`,`total`,`siblings`,`href`,`digits`,`label`,`summary`];const S=e=>{let t=u(e).replace(/[٬,\s]/g,``).replace(`٫`,`.`).replace(`−`,`-`).match(/-?\d+(\.\d+)?/);return t?Number(t[0]):NaN};e(`kashi-tag-input`,m,`block`),e(`kashi-number-input`,h,`block`),e(`kashi-rating`,v),e(`kashi-pagination`,x,`block`);export{h as KashiNumberInput,x as KashiPagination,v as KashiRating,m as KashiTagInput,S as cellNumber,y as pageRange};
@@ -1 +0,0 @@
1
- const e=`۰۱۲۳۴۵۶۷۸۹`;function t(t){return String(t).replace(/\d/g,t=>e[Number(t)])}function n(t){return t.replace(/[۰-۹٠-٩]/g,t=>{let n=e.indexOf(t);return String(n>=0?n:`٠١٢٣٤٥٦٧٨٩`.indexOf(t))})}function r(e){return n(e).replace(/\D/g,``)}function i(e,{digits:n=`fa`}={}){let i=typeof e==`number`?e:Number(r(e));if(!Number.isFinite(i))return``;let a=new Intl.NumberFormat(`en-US`).format(i);return n===`fa`?t(a).replace(/,/g,`٬`):a}export{t as i,r as n,n as r,i as t};
@@ -1 +0,0 @@
1
- import{a as e,o as t,s as n,t as r}from"./base-Cmq7zeIG.js";import{i,t as a}from"./digits-DE1YGT94.js";import{a as o,i as s}from"./jalali-BiM5Kfep.js";import{t as c}from"./words-9OdzG7y6.js";const l=6e4,u=60*l,d=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();function f(e,{now:t=/* @__PURE__ */ new Date,digits:n=`fa`}={}){let r=e.getTime()-t.getTime(),a=r<0,o=Math.abs(r),s=e=>n===`fa`?i(e):String(e),c=(e,t)=>`${s(e)} ${t} ${a?`پیش`:`دیگر`}`;if(o<45e3)return`همین الان`;if(o<u)return c(Math.max(1,Math.round(o/l)),`دقیقه`);let f=Math.round((d(e)-d(t))/864e5);if(o<6*u||f===0)return c(Math.round(o/u),`ساعت`);if(f===-1)return`دیروز`;if(f===1)return`فردا`;let p=Math.abs(f);return p<7?c(p,`روز`):p<30?c(Math.round(p/7),`هفته`):p<365?c(Math.max(1,Math.round(p/30.44)),`ماه`):c(Math.round(p/365.25),`سال`)}const p=[[0xe8d4a51000,`همت`],[1e9,`میلیارد`],[1e6,`میلیون`],[1e3,`هزار`]],m=e=>Math.round(e/10),h=e=>e*10;function g(e,{unit:t=`toman`,from:n=`toman`,compact:r=!1,showUnit:o=!0,digits:s=`fa`}={}){let c=n===t?e:n===`rial`?m(e):h(e),l=c<0?`−`:``;c=Math.abs(c);let u=a(Math.round(c),{digits:s}),d=t===`toman`?`تومان`:`ریال`;if(r){let e=p.find(([e,n])=>c>=e&&(n!==`همت`||t===`toman`));if(e){let t=Math.round(c/e[0]*100)/100,n=String(t).replace(`.`,s===`fa`?`٫`:`.`);u=`${s===`fa`?i(n):n} ${e[1]}`,e[1]===`همت`&&(d=``)}}return`${l}${u}${o&&d?` ${d}`:``}`}const _=e=>{if(!e)return null;let t=o(e.trim())??new Date(e);return Number.isNaN(t.getTime())?null:t};var v=class extends r{connectedCallback(){this.render()}attributeChangedCallback(){this.isConnected&&this.render()}},y=class extends v{render(){let e=Number(this.getAttribute(`value`)??0),t=this.getAttribute(`unit`)===`rial`?`rial`:`toman`,r=this.getAttribute(`from`)===`rial`?`rial`:this.getAttribute(`from`)===`toman`?`toman`:t,i=this.hasAttribute(`compact`),a=this.getAttribute(`digits`)===`latin`?`latin`:`fa`,o=this.hasAttribute(`signed`),s=this.getAttribute(`size`)??`md`,l=r===t?e:r===`rial`?m(e):h(e),u=g(l,{unit:t,compact:i,digits:a,showUnit:!1}),d=g(l,{unit:t,compact:i}).endsWith(`همت`)?null:t===`toman`?`تومان`:`ریال`,f=this.getAttribute(`words`)!==`false`&&Number.isSafeInteger(Math.round(l))?`${c(Math.round(l))} ${t===`toman`?`تومان`:`ریال`}`:null,p=o?l>0?`positive`:l<0?`negative`:null:null,_=f?` aria-hidden="true"`:``;this.innerHTML=`<data value="${l}" class="k-money k-money--${n(s)}"${p?` data-tone="${p}"`:``}${f?` title="${n(f)}"`:``}><span class="k-money__amount"${_}>${o&&l>0?`+`:``}${n(u)}</span>${d?`<span class="k-money__unit"${_}>${d}</span>`:``}${f?`<span class="k-sr-only">${l<0?``:o&&l>0?`مثبت `:``}${n(f)}</span>`:``}</data>`}};y.observedAttributes=[`value`,`unit`,`from`,`compact`,`digits`,`signed`,`words`,`size`];var b=class extends v{render(){let e=_(this.getAttribute(`datetime`));if(!e){this.textContent=``;return}let t=this.getAttribute(`format`),r=t===`numeric`||t===`full`?t:`long`,i=this.getAttribute(`digits`)===`latin`?`latin`:`fa`;this.innerHTML=`<time datetime="${n(this.getAttribute(`datetime`))}">${n(s(e,{style:r,digits:i}))}</time>`}};b.observedAttributes=[`datetime`,`format`,`digits`];var x=class extends v{connectedCallback(){super.connectedCallback(),clearInterval(this.timer),this.timer=setInterval(()=>this.render(),Number(this.getAttribute(`refresh`))||6e4)}disconnectedCallback(){clearInterval(this.timer)}render(){let e=_(this.getAttribute(`datetime`));if(!e){this.textContent=``;return}let t=this.getAttribute(`digits`)===`latin`?`latin`:`fa`;this.innerHTML=`<time datetime="${e.toISOString()}" title="${n(s(e,{style:`full`,digits:t}))}">${n(f(e,{digits:t}))}</time>`}};x.observedAttributes=[`datetime`,`digits`,`refresh`];const S=e=>String(e).padStart(2,`0`);var C=class extends r{constructor(){super(...arguments),this.end=0,this.done=!1}connectedCallback(){this.restart()}disconnectedCallback(){clearInterval(this.timer)}attributeChangedCallback(e,t,n){this.isConnected&&t!==n&&(e===`to`||e===`seconds`?this.restart():this.render())}restart(){let e=_(this.getAttribute(`to`));this.end=e?e.getTime():Date.now()+(Number(this.getAttribute(`seconds`))||0)*1e3,this.done=!1,clearInterval(this.timer),this.render(),this.timer=setInterval(()=>this.render(),1e3)}get remaining(){return Math.max(0,Math.ceil((this.end-Date.now())/1e3))}render(){let e=this.remaining,r=Math.floor(e/86400),a=Math.floor(e%86400/3600),o=Math.floor(e%3600/60),s=e%60,c=this.getAttribute(`digits`)!==`latin`,l=e=>c?i(String(e)):String(e),u=[r&&`${l(r)} روز`,a&&`${l(a)} ساعت`,o&&`${l(o)} دقیقه`,`${l(s)} ثانیه`].filter(Boolean).join(` و `),d=this.getAttribute(`label`),f=n(d?`${d}: ${u}`:u),p=e===0?` data-done=""`:``;if(this.getAttribute(`variant`)===`blocks`){let e=[...r?[[r,`روز`]]:[],[a,`ساعت`],[o,`دقیقه`],[s,`ثانیه`]];this.innerHTML=`<div role="timer" aria-label="${f}" class="k-countdown k-countdown--blocks"${p}>${e.map(([e,t])=>`<span class="k-countdown__unit" aria-hidden="true"><span class="k-countdown__num">${l(S(e))}</span><span class="k-countdown__name">${t}</span></span>`).join(``)}</div>`}else{let e=(r?`${r}:`:``)+(a||r?`${S(a)}:`:``)+`${S(o)}:${S(s)}`;this.innerHTML=`<span role="timer" aria-label="${f}" class="k-countdown"${p} dir="ltr"><span aria-hidden="true">${l(e)}</span></span>`}e===0&&(clearInterval(this.timer),this.done||(this.done=!0,t(this,`kashi-complete`,{})))}};C.observedAttributes=[`to`,`seconds`,`variant`,`digits`,`label`],e(`kashi-money`,y),e(`kashi-date`,b),e(`kashi-relative-time`,x),e(`kashi-countdown`,C);export{C as KashiCountdown,b as KashiDate,y as KashiMoney,x as KashiRelativeTime};
@@ -1 +0,0 @@
1
- import{a as e,c as t,d as n,l as r,o as i,s as a,t as o,u as s}from"./base-Cmq7zeIG.js";import{i as c,n as l}from"./digits-DE1YGT94.js";var u=class extends o{constructor(){super(...arguments),this.code=``,this.caret=0,this.valueSet=!1,this.rendered=!1,this.key=n(`kashi-otp`)}connectedCallback(){!this.rendered&&!this.valueSet&&(this.code=l(this.getAttribute(`value`)??``).slice(0,this.length)),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?(this.code=l(n??``).slice(0,this.length),this.paint()):this.render())}get value(){return this.code}set value(e){this.valueSet=!0,this.code=l(String(e??``)).slice(0,this.length),this.rendered&&this.paint()}focus(e){this.input?.focus(e)}get length(){let e=Number(this.getAttribute(`length`));return Number.isInteger(e)&&e>0?e:6}render(){let e=this.key,n=this.length,r=Number(this.getAttribute(`group-after`))||0,o=this.getAttribute(`aria-label`),s=this.hasAttribute(`label`)?this.getAttribute(`label`):o?null:`کد تأیید`,c=Array.from({length:n},(e,t)=>`${r&&t===r?`<span class="k-otp__sep" aria-hidden="true"></span>`:``}<span class="k-otp__slot" aria-hidden="true"></span>`).join(``),u=`<div class="k-otp${this.getAttribute(`size`)===`sm`?` k-otp--sm`:``}"><input id="${e}" class="k-otp__input" type="text" inputmode="numeric" autocomplete="one-time-code" pattern="\\d*" maxlength="${n*2}"${this.hasAttribute(`disabled`)?` disabled`:``}${!s&&o?` aria-label="${a(o)}"`:``}>${c}</div>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:e,label:s,control:u})),this.input=this.querySelector(`.k-otp__input`),this.querySelector(`.k-otp`).addEventListener(`click`,()=>this.input.focus()),this.input.addEventListener(`input`,()=>{let e=l(this.input.value).slice(0,this.length),t=this.code;this.code=e,this.caret=e.length,this.paint(),e!==t&&i(this,`kashi-change`,{value:e}),e.length===this.length&&e!==t&&i(this,`kashi-complete`,{value:e})});let d=()=>{this.caret=Math.min(this.input.selectionStart??this.code.length,this.length),this.paintSlots()};for(let e of[`select`,`keyup`,`focus`])this.input.addEventListener(e,d);this.input.addEventListener(`blur`,()=>this.paintSlots()),this.rendered=!0,this.paint()}paint(){this.input.value!==this.code&&(this.input.value=this.code),this.paintSlots();let e=this.getAttribute(`error`);this.querySelector(`.k-otp`).classList.toggle(`k-otp--invalid`,!!e),r(this.querySelector(`:scope > .k-field`),this.input,this.key,e,this.getAttribute(`hint`)),s(this,this.getAttribute(`name`),this.code)}paintSlots(){let e=this.getAttribute(`digits`)!==`latin`,t=this.ownerDocument.activeElement===this.input,n=Math.min(this.caret,this.length-1);this.querySelectorAll(`.k-otp__slot`).forEach((r,i)=>{let a=this.code[i]??``;r.textContent=e?c(a):a,r.toggleAttribute(`data-filled`,!!a),r.toggleAttribute(`data-active`,t&&i===n)})}};u.observedAttributes=[`label`,`hint`,`error`,`length`,`digits`,`group-after`,`size`,`disabled`,`name`,`value`,`aria-label`],e(`kashi-otp`,u,`block`);export{u as KashiOtp};
@@ -1 +0,0 @@
1
- import{a as e,c as t,d as n,i as r,l as i,o as a,r as o,s,t as c,u as l}from"./base-Cmq7zeIG.js";import{i as u,n as d,t as f}from"./digits-DE1YGT94.js";import{t as p}from"./text-D1U32D6K.js";import{searchText as m}from"./combobox-ZGrZ5okg.js";const h=[`الف`,`ب`,`پ`,`ت`,`ث`,`ج`,`د`,`ز`,`س`,`ش`,`ص`,`ط`,`ع`,`ف`,`ق`,`ک`,`گ`,`ل`,`م`,`ن`,`و`,`ه`,`ی`,`ژ`],g={الف:`government`,پ:`police`,ث:`police`,ت:`taxi`,ع:`public`,ک:`agricultural`,ش:`army`,ز:`defense`,ف:`defense`,ژ:`disabled`};function _(e){return g[e]??`private`}function v(e){let t=d(e.first??``),n=d(e.middle??``),r=d(e.region??``);return/^[1-9]\d$/.test(t)&&/^[1-9]\d{2}$/.test(n)&&/^[1-9]\d$/.test(r)&&h.includes(e.letter??``)}function y(e,{digits:t=`fa`}={}){let n=e=>t===`fa`?u(d(e)):d(e);return`${n(e.first)} ${e.letter} ${n(e.middle)} ایران ${n(e.region)}`}function b(e){let t=e.trim();if(!t)return null;let n=t.split(/[:٫.،,\s]/).map(d).filter(Boolean),r,i;if(n.length>=2)[r,i]=[Number(n[0]),Number(n[1])];else{let e=d(t);e.length<=2?[r,i]=[Number(e),0]:[r,i]=[Number(e.slice(0,-2)),Number(e.slice(-2))]}return r>=0&&r<24&&i>=0&&i<60?{hours:r,minutes:i}:null}function x({hours:e,minutes:t}){return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}const S=`ضصثقفغعهخحجچپشسیبلاتنمکگظطزرذدپوژ؟آ`,C=/* @__PURE__ */ new Map,w=/* @__PURE__ */ new Map;[...`qwertyuiop[]\\asdfghjkl;'zxcvbnm,C?H`].forEach((e,t)=>{C.set(e,S[t]),w.has(S[t])||w.set(S[t],e)});function T(e,t=`fa`){let n=t===`fa`?C:w;return[...e].map(e=>n.get(t===`fa`&&e!==`C`&&e!==`H`?e.toLowerCase():e)??e).join(``)}function E(e){let t=e.trim();if(!t||/[\u0600-\u06FF]/.test(t)||!/[a-z]/i.test(t))return!1;let n=t.split(/\s+/).filter(e=>/[a-z]/i.test(e)),r=n.filter(e=>/[a-z][;'[\],\\]|[;'[\],\\][a-z]/i.test(e)||e.length>=3&&!/[aeiouy]/i.test(e));return r.length>0&&r.length*2>=n.length}const D=`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 10.5 3.2 3L15 7"/></svg>`,O=`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="m6 6 8 8M14 6l-8 8"/></svg>`;function k(e,t,n){if(e.querySelectorAll(`:scope > input[type=hidden][data-kashi-value]`).forEach(e=>e.remove()),t)for(let r of n)e.insertAdjacentHTML(`beforeend`,`<input type="hidden" data-kashi-value name="${s(t)}" value="${s(r)}">`)}function A(e){let t=[...e.querySelectorAll(`:scope > option`)].map(e=>({value:e.value,label:e.textContent?.trim()??e.value,description:e.dataset.description,disabled:e.disabled,selected:e.hasAttribute(`selected`)}));return e.querySelectorAll(`:scope > option`).forEach(e=>e.remove()),t}var j=class extends c{constructor(){super(...arguments),this.list=null,this.chosen=[],this.query=``,this.active=-1,this.isOpen=!1,this.valueSet=!1,this.key=n(`kashi-multi`),this.onOutside=e=>{this.contains(e.target)||this.close()}}connectedCallback(){o(()=>{if(this.isConnected){if(this.list===null){let e=A(this);this.list=e,this.valueSet||(this.chosen=e.filter(e=>e.selected).map(e=>e.value))}this.render()}})}disconnectedCallback(){document.removeEventListener(`pointerdown`,this.onOutside)}attributeChangedCallback(e,t,n){this.box&&t!==n&&this.render()}get options(){return this.list??[]}set options(e){this.list=[...e],this.box&&this.paint()}get value(){return[...this.chosen]}set value(e){this.valueSet=!0,this.chosen=[...e],this.box&&this.paint()}render(){let e=this.key,n=this.getAttribute(`aria-label`),r=this.hasAttribute(`label`)?this.getAttribute(`label`):n?null:`انتخاب`,i=`<div class="k-combobox k-multiselect"><div class="k-tag-input"><input id="${e}" class="k-tag-input__control" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="${e}-list" autocomplete="off"${this.hasAttribute(`disabled`)?` disabled`:``}${!r&&n?` aria-label="${s(n)}"`:``}></div><ul id="${e}-list" role="listbox" aria-multiselectable="true" class="k-listbox" hidden style="inset-block-start: calc(100% + 6px)"${r?` aria-label="${s(r)}"`:``}></ul><span id="${e}-count" class="k-sr-only"></span><span class="k-sr-only" aria-live="polite"></span></div>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:e,label:r,control:i})),this.input=this.querySelector(`.k-tag-input__control`),this.box=this.querySelector(`.k-tag-input`),this.listbox=this.querySelector(`.k-listbox`),this.box.addEventListener(`click`,e=>{let t=e.target.closest(`[data-remove]`);t?this.set(this.chosen.filter(e=>e!==t.dataset.remove),`${this.labelOf(t.dataset.remove)} حذف شد`):e.target.closest(`[data-clear]`)&&this.set([],`همه حذف شد`),this.input.focus()}),this.input.addEventListener(`input`,()=>{this.query=this.input.value,this.active=0,this.open()}),this.input.addEventListener(`focus`,()=>this.open()),this.input.addEventListener(`keydown`,e=>this.onKey(e)),this.listbox.addEventListener(`pointerdown`,e=>e.preventDefault()),this.listbox.addEventListener(`click`,e=>{let t=e.target.closest(`[role="option"]`);t&&this.toggle(this.filtered()[Number(t.dataset.i)])}),this.paint()}labelOf(e){return this.options.find(t=>t.value===e)?.label??e}filtered(){let e=m(this.query.trim());return this.options.filter(t=>!e||[t.label,t.description??``].some(t=>m(t).includes(e)))}get full(){let e=Number(this.getAttribute(`max`));return!!e&&this.chosen.length>=e}toggle(e){if(!e||e.disabled)return;let t=this.chosen.includes(e.value);if(!t&&this.full)return this.announce(`حداکثر ${u(Number(this.getAttribute(`max`)))} مورد`);this.query=``,this.input.value=``,this.set(t?this.chosen.filter(t=>t!==e.value):[...this.chosen,e.value],`${e.label} ${t?`حذف شد`:`انتخاب شد`}`)}set(e,t){this.chosen=e,this.paint(),this.announce(t),a(this,`kashi-change`,{value:[...e]})}announce(e){this.querySelector(`.k-multiselect > .k-sr-only[aria-live]`).textContent=e}open(){this.hasAttribute(`disabled`)||(this.isOpen=!0,this.listbox.hidden=!1,this.input.setAttribute(`aria-expanded`,`true`),this.querySelector(`.k-combobox`).setAttribute(`data-open`,``),document.addEventListener(`pointerdown`,this.onOutside),this.paintList())}close(){this.isOpen=!1,this.listbox.hidden=!0,this.input.setAttribute(`aria-expanded`,`false`),this.input.removeAttribute(`aria-activedescendant`),this.querySelector(`.k-combobox`).removeAttribute(`data-open`),document.removeEventListener(`pointerdown`,this.onOutside)}onKey(e){let t=this.filtered(),n=t.map((e,t)=>e.disabled?-1:t).filter(e=>e>=0),r=e=>{n.length&&(this.active=n[(n.indexOf(this.active)+e+n.length)%n.length],this.paintList())};if(e.key===`ArrowDown`)e.preventDefault(),this.isOpen?r(1):this.open();else if(e.key===`ArrowUp`)e.preventDefault(),this.isOpen?r(-1):this.open();else if(e.key===`Enter`&&this.isOpen&&t[this.active])e.preventDefault(),this.toggle(t[this.active]);else if(e.key===`Escape`&&this.isOpen)e.preventDefault(),this.close();else if(e.key===`Backspace`&&!this.input.value&&this.chosen.length){let e=this.chosen.at(-1);this.set(this.chosen.slice(0,-1),`${this.labelOf(e)} حذف شد`)}}paint(){let e=this.hasAttribute(`disabled`);this.box.querySelectorAll(`.k-badge, [data-clear]`).forEach(e=>e.remove());let t=this.chosen.map(t=>`<span class="k-badge k-badge--brand${e?``:` k-badge--removable`}">${s(this.labelOf(t))}${e?``:`<button type="button" class="k-badge__remove" data-remove="${s(t)}" aria-label="حذف ${s(this.labelOf(t))}">${O}</button>`}</span>`).join(``);this.input.insertAdjacentHTML(`beforebegin`,t),this.chosen.length>1&&!e&&this.box.insertAdjacentHTML(`beforeend`,`<button type="button" class="k-input__action" data-clear aria-label="پاک کردن همه">${O}</button>`),this.input.placeholder=this.chosen.length?``:this.getAttribute(`placeholder`)??``,this.querySelector(`#${this.key}-count`).textContent=`${u(this.chosen.length)} مورد انتخاب شده`;let n=this.getAttribute(`error`);this.box.toggleAttribute(`data-invalid`,!!n),i(this.querySelector(`:scope > .k-field`),this.input,this.key,n,this.getAttribute(`hint`),`${this.key}-count`),k(this,this.getAttribute(`name`),this.chosen),this.isOpen&&this.paintList()}paintList(){let e=this.filtered(),t=m(this.query.trim()),n=this.full,r=e=>{let n=t?m(e).indexOf(t):-1;return n<0?s(e):`${s(e.slice(0,n))}<mark>${s(e.slice(n,n+t.length))}</mark>${s(e.slice(n+t.length))}`};this.listbox.innerHTML=e.length?e.map((e,t)=>{let i=this.chosen.includes(e.value);return`<li id="${this.key}-list-${t}" data-i="${t}" role="option" aria-selected="${i}"${e.disabled||!i&&n?` aria-disabled="true"`:``}${t===this.active?` data-active`:``} class="k-option k-option--check"><span class="k-multiselect__box" aria-hidden="true">${i?D:``}</span><span class="k-option__body"><span>${r(e.label)}</span>${e.description?`<span class="k-option__desc">${s(e.description)}</span>`:``}</span></li>`}).join(``):`<li class="k-listbox__empty" role="presentation">نتیجه‌ای پیدا نشد.</li>`;let i=this.active>=0?this.listbox.querySelector(`[data-i="${this.active}"]`):null;i?(this.input.setAttribute(`aria-activedescendant`,i.id),i.scrollIntoView?.({block:`nearest`})):this.input.removeAttribute(`aria-activedescendant`)}};j.observedAttributes=[`label`,`hint`,`error`,`placeholder`,`max`,`disabled`,`name`,`aria-label`];var M=class extends c{constructor(){super(...arguments),this.lo=0,this.hi=0,this.valueSet=!1,this.rendered=!1,this.key=n(`kashi-slider`)}connectedCallback(){!this.rendered&&!this.valueSet&&this.readValue(this.getAttribute(`value`)),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`&&this.readValue(n),this.render())}num(e,t){let n=this.getAttribute(e);return n===null||n===``||Number.isNaN(Number(n))?t:Number(n)}get min(){return this.num(`min`,0)}get max(){return this.num(`max`,100)}get isRange(){return this.hasAttribute(`range`)}readValue(e){let t=(e??``).split(/[,،]/).map(e=>Number(e.trim())).filter(e=>!Number.isNaN(e)&&String(e)!==``);this.isRange?[this.lo,this.hi]=[t[0]??this.min,t[1]??this.max]:[this.lo,this.hi]=[this.min,t[0]??this.min]}get value(){return this.isRange?[this.lo,this.hi]:this.hi}set value(e){this.valueSet=!0,this.readValue(Array.isArray(e)?e.join(`,`):String(e)),this.rendered&&this.render()}fmt(e){let t=this.getAttribute(`unit`);return`${f(e)}${t?` ${t}`:``}`}render(){let e=this.getAttribute(`label`),t=this.isRange,n=this.getAttribute(`name`),r=this.hasAttribute(`disabled`),i=e=>`${(e-this.min)/(this.max-this.min)*100}%`,o=i=>{let a=i===`lo`?this.lo:this.hi,o=n?t?`${n}_${i===`lo`?`min`:`max`}`:n:``;return`<input type="range" class="k-slider__input" data-which="${i}" min="${this.min}" max="${this.max}" step="${this.num(`step`,1)}" value="${a}"${r?` disabled`:``}${o?` name="${s(o)}"`:``}${t?` aria-label="${i===`lo`?`حداقل`:`حداکثر`}${e?` ${s(e)}`:``}"`:e?` aria-labelledby="${this.key}-label"`:``} aria-valuetext="${s(this.fmt(a))}">`},c=(this.getAttribute(`marks`)??``).split(/[,،]/).map(e=>e.trim()).filter(Boolean).map(Number),l=this.getAttribute(`show-value`)!==`false`;this.innerHTML=`<div class="k-slider"${t?` data-range=""`:``}>${e||l?`<div class="k-slider__head">${e?`<span class="k-label" id="${this.key}-label">${s(e)}</span>`:``}${l?`<span class="k-slider__value" aria-hidden="true">${s(t?`${this.fmt(this.lo)} تا ${this.fmt(this.hi)}`:this.fmt(this.hi))}</span>`:``}</div>`:``}<div class="k-slider__track" style="--_from: ${t?i(this.lo):`0%`}; --_to: ${i(this.hi)}"><span class="k-slider__fill" aria-hidden="true"></span>${t?o(`lo`):``}${o(`hi`)}</div>${c.length?`<div class="k-slider__marks" aria-hidden="true">${c.map(e=>`<span>${s(this.fmt(e))}</span>`).join(``)}</div>`:``}</div>`,this.rendered=!0,this.querySelectorAll(`.k-slider__input`).forEach(e=>e.addEventListener(`input`,()=>{let n=Number(e.value);t?e.dataset.which===`lo`?this.lo=Math.min(n,this.hi):this.hi=Math.max(n,this.lo):this.hi=n,e.value=String(e.dataset.which===`lo`?this.lo:this.hi),e.setAttribute(`aria-valuetext`,this.fmt(Number(e.value)));let r=this.querySelector(`.k-slider__track`);r.style.setProperty(`--_from`,t?i(this.lo):`0%`),r.style.setProperty(`--_to`,i(this.hi));let o=this.querySelector(`.k-slider__value`);o&&(o.textContent=t?`${this.fmt(this.lo)} تا ${this.fmt(this.hi)}`:this.fmt(this.hi)),a(this,`kashi-change`,{value:this.value})}))}};M.observedAttributes=[`label`,`min`,`max`,`step`,`value`,`range`,`show-value`,`marks`,`unit`,`disabled`,`name`];var N=class extends c{constructor(){super(...arguments),this.built=!1}connectedCallback(){o(()=>this.isConnected&&!this.built&&this.build())}attributeChangedCallback(){if(!this.built)return;let e=this.getAttribute(`label`);e&&this.setAttribute(`aria-label`,e),this.sync(!1)}get value(){return[...this.querySelectorAll(`.k-chip[aria-pressed="true"]`)].map(e=>e.dataset.value??``)}set value(e){this.querySelectorAll(`.k-chip`).forEach(t=>t.setAttribute(`aria-pressed`,String(e.includes(t.dataset.value??``)))),this.sync(!1)}build(){this.built=!0,this.classList.add(`k-chips`),this.setAttribute(`role`,`group`);let e=this.getAttribute(`label`);e&&this.setAttribute(`aria-label`,e),this.querySelectorAll(`:scope > button`).forEach(e=>{var t;e.type=`button`,e.classList.add(`k-chip`),(t=e.dataset).value||(t.value=e.textContent?.trim()??``),e.setAttribute(`aria-pressed`,String(e.hasAttribute(`data-pressed`)||e.getAttribute(`aria-pressed`)===`true`)),e.insertAdjacentHTML(`afterbegin`,`<svg class="k-chip__check" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 10.5 3.2 3L15 7"/></svg>`),e.dataset.count&&e.insertAdjacentHTML(`beforeend`,`<span class="k-chip__count">${u(e.dataset.count)}</span>`)}),this.addEventListener(`click`,e=>{let t=e.target.closest(`.k-chip`);if(!t||t.disabled)return;let n=t.getAttribute(`aria-pressed`)!==`true`;r(this,`single`)&&this.querySelectorAll(`.k-chip`).forEach(e=>e.setAttribute(`aria-pressed`,`false`)),t.setAttribute(`aria-pressed`,String(n)),this.sync(!0)}),this.sync(!1)}sync(e){k(this,this.getAttribute(`name`),this.value),e&&a(this,`kashi-change`,{value:this.value})}};N.observedAttributes=[`label`,`single`,`name`];const P=[[`حداقل ${u(8)} نویسه`,e=>e.length>=8],[`حروف بزرگ و کوچک انگلیسی`,e=>/[a-z]/.test(e)&&/[A-Z]/.test(e)],[`دست‌کم یک عدد`,e=>/\d/.test(e)],[`دست‌کم یک نماد، مثل ! یا @`,e=>/[^A-Za-z0-9\s؀-ۿ]/.test(e)]];var F=class extends c{constructor(){super(...arguments),this.target=null,this.onInput=()=>this.render(this.target?.value??``)}connectedCallback(){o(()=>{this.isConnected&&(this.attach(),this.render(``))})}disconnectedCallback(){this.target?.removeEventListener(`input`,this.onInput)}attributeChangedCallback(){this.isConnected&&(this.attach(),this.render(this.target?.value??``))}attach(){this.target?.removeEventListener(`input`,this.onInput);let e=this.getAttribute(`for`),t=e?document.getElementById(e):null;if(this.target=t instanceof HTMLInputElement?t:t?.querySelector(`input`)??null,this.target?.addEventListener(`input`,this.onInput),this.target){this.id||=n(`kashi-strength`);let e=(this.target.getAttribute(`aria-describedby`)??``).split(` `).filter(Boolean);e.includes(this.id)||this.target.setAttribute(`aria-describedby`,[...e,this.id].join(` `))}}score(e){let t=P.filter(([,t])=>t(e)).length;return e?Math.max(1,Math.round(t/P.length*4)):0}render(e){let t=this.score(e),n=[`ضعیف`,`متوسط`,`خوب`,`قوی`],r=/[؀-ۿ]/.test(e);this.innerHTML=`<div class="k-strength" data-score="${t}"><div class="k-strength__bars" aria-hidden="true">${`<span class="k-strength__bar"></span>`.repeat(4)}</div><p class="k-strength__label" aria-live="polite" style="margin: 0">${t?`قدرت رمز: <strong>${n[t-1]}</strong>`:``}</p>${r?`<p class="k-hint k-hint--error" role="alert">رمز حروف فارسی دارد؛ شاید صفحه‌کلید روی فارسی مانده است.</p>`:``}${this.getAttribute(`show-rules`)===`false`?``:`<ul class="k-strength__rules">${P.map(([t,n])=>{let r=n(e);return`<li class="k-strength__rule"${r?` data-met=""`:``}>${r?D:`<svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="2.5" fill="currentColor"/></svg>`}<span>${t}<span class="k-sr-only">${r?`، رعایت شده`:`، رعایت نشده`}</span></span></li>`}).join(``)}</ul>`}</div>`}};F.observedAttributes=[`for`,`show-rules`];var I=class extends c{constructor(){super(...arguments),this.key=n(`kashi-text`),this.rendered=!1,this.valueSet=!1,this.text=``}connectedCallback(){!this.rendered&&!this.valueSet&&(this.text=this.getAttribute(`value`)??``),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?this.value=n??``:this.render())}get value(){return this.text}set value(e){this.valueSet=!0,this.text=String(e??``),this.rendered&&(this.control.value=this.text,this.paint())}focus(e){this.control?.focus(e)}render(){let e=this.key,n=this.getAttribute(`aria-label`),r=this.hasAttribute(`label`)?this.getAttribute(`label`):n?null:this.defaultLabel,i=this.getAttribute(`name`),o=`id="${e}" class="k-input__control" dir="auto"${i?` name="${s(i)}"`:``}${this.hasAttribute(`required`)?` required`:``}${this.hasAttribute(`disabled`)?` disabled`:``} placeholder="${s(this.getAttribute(`placeholder`)??``)}"${!r&&n?` aria-label="${s(n)}"`:``}`,c=this.multiline?`<div class="k-input k-input--textarea"><textarea ${o} rows="${Number(this.getAttribute(`rows`))||4}"></textarea></div>`:`<div class="k-input"><input ${o}></div>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:e,label:r,required:this.hasAttribute(`required`),control:c})),this.control=this.querySelector(`.k-input__control`),this.control.value=this.text,this.control.addEventListener(`input`,()=>{this.text=this.control.value,this.paint(),a(this,`kashi-change`,{value:this.text})}),this.rendered=!0,this.paint()}paint(){let e=this.querySelector(`:scope > .k-field`);i(e,this.control,this.key,this.getAttribute(`error`),null);let t=this.hint();if(e.querySelector(`.k-field__hint-row[data-extra]`)?.remove(),t){e.insertAdjacentHTML(`beforeend`,`<div class="k-field__hint-row" data-extra><div class="k-field__hints"><p class="k-hint" id="${this.key}-hint">${t}</p></div></div>`);let n=(this.control.getAttribute(`aria-describedby`)??``).split(` `).filter(Boolean);this.control.setAttribute(`aria-describedby`,[...n,`${this.key}-hint`].join(` `))}}replace(e){this.text=e,this.control.value=e,this.paint(),this.control.focus(),a(this,`kashi-change`,{value:e})}};const L={arabic:`حرف عربی`,zwnj:`نیم‌فاصله`,punctuation:`علامت`,digits:`رقم`,spacing:`فاصله`};var R=class extends I{constructor(){super(...arguments),this.multiline=!0,this.defaultLabel=`متن`}render(){super.render(),this.control.addEventListener(`blur`,()=>{let e=this.result();r(this,`fix-on-blur`)&&e.count&&this.replace(e.text)}),this.addEventListener(`click`,e=>{e.target.closest(`[data-fix]`)&&this.replace(this.result().text)})}result(){return p(this.text,{digits:this.getAttribute(`fix-digits`)!==`false`})}hint(){if(!this.text.trim())return this.getAttribute(`hint`)?s(this.getAttribute(`hint`)):null;let e=this.result();if(!e.count)return`<span class="k-textfix" data-state="clean"><span class="k-textfix__text">نگارش متن درست است.</span></span>`;let t=Object.keys(L).filter(t=>e.fixes[t]).map(t=>`${u(e.fixes[t])} ${L[t]}`).join(`، `);return`<span class="k-textfix" data-state="fix"><span class="k-textfix__text">${u(e.count)} مورد قابل اصلاح: ${t}</span><button type="button" class="k-btn k-btn--tertiary k-btn--xs" data-fix>اصلاح نگارش</button></span>`}};R.observedAttributes=[`label`,`hint`,`error`,`placeholder`,`required`,`disabled`,`name`,`value`,`rows`,`fix-on-blur`,`fix-digits`,`aria-label`];var z=class extends I{constructor(){super(...arguments),this.multiline=!1,this.defaultLabel=`متن`}render(){super.render(),this.addEventListener(`click`,e=>{e.target.closest(`[data-fix]`)&&this.replace(T(this.text))})}hint(){let e=this.text,t=/[a-z]/i.test(e)&&!/[؀-ۿ]/.test(e);return(this.getAttribute(`suggest`)===`always`?t:E(e))?`<span class="k-kbfix" role="status">منظورتان <button type="button" class="k-kbfix__btn" data-fix>«${s(T(e))}»</button> بود؟</span>`:this.getAttribute(`hint`)?s(this.getAttribute(`hint`)):null}};z.observedAttributes=[`label`,`hint`,`error`,`placeholder`,`required`,`disabled`,`name`,`value`,`suggest`,`aria-label`];const B=e=>e.hours*60+e.minutes,V=e=>({hours:Math.floor(e/60),minutes:e%60});var H=class extends c{constructor(){super(...arguments),this.current=null,this.invalid=!1,this.valueSet=!1,this.rendered=!1,this.key=n(`kashi-time`)}connectedCallback(){!this.rendered&&!this.valueSet&&(this.current=this.normal(this.getAttribute(`value`))),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?this.value=n??``:this.render())}get value(){return this.current??``}set value(e){this.valueSet=!0,this.current=this.normal(e),this.invalid=!1,this.rendered&&this.paint()}normal(e){let t=e?b(e):null;return t?x(t):null}show(e){return e?this.getAttribute(`digits`)===`latin`?e:u(e):``}get lo(){let e=b(this.getAttribute(`min`)??``);return e?B(e):0}get hi(){let e=b(this.getAttribute(`max`)??``);return e?B(e):1439}render(){let e=this.key,n=this.getAttribute(`aria-label`),r=this.hasAttribute(`label`)?this.getAttribute(`label`):n?null:`ساعت`,i=this.getAttribute(`digits`)!==`latin`,a=`<div class="k-input"><input id="${e}" class="k-input__control" type="text" inputmode="numeric" dir="ltr" autocomplete="off" placeholder="${s(this.getAttribute(`placeholder`)??(i?`۰۹:۳۰`:`09:30`))}"${this.hasAttribute(`required`)?` required`:``}${this.hasAttribute(`disabled`)?` disabled`:``}${!r&&n?` aria-label="${s(n)}"`:``}><span class="k-input__addon"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="10" cy="10" r="7"/><path d="M10 6v4l2.5 2"/></svg></span></div>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:e,label:r,required:this.hasAttribute(`required`),control:a})),this.input=this.querySelector(`input.k-input__control`),this.input.addEventListener(`blur`,()=>this.commitText()),this.input.addEventListener(`keydown`,e=>{if(e.key===`Enter`&&this.commitText(),e.key!==`ArrowUp`&&e.key!==`ArrowDown`)return;e.preventDefault();let t=Number(this.getAttribute(`step`))||15,n=b(this.input.value)??b(this.current??``)??V(this.lo),r=B(n),i=e.key===`ArrowUp`?Math.floor(r/t)*t+t:Math.ceil(r/t)*t-t;this.commit(V(Math.min(this.hi,Math.max(this.lo,i))))}),this.rendered=!0,this.paint()}commitText(){let e=this.input.value.trim();if(!e)return this.commit(null);let t=b(e);if(!t)this.invalid=`format`;else if(B(t)<this.lo||B(t)>this.hi)this.invalid=`range`;else return this.commit(t);this.paint(!1)}commit(e){let t=e?x(e):null,n=t!==this.current;this.current=t,this.invalid=!1,this.paint(),n&&a(this,`kashi-change`,{value:t??``})}paint(e=!0){e&&(this.input.value=this.show(this.current));let t=this.invalid===`range`?`ساعت باید بین ${this.show(x(V(this.lo)))} و ${this.show(x(V(this.hi)))} باشد.`:this.invalid?`ساعت معتبر نیست؛ آن را به شکل ۰۹:۳۰ وارد کنید.`:null;this.input.setCustomValidity(t??``),i(this.querySelector(`:scope > .k-field`),this.input,this.key,this.getAttribute(`error`)||t,this.getAttribute(`hint`)),l(this,this.getAttribute(`name`),this.current??``)}};H.observedAttributes=[`label`,`hint`,`error`,`value`,`min`,`max`,`step`,`digits`,`required`,`disabled`,`name`,`placeholder`,`aria-label`];const U={first:``,letter:``,middle:``,region:``};var W=class extends c{constructor(){super(...arguments),this.plate={...U},this.touched=!1,this.valueSet=!1,this.rendered=!1,this.key=n(`kashi-plate`)}connectedCallback(){!this.rendered&&!this.valueSet&&(this.plate=this.parse(this.getAttribute(`value`))),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?this.value=this.parse(n):this.render())}parse(e){let[t=``,n=``,r=``,i=``]=(e??``).split(`-`);return{first:d(t),letter:n,middle:d(r),region:d(i)}}get value(){return{...this.plate}}set value(e){this.valueSet=!0,this.plate={...U,...e},this.rendered&&this.render()}get valid(){return v(this.plate)}render(){let e=this.key,n=this.plate,r=this.hasAttribute(`disabled`)?` disabled`:``,i=(t,i,a,o=``,s=!1)=>`<input${s?` id="${e}-first"`:``} class="k-plate__seg ${o}" data-key="${t}" data-len="${i}" inputmode="numeric" autocomplete="off" aria-label="${a}" placeholder="${u(`0`.repeat(i))}" value="${u(n[t])}"${r}>`,o=this.getAttribute(`label`)??`پلاک خودرو`,c=`<div class="k-plate" role="group" aria-label="${s(o)}" data-type="${_(n.letter)}"><span class="k-plate__flag" aria-hidden="true"><span class="k-plate__flag-colors"></span>I.R.<br>IRAN</span>${i(`first`,2,`دو رقم اول پلاک`,``,!0)}<select class="k-plate__letter" data-key="letter" aria-label="حرف پلاک"${r}><option value="">–</option>${h.map(e=>`<option value="${e}"${e===n.letter?` selected`:``}>${e===`ه`?`هـ`:e}</option>`).join(``)}</select>${i(`middle`,3,`سه رقم پلاک`,`k-plate__seg--3`)}<span class="k-plate__region"><span class="k-plate__region-label" aria-hidden="true">ایران</span>${i(`region`,2,`کد استان`)}</span></div><span class="k-sr-only" aria-live="polite"></span>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:`${e}-first`,label:o,control:c}));let l=[...this.querySelectorAll(`[data-key]`)];l.forEach((e,t)=>{e.addEventListener(e instanceof HTMLSelectElement?`change`:`input`,()=>{let n=e.dataset.key;if(e instanceof HTMLSelectElement)this.plate.letter=e.value,e.value&&l[t+1]?.focus();else{let r=Number(e.dataset.len),i=d(e.value);n===`middle`&&i.length>r&&(this.plate.region=(this.plate.region+i.slice(r)).slice(0,2)),this.plate[n]=i.slice(0,r),e.value=u(this.plate[n]),this.plate[n].length===r&&l[t+1]?.focus()}this.paint(),a(this,`kashi-change`,{value:this.value,valid:this.valid})}),e.addEventListener(`keydown`,n=>{n.key===`Backspace`&&!e.value&&l[t-1]?.focus()})});let f=this.querySelector(`.k-plate`);f.addEventListener(`focusout`,e=>{f.contains(e.relatedTarget)||(this.touched=!0,this.paint())}),this.rendered=!0,this.paint()}paint(){let e=this.plate,t=this.querySelector(`.k-plate`),n=this.querySelector(`[data-key="region"]`);n.value!==u(e.region)&&(n.value=u(e.region)),t.dataset.type=_(e.letter);let r=e.first.length===2&&!!e.letter&&e.middle.length===3&&e.region.length===2,a=(this.touched||r)&&Object.values(e).some(Boolean)&&!this.valid,o=this.getAttribute(`error`)||(a?`پلاک خودرو معتبر نیست.`:null);t.toggleAttribute(`data-invalid`,!!o),i(this.querySelector(`:scope > .k-field`),t,this.key,o,this.getAttribute(`hint`)),this.querySelector(`.k-field > .k-sr-only`).textContent=this.valid?y(e):``;let c=this.getAttribute(`name`);if(this.querySelectorAll(`:scope > input[type=hidden]`).forEach(e=>e.remove()),c)for(let t of[`first`,`letter`,`middle`,`region`])this.insertAdjacentHTML(`beforeend`,`<input type="hidden" name="${s(`${c}_${t}`)}" value="${s(e[t])}">`)}};W.observedAttributes=[`label`,`hint`,`error`,`name`,`disabled`,`value`];var G=class extends c{constructor(){super(...arguments),this.text=``,this.editing=!1,this.valueSet=!1,this.rendered=!1}connectedCallback(){!this.rendered&&!this.valueSet&&(this.text=this.getAttribute(`value`)??this.textContent?.trim()??``),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`&&(this.text=n??``),this.editing||this.render())}get value(){return this.text}set value(e){this.valueSet=!0,this.text=String(e??``),this.rendered&&!this.editing&&this.render()}render(e=!1){let t=this.getAttribute(`label`)??`متن`;this.rendered=!0,this.editing=!1,this.innerHTML=`<span class="k-inline-edit"><button type="button" class="k-inline-edit__view" aria-label="${s(`${t}: ${this.text||`خالی`}، ویرایش`)}">${this.text?s(this.text):`<span class="k-inline-edit__placeholder">${s(this.getAttribute(`placeholder`)??`خالی`)}</span>`}<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m13.5 3.5 3 3L7 16H4v-3Z"/></svg></button></span>`;let n=this.querySelector(`button`);n.addEventListener(`click`,()=>this.edit()),e&&n.focus()}edit(e,t=this.text){this.editing=!0;let r=this.getAttribute(`label`)??`متن`,i=n(`kashi-ie-err`);this.innerHTML=`<span class="k-inline-edit"><span class="k-field" style="gap: 4px"><span class="k-input"${e?` data-state="invalid"`:``}><input class="k-input__control" aria-label="${s(r)}" placeholder="${s(this.getAttribute(`placeholder`)??``)}"${e?` aria-invalid="true" aria-describedby="${i}"`:``}></span>${e?`<span class="k-hint k-hint--error" id="${i}">${s(e)}</span>`:``}</span><span class="k-inline-edit__actions"><button type="button" class="k-btn k-btn--primary k-btn--icon k-btn--sm" data-save aria-label="ثبت">${D}</button><button type="button" class="k-btn k-btn--secondary k-btn--icon k-btn--sm" data-cancel aria-label="انصراف">${O}</button></span></span>`;let a=this.querySelector(`input`);a.value=t,a.focus(),a.select(),a.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),this.commit(a.value)):e.key===`Escape`&&(e.preventDefault(),this.render(!0))}),this.querySelector(`[data-save]`).addEventListener(`click`,()=>this.commit(a.value)),this.querySelector(`[data-cancel]`).addEventListener(`click`,()=>this.render(!0))}async commit(e){let t=e.trim(),n=this.validate?.(t);if(n)return this.edit(n,e);if(t===this.text)return this.render(!0);let r=this.text,i=null;if(a(this,`kashi-save`,{value:t,wait:e=>i=e}),this.text=t,i){this.querySelector(`[data-save]`)?.setAttribute(`aria-busy`,`true`);try{await i}catch{return this.text=r,this.edit(`ذخیره نشد؛ دوباره امتحان کنید.`,e)}}this.render(!0),a(this,`kashi-change`,{value:t})}};G.observedAttributes=[`value`,`label`,`placeholder`],e(`kashi-multi-select`,j,`block`),e(`kashi-slider`,M,`block`),e(`kashi-chip-group`,N),e(`kashi-password-strength`,F,`block`),e(`kashi-persian-textarea`,R,`block`),e(`kashi-keyboard-fix`,z,`block`),e(`kashi-time-input`,H,`block`),e(`kashi-plate-input`,W,`block`),e(`kashi-inline-edit`,G);export{N as KashiChipGroup,G as KashiInlineEdit,z as KashiKeyboardFix,j as KashiMultiSelect,F as KashiPasswordStrength,R as KashiPersianTextarea,W as KashiPlateInput,M as KashiSlider,H as KashiTimeInput};
@@ -1 +0,0 @@
1
- import{a as e,c as t,d as n,i as r,l as i,o as a,s as o,t as s,u as c}from"./base-Cmq7zeIG.js";import{i as l,n as u,r as d,t as f}from"./digits-DE1YGT94.js";import{t as p}from"./words-9OdzG7y6.js";function m(e){let t=u(e);if(!/^\d{10}$/.test(t)||/^(\d)\1{9}$/.test(t))return!1;let n=Number(t[9]),r=0;for(let e=0;e<9;e++)r+=Number(t[e])*(10-e);let i=r%11;return i<2?n===i:n===11-i}const h={603799:{name:`بانک ملی`,slug:`melli`},589210:{name:`بانک سپه`,slug:`sepah`},627648:{name:`بانک توسعه صادرات`,slug:`edbi`},627961:{name:`بانک صنعت و معدن`,slug:`bim`},603770:{name:`بانک کشاورزی`,slug:`keshavarzi`},639217:{name:`بانک کشاورزی`,slug:`keshavarzi`},628023:{name:`بانک مسکن`,slug:`maskan`},627760:{name:`پست بانک`,slug:`postbank`},502908:{name:`بانک توسعه تعاون`,slug:`tosee-taavon`},627412:{name:`بانک اقتصاد نوین`,slug:`eghtesad-novin`},622106:{name:`بانک پارسیان`,slug:`parsian`},639194:{name:`بانک پارسیان`,slug:`parsian`},627884:{name:`بانک پارسیان`,slug:`parsian`},502229:{name:`بانک پاسارگاد`,slug:`pasargad`},639347:{name:`بانک پاسارگاد`,slug:`pasargad`},627488:{name:`بانک کارآفرین`,slug:`karafarin`},502910:{name:`بانک کارآفرین`,slug:`karafarin`},621986:{name:`بانک سامان`,slug:`saman`},639346:{name:`بانک سینا`,slug:`sina`},639607:{name:`بانک سرمایه`,slug:`sarmayeh`},636214:{name:`بانک آینده`,slug:`ayandeh`},502806:{name:`بانک شهر`,slug:`shahr`},504706:{name:`بانک شهر`,slug:`shahr`},502938:{name:`بانک دی`,slug:`dey`},603769:{name:`بانک صادرات`,slug:`saderat`},610433:{name:`بانک ملت`,slug:`mellat`},991975:{name:`بانک ملت`,slug:`mellat`},627353:{name:`بانک تجارت`,slug:`tejarat`},585983:{name:`بانک تجارت`,slug:`tejarat`},589463:{name:`بانک رفاه`,slug:`refah`},505785:{name:`بانک ایران زمین`,slug:`iran-zamin`},606373:{name:`بانک قرض‌الحسنه مهر ایران`,slug:`mehr-iran`},505416:{name:`بانک گردشگری`,slug:`gardeshgari`},636795:{name:`بانک مرکزی`,slug:`markazi`},585947:{name:`بانک خاورمیانه`,slug:`khavarmianeh`},505809:{name:`بانک خاورمیانه`,slug:`khavarmianeh`},507677:{name:`موسسه اعتباری نور`,slug:`noor`},606256:{name:`موسسه اعتباری ملل`,slug:`melal`},628157:{name:`موسسه اعتباری توسعه`,slug:`tosee`},504172:{name:`بانک قرض‌الحسنه رسالت`,slug:`resalat`},627381:{name:`بانک انصار`,slug:`ansar`},639599:{name:`بانک قوامین`,slug:`ghavamin`},636949:{name:`بانک حکمت ایرانیان`,slug:`hekmat`},505801:{name:`موسسه اعتباری کوثر`,slug:`kosar`},639370:{name:`بانک مهر اقتصاد`,slug:`mehr-eghtesad`}};function g(e){let t=0;for(let n=0;n<e.length;n++){let r=Number(e[e.length-1-n]);n%2==1&&(r*=2,r>9&&(r-=9)),t+=r}return t%10==0}function _(e){let t=u(e);return/^\d{16}$/.test(t)&&g(t)}function v(e){let t=u(e);return t.length>=6?h[t.slice(0,6)]??null:null}function y(e){return u(e).slice(0,16).replace(/(\d{4})(?=\d)/g,`$1 `)}const b={"010":{name:`بانک مرکزی`,slug:`markazi`},"011":{name:`بانک صنعت و معدن`,slug:`bim`},"012":{name:`بانک ملت`,slug:`mellat`},"013":{name:`بانک رفاه`,slug:`refah`},"014":{name:`بانک مسکن`,slug:`maskan`},"015":{name:`بانک سپه`,slug:`sepah`},"016":{name:`بانک کشاورزی`,slug:`keshavarzi`},"017":{name:`بانک ملی`,slug:`melli`},"018":{name:`بانک تجارت`,slug:`tejarat`},"019":{name:`بانک صادرات`,slug:`saderat`},"020":{name:`بانک توسعه صادرات`,slug:`edbi`},"021":{name:`پست بانک`,slug:`postbank`},"022":{name:`بانک توسعه تعاون`,slug:`tosee-taavon`},"053":{name:`بانک کارآفرین`,slug:`karafarin`},"054":{name:`بانک پارسیان`,slug:`parsian`},"055":{name:`بانک اقتصاد نوین`,slug:`eghtesad-novin`},"056":{name:`بانک سامان`,slug:`saman`},"057":{name:`بانک پاسارگاد`,slug:`pasargad`},"058":{name:`بانک سرمایه`,slug:`sarmayeh`},"059":{name:`بانک سینا`,slug:`sina`},"060":{name:`بانک قرض‌الحسنه مهر ایران`,slug:`mehr-iran`},"061":{name:`بانک شهر`,slug:`shahr`},"062":{name:`بانک آینده`,slug:`ayandeh`},"064":{name:`بانک گردشگری`,slug:`gardeshgari`},"066":{name:`بانک دی`,slug:`dey`},"069":{name:`بانک ایران زمین`,slug:`iran-zamin`},"070":{name:`بانک قرض‌الحسنه رسالت`,slug:`resalat`},"078":{name:`بانک خاورمیانه`,slug:`khavarmianeh`}};function x(e){return d(e).toUpperCase().replace(/^\s*IR/,``).replace(/\D/g,``).slice(0,24)}function S(e){let t=0;for(let n=0;n<e.length;n+=7)t=Number(String(t)+e.slice(n,n+7))%97;return t}function C(e){let t=d(e).toUpperCase().replace(/[\s-]/g,``),n=t.startsWith(`IR`)?t.slice(2):t;return/^\d{24}$/.test(n)?S(n.slice(2)+`1827`+n.slice(0,2))===1:!1}function w(e){let t=x(e);return t.length>=5?b[t.slice(2,5)]??null:null}function T(e){let t=x(e);return t?`IR${t}`.replace(/(.{4})(?=.)/g,`$1 `):``}const E={name:`همراه اول`,slug:`mci`},D={name:`ایرانسل`,slug:`irancell`},O={name:`رایتل`,slug:`rightel`},k={...Object.fromEntries([`10`,`11`,`12`,`13`,`14`,`15`,`16`,`17`,`18`,`19`,`90`,`91`,`92`,`93`,`94`].map(e=>[e,E])),...Object.fromEntries([`01`,`02`,`03`,`04`,`05`,`30`,`33`,`35`,`36`,`37`,`38`,`39`,`41`].map(e=>[e,D])),...Object.fromEntries([`20`,`21`,`22`].map(e=>[e,O]))};function A(e){let t=u(e);return t.startsWith(`0098`)?t=`0`+t.slice(4):t.startsWith(`98`)&&t.length===12?t=`0`+t.slice(2):t.startsWith(`9`)&&t.length===10&&(t=`0`+t),t}function j(e){return/^09\d{9}$/.test(A(e))}function M(e){let t=A(e);return t.length>=4&&t.startsWith(`09`)?k[t.slice(2,4)]??null:null}function N(e){let t=A(e).slice(0,11);return[t.slice(0,4),t.slice(4,7),t.slice(7,11)].filter(Boolean).join(` `)}function P(e){let t=u(e);return/^(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}$/.test(t)}function F(e){let t=u(e).slice(0,10);return t.length>5?`${t.slice(0,5)}-${t.slice(5)}`:t}const I={11:`مازندران`,13:`گیلان`,17:`گلستان`,21:`تهران`,23:`سمنان`,24:`زنجان`,25:`قم`,26:`البرز`,28:`قزوین`,31:`اصفهان`,34:`کرمان`,35:`یزد`,38:`چهارمحال و بختیاری`,41:`آذربایجان شرقی`,44:`آذربایجان غربی`,45:`اردبیل`,51:`خراسان رضوی`,54:`سیستان و بلوچستان`,56:`خراسان جنوبی`,58:`خراسان شمالی`,61:`خوزستان`,66:`لرستان`,71:`فارس`,74:`کهگیلویه و بویراحمد`,76:`هرمزگان`,77:`بوشهر`,81:`همدان`,83:`کرمانشاه`,84:`ایلام`,86:`مرکزی`,87:`کردستان`};function L(e){let t=u(e);return t.startsWith(`0098`)?t=`0`+t.slice(4):t.startsWith(`98`)&&t.length===12?t=`0`+t.slice(2):/^[1-8]/.test(t)&&t.length===10&&(t=`0`+t),t}function R(e){let t=L(e);return t.length>=3&&t[0]===`0`?I[t.slice(1,3)]??null:null}function z(e){let t=L(e);return/^0\d{2}[2-9]\d{7}$/.test(t)&&R(t)!==null}function B(e){let t=L(e).slice(0,11);return[t.slice(0,3),t.slice(3,7),t.slice(7,11)].filter(Boolean).join(` `)}const V=[29,27,23,19,17,29,27,23,19,17];function H(e){let t=u(e);if(!/^\d{11}$/.test(t)||/^0+$/.test(t.slice(3,9)))return!1;let n=[...t].map(Number),r=n[9]+2,i=0;for(let e=0;e<10;e++)i+=(n[e]+r)*V[e];let a=i%11;return(a===10?0:a)===n[10]}const U=e=>l(e);function W(e,t){if(t===0)return e.search(/[0-9۰-۹]/)===-1?e.length:e.search(/[0-9۰-۹]/);let n=0;for(let r=0;r<e.length;r++)if(/[0-9۰-۹]/.test(e[r])&&++n===t)return r+1;return e.length}var G=class extends s{constructor(){super(...arguments),this.raw=``,this.touched=!1,this.valueSet=!1,this.rendered=!1,this.key=n(`kashi-in`),this.logoSlug=null}connectedCallback(){if(!this.rendered&&!this.valueSet&&(this.raw=this.clean(this.getAttribute(`value`)??``)),Object.prototype.hasOwnProperty.call(this,`value`)){let e=this.value;delete this.value,this.raw=this.clean(String(e??``))}this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?this.setRaw(this.clean(n??``),!1):this.render())}get value(){return this.kind.submit?this.kind.submit(this.raw):this.raw}set value(e){this.valueSet=!0,this.setRaw(this.clean(String(e??``)),!1)}get valid(){return this.isValid()}isValid(){return this.kind.valid(this.raw)}focus(e){this.input?.focus(e)}clean(e){let t=this.kind;return(t.normalize??(e=>e))(u(e)).slice(0,t.maxDigits)}get digits(){let e=this.getAttribute(`digits`);return e===`fa`||e===`latin`?e:this.kind.digits}shown(){let e=this.kind.format(this.raw);return this.digits===`fa`?U(e):e}render(){let e=this.kind,n=this.key,r=this.getAttribute(`aria-label`),i=this.hasAttribute(`label`)?this.getAttribute(`label`):r?null:e.label,a=this.getAttribute(`size`),s=this.hasAttribute(`required`),c=this.hasAttribute(`disabled`),l=this.getAttribute(`placeholder`)??e.placeholder[this.digits],u=`<div class="k-input${a===`sm`||a===`lg`?` k-input--${a}`:``}" data-size="${a??`md`}"${c?` data-state="disabled"`:``}><input id="${n}" class="k-input__control" type="${e.type??`text`}" inputmode="${e.inputMode??`numeric`}" autocomplete="${e.autocomplete??`off`}" dir="ltr" spellcheck="false" placeholder="${o(l)}"${s?` required`:``}${c?` disabled`:``}${this.hasAttribute(`readonly`)?` readonly`:``}${!i&&r?` aria-label="${o(r)}"`:``}></div>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:n,label:i,required:s,control:u})),this.input=this.querySelector(`input.k-input__control`),this.input.addEventListener(`input`,()=>this.onInput()),this.input.addEventListener(`blur`,()=>{this.touched=!0,this.paint()}),this.rendered=!0,this.paint()}onInput(){let e=this.input,t=e.value.slice(0,e.selectionStart??e.value.length),n=this.clean(e.value),r=Math.min(u(t).length,n.length);if(this.setRaw(n,!0),e.ownerDocument.activeElement===e){let t=W(e.value,r);e.setSelectionRange(t,t)}}setRaw(e,t){let n=e!==this.raw;this.raw=e,this.rendered&&(this.paint(),t&&n&&a(this,`kashi-change`,{value:this.value,valid:this.isValid(),...this.kind.detail?.(this.raw)}))}invalidText(e){return this.raw.length>0&&(e||this.raw.length===this.kind.maxDigits)&&!this.isValid()?this.getAttribute(`invalid-message`)??this.kind.invalidMessage:null}hintText(){return this.getAttribute(`hint`)}paint(){let e=this.input,t=this.shown();e.value!==t&&(e.value=t);let n=e.parentElement;n.querySelector(`:scope > .k-input__addon`)?.remove();let a=r(this,`show-meta`,!0)?this.kind.meta?.(this.raw,this):null,s=`${this.key}-meta`;if(a){let e=document.createElement(`span`);e.className=`k-input__addon`,e.innerHTML=a.bank?`<span class="k-bank" id="${s}">${o(a.text)}</span>`:`<span class="k-input__meta" id="${s}">${o(a.text)}</span>`,n.append(e),a.bank&&r(this,`bank-logo`,!0)&&this.loadLogo(a.bank,e.firstElementChild)}let l=this.getAttribute(`error`)||this.invalidText(this.touched);e.setCustomValidity(this.raw&&!this.isValid()?this.invalidText(!0)??``:``),i(this.querySelector(`:scope > .k-field`),e,this.key,l,this.hintText(),a?s:null),c(this,this.getAttribute(`name`),this.raw?this.value:``)}loadLogo(e,t){this.logoSlug=e.slug,import(`./dist-D670Gw0K.js`).then(n=>{let r=n.bankLogoDataUri(e.slug);if(!r||this.logoSlug!==e.slug||!t.isConnected)return;let i=document.createElement(`img`);i.className=`k-bank__logo`,i.src=r,i.alt=``,i.width=i.height=24,t.prepend(i)}).catch(()=>{})}};G.observedAttributes=[`label`,`hint`,`error`,`placeholder`,`required`,`disabled`,`readonly`,`digits`,`invalid-message`,`name`,`value`,`size`,`aria-label`,`show-meta`,`bank-logo`];var K=class extends G{constructor(){super(...arguments),this.kind={label:`کد ملی`,maxDigits:10,format:e=>e,valid:e=>m(e),invalidMessage:`کد ملی معتبر نیست.`,placeholder:{fa:`۰۰۰۰۰۰۰۰۰۰`,latin:`0000000000`},digits:`fa`}}},q=class extends G{constructor(){super(...arguments),this.kind={label:`شناسهٔ ملی شرکت`,maxDigits:11,format:e=>e,valid:e=>H(e),invalidMessage:`شناسهٔ ملی معتبر نیست.`,placeholder:{fa:`۰۰۰۰۰۰۰۰۰۰۰`,latin:`00000000000`},digits:`fa`}}},J=class extends G{constructor(){super(...arguments),this.kind={label:`شمارهٔ موبایل`,maxDigits:11,normalize:A,format:N,valid:e=>j(e),invalidMessage:`شماره موبایل معتبر نیست.`,placeholder:{fa:`۰۹۱۲ ۳۴۵ ۶۷۸۹`,latin:`0912 345 6789`},digits:`fa`,type:`tel`,inputMode:`tel`,autocomplete:`tel-national`,meta:e=>{let t=M(e);return t?{text:t.name}:null},detail:e=>({operator:M(e)?.name??null})}}},Y=class extends G{constructor(){super(...arguments),this.kind={label:`تلفن ثابت`,maxDigits:11,normalize:L,format:B,valid:e=>z(e),invalidMessage:`شمارهٔ تلفن ثابت معتبر نیست.`,placeholder:{fa:`۰۲۱ ۸۸۷۷ ۶۶۵۵`,latin:`021 8877 6655`},digits:`fa`,type:`tel`,inputMode:`tel`,autocomplete:`tel-national`,meta:e=>{let t=R(e);return t?{text:t}:null},detail:e=>({province:R(e)})}}},X=class extends G{constructor(){super(...arguments),this.kind={label:`شمارهٔ کارت`,maxDigits:16,format:y,valid:e=>_(e),invalidMessage:`شماره کارت معتبر نیست.`,placeholder:{fa:`۰۰۰۰ ۰۰۰۰ ۰۰۰۰ ۰۰۰۰`,latin:`0000 0000 0000 0000`},digits:`fa`,autocomplete:`cc-number`,meta:e=>{let t=v(e);return t?{text:t.name,bank:t}:null},detail:e=>({bank:v(e)?.name??null})}}},Z=class extends G{constructor(){super(...arguments),this.kind={label:`شمارهٔ شبا`,maxDigits:24,format:e=>T(e),valid:e=>C(e),invalidMessage:`شماره شبا معتبر نیست.`,placeholder:{fa:`IR00 0000 0000 0000 0000 0000 00`,latin:`IR00 0000 0000 0000 0000 0000 00`},digits:`latin`,meta:e=>{let t=w(e);return t?{text:t.name,bank:t}:null},submit:e=>e?`IR${e}`:``,detail:e=>({bank:w(e)?.name??null})}}clean(e){return super.clean(e.replace(/^\s*IR/i,``))}},Q=class extends G{constructor(){super(...arguments),this.kind={label:`کد پستی`,maxDigits:10,format:F,valid:e=>P(e),invalidMessage:`کد پستی معتبر نیست.`,placeholder:{fa:`۱۲۳۴۵-۶۷۸۹۰`,latin:`12345-67890`},digits:`fa`,autocomplete:`postal-code`}}},$=class extends G{constructor(){super(...arguments),this.kind={label:`مبلغ`,maxDigits:15,normalize:e=>e.replace(/^0+(?=\d)/,``),format:e=>e?f(e,{digits:`latin`}).replace(/,/g,`٬`):``,valid:()=>this.inRange(),invalidMessage:``,placeholder:{fa:`۰`,latin:`0`},digits:`fa`,meta:(e,t)=>{let n=t.getAttribute(`unit`)??`تومان`;return n?{text:n}:null},detail:e=>({value:e?Number(e):null})}}get valueAsNumber(){return this.raw?Number(this.raw):null}num(e){let t=this.getAttribute(e);return t===null||t===``||Number.isNaN(Number(t))?void 0:Number(t)}inRange(){if(!this.raw)return!0;let e=Number(this.raw),t=this.num(`min`),n=this.num(`max`);return!(t!==void 0&&e<t||n!==void 0&&e>n)}invalidText(e){if(!e||this.inRange())return null;let t=this.getAttribute(`invalid-message`);if(t)return t;let n=this.num(`min`),r=this.num(`max`),i=e=>U(f(e));return`مبلغ باید ${n===void 0?``:`حداقل ${i(n)}`}${n!==void 0&&r!==void 0?` و `:``}${r===void 0?``:`حداکثر ${i(r)}`} باشد.`}hintText(){if(this.raw&&r(this,`show-words`,!0)){let e=this.getAttribute(`unit`)??`تومان`;return`${p(Number(this.raw))}${e?` ${e}`:``}`}return this.getAttribute(`hint`)}};$.observedAttributes=[...G.observedAttributes,`unit`,`min`,`max`,`show-words`],e(`kashi-national-id`,K,`block`),e(`kashi-legal-id`,q,`block`),e(`kashi-mobile`,J,`block`),e(`kashi-landline`,Y,`block`),e(`kashi-card-number`,X,`block`),e(`kashi-iban`,Z,`block`),e(`kashi-postal-code`,Q,`block`),e(`kashi-price`,$,`block`);export{X as KashiCardNumber,G as KashiDigitsInput,Z as KashiIban,Y as KashiLandline,q as KashiLegalId,J as KashiMobile,K as KashiNationalId,Q as KashiPostalCode,$ as KashiPrice};
@@ -1 +0,0 @@
1
- import{i as e,r as t}from"./digits-DE1YGT94.js";const n=[`فروردین`,`اردیبهشت`,`خرداد`,`تیر`,`مرداد`,`شهریور`,`مهر`,`آبان`,`آذر`,`دی`,`بهمن`,`اسفند`],r=[`شنبه`,`یکشنبه`,`دوشنبه`,`سه‌شنبه`,`چهارشنبه`,`پنجشنبه`,`جمعه`],i=[`ش`,`ی`,`د`,`س`,`چ`,`پ`,`ج`],a=[-61,9,38,199,426,686,756,818,1111,1181,1210,1635,2060,2097,2192,2262,2324,2394,2456,3178],o=(e,t)=>~~(e/t),s=(e,t)=>e-~~(e/t)*t;function c(e){let t=e+621,n=-14,r=a[0],i=0;if(e<r||e>=a[a.length-1])throw RangeError(`سال شمسی خارج از محدوده: ${e}`);for(let t=1;t<a.length;t++){let c=a[t];if(i=c-r,e<c)break;n+=o(i,33)*8+o(s(i,33),4),r=c}let c=e-r;n+=o(c,33)*8+o(s(c,33)+3,4),s(i,33)===4&&i-c===4&&(n+=1);let l=o(t,4)-o((o(t,100)+1)*3,4)-150,u=20+n-l;i-c<6&&(c=c-i+o(i+4,33)*33);let d=s(s(c+1,33)-1,4);return d===-1&&(d=4),{leap:d,gy:t,march:u}}function l(e,t,n){let r=o((e+o(t-8,6)+100100)*1461,4)+o(153*s(t+9,12)+2,5)+n-34840408;return r=r-o(o(e+100100+o(t-8,6),100)*3,4)+752,r}function u(e){let t=4*e+139361631;t=t+o(o(4*e+183187720,146097)*3,4)*4-3908;let n=o(s(t,1461),4)*5+308,r=o(s(n,153),5)+1,i=s(o(n,153),12)+1;return{gy:o(t,1461)-100100+o(8-i,6),gm:i,gd:r}}function d(e,t,n){let r=c(e);return l(r.gy,3,r.march)+(t-1)*31-o(t,7)*(t-7)+n-1}function f(e){let{gy:t}=u(e),n=t-621,r=c(n),i=e-l(t,3,r.march);if(i>=0){if(i<=185)return{jy:n,jm:1+o(i,31),jd:s(i,31)+1};i-=186}else--n,i+=179,r.leap===1&&(i+=1);return{jy:n,jm:7+o(i,30),jd:s(i,30)+1}}function p(e){return c(e).leap===0}function m(e,t){return t<=6?31:t<=11||p(e)?30:29}function h(e,t,n){return Number.isInteger(e)&&Number.isInteger(t)&&Number.isInteger(n)&&e>=-61&&e<=3177&&t>=1&&t<=12&&n>=1&&n<=m(e,t)}function g(e){return f(l(e.getFullYear(),e.getMonth()+1,e.getDate()))}function _(e,t,n){let{gy:r,gm:i,gd:a}=u(d(e,t,n));return new Date(r,i-1,a)}function v(e){return(e.getDay()+1)%7}function y(t,{style:i=`numeric`,digits:a=`fa`}={}){let{jy:o,jm:s,jd:c}=g(t),l=e=>String(e).padStart(2,`0`),u;return i===`numeric`?u=`${o}/${l(s)}/${l(c)}`:(u=`${c} ${n[s-1]} ${o}`,i===`full`&&(u=`${r[v(t)]} ${u}`)),a===`fa`?e(u):u}function b(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function x(e){let t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;let n=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return n.getMonth()===Number(t[2])-1?n:null}function S(e){let n=t(e.trim()).match(/^(\d{4})\s*[/\-.\s]\s*(\d{1,2})\s*[/\-.\s]\s*(\d{1,2})$/);if(!n)return null;let[r,i,a]=[Number(n[1]),Number(n[2]),Number(n[3])];return h(r,i,a)?_(r,i,a):null}export{x as a,S as c,g as d,y as i,_ as l,r as n,m as o,i as r,v as s,n as t,b as u};
@@ -1,12 +0,0 @@
1
- import{a as e,d as t,i as n,o as r,r as i,s as a,t as o}from"./base-Cmq7zeIG.js";import{t as s}from"./digits-DE1YGT94.js";import{n as c,r as l,t as u}from"./combobox-ZGrZ5okg.js";import"./inputs-BjOddAM7.js";const d=`0 0 1000 907`,f={"آذربایجان شرقی":{x:123,y:128,d:`M163 199l1-7l10-12l11-8l17-2l20 2l7-4l-13-8l-2-7l-12-7l-1-7l2-10l-8-10l-5-17l-15 0l-10-6l10-13l7 0l2-16l-6-22l-13 8l-12 19l-8-2l-10 4l-5-5l5-9l5 1l12-6l6-7l-4-9l-8 1l-15 18l-10-1l-13 4l-33-8l-6 6l-3 10l0 14l-9 9l-3 10l5 7l4 34l4 7l2 15l16 10l12 1l8 8l11 7l5-7l13-5l8 5l2 13l7 3z`},"آذربایجان غربی":{x:39,y:59,d:`M75 53l-8-13l-9-3l-6-11l-5-4l-4-11l-17-11l-5 5l-3 17l-7 4l-11-1l1 13l6 4l-3 10l7 10l-1 8l2 7l0 15l7 1l-5 18l-6 9l0 6l8 1l4 6l8 3l-2 18l13 10l-3 12l7 5l-3 16l9 3l2 6l-3 7l7 9l6 0l6 20l1 7l7-2l12-15l8-3l4-8l4-2l13 2l27-3l6 6l11 2l10-11l-7-16l-12 1l-7-3l-2-13l-8-5l-13 5l-5 7l-11-7l-8-8l-12-1l-16-10l-2-15l-4-7l-4-34l-5-7l3-10l9-9l0-14l3-10z`},اردبیل:{x:202,y:87,d:`M229 168l7 5l3-4l12 1l-1-10l-8-8l-8-13l-5-13l3-13l12-14l-7-7l-9-12l-7-2l-5-9l-10-6l2-8l10-2l3-5l-8-9l-1-8l11-5l-15-18l-11-3l-29 21l-10 5l-4 8l4 9l-6 7l-12 6l-5-1l-5 9l5 5l10-4l8 2l12-19l13-8l6 22l-2 16l-7 0l-10 13l10 6l15 0l5 17l8 10l-2 10l1 7l12 7l2 7z`},اصفهان:{x:414,y:418,d:`M296 467l10-6l9-1l6 4l10 0l6-4l15-2l6 10l1 10l15 12l4 11l-4 7l-1 18l5 16l0 7l3 11l14 12l5-1l0-11l7-21l-9-7l6-6l17-11l4 10l16 2l18-5l-3-9l5-25l-2-19l15-11l9-2l16 4l55-19l9-6l6-19l3-4l12-5l6-12l-1-42l-4-3l-125 4l-25-8l-23 0l-10-6l-17 5l-15 1l-8 6l-2 12l3 3l-7 19l-12 5l-22 6l-13 8l-1 9l-7 14l-8 2l-4 11l-8 7l2 6l13 3z`},البرز:{x:353,y:249,d:`M351 227l-12-1l-8 2l11 9l-5 13l-12 7l-3 7l2 5l16 1l11 3l13-13l4-11l12-3l0-6l-3-4l-14-6z`},ایلام:{x:143,y:429,d:`M87 397l8 0l8 16l6 7l1 6l-4 13l9 0l11 4l12 8l21 18l12 1l3 7l9 14l9-7l-1-7l9-16l-10-20l-13-15l-11-5l-22-20l7-9l18-5l6-6l-2-9l-11 1l1 12l-24 1l-13-4l-7-5l-16-5l-11 1z`},بوشهر:{x:387,y:698,d:`M312 606l4 5l1 11l5 5l8 12l13 12l0 19l10 0l4 4l-5 9l3 5l9 6l1 10l4 10l6 7l0 7l6 10l11 8l7 1l15 0l12 9l9 2l8 6l2 11l4 2l2-3l13-1l-10-7l-14-15l-7-16l-9-8l-9-27l-24-44l-8-6l-14-19l-21-5l-6-9l-1-7l-9-4l-11-2z`},تهران:{x:384,y:274,d:`M380 240l0 6l-12 3l-4 11l-13 13l4 10l-5 14l15 1l13 3l29 18l5-16l-8-12l2-15l6 1l13 8l24 5l11-5l8-7l2-6l-3-14l-11-2l-22-7l-11 12l-12-1l-10-13l-15-4z`},"چهارمحال و بختیاری":{x:346,y:499,d:`M323 529l12 6l5 0l19 17l8 1l11-4l0-7l-5-16l1-18l4-7l-4-11l-15-12l-1-10l-6-10l-15 2l-6 4l-10 0l-6-4l-9 1l-10 6l1 5l9 17l6 4l6 14l8 9l1 6z`},"خراسان جنوبی":{x:802,y:473,d:`M734 452l-3 11l7 13l-3 13l-7 9l-11 22l59 27l8 5l21 30l40-12l18 10l12 15l10-4l-3-12l1-20l6-17l0-11l-16-2l-3-33l3-14l-13-45l0-10l13-16l3-9l-12 0l-7-5l0-13l-2-15l-36 1l-7-3l-8-10l-10 4l-16 3l-2 2l-14-2l-3 22l-2 6l4 8l8 6l-7 11l-16 11l-7 11z`},"خراسان رضوی":{x:784,y:272,d:`M657 206l6 6l-4 10l0 19l4 12l15 14l0 4l-13 22l-11 4l-13 10l-8 10l21-5l21-10l13-4l6 2l15 12l1 8l-5 5l-21 14l-3 6l-7 20l0 11l3 18l2 4l11 1l13-3l4 7l4 26l3 7l14 8l6 8l5-13l7-11l16-11l7-11l-8-6l-4-8l2-6l3-22l14 2l2-2l16-3l10-4l8 10l7 3l36-1l2-7l7-7l12-1l-9-14l12-6l6-11l3-16l0-13l9-18l-3-7l1-14l-4-8l3-7l-4-19l2-11l-6-4l-38 1l-17-26l-27-10l-7-9l-1-11l-7-2l-9-6l-9-4l-8 2l-10-3l-8 4l-8-3l-2-7l-23-8l-8 6l0 9l24 1l7 11l-1 9l-7 21l11 9l-4 5l1 9l-5 3l-15-2l-34-20l-9 0l-12 10z`},"خراسان شمالی":{x:674,y:152,d:`M712 124l-20-4l0-8l-7-12l-9 5l-16-5l-8 2l-8-1l-14 11l0 21l7 5l-2 8l-15 6l-5 8l12 16l-2 15l13 14l11 3l8-2l3-11l12-10l9 0l34 20l15 2l5-3l-1-9l4-5l-11-9l7-21l1-9l-7-11l-24-1l0-9z`},خوزستان:{x:253,y:524,d:`M183 491l13 21l-8 22l0 25l18 1l0 31l7 2l13 12l3 14l8 2l1-5l13 1l3-3l-1-10l-3-6l6-10l10 0l-9 12l13 9l12 0l6 8l17-11l7 0l9-2l11 2l-4-19l2-10l-8-5l-6-7l-9 2l0-9l-2-9l2-7l6-3l10-10l4-7l-1-6l-8-9l-6-14l-6-4l-9-17l-1-5l0-10l-13-3l-2-6l-11 0l-12-8l-12-1l-11-5l-22 2l-3 2l-10 23l-9 16l1 7z`},زنجان:{x:228,y:211,d:`M170 215l2 1l26 6l4 7l1 15l-3 11l14 8l3 4l4 5l11 0l9 4l6-5l-11-12l10-5l13-3l9-6l9-3l0-8l-4-11l-8-3l-6-11l1-9l10-5l-3-11l-8-9l-8-5l-12-1l-3 4l-7-5l-7 4l-20-2l-17 2l-11 8l-10 12l-1 7z`},سمنان:{x:554,y:286,d:`M615 160l-12 17l-10 22l-18-3l-14 6l-12 11l-7 3l-18 0l-10 4l-6 8l-2 9l-10 12l-6 4l-8 1l-15 4l3 14l-2 6l-8 7l-11 5l-24-5l-13-8l-6-1l-2 15l8 12l-5 16l1 8l-6 13l10 6l23 0l25 8l125-4l4 3l19-1l6-3l19-32l8-10l13-10l11-4l13-22l0-4l-15-14l-4-12l0-19l4-10l-6-6l-8 2l-11-3l-13-14l2-15z`},"سیستان و بلوچستان":{x:863,y:770,d:`M805 582l-11 50l0 5l5 8l2 12l-2 11l-4 7l0 13l2 7l-16 11l-9 3l8 10l-7 13l-1 27l-6 23l3 21l6 10l-3 7l0 9l3 8l-4 16l-2 4l13 11l9 14l0 4l11-2l4 4l12 0l7 4l9-2l7 2l8 0l3-5l7-2l4 10l21 4l8 5l12 3l4-8l6-5l2-27l6-4l2-19l3-5l20-6l2-9l7-3l9-1l8-4l21 1l2-12l4-3l-2-10l1-9l-4-3l-13 3l-6-1l-2-7l3-8l-2-20l-3-10l2-12l-10-1l-11-12l-16-3l-8-4l-13-12l-4-7l-5-13l-7-10l-3-9l-23-27l49-58l2-13l-4-16l-5-5l-27-4l0 11l-6 17l-1 20l3 12l-10 4l-12-15l-18-10z`},فارس:{x:473,y:666,d:`M464 773l5 7l12 1l8 5l5-1l16 2l5-2l3-13l8-5l27-2l14 2l9-5l4-8l17-6l2-5l-7-8l2-14l0-10l-16-15l1-6l-3-9l-10-26l-17-4l-9-20l-19-11l-3-17l-11-14l-8-16l-12-30l-15-16l-13-5l-18 5l-16-2l-4-10l-17 11l-6 6l9 7l-7 21l0 11l-5 1l0 13l-6 2l-16-7l-5-1l4 16l-1 6l-14 8l-16 1l1 7l6 9l21 5l14 19l8 6l24 44l9 27l9 8l7 16l14 15z`},قزوین:{x:304,y:239,d:`M270 195l-10 5l-1 9l6 11l8 3l4 11l0 8l-9 3l-9 6l-13 3l-10 5l11 12l8-1l8 10l17 3l9 0l4-5l31-9l-2-5l3-7l12-7l5-13l-11-9l8-2l12 1l-1-3l-25-20l-11 1l-15 6l-17-4z`},قم:{x:368,y:323,d:`M407 319l-29-18l-13-3l-15-1l-3 7l-2 13l-28 8l1 7l-6 6l13 9l1 7l6 6l14 1l17 6l-3-3l2-12l8-6l15-1l17-5l6-13z`},کردستان:{x:152,y:265,d:`M75 247l16 13l13-3l9 9l-10 1l-4 13l8 13l12 8l12 17l5 9l14-1l4-8l12-5l1-5l7-1l1-5l11 3l8 9l3 0l13-1l3-8l-1-6l-8-7l-9-18l8 1l14-8l-3-4l-14-8l3-11l-1-15l-4-7l-26-6l-2-1l-10 11l-11-2l-6-6l-27 3l-13-2l-4 2l-4 8l-8 3z`},کرمان:{x:697,y:622,d:`M717 520l-56-24l-6-1l-4 4l-14 10l-28 15l-2 4l-2 24l-9 4l-9 1l-11-1l-30 5l-7 10l-1 7l11 23l-1 19l2 8l-10 3l9 20l17 4l10 26l14 3l7 7l7 2l11-8l9-1l1 33l4 6l10 7l6 1l10-4l10-9l8 3l2 16l6 4l8 11l-2 6l5 10l3 25l21 11l9-5l11 9l-3 3l-4 30l16-1l7 2l5 8l7-2l7 5l4-16l-3-8l0-9l3-7l-6-10l-3-21l6-23l1-27l7-13l-8-10l9-3l16-11l-2-7l0-13l4-7l2-11l-2-12l-5-8l0-5l11-50l-21-30l-8-5z`},کرمانشاه:{x:139,y:357,d:`M107 293l3 6l-9 8l-7 3l-2 8l-8 5l-2 6l3 11l-10-3l-3 14l6 4l-1 11l-6 8l12 20l4 3l5-24l11-1l16 5l7 5l13 4l24-1l-1-12l11-1l1-8l9-3l0-8l6-1l3-4l13-1l0-7l-19-6l11-20l-3 0l-8-9l-11-3l-1 5l-7 1l-1 5l-12 5l-4 8l-14 1l-5-9l-12-17z`},"کهگیلویه و بویراحمد":{x:348,y:570,d:`M332 606l9 4l16-1l14-8l1-6l-4-16l5 1l16 7l6-2l0-13l-14-12l-3-11l-11 4l-8-1l-19-17l-5 0l-12-6l-10 10l-6 3l-2 7l2 9l0 9l9-2l6 7l8 5l-2 10z`},گلستان:{x:577,y:168,d:`M630 112l-9 1l-14-3l-15 3l-16 8l-14 12l-3 8l-1 8l-8 6l-23 7l-14-1l6 25l-1 9l-16 0l3 6l11 6l8 9l18 0l7-3l12-11l14-6l18 3l10-22l12-17l5-8l15-6l2-8l-7-5z`},گیلان:{x:295,y:181,d:`M251 170l8 5l8 9l3 11l12 12l17 4l15-6l11-1l7-12l7-8l-13-11l-9-16l-11-4l-26-2l-16-9l-6-7l-6-23l-1-23l-14 3l7 7l-12 14l-3 13l5 13l8 13l8 8z`},لرستان:{x:221,y:403,d:`M173 372l2 9l-6 6l-18 5l-7 9l22 20l11 5l13 15l10 20l10-23l3-2l22-2l11 5l12 1l12 8l11 0l8-7l4-11l8-2l7-14l1-9l-9-10l-4 6l-9-8l1-6l-7-6l-7 4l-7 9l-14-4l3-15l-15-6l-10 3l-15-2l-27-18l-6 1l0 8l-9 3z`},مازندران:{x:467,y:227,d:`M325 204l25 20l1 3l12 3l14 6l3 4l6 3l15 4l10 13l12 1l11-12l22 7l11 2l15-4l8-1l6-4l10-12l2-9l6-8l10-4l-8-9l-11-6l-3-6l-2-4l-9-1l-20 5l-17 5l-45 10l-43-10l-27-16l-7 8z`},مرکزی:{x:294,y:357,d:`M280 283l2 8l-8 0l4 11l-7 7l11 4l5 13l-8-2l-1-7l-14 0l-2 10l0 9l-7 2l1 11l4 7l2 11l-6 8l-3 15l14 4l7-9l7-4l7 6l-1 6l9 8l4-6l9 10l13-8l22-6l12-5l7-19l-17-6l-14-1l-6-6l-1-7l-13-9l6-6l-1-7l28-8l2-13l3-7l5-14l-4-10l-11-3l-16-1l-31 9l-4 5z`},هرمزگان:{x:651,y:758,d:`M771 853l-7-5l-7 2l-5-8l-7-2l-16 1l4-30l3-3l-11-9l-9 5l-21-11l-3-25l-5-10l2-6l-8-11l-6-4l-2-16l-8-3l-10 9l-10 4l-6-1l-10-7l-4-6l-1-33l-9 1l-11 8l-7-2l-7-7l-14-3l3 9l-1 6l16 15l0 10l-2 14l7 8l-2 5l-17 6l-4 8l-9 5l-14-2l-27 2l-8 5l-3 13l-5 2l-16-2l-5 1l-8-5l-12-1l-5-7l-13 1l-2 3l20 13l18 6l4 8l12 8l14-2l17 2l4 6l9 2l3 4l9 1l25-17l6 1l8-2l3-9l4-3l14-1l9-8l12-2l12 3l12 0l8 10l6 21l0 10l3 10l4 6l-3 4l9 18l23 3l1 5l9-3l6 7l24-1l14 1l10 9l6 1l7-2l0-4l-9-14l-13-11zM633 795l-9 2l-13 8l-3 3l-20 8l8 3l10-6l9-3l4 3l7-5z`},همدان:{x:235,y:319,d:`M197 314l-11 20l19 6l0 7l-13 1l-3 4l27 18l15 2l10-3l15 6l6-8l-2-11l-4-7l-1-11l7-2l0-9l2-10l14 0l1 7l8 2l-5-13l-11-4l7-7l-4-11l8 0l-2-8l-17-3l-8-10l-8 1l-6 5l-9-4l-11 0l-4-5l-14 8l-8-1l9 18l8 7l1 6l-3 8z`},یزد:{x:615,y:452,d:`M633 317l-19 32l-6 3l-19 1l1 42l-6 12l-12 5l-3 4l-6 19l-9 6l-55 19l-16-4l-9 2l-15 11l2 19l-5 25l3 9l13 5l15 16l12 30l8 16l11 14l3 17l19 11l10-3l-2-8l1-19l-11-23l1-7l7-10l30-5l11 1l9-1l9-4l2-24l2-4l28-15l14-10l4-4l6 1l56 24l11-22l7-9l3-13l-7-13l3-11l-6-8l-14-8l-3-7l-4-26l-4-7l-13 3l-11-1l-2-4l-3-18l0-11l7-20l3-6l21-14l5-5l-1-8l-15-12l-6-2l-13 4l-21 10z`}},p=l.map(e=>e.name),m=Object.fromEntries(l.map(e=>[e.name,e.capital])),[,,h,g]=d.split(` `).map(Number);var _=class extends o{constructor(){super(...arguments),this.values=null,this.selected=[],this.active=0,this.rendered=!1,this.valueSet=!1,this.key=t(`kashi-map`)}connectedCallback(){this.rendered||(this.valueSet||(this.selected=(this.getAttribute(`value`)??``).split(/[,،]/).map(e=>e.trim()).filter(e=>p.includes(e))),this.values===null&&(this.values=this.parseData(this.getAttribute(`data`)))),this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`data`&&(this.values=this.parseData(n)),e===`value`?this.value=n??``:this.render())}parseData(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}get data(){return this.values}set data(e){this.values=e,this.rendered&&this.render()}get value(){return this.selected.join(`,`)}set value(e){this.valueSet=!0,this.selected=String(e??``).split(/[,،]/).map(e=>e.trim()).filter(e=>p.includes(e)),this.multiple||(this.selected=this.selected.slice(0,1)),this.rendered&&this.paint()}get selectedProvinces(){return[...this.selected]}get multiple(){return n(this,`multiple`)}get selectable(){return this.multiple||n(this,`selectable`)||this.hasAttribute(`value`)||this.hasAttribute(`name`)}fmt(e){return s(e)}level(e){let t=this.values,n=t?.[e];if(typeof n!=`number`||!t)return;let r=this.steps,i=p.map(e=>t[e]).filter(e=>typeof e==`number`),a=Math.min(...i),o=Math.max(...i);if(o===a)return r;if(this.getAttribute(`scale`)!==`linear`){let e=[...i].sort((e,t)=>e-t);return 1+Math.round(e.indexOf(n)*(r-1)/(e.length-1))}return Math.min(r,1+Math.floor((n-a)/(o-a)*r))}get steps(){return Number(this.getAttribute(`steps`))||5}shade(e){return`${Math.round(12+88*e/this.steps)}%`}describe(e){let t=this.values?.[e],n=this.getAttribute(`unit`);return typeof t==`number`?`${e}: ${this.fmt(t)}${n?` ${n}`:``}`:e}render(){let e=this.getAttribute(`label`)??`نقشهٔ استان‌های ایران`,t=this.selectable,r=this.multiple,i=this.values,o=this.getAttribute(`unit`),s=p.map((e,n)=>{let i=this.level(e);return`<path d="${f[e].d}" class="k-iran-map__province" data-i="${n}"${i?` data-l="${i}" style="--_p: ${this.shade(i)}"`:``}${t?` role="${r?`checkbox`:`radio`}" aria-label="${a(this.describe(e))}"`:``}></path>`}).join(``),c=i?p.map(e=>i[e]).filter(e=>typeof e==`number`):[],l=(this.hasAttribute(`legend`)?n(this,`legend`):i)&&c.length?`<figcaption class="k-iran-map__legend"><span>${this.fmt(Math.min(...c))}</span><span class="k-iran-map__scale" aria-hidden="true">${Array.from({length:this.steps},(e,t)=>`<i style="--_p: ${this.shade(t+1)}"></i>`).join(``)}</span><span>${this.fmt(Math.max(...c))}${o?` ${a(o)}`:``}</span></figcaption>`:``,u=i?`<table class="k-sr-only"><caption>${a(e)}</caption><tbody>${p.filter(e=>typeof i[e]==`number`).sort((e,t)=>i[t]-i[e]).map(e=>`<tr><th scope="row">${a(e)}</th><td>${this.fmt(i[e])}${o?` ${a(o)}`:``}</td></tr>`).join(``)}</tbody></table>`:``;this.innerHTML=`<figure class="k-iran-map${t?` k-iran-map--selectable`:``}"><div class="k-iran-map__canvas" style="block-size: auto; aspect-ratio: ${h} / ${g}"><svg viewBox="${d}" class="k-iran-map__svg" role="${t?r?`group`:`radiogroup`:`img`}" aria-label="${a(t?e:`${e}${i?`؛ جدول داده در ادامه`:``}`)}">${s}</svg><div class="k-chart__tip" aria-hidden="true" style="display: none"></div></div>${l}${u}</figure>`;let m=this.querySelector(`svg`),_=this.querySelector(`figure`);m.addEventListener(`pointerover`,e=>{let t=e.target.getAttribute?.(`data-i`);t!=null&&this.tip(Number(t))}),_.addEventListener(`pointerleave`,()=>this.tip(null)),t&&(m.addEventListener(`click`,e=>{let t=e.target.getAttribute?.(`data-i`);t!=null&&(this.active=Number(t),this.toggle(p[this.active]))}),m.addEventListener(`keydown`,e=>this.onKey(e)),m.addEventListener(`focusin`,e=>{let t=e.target.getAttribute?.(`data-i`);t!=null&&(this.active=Number(t),this.tip(this.active))}),m.addEventListener(`focusout`,()=>this.tip(null))),this.rendered=!0,this.paint()}paint(){let e=this.selectable,t=p.findIndex(e=>this.selected.includes(e)),n=this.contains(document.activeElement)||t<0?this.active:t;this.querySelectorAll(`.k-iran-map__province`).forEach((t,r)=>{let i=this.selected.includes(p[r]);t.toggleAttribute(`data-selected`,i),e&&(t.setAttribute(`aria-checked`,String(i)),t.setAttribute(`tabindex`,r===n?`0`:`-1`))});let r=this.getAttribute(`name`);if(this.querySelectorAll(`:scope > input[type=hidden]`).forEach(e=>e.remove()),r)for(let e of this.multiple?this.selected:[this.selected[0]??``]){let t=document.createElement(`input`);t.type=`hidden`,t.name=r,t.value=e,this.append(t)}}toggle(e){this.selected=this.multiple?this.selected.includes(e)?this.selected.filter(t=>t!==e):[...this.selected,e]:this.selected[0]===e?[]:[e],this.paint(),r(this,`kashi-change`,{value:this.multiple?[...this.selected]:this.selected[0]??null})}onKey(e){let t=this.active,n={ArrowLeft:1,ArrowDown:1,ArrowRight:-1,ArrowUp:-1}[e.key],r=t;if(n)r=(t+n+p.length)%p.length;else if(e.key===`Home`)r=0;else if(e.key===`End`)r=p.length-1;else if(e.key===`Enter`||e.key===` `){e.preventDefault(),this.toggle(p[t]);return}else return;e.preventDefault(),this.active=r,this.paint(),this.querySelector(`[data-i="${r}"]`)?.focus()}tip(e){let t=this.querySelector(`.k-chart__tip`);if(!t)return;if(this.querySelector(`.k-iran-map__province[data-active]`)?.removeAttribute(`data-active`),e===null){t.style.display=`none`;return}let n=p[e];this.querySelector(`[data-i="${e}"]`)?.setAttribute(`data-active`,``);let r=f[n],i=this.querySelector(`figure`).clientWidth||h,o=this.values?.[n],s=this.getAttribute(`unit`),c=typeof o==`number`?`${this.fmt(o)}${s?` ${s}`:``}`:`مرکز: ${m[n]}`;t.innerHTML=`<span class="k-chart__tip-title">${a(n)}</span><span class="k-chart__tip-row"><strong>${a(c)}</strong></span>`,t.style.left=`${Math.min(Math.max(r.x/h*i,80),i-80)}px`,t.style.top=`${Math.max(64,r.y/g*(g/h*i)-6)}px`,t.style.display=``}};_.observedAttributes=[`data`,`value`,`label`,`unit`,`steps`,`scale`,`legend`,`selectable`,`multiple`,`name`];const v={province:`استان`,city:`شهر`,street:`نشانی`,plaque:`پلاک`,unit:`واحد`,postalCode:`کد پستی`};var y=class extends o{constructor(){super(...arguments),this.address={...u},this.built=!1,this.key=t(`kashi-address`)}connectedCallback(){i(()=>{if(this.isConnected){if(!this.built){let e=Object.prototype.hasOwnProperty.call(this,`value`)?this.value:null;delete this.value;let t=this.getAttribute(`value`),n=e??{};if(!e&&t)try{n=JSON.parse(t)}catch{}this.address={...u,...n}}this.render()}})}attributeChangedCallback(e,t,n){this.built&&t!==n&&this.render()}get value(){return{...this.address}}set value(e){this.address={...u,...e},this.built&&this.render()}set errors(e){for(let t of Object.keys(v)){let n=this.querySelector(`[data-field="${t}"]`);n&&(n.matches(`kashi-province-select, kashi-city-select, kashi-postal-code`)?e[t]?n.setAttribute(`error`,e[t]):n.removeAttribute(`error`):this.fieldError(n,e[t]??null))}}label(e){return this.getAttribute(`label-${e===`postalCode`?`postal-code`:e}`)??v[e]}render(){let e=this.address,t=this.getAttribute(`name`),r=e=>t?` name="${a(`${t}[${e}]`)}"`:``,i=n(this,`required`,!0),o=i?` required`:``,s=n(this,`map`),l=this.key,u=i?`<span class="k-label__required" aria-hidden="true">*</span>`:``,d=this.getAttribute(`legend`)??`نشانی`;this.innerHTML=`<fieldset class="k-address${s?` k-address--map`:``}"${this.hasAttribute(`disabled`)?` disabled`:``}>
2
- ${d?`<legend class="k-address__legend">${a(d)}</legend>`:``}
3
- <div class="k-address__fields">
4
- <kashi-province-select class="k-address__province" data-field="province" label="${a(this.label(`province`))}" show-capital="false" placeholder="جستجوی استان"${r(`province`)}${o}></kashi-province-select>
5
- <kashi-city-select class="k-address__city" data-field="city" label="${a(this.label(`city`))}"${r(`city`)}${o}></kashi-city-select>
6
- <div class="k-field k-address__street" data-field="street"><div class="k-field__label-row"><label class="k-label" for="${l}-street">${a(this.label(`street`))}${u}</label></div><div class="k-input k-input--textarea k-input--autoresize"><textarea id="${l}-street" class="k-input__control" rows="2" autocomplete="street-address" placeholder="خیابان، کوچه، نام ساختمان"${r(`street`)}${o}></textarea></div></div>
7
- <div class="k-field k-address__plaque" data-field="plaque"><div class="k-field__label-row"><label class="k-label" for="${l}-plaque">${a(this.label(`plaque`))}${u}</label></div><div class="k-input"><input id="${l}-plaque" class="k-input__control" inputmode="numeric" autocomplete="address-line2"${r(`plaque`)}${o}></div></div>
8
- <div class="k-field k-address__unit" data-field="unit"><div class="k-field__label-row"><label class="k-label" for="${l}-unit">${a(this.label(`unit`))}${i?`<span class="k-label__optional">اختیاری</span>`:``}</label></div><div class="k-input"><input id="${l}-unit" class="k-input__control" inputmode="numeric" autocomplete="address-line3"${r(`unit`)}></div></div>
9
- <kashi-postal-code class="k-address__postal" data-field="postalCode" label="${a(this.label(`postalCode`))}"${r(`postalCode`)}${o}></kashi-postal-code>
10
- </div>
11
- ${s?`<kashi-iran-map class="k-address__map" selectable label="${a(`${this.label(`province`)} روی نقشه`)}"></kashi-iran-map>`:``}
12
- </fieldset>`,this.built=!0;let f=this.querySelector(`kashi-province-select`),p=this.querySelector(`kashi-city-select`),m=this.querySelector(`kashi-postal-code`),h=this.querySelector(`kashi-iran-map`),g=this.querySelector(`textarea`),_=this.querySelector(`#${l}-plaque`),v=this.querySelector(`#${l}-unit`);e.province&&(f.value=e.province),e.province&&p.setAttribute(`province`,e.province),e.city&&(p.value=e.city),m.value=e.postalCode,g.value=e.street,_.value=e.plaque,v.value=e.unit,h&&e.province&&(h.value=e.province);let y=e=>{let t=e&&this.address.city&&c(e).includes(this.address.city);this.address={...this.address,province:e,city:t?this.address.city:null},f.value!==(e??``)&&(f.value=e??``),p.province=e,t||(p.value=``),h&&(h.value=e??``),this.changed()},b=e=>e.stopPropagation();f.addEventListener(`kashi-change`,e=>{b(e),y(e.detail.value||null)}),h?.addEventListener(`kashi-change`,e=>{b(e),y(e.detail.value)}),p.addEventListener(`kashi-change`,e=>{b(e);let{value:t,province:n}=e.detail;this.address={...this.address,city:t||null},n&&!this.address.province?y(n):this.changed()}),m.addEventListener(`kashi-change`,e=>{b(e),this.address={...this.address,postalCode:e.detail.value},this.changed()});for(let[e,t]of[[g,`street`],[_,`plaque`],[v,`unit`]])e.addEventListener(`input`,()=>{this.address={...this.address,[t]:e.value},this.changed()})}changed(){r(this,`kashi-change`,{value:this.value})}fieldError(e,t){e.querySelector(`.k-field__hint-row`)?.remove();let n=e.querySelector(`.k-input__control`);e.toggleAttribute(`data-invalid`,!!t),t?(e.insertAdjacentHTML(`beforeend`,`<div class="k-field__hint-row"><div class="k-field__hints"><p class="k-hint k-hint--error" id="${n.id}-error">${a(t)}</p></div></div>`),n.setAttribute(`aria-invalid`,`true`),n.setAttribute(`aria-describedby`,`${n.id}-error`)):(n.removeAttribute(`aria-invalid`),n.removeAttribute(`aria-describedby`))}};y.observedAttributes=[`legend`,`name`,`map`,`required`,`disabled`],e(`kashi-iran-map`,_,`block`),e(`kashi-address-form`,y,`block`);export{y as KashiAddressForm,_ as KashiIranMap};
@@ -1 +0,0 @@
1
- import{a as e,d as t,i as n,o as r,r as i,s as a,t as o}from"./base-Cmq7zeIG.js";import{i as s}from"./digits-DE1YGT94.js";import{n as c}from"./text-D1U32D6K.js";const l=e=>c(e,{digits:`latin`}).toLowerCase(),u=e=>[...e.querySelectorAll(`[role^="menuitem"]:not([aria-disabled="true"])`)];var d=class extends o{constructor(){super(...arguments),this.list=null,this.dialog=null,this.query=``,this.active=0,this.opener=null,this.key=t(`kashi-cmd`),this.onShortcut=e=>{this.getAttribute(`shortcut`)!==`false`&&(e.ctrlKey||e.metaKey)&&(e.key===`k`||e.key===`K`||e.code===`KeyK`)&&(e.preventDefault(),this.dialog?.open?this.close():this.show())}}connectedCallback(){i(()=>{this.isConnected&&(this.list===null&&(this.list=this.readItems()),this.dialog||this.build(),document.addEventListener(`keydown`,this.onShortcut))})}disconnectedCallback(){document.removeEventListener(`keydown`,this.onShortcut)}get items(){return this.list??[]}set items(e){this.list=[...e],this.dialog?.open&&this.paint()}readItems(){let e=[...this.querySelectorAll(`:scope > a, :scope > button`)].map((e,t)=>({id:e.dataset.value??`${t}`,label:e.textContent?.trim()??``,group:e.dataset.group,description:e.dataset.description,shortcut:e.dataset.shortcut,keywords:e.dataset.keywords?.split(/[,،]\s*/),href:e instanceof HTMLAnchorElement?e.getAttribute(`href`)??void 0:void 0}));return this.querySelectorAll(`:scope > a, :scope > button`).forEach(e=>e.remove()),e}build(){let e=document.createElement(`dialog`);e.className=`k-dialog k-command`;let t=this.getAttribute(`label`)??`پالت فرمان`;e.setAttribute(`aria-label`,t),e.innerHTML=`<div class="k-input"><span class="k-input__addon"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" aria-hidden="true"><circle cx="9" cy="9" r="5.5"/><path d="m13.5 13.5 3 3"/></svg></span><input class="k-input__control" type="text" role="combobox" aria-expanded="true" aria-controls="${this.key}-list" aria-autocomplete="list" aria-label="${a(t)}" placeholder="${a(this.getAttribute(`placeholder`)??`جستجوی دستور یا صفحه…`)}" autocomplete="off"></div><ul id="${this.key}-list" role="listbox" aria-label="${a(t)}" class="k-listbox k-listbox--inline k-command__list"></ul><div class="k-command__footer" aria-hidden="true"><span><kbd class="k-kbd">↑</kbd><kbd class="k-kbd">↓</kbd>حرکت</span><span><kbd class="k-kbd">Enter</kbd>انتخاب</span><span><kbd class="k-kbd">Esc</kbd>بستن</span></div><span class="k-sr-only" aria-live="polite"></span>`,this.append(e),this.dialog=e;let n=e.querySelector(`input`);n.addEventListener(`input`,()=>{this.query=n.value,this.active=0,this.paint()}),n.addEventListener(`keydown`,e=>{let t=this.filtered().length;if(t){if(e.key===`ArrowDown`)this.active=(this.active+1)%t;else if(e.key===`ArrowUp`)this.active=(this.active-1+t)%t;else if(e.key===`Home`)this.active=0;else if(e.key===`End`)this.active=t-1;else if(e.key===`Enter`)return this.run(this.filtered()[this.active]);else return;e.preventDefault(),this.paint()}});let r=e.querySelector(`ul`);r.addEventListener(`pointerdown`,e=>e.preventDefault()),r.addEventListener(`click`,e=>{let t=e.target.closest(`[role="option"]`);t&&this.run(this.filtered()[Number(t.dataset.i)])}),e.addEventListener(`click`,t=>t.target===e&&this.close()),e.addEventListener(`close`,()=>this.opener?.focus?.())}filtered(){let e=l(this.query.trim());return this.items.filter(t=>!e||[t.label,t.description??``,...t.keywords??[]].some(t=>l(t).includes(e)))}show(){this.dialog&&(this.opener=document.activeElement,this.query=``,this.active=0,this.dialog.querySelector(`input`).value=``,this.dialog.showModal?.(),this.paint(),this.dialog.querySelector(`input`).focus())}close(){this.dialog?.open&&this.dialog.close()}run(e){e&&(this.close(),e.href?location.href=e.href:r(this,`kashi-select`,{value:e.id,item:e}))}paint(){let e=this.dialog,t=this.filtered(),n=l(this.query.trim()),r=e=>{let t=n?l(e).indexOf(n):-1;return t<0?a(e):`${a(e.slice(0,t))}<mark>${a(e.slice(t,t+n.length))}</mark>${a(e.slice(t+n.length))}`},i;e.querySelector(`ul`).innerHTML=t.length?t.map((e,t)=>{let n=e.group&&e.group!==i?`<li role="presentation" class="k-listbox__group">${a(e.group)}</li>`:``;return i=e.group,`${n}<li id="${this.key}-list-${t}" data-i="${t}" role="option" aria-selected="${t===this.active}"${t===this.active?` data-active`:``} class="k-option"><span class="k-option__body"><span>${r(e.label)}</span>${e.description?`<span class="k-option__desc">${a(e.description)}</span>`:``}</span>${e.shortcut?`<span class="k-menu__shortcut" aria-hidden="true">${a(e.shortcut)}</span>`:``}</li>`}).join(``):`<li role="presentation" class="k-listbox__empty">دستوری پیدا نشد.</li>`;let o=e.querySelector(`input`);t.length?o.setAttribute(`aria-activedescendant`,`${this.key}-list-${this.active}`):o.removeAttribute(`aria-activedescendant`),e.querySelector(`#${this.key}-list-${this.active}`)?.scrollIntoView?.({block:`nearest`}),e.querySelector(`:scope > .k-sr-only`).textContent=this.query?`${s(t.length)} نتیجه`:``}};d.observedAttributes=[`placeholder`,`label`,`shortcut`];var f=class extends o{constructor(){super(...arguments),this.menu=null,this.returnTo=null,this.key=t(`kashi-ctx`),this.onOutside=e=>{this.menu?.contains(e.target)||this.close(!1)},this.onScroll=()=>this.close(!1)}connectedCallback(){i(()=>this.isConnected&&!this.menu&&this.build())}disconnectedCallback(){document.removeEventListener(`pointerdown`,this.onOutside)}build(){let e=this.querySelector(`:scope > [data-menu]`);this.classList.add(`k-context-area`),this.setAttribute(`aria-haspopup`,`menu`),this.setAttribute(`aria-describedby`,`${this.key}-hint`);let t=document.createElement(`ul`);t.setAttribute(`role`,`menu`),t.setAttribute(`aria-label`,this.getAttribute(`label`)??`گزینه‌ها`),t.className=`k-menu k-menu--context`,t.hidden=!0;for(let n of[...e?.children??[]]){let e=document.createElement(`li`);n.tagName===`HR`?(e.setAttribute(`role`,`separator`),e.className=`k-menu__separator`):n.hasAttribute(`data-label`)?(e.setAttribute(`role`,`presentation`),e.className=`k-menu__label`,e.textContent=n.textContent):(e.setAttribute(`role`,`none`),n.setAttribute(`role`,`menuitem`),n.tabIndex=-1,n.classList.add(`k-menu__item`),n.dataset.tone===`danger`&&n.classList.add(`k-menu__item--danger`),n instanceof HTMLButtonElement&&(n.type=`button`),n.innerHTML=`<span>${n.innerHTML}</span>${n.dataset.shortcut?`<span class="k-menu__shortcut" aria-hidden="true">${a(n.dataset.shortcut)}</span>`:``}`,e.append(n)),t.append(e)}e?.remove(),this.insertAdjacentHTML(`beforeend`,`<span id="${this.key}-hint" class="k-sr-only">برای گزینه‌ها راست‌کلیک کنید یا Shift+F10 را بزنید.</span>`),this.append(t),this.menu=t,this.addEventListener(`contextmenu`,e=>{t.contains(e.target)||(e.preventDefault(),this.openAt(e.clientX,e.clientY))}),this.addEventListener(`keydown`,e=>{if(t.contains(e.target))return this.onMenuKey(e);if(e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`){e.preventDefault();let t=document.activeElement.getBoundingClientRect();this.openAt(t.left+t.width/2,t.top+t.height/2)}}),t.addEventListener(`click`,e=>{let t=e.target.closest(`[role="menuitem"]`);t&&(r(this,`kashi-select`,{value:t.dataset.value??t.textContent?.trim()??``}),this.close(t.tagName!==`A`))})}openAt(e,t){let n=this.menu;this.returnTo=document.activeElement??this,n.hidden=!1;let r=n;r.showPopover&&(n.hasAttribute(`popover`)||n.setAttribute(`popover`,`manual`),n.matches(`:popover-open`)||r.showPopover());let i=n.getBoundingClientRect(),a=getComputedStyle(this).direction===`rtl`,o=a?e-i.width:e;o<8&&(o=a?e:8),o=Math.max(8,Math.min(o,innerWidth-i.width-8));let s=Math.max(8,Math.min(t+i.height>innerHeight-8?t-i.height:t,innerHeight-i.height-8));n.style.setProperty(`--_x`,`${o}px`),n.style.setProperty(`--_y`,`${s}px`),u(n)[0]?.focus({preventScroll:!0}),document.addEventListener(`pointerdown`,this.onOutside),setTimeout(()=>addEventListener(`scroll`,this.onScroll,{passive:!0,once:!0}),150)}close(e=!0){let t=this.menu;if(!t||t.hidden)return;let n=t;t.matches?.(`:popover-open`)&&n.hidePopover?.(),t.hidden=!0,document.removeEventListener(`pointerdown`,this.onOutside),removeEventListener(`scroll`,this.onScroll),e&&this.returnTo?.focus()}onMenuKey(e){let t=u(this.menu),n=t.indexOf(document.activeElement),r=e=>t[(e+t.length)%t.length]?.focus();if(e.key===`ArrowDown`)r(n+1);else if(e.key===`ArrowUp`)r(n-1);else if(e.key===`Home`)r(0);else if(e.key===`End`)r(t.length-1);else if(e.key===`Escape`)this.close();else if(e.key===`Tab`)return this.close(!1);else return;e.preventDefault()}};f.observedAttributes=[`label`];const p=e=>`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-k-mirror=""><path d="${e?`m8 5 5 5-5 5`:`m12 5-5 5 5 5`}"/></svg>`;var m=class extends o{constructor(){super(...arguments),this.track=null,this.index=0,this.io=null,this.key=t(`kashi-carousel`)}connectedCallback(){i(()=>this.isConnected&&!this.track&&this.build())}disconnectedCallback(){this.io?.disconnect()}get perView(){return Math.max(1,Number(this.getAttribute(`per-view`))||1)}get slides(){return[...this.track?.children??[]]}get pages(){return Math.max(1,this.slides.length-this.perView+1)}build(){let e=this.getAttribute(`label`)??`اسلایدر`,t=[...this.children],n=document.createElement(`section`);n.className=`k-carousel`,n.setAttribute(`aria-roledescription`,`اسلایدر`),n.setAttribute(`aria-label`,e),n.style.setProperty(`--k-carousel-per-view`,String(this.perView));let r=document.createElement(`div`);if(r.className=`k-carousel__track`,r.tabIndex=0,r.setAttribute(`aria-live`,`polite`),t.forEach((e,n)=>{let i=document.createElement(`div`);i.className=`k-carousel__slide`,i.setAttribute(`role`,`group`),i.setAttribute(`aria-roledescription`,`اسلاید`),i.setAttribute(`aria-label`,`${s(n+1)} از ${s(t.length)}`),i.id=`${this.key}-s${n}`,i.append(e),r.append(i)}),n.append(r),this.replaceChildren(n),this.track=r,this.pages>1){let t=this.getAttribute(`dots`)!==`false`;n.insertAdjacentHTML(`beforeend`,`<div class="k-carousel__bar">${t?`<ul class="k-carousel__dots" aria-label="اسلایدهای ${a(e)}">${Array.from({length:this.pages},(e,t)=>`<li><button type="button" class="k-carousel__dot" data-go="${t}" aria-label="${s(t+1)} از ${s(this.pages)}" aria-controls="${this.key}-s${t}"></button></li>`).join(``)}</ul>`:`<span></span>`}<div class="k-carousel__nav"><button type="button" class="k-btn k-btn--secondary k-btn--icon k-btn--sm" data-step="-1" aria-label="قبلی">${p(!1)}</button><button type="button" class="k-btn k-btn--secondary k-btn--icon k-btn--sm" data-step="1" aria-label="بعدی">${p(!0)}</button></div></div>`),n.querySelector(`.k-carousel__bar`).addEventListener(`click`,e=>{let t=e.target.closest(`button`);t&&this.go(t.dataset.go===void 0?this.index+Number(t.dataset.step):Number(t.dataset.go))})}r.addEventListener(`keydown`,e=>{let t=getComputedStyle(r).direction===`rtl`,n={ArrowLeft:t?1:-1,ArrowRight:t?-1:1}[e.key];n?(e.preventDefault(),this.go(this.index+n)):e.key===`Home`?this.go(0):e.key===`End`&&this.go(this.pages-1)}),typeof IntersectionObserver<`u`&&(this.io=new IntersectionObserver(e=>{let t=e.filter(e=>e.isIntersecting&&e.intersectionRatio>.6).map(e=>this.slides.indexOf(e.target));t.length&&this.setIndex(Math.min(...t))},{root:r,threshold:[.6,1]}),this.slides.forEach(e=>this.io.observe(e))),this.setIndex(0)}go(e){let t=Math.max(0,Math.min(this.pages-1,e)),n=this.slides[t],r=this.track;if(!n||!r)return;let i=getComputedStyle(r).direction===`rtl`?-(r.getBoundingClientRect().right-n.getBoundingClientRect().right)+r.scrollLeft:n.getBoundingClientRect().left-r.getBoundingClientRect().left+r.scrollLeft;r.scrollTo?.({left:i}),this.setIndex(t)}setIndex(e){let t=e!==this.index;this.index=e,this.querySelectorAll(`.k-carousel__dot`).forEach((t,n)=>t.setAttribute(`aria-current`,String(n===e)));let[n,i]=this.querySelectorAll(`[data-step]`);n&&(n.disabled=e===0),i&&(i.disabled=e>=this.pages-1),t&&r(this,`kashi-change`,{index:e})}};m.observedAttributes=[`label`,`per-view`,`dots`];var h=class extends o{constructor(){super(...arguments),this.nodes=null,this.open=/* @__PURE__ */ new Set,this.sel=null,this.focusId=null,this.built=!1}connectedCallback(){i(()=>{if(this.isConnected){if(this.nodes===null){let e=this.querySelector(`:scope > ul`);this.nodes=e?this.parse(e):[]}if(!this.built){this.sel=this.getAttribute(`selected`);for(let e of(this.getAttribute(`expanded`)??``).split(/[,،]/).map(e=>e.trim()).filter(Boolean))this.open.add(e);this.built=!0}this.render()}})}attributeChangedCallback(e,t,n){this.built&&t!==n&&(e===`selected`&&(this.sel=n),this.render())}get items(){return this.nodes??[]}set items(e){this.nodes=e,this.built&&this.render()}get value(){return this.sel??``}parse(e){return[...e.children].filter(e=>e.tagName===`LI`).map((e,t)=>{let n=e.querySelector(`:scope > ul`),r=[...e.childNodes].filter(e=>e!==n).map(e=>e.textContent).join(``).trim(),i=e;return{id:i.dataset.id??`${r}-${t}`,label:r,meta:i.dataset.meta,disabled:i.hasAttribute(`data-disabled`),children:n?this.parse(n):void 0}})}visible(){let e=[],t=(n,r)=>{for(let i of n)e.push({node:i,parent:r}),i.children?.length&&this.open.has(i.id)&&t(i.children,i.id)};return t(this.items,null),e}render(e=!1){let t=this.visible(),n=this.focusId&&t.some(e=>e.node.id===this.focusId)?this.focusId:this.sel&&t.some(e=>e.node.id===this.sel)?this.sel:t[0]?.node.id,r=(e,t)=>e.map(e=>{let i=!!e.children?.length,o=this.open.has(e.id);return`<li role="treeitem" data-id="${a(e.id)}" class="k-tree__item" aria-level="${t}"${i?` aria-expanded="${o}"`:``} aria-selected="${this.sel===e.id}"${e.disabled?` aria-disabled="true"`:``} tabindex="${n===e.id?0:-1}"><div class="k-tree__row">${i?`<span class="k-tree__toggle" aria-hidden="true"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m8 5 5 5-5 5"/></svg></span>`:`<span class="k-tree__spacer"></span>`}<span class="k-tree__label">${a(e.label)}</span>${e.meta?`<span class="k-tree__meta">${a(e.meta)}</span>`:``}</div>${i&&o?`<ul role="group">${r(e.children,t+1)}</ul>`:``}</li>`}).join(``);this.innerHTML=`<ul role="tree" class="k-tree"${this.getAttribute(`label`)?` aria-label="${a(this.getAttribute(`label`))}"`:``}>${r(this.items,1)}</ul>`;let i=this.querySelector(`ul`);i.addEventListener(`click`,e=>{let t=e.target.closest(`[role="treeitem"]`);if(!t||!e.target.closest(`.k-tree__row`))return;let n=this.find(t.dataset.id);n&&(n.children?.length&&this.toggle(n.id),this.focusId=n.id,this.choose(n))}),i.addEventListener(`keydown`,e=>this.onKey(e)),e&&n&&[...this.querySelectorAll(`[data-id]`)].find(e=>e.dataset.id===n)?.focus()}find(e,t=this.items){for(let n of t){if(n.id===e)return n;let t=n.children&&this.find(e,n.children);if(t)return t}return null}toggle(e,t=!this.open.has(e)){t?this.open.add(e):this.open.delete(e),r(this,`kashi-expand`,{expanded:[...this.open]})}choose(e){e.disabled||(this.sel=e.id,r(this,`kashi-change`,{value:e.id,node:e})),this.render(!0)}onKey(e){let t=this.visible(),n=document.activeElement?.dataset?.id,r=t.findIndex(e=>e.node.id===n),i=t[r];if(!i)return;let a=getComputedStyle(this).direction===`rtl`,o=!!i.node.children?.length,s=this.open.has(i.node.id),c=e=>{this.focusId=e,this.render(!0)};if(e.key===`ArrowDown`)t[r+1]&&c(t[r+1].node.id);else if(e.key===`ArrowUp`)t[r-1]&&c(t[r-1].node.id);else if(e.key===`Home`)c(t[0].node.id);else if(e.key===`End`)c(t[t.length-1].node.id);else if(e.key===(a?`ArrowLeft`:`ArrowRight`))o&&!s?(this.toggle(i.node.id,!0),c(i.node.id)):o&&c(i.node.children[0].id);else if(e.key===(a?`ArrowRight`:`ArrowLeft`))o&&s?(this.toggle(i.node.id,!1),c(i.node.id)):i.parent&&c(i.parent);else if(e.key===`Enter`||e.key===` `)this.focusId=i.node.id,this.choose(i.node);else return;e.preventDefault()}};h.observedAttributes=[`label`,`selected`,`expanded`];var g=class extends o{constructor(){super(...arguments),this.list=null,this.i=0,this.spot=null,this.card=null,this.returnTo=null,this.key=t(`kashi-tour`),this.place=()=>{let e=this.card;if(!e)return;let t=document.querySelector(this.steps[this.i].target)?.getBoundingClientRect()??null;t?(this.spot||(this.spot=document.createElement(`div`),this.spot.className=`k-tour__spot`,this.spot.setAttribute(`aria-hidden`,`true`),document.body.append(this.spot)),Object.assign(this.spot.style,{top:`${t.top-6}px`,left:`${t.left-6}px`,inlineSize:`${t.width+12}px`,blockSize:`${t.height+12}px`})):(this.spot?.remove(),this.spot=null);let n=e.getBoundingClientRect();if(!t){Object.assign(e.style,{top:`${innerHeight/2-n.height/2}px`,left:`${innerWidth/2-n.width/2}px`});return}let r=t.bottom+12+n.height<innerHeight?t.bottom+12:Math.max(12,t.top-12-n.height),i=Math.min(innerWidth-n.width-12,Math.max(12,t.left+t.width/2-n.width/2));Object.assign(e.style,{top:`${r}px`,left:`${i}px`})}}connectedCallback(){i(()=>{this.isConnected&&this.list===null&&(this.list=[...this.querySelectorAll(`:scope > [data-target]`)].map(e=>({target:e.dataset.target,title:e.dataset.title??``,content:e.textContent?.trim()??``})),this.replaceChildren())})}disconnectedCallback(){this.stop(!1)}get steps(){return this.list??[]}set steps(e){this.list=[...e]}start(){this.steps.length&&(this.returnTo=document.activeElement,this.i=0,addEventListener(`scroll`,this.place,{passive:!0}),addEventListener(`resize`,this.place),this.show())}stop(e=!0){this.spot?.remove(),this.card?.remove(),this.spot=this.card=null,removeEventListener(`scroll`,this.place),removeEventListener(`resize`,this.place),e&&this.returnTo?.focus?.()}show(){let e=this.steps[this.i],t=this.steps.length,n=this.i===t-1;this.card||(this.card=document.createElement(`div`),this.card.className=`k-tour__card`,this.card.setAttribute(`role`,`dialog`),this.card.setAttribute(`aria-modal`,`false`),this.card.setAttribute(`aria-labelledby`,`${this.key}-t`),this.card.setAttribute(`aria-describedby`,`${this.key}-b`),this.card.tabIndex=-1,this.card.addEventListener(`click`,e=>{let t=e.target.closest(`[data-act]`);if(!t)return;let n=t.dataset.act;n===`skip`?this.stop():n===`prev`?this.step(-1):n===`next`?this.step(1):n===`done`&&(this.stop(),r(this,`kashi-finish`,{}))}),this.card.addEventListener(`keydown`,e=>{let t=getComputedStyle(this.card).direction===`rtl`;e.key===`Escape`?this.stop():e.key===(t?`ArrowLeft`:`ArrowRight`)&&this.i<this.steps.length-1?this.step(1):e.key===(t?`ArrowRight`:`ArrowLeft`)&&this.i>0&&this.step(-1)}),document.body.append(this.card)),this.card.innerHTML=`<span class="k-tour__step">مرحلهٔ ${s(this.i+1)} از ${s(t)}</span><p class="k-tour__title" id="${this.key}-t">${a(e.title)}</p><p class="k-tour__body" id="${this.key}-b">${a(e.content)}</p><div class="k-tour__actions"><button type="button" class="k-btn k-btn--link k-tour__skip" data-act="skip">رد کردن</button><span class="k-tour__progress" aria-hidden="true">${this.steps.map((e,t)=>`<span${t<=this.i?` data-on=""`:``}></span>`).join(``)}</span>${this.i>0?`<button type="button" class="k-btn k-btn--secondary k-btn--sm" data-act="prev">قبلی</button>`:``}<button type="button" class="k-btn k-btn--primary k-btn--sm" data-act="${n?`done`:`next`}">${n?`تمام`:`بعدی`}</button></div>`;let i=document.querySelector(e.target),o=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches;i?.scrollIntoView?.({block:`center`,behavior:o?`auto`:`smooth`}),this.place(),setTimeout(this.place,400),this.card.focus({preventScroll:!0})}step(e){this.i=Math.max(0,Math.min(this.steps.length-1,this.i+e)),this.show()}},_=class extends o{constructor(){super(...arguments),this.current=40,this.built=!1,this.dragging=!1}connectedCallback(){i(()=>{this.isConnected&&!this.built&&(this.current=this.num(`size`,40),this.build())})}attributeChangedCallback(e,t,n){this.built&&t!==n&&(e===`size`?this.set(Number(n)||40,!1):this.decorate())}get value(){return this.current}set value(e){this.set(e,!1)}num(e,t){let n=Number(this.getAttribute(e));return Number.isFinite(n)&&this.getAttribute(e)!==null?n:t}get vertical(){return this.getAttribute(`orientation`)===`vertical`}build(){let[e,t]=[...this.children],n=document.createElement(`div`),r=document.createElement(`div`);r.className=`k-splitter__pane`,e&&r.append(e);let i=document.createElement(`div`);i.className=`k-splitter__handle`,i.setAttribute(`role`,`separator`),i.tabIndex=0;let a=document.createElement(`div`);a.className=`k-splitter__pane`,t&&a.append(t),n.append(r,i,a),this.replaceChildren(n),this.built=!0,i.addEventListener(`pointerdown`,e=>{i.setPointerCapture?.(e.pointerId),this.dragging=!0,n.toggleAttribute(`data-dragging`,!0),i.toggleAttribute(`data-dragging`,!0)}),i.addEventListener(`pointermove`,e=>{if(!this.dragging)return;let t=n.getBoundingClientRect();if(this.vertical)return this.set((e.clientY-t.top)/t.height*100);let r=getComputedStyle(n).direction===`rtl`;this.set((r?t.right-e.clientX:e.clientX-t.left)/t.width*100)});let o=()=>{this.dragging=!1,n.removeAttribute(`data-dragging`),i.removeAttribute(`data-dragging`)};i.addEventListener(`pointerup`,o),i.addEventListener(`pointercancel`,o),i.addEventListener(`dblclick`,()=>this.set(this.num(`size`,40))),i.addEventListener(`keydown`,e=>{let t=getComputedStyle(i).direction===`rtl`,n=this.vertical?{ArrowUp:-5,ArrowDown:5}:{ArrowLeft:t?5:-5,ArrowRight:t?-5:5};if(e.key in n)this.set(this.current+n[e.key]);else if(e.key===`Home`)this.set(this.num(`min`,15));else if(e.key===`End`)this.set(this.num(`max`,85));else return;e.preventDefault()}),this.decorate()}decorate(){let e=this.firstElementChild;e.className=`k-splitter${this.vertical?` k-splitter--vertical`:``}`;let t=this.getAttribute(`height`);e.style.blockSize=t??``;let n=e.querySelector(`.k-splitter__handle`);n.setAttribute(`aria-orientation`,this.vertical?`horizontal`:`vertical`),n.setAttribute(`aria-valuemin`,String(this.num(`min`,15))),n.setAttribute(`aria-valuemax`,String(this.num(`max`,85))),n.setAttribute(`aria-label`,this.getAttribute(`label`)??`تغییر اندازهٔ پنل‌ها`),this.paint()}set(e,t=!0){let n=Math.round(Math.min(this.num(`max`,85),Math.max(this.num(`min`,15),e))*10)/10,i=n!==this.current;this.current=n,this.built&&this.paint(),t&&i&&r(this,`kashi-change`,{value:n})}paint(){let e=this.firstElementChild,t=e.querySelector(`.k-splitter__pane`);t.style.inlineSize=this.vertical?``:`${this.current}%`,t.style.blockSize=this.vertical?`${this.current}%`:``;let n=e.querySelector(`.k-splitter__handle`);n.setAttribute(`aria-valuenow`,String(this.current)),n.setAttribute(`aria-valuetext`,`${s(Math.round(this.current))}٪`)}};_.observedAttributes=[`size`,`min`,`max`,`orientation`,`label`,`height`];var v=class extends o{constructor(){super(...arguments),this.built=!1}connectedCallback(){i(()=>{this.isConnected&&!this.built&&(this.built=!0,this.addEventListener(`click`,e=>{let t=e.target.closest(`button[aria-controls][aria-expanded]`);if(!t||!this.contains(t))return;let n=document.getElementById(t.getAttribute(`aria-controls`)),i=t.getAttribute(`aria-expanded`)!==`true`;t.setAttribute(`aria-expanded`,String(i)),n&&(n.hidden=!i),r(this,`kashi-toggle`,{id:n?.id??``,open:i})}),this.decorate())})}attributeChangedCallback(){this.built&&this.decorate()}decorate(){let e=this.querySelector(`.k-sidenav`),t=n(this,`collapsed`);e?.classList.toggle(`k-sidenav--collapsed`,t),this.querySelectorAll(`.k-sidenav__item`).forEach(e=>{let n=e.querySelector(`.k-sidenav__text`)?.textContent?.trim();n&&(t?(e.setAttribute(`aria-label`,n),e.setAttribute(`title`,n)):(e.removeAttribute(`aria-label`),e.removeAttribute(`title`)))})}};v.observedAttributes=[`collapsed`],typeof document<`u`&&document.addEventListener(`click`,e=>{let t=e.target,n=t?.closest?.(`[data-kashi-tour]`),r=n?document.getElementById(n.getAttribute(`data-kashi-tour`)):null;r?.start&&r.start();let i=t?.closest?.(`[data-kashi-command]`),a=i?document.getElementById(i.getAttribute(`data-kashi-command`)):null;a?.show&&a.show()}),e(`kashi-command-palette`,d,`contents`),e(`kashi-context-menu`,f,`block`),e(`kashi-carousel`,m,`block`),e(`kashi-tree-view`,h,`block`),e(`kashi-tour`,g,`contents`),e(`kashi-splitter`,_,`block`),e(`kashi-side-nav`,v,`block`);export{m as KashiCarousel,d as KashiCommandPalette,f as KashiContextMenu,v as KashiSideNav,_ as KashiSplitter,g as KashiTour,h as KashiTreeView};
@@ -1 +0,0 @@
1
- import{a as e,d as t,i as n,n as r,o as i,r as a,s as o,t as s}from"./base-Cmq7zeIG.js";var c=class extends s{constructor(){super(...arguments),this.dialog=null,this.opener=null,this.key=t(`kashi-dialog`)}connectedCallback(){a(()=>{this.isConnected&&(this.dialog||this.build(),this.sync())})}attributeChangedCallback(e,t,n){this.dialog&&t!==n&&(e===`open`?this.sync():this.decorate())}get open(){return this.hasAttribute(`open`)}set open(e){this.toggleAttribute(`open`,!!e)}show(){this.open=!0}close(e){this.dialog?.open?this.dialog.close(e):this.open=!1}build(){let e=[...this.children].filter(e=>e.getAttribute(`slot`)===`footer`),t=[...this.childNodes].filter(t=>!e.includes(t)),a=document.createElement(`dialog`);if(a.setAttribute(`aria-labelledby`,`${this.key}-title`),a.innerHTML=`<div class="k-dialog__header"><div class="k-dialog__heading"><h2 class="k-dialog__title" id="${this.key}-title"></h2><p class="k-dialog__description" id="${this.key}-desc"></p></div><button type="button" class="k-btn k-btn--tertiary k-btn--icon k-btn--sm k-dialog__close">${r.close}</button></div>`,t.some(e=>e.nodeType===1||e.textContent?.trim())){let e=document.createElement(`div`);e.className=`k-dialog__body`,e.append(...t),a.append(e)}if(e.length){let t=document.createElement(`div`);t.className=`k-dialog__footer`;for(let n of e)n.removeAttribute(`slot`),t.append(n);a.append(t)}this.replaceChildren(a),this.dialog=a,a.querySelector(`.k-dialog__close`).addEventListener(`click`,()=>this.close()),a.addEventListener(`click`,e=>{e.target===a&&n(this,`dismissible`,!0)&&this.close();let t=e.target.closest(`[data-kashi-close]`);t&&a.contains(t)&&this.close(t.getAttribute(`data-kashi-close`)||void 0)}),a.addEventListener(`close`,()=>{this.removeAttribute(`open`),this.opener?.focus?.(),i(this,`kashi-close`,{returnValue:a.returnValue})}),this.decorate()}decorate(){let e=this.dialog,t=this.getAttribute(`size`)??`md`,n=this.getAttribute(`placement`)??`center`;e.className=[`k-dialog`,t!==`md`&&`k-dialog--${t}`,n!==`center`&&`k-dialog--${n}`,this.getAttribute(`tone`)===`danger`&&`k-dialog--danger`].filter(Boolean).join(` `),e.dataset.placement=n,e.querySelector(`.k-dialog__title`).textContent=this.getAttribute(`heading`)??``;let r=e.querySelector(`.k-dialog__description`),i=this.getAttribute(`description`);r.textContent=i??``,r.hidden=!i,i?e.setAttribute(`aria-describedby`,r.id):e.removeAttribute(`aria-describedby`),e.querySelector(`.k-dialog__close`).setAttribute(`aria-label`,this.getAttribute(`close-label`)??`بستن`)}sync(){let e=this.dialog;e&&this.isConnected&&(this.open&&!e.open?(this.opener=document.activeElement,e.showModal?.(),i(this,`kashi-open`,{})):!this.open&&e.open&&e.close())}};c.observedAttributes=[`open`,`heading`,`description`,`tone`,`size`,`placement`,`close-label`];var l=class extends s{constructor(){super(...arguments),this.list=null,this.key=t(`kashi-tabs`),this.ro=null}connectedCallback(){a(()=>this.isConnected&&this.setup())}setup(){this.list||this.build(),this.decorate(),this.select(this.getAttribute(`value`)??this.panels[0]?.dataset.value??``,!1),typeof ResizeObserver<`u`&&!this.ro&&(this.ro=new ResizeObserver(()=>this.measure()),this.ro.observe(this.list))}disconnectedCallback(){this.ro?.disconnect(),this.ro=null}attributeChangedCallback(e,t,n){this.list&&t!==n&&(e===`value`?this.select(n??``,!1):this.decorate())}get value(){return this.getAttribute(`value`)??``}set value(e){this.setAttribute(`value`,e)}get panels(){return[...this.children].filter(e=>e instanceof HTMLElement&&e.hasAttribute(`data-tab`))}build(){let e=document.createElement(`div`);e.setAttribute(`role`,`tablist`),e.className=`k-tabs__list`,this.panels.forEach((t,n)=>{let r=t.dataset.value||String(n+1);t.dataset.value=r;let i=document.createElement(`button`);i.type=`button`,i.setAttribute(`role`,`tab`),i.className=`k-tabs__tab`,i.id=`${this.key}-tab-${n}`,i.dataset.value=r,i.textContent=t.dataset.tab??``,t.hasAttribute(`data-disabled`)&&(i.disabled=!0),t.id||=`${this.key}-panel-${n}`,i.setAttribute(`aria-controls`,t.id),t.setAttribute(`role`,`tabpanel`),t.setAttribute(`aria-labelledby`,i.id),t.tabIndex=0,t.classList.add(`k-tabs__panel`),e.append(i)});let t=document.createElement(`span`);t.className=`k-tabs__indicator`,t.setAttribute(`aria-hidden`,`true`),e.append(t),e.addEventListener(`click`,e=>{let t=e.target.closest(`[role="tab"]`);t&&!t.disabled&&this.select(t.dataset.value,!0)}),e.addEventListener(`keydown`,e=>this.onKey(e)),this.prepend(e),this.list=e}decorate(){let e=this.getAttribute(`variant`)??`line`,t=this.getAttribute(`orientation`)===`vertical`;for(let e of[...this.classList])e.startsWith(`k-tabs`)&&this.classList.remove(e);this.classList.add(`k-tabs`,`k-tabs--${e}`),n(this,`block`)&&this.classList.add(`k-tabs--block`),t&&this.classList.add(`k-tabs--vertical`),this.getAttribute(`size`)===`sm`&&this.classList.add(`k-tabs--sm`),this.dataset.orientation=t?`vertical`:`horizontal`,this.list.setAttribute(`aria-orientation`,t?`vertical`:`horizontal`);let r=this.getAttribute(`label`);r&&this.list.setAttribute(`aria-label`,r),this.measure()}select(e,t){let n=[...this.list.querySelectorAll(`[role="tab"]`)];n.some(t=>t.dataset.value===e)||(e=n[0]?.dataset.value??``);for(let t of n){let n=t.dataset.value===e;t.setAttribute(`aria-selected`,String(n)),t.tabIndex=n?0:-1}for(let t of this.panels)t.hidden=t.dataset.value!==e;this.getAttribute(`value`)!==e&&this.setAttribute(`value`,e),this.measure(),t&&i(this,`kashi-change`,{value:e})}measure(){let e=this.list,t=e?.querySelector(`[role="tab"][aria-selected="true"]`);!e||!t||!t.offsetWidth?e?.removeAttribute(`data-indicator`):(e.setAttribute(`data-indicator`,``),e.style.setProperty(`--_ix`,`${t.offsetLeft}px`),e.style.setProperty(`--_iy`,`${t.offsetTop}px`),e.style.setProperty(`--_iw`,`${t.offsetWidth}px`),e.style.setProperty(`--_ih`,`${t.offsetHeight}px`))}onKey(e){let t=[...this.list.querySelectorAll(`[role="tab"]:not(:disabled)`)],n=t.indexOf(document.activeElement);if(n<0)return;let r=getComputedStyle(this.list).direction===`rtl`,i=this.getAttribute(`orientation`)===`vertical`?{ArrowDown:n+1,ArrowUp:n-1,Home:0,End:t.length-1}:{ArrowLeft:r?n+1:n-1,ArrowRight:r?n-1:n+1,Home:0,End:t.length-1};if(!(e.key in i))return;e.preventDefault();let a=t[(i[e.key]+t.length)%t.length];a.focus(),this.select(a.dataset.value,!0)}};l.observedAttributes=[`value`,`variant`,`block`,`orientation`,`size`,`label`];var u=class extends s{constructor(){super(...arguments),this.tip=null,this.key=t(`kashi-tip`),this.onKey=e=>{e.key===`Escape`&&(clearTimeout(this.timer),this.tip.hidden=!0)}}connectedCallback(){a(()=>this.isConnected&&this.setup())}setup(){if(!this.tip){this.classList.add(`k-tooltip-anchor`);let e=document.createElement(`span`);e.setAttribute(`role`,`tooltip`),e.id=this.key,e.hidden=!0,this.append(e),this.tip=e;let t=this.firstElementChild===e?null:this.firstElementChild;t&&t.setAttribute(`aria-describedby`,[t.getAttribute(`aria-describedby`),this.key].filter(Boolean).join(` `)),this.addEventListener(`mouseenter`,()=>this.show(Number(this.getAttribute(`delay`)??300))),this.addEventListener(`mouseleave`,()=>this.hide()),this.addEventListener(`focusin`,()=>this.show(0)),this.addEventListener(`focusout`,()=>this.hide())}this.decorate()}disconnectedCallback(){clearTimeout(this.timer),document.removeEventListener(`keydown`,this.onKey)}attributeChangedCallback(){this.tip&&this.decorate()}decorate(){let e=this.getAttribute(`placement`);this.tip.className=`k-tooltip${e&&e!==`top`?` k-tooltip--${e}`:``}`,this.tip.textContent=this.getAttribute(`content`)??``}show(e){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tip.hidden=!1,document.addEventListener(`keydown`,this.onKey)},e)}hide(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tip.hidden=!0,document.removeEventListener(`keydown`,this.onKey)},100)}};u.observedAttributes=[`content`,`placement`];var d=class extends s{constructor(){super(...arguments),this.state=`idle`,this.built=!1}connectedCallback(){this.built||(this.built=!0,this.addEventListener(`click`,e=>{e.target.closest(`button`)&&this.copy()})),this.render()}disconnectedCallback(){clearTimeout(this.timer)}attributeChangedCallback(){this.built&&this.render()}get text(){let e=this.getAttribute(`value`);if(e!==null)return e;let t=this.getAttribute(`target`),n=t?document.querySelector(t):null;return n?typeof n.value==`string`?n.value:(n.textContent??``).trim():``}async copy(){try{await navigator.clipboard.writeText(this.text),this.state=`copied`,i(this,`kashi-copy`,{value:this.text})}catch{this.state=`failed`}this.render(),clearTimeout(this.timer),this.timer=setTimeout(()=>{this.state=`idle`,this.render()},Number(this.getAttribute(`timeout`))||2e3)}render(){let e=this.getAttribute(`label`)??`کپی`,t=this.getAttribute(`copied-label`)??`کپی شد`,i=this.state===`copied`?t:this.state===`failed`?`کپی نشد`:e,a=n(this,`icon-only`),s=this.state===`copied`?r.check:r.copy,c=this.getAttribute(`variant`)??`secondary`,l=this.getAttribute(`size`)??`sm`,u=this.contains(document.activeElement);this.innerHTML=`<button type="button" class="k-btn k-btn--${o(c)}${l===`md`?``:` k-btn--${o(l)}`}${a?` k-btn--icon`:``}" data-variant="${o(c)}" data-size="${o(l)}"${a?` aria-label="${o(i)}"`:``}${this.state===`copied`?` data-copied=""`:``}>${s}${a?``:o(i)}</button><span class="k-sr-only" aria-live="polite">${this.state===`idle`?``:o(i)}</span>`,u&&this.querySelector(`button`).focus()}};d.observedAttributes=[`value`,`target`,`label`,`copied-label`,`icon-only`,`variant`,`size`],e(`kashi-dialog`,c,`contents`),e(`kashi-tabs`,l,`block`),e(`kashi-tooltip`,u),e(`kashi-copy-button`,d),typeof document<`u`&&document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`[data-kashi-open]`);if(t){let n=document.getElementById(t.getAttribute(`data-kashi-open`));n?.show&&(e.preventDefault(),n.show())}});export{d as KashiCopyButton,c as KashiDialog,l as KashiTabs,u as KashiTooltip};
@@ -1 +0,0 @@
1
- import{a as e,c as t,d as n,i as r,l as i,n as a,o,s,t as c}from"./base-Cmq7zeIG.js";import{i as l}from"./digits-DE1YGT94.js";import{a as u,c as d,d as f,i as p,l as m,t as h,u as g}from"./jalali-BiM5Kfep.js";import"./calendar-Dm3fq2bs.js";const _=e=>e?u(e.trim())??d(e):null,v=(e,t=0)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t),y=(e,t)=>!e&&!t||!!e&&!!t&&e.getTime()===t.getTime(),b=[[`۷ روز اخیر`,e=>({start:v(e,-6),end:e})],[`۳۰ روز اخیر`,e=>({start:v(e,-29),end:e})],[`این ماه`,e=>{let{jy:t,jm:n}=f(e);return{start:m(t,n,1),end:e}}],[`ماه قبل`,e=>{let{jy:t,jm:n}=f(e),[r,i]=n===1?[t-1,12]:[t,n-1];return{start:m(r,i,1),end:v(m(t,n,1),-1)}}]];var x=class extends c{constructor(){super(...arguments),this.current={start:null,end:null},this.draft={start:null,end:null},this.valueSet=!1,this.rendered=!1,this.key=n(`kashi-range`),this.pop=null,this.onOutside=e=>{this.contains(e.target)||this.close(!1)}}connectedCallback(){!this.rendered&&!this.valueSet&&(this.current={start:_(this.getAttribute(`start`)),end:_(this.getAttribute(`end`))}),this.render()}disconnectedCallback(){this.close(!1)}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&((e===`start`||e===`end`)&&(this.current={...this.current,[e]:_(n)}),this.render())}get value(){return{...this.current}}set value(e){this.valueSet=!0,this.current={start:e?.start??null,end:e?.end??null},this.rendered&&this.render()}fmt(e){return p(e,{digits:this.getAttribute(`digits`)===`latin`?`latin`:`fa`})}text(e){return e.start&&e.end?`${this.fmt(e.start)} تا ${this.fmt(e.end)}`:null}render(){this.close(!1);let e=this.key,n=this.getAttribute(`label`)??`بازهٔ تاریخ`,r=this.text(this.current),o=`<div class="k-datepicker k-daterange"><div class="k-select"><button id="${e}" type="button" class="k-select__control k-daterange__trigger" aria-haspopup="dialog" aria-expanded="false"${r?``:` data-placeholder=""`}${this.hasAttribute(`disabled`)?` disabled`:``}>${a.calendar}<span>${s(r??this.getAttribute(`placeholder`)??`انتخاب بازهٔ تاریخ`)}</span></button></div></div>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:e,label:n,control:o})),this.trigger=this.querySelector(`.k-daterange__trigger`),this.trigger.addEventListener(`click`,()=>this.pop?this.close():this.open()),this.rendered=!0,i(this.querySelector(`:scope > .k-field`),this.trigger,e,this.getAttribute(`error`),this.getAttribute(`hint`));let c=this.getAttribute(`name`);if(this.querySelectorAll(`:scope > input[type=hidden]`).forEach(e=>e.remove()),c)for(let[e,t]of[[`start`,this.current.start],[`end`,this.current.end]])this.insertAdjacentHTML(`beforeend`,`<input type="hidden" name="${s(`${c}_${e}`)}" value="${t?g(t):``}">`)}open(){if(this.pop||this.hasAttribute(`disabled`))return;this.draft={...this.current};let e=this.querySelector(`.k-daterange`),t=document.createElement(`div`);t.id=`${this.key}-popover`,t.className=`k-datepicker__popover k-daterange__popover`,t.setAttribute(`role`,`dialog`),t.setAttribute(`aria-label`,this.getAttribute(`label`)??`انتخاب بازهٔ تاریخ`);let n=this.getAttribute(`presets`)===`false`?[]:b;t.innerHTML=`${n.length?`<ul class="k-daterange__presets" role="list" aria-label="میان‌برها">${n.map(([e],t)=>`<li><button type="button" class="k-daterange__preset" data-preset="${t}" aria-pressed="false">${e}</button></li>`).join(``)}</ul>`:``}<div class="k-daterange__main"><div class="k-daterange__footer"><span class="k-daterange__summary" aria-live="polite"></span><button type="button" class="k-btn k-btn--secondary k-btn--sm" data-cancel>انصراف</button><button type="button" class="k-btn k-btn--primary k-btn--sm" data-apply>تأیید</button></div></div>`;let r=document.createElement(`kashi-calendar`);for(let e of[`min`,`max`,`digits`,`holidays`]){let t=this.getAttribute(e);t!==null&&r.setAttribute(e,t)}r.range=this.draft,t.querySelector(`.k-daterange__main`).prepend(r),r.addEventListener(`kashi-change`,e=>{e.stopPropagation();let t=e.detail.date,n=this.draft;this.draft=!n.start||n.end?{start:t,end:null}:t<n.start?{start:t,end:n.start}:{start:n.start,end:t},r.range=this.draft,this.paintDraft()}),t.addEventListener(`click`,e=>{let t=e.target,i=t.closest(`[data-preset]`);if(i)this.draft=n[Number(i.dataset.preset)][1](v(/* @__PURE__ */ new Date)),r.range=this.draft,this.paintDraft();else if(t.closest(`[data-cancel]`))this.close();else if(t.closest(`[data-apply]`)&&this.draft.start&&this.draft.end){let e=!y(this.draft.start,this.current.start)||!y(this.draft.end,this.current.end);this.current={...this.draft},this.close(),this.render(),this.trigger.focus(),e&&o(this,`kashi-change`,{start:this.current.start,end:this.current.end,value:{start:g(this.current.start),end:g(this.current.end)}})}}),t.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.stopPropagation(),this.close())}),e.append(t),this.pop=t,this.trigger.setAttribute(`aria-expanded`,`true`),this.trigger.setAttribute(`aria-controls`,t.id),document.addEventListener(`pointerdown`,this.onOutside),this.paintDraft(),r.focus()}paintDraft(){let e=this.pop,t=this.draft;e.querySelector(`.k-daterange__summary`).textContent=this.text(t)??(t.start?`حالا تاریخ پایان را انتخاب کنید.`:``),e.querySelector(`[data-apply]`).disabled=!t.start||!t.end;let n=v(/* @__PURE__ */ new Date);e.querySelectorAll(`[data-preset]`).forEach((e,r)=>{let i=b[r][1](n);e.setAttribute(`aria-pressed`,String(y(t.start,i.start)&&y(t.end,i.end)))})}close(e=!0){this.pop&&(this.pop.remove(),this.pop=null,document.removeEventListener(`pointerdown`,this.onOutside),this.trigger.setAttribute(`aria-expanded`,`false`),this.trigger.removeAttribute(`aria-controls`),e&&this.trigger.focus())}};x.observedAttributes=[`label`,`hint`,`error`,`start`,`end`,`min`,`max`,`holidays`,`digits`,`name`,`disabled`,`presets`,`placeholder`];const S=e=>`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-k-mirror=""><path d="${e?`m8 5 5 5-5 5`:`m12 5-5 5 5 5`}"/></svg>`;var C=class extends c{constructor(){super(...arguments),this.selected=null,this.year=f(/* @__PURE__ */ new Date).jy,this.focusMonth=1,this.valueSet=!1,this.rendered=!1}connectedCallback(){if(!this.rendered){this.valueSet||(this.selected=this.parse(this.getAttribute(`value`)));let e=f(/* @__PURE__ */ new Date);this.year=this.selected?.year??e.jy,this.focusMonth=this.selected?.month??(this.year===e.jy?e.jm:1)}this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?this.value=n??``:this.render())}parse(e){let t=(e??``).trim().match(/^(\d{4})[-/](\d{1,2})$/);return t?{year:Number(t[1]),month:Number(t[2])}:null}get value(){return this.selected?`${this.selected.year}-${String(this.selected.month).padStart(2,`0`)}`:``}set value(e){this.valueSet=!0,this.selected=this.parse(e),this.selected&&([this.year,this.focusMonth]=[this.selected.year,this.selected.month]),this.rendered&&this.render()}out(e,t){let n=e*12+t,r=this.parse(this.getAttribute(`min`)),i=this.parse(this.getAttribute(`max`));return!!r&&n<r.year*12+r.month||!!i&&n>i.year*12+i.month}render(e=!1){let t=e=>this.getAttribute(`digits`)===`latin`?String(e):l(String(e)),n=f(/* @__PURE__ */ new Date),r=this.parse(this.getAttribute(`min`)),i=this.parse(this.getAttribute(`max`)),a=this.year;this.innerHTML=`<div class="k-monthpicker" role="group" aria-label="${s(this.getAttribute(`label`)??`انتخاب ماه`)}"><div class="k-monthpicker__header"><button type="button" class="k-btn k-btn--tertiary k-btn--icon k-btn--sm" data-year="-1" aria-label="سال قبل"${r&&a<=r.year?` disabled`:``}>${S(!1)}</button><span class="k-monthpicker__year" aria-live="polite">${t(a)}</span><button type="button" class="k-btn k-btn--tertiary k-btn--icon k-btn--sm" data-year="1" aria-label="سال بعد"${i&&a>=i.year?` disabled`:``}>${S(!0)}</button></div><div class="k-monthpicker__grid">${h.map((e,r)=>`<button type="button" data-month="${r+1}" class="k-monthpicker__month" tabindex="${this.focusMonth===r+1?0:-1}" aria-pressed="${this.selected?.year===a&&this.selected.month===r+1}" aria-label="${e} ${t(a)}"${n.jy===a&&n.jm===r+1?` aria-current="date"`:``}${this.out(a,r+1)?` disabled`:``}>${e}</button>`).join(``)}</div></div>`;let c=this.getAttribute(`name`);c&&this.insertAdjacentHTML(`beforeend`,`<input type="hidden" name="${s(c)}" value="${this.value}">`),this.rendered=!0,this.querySelectorAll(`[data-year]`).forEach(e=>e.addEventListener(`click`,()=>{this.year+=Number(e.dataset.year),this.render()}));let u=this.querySelector(`.k-monthpicker__grid`);u.addEventListener(`click`,e=>{let t=e.target.closest(`[data-month]`);t&&!t.disabled&&(this.selected={year:this.year,month:Number(t.dataset.month)},this.focusMonth=this.selected.month,this.render(!0),o(this,`kashi-change`,{value:this.value,year:this.selected.year,month:this.selected.month}))}),u.addEventListener(`keydown`,e=>{let t=getComputedStyle(u).direction===`rtl`,n={ArrowRight:t?-1:1,ArrowLeft:t?1:-1,ArrowDown:3,ArrowUp:-3,PageUp:-12,PageDown:12},r=this.year*12+this.focusMonth-1;if(e.key in n)r+=n[e.key];else if(e.key===`Home`)r=this.year*12;else if(e.key===`End`)r=this.year*12+11;else return;e.preventDefault(),this.year=Math.floor(r/12),this.focusMonth=r%12+1,this.render(!0)}),e&&this.querySelector(`[data-month="${this.focusMonth}"]`)?.focus()}};C.observedAttributes=[`value`,`min`,`max`,`digits`,`label`,`name`];function w(e){let t=[`بایت`,`کیلوبایت`,`مگابایت`,`گیگابایت`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;let i=r===0?String(n):n.toFixed(+(n<10)).replace(/\.0$/,``);return`${l(i).replace(`.`,`٫`)} ${t[r]}`}var T=class extends c{constructor(){super(...arguments),this.items=[],this.rendered=!1,this.key=n(`kashi-upload`)}connectedCallback(){this.rendered||this.render()}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&this.render()}get files(){return this.items.filter(e=>e.status!==`error`).map(e=>e.file)}get multiple(){return r(this,`multiple`,!0)}render(){let e=this.key,t=this.getAttribute(`hint`),n=this.hasAttribute(`disabled`),r=this.getAttribute(`name`),i=this.getAttribute(`accept`);this.innerHTML=`<div class="k-dropzone"${n?` data-disabled=""`:``}><span class="k-dropzone__icon" aria-hidden="true"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13V3.5m-4 4 4-4 4 4M4 13v2.5A1.5 1.5 0 0 0 5.5 17h9a1.5 1.5 0 0 0 1.5-1.5V13"/></svg></span><p class="k-dropzone__title" style="margin: 0"><button type="button" class="k-dropzone__browse"${n?` disabled`:``}${t?` aria-describedby="${e}-hint"`:``}>${s(this.getAttribute(`label`)??`انتخاب فایل`)}</button> <span>یا فایل را اینجا رها کنید</span></p>${t?`<p class="k-dropzone__hint" id="${e}-hint" style="margin: 0">${s(t)}</p>`:``}<input type="file" tabindex="-1" aria-hidden="true"${i?` accept="${s(i)}"`:``}${this.multiple?` multiple`:``}${r?` name="${s(r)}"`:``}></div><ul class="k-file-list" role="list" hidden></ul><span class="k-sr-only" aria-live="polite"></span>`,this.rendered=!0,this.input=this.querySelector(`input[type=file]`);let a=this.querySelector(`.k-dropzone`);this.querySelector(`.k-dropzone__browse`).addEventListener(`click`,()=>this.input.click()),this.input.addEventListener(`change`,()=>{this.input.files?.length&&this.add([...this.input.files])}),a.addEventListener(`dragover`,e=>{e.preventDefault(),n||a.setAttribute(`data-dragging`,``)}),a.addEventListener(`dragleave`,e=>{a.contains(e.relatedTarget)||a.removeAttribute(`data-dragging`)}),a.addEventListener(`drop`,e=>{e.preventDefault(),a.removeAttribute(`data-dragging`),!n&&e.dataTransfer?.files.length&&this.add([...e.dataTransfer.files])}),this.querySelector(`.k-file-list`).addEventListener(`click`,e=>{let t=e.target.closest(`[data-remove]`);if(!t)return;let n=this.items.find(e=>e.id===t.dataset.remove);this.items=this.items.filter(e=>e.id!==t.dataset.remove),this.announce(`${n?.file.name??``} حذف شد`),this.changed()}),this.paint()}accepts(e){let t=this.getAttribute(`accept`);return!t||t.split(`,`).map(e=>e.trim().toLowerCase()).some(t=>t.startsWith(`.`)?e.name.toLowerCase().endsWith(t):t.endsWith(`/*`)?e.type.startsWith(t.slice(0,-1)):e.type===t)}add(e){let t=this.multiple?e:e.slice(0,1),r=Number(this.getAttribute(`max-size`))||0,i=Number(this.getAttribute(`max-files`))||0,a=this.multiple?this.items.filter(e=>e.status!==`error`).length:0,o=t.map((e,t)=>{let o;this.accepts(e)?r&&e.size>r?o=`حجم فایل بیشتر از ${w(r)} است.`:i&&a+t>=i&&(o=`حداکثر ${l(i)} فایل.`):o=`این نوع فایل پذیرفته نیست.`;let s=!o&&!!this.uploader;return{id:n(`f`),file:e,status:o?`error`:s?`uploading`:`done`,progress:o||s?0:100,error:o}});this.items=this.multiple?[...this.items,...o]:o,this.announce(o.map(e=>`${e.file.name}: ${e.error??(this.uploader?`در حال بارگذاری`:`بارگذاری شد`)}`).join(`، `)),this.changed();for(let e of o)e.status===`uploading`&&this.uploader&&this.uploader(e.file,t=>{e.progress=t,this.paint()}).then(()=>{e.status=`done`,e.progress=100,this.announce(`${e.file.name}: بارگذاری شد`),this.changed()},t=>{e.status=`error`,e.error=t instanceof Error?t.message:`خطا در بارگذاری`,this.announce(`${e.file.name}: ${e.error}`),this.changed()})}announce(e){this.querySelector(`:scope > .k-sr-only`).textContent=e}changed(){try{let e=new DataTransfer;for(let t of this.files)e.items.add(t);this.input.files=e.files}catch{}this.paint(),o(this,`kashi-change`,{files:this.files})}paint(){let e=this.querySelector(`.k-file-list`);e.hidden=!this.items.length;let t=e=>(e.split(`.`).pop()??``).slice(0,4).toUpperCase();e.innerHTML=this.items.map(e=>`<li class="k-file" data-status="${e.status}"><span class="k-file__icon" aria-hidden="true">${s(t(e.file.name))}</span><span class="k-file__name" title="${s(e.file.name)}">${s(e.file.name)}</span><button type="button" class="k-btn k-btn--tertiary k-btn--icon k-btn--sm k-file__remove" data-remove="${e.id}" aria-label="حذف ${s(e.file.name)}"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3.5 5.5h13M8 5.5V4h4v1.5M5 5.5l.8 10.2a1.5 1.5 0 0 0 1.5 1.3h5.4a1.5 1.5 0 0 0 1.5-1.3L15 5.5"/></svg></button><span class="k-file__meta">${s(e.error??`${w(e.file.size)}${e.status===`uploading`?` · ${l(Math.round(e.progress))}٪`:e.status===`done`?` · بارگذاری شد`:``}`)}</span>${e.status===`uploading`?`<div role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="${Math.round(e.progress)}" aria-label="در حال بارگذاری ${s(e.file.name)}" class="k-progress k-progress--sm"><div class="k-progress__bar" style="--k-value: ${e.progress}%"></div></div>`:``}</li>`).join(``)}};T.observedAttributes=[`accept`,`multiple`,`max-size`,`max-files`,`hint`,`name`,`disabled`,`label`];const E=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i,D=e=>{let t=e.trim().match(E);return t?`#${(t[1].length===3?[...t[1]].map(e=>e+e).join(``):t[1]).toLowerCase()}`:null},O=e=>[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)),k=(e,t,n)=>`#${[e,t,n].map(e=>Math.round(Math.min(255,Math.max(0,e))).toString(16).padStart(2,`0`)).join(``)}`,A=e=>{let[t,n,r]=O(e).map(e=>e/255).map(e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4);return .2126*t+.7152*n+.0722*r},j=(e,t)=>{let[n,r]=[A(D(e)??e),A(D(t)??t)].sort((e,t)=>t-e);return(n+.05)/(r+.05)};function M(e){let[t,n,r]=O(e).map(e=>e/255),i=Math.max(t,n,r),a=i-Math.min(t,n,r),o=0;return a&&(o=i===t?(n-r)/a%6:i===n?(r-t)/a+2:(t-n)/a+4),{h:(o*60+360)%360,s:i?a/i:0,v:i}}function N({h:e,s:t,v:n}){let r=r=>{let i=(r+e/60)%6;return(n-n*t*Math.max(0,Math.min(i,4-i,1)))*255};return k(r(5),r(3),r(1))}const P=[[`فیروزه‌ای`,`#0b8077`],[`لاجوردی`,`#2740ed`],[`بنفش`,`#7c3aed`],[`اناری`,`#e51d2a`],[`زعفرانی`,`#dd5e02`],[`پسته‌ای`,`#518b25`],[`شب`,`#2a2f3d`]];var F=class extends c{constructor(){super(...arguments),this.current=`#0b8077`,this.hsv=M(`#0b8077`),this.valueSet=!1,this.rendered=!1,this.key=n(`kashi-color`),this.panel=null,this.onOutside=e=>{this.querySelector(`.k-color__anchor`)?.contains(e.target)||this.closePanel(!1)}}connectedCallback(){!this.rendered&&!this.valueSet&&this.setColor(D(this.getAttribute(`value`)??``)??`#0b8077`,!1),this.render()}disconnectedCallback(){document.removeEventListener(`pointerdown`,this.onOutside)}attributeChangedCallback(e,t,n){this.rendered&&t!==n&&(e===`value`?this.value=n??``:this.render())}get value(){return this.current}set value(e){this.valueSet=!0;let t=D(e??``);t&&this.setColor(t,!1),this.rendered&&this.paint()}setColor(e,t){if(this.current=e,!t){let t=M(e);this.hsv=t.s===0?{...t,h:this.hsv.h}:t}}swatches(){let e=this.getAttribute(`swatches`);return e===null?P:e.split(`,`).map(e=>e.trim().split(/\s+/)).filter(([e])=>D(e)).map(([e,...t])=>[t.join(` `)||e,D(e)])}render(){let e=this.key,n=this.swatches(),r=`<div class="k-color">${n.length?`<div class="k-color__swatches" role="radiogroup" aria-label="رنگ‌های پیشنهادی">${n.map(([t,n])=>`<label class="k-color__swatch" style="--_sw: ${n}; --_ink: ${j(n,`#ffffff`)>=3?`#fff`:`#000`}" title="${s(t)}"><input type="radio" class="k-sr-only" name="${e}-sw" value="${n}" aria-label="${s(t)}"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 10.5 3.2 3L15 7"/></svg></label>`).join(``)}</div>`:``}<div class="k-color__row"><span class="k-color__anchor"><button type="button" class="k-color__preview" aria-label="انتخاب رنگ دلخواه" aria-haspopup="dialog" aria-expanded="false"></button></span><div class="k-input"><input id="${e}-hex" class="k-input__control" dir="ltr" spellcheck="false" autocomplete="off"></div></div>${this.getAttribute(`show-contrast`)===`false`?``:`<p class="k-color__contrast" aria-live="polite"><span class="k-color__sample">متن نمونه</span><span></span></p>`}</div>`;this.querySelector(`:scope > .k-field`)?.remove(),this.insertAdjacentHTML(`afterbegin`,t({id:`${e}-hex`,label:this.getAttribute(`label`)??`رنگ`,control:r})),this.rendered=!0,this.querySelector(`.k-color__swatches`)?.addEventListener(`change`,e=>this.pick(e.target.value));let i=this.querySelector(`#${e}-hex`);i.addEventListener(`input`,()=>{let e=D(i.value);this.paintMessages(!e),e&&this.pick(e,!1)}),i.addEventListener(`blur`,()=>{D(i.value)&&(i.value=this.current)}),this.querySelector(`.k-color__preview`).addEventListener(`click`,()=>this.panel?this.closePanel():this.openPanel()),this.paint()}pick(e,t=!0,n=!1){let r=e!==this.current;this.setColor(e,n),this.paint(t),r&&o(this,`kashi-change`,{value:e})}paint(e=!0){let t=this.current,n=j(t,`#ffffff`),r=j(t,`#000000`),i=n>=r?`#ffffff`:`#000000`,a=this.querySelector(`.k-color`);a.style.setProperty(`--_sw`,t),a.style.setProperty(`--_ink`,i),this.querySelectorAll(`.k-color__swatch input`).forEach(e=>e.checked=e.value===t);let o=this.querySelector(`#${this.key}-hex`);e&&(o.value=t);let c=Math.max(n,r),u=this.querySelector(`.k-color__contrast span:last-child`);u&&(u.textContent=`کنتراست با متن ${i===`#ffffff`?`سفید`:`مشکی`}: ${l((Math.round(c*10)/10).toFixed(1)).replace(`.`,`٫`)} به ۱ ${c>=4.5?`(AA)`:`(کمتر از AA)`}`);let d=this.getAttribute(`name`);this.querySelectorAll(`:scope > input[type=hidden]`).forEach(e=>e.remove()),d&&this.insertAdjacentHTML(`beforeend`,`<input type="hidden" name="${s(d)}" value="${t}">`),this.panel&&this.paintPanel(),this.paintMessages(!1)}paintMessages(e){let t=this.querySelector(`#${this.key}-hex`);i(this.querySelector(`:scope > .k-field`),t,`${this.key}-hex`,e?`کد رنگ معتبر نیست؛ مثل ‎#0fa89b‎ وارد کنید.`:null,this.getAttribute(`hint`))}openPanel(){let e=this.querySelector(`.k-color__anchor`),t=document.createElement(`div`);t.className=`k-color__panel`,t.setAttribute(`role`,`dialog`),t.setAttribute(`aria-label`,`انتخاب رنگ دلخواه`),t.innerHTML=`<div class="k-color__area" role="slider" tabindex="0" aria-label="اشباع و روشنایی"><span class="k-color__thumb"></span></div><div class="k-color__tools"><span class="k-color__current" aria-hidden="true"></span><input type="range" class="k-color__hue" min="0" max="359" aria-label="رنگ‌مایه"></div><div class="k-color__codes" dir="ltr">${[`R`,`G`,`B`].map((e,t)=>`<label class="k-color__code"><input class="k-color__num" inputmode="numeric" data-ch="${t}" aria-label="${[`قرمز`,`سبز`,`آبی`][t]}"><span aria-hidden="true">${e}</span></label>`).join(``)}</div>`,e.append(t),this.panel=t;let n=t.querySelector(`.k-color__area`),r=e=>{this.hsv=e,this.pick(N(e),!0,!0)},i=e=>{let t=n.getBoundingClientRect();r({...this.hsv,s:Math.min(1,Math.max(0,(e.clientX-t.left)/t.width)),v:1-Math.min(1,Math.max(0,(e.clientY-t.top)/t.height))})};n.addEventListener(`pointerdown`,e=>{n.setPointerCapture?.(e.pointerId),i(e)}),n.addEventListener(`pointermove`,e=>e.buttons===1&&i(e)),n.addEventListener(`keydown`,e=>{let t=e.shiftKey?.1:.01,n=this.hsv,i={ArrowLeft:{s:Math.max(0,n.s-t)},ArrowRight:{s:Math.min(1,n.s+t)},ArrowUp:{v:Math.min(1,n.v+t)},ArrowDown:{v:Math.max(0,n.v-t)}};i[e.key]&&(e.preventDefault(),r({...n,...i[e.key]}))}),t.querySelector(`.k-color__hue`).addEventListener(`input`,e=>r({...this.hsv,h:Number(e.target.value)})),t.querySelectorAll(`.k-color__num`).forEach(e=>e.addEventListener(`input`,()=>{let t=O(this.current);t[Number(e.dataset.ch)]=Math.min(255,Math.max(0,Number(e.value.replace(/\D/g,``))||0)),this.pick(k(...t))})),t.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.stopPropagation(),this.closePanel())}),this.querySelector(`.k-color__preview`).setAttribute(`aria-expanded`,`true`),document.addEventListener(`pointerdown`,this.onOutside),this.paintPanel(),n.focus({preventScroll:!0})}paintPanel(){let e=this.panel,{h:t,s:n,v:r}=this.hsv,i=e=>`${l(Math.round(e*100))}٪`,a=e.querySelector(`.k-color__area`);a.style.setProperty(`--_hue`,`hsl(${t} 100% 50%)`),a.setAttribute(`aria-valuenow`,String(Math.round(n*100))),a.setAttribute(`aria-valuetext`,`اشباع ${i(n)}، روشنایی ${i(r)}`);let o=e.querySelector(`.k-color__thumb`);o.style.left=`${n*100}%`,o.style.top=`${(1-r)*100}%`;let s=e.querySelector(`.k-color__hue`);s.value=String(Math.round(t)),s.setAttribute(`aria-valuetext`,`${l(Math.round(t))} درجه`);let c=O(this.current);e.querySelectorAll(`.k-color__num`).forEach((e,t)=>{document.activeElement!==e&&(e.value=String(c[t]))})}closePanel(e=!0){if(!this.panel)return;this.panel.remove(),this.panel=null,document.removeEventListener(`pointerdown`,this.onOutside);let t=this.querySelector(`.k-color__preview`);t.setAttribute(`aria-expanded`,`false`),e&&t.focus()}};F.observedAttributes=[`label`,`hint`,`value`,`name`,`swatches`,`show-contrast`],e(`kashi-date-range-picker`,x,`block`),e(`kashi-month-picker`,C,`block`),e(`kashi-file-upload`,T,`block`),e(`kashi-color-picker`,F,`block`);export{F as KashiColorPicker,x as KashiDateRangePicker,T as KashiFileUpload,C as KashiMonthPicker,j as contrastRatio,w as formatBytes};
@@ -1 +0,0 @@
1
- import{a as e,d as t,i as n,o as r,r as i,s as a,t as o}from"./base-Cmq7zeIG.js";import{i as s}from"./digits-DE1YGT94.js";import{n as c}from"./text-D1U32D6K.js";import{cellNumber as l}from"./controls-K-OZcjg4.js";const u=e=>c(e,{digits:`latin`}).toLowerCase();var d=class extends o{constructor(){super(...arguments),this.cols=null,this.data=null,this.table=null,this.sort=null,this.query=``,this.key=t(`kashi-table`),this.getRowId=e=>String(e.id??``)}connectedCallback(){i(()=>this.isConnected&&this.setup())}attributeChangedCallback(e,t,n){this.table&&t!==n&&this.setup()}get columns(){return this.cols??[]}set columns(e){this.cols=e,this.isConnected&&this.data&&this.setup()}get rows(){return this.data??[]}set rows(e){this.data=e,this.isConnected&&this.cols&&this.setup()}get selected(){return[...this.querySelectorAll(`tbody tr[aria-selected="true"]`)].map(e=>e.dataset.id??``)}setup(){this.cols&&this.data&&this.buildFromData();let e=this.querySelector(`:scope table`);if(!e)return;let t=e.closest(`.k-table-wrap`)??this.wrap(e);t.className=`k-table-wrap${n(this,`sticky-header`)?` k-table-wrap--sticky`:``}`,e.classList.add(`k-table`),e.classList.toggle(`k-table--compact`,n(this,`compact`)),e.classList.toggle(`k-table--striped`,n(this,`striped`));let r=e.querySelector(`caption`);r&&(r.id||=`${this.key}-caption`,t.setAttribute(`aria-labelledby`,r.id)),this.table=e,this.decorateHeader(),this.decorateRows(),this.searchBox(),this.apply()}wrap(e){let t=document.createElement(`div`);return t.setAttribute(`role`,`region`),t.tabIndex=0,e.before(t),t.append(e),t}buildFromData(){let e=this.cols,t=this.getAttribute(`caption`)??``,n=(e,t)=>e.format?e.format(t[e.key],t):String(t[e.key]??``),r=`<table>${t?`<caption><span class="k-table__caption-title">${a(t)}</span></caption>`:``}<thead><tr>${e.map(e=>`<th scope="col"${e.sortable?` data-sort`:``}${e.numeric?` data-numeric`:``}>${a(e.header)}</th>`).join(``)}</tr></thead><tbody>${this.data.map(t=>`<tr data-id="${a(this.getRowId(t))}">${e.map(e=>`<td>${a(n(e,t))}</td>`).join(``)}</tr>`).join(``)}</tbody></table>`;this.querySelector(`:scope > .k-table-wrap, :scope > table`)?.remove(),this.insertAdjacentHTML(`beforeend`,r)}decorateHeader(){this.table;let e=this.headCells();e.forEach((e,t)=>{if(e.classList.contains(`k-table__check`)||(e.scope||=`col`,e.hasAttribute(`data-numeric`)&&e.classList.add(`k-table__num`),!e.hasAttribute(`data-sort`)||e.querySelector(`.k-table__sort`)))return;e.setAttribute(`aria-sort`,`none`);let n=document.createElement(`button`);n.type=`button`,n.className=`k-table__sort`,n.append(...e.childNodes),e.append(n);let i=this.dataIndex(t);n.addEventListener(`click`,()=>{this.sort=this.sort?.index===i&&this.sort.dir===`ascending`?{index:i,dir:`descending`}:{index:i,dir:`ascending`},this.apply(),r(this,`kashi-sort`,{column:i,direction:this.sort.dir})})});let t=e.map(e=>e.hasAttribute(`data-numeric`));for(let e of this.bodyRows())[...e.children].forEach((e,n)=>t[n]&&e.classList.add(`k-table__num`));let i=n(this,`selectable`),a=this.headRow(),o=a?.querySelector(`.k-table__check`);if(i&&a&&!o){let e=document.createElement(`th`);e.scope=`col`,e.className=`k-table__check`,e.innerHTML=`<input type="checkbox" class="k-checkbox" aria-label="انتخاب همهٔ ردیف‌ها">`,a.prepend(e),e.querySelector(`input`).addEventListener(`change`,e=>{let t=e.target.checked;this.visibleRows().forEach(e=>this.setRow(e,t)),this.selectionChanged()})}else!i&&o&&o.remove()}headRow(){return this.table.querySelector(`:scope > thead > tr`)}headCells(){return[...this.headRow()?.children??[]]}bodyRows(){return[...this.table.querySelectorAll(`:scope > tbody > tr`)]}dataIndex(e){return this.headRow()?.querySelector(`.k-table__check`)?e-1:e}offset(){return+!!this.headRow()?.querySelector(`.k-table__check`)}decorateRows(){let e=n(this,`selectable`);this.bodyRows().forEach((t,n)=>{var r,i;(r=t.dataset).id||(r.id=String(n+1)),(i=t.dataset).order||(i.order=String(n));let o=t.querySelector(`.k-table__check`);if(e&&!o){let e=document.createElement(`td`);e.className=`k-table__check`;let n=t.children[0]?.textContent?.trim();e.innerHTML=`<input type="checkbox" class="k-checkbox" aria-label="${a(n?`انتخاب ${n}`:`انتخاب ردیف`)}">`,t.prepend(e),t.setAttribute(`aria-selected`,`false`),e.querySelector(`input`).addEventListener(`change`,e=>{this.setRow(t,e.target.checked),this.selectionChanged()})}else!e&&o&&(o.remove(),t.removeAttribute(`aria-selected`))}),this.selectionChanged(!1)}setRow(e,t){e.setAttribute(`aria-selected`,String(t));let n=e.querySelector(`.k-table__check input`);n&&(n.checked=t)}selectionChanged(e=!0){let t=this.headRow()?.querySelector(`.k-table__check input`),n=this.visibleRows(),i=n.filter(e=>e.getAttribute(`aria-selected`)===`true`).length;t&&(t.checked=n.length>0&&i===n.length,t.indeterminate=i>0&&i<n.length);let o=this.getAttribute(`name`);if(this.querySelectorAll(`:scope > input[type=hidden]`).forEach(e=>e.remove()),o)for(let e of this.selected)this.insertAdjacentHTML(`beforeend`,`<input type="hidden" name="${a(o)}" value="${a(e)}">`);e&&r(this,`kashi-change`,{selected:this.selected})}visibleRows(){return this.bodyRows().filter(e=>!e.hidden&&!e.classList.contains(`k-table__empty`))}searchBox(){let e=this.querySelector(`:scope > .k-table-search`);if(!n(this,`searchable`))return e?.remove();if(e)return;let t=`${this.key}-search`,r=document.createElement(`div`);r.className=`k-table-search k-field`,r.style.marginBlockEnd=`var(--k-space-3)`,r.innerHTML=`<div class="k-input k-input--sm"><input id="${t}" class="k-input__control" type="search" placeholder="جستجو در جدول" aria-label="جستجو در جدول"></div><span class="k-sr-only" aria-live="polite"></span>`,this.prepend(r);let i=r.querySelector(`input`);i.addEventListener(`input`,()=>{this.query=i.value,this.apply(),r.querySelector(`.k-sr-only`).textContent=`${s(this.visibleRows().length)} ردیف`})}apply(){let e=this.table.querySelector(`:scope > tbody`);if(!e)return;let t=this.offset(),n=this.bodyRows().filter(e=>!e.classList.contains(`k-table__empty`)),r=this.headCells();r.forEach((e,n)=>{e.hasAttribute(`aria-sort`)&&e.setAttribute(`aria-sort`,this.sort&&this.sort.index===n-t?this.sort.dir:`none`)});let i=n.sort((e,t)=>Number(e.dataset.order)-Number(t.dataset.order));if(this.sort){let{index:e,dir:n}=this.sort,a=r[e+t]?.hasAttribute(`data-numeric`),o=n=>{let r=n.children[e+t],i=r?.dataset.value??r?.textContent?.trim()??``;return a?l(i):i},s=n===`ascending`?1:-1;i=[...i].sort((e,t)=>{let n=o(e),r=o(t);return(typeof n==`number`&&typeof r==`number`?n-r:String(n).localeCompare(String(r),`fa`))*s})}let a=u(this.query.trim());for(let t of i)t.hidden=!!a&&!u(t.textContent??``).includes(a),e.append(t);if(e.querySelector(`.k-table__empty`)?.remove(),a&&!this.visibleRows().length){let t=r.length;e.insertAdjacentHTML(`beforeend`,`<tr class="k-table__empty"><td colspan="${t}"><p style="padding: 2rem; margin: 0; text-align: center">نتیجه‌ای پیدا نشد.</p></td></tr>`)}this.selectionChanged(!1)}};d.observedAttributes=[`selectable`,`searchable`,`compact`,`striped`,`sticky-header`,`caption`,`name`],e(`kashi-data-table`,d,`block`);export{d as KashiDataTable};
@@ -1 +0,0 @@
1
- import{i as e,r as t}from"./digits-DE1YGT94.js";function n(n,{digits:r}={}){let i=n.replace(/[يى]/g,`ی`).replace(/ك/g,`ک`).replace(/ة/g,`ه`).replace(/[ً-ٰٟ]/g,``).replace(/ـ/g,``).replace(/‌{2,}/g,`‌`).replace(/ *‌ */g,`‌`).replace(/[ \t]{2,}/g,` `).trim();return r===`fa`&&(i=e(t(i))),r===`latin`&&(i=t(i)),i}function r(t,{digits:n=!0}={}){let r={arabic:0,zwnj:0,punctuation:0,digits:0,spacing:0},i=(e,t,n,i)=>e.replace(t,(...e)=>(r[i]++,typeof n==`string`?n.replace(/\$(\d)/g,(t,n)=>e[Number(n)]??``):n(...e))),a=`[\\u0621-\\u063A\\u0641-\\u064A\\u067E\\u0686\\u0698\\u06A9\\u06AF\\u06CC]`,o=t;o=i(o,/[يى]/g,`ی`,`arabic`),o=i(o,/ك/g,`ک`,`arabic`),o=i(o,RegExp(`(^|[\\s(«])(ن?می) (?=${a})`,`g`),`$1$2‌`,`zwnj`),o=i(o,RegExp(`(${a}) (ها|های|هایی|هایم|هایت|هایش|تر|ترین)(?=$|[\\s.،؛؟!»)])`,`g`),`$1‌$2`,`zwnj`),o=i(o,RegExp(`(${a}\\s*),(?=\\s)`,`g`),`$1،`,`punctuation`),o=i(o,RegExp(`(${a}\\s*)\\?`,`g`),`$1؟`,`punctuation`),o=i(o,RegExp(`(${a}\\s*);`,`g`),`$1؛`,`punctuation`),o=i(o,/ +([،؛؟!.:])(?=\s|$)/g,`$1`,`spacing`),o=i(o,/ {2,}/g,` `,`spacing`),n&&(o=i(o,RegExp(`(${a}[\\s\\u200c]*)(\\d+)|(\\d+)(?=[\\s\\u200c]*${a})`,`g`),(t,n,r,i)=>n?n+e(r):e(i),`digits`));let s=Object.values(r).reduce((e,t)=>e+t,0);return{text:o,fixes:r,count:s}}export{n,r as t};
@@ -1 +0,0 @@
1
- const e=[``,`یک`,`دو`,`سه`,`چهار`,`پنج`,`شش`,`هفت`,`هشت`,`نه`],t=[`ده`,`یازده`,`دوازده`,`سیزده`,`چهارده`,`پانزده`,`شانزده`,`هفده`,`هجده`,`نوزده`],n=[``,``,`بیست`,`سی`,`چهل`,`پنجاه`,`شصت`,`هفتاد`,`هشتاد`,`نود`],r=[``,`صد`,`دویست`,`سیصد`,`چهارصد`,`پانصد`,`ششصد`,`هفتصد`,`هشتصد`,`نهصد`],i=[``,`هزار`,`میلیون`,`میلیارد`,`تریلیون`];function a(i){let a=[],o=Math.floor(i/100),s=i%100;return o&&a.push(r[o]),s>=10&&s<20?a.push(t[s-10]):(s>=20&&a.push(n[Math.floor(s/10)]),s%10&&a.push(e[s%10])),a.join(` و `)}function o(e){let t=typeof e==`bigint`?e:BigInt(Math.trunc(e));if(t===0n)return`صفر`;let n=t<0n;if(n&&(t=-t),t>=10n**15n)throw RangeError(`عدد بزرگ‌تر از حد پشتیبانی‌شده است`);let r=[];for(let e=0;t>0n;e++,t/=1000n){let n=Number(t%1000n);if(!n)continue;let o=e===1&&n===1?``:a(n);r.unshift([o,i[e]].filter(Boolean).join(` `))}return(n?`منفی `:``)+r.join(` و `)}export{o as t};