@kashi-ui/elements 0.25.0 → 0.26.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 (33) hide show
  1. package/README.md +2 -1
  2. package/dist/appointment.d.ts +40 -0
  3. package/dist/appointment.js +174 -0
  4. package/dist/base.js +2 -0
  5. package/dist/basic.d.ts +43 -0
  6. package/dist/basic.js +223 -0
  7. package/dist/cdn/appointment-DkMxtSWi.js +1 -0
  8. package/dist/cdn/base-DfzNTdQk.js +1 -0
  9. package/dist/cdn/basic-B5n1okZO.js +1 -0
  10. package/dist/cdn/calendar-oMlnK1_D.js +16 -0
  11. package/dist/cdn/{charts-DNOWi4sJ.js → charts-SHKq2S4I.js} +1 -1
  12. package/dist/cdn/{combobox-ZGrZ5okg.js → combobox-DiGy7lAB.js} +1 -1
  13. package/dist/cdn/{controls-K-OZcjg4.js → controls-C6zwNYWs.js} +1 -1
  14. package/dist/cdn/{display-C975tS7j.js → display-DZFW9EEX.js} +1 -1
  15. package/dist/cdn/{fields-BUTaSN8m.js → fields-D2hmrvVR.js} +1 -1
  16. package/dist/cdn/forms-CeItYHFx.js +1 -0
  17. package/dist/cdn/holidays-BwsAEOI1.js +1 -0
  18. package/dist/cdn/{inputs-BjOddAM7.js → inputs-DuP7P3ka.js} +1 -1
  19. package/dist/cdn/kashi-elements.js +1 -1
  20. package/dist/cdn/{map-BHuusa4t.js → map-w5X2fTQI.js} +1 -1
  21. package/dist/cdn/{menu-DhrqyLgy.js → menu-Cga7QOfs.js} +1 -1
  22. package/dist/cdn/{nav-D_w5BV_K.js → nav-CwPZ20z-.js} +1 -1
  23. package/dist/cdn/{overlay-DX9un2xm.js → overlay-BDzwsBN5.js} +1 -1
  24. package/dist/cdn/{pickers-BFLpUruK.js → pickers-BOpaZ-7q.js} +1 -1
  25. package/dist/cdn/{table-DPQfDMs-.js → table-BdF43L5q.js} +1 -1
  26. package/dist/cdn/time-DXw4vOne.js +1 -0
  27. package/dist/cdn.js +2 -0
  28. package/dist/index.d.ts +8 -2
  29. package/dist/index.js +4 -1
  30. package/package.json +4 -4
  31. package/dist/cdn/base-Cmq7zeIG.js +0 -1
  32. package/dist/cdn/calendar-Dm3fq2bs.js +0 -16
  33. package/dist/cdn/forms-C-effPKn.js +0 -1
@@ -1 +1 @@
1
- import{a as e,n as t,s as n,t as r}from"./base-Cmq7zeIG.js";let i=1;function a(){let e=document.querySelectorAll(`kashi-toaster`);if(e.length)return e[e.length-1];let t=document.createElement(`kashi-toaster`);return document.body.append(t),t}function o(e){let t=e.id??i++;return a().upsert({...e,id:t}),t}function s(e){return o(typeof e==`string`?{title:e}:e)}s.success=(e,t={})=>s({...t,title:e,tone:`success`}),s.error=(e,t={})=>s({...t,title:e,tone:`error`}),s.warning=(e,t={})=>s({...t,title:e,tone:`warning`}),s.info=(e,t={})=>s({...t,title:e,tone:`info`}),s.dismiss=e=>document.querySelectorAll(`kashi-toaster`).forEach(t=>t.dismiss(e)),s.promise=(e,t)=>{let n=o({title:t.loading,tone:`info`,duration:1/0,loading:!0});return e.then(e=>o({id:n,title:typeof t.success==`function`?t.success(e):t.success,tone:`success`}),e=>o({id:n,title:typeof t.error==`function`?t.error(e):t.error,tone:`error`})),e};var c=class extends r{constructor(){super(...arguments),this.list=null}connectedCallback(){this.list||=(this.innerHTML=`<section><ol class="k-toaster" aria-live="polite"></ol></section>`,this.querySelector(`ol`)),this.decorate()}attributeChangedCallback(){this.list&&this.decorate()}decorate(){let e=this.getAttribute(`placement`)??`bottom-end`;this.list.className=`k-toaster k-toaster--${e}`,this.list.dataset.placement=e,this.querySelector(`section`).setAttribute(`aria-label`,this.getAttribute(`label`)??`اعلان‌ها`)}upsert(e){this.list||this.connectedCallback();let t=[...this.list.children].find(t=>t.toastId===e.id),n=l(e,this.getAttribute(`close-label`)??`بستن اعلان`,()=>this.dismiss(e.id));t?(t.stop?.(),t.replaceWith(n)):this.list.append(n);let r=Number(this.getAttribute(`max`))||5;for(;this.list.children.length>r;)this.list.firstElementChild.stop?.(),this.list.firstElementChild.remove()}dismiss(e){let t=[...this.list?.children??[]].find(t=>t.toastId===e);t&&t.dataset.state!==`closing`&&(t.stop?.(),t.dataset.state=`closing`,setTimeout(()=>t.remove(),200))}};c.observedAttributes=[`placement`,`label`];function l(e,r,i){let a=e.duration??(e.action?1/0:5e3),o=e.tone??`neutral`,s=document.createElement(`li`);s.toastId=e.id,s.className=`k-toast${o===`neutral`?``:` k-toast--${o}`}`,s.dataset.state=`open`,s.setAttribute(`role`,o===`error`?`alert`:`status`),s.innerHTML=`<span class="k-toast__icon" aria-hidden="true">${e.loading?`<span class="k-spinner k-spinner--sm" style="color: inherit"></span>`:t[o===`neutral`?`info`:o]}</span><div class="k-toast__content"><p class="k-toast__title">${n(e.title)}</p>${e.description?`<p class="k-toast__description">${n(e.description)}</p>`:``}${e.action?`<button type="button" class="k-btn k-btn--link k-toast__action">${n(e.action.label)}</button>`:``}</div><button type="button" class="k-btn k-btn--tertiary k-btn--icon k-btn--sm k-toast__close" aria-label="${n(r)}">${t.close}</button>${Number.isFinite(a)?`<span class="k-toast__progress" aria-hidden="true" style="animation-duration: ${a}ms"></span>`:``}`,s.querySelector(`.k-toast__close`).addEventListener(`click`,i),s.querySelector(`.k-toast__action`)?.addEventListener(`click`,()=>{e.action.onClick(),i()}),s.addEventListener(`keydown`,e=>e.key===`Escape`&&i());let c=a,l=0,u,d=()=>{u===void 0&&Number.isFinite(c)&&(l=Date.now(),u=setTimeout(i,c))},f=()=>{u!==void 0&&(clearTimeout(u),u=void 0,c-=Date.now()-l)};return s.addEventListener(`mouseenter`,f),s.addEventListener(`focusin`,f),s.addEventListener(`mouseleave`,d),s.addEventListener(`focusout`,d),s.stop=()=>{clearTimeout(u),c=1/0},d(),s}e(`kashi-toaster`,c),typeof document<`u`&&document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`[data-kashi-toast]`);t&&s({title:t.dataset.kashiToast,description:t.dataset.description,tone:t.dataset.tone??`neutral`})});const u=/* @__PURE__ */ new Set([[[`kashi-national-id`,`kashi-legal-id`,`kashi-mobile`,`kashi-landline`,`kashi-card-number`,`kashi-iban`,`kashi-postal-code`,`kashi-price`],()=>import(`./inputs-BjOddAM7.js`)],[[`kashi-otp`],()=>import(`./fields-BUTaSN8m.js`)],[[`kashi-combobox`,`kashi-province-select`,`kashi-city-select`],()=>import(`./combobox-ZGrZ5okg.js`)],[[`kashi-iran-map`,`kashi-address-form`],()=>import(`./map-BHuusa4t.js`)],[[`kashi-calendar`,`kashi-date-picker`],()=>import(`./calendar-Dm3fq2bs.js`)],[[`kashi-money`,`kashi-date`,`kashi-relative-time`,`kashi-countdown`],()=>import(`./display-C975tS7j.js`)],[[`kashi-dialog`,`kashi-tabs`,`kashi-tooltip`,`kashi-copy-button`],()=>import(`./overlay-DX9un2xm.js`)],[[`kashi-dropdown-menu`,`kashi-popover`],()=>import(`./menu-DhrqyLgy.js`)],[[`kashi-tag-input`,`kashi-number-input`,`kashi-rating`,`kashi-pagination`],()=>import(`./controls-K-OZcjg4.js`)],[[`kashi-data-table`],()=>import(`./table-DPQfDMs-.js`)],[[`kashi-multi-select`,`kashi-slider`,`kashi-chip-group`,`kashi-password-strength`,`kashi-persian-textarea`,`kashi-keyboard-fix`,`kashi-time-input`,`kashi-plate-input`,`kashi-inline-edit`],()=>import(`./forms-C-effPKn.js`)],[[`kashi-date-range-picker`,`kashi-month-picker`,`kashi-file-upload`,`kashi-color-picker`],()=>import(`./pickers-BFLpUruK.js`)],[[`kashi-bar-chart`,`kashi-line-chart`,`kashi-pie-chart`,`kashi-bar-list`,`kashi-proportion-bar`,`kashi-sparkline`,`kashi-activity-heatmap`],()=>import(`./charts-DNOWi4sJ.js`)],[[`kashi-command-palette`,`kashi-context-menu`,`kashi-carousel`,`kashi-tree-view`,`kashi-tour`,`kashi-splitter`,`kashi-side-nav`],()=>import(`./nav-D_w5BV_K.js`)]]);function d(){for(let e of u)document.querySelector(e[0].join(`,`))&&(u.delete(e),e[1]().catch(e=>console.error(`[kashi] بارگذاری نشد:`,e)));u.size||p?.disconnect()}function f(){let e=[...u].map(([,e])=>e());return u.clear(),p?.disconnect(),Promise.all(e)}let p=null;typeof document<`u`&&(d(),p=new MutationObserver(d),p.observe(document.documentElement,{childList:!0,subtree:!0}));export{f as loadAll,s as toast};
1
+ import{a as e,n as t,s as n,t as r}from"./base-DfzNTdQk.js";let i=1;function a(){let e=document.querySelectorAll(`kashi-toaster`);if(e.length)return e[e.length-1];let t=document.createElement(`kashi-toaster`);return document.body.append(t),t}function o(e){let t=e.id??i++;return a().upsert({...e,id:t}),t}function s(e){return o(typeof e==`string`?{title:e}:e)}s.success=(e,t={})=>s({...t,title:e,tone:`success`}),s.error=(e,t={})=>s({...t,title:e,tone:`error`}),s.warning=(e,t={})=>s({...t,title:e,tone:`warning`}),s.info=(e,t={})=>s({...t,title:e,tone:`info`}),s.dismiss=e=>document.querySelectorAll(`kashi-toaster`).forEach(t=>t.dismiss(e)),s.promise=(e,t)=>{let n=o({title:t.loading,tone:`info`,duration:1/0,loading:!0});return e.then(e=>o({id:n,title:typeof t.success==`function`?t.success(e):t.success,tone:`success`}),e=>o({id:n,title:typeof t.error==`function`?t.error(e):t.error,tone:`error`})),e};var c=class extends r{constructor(){super(...arguments),this.list=null}connectedCallback(){this.list||=(this.innerHTML=`<section><ol class="k-toaster" aria-live="polite"></ol></section>`,this.querySelector(`ol`)),this.decorate()}attributeChangedCallback(){this.list&&this.decorate()}decorate(){let e=this.getAttribute(`placement`)??`bottom-end`;this.list.className=`k-toaster k-toaster--${e}`,this.list.dataset.placement=e,this.querySelector(`section`).setAttribute(`aria-label`,this.getAttribute(`label`)??`اعلان‌ها`)}upsert(e){this.list||this.connectedCallback();let t=[...this.list.children].find(t=>t.toastId===e.id),n=l(e,this.getAttribute(`close-label`)??`بستن اعلان`,()=>this.dismiss(e.id));t?(t.stop?.(),t.replaceWith(n)):this.list.append(n);let r=Number(this.getAttribute(`max`))||5;for(;this.list.children.length>r;)this.list.firstElementChild.stop?.(),this.list.firstElementChild.remove()}dismiss(e){let t=[...this.list?.children??[]].find(t=>t.toastId===e);t&&t.dataset.state!==`closing`&&(t.stop?.(),t.dataset.state=`closing`,setTimeout(()=>t.remove(),200))}};c.observedAttributes=[`placement`,`label`];function l(e,r,i){let a=e.duration??(e.action?1/0:5e3),o=e.tone??`neutral`,s=document.createElement(`li`);s.toastId=e.id,s.className=`k-toast${o===`neutral`?``:` k-toast--${o}`}`,s.dataset.state=`open`,s.setAttribute(`role`,o===`error`?`alert`:`status`),s.innerHTML=`<span class="k-toast__icon" aria-hidden="true">${e.loading?`<span class="k-spinner k-spinner--sm" style="color: inherit"></span>`:t[o===`neutral`?`info`:o]}</span><div class="k-toast__content"><p class="k-toast__title">${n(e.title)}</p>${e.description?`<p class="k-toast__description">${n(e.description)}</p>`:``}${e.action?`<button type="button" class="k-btn k-btn--link k-toast__action">${n(e.action.label)}</button>`:``}</div><button type="button" class="k-btn k-btn--tertiary k-btn--icon k-btn--sm k-toast__close" aria-label="${n(r)}">${t.close}</button>${Number.isFinite(a)?`<span class="k-toast__progress" aria-hidden="true" style="animation-duration: ${a}ms"></span>`:``}`,s.querySelector(`.k-toast__close`).addEventListener(`click`,i),s.querySelector(`.k-toast__action`)?.addEventListener(`click`,()=>{e.action.onClick(),i()}),s.addEventListener(`keydown`,e=>e.key===`Escape`&&i());let c=a,l=0,u,d=()=>{u===void 0&&Number.isFinite(c)&&(l=Date.now(),u=setTimeout(i,c))},f=()=>{u!==void 0&&(clearTimeout(u),u=void 0,c-=Date.now()-l)};return s.addEventListener(`mouseenter`,f),s.addEventListener(`focusin`,f),s.addEventListener(`mouseleave`,d),s.addEventListener(`focusout`,d),s.stop=()=>{clearTimeout(u),c=1/0},d(),s}e(`kashi-toaster`,c),typeof document<`u`&&document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`[data-kashi-toast]`);t&&s({title:t.dataset.kashiToast,description:t.dataset.description,tone:t.dataset.tone??`neutral`})});const u=/* @__PURE__ */ new Set([[[`kashi-national-id`,`kashi-legal-id`,`kashi-mobile`,`kashi-landline`,`kashi-card-number`,`kashi-iban`,`kashi-postal-code`,`kashi-price`],()=>import(`./inputs-DuP7P3ka.js`)],[[`kashi-otp`],()=>import(`./fields-D2hmrvVR.js`)],[[`kashi-combobox`,`kashi-province-select`,`kashi-city-select`],()=>import(`./combobox-DiGy7lAB.js`)],[[`kashi-iran-map`,`kashi-address-form`],()=>import(`./map-w5X2fTQI.js`)],[[`kashi-calendar`,`kashi-date-picker`],()=>import(`./calendar-oMlnK1_D.js`)],[[`kashi-money`,`kashi-date`,`kashi-relative-time`,`kashi-countdown`],()=>import(`./display-DZFW9EEX.js`)],[[`kashi-dialog`,`kashi-tabs`,`kashi-tooltip`,`kashi-copy-button`],()=>import(`./overlay-BDzwsBN5.js`)],[[`kashi-dropdown-menu`,`kashi-popover`],()=>import(`./menu-Cga7QOfs.js`)],[[`kashi-tag-input`,`kashi-number-input`,`kashi-rating`,`kashi-pagination`],()=>import(`./controls-C6zwNYWs.js`)],[[`kashi-data-table`],()=>import(`./table-BdF43L5q.js`)],[[`kashi-multi-select`,`kashi-slider`,`kashi-chip-group`,`kashi-password-strength`,`kashi-persian-textarea`,`kashi-keyboard-fix`,`kashi-time-input`,`kashi-plate-input`,`kashi-inline-edit`],()=>import(`./forms-CeItYHFx.js`)],[[`kashi-date-range-picker`,`kashi-month-picker`,`kashi-file-upload`,`kashi-color-picker`],()=>import(`./pickers-BOpaZ-7q.js`)],[[`kashi-bar-chart`,`kashi-line-chart`,`kashi-pie-chart`,`kashi-bar-list`,`kashi-proportion-bar`,`kashi-sparkline`,`kashi-activity-heatmap`],()=>import(`./charts-SHKq2S4I.js`)],[[`kashi-input`,`kashi-textarea`,`kashi-banner`],()=>import(`./basic-B5n1okZO.js`)],[[`kashi-appointment-picker`],()=>import(`./appointment-DkMxtSWi.js`)],[[`kashi-command-palette`,`kashi-context-menu`,`kashi-carousel`,`kashi-tree-view`,`kashi-tour`,`kashi-splitter`,`kashi-side-nav`],()=>import(`./nav-CwPZ20z-.js`)]]);function d(){for(let e of u)document.querySelector(e[0].join(`,`))&&(u.delete(e),e[1]().catch(e=>console.error(`[kashi] بارگذاری نشد:`,e)));u.size||p?.disconnect()}function f(){let e=[...u].map(([,e])=>e());return u.clear(),p?.disconnect(),Promise.all(e)}let p=null;typeof document<`u`&&(d(),p=new MutationObserver(d),p.observe(document.documentElement,{childList:!0,subtree:!0}));export{f as loadAll,s as toast};
@@ -1,4 +1,4 @@
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`:``}>
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-DfzNTdQk.js";import{t as s}from"./digits-DE1YGT94.js";import{n as c,r as l,t as u}from"./combobox-DiGy7lAB.js";import"./inputs-DuP7P3ka.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
2
  ${d?`<legend class="k-address__legend">${a(d)}</legend>`:``}
3
3
  <div class="k-address__fields">
4
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>
@@ -1 +1 @@
1
- import{a as e,d as t,o as n,r,s as i,t as a}from"./base-Cmq7zeIG.js";const o=e=>[...e.querySelectorAll(`[role^="menuitem"]:not([aria-disabled="true"])`)];var s=class extends a{constructor(){super(...arguments),this.menu=null,this.trigger=null,this.key=t(`kashi-menu`),this.onOutside=e=>{this.contains(e.target)||this.close(!1)}}connectedCallback(){r(()=>this.isConnected&&!this.menu&&this.build())}disconnectedCallback(){document.removeEventListener(`pointerdown`,this.onOutside)}attributeChangedCallback(){this.menu&&this.decorate()}get open(){return!!this.menu&&!this.menu.hidden}build(){let[e,...t]=[...this.children];if(!e)return;this.classList.add(`k-menu-anchor`),this.trigger=e,e.id||=`${this.key}-trigger`,e.setAttribute(`aria-haspopup`,`menu`),e.setAttribute(`aria-expanded`,`false`);let r=document.createElement(`ul`);r.id=`${this.key}-menu`,r.setAttribute(`role`,`menu`),r.hidden=!0;for(let e of t){let t=document.createElement(`li`);if(e.tagName===`HR`)t.setAttribute(`role`,`separator`),t.className=`k-menu__separator`,e.remove();else if(e.hasAttribute(`data-label`))t.setAttribute(`role`,`presentation`),t.className=`k-menu__label`,t.textContent=e.textContent,e.remove();else{t.setAttribute(`role`,`none`);let n=e.hasAttribute(`data-checked`);e.setAttribute(`role`,n?`menuitemcheckbox`:`menuitem`),e.tabIndex=-1,e.classList.add(`k-menu__item`),e.dataset.tone===`danger`&&e.classList.add(`k-menu__item--danger`),e instanceof HTMLButtonElement&&(e.type=`button`,e.disabled&&(e.disabled=!1,e.setAttribute(`aria-disabled`,`true`)));let r=e.innerHTML;e.innerHTML=`${n?`<span class="k-menu__check" aria-hidden="true"></span>`:``}<span>${r}</span>${e.dataset.shortcut?`<span class="k-menu__shortcut" aria-hidden="true">${i(e.dataset.shortcut)}</span>`:``}`,n&&this.paintCheck(e),t.append(e)}r.append(t)}this.append(r),this.menu=r,this.decorate(),e.addEventListener(`click`,()=>this.open?this.close(!1):this.show(`first`)),e.addEventListener(`keydown`,e=>{(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),this.show(e.key===`ArrowUp`?`last`:`first`))}),r.addEventListener(`keydown`,e=>this.onKey(e)),r.addEventListener(`click`,e=>{let t=e.target.closest(`[role^="menuitem"]`);t&&t.getAttribute(`aria-disabled`)!==`true`&&(t.getAttribute(`role`)===`menuitemcheckbox`&&(t.dataset.checked=String(t.dataset.checked!==`true`),this.paintCheck(t)),n(this,`kashi-select`,{value:t.dataset.value??t.textContent?.trim()??``,checked:t.dataset.checked===void 0?void 0:t.dataset.checked===`true`}),t.getAttribute(`role`)===`menuitem`&&this.close(t.tagName!==`A`))})}paintCheck(e){let t=e.dataset.checked===`true`;e.setAttribute(`aria-checked`,String(t)),e.querySelector(`.k-menu__check`).innerHTML=t?`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m5 10.5 3.2 3L15 7"/></svg>`:``}decorate(){let e=this.getAttribute(`label`);this.menu.className=`k-menu${this.getAttribute(`align`)===`end`?` k-menu--end`:``}`,e?(this.menu.setAttribute(`aria-label`,e),this.menu.removeAttribute(`aria-labelledby`)):(this.menu.setAttribute(`aria-labelledby`,this.trigger.id),this.menu.removeAttribute(`aria-label`))}show(e=`first`){if(!this.menu)return;this.menu.hidden=!1,this.trigger.setAttribute(`aria-expanded`,`true`),this.trigger.setAttribute(`aria-controls`,this.menu.id);let t=o(this.menu);(e===`last`?t.at(-1):t[0])?.focus(),document.addEventListener(`pointerdown`,this.onOutside)}close(e=!0){this.menu&&!this.menu.hidden&&(this.menu.hidden=!0,this.trigger.setAttribute(`aria-expanded`,`false`),this.trigger.removeAttribute(`aria-controls`),document.removeEventListener(`pointerdown`,this.onOutside),e&&this.trigger.focus())}onKey(e){let t=o(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 if(e.key.length===1&&/\S/.test(e.key)){let r=e.key.toLowerCase();[...t.slice(n+1),...t.slice(0,n+1)].find(e=>e.textContent?.trim().toLowerCase().startsWith(r))?.focus()}else return;e.preventDefault()}};s.observedAttributes=[`label`,`align`];var c=class extends a{constructor(){super(...arguments),this.panel=null,this.trigger=null,this.key=t(`kashi-pop`),this.onOutside=e=>{this.contains(e.target)||this.close(!1)}}connectedCallback(){r(()=>this.isConnected&&!this.panel&&this.build())}disconnectedCallback(){document.removeEventListener(`pointerdown`,this.onOutside)}attributeChangedCallback(){this.panel&&this.decorate()}get open(){return!!this.panel&&!this.panel.hidden}set open(e){e?this.show():this.close(!1)}build(){let[e,...t]=[...this.childNodes].filter(e=>e.nodeType===1||e.textContent?.trim());if(!e)return;this.classList.add(`k-popover-anchor`),this.trigger=e,e.setAttribute(`aria-haspopup`,`dialog`),e.setAttribute(`aria-expanded`,`false`);let n=document.createElement(`div`);n.id=`${this.key}-panel`,n.setAttribute(`role`,`dialog`),n.tabIndex=-1,n.hidden=!0,n.innerHTML=`<p class="k-popover__title" id="${this.key}-title"></p><div class="k-popover__body"></div>`,n.querySelector(`.k-popover__body`).append(...t),this.append(n),this.panel=n,this.decorate(),e.addEventListener(`click`,()=>this.open?this.close(!1):this.show()),n.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.stopPropagation(),this.close(!0))}),n.addEventListener(`focusout`,e=>{let t=e.relatedTarget;t&&!this.contains(t)&&this.close(!1)})}decorate(){let e=this.panel,[t,n]=(this.getAttribute(`placement`)??`bottom-start`).split(`-`);e.className=[`k-popover`,t===`top`&&`k-popover--top`,n===`end`&&`k-popover--end`].filter(Boolean).join(` `);let r=this.getAttribute(`heading`),i=e.querySelector(`.k-popover__title`);i.textContent=r??``,i.hidden=!r,r?(e.setAttribute(`aria-labelledby`,i.id),e.removeAttribute(`aria-label`)):(e.removeAttribute(`aria-labelledby`),e.setAttribute(`aria-label`,this.getAttribute(`label`)??``))}show(){this.panel&&!this.open&&(this.panel.hidden=!1,this.trigger.setAttribute(`aria-expanded`,`true`),this.trigger.setAttribute(`aria-controls`,this.panel.id),(this.panel.querySelector(`.k-popover__body :is(a[href], button:not([disabled]), input:not([disabled]), select, textarea, [tabindex]:not([tabindex="-1"]))`)??this.panel).focus(),document.addEventListener(`pointerdown`,this.onOutside),n(this,`kashi-open`,{}))}close(e=!0){this.panel&&!this.panel.hidden&&(this.panel.hidden=!0,this.trigger.setAttribute(`aria-expanded`,`false`),this.trigger.removeAttribute(`aria-controls`),document.removeEventListener(`pointerdown`,this.onOutside),e&&this.trigger.focus(),n(this,`kashi-close`,{}))}};c.observedAttributes=[`heading`,`placement`,`label`],e(`kashi-dropdown-menu`,s),e(`kashi-popover`,c);export{s as KashiDropdownMenu,c as KashiPopover};
1
+ import{a as e,d as t,o as n,r,s as i,t as a}from"./base-DfzNTdQk.js";const o=e=>[...e.querySelectorAll(`[role^="menuitem"]:not([aria-disabled="true"])`)];var s=class extends a{constructor(){super(...arguments),this.menu=null,this.trigger=null,this.key=t(`kashi-menu`),this.onOutside=e=>{this.contains(e.target)||this.close(!1)}}connectedCallback(){r(()=>this.isConnected&&!this.menu&&this.build())}disconnectedCallback(){document.removeEventListener(`pointerdown`,this.onOutside)}attributeChangedCallback(){this.menu&&this.decorate()}get open(){return!!this.menu&&!this.menu.hidden}build(){let[e,...t]=[...this.children];if(!e)return;this.classList.add(`k-menu-anchor`),this.trigger=e,e.id||=`${this.key}-trigger`,e.setAttribute(`aria-haspopup`,`menu`),e.setAttribute(`aria-expanded`,`false`);let r=document.createElement(`ul`);r.id=`${this.key}-menu`,r.setAttribute(`role`,`menu`),r.hidden=!0;for(let e of t){let t=document.createElement(`li`);if(e.tagName===`HR`)t.setAttribute(`role`,`separator`),t.className=`k-menu__separator`,e.remove();else if(e.hasAttribute(`data-label`))t.setAttribute(`role`,`presentation`),t.className=`k-menu__label`,t.textContent=e.textContent,e.remove();else{t.setAttribute(`role`,`none`);let n=e.hasAttribute(`data-checked`);e.setAttribute(`role`,n?`menuitemcheckbox`:`menuitem`),e.tabIndex=-1,e.classList.add(`k-menu__item`),e.dataset.tone===`danger`&&e.classList.add(`k-menu__item--danger`),e instanceof HTMLButtonElement&&(e.type=`button`,e.disabled&&(e.disabled=!1,e.setAttribute(`aria-disabled`,`true`)));let r=e.innerHTML;e.innerHTML=`${n?`<span class="k-menu__check" aria-hidden="true"></span>`:``}<span>${r}</span>${e.dataset.shortcut?`<span class="k-menu__shortcut" aria-hidden="true">${i(e.dataset.shortcut)}</span>`:``}`,n&&this.paintCheck(e),t.append(e)}r.append(t)}this.append(r),this.menu=r,this.decorate(),e.addEventListener(`click`,()=>this.open?this.close(!1):this.show(`first`)),e.addEventListener(`keydown`,e=>{(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),this.show(e.key===`ArrowUp`?`last`:`first`))}),r.addEventListener(`keydown`,e=>this.onKey(e)),r.addEventListener(`click`,e=>{let t=e.target.closest(`[role^="menuitem"]`);t&&t.getAttribute(`aria-disabled`)!==`true`&&(t.getAttribute(`role`)===`menuitemcheckbox`&&(t.dataset.checked=String(t.dataset.checked!==`true`),this.paintCheck(t)),n(this,`kashi-select`,{value:t.dataset.value??t.textContent?.trim()??``,checked:t.dataset.checked===void 0?void 0:t.dataset.checked===`true`}),t.getAttribute(`role`)===`menuitem`&&this.close(t.tagName!==`A`))})}paintCheck(e){let t=e.dataset.checked===`true`;e.setAttribute(`aria-checked`,String(t)),e.querySelector(`.k-menu__check`).innerHTML=t?`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m5 10.5 3.2 3L15 7"/></svg>`:``}decorate(){let e=this.getAttribute(`label`);this.menu.className=`k-menu${this.getAttribute(`align`)===`end`?` k-menu--end`:``}`,e?(this.menu.setAttribute(`aria-label`,e),this.menu.removeAttribute(`aria-labelledby`)):(this.menu.setAttribute(`aria-labelledby`,this.trigger.id),this.menu.removeAttribute(`aria-label`))}show(e=`first`){if(!this.menu)return;this.menu.hidden=!1,this.trigger.setAttribute(`aria-expanded`,`true`),this.trigger.setAttribute(`aria-controls`,this.menu.id);let t=o(this.menu);(e===`last`?t.at(-1):t[0])?.focus(),document.addEventListener(`pointerdown`,this.onOutside)}close(e=!0){this.menu&&!this.menu.hidden&&(this.menu.hidden=!0,this.trigger.setAttribute(`aria-expanded`,`false`),this.trigger.removeAttribute(`aria-controls`),document.removeEventListener(`pointerdown`,this.onOutside),e&&this.trigger.focus())}onKey(e){let t=o(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 if(e.key.length===1&&/\S/.test(e.key)){let r=e.key.toLowerCase();[...t.slice(n+1),...t.slice(0,n+1)].find(e=>e.textContent?.trim().toLowerCase().startsWith(r))?.focus()}else return;e.preventDefault()}};s.observedAttributes=[`label`,`align`];var c=class extends a{constructor(){super(...arguments),this.panel=null,this.trigger=null,this.key=t(`kashi-pop`),this.onOutside=e=>{this.contains(e.target)||this.close(!1)}}connectedCallback(){r(()=>this.isConnected&&!this.panel&&this.build())}disconnectedCallback(){document.removeEventListener(`pointerdown`,this.onOutside)}attributeChangedCallback(){this.panel&&this.decorate()}get open(){return!!this.panel&&!this.panel.hidden}set open(e){e?this.show():this.close(!1)}build(){let[e,...t]=[...this.childNodes].filter(e=>e.nodeType===1||e.textContent?.trim());if(!e)return;this.classList.add(`k-popover-anchor`),this.trigger=e,e.setAttribute(`aria-haspopup`,`dialog`),e.setAttribute(`aria-expanded`,`false`);let n=document.createElement(`div`);n.id=`${this.key}-panel`,n.setAttribute(`role`,`dialog`),n.tabIndex=-1,n.hidden=!0,n.innerHTML=`<p class="k-popover__title" id="${this.key}-title"></p><div class="k-popover__body"></div>`,n.querySelector(`.k-popover__body`).append(...t),this.append(n),this.panel=n,this.decorate(),e.addEventListener(`click`,()=>this.open?this.close(!1):this.show()),n.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.stopPropagation(),this.close(!0))}),n.addEventListener(`focusout`,e=>{let t=e.relatedTarget;t&&!this.contains(t)&&this.close(!1)})}decorate(){let e=this.panel,[t,n]=(this.getAttribute(`placement`)??`bottom-start`).split(`-`);e.className=[`k-popover`,t===`top`&&`k-popover--top`,n===`end`&&`k-popover--end`].filter(Boolean).join(` `);let r=this.getAttribute(`heading`),i=e.querySelector(`.k-popover__title`);i.textContent=r??``,i.hidden=!r,r?(e.setAttribute(`aria-labelledby`,i.id),e.removeAttribute(`aria-label`)):(e.removeAttribute(`aria-labelledby`),e.setAttribute(`aria-label`,this.getAttribute(`label`)??``))}show(){this.panel&&!this.open&&(this.panel.hidden=!1,this.trigger.setAttribute(`aria-expanded`,`true`),this.trigger.setAttribute(`aria-controls`,this.panel.id),(this.panel.querySelector(`.k-popover__body :is(a[href], button:not([disabled]), input:not([disabled]), select, textarea, [tabindex]:not([tabindex="-1"]))`)??this.panel).focus(),document.addEventListener(`pointerdown`,this.onOutside),n(this,`kashi-open`,{}))}close(e=!0){this.panel&&!this.panel.hidden&&(this.panel.hidden=!0,this.trigger.setAttribute(`aria-expanded`,`false`),this.trigger.removeAttribute(`aria-controls`),document.removeEventListener(`pointerdown`,this.onOutside),e&&this.trigger.focus(),n(this,`kashi-close`,{}))}};c.observedAttributes=[`heading`,`placement`,`label`],e(`kashi-dropdown-menu`,s),e(`kashi-popover`,c);export{s as KashiDropdownMenu,c as KashiPopover};
@@ -1 +1 @@
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
+ import{a as e,d as t,i as n,o as r,r as i,s as a,t as o}from"./base-DfzNTdQk.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 +1 @@
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
+ 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-DfzNTdQk.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 +1 @@
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
+ 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-DfzNTdQk.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-oMlnK1_D.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 +1 @@
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
+ import{a as e,d as t,i as n,o as r,r as i,s as a,t as o}from"./base-DfzNTdQk.js";import{i as s}from"./digits-DE1YGT94.js";import{n as c}from"./text-D1U32D6K.js";import{cellNumber as l}from"./controls-C6zwNYWs.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};
@@ -0,0 +1 @@
1
+ import{n as e}from"./digits-DE1YGT94.js";function t(t){let n=t.trim();if(!n)return null;let r=n.split(/[:٫.،,\s]/).map(e).filter(Boolean),i,a;if(r.length>=2)[i,a]=[Number(r[0]),Number(r[1])];else{let t=e(n);t.length<=2?[i,a]=[Number(t),0]:[i,a]=[Number(t.slice(0,-2)),Number(t.slice(-2))]}return i>=0&&i<24&&a>=0&&a<60?{hours:i,minutes:a}:null}function n({hours:e,minutes:t}){return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}export{t as n,n as t};
package/dist/cdn.js CHANGED
@@ -15,6 +15,8 @@ const MODULES = [
15
15
  [["kashi-multi-select", "kashi-slider", "kashi-chip-group", "kashi-password-strength", "kashi-persian-textarea", "kashi-keyboard-fix", "kashi-time-input", "kashi-plate-input", "kashi-inline-edit"], () => import("./forms.js")],
16
16
  [["kashi-date-range-picker", "kashi-month-picker", "kashi-file-upload", "kashi-color-picker"], () => import("./pickers.js")],
17
17
  [["kashi-bar-chart", "kashi-line-chart", "kashi-pie-chart", "kashi-bar-list", "kashi-proportion-bar", "kashi-sparkline", "kashi-activity-heatmap"], () => import("./charts.js")],
18
+ [["kashi-input", "kashi-textarea", "kashi-banner"], () => import("./basic.js")],
19
+ [["kashi-appointment-picker"], () => import("./appointment.js")],
18
20
  [["kashi-command-palette", "kashi-context-menu", "kashi-carousel", "kashi-tree-view", "kashi-tour", "kashi-splitter", "kashi-side-nav"], () => import("./nav.js")],
19
21
  ];
20
22
  const pending = new Set(MODULES);
package/dist/index.d.ts CHANGED
@@ -8,19 +8,21 @@ import { KashiDataTable } from "./table.js";
8
8
  import { KashiChipGroup, KashiInlineEdit, KashiKeyboardFix, KashiMultiSelect, KashiPasswordStrength, KashiPersianTextarea, KashiPlateInput, KashiSlider, KashiTimeInput } from "./forms.js";
9
9
  import { KashiColorPicker, KashiDateRangePicker, KashiFileUpload, KashiMonthPicker } from "./pickers.js";
10
10
  import { KashiActivityHeatmap, KashiBarChart, KashiBarList, KashiLineChart, KashiPieChart, KashiProportionBar, KashiSparkline } from "./charts.js";
11
+ import { KashiBanner, KashiInput, KashiTextarea } from "./basic.js";
12
+ import { KashiAppointmentPicker } from "./appointment.js";
11
13
  import { KashiCarousel, KashiCommandPalette, KashiContextMenu, KashiSideNav, KashiSplitter, KashiTour, KashiTreeView } from "./nav.js";
12
14
  import { KashiCalendar, KashiDatePicker } from "./calendar.js";
13
15
  import { KashiCountdown, KashiDate, KashiMoney, KashiRelativeTime } from "./display.js";
14
16
  import { KashiCopyButton, KashiDialog, KashiTabs, KashiTooltip } from "./overlay.js";
15
17
  import { KashiToaster, toast } from "./toast.js";
16
- export { KashiCardNumber, KashiIban, KashiLandline, KashiLegalId, KashiMobile, KashiNationalId, KashiPostalCode, KashiPrice, KashiOtp, KashiProvinceSelect, KashiCombobox, KashiCitySelect, KashiIranMap, KashiAddressForm, KashiCalendar, KashiDatePicker, KashiCountdown, KashiDate, KashiMoney, KashiRelativeTime, KashiCopyButton, KashiDialog, KashiTabs, KashiTooltip, KashiToaster, toast, KashiDropdownMenu, KashiPopover, KashiTagInput, KashiNumberInput, KashiRating, KashiPagination, KashiDataTable, KashiMultiSelect, KashiSlider, KashiChipGroup, KashiPasswordStrength, KashiPersianTextarea, KashiKeyboardFix, KashiTimeInput, KashiPlateInput, KashiInlineEdit, KashiDateRangePicker, KashiMonthPicker, KashiFileUpload, KashiColorPicker, KashiBarChart, KashiLineChart, KashiPieChart, KashiBarList, KashiProportionBar, KashiSparkline, KashiActivityHeatmap, KashiCommandPalette, KashiContextMenu, KashiCarousel, KashiTreeView, KashiTour, KashiSplitter, KashiSideNav, };
18
+ export { KashiCardNumber, KashiIban, KashiLandline, KashiLegalId, KashiMobile, KashiNationalId, KashiPostalCode, KashiPrice, KashiOtp, KashiProvinceSelect, KashiCombobox, KashiCitySelect, KashiIranMap, KashiAddressForm, KashiCalendar, KashiDatePicker, KashiCountdown, KashiDate, KashiMoney, KashiRelativeTime, KashiCopyButton, KashiDialog, KashiTabs, KashiTooltip, KashiToaster, toast, KashiDropdownMenu, KashiPopover, KashiTagInput, KashiNumberInput, KashiRating, KashiPagination, KashiDataTable, KashiMultiSelect, KashiSlider, KashiChipGroup, KashiPasswordStrength, KashiPersianTextarea, KashiKeyboardFix, KashiTimeInput, KashiPlateInput, KashiInlineEdit, KashiDateRangePicker, KashiMonthPicker, KashiFileUpload, KashiColorPicker, KashiBarChart, KashiLineChart, KashiPieChart, KashiBarList, KashiProportionBar, KashiSparkline, KashiActivityHeatmap, KashiCommandPalette, KashiContextMenu, KashiCarousel, KashiTreeView, KashiTour, KashiSplitter, KashiSideNav, KashiInput, KashiTextarea, KashiBanner, KashiAppointmentPicker, };
17
19
  export { KashiDigitsInput } from "./inputs.js";
18
20
  export type { ToastOptions, ToastTone } from "./toast.js";
19
21
  export type { ComboboxOption } from "./combobox.js";
20
22
  export type { TableColumn } from "./table.js";
21
23
  export type { CommandItem, TourStep, TreeNode } from "./nav.js";
22
24
  /** نام همهٔ عنصرها؛ مثلاً برای isCustomElement در Vue */
23
- export declare const KASHI_ELEMENTS: readonly ["kashi-national-id", "kashi-legal-id", "kashi-mobile", "kashi-landline", "kashi-card-number", "kashi-iban", "kashi-postal-code", "kashi-price", "kashi-otp", "kashi-combobox", "kashi-province-select", "kashi-city-select", "kashi-iran-map", "kashi-address-form", "kashi-calendar", "kashi-date-picker", "kashi-money", "kashi-date", "kashi-relative-time", "kashi-countdown", "kashi-dialog", "kashi-tabs", "kashi-tooltip", "kashi-copy-button", "kashi-toaster", "kashi-dropdown-menu", "kashi-popover", "kashi-tag-input", "kashi-number-input", "kashi-rating", "kashi-pagination", "kashi-data-table", "kashi-multi-select", "kashi-slider", "kashi-chip-group", "kashi-password-strength", "kashi-persian-textarea", "kashi-keyboard-fix", "kashi-time-input", "kashi-plate-input", "kashi-inline-edit", "kashi-date-range-picker", "kashi-month-picker", "kashi-file-upload", "kashi-color-picker", "kashi-bar-chart", "kashi-line-chart", "kashi-pie-chart", "kashi-bar-list", "kashi-proportion-bar", "kashi-sparkline", "kashi-activity-heatmap", "kashi-command-palette", "kashi-context-menu", "kashi-carousel", "kashi-tree-view", "kashi-tour", "kashi-splitter", "kashi-side-nav"];
25
+ export declare const KASHI_ELEMENTS: readonly ["kashi-national-id", "kashi-legal-id", "kashi-mobile", "kashi-landline", "kashi-card-number", "kashi-iban", "kashi-postal-code", "kashi-price", "kashi-otp", "kashi-combobox", "kashi-province-select", "kashi-city-select", "kashi-iran-map", "kashi-address-form", "kashi-calendar", "kashi-date-picker", "kashi-money", "kashi-date", "kashi-relative-time", "kashi-countdown", "kashi-dialog", "kashi-tabs", "kashi-tooltip", "kashi-copy-button", "kashi-toaster", "kashi-dropdown-menu", "kashi-popover", "kashi-tag-input", "kashi-number-input", "kashi-rating", "kashi-pagination", "kashi-data-table", "kashi-multi-select", "kashi-slider", "kashi-chip-group", "kashi-password-strength", "kashi-persian-textarea", "kashi-keyboard-fix", "kashi-time-input", "kashi-plate-input", "kashi-inline-edit", "kashi-date-range-picker", "kashi-month-picker", "kashi-file-upload", "kashi-color-picker", "kashi-bar-chart", "kashi-line-chart", "kashi-pie-chart", "kashi-bar-list", "kashi-proportion-bar", "kashi-sparkline", "kashi-activity-heatmap", "kashi-command-palette", "kashi-context-menu", "kashi-carousel", "kashi-tree-view", "kashi-tour", "kashi-splitter", "kashi-side-nav", "kashi-input", "kashi-textarea", "kashi-banner", "kashi-appointment-picker"];
24
26
  declare global {
25
27
  interface HTMLElementTagNameMap {
26
28
  "kashi-national-id": KashiNationalId;
@@ -82,5 +84,9 @@ declare global {
82
84
  "kashi-tour": KashiTour;
83
85
  "kashi-splitter": KashiSplitter;
84
86
  "kashi-side-nav": KashiSideNav;
87
+ "kashi-input": KashiInput;
88
+ "kashi-textarea": KashiTextarea;
89
+ "kashi-banner": KashiBanner;
90
+ "kashi-appointment-picker": KashiAppointmentPicker;
85
91
  }
86
92
  }